<?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>135145</bug_id>
          
          <creation_ts>2014-07-21 20:20:44 -0700</creation_ts>
          <short_desc>FTL should be able to do polymorphic call inlining</short_desc>
          <delta_ts>2014-08-28 12:11:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>135146</dependson>
    
    <dependson>136256</dependson>
          <blocked>136020</blocked>
    
    <blocked>136033</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>bunhere</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1023873</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-21 20:20:44 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025078</commentid>
    <comment_count>1</comment_count>
      <attachid>235586</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-27 16:49:51 -0700</bug_when>
    <thetext>Created attachment 235586
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025659</commentid>
    <comment_count>2</comment_count>
      <attachid>235733</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-29 21:26:02 -0700</bug_when>
    <thetext>Created attachment 235733
more

I might change this to a different approach.  It feels like the CallEdgeProfile should actually be embedded in CallLinkInfo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027412</commentid>
    <comment_count>3</comment_count>
      <attachid>236172</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-06 21:09:49 -0700</bug_when>
    <thetext>Created attachment 236172
better

Still more work to do</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027644</commentid>
    <comment_count>4</comment_count>
      <attachid>236230</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-07 15:01:42 -0700</bug_when>
    <thetext>Created attachment 236230
more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028279</commentid>
    <comment_count>5</comment_count>
      <attachid>236393</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-11 12:49:59 -0700</bug_when>
    <thetext>Created attachment 236393
a bit more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029625</commentid>
    <comment_count>6</comment_count>
      <attachid>236718</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-16 10:35:13 -0700</bug_when>
    <thetext>Created attachment 236718
it&apos;s coming together</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029637</commentid>
    <comment_count>7</comment_count>
      <attachid>236721</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-16 12:19:34 -0700</bug_when>
    <thetext>Created attachment 236721
getting there

Now I need to do the ByteCodeParser hacks that create the switch on callee.  Then I need to trickle the CheckCell/GetExecutable/CheckBadCell changes through the DFG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029652</commentid>
    <comment_count>8</comment_count>
      <attachid>236724</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-16 16:58:35 -0700</bug_when>
    <thetext>Created attachment 236724
very close

Wrote most of the bytecode parser hacks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029654</commentid>
    <comment_count>9</comment_count>
      <attachid>236725</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-16 20:44:03 -0700</bug_when>
    <thetext>Created attachment 236725
parser hacks done

The bytecode parser now has all of the requisite hacks, I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029667</commentid>
    <comment_count>10</comment_count>
      <attachid>236730</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-17 11:30:46 -0700</bug_when>
    <thetext>Created attachment 236730
more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029690</commentid>
    <comment_count>11</comment_count>
      <attachid>236738</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-17 17:11:03 -0700</bug_when>
    <thetext>Created attachment 236738
even more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029692</commentid>
    <comment_count>12</comment_count>
      <attachid>236739</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-17 19:28:10 -0700</bug_when>
    <thetext>Created attachment 236739
it compiles!

Clearly that means that I must almost be done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029937</commentid>
    <comment_count>13</comment_count>
      <attachid>236796</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-18 21:02:06 -0700</bug_when>
    <thetext>Created attachment 236796
doesn&apos;t work yet

The profiling needs some love.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030202</commentid>
    <comment_count>14</comment_count>
      <attachid>236852</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-19 21:02:20 -0700</bug_when>
    <thetext>Created attachment 236852
getting closer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030332</commentid>
    <comment_count>15</comment_count>
      <attachid>236884</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-20 11:27:44 -0700</bug_when>
    <thetext>Created attachment 236884
starting to pass tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030438</commentid>
    <comment_count>16</comment_count>
      <attachid>236909</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-20 20:04:45 -0700</bug_when>
    <thetext>Created attachment 236909
passing more tests than ever!

Still pretty badly broken, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030562</commentid>
    <comment_count>17</comment_count>
      <attachid>236938</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-21 14:46:59 -0700</bug_when>
    <thetext>Created attachment 236938
passing tests

I think that this version is passing all 64-bit tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030643</commentid>
    <comment_count>18</comment_count>
      <attachid>236959</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-21 19:30:25 -0700</bug_when>
    <thetext>Created attachment 236959
it works but needs some more love

It&apos;s a speed-up on deltablue but a slow-down on lots of other things, probably because the current call edge profiling is just too expensive.  I&apos;ll work on speeding it up.

Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, and AsmBench on oldmac (MacPro4,1).

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r172835)
&quot;PolyInline&quot; at /Volumes/Data/fromMiniMe/primary/OpenSource/WebKitBuild/Release/jsc (r172835)

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                 PolyInline                                    
SunSpider:
   3d-cube                                            7.5946+-0.2153     ?      8.0443+-0.2443        ? might be 1.0592x slower
   3d-morph                                           9.6110+-0.1630     ?      9.6455+-0.1662        ?
   3d-raytrace                                        9.7065+-0.1233     ?      9.8396+-0.1460        ? might be 1.0137x slower
   access-binary-trees                                2.8809+-0.0777     ?      2.9406+-0.0872        ? might be 1.0207x slower
   access-fannkuch                                    9.1764+-0.1227     ?      9.3502+-0.2241        ? might be 1.0189x slower
   access-nbody                                       4.6783+-0.0490     ?      4.6904+-0.0220        ?
   access-nsieve                                      5.7740+-0.1203     ?      5.8987+-0.0769        ? might be 1.0216x slower
   bitops-3bit-bits-in-byte                           1.8617+-0.0317     ?      1.9032+-0.0238        ? might be 1.0223x slower
   bitops-bits-in-byte                                6.7890+-0.1195     ?      6.8812+-0.0978        ? might be 1.0136x slower
   bitops-bitwise-and                                 3.1610+-0.0377     ?      3.1814+-0.0086        ?
   bitops-nsieve-bits                                 5.6544+-0.0241     ?      5.6804+-0.0188        ?
   controlflow-recursive                              2.9051+-0.0727     !      3.2190+-0.1105        ! definitely 1.1081x slower
   crypto-aes                                         6.2924+-0.0738     ?      6.4142+-0.0746        ? might be 1.0194x slower
   crypto-md5                                         3.6888+-0.0626     ?      3.6998+-0.1055        ?
   crypto-sha1                                        3.7182+-0.0965     !      4.4001+-0.1380        ! definitely 1.1834x slower
   date-format-tofte                                 13.1222+-0.0693     !     13.5642+-0.3367        ! definitely 1.0337x slower
   date-format-xparb                                  8.6792+-0.1452     !      9.0055+-0.1027        ! definitely 1.0376x slower
   math-cordic                                        4.6585+-0.0605     !      4.8008+-0.0705        ! definitely 1.0305x slower
   math-partial-sums                                 10.4178+-0.1828     ?     10.4766+-0.1536        ?
   math-spectral-norm                                 3.0549+-0.0615     ?      3.0768+-0.0107        ?
   regexp-dna                                        11.8511+-0.1547           11.6842+-0.1506          might be 1.0143x faster
   string-base64                                      6.3891+-0.1283     !      6.6825+-0.0560        ! definitely 1.0459x slower
   string-fasta                                      10.3838+-0.2348     ?     10.4120+-0.1427        ?
   string-tagcloud                                   15.3205+-0.1762     ?     15.5042+-0.2090        ? might be 1.0120x slower
   string-unpack-code                                30.6919+-0.2215     !     31.5972+-0.1779        ! definitely 1.0295x slower
   string-validate-input                              7.7859+-0.0451     !      7.9743+-0.1431        ! definitely 1.0242x slower

   &lt;arithmetic&gt; *                                     7.9172+-0.0145     !      8.0987+-0.0305        ! definitely 1.0229x slower
   &lt;geometric&gt;                                        6.5040+-0.0174     !      6.6785+-0.0204        ! definitely 1.0268x slower
   &lt;harmonic&gt;                                         5.4204+-0.0246     !      5.5887+-0.0232        ! definitely 1.0311x slower

                                                        TipOfTree                 PolyInline                                    
LongSpider:
   3d-cube                                         1352.0654+-7.5681         1351.0275+-6.7999        
   3d-morph                                        2272.6241+-2.0340     ?   2275.0402+-7.0950        ?
   3d-raytrace                                     1482.4245+-419.2106       1335.0356+-16.8111         might be 1.1104x faster
   access-binary-trees                             1675.1018+-8.6648     ?   1675.2926+-7.5717        ?
   access-fannkuch                                  526.0796+-14.9734         516.7568+-14.9238         might be 1.0180x faster
   access-nbody                                    1248.8571+-6.1241     ^   1238.8468+-1.2545        ^ definitely 1.0081x faster
   access-nsieve                                   1609.9677+-2.6668     ?   1613.6973+-10.8114       ?
   bitops-3bit-bits-in-byte                          56.3809+-0.3532     ?     56.4364+-0.5069        ?
   bitops-bits-in-byte                              394.6253+-3.5777          392.5570+-4.3569        
   bitops-nsieve-bits                              1178.5810+-3.9830     ?   1181.9095+-4.6539        ?
   controlflow-recursive                            866.1628+-1.8765     !    876.0103+-1.0721        ! definitely 1.0114x slower
   crypto-aes                                      1134.4246+-6.2766     ?   1134.8290+-4.9674        ?
   crypto-md5                                       956.3330+-5.2402     !    983.1053+-4.8350        ! definitely 1.0280x slower
   crypto-sha1                                     1196.8633+-4.2312     !   1220.6004+-2.9407        ! definitely 1.0198x slower
   date-format-tofte                               1197.9165+-21.7163        1186.0440+-30.1110         might be 1.0100x faster
   date-format-xparb                               1364.5377+-158.9320       1345.7737+-19.7882         might be 1.0139x faster
   math-cordic                                      812.0073+-1.8270          809.1755+-1.0567        
   math-partial-sums                               1315.1551+-3.1678     ?   1327.4985+-20.3672       ?
   math-spectral-norm                              1297.2487+-1.3593     ?   1299.1891+-7.3236        ?
   string-base64                                    593.9134+-11.3291    !    609.7895+-1.2048        ! definitely 1.0267x slower
   string-fasta                                     706.3265+-8.3551     !    724.1660+-3.0820        ! definitely 1.0253x slower
   string-tagcloud                                  361.5202+-2.4758     ?    363.9523+-3.2177        ?

   &lt;arithmetic&gt;                                    1072.6871+-25.7723        1068.9424+-2.8234          might be 1.0035x faster
   &lt;geometric&gt; *                                    891.2936+-13.3211         891.2051+-2.3769          might be 1.0001x faster
   &lt;harmonic&gt;                                       536.0106+-3.2548     ?    536.8952+-1.2105        ? might be 1.0017x slower

                                                        TipOfTree                 PolyInline                                    
V8Spider:
   crypto                                            80.9008+-0.5207     ?     81.4185+-1.0465        ?
   deltablue                                         99.1384+-0.9682     !    121.0133+-1.6391        ! definitely 1.2207x slower
   earley-boyer                                      73.8010+-1.6163     !     76.3885+-0.7901        ! definitely 1.0351x slower
   raytrace                                          44.1356+-0.9037     !     50.0779+-0.5829        ! definitely 1.1346x slower
   regexp                                           103.6033+-0.3017     !    105.4350+-0.4881        ! definitely 1.0177x slower
   richards                                         107.5065+-1.0195     !    117.8313+-1.0731        ! definitely 1.0960x slower
   splay                                             49.8695+-0.2632     ?     50.8301+-1.8020        ? might be 1.0193x slower

   &lt;arithmetic&gt;                                      79.8507+-0.1704     !     86.1421+-0.5408        ! definitely 1.0788x slower
   &lt;geometric&gt; *                                     75.8954+-0.2279     !     81.4524+-0.5156        ! definitely 1.0732x slower
   &lt;harmonic&gt;                                        71.6666+-0.3093     !     76.6950+-0.5800        ! definitely 1.0702x slower

                                                        TipOfTree                 PolyInline                                    
Octane:
   encrypt                                           0.39473+-0.00039    !     0.40192+-0.00215       ! definitely 1.0182x slower
   decrypt                                           7.25790+-0.18546    ?     7.35649+-0.02711       ? might be 1.0136x slower
   deltablue                                x2       0.44000+-0.00558    ^     0.34110+-0.00174       ^ definitely 1.2900x faster
   earley                                            1.34546+-0.01173    ?     1.35393+-0.01131       ?
   boyer                                            10.42331+-0.09680    ?    10.43746+-0.04220       ?
   navier-stokes                            x2       7.73531+-0.00552          7.71280+-0.05381       
   raytrace                                 x2       2.66749+-0.02389          2.64685+-0.02644       
   richards                                 x2       0.22155+-0.00319          0.21780+-0.00325         might be 1.0172x faster
   splay                                    x2       0.62699+-0.00634          0.62681+-0.00482       
   regexp                                   x2      61.84485+-1.77403    ?    62.16311+-0.54360       ?
   pdfjs                                    x2      86.33682+-0.20069    !    89.37293+-1.01204       ! definitely 1.0352x slower
   mandreel                                 x2      91.88538+-0.34420    ^    89.60177+-1.26779       ^ definitely 1.0255x faster
   gbemu                                    x2      68.24726+-0.31933    !   104.55190+-0.44065       ! definitely 1.5320x slower
   closure                                           0.90719+-0.00111    !     0.91345+-0.00219       ! definitely 1.0069x slower
   jquery                                           11.42860+-0.02258    ^    11.25698+-0.01161       ^ definitely 1.0152x faster
   box2d                                    x2      24.63824+-0.13182    !    24.99385+-0.14292       ! definitely 1.0144x slower
   zlib                                     x2     815.33431+-4.22733    ?   815.81070+-6.35226       ?
   typescript                               x2    1280.47925+-7.08743    !  1340.11747+-7.41310       ! definitely 1.0466x slower

   &lt;arithmetic&gt;                                    163.75574+-0.58948    !   170.26781+-0.42883       ! definitely 1.0398x slower
   &lt;geometric&gt; *                                    12.29412+-0.02072    !    12.48793+-0.03242       ! definitely 1.0158x slower
   &lt;harmonic&gt;                                        1.32366+-0.00845    ^     1.24611+-0.00896       ^ definitely 1.0622x faster

                                                        TipOfTree                 PolyInline                                    
Kraken:
   ai-astar                                          528.577+-1.711      ?     529.073+-0.626         ?
   audio-beat-detection                              182.384+-0.601            182.185+-4.016         
   audio-dft                                         253.074+-1.250      ?     253.463+-1.209         ?
   audio-fft                                         130.191+-0.345            130.075+-0.787         
   audio-oscillator                                  366.593+-0.933      ^     361.922+-1.114         ^ definitely 1.0129x faster
   imaging-darkroom                                  289.547+-7.152            289.346+-1.124         
   imaging-desaturate                                113.049+-1.956            112.132+-0.471         
   imaging-gaussian-blur                             178.874+-0.560      ?     179.066+-0.380         ?
   json-parse-financial                               82.244+-0.379      ?      82.863+-0.300         ?
   json-stringify-tinderbox                          105.377+-0.624      ?     108.018+-2.791         ? might be 1.0251x slower
   stanford-crypto-aes                               101.463+-1.313      ?     102.880+-1.196         ? might be 1.0140x slower
   stanford-crypto-ccm                                92.447+-11.665     ?      97.330+-9.769         ? might be 1.0528x slower
   stanford-crypto-pbkdf2                            274.545+-2.446      !     277.732+-0.634         ! definitely 1.0116x slower
   stanford-crypto-sha256-iterative                  107.451+-0.797      ?     108.552+-0.507         ? might be 1.0103x slower

   &lt;arithmetic&gt; *                                    200.415+-1.045      ?     201.046+-0.742         ? might be 1.0031x slower
   &lt;geometric&gt;                                       169.567+-1.569      ?     170.797+-1.140         ? might be 1.0073x slower
   &lt;harmonic&gt;                                        147.330+-2.101      ?     149.010+-1.481         ? might be 1.0114x slower

                                                        TipOfTree                 PolyInline                                    
JSRegress:
   abs-boolean                                        4.1798+-0.0135     !      4.2309+-0.0026        ! definitely 1.0122x slower
   adapt-to-double-divide                            20.0364+-0.3317     ?     20.3616+-0.5457        ? might be 1.0162x slower
   aliased-arguments-getbyval                         1.0923+-0.0092     !      1.1754+-0.0285        ! definitely 1.0761x slower
   allocate-big-object                                3.5848+-0.0255     ?      3.7871+-0.2078        ? might be 1.0564x slower
   arity-mismatch-inlining                            1.0146+-0.0060     ?      1.0483+-0.0533        ? might be 1.0332x slower
   array-access-polymorphic-structure                10.9338+-0.1994           10.8200+-0.2224          might be 1.0105x faster
   array-nonarray-polymorhpic-access                 60.8348+-0.2101     ?     60.8615+-0.2560        ?
   array-prototype-every                            125.0113+-2.8715     ?    126.2563+-2.8309        ?
   array-prototype-forEach                          124.3809+-1.8162          123.6824+-2.6998        
   array-prototype-map                              147.8374+-0.3035     ?    149.5013+-3.5347        ? might be 1.0113x slower
   array-prototype-some                             124.4661+-3.5184          123.6065+-2.3767        
   array-splice-contiguous                           69.4052+-1.9175     !     74.2858+-0.7240        ! definitely 1.0703x slower
   array-with-double-add                              6.5933+-0.1489     ?      6.6831+-0.1740        ? might be 1.0136x slower
   array-with-double-increment                        4.6936+-0.0684     ?      4.7790+-0.0998        ? might be 1.0182x slower
   array-with-double-mul-add                          7.9657+-0.2380     ?      8.0192+-0.1954        ?
   array-with-double-sum                              4.9562+-0.0176     ?      5.0314+-0.0808        ? might be 1.0152x slower
   array-with-int32-add-sub                          11.9687+-0.3082           11.9197+-0.2233        
   array-with-int32-or-double-sum                     5.1092+-0.0658            5.1050+-0.0832        
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                    114.1682+-1.0872     ?    115.5278+-1.4361        ? might be 1.0119x slower
   ArrayBuffer-DataView-alloc-long-lived             32.3613+-0.5549     ?     33.5216+-1.8139        ? might be 1.0359x slower
   ArrayBuffer-Int32Array-byteOffset                  5.2577+-0.0118     ?      5.3598+-0.2003        ? might be 1.0194x slower
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                    120.5495+-1.4132     ?    120.8168+-1.7281        ?
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     51.0945+-0.3967     ?     51.2767+-0.5661        ?
   ArrayBuffer-Int8Array-alloc-long-lived            31.1080+-0.3951     ?     31.6860+-0.5979        ? might be 1.0186x slower
   ArrayBuffer-Int8Array-alloc                       27.6877+-0.1137     !     28.1193+-0.3158        ! definitely 1.0156x slower
   asmjs_bool_bug                                    10.2304+-0.0970           10.2031+-0.2022        
   assign-custom-setter-polymorphic                   4.8608+-0.1087     ?      4.8993+-0.0160        ?
   assign-custom-setter                               6.6747+-0.0444     ?      6.7273+-0.1297        ?
   basic-set                                         15.1954+-0.1069     !     16.1310+-0.2591        ! definitely 1.0616x slower
   big-int-mul                                        6.3088+-0.0877     !      6.8925+-0.1580        ! definitely 1.0925x slower
   boolean-test                                       4.7846+-0.0503     ?      4.8570+-0.0863        ? might be 1.0151x slower
   branch-fold                                        5.1597+-0.0379            5.1018+-0.0625          might be 1.0113x faster
   by-val-generic                                    12.8818+-0.2397     ?     12.9330+-0.3659        ?
   call-spread-apply                                 20.1300+-0.2423     !     20.8793+-0.4502        ! definitely 1.0372x slower
   call-spread-call                                   8.7924+-0.2655            8.7643+-0.2203        
   captured-assignments                               0.5822+-0.0046     ?      0.5878+-0.0028        ?
   cast-int-to-double                                 9.4331+-0.1119     ?      9.4803+-0.0435        ?
   cell-argument                                     11.0470+-0.1002     ?     11.0909+-0.1342        ?
   cfg-simplify                                       4.0564+-0.0137     ?      4.0705+-0.0088        ?
   chain-getter-access                               13.6212+-0.1913     ?     13.6705+-0.2572        ?
   cmpeq-obj-to-obj-other                            13.7810+-0.7287           13.4700+-0.4301          might be 1.0231x faster
   constant-test                                      8.8676+-0.1166            8.8178+-0.1558        
   DataView-custom-properties                       123.7233+-2.4634          123.5355+-1.2153        
   delay-tear-off-arguments-strictmode                3.6439+-0.0468     !      3.8051+-0.0125        ! definitely 1.0442x slower
   destructuring-arguments                            8.9250+-0.1094     ?      9.0672+-0.1029        ? might be 1.0159x slower
   destructuring-swap                                 8.8669+-0.0750     ?      9.0399+-0.1544        ? might be 1.0195x slower
   direct-arguments-getbyval                          1.1095+-0.0141     !      1.1503+-0.0065        ! definitely 1.0368x slower
   div-boolean-double                                 6.4487+-0.0986            6.4284+-0.0890        
   div-boolean                                       11.5881+-0.0463     ?     11.6834+-0.2151        ?
   double-get-by-val-out-of-bounds                    6.6634+-0.2158     ?      6.6743+-0.1509        ?
   double-pollution-getbyval                         11.5010+-0.2670           11.3490+-0.1865          might be 1.0134x faster
   double-pollution-putbyoffset                       6.0839+-0.0978     ?      6.3060+-0.1848        ? might be 1.0365x slower
   double-to-int32-typed-array-no-inline              3.0007+-0.0810     !      3.1621+-0.0693        ! definitely 1.0538x slower
   double-to-int32-typed-array                        2.4732+-0.0740     !      2.6660+-0.0118        ! definitely 1.0780x slower
   double-to-uint32-typed-array-no-inline             3.0660+-0.0798     !      3.3189+-0.1039        ! definitely 1.0825x slower
   double-to-uint32-typed-array                       2.6402+-0.0168     !      2.9238+-0.1564        ! definitely 1.1074x slower
   empty-string-plus-int                             10.2048+-0.0524     !     10.6624+-0.0834        ! definitely 1.0448x slower
   emscripten-cube2hash                              53.9678+-0.5620     !     56.3429+-0.7328        ! definitely 1.0440x slower
   external-arguments-getbyval                        2.0516+-0.0581     ?      2.0564+-0.0390        ?
   external-arguments-putbyval                        3.0253+-0.0274     ?      3.0415+-0.0633        ?
   fixed-typed-array-storage-var-index                1.5136+-0.0089     !      1.5520+-0.0064        ! definitely 1.0254x slower
   fixed-typed-array-storage                          1.0881+-0.0170     !      1.1221+-0.0069        ! definitely 1.0313x slower
   Float32Array-matrix-mult                           7.4202+-0.0654     ?      7.5373+-0.0763        ? might be 1.0158x slower
   Float32Array-to-Float64Array-set                  89.3601+-1.3919     ?     89.9368+-2.4640        ?
   Float64Array-alloc-long-lived                    101.4559+-0.8011     ?    102.5010+-1.3636        ? might be 1.0103x slower
   Float64Array-to-Int16Array-set                   116.0963+-1.0856     ?    117.4165+-0.9402        ? might be 1.0114x slower
   fold-double-to-int                                21.0352+-0.4788           20.9757+-0.3006        
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     19.1632+-0.5897     !     24.5675+-0.1908        ! definitely 1.2820x slower
   fold-get-by-id-to-multi-get-by-offset             18.1233+-0.4736     !     23.3914+-0.2243        ! definitely 1.2907x slower
   fold-multi-get-by-offset-to-get-by-offset   
                                                     13.0308+-0.1101     !     18.7021+-0.2265        ! definitely 1.4352x slower
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                     13.0759+-0.1500     !     18.6002+-0.1286        ! definitely 1.4225x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                     13.3411+-0.2635     !     19.3851+-0.1469        ! definitely 1.4530x slower
   fold-multi-put-by-offset-to-put-by-offset   
                                                     12.3863+-0.1176     !     17.7356+-0.3558        ! definitely 1.4319x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     17.6198+-0.5932     !     23.5616+-0.3152        ! definitely 1.3372x slower
   fold-put-by-id-to-multi-put-by-offset             20.5715+-0.1061     !     26.2419+-0.4765        ! definitely 1.2756x slower
   fold-put-structure                                12.7581+-0.1803     !     17.8292+-0.1089        ! definitely 1.3975x slower
   for-of-iterate-array-entries                       9.3297+-0.1522            9.0857+-0.1606          might be 1.0269x faster
   for-of-iterate-array-keys                          3.6383+-0.1252     !      4.1842+-0.0953        ! definitely 1.1500x slower
   for-of-iterate-array-values                        3.2544+-0.1041     !      3.5014+-0.0467        ! definitely 1.0759x slower
   fround                                            23.7282+-0.4417     ?     23.8400+-0.2980        ?
   ftl-library-inlining-dataview                    107.9242+-0.6088     ?    115.6103+-11.9045       ? might be 1.0712x slower
   ftl-library-inlining                             117.2339+-2.4175     !    245.6906+-1.1726        ! definitely 2.0957x slower
   function-dot-apply                                 2.2786+-0.0098     ?      2.3436+-0.0647        ? might be 1.0285x slower
   function-test                                      5.3097+-0.1325            5.2401+-0.0750          might be 1.0133x faster
   function-with-eval                               101.2485+-1.2094     ?    103.8206+-1.7340        ? might be 1.0254x slower
   gcse-poly-get-less-obvious                        28.8805+-0.6493     ?     29.2017+-0.2475        ? might be 1.0111x slower
   gcse-poly-get                                     29.6693+-0.1896           29.5824+-0.1225        
   gcse                                               7.6027+-0.2077            7.5268+-0.1043          might be 1.0101x faster
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      3.7701+-0.0394            3.7465+-0.0108        
   get-by-id-bimorphic-check-structure-elimination   
                                                      9.5609+-0.2145     ?      9.6694+-0.2811        ? might be 1.0114x slower
   get-by-id-chain-from-try-block                     8.1755+-0.2677     ?      8.3133+-0.0614        ? might be 1.0169x slower
   get-by-id-check-structure-elimination              8.8322+-0.1214            8.7494+-0.1332        
   get-by-id-proto-or-self                           25.4989+-2.1303           24.2618+-0.2823          might be 1.0510x faster
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      4.4816+-0.0097     ?      4.5354+-0.0676        ? might be 1.0120x slower
   get-by-id-self-or-proto                           25.7465+-1.9853           25.6263+-2.0098        
   get-by-val-out-of-bounds                           6.5629+-0.0770     !      6.8056+-0.1005        ! definitely 1.0370x slower
   get_callee_monomorphic                             5.2307+-0.1385     !      5.7568+-0.1931        ! definitely 1.1006x slower
   get_callee_polymorphic                             4.8890+-0.1102     ?      5.0372+-0.0830        ? might be 1.0303x slower
   getter-no-activation                               6.7556+-0.0261            6.7266+-0.0278        
   getter-richards                                  148.3134+-2.2161     !    171.1773+-12.6598       ! definitely 1.1542x slower
   getter                                             7.4530+-0.1178            7.4248+-0.0502        
   global-var-const-infer-fire-from-opt               1.2201+-0.0409     ?      1.2854+-0.1200        ? might be 1.0535x slower
   global-var-const-infer                             1.0084+-0.0117     !      1.1513+-0.0475        ! definitely 1.1417x slower
   HashMap-put-get-iterate-keys                      40.3140+-0.5637     !     41.3503+-0.1698        ! definitely 1.0257x slower
   HashMap-put-get-iterate                           40.0692+-0.7920     ?     41.0160+-0.5516        ? might be 1.0236x slower
   HashMap-string-put-get-iterate                    45.2174+-0.3892     !     46.2565+-0.4403        ! definitely 1.0230x slower
   hoist-make-rope                                   14.5331+-0.8306           13.7299+-0.8730          might be 1.0585x faster
   hoist-poly-check-structure-effectful-loop   
                                                      7.5829+-0.1798            7.5802+-0.1329        
   hoist-poly-check-structure                         5.6131+-0.0788     ?      5.6177+-0.0712        ?
   imul-double-only                                   9.8824+-0.2246            9.7987+-0.2891        
   imul-int-only                                     13.1509+-0.2008           13.1478+-0.4071        
   imul-mixed                                         9.7733+-0.6316     ?      9.9004+-0.5586        ? might be 1.0130x slower
   in-four-cases                                     28.0680+-0.4071     ?     28.3701+-0.4414        ? might be 1.0108x slower
   in-one-case-false                                 14.7792+-0.1496     ?     14.8164+-0.1647        ?
   in-one-case-true                                  14.7841+-0.0986     ?     14.8957+-0.1372        ?
   in-two-cases                                      15.3987+-0.1712     ?     15.5478+-0.0993        ?
   indexed-properties-in-objects                      4.3348+-0.0646            4.3118+-0.0682        
   infer-closure-const-then-mov-no-inline             4.7544+-0.0239     !      4.9085+-0.1295        ! definitely 1.0324x slower
   infer-closure-const-then-mov                      29.1077+-0.0829     ?     29.4478+-0.5085        ? might be 1.0117x slower
   infer-closure-const-then-put-to-scope-no-inline   
                                                     17.5287+-0.0810     ?     17.7077+-0.1183        ? might be 1.0102x slower
   infer-closure-const-then-put-to-scope             33.1638+-0.0622     ?     33.2358+-0.1164        ?
   infer-closure-const-then-reenter-no-inline   
                                                     76.9813+-0.0660     ?     77.8245+-1.8401        ? might be 1.0110x slower
   infer-closure-const-then-reenter                  33.7093+-1.3263           33.5891+-0.7351        
   infer-constant-global-property                     5.4012+-0.0626     ?      5.4907+-0.0595        ? might be 1.0166x slower
   infer-constant-property                            3.7014+-0.0551            3.6850+-0.0641        
   infer-one-time-closure-ten-vars                   16.4184+-0.2454           16.0735+-0.4230          might be 1.0215x faster
   infer-one-time-closure-two-vars                   15.6706+-0.0272           15.3992+-0.3003          might be 1.0176x faster
   infer-one-time-closure                            15.6248+-0.2457           15.3024+-0.1760          might be 1.0211x faster
   infer-one-time-deep-closure                       28.1337+-0.0504     ?     28.2795+-0.2898        ?
   inline-arguments-access                            2.2284+-0.0221     ?      2.2598+-0.0099        ? might be 1.0141x slower
   inline-arguments-aliased-access                    2.4840+-0.0461     ?      2.5285+-0.0331        ? might be 1.0179x slower
   inline-arguments-local-escape                     21.7103+-0.1963     ^     19.5709+-0.3432        ^ definitely 1.1093x faster
   inline-get-scoped-var                              6.4462+-0.0478     ?      6.4584+-0.0293        ?
   inlined-put-by-id-transition                      15.5298+-0.4605     ?     16.0583+-0.3292        ? might be 1.0340x slower
   int-or-other-abs-then-get-by-val                   7.9238+-0.0596     ?      7.9944+-0.1402        ?
   int-or-other-abs-zero-then-get-by-val             29.3335+-0.6164     ?     29.4068+-0.3994        ?
   int-or-other-add-then-get-by-val                   6.7423+-0.0312     ?      6.7740+-0.0562        ?
   int-or-other-add                                   9.0375+-0.1085     ?      9.2550+-0.3023        ? might be 1.0241x slower
   int-or-other-div-then-get-by-val                   5.9186+-0.0767     ?      5.9220+-0.0391        ?
   int-or-other-max-then-get-by-val                   7.3984+-0.0807            7.3401+-0.1286        
   int-or-other-min-then-get-by-val                   5.9890+-0.0991     ?      6.0916+-0.1330        ? might be 1.0171x slower
   int-or-other-mod-then-get-by-val                   5.8326+-0.0255     ?      5.8773+-0.0663        ?
   int-or-other-mul-then-get-by-val                   5.7337+-0.0770     ?      5.7402+-0.0244        ?
   int-or-other-neg-then-get-by-val                   7.1951+-0.1152     ?      7.1991+-0.0551        ?
   int-or-other-neg-zero-then-get-by-val             29.1572+-0.1584     ?     29.1693+-0.1339        ?
   int-or-other-sub-then-get-by-val                   6.7738+-0.0434     ?      6.8458+-0.0805        ? might be 1.0106x slower
   int-or-other-sub                                   5.4503+-0.0277     ?      5.4902+-0.0214        ?
   int-overflow-local                                 6.7122+-0.1076     ?      6.7250+-0.1503        ?
   Int16Array-alloc-long-lived                       72.7139+-0.1587     ?     72.9076+-0.6702        ?
   Int16Array-bubble-sort-with-byteLength            44.9039+-1.0334           44.1993+-0.1615          might be 1.0159x faster
   Int16Array-bubble-sort                            43.4370+-0.1486           43.2877+-0.1864        
   Int16Array-load-int-mul                            2.0840+-0.0046            2.0835+-0.0077        
   Int16Array-to-Int32Array-set                      82.7086+-0.3049     !     87.0656+-0.8107        ! definitely 1.0527x slower
   Int32Array-alloc-large                            43.4162+-1.8565           42.7529+-1.4942          might be 1.0155x faster
   Int32Array-alloc-long-lived                       81.2545+-0.5999     ?     81.8340+-0.9948        ?
   Int32Array-alloc                                   4.7760+-0.1456     ?      4.8638+-0.0290        ? might be 1.0184x slower
   Int32Array-Int8Array-view-alloc                   15.3896+-0.6278     ?     15.5507+-0.5784        ? might be 1.0105x slower
   int52-spill                                       10.9772+-0.1772     ?     11.3459+-0.1985        ? might be 1.0336x slower
   Int8Array-alloc-long-lived                        66.8892+-0.8229     ?     67.1739+-0.7065        ?
   Int8Array-load-with-byteLength                     5.5431+-0.0470     ^      5.4417+-0.0118        ^ definitely 1.0186x faster
   Int8Array-load                                     5.5574+-0.0547            5.5199+-0.0841        
   integer-divide                                    16.8712+-0.1581     ?     16.9096+-0.1098        ?
   integer-modulo                                     3.1772+-0.1836     ?      3.4584+-0.4216        ? might be 1.0885x slower
   large-int-captured                                10.8572+-0.1418     ?     11.0835+-0.0870        ? might be 1.0208x slower
   large-int-neg                                     24.1204+-0.2080     ?     24.5785+-0.4672        ? might be 1.0190x slower
   large-int                                         21.2810+-0.2706     ?     21.5322+-0.1433        ? might be 1.0118x slower
   logical-not                                        6.8320+-0.1610     ?      6.9331+-0.1173        ? might be 1.0148x slower
   lots-of-fields                                    16.9863+-0.1784           16.8774+-0.1038        
   make-indexed-storage                               4.4037+-0.1556     ?      4.4752+-0.4083        ? might be 1.0162x slower
   make-rope-cse                                      6.2021+-0.0512     ?      6.3977+-0.3021        ? might be 1.0315x slower
   marsaglia-larger-ints                             59.5178+-0.5611     ?     59.5899+-0.4273        ?
   marsaglia-osr-entry                               31.2731+-0.1675           31.1202+-0.4470        
   max-boolean                                        3.8229+-0.3714            3.7331+-0.0083          might be 1.0240x faster
   method-on-number                                  27.1779+-0.1975     !     30.3108+-0.6378        ! definitely 1.1153x slower
   min-boolean                                        3.6464+-0.0541     ?      3.6784+-0.0123        ?
   minus-boolean-double                               4.7898+-0.0458     ?      4.8185+-0.0613        ?
   minus-boolean                                      3.6416+-0.0077            3.6262+-0.0101        
   misc-strict-eq                                    56.0305+-1.0099     ?     57.0334+-0.4647        ? might be 1.0179x slower
   mod-boolean-double                                13.8369+-0.2471           13.7671+-0.2517        
   mod-boolean                                       10.6383+-0.1666           10.5840+-0.1914        
   mul-boolean-double                                 5.5928+-0.0202     ?      5.6349+-0.0596        ?
   mul-boolean                                        3.9476+-0.0180     ?      3.9585+-0.0432        ?
   neg-boolean                                        4.8771+-0.0335     ?      4.9074+-0.0693        ?
   negative-zero-divide                               0.4255+-0.0064     ?      0.4310+-0.0032        ? might be 1.0130x slower
   negative-zero-modulo                               0.4271+-0.0025     ?      0.4314+-0.0028        ?
   negative-zero-negate                               0.3964+-0.0047     ?      0.4042+-0.0139        ? might be 1.0196x slower
   nested-function-parsing                           48.2688+-0.1841     ?     48.6317+-0.2069        ?
   new-array-buffer-dead                              4.0551+-0.0899     ?      4.0584+-0.0196        ?
   new-array-buffer-push                             10.7448+-0.2226     ?     10.8280+-0.1936        ?
   new-array-dead                                    14.6072+-0.3720     ?     14.6792+-0.3417        ?
   new-array-push                                     7.4956+-0.0709     ?      7.6716+-0.1674        ? might be 1.0235x slower
   number-test                                        4.6529+-0.0464     ?      4.7153+-0.0828        ? might be 1.0134x slower
   object-closure-call                                9.0801+-0.0500     !      9.3610+-0.0683        ! definitely 1.0309x slower
   object-test                                        5.2729+-0.1414     ^      4.9899+-0.0589        ^ definitely 1.0567x faster
   plus-boolean-arith                                 3.7214+-0.0704            3.7021+-0.0269        
   plus-boolean-double                                4.8250+-0.0538            4.7956+-0.0065        
   plus-boolean                                       3.5483+-0.0077     ?      3.5799+-0.0438        ?
   poly-chain-access-different-prototypes-simple   
                                                      4.4329+-0.0595            4.4078+-0.0113        
   poly-chain-access-different-prototypes             3.6477+-0.0114     ?      3.6804+-0.0819        ?
   poly-chain-access-simpler                          4.4125+-0.0368     ?      4.4916+-0.0855        ? might be 1.0179x slower
   poly-chain-access                                  2.9438+-0.3245            2.8384+-0.0154          might be 1.0371x faster
   poly-stricteq                                     82.3957+-0.4197     !     88.4969+-1.9664        ! definitely 1.0740x slower
   polymorphic-array-call                             2.2066+-0.0405     !      2.3590+-0.0559        ! definitely 1.0690x slower
   polymorphic-get-by-id                              4.7201+-0.0234     !      4.7803+-0.0357        ! definitely 1.0128x slower
   polymorphic-put-by-id                             86.2443+-29.6564          81.6410+-29.1725         might be 1.0564x faster
   polymorphic-structure                             24.6422+-0.1170     !     25.3254+-0.1829        ! definitely 1.0277x slower
   polyvariant-monomorphic-get-by-id                 13.3549+-0.1580     ?     13.3887+-0.0753        ?
   proto-getter-access                               13.5797+-0.2157     ?     13.8084+-0.4650        ? might be 1.0168x slower
   put-by-id-replace-and-transition                  12.6757+-0.3127     ?     12.7481+-0.3001        ?
   put-by-id-slightly-polymorphic                     4.0240+-0.0412     ?      4.0768+-0.0699        ? might be 1.0131x slower
   put-by-id                                         20.7420+-0.3027     ?     21.1634+-0.6558        ? might be 1.0203x slower
   put-by-val-direct                                  0.7765+-0.0036     ?      0.7918+-0.0234        ? might be 1.0197x slower
   put-by-val-large-index-blank-indexing-type   
                                                     10.6985+-0.1832     ?     10.9771+-0.2403        ? might be 1.0260x slower
   put-by-val-machine-int                             4.3063+-0.3595     !      4.7480+-0.0804        ! definitely 1.1026x slower
   rare-osr-exit-on-local                            21.4996+-0.0686     ?     21.6802+-0.3917        ?
   register-pressure-from-osr                        31.4600+-0.1320     ?     31.6612+-0.1986        ?
   setter                                             7.5181+-0.1024            7.4937+-0.0529        
   simple-activation-demo                            34.9887+-0.3058     !     35.4025+-0.0862        ! definitely 1.0118x slower
   simple-getter-access                              20.0808+-0.0958     ?     20.1695+-0.2059        ?
   sin-boolean                                       23.3501+-0.6824     ?     23.5441+-0.4531        ?
   slow-array-profile-convergence                     4.3835+-0.2761     ?      4.4949+-0.2700        ? might be 1.0254x slower
   slow-convergence                                   4.8167+-0.0365     !      4.8901+-0.0353        ! definitely 1.0153x slower
   sparse-conditional                                 1.4936+-0.0065     !      1.5271+-0.0123        ! definitely 1.0225x slower
   splice-to-remove                                  26.8143+-0.2504     !     27.6512+-0.0662        ! definitely 1.0312x slower
   string-char-code-at                               23.4559+-0.1942     ?     23.4622+-0.1856        ?
   string-concat-object                               3.1878+-0.0258     !      3.3193+-0.0265        ! definitely 1.0413x slower
   string-concat-pair-object                          3.0872+-0.0777     !      3.2718+-0.0352        ! definitely 1.0598x slower
   string-concat-pair-simple                         18.2696+-0.3434     ?     18.6531+-0.4338        ? might be 1.0210x slower
   string-concat-simple                              18.9032+-0.3255           18.6884+-0.4764          might be 1.0115x faster
   string-cons-repeat                                11.8949+-0.0625     ?     12.2565+-0.3367        ? might be 1.0304x slower
   string-cons-tower                                 10.8406+-0.0600     !     11.1663+-0.0910        ! definitely 1.0300x slower
   string-equality                                   26.5059+-0.6858           26.0701+-0.0802          might be 1.0167x faster
   string-get-by-val-big-char                        13.8569+-0.2013     ?     14.2324+-0.2791        ? might be 1.0271x slower
   string-get-by-val-out-of-bounds-insane             6.0043+-0.0717     !      6.1569+-0.0390        ! definitely 1.0254x slower
   string-get-by-val-out-of-bounds                    7.1113+-0.0553     ?      7.1373+-0.0517        ?
   string-get-by-val                                  5.5613+-0.0607            5.5402+-0.0170        
   string-hash                                        2.8945+-0.0451     !      2.9958+-0.0214        ! definitely 1.0350x slower
   string-long-ident-equality                        21.2633+-0.1318     ?     21.3094+-0.2824        ?
   string-repeat-arith                               53.8283+-10.1851          49.6236+-0.4122          might be 1.0847x faster
   string-sub                                        97.3188+-1.1952     !    101.8421+-2.3255        ! definitely 1.0465x slower
   string-test                                        4.7010+-0.0627     ?      4.7357+-0.1066        ?
   string-var-equality                               51.9943+-0.1795     ?     52.2426+-0.2455        ?
   structure-hoist-over-transitions                   3.8705+-0.0427     !      3.9849+-0.0650        ! definitely 1.0296x slower
   substring-concat-weird                            62.9460+-0.1656     !     63.5704+-0.2875        ! definitely 1.0099x slower
   substring-concat                                  66.2943+-0.2028     ?     66.7864+-0.4511        ?
   substring                                         74.4264+-0.4050     ?     74.8293+-0.3304        ?
   switch-char-constant                               3.6706+-0.0219     ?      3.7008+-0.0309        ?
   switch-char                                        9.2951+-0.0857     ?      9.3075+-0.1130        ?
   switch-constant                                   11.5334+-0.1755     ?     11.7368+-0.1523        ? might be 1.0176x slower
   switch-string-basic-big-var                       25.1402+-1.3067     !     29.4400+-1.0104        ! definitely 1.1710x slower
   switch-string-basic-big                           32.0174+-2.7936     ?     34.2216+-2.4362        ? might be 1.0688x slower
   switch-string-basic-var                           32.0105+-1.5654           32.0094+-0.8883        
   switch-string-basic                               31.0760+-2.7808           30.7463+-1.8825          might be 1.0107x faster
   switch-string-big-length-tower-var                30.2799+-0.9706           30.0269+-0.1881        
   switch-string-length-tower-var                    23.9233+-0.1867     ?     24.0913+-0.3416        ?
   switch-string-length-tower                        17.3235+-0.0433     ?     17.4904+-0.2235        ?
   switch-string-short                               17.4749+-0.1428     ?     17.4835+-0.3803        ?
   switch                                            15.9124+-0.2143           15.9015+-0.0669        
   tear-off-arguments-simple                          2.3287+-0.0164     !      2.5720+-0.1497        ! definitely 1.1045x slower
   tear-off-arguments                                 3.8643+-0.0104     !      4.0242+-0.0130        ! definitely 1.0414x slower
   temporal-structure                                20.1475+-0.2064     ?     20.1825+-0.0938        ?
   to-int32-boolean                                  24.6566+-0.1523     ?     24.7677+-0.3832        ?
   undefined-test                                     4.8538+-0.0747     ?      4.8565+-0.0346        ?
   unprofiled-licm                                   31.3057+-0.2047     ?     31.4430+-0.3394        ?
   weird-inlining-const-prop                          2.7104+-0.1223     !      2.9942+-0.1460        ! definitely 1.1047x slower

   &lt;arithmetic&gt;                                      21.8689+-0.1213     !     22.8627+-0.1064        ! definitely 1.0454x slower
   &lt;geometric&gt; *                                     11.0378+-0.0151     !     11.3472+-0.0155        ! definitely 1.0280x slower
   &lt;harmonic&gt;                                         5.4626+-0.0128     !      5.6060+-0.0159        ! definitely 1.0263x slower

                                                        TipOfTree                 PolyInline                                    
AsmBench:
   bigfib.cpp                                       799.2611+-4.8441          794.6537+-3.7161        
   cray.c                                           796.3080+-4.4432     ?    797.6588+-4.2970        ?
   dry.c                                            783.7422+-14.1210    !    878.8225+-66.6639       ! definitely 1.1213x slower
   FloatMM.c                                       1149.1156+-1.2332     ^   1146.3254+-0.5445        ^ definitely 1.0024x faster
   gcc-loops.cpp                                   7556.1780+-6.4996     ?   7559.7502+-33.0406       ?
   n-body.c                                        2008.2700+-0.5115     !   2018.2236+-0.8709        ! definitely 1.0050x slower
   Quicksort.c                                      694.2459+-6.8429          683.3355+-11.5786         might be 1.0160x faster
   stepanov_container.cpp                          5844.8735+-17.6618        5810.5035+-19.7012       
   Towers.c                                         490.9645+-0.8605     ?    492.2882+-1.2147        ?

   &lt;arithmetic&gt;                                    2235.8843+-2.6210     ?   2242.3957+-4.7507        ? might be 1.0029x slower
   &lt;geometric&gt; *                                   1372.8810+-3.5203     ?   1387.0235+-11.2090       ? might be 1.0103x slower
   &lt;harmonic&gt;                                      1007.5988+-3.3288     ?   1020.1513+-10.5509       ? might be 1.0125x slower

                                                        TipOfTree                 PolyInline                                    
All benchmarks:
   &lt;arithmetic&gt;                                     155.4976+-1.5019     ?    156.8181+-0.1094        ? might be 1.0085x slower
   &lt;geometric&gt;                                       17.9436+-0.0296     !     18.3902+-0.0230        ! definitely 1.0249x slower
   &lt;harmonic&gt;                                         4.8940+-0.0148            4.8928+-0.0142          might be 1.0002x faster

                                                        TipOfTree                 PolyInline                                    
Geomean of preferred means:
   &lt;scaled-result&gt;                                   79.4568+-0.2092     !     81.1770+-0.0816        ! definitely 1.0216x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030933</commentid>
    <comment_count>19</comment_count>
      <attachid>237032</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-23 15:54:24 -0700</bug_when>
    <thetext>Created attachment 237032
net win on Octane

Still more work to do, though, to get the profiling overheads down.


Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, and AsmBench on oldmac (MacPro4,1).

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r172835)
&quot;PolyInline&quot; at /Volumes/Data/fromMiniMe/quartary/OpenSource/WebKitBuild/Release/jsc (r172859)

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                 PolyInline                                    
SunSpider:
   3d-cube                                            7.6408+-0.2298     ?      7.9173+-0.0823        ? might be 1.0362x slower
   3d-morph                                           9.6020+-0.0905     ?      9.6593+-0.1489        ?
   3d-raytrace                                        9.5602+-0.0496     !      9.8986+-0.1268        ! definitely 1.0354x slower
   access-binary-trees                                2.7455+-0.0959     !      3.0341+-0.0776        ! definitely 1.1051x slower
   access-fannkuch                                    9.0990+-0.1402     !      9.4654+-0.1593        ! definitely 1.0403x slower
   access-nbody                                       4.5960+-0.0908     ?      4.7150+-0.0409        ? might be 1.0259x slower
   access-nsieve                                      5.7740+-0.1226     ?      5.8458+-0.1033        ? might be 1.0124x slower
   bitops-3bit-bits-in-byte                           1.8569+-0.0137     !      1.9089+-0.0260        ! definitely 1.0280x slower
   bitops-bits-in-byte                                6.7451+-0.0529     ?      6.8670+-0.0965        ? might be 1.0181x slower
   bitops-bitwise-and                                 3.1903+-0.0111            3.1803+-0.0221        
   bitops-nsieve-bits                                 5.6805+-0.0259     ?      5.7293+-0.0590        ?
   controlflow-recursive                              2.9695+-0.0296     !      3.1042+-0.0536        ! definitely 1.0454x slower
   crypto-aes                                         6.2360+-0.0653     ?      6.3121+-0.1422        ? might be 1.0122x slower
   crypto-md5                                         3.7733+-0.0751     ?      3.8748+-0.1056        ? might be 1.0269x slower
   crypto-sha1                                        3.7269+-0.0739     !      4.4466+-0.0968        ! definitely 1.1931x slower
   date-format-tofte                                 13.1156+-0.1280     !     13.5616+-0.1692        ! definitely 1.0340x slower
   date-format-xparb                                  8.5513+-0.1210     !      9.1130+-0.1909        ! definitely 1.0657x slower
   math-cordic                                        4.6621+-0.0465     !      4.8370+-0.0412        ! definitely 1.0375x slower
   math-partial-sums                                 10.3396+-0.2205     ?     10.5805+-0.1436        ? might be 1.0233x slower
   math-spectral-norm                                 3.0365+-0.0382     ?      3.0891+-0.0344        ? might be 1.0173x slower
   regexp-dna                                        11.8090+-0.1710           11.6386+-0.0258          might be 1.0146x faster
   string-base64                                      6.4532+-0.1799     ?      6.8889+-0.3622        ? might be 1.0675x slower
   string-fasta                                      10.2771+-0.1624     ?     10.4446+-0.1148        ? might be 1.0163x slower
   string-tagcloud                                   15.2708+-0.1875     !     15.6865+-0.1323        ! definitely 1.0272x slower
   string-unpack-code                                30.8256+-0.1212     !     31.7189+-0.7041        ! definitely 1.0290x slower
   string-validate-input                              7.8102+-0.1269     ?      7.9396+-0.1841        ? might be 1.0166x slower

   &lt;arithmetic&gt; *                                     7.8980+-0.0209     !      8.1330+-0.0489        ! definitely 1.0298x slower
   &lt;geometric&gt;                                        6.4867+-0.0244     !      6.7090+-0.0218        ! definitely 1.0343x slower
   &lt;harmonic&gt;                                         5.4067+-0.0268     !      5.6168+-0.0081        ! definitely 1.0389x slower

                                                        TipOfTree                 PolyInline                                    
LongSpider:
   3d-cube                                         1341.8253+-7.7750     ?   1356.3524+-10.5059       ? might be 1.0108x slower
   3d-morph                                        2272.9116+-2.3708     ?   2273.4519+-2.8413        ?
   3d-raytrace                                     1324.5221+-9.5140     ?   1341.7846+-14.2927       ? might be 1.0130x slower
   access-binary-trees                             1668.0361+-5.6247     ?   1669.3883+-7.2266        ?
   access-fannkuch                                  523.3738+-14.8233         521.0778+-19.7895       
   access-nbody                                    1247.5282+-3.2609     ?   1248.2963+-2.4629        ?
   access-nsieve                                   1611.1295+-6.7361     ?   1612.6228+-3.8365        ?
   bitops-3bit-bits-in-byte                          56.5320+-0.5036           56.3791+-0.5493        
   bitops-bits-in-byte                              392.9395+-3.0921          390.6637+-4.7671        
   bitops-nsieve-bits                              1186.4144+-9.8490         1185.9570+-12.2096       
   controlflow-recursive                            866.1827+-0.8707     ?    866.6567+-5.0428        ?
   crypto-aes                                      1136.2072+-6.2712         1131.0698+-4.8592        
   crypto-md5                                       957.4582+-4.4824     !    985.2439+-4.5019        ! definitely 1.0290x slower
   crypto-sha1                                     1204.9118+-10.2171        1199.2144+-4.8111        
   date-format-tofte                               1200.2168+-15.5885    ?   1210.8988+-28.0683       ?
   date-format-xparb                               1318.2989+-9.0685     ?   1326.3974+-20.3261       ?
   math-cordic                                      813.2514+-2.4790     !    987.2022+-9.8856        ! definitely 1.2139x slower
   math-partial-sums                               1316.7447+-3.3683     ?   1316.7893+-3.2535        ?
   math-spectral-norm                              1296.4225+-0.7173         1296.0231+-1.0547        
   string-base64                                    589.0979+-5.2099     !    605.5664+-2.6062        ! definitely 1.0280x slower
   string-fasta                                     703.7744+-6.5302     ?    711.8535+-25.2083       ? might be 1.0115x slower
   string-tagcloud                                  364.2499+-6.7982          363.0503+-1.8159        

   &lt;arithmetic&gt;                                    1063.2740+-1.3888     !   1075.2700+-2.4858        ! definitely 1.0113x slower
   &lt;geometric&gt; *                                    886.3199+-2.1332     !    897.5233+-3.1614        ! definitely 1.0126x slower
   &lt;harmonic&gt;                                       535.5747+-2.5987     ?    538.8522+-3.3288        ? might be 1.0061x slower

                                                        TipOfTree                 PolyInline                                    
V8Spider:
   crypto                                            81.7677+-1.2873     ?     82.6742+-1.3955        ? might be 1.0111x slower
   deltablue                                         99.3877+-0.6500     !    121.2636+-1.5019        ! definitely 1.2201x slower
   earley-boyer                                      73.4692+-1.7027     !     76.3920+-0.8476        ! definitely 1.0398x slower
   raytrace                                          44.1616+-0.9866     !     49.7854+-0.5089        ! definitely 1.1273x slower
   regexp                                           103.5191+-0.4314     !    104.5638+-0.2609        ! definitely 1.0101x slower
   richards                                         107.6851+-1.1029     !    119.6004+-0.9336        ! definitely 1.1106x slower
   splay                                             49.8807+-0.6637     ?     50.4298+-0.5554        ? might be 1.0110x slower

   &lt;arithmetic&gt;                                      79.9816+-0.4629     !     86.3870+-0.4092        ! definitely 1.0801x slower
   &lt;geometric&gt; *                                     76.0065+-0.5035     !     81.5759+-0.3581        ! definitely 1.0733x slower
   &lt;harmonic&gt;                                        71.7531+-0.5589     !     76.6867+-0.3049        ! definitely 1.0688x slower

                                                        TipOfTree                 PolyInline                                    
Octane:
   encrypt                                           0.39478+-0.00066    ?     0.39480+-0.00120       ?
   decrypt                                           7.15369+-0.00366    ?     7.16119+-0.01853       ?
   deltablue                                x2       0.43896+-0.00327    ^     0.34248+-0.00230       ^ definitely 1.2817x faster
   earley                                            1.34312+-0.00966    ?     1.35659+-0.00664       ? might be 1.0100x slower
   boyer                                            10.39834+-0.07543         10.37315+-0.08061       
   navier-stokes                            x2       7.74102+-0.01835          7.72825+-0.00389       
   raytrace                                 x2       2.68212+-0.04305          2.61640+-0.03525         might be 1.0251x faster
   richards                                 x2       0.22629+-0.01071          0.21348+-0.00276         might be 1.0600x faster
   splay                                    x2       0.63113+-0.00466          0.62399+-0.00324         might be 1.0114x faster
   regexp                                   x2      61.07738+-0.56699    !    62.38084+-0.45159       ! definitely 1.0213x slower
   pdfjs                                    x2      87.65308+-2.24117    ?    88.89246+-0.45228       ? might be 1.0141x slower
   mandreel                                 x2      91.94791+-0.56528    ?    93.01922+-0.78005       ? might be 1.0117x slower
   gbemu                                    x2      68.47757+-0.17254    !    77.43528+-0.29474       ! definitely 1.1308x slower
   closure                                           0.90849+-0.00247    ?     0.91226+-0.00161       ?
   jquery                                           11.40303+-0.03961    ^    11.31109+-0.02673       ^ definitely 1.0081x faster
   box2d                                    x2      24.58176+-0.09628    !    24.94783+-0.15282       ! definitely 1.0149x slower
   zlib                                     x2     815.49236+-2.71876    ?   815.67525+-2.23740       ?
   typescript                               x2    1289.53402+-5.17354    !  1340.94942+-10.01479      ! definitely 1.0399x slower

   &lt;arithmetic&gt;                                    164.41896+-0.29962    !   168.70530+-0.63543       ! definitely 1.0261x slower
   &lt;geometric&gt; *                                    12.32124+-0.05631    ^    12.22531+-0.02526       ^ definitely 1.0078x faster
   &lt;harmonic&gt;                                        1.33511+-0.02610    ^     1.23382+-0.00662       ^ definitely 1.0821x faster

                                                        TipOfTree                 PolyInline                                    
Kraken:
   ai-astar                                          527.769+-1.338      ?     527.876+-1.001         ?
   audio-beat-detection                              179.796+-4.260      ?     183.259+-0.764         ? might be 1.0193x slower
   audio-dft                                         253.621+-1.058      ?     265.417+-20.515        ? might be 1.0465x slower
   audio-fft                                         130.538+-0.870            130.173+-0.280         
   audio-oscillator                                  368.497+-1.706            368.406+-1.513         
   imaging-darkroom                                  286.559+-1.922      ?     288.850+-1.259         ?
   imaging-desaturate                                112.567+-0.493      ?     112.605+-0.454         ?
   imaging-gaussian-blur                             179.097+-0.679      ?     179.651+-0.511         ?
   json-parse-financial                               82.996+-1.400      ?      83.736+-0.293         ?
   json-stringify-tinderbox                          105.374+-0.668      !     107.473+-0.665         ! definitely 1.0199x slower
   stanford-crypto-aes                               101.548+-2.603      ?     103.256+-1.448         ? might be 1.0168x slower
   stanford-crypto-ccm                                93.788+-8.347             89.625+-10.000          might be 1.0464x faster
   stanford-crypto-pbkdf2                            275.659+-3.058      ?     277.542+-1.461         ?
   stanford-crypto-sha256-iterative                  107.185+-0.261      !     108.576+-0.538         ! definitely 1.0130x slower

   &lt;arithmetic&gt; *                                    200.357+-0.547      ?     201.889+-1.278         ? might be 1.0076x slower
   &lt;geometric&gt;                                       169.680+-1.089      ?     170.772+-1.398         ? might be 1.0064x slower
   &lt;harmonic&gt;                                        147.664+-1.647      ?     148.253+-2.053         ? might be 1.0040x slower

                                                        TipOfTree                 PolyInline                                    
JSRegress:
   abs-boolean                                        4.1979+-0.0444     ?      4.2486+-0.0491        ? might be 1.0121x slower
   adapt-to-double-divide                            20.0150+-0.3361     ?     20.2787+-0.0633        ? might be 1.0132x slower
   aliased-arguments-getbyval                         1.0998+-0.0116     !      1.1639+-0.0286        ! definitely 1.0583x slower
   allocate-big-object                                3.6044+-0.1269     ?      3.7659+-0.0436        ? might be 1.0448x slower
   arity-mismatch-inlining                            1.0141+-0.0058     ?      1.0493+-0.0499        ? might be 1.0347x slower
   array-access-polymorphic-structure                10.8636+-0.0988     ?     10.9049+-0.1827        ?
   array-nonarray-polymorhpic-access                 60.4900+-0.7078     ?     60.7666+-0.3763        ?
   array-prototype-every                            123.6209+-0.3795     ^    121.5876+-1.5206        ^ definitely 1.0167x faster
   array-prototype-forEach                          125.4949+-3.6799          122.2211+-2.5648          might be 1.0268x faster
   array-prototype-map                              150.7363+-4.1096          149.4692+-4.9118        
   array-prototype-some                             122.8436+-0.5108     ^    120.8694+-1.0430        ^ definitely 1.0163x faster
   array-splice-contiguous                           68.2619+-0.6018     !     74.4968+-0.2639        ! definitely 1.0913x slower
   array-with-double-add                              6.7114+-0.1456            6.6899+-0.1292        
   array-with-double-increment                        4.7264+-0.0790            4.7166+-0.1105        
   array-with-double-mul-add                          8.1499+-0.1398     ^      7.8773+-0.0843        ^ definitely 1.0346x faster
   array-with-double-sum                              5.0321+-0.0497            4.9902+-0.0613        
   array-with-int32-add-sub                          11.9364+-0.2241           11.8564+-0.2759        
   array-with-int32-or-double-sum                     5.0925+-0.0857     ?      5.1635+-0.0811        ? might be 1.0139x slower
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                    115.4490+-1.2211     ?    116.7811+-1.6823        ? might be 1.0115x slower
   ArrayBuffer-DataView-alloc-long-lived             32.5190+-0.6874     ?     32.5643+-0.2124        ?
   ArrayBuffer-Int32Array-byteOffset                  5.3617+-0.2117            5.2709+-0.0348          might be 1.0172x faster
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                    118.8927+-0.8068     ?    120.9924+-1.6704        ? might be 1.0177x slower
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     51.1529+-0.3854           50.9518+-0.3873        
   ArrayBuffer-Int8Array-alloc-long-lived            31.3424+-0.3880     ?     31.5558+-0.5185        ?
   ArrayBuffer-Int8Array-alloc                       28.1086+-0.9918           28.0802+-0.4032        
   asmjs_bool_bug                                    10.1890+-0.1834     ?     10.2413+-0.2213        ?
   assign-custom-setter-polymorphic                   4.8897+-0.0148     ?      4.9888+-0.1516        ? might be 1.0203x slower
   assign-custom-setter                               6.7745+-0.2387            6.6799+-0.0958          might be 1.0142x faster
   basic-set                                         15.4196+-0.2082     !     15.9730+-0.2056        ! definitely 1.0359x slower
   big-int-mul                                        6.3184+-0.0835     !      6.9423+-0.1976        ! definitely 1.0987x slower
   boolean-test                                       4.8131+-0.0510            4.7430+-0.0835          might be 1.0148x faster
   branch-fold                                        5.1636+-0.0330            5.1296+-0.1325        
   by-val-generic                                    12.8571+-0.1350     ?     13.0918+-0.3156        ? might be 1.0183x slower
   call-spread-apply                                 20.3323+-0.2850     ?     20.9537+-0.8937        ? might be 1.0306x slower
   call-spread-call                                   8.9836+-0.4020            8.7648+-0.1229          might be 1.0250x faster
   captured-assignments                               0.5824+-0.0036     ?      0.5828+-0.0031        ?
   cast-int-to-double                                 9.3641+-0.0451     ?      9.4191+-0.0489        ?
   cell-argument                                     10.9897+-0.0756     ?     11.1197+-0.0777        ? might be 1.0118x slower
   cfg-simplify                                       4.0844+-0.0530     ?      4.1044+-0.0694        ?
   chain-getter-access                               13.6357+-0.1549     ?     13.7771+-0.1584        ? might be 1.0104x slower
   cmpeq-obj-to-obj-other                            13.7075+-0.4344           13.6706+-0.2798        
   constant-test                                      8.8652+-0.0906            8.8379+-0.1057        
   DataView-custom-properties                       123.4853+-1.8705     ?    124.5702+-1.8723        ?
   delay-tear-off-arguments-strictmode                3.6386+-0.0163     !      3.8042+-0.0960        ! definitely 1.0455x slower
   destructuring-arguments                            8.9133+-0.0403     !      9.0529+-0.0561        ! definitely 1.0157x slower
   destructuring-swap                                 8.8641+-0.0711     !      9.1582+-0.1016        ! definitely 1.0332x slower
   direct-arguments-getbyval                          1.1134+-0.0119     !      1.1588+-0.0257        ! definitely 1.0407x slower
   div-boolean-double                                 6.3372+-0.0781     ?      6.4441+-0.1151        ? might be 1.0169x slower
   div-boolean                                       11.5912+-0.2323     ?     11.7523+-0.0872        ? might be 1.0139x slower
   double-get-by-val-out-of-bounds                    6.7323+-0.0980            6.7249+-0.0503        
   double-pollution-getbyval                         11.3925+-0.1203           11.2275+-0.1782          might be 1.0147x faster
   double-pollution-putbyoffset                       6.2859+-0.2786            6.2268+-0.1548        
   double-to-int32-typed-array-no-inline              3.0026+-0.0604     !      3.1624+-0.0618        ! definitely 1.0532x slower
   double-to-int32-typed-array                        2.4562+-0.0260     !      2.6810+-0.0541        ! definitely 1.0915x slower
   double-to-uint32-typed-array-no-inline             3.0473+-0.0393     !      3.2669+-0.0787        ! definitely 1.0721x slower
   double-to-uint32-typed-array                       2.6409+-0.0228     !      2.8468+-0.0156        ! definitely 1.0780x slower
   empty-string-plus-int                             10.2299+-0.0839     !     10.6618+-0.2253        ! definitely 1.0422x slower
   emscripten-cube2hash                              54.3981+-0.8949     !     56.2412+-0.8003        ! definitely 1.0339x slower
   external-arguments-getbyval                        2.0574+-0.0491            2.0268+-0.0104          might be 1.0151x faster
   external-arguments-putbyval                        3.0207+-0.0104     ?      3.0624+-0.0381        ? might be 1.0138x slower
   fixed-typed-array-storage-var-index                1.5072+-0.0115     !      1.5490+-0.0155        ! definitely 1.0278x slower
   fixed-typed-array-storage                          1.1073+-0.0288     ?      1.1206+-0.0095        ? might be 1.0120x slower
   Float32Array-matrix-mult                           7.3328+-0.3834     ?      7.5280+-0.1133        ? might be 1.0266x slower
   Float32Array-to-Float64Array-set                  90.1246+-2.5682           89.8899+-2.0352        
   Float64Array-alloc-long-lived                    101.8514+-0.7644          101.5079+-1.1640        
   Float64Array-to-Int16Array-set                   115.9603+-1.0297     !    117.8083+-0.6298        ! definitely 1.0159x slower
   fold-double-to-int                                20.8783+-0.2787     ?     21.0995+-0.3449        ? might be 1.0106x slower
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     19.0483+-0.1527     !     24.7414+-0.1509        ! definitely 1.2989x slower
   fold-get-by-id-to-multi-get-by-offset             18.1609+-0.2627     !     23.3417+-0.3399        ! definitely 1.2853x slower
   fold-multi-get-by-offset-to-get-by-offset   
                                                     12.9561+-0.1483     !     18.5838+-0.1483        ! definitely 1.4344x slower
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                     13.3470+-0.2802     !     18.5862+-0.2108        ! definitely 1.3925x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                     13.2766+-0.1544     !     19.1757+-0.4152        ! definitely 1.4443x slower
   fold-multi-put-by-offset-to-put-by-offset   
                                                     12.8645+-0.8985     !     17.7067+-0.1125        ! definitely 1.3764x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     17.8403+-0.7552     !     23.4543+-0.3432        ! definitely 1.3147x slower
   fold-put-by-id-to-multi-put-by-offset             20.7412+-0.3290     !     26.2583+-0.3991        ! definitely 1.2660x slower
   fold-put-structure                                12.7478+-0.2130     !     17.9418+-0.1380        ! definitely 1.4074x slower
   for-of-iterate-array-entries                       9.3312+-0.1445     ^      9.0725+-0.0833        ^ definitely 1.0285x faster
   for-of-iterate-array-keys                          3.6012+-0.0891     !      4.1769+-0.0488        ! definitely 1.1599x slower
   for-of-iterate-array-values                        3.2140+-0.0880     !      3.6057+-0.0643        ! definitely 1.1219x slower
   fround                                            23.6842+-0.2218     ?     23.9080+-0.2482        ?
   ftl-library-inlining-dataview                    108.1061+-0.8906     ?    108.8958+-1.4733        ?
   ftl-library-inlining                             117.7048+-2.8956     !    243.0572+-0.5889        ! definitely 2.0650x slower
   function-dot-apply                                 2.2878+-0.0403     ?      2.3509+-0.0495        ? might be 1.0276x slower
   function-test                                      5.3066+-0.1541            5.2499+-0.0890          might be 1.0108x faster
   function-with-eval                               101.8664+-2.3038     ?    113.7687+-22.9575       ? might be 1.1168x slower
   gcse-poly-get-less-obvious                        29.0819+-0.2137     ?     29.2177+-0.4039        ?
   gcse-poly-get                                     29.8180+-0.3434           29.7022+-0.3251        
   gcse                                               7.5336+-0.0940     ?      7.5788+-0.1146        ?
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      3.7517+-0.0336     ?      3.8058+-0.0869        ? might be 1.0144x slower
   get-by-id-bimorphic-check-structure-elimination   
                                                      9.6832+-0.1863     ?      9.7026+-0.2100        ?
   get-by-id-chain-from-try-block                     8.1724+-0.1644     ?      8.2702+-0.1657        ? might be 1.0120x slower
   get-by-id-check-structure-elimination              8.8005+-0.1430            8.7830+-0.1566        
   get-by-id-proto-or-self                           25.6605+-3.0317           23.9368+-0.4594          might be 1.0720x faster
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      4.5338+-0.0589            4.5190+-0.0646        
   get-by-id-self-or-proto                           25.2563+-1.9235           24.3235+-0.4265          might be 1.0383x faster
   get-by-val-out-of-bounds                           6.6049+-0.0898     ?      6.7124+-0.1758        ? might be 1.0163x slower
   get_callee_monomorphic                             5.1292+-0.1267     !      5.6877+-0.0583        ! definitely 1.1089x slower
   get_callee_polymorphic                             4.9364+-0.0673     ?      5.0298+-0.1112        ? might be 1.0189x slower
   getter-no-activation                               6.7428+-0.0246            6.7094+-0.0575        
   getter-richards                                  147.1201+-4.9276     !    164.3554+-8.5479        ! definitely 1.1172x slower
   getter                                             7.4113+-0.0197     ?      7.4849+-0.0902        ?
   global-var-const-infer-fire-from-opt               1.2076+-0.0195     !      1.3288+-0.0271        ! definitely 1.1003x slower
   global-var-const-infer                             1.0453+-0.0297     !      1.1220+-0.0076        ! definitely 1.0734x slower
   HashMap-put-get-iterate-keys                      40.1963+-0.4583     !     41.5192+-0.4147        ! definitely 1.0329x slower
   HashMap-put-get-iterate                           39.8826+-0.4124     !     41.2769+-0.4003        ! definitely 1.0350x slower
   HashMap-string-put-get-iterate                    45.5079+-0.8551     ?     47.2897+-1.9670        ? might be 1.0392x slower
   hoist-make-rope                                   14.0658+-1.1636     ?     15.3326+-1.1472        ? might be 1.0901x slower
   hoist-poly-check-structure-effectful-loop   
                                                      7.4871+-0.2569     ?      7.5666+-0.1416        ? might be 1.0106x slower
   hoist-poly-check-structure                         5.5740+-0.0277     ?      5.6377+-0.0753        ? might be 1.0114x slower
   imul-double-only                                   9.7322+-0.3396     ?     10.1670+-0.9110        ? might be 1.0447x slower
   imul-int-only                                     13.0831+-0.1570     ?     13.4385+-0.3405        ? might be 1.0272x slower
   imul-mixed                                        10.1237+-0.1776            9.6082+-0.7657          might be 1.0537x faster
   in-four-cases                                     28.3230+-0.3299           28.0955+-0.3463        
   in-one-case-false                                 14.7578+-0.1627     ?     14.7764+-0.1328        ?
   in-one-case-true                                  14.8377+-0.1013     ?     14.8680+-0.1153        ?
   in-two-cases                                      15.3117+-0.1508     ?     15.4573+-0.1559        ?
   indexed-properties-in-objects                      4.2771+-0.0088            4.2660+-0.1284        
   infer-closure-const-then-mov-no-inline             4.7352+-0.0312     ?      4.8665+-0.1145        ? might be 1.0277x slower
   infer-closure-const-then-mov                      29.2152+-0.1385     ?     29.2527+-0.2495        ?
   infer-closure-const-then-put-to-scope-no-inline   
                                                     17.5442+-0.1216     ?     17.6831+-0.1789        ?
   infer-closure-const-then-put-to-scope             33.1944+-0.0984     ?     33.3073+-0.1277        ?
   infer-closure-const-then-reenter-no-inline   
                                                     77.1045+-0.0420     ?     77.1987+-0.2027        ?
   infer-closure-const-then-reenter                  35.2553+-5.0194           33.3635+-0.2739          might be 1.0567x faster
   infer-constant-global-property                     5.4215+-0.0716     ?      5.4881+-0.0619        ? might be 1.0123x slower
   infer-constant-property                            3.6573+-0.0050     ?      3.6802+-0.0581        ?
   infer-one-time-closure-ten-vars                   16.3623+-0.1512     ^     15.8024+-0.3354        ^ definitely 1.0354x faster
   infer-one-time-closure-two-vars                   15.7463+-0.1009           15.4551+-0.3076          might be 1.0188x faster
   infer-one-time-closure                            15.6590+-0.0670     ^     15.2995+-0.1994        ^ definitely 1.0235x faster
   infer-one-time-deep-closure                       28.1105+-0.1194     ?     28.3051+-0.1551        ?
   inline-arguments-access                            2.2132+-0.0111     !      2.2625+-0.0185        ! definitely 1.0223x slower
   inline-arguments-aliased-access                    2.4663+-0.0078     !      2.5210+-0.0170        ! definitely 1.0222x slower
   inline-arguments-local-escape                     21.6986+-0.2676     ^     19.5682+-0.2632        ^ definitely 1.1089x faster
   inline-get-scoped-var                              6.4376+-0.0376     ?      6.4747+-0.0513        ?
   inlined-put-by-id-transition                      15.8503+-0.2639           15.7643+-0.2148        
   int-or-other-abs-then-get-by-val                   8.0042+-0.0987            7.9665+-0.0960        
   int-or-other-abs-zero-then-get-by-val             29.3303+-0.5235           29.0638+-0.1341        
   int-or-other-add-then-get-by-val                   6.7180+-0.0358     ?      6.8191+-0.1338        ? might be 1.0151x slower
   int-or-other-add                                   8.9227+-0.0453     !      9.2469+-0.1815        ! definitely 1.0363x slower
   int-or-other-div-then-get-by-val                   5.8894+-0.0171     !      5.9285+-0.0092        ! definitely 1.0066x slower
   int-or-other-max-then-get-by-val                   7.5146+-0.1464     ?      7.6135+-0.1489        ? might be 1.0132x slower
   int-or-other-min-then-get-by-val                   5.9762+-0.0327     ?      6.0087+-0.0376        ?
   int-or-other-mod-then-get-by-val                   5.8238+-0.0260     ?      5.8888+-0.0897        ? might be 1.0112x slower
   int-or-other-mul-then-get-by-val                   5.6980+-0.0312     ?      5.7690+-0.0805        ? might be 1.0125x slower
   int-or-other-neg-then-get-by-val                   7.1333+-0.0432     ?      7.1816+-0.0667        ?
   int-or-other-neg-zero-then-get-by-val             29.1470+-0.1693           29.1346+-0.0998        
   int-or-other-sub-then-get-by-val                   6.7319+-0.1065     ?      6.7585+-0.0518        ?
   int-or-other-sub                                   5.4528+-0.0210     !      5.4883+-0.0110        ! definitely 1.0065x slower
   int-overflow-local                                 6.6462+-0.0460     ?      6.7167+-0.0952        ? might be 1.0106x slower
   Int16Array-alloc-long-lived                       73.1718+-0.8995     ?     73.8988+-0.3836        ?
   Int16Array-bubble-sort-with-byteLength            44.4028+-0.2199     ?     44.6653+-1.0025        ?
   Int16Array-bubble-sort                            43.2161+-0.3977     ?     43.7899+-0.7829        ? might be 1.0133x slower
   Int16Array-load-int-mul                            2.1088+-0.0374            2.1074+-0.0324        
   Int16Array-to-Int32Array-set                      83.1607+-1.0270     !     87.5991+-1.6158        ! definitely 1.0534x slower
   Int32Array-alloc-large                            43.1672+-1.6349           42.3226+-1.9383          might be 1.0200x faster
   Int32Array-alloc-long-lived                       80.6878+-0.7606     ?     81.4666+-0.7147        ?
   Int32Array-alloc                                   4.8323+-0.0230            4.8232+-0.1581        
   Int32Array-Int8Array-view-alloc                   15.0128+-0.0468     !     15.5460+-0.4391        ! definitely 1.0355x slower
   int52-spill                                       10.9720+-0.3816     ?     11.4159+-0.2091        ? might be 1.0405x slower
   Int8Array-alloc-long-lived                        67.0735+-0.8928           66.6676+-0.8605        
   Int8Array-load-with-byteLength                     5.5084+-0.0673            5.5075+-0.0886        
   Int8Array-load                                     5.4576+-0.0123            5.4449+-0.0202        
   integer-divide                                    16.9566+-0.2727     ?     16.9961+-0.3382        ?
   integer-modulo                                     3.1656+-0.3778     ?      3.4523+-0.2037        ? might be 1.0906x slower
   large-int-captured                                10.9777+-0.2067     ?     11.1615+-0.2507        ? might be 1.0167x slower
   large-int-neg                                     24.1664+-0.3900           24.0080+-0.2192        
   large-int                                         21.4093+-0.1590     ?     21.5427+-0.5586        ?
   logical-not                                        6.9698+-0.4174            6.8742+-0.0789          might be 1.0139x faster
   lots-of-fields                                    16.8497+-0.0766           16.8329+-0.2496        
   make-indexed-storage                               4.3870+-0.2277     ?      4.6220+-0.1428        ? might be 1.0536x slower
   make-rope-cse                                      6.2167+-0.0520     ?      6.3191+-0.0886        ? might be 1.0165x slower
   marsaglia-larger-ints                             59.5675+-0.2882     ?     60.0459+-0.7735        ?
   marsaglia-osr-entry                               31.1365+-0.3387     ?     31.2384+-0.4060        ?
   max-boolean                                        3.7076+-0.0432     ?      3.7833+-0.0708        ? might be 1.0204x slower
   method-on-number                                  27.3115+-0.1886     !     30.1966+-0.2299        ! definitely 1.1056x slower
   min-boolean                                        3.6482+-0.0398     ?      3.6749+-0.0201        ?
   minus-boolean-double                               4.7901+-0.0484            4.7756+-0.0090        
   minus-boolean                                      3.6427+-0.0048     ^      3.6137+-0.0154        ^ definitely 1.0080x faster
   misc-strict-eq                                    55.7164+-0.5216     ?     55.9538+-0.7735        ?
   mod-boolean-double                                13.8346+-0.2232           13.8078+-0.1522        
   mod-boolean                                       10.6419+-0.1387           10.5245+-0.1541          might be 1.0112x faster
   mul-boolean-double                                 5.5980+-0.0094     ?      5.6433+-0.0614        ?
   mul-boolean                                        4.1418+-0.2279            3.9125+-0.1138          might be 1.0586x faster
   neg-boolean                                        4.8892+-0.0479            4.8476+-0.0091        
   negative-zero-divide                               0.4236+-0.0024     ?      0.4248+-0.0018        ?
   negative-zero-modulo                               0.4237+-0.0030     ?      0.4270+-0.0021        ?
   negative-zero-negate                               0.3958+-0.0026     ?      0.3979+-0.0018        ?
   nested-function-parsing                           48.3773+-0.1685     ?     49.2498+-1.3437        ? might be 1.0180x slower
   new-array-buffer-dead                              4.0593+-0.0815     ?      4.1281+-0.1014        ? might be 1.0170x slower
   new-array-buffer-push                             10.7193+-0.3140     ?     10.8320+-0.2098        ? might be 1.0105x slower
   new-array-dead                                    14.5273+-0.3136     ?     14.6045+-0.1909        ?
   new-array-push                                     7.5397+-0.1577     ?      7.6886+-0.1341        ? might be 1.0198x slower
   number-test                                        4.6450+-0.0212     !      4.6741+-0.0027        ! definitely 1.0063x slower
   object-closure-call                                9.1198+-0.1519     ?      9.3540+-0.1062        ? might be 1.0257x slower
   object-test                                        5.2648+-0.1949            5.1005+-0.1261          might be 1.0322x faster
   plus-boolean-arith                                 3.7242+-0.1077            3.7213+-0.0091        
   plus-boolean-double                                4.7942+-0.0054     ?      4.8433+-0.0663        ? might be 1.0102x slower
   plus-boolean                                       3.5461+-0.0100     ?      3.5598+-0.0121        ?
   poly-chain-access-different-prototypes-simple   
                                                      4.4626+-0.0526            4.4306+-0.0418        
   poly-chain-access-different-prototypes             3.6674+-0.0397            3.6566+-0.0075        
   poly-chain-access-simpler                          4.4290+-0.0569     ?      4.4420+-0.0716        ?
   poly-chain-access                                  3.0970+-0.3251            2.9639+-0.3353          might be 1.0449x faster
   poly-stricteq                                     83.6217+-2.2448     !     87.9983+-0.6855        ! definitely 1.0523x slower
   polymorphic-array-call                             2.2222+-0.0599     !      2.3546+-0.0465        ! definitely 1.0596x slower
   polymorphic-get-by-id                              4.7187+-0.0172     ?      4.7493+-0.0160        ?
   polymorphic-put-by-id                             98.0697+-24.3681          79.3468+-27.7915         might be 1.2360x faster
   polymorphic-structure                             24.6554+-0.0999     !     25.2350+-0.1435        ! definitely 1.0235x slower
   polyvariant-monomorphic-get-by-id                 13.4194+-0.1241           13.3665+-0.1488        
   proto-getter-access                               13.6849+-0.2658     ?     13.7981+-0.1519        ?
   put-by-id-replace-and-transition                  12.6248+-0.1636     ?     12.6772+-0.2373        ?
   put-by-id-slightly-polymorphic                     4.0219+-0.0382     ?      4.0258+-0.0482        ?
   put-by-id                                         21.1007+-0.4825     ?     21.2782+-0.6201        ?
   put-by-val-direct                                  0.7892+-0.0370            0.7826+-0.0051        
   put-by-val-large-index-blank-indexing-type   
                                                     10.8450+-0.1899     ?     10.9387+-0.2526        ?
   put-by-val-machine-int                             4.4728+-0.0509     !      4.7688+-0.1321        ! definitely 1.0662x slower
   rare-osr-exit-on-local                            21.5311+-0.4046     ?     21.5527+-0.1299        ?
   register-pressure-from-osr                        31.7164+-0.5637           31.6260+-0.1221        
   setter                                             7.4416+-0.0472            7.4063+-0.0323        
   simple-activation-demo                            35.5528+-0.5678           35.5390+-0.4073        
   simple-getter-access                              20.3389+-0.4497           20.2657+-0.1220        
   sin-boolean                                       23.4221+-0.2708           23.4127+-0.2094        
   slow-array-profile-convergence                     4.3958+-0.2932            4.3540+-0.2417        
   slow-convergence                                   4.8478+-0.0646     ?      4.9242+-0.0868        ? might be 1.0157x slower
   sparse-conditional                                 1.4896+-0.0235     ?      1.5218+-0.0103        ? might be 1.0216x slower
   splice-to-remove                                  26.9272+-0.2408     !     27.5897+-0.2124        ! definitely 1.0246x slower
   string-char-code-at                               23.3275+-0.1003     ?     23.4568+-0.0715        ?
   string-concat-object                               3.1942+-0.0168     !      3.3549+-0.0571        ! definitely 1.0503x slower
   string-concat-pair-object                          3.1063+-0.1070     !      3.3177+-0.0595        ! definitely 1.0681x slower
   string-concat-pair-simple                         18.4374+-0.3759     ?     18.6713+-0.3251        ? might be 1.0127x slower
   string-concat-simple                              18.3799+-0.2725     ?     18.7325+-0.3985        ? might be 1.0192x slower
   string-cons-repeat                                11.8836+-0.0395     !     12.1186+-0.0358        ! definitely 1.0198x slower
   string-cons-tower                                 10.8677+-0.0477     !     11.1423+-0.0400        ! definitely 1.0253x slower
   string-equality                                   26.1840+-0.2317           26.1770+-0.0935        
   string-get-by-val-big-char                        13.8209+-0.0878     !     14.1711+-0.1826        ! definitely 1.0253x slower
   string-get-by-val-out-of-bounds-insane             5.9756+-0.0762     ?      6.0230+-0.1413        ?
   string-get-by-val-out-of-bounds                    7.1722+-0.1160     ?      7.2187+-0.1208        ?
   string-get-by-val                                  5.5529+-0.0473     ?      5.5552+-0.0420        ?
   string-hash                                        2.9154+-0.1202     ?      2.9919+-0.0525        ? might be 1.0262x slower
   string-long-ident-equality                        21.2562+-0.0787     ?     21.2907+-0.1076        ?
   string-repeat-arith                               49.8890+-1.6692     ?     57.4615+-11.4261       ? might be 1.1518x slower
   string-sub                                        97.0829+-1.1645     ?    112.9704+-27.1701       ? might be 1.1636x slower
   string-test                                        4.6814+-0.0542     ?      4.7399+-0.0644        ? might be 1.0125x slower
   string-var-equality                               52.0645+-0.1326     ?     52.1075+-0.0593        ?
   structure-hoist-over-transitions                   3.9008+-0.0410     ?      3.9272+-0.0179        ?
   substring-concat-weird                            62.8993+-0.4224     !     63.6107+-0.2354        ! definitely 1.0113x slower
   substring-concat                                  66.0523+-0.3210     ?     66.9221+-0.6290        ? might be 1.0132x slower
   substring                                         74.5769+-0.6393     ?     74.7618+-0.1847        ?
   switch-char-constant                               3.6830+-0.0182     !      3.7624+-0.0463        ! definitely 1.0216x slower
   switch-char                                        9.2472+-0.1159     ?      9.3030+-0.1328        ?
   switch-constant                                   11.4307+-0.2208     ?     11.6811+-0.1196        ? might be 1.0219x slower
   switch-string-basic-big-var                       26.0247+-0.4709     ?     27.5762+-1.9284        ? might be 1.0596x slower
   switch-string-basic-big                           32.5875+-5.1036     ?     32.5888+-4.0839        ?
   switch-string-basic-var                           32.2364+-0.8126           32.0137+-0.6497        
   switch-string-basic                               29.9146+-3.3236     ?     32.3610+-2.3629        ? might be 1.0818x slower
   switch-string-big-length-tower-var                29.9972+-0.0963     ?     29.9981+-0.1249        ?
   switch-string-length-tower-var                    23.9790+-0.2680     ?     23.9852+-0.1340        ?
   switch-string-length-tower                        17.3320+-0.0332     ?     17.3774+-0.0615        ?
   switch-string-short                               18.5106+-2.9360           17.3684+-0.1147          might be 1.0658x faster
   switch                                            16.0479+-0.1864           15.8092+-0.2444          might be 1.0151x faster
   tear-off-arguments-simple                          2.3354+-0.0112     !      2.4829+-0.0202        ! definitely 1.0632x slower
   tear-off-arguments                                 3.9943+-0.0889     ?      4.0535+-0.0477        ? might be 1.0148x slower
   temporal-structure                                20.3344+-0.1143           20.1460+-0.0953        
   to-int32-boolean                                  24.6966+-0.2168     ?     24.7348+-0.1842        ?
   undefined-test                                     4.8610+-0.0529     ?      4.8658+-0.0568        ?
   unprofiled-licm                                   31.3988+-0.4238           31.2684+-0.6309        
   weird-inlining-const-prop                          2.6705+-0.0621     !      2.9369+-0.0936        ! definitely 1.0997x slower

   &lt;arithmetic&gt;                                      21.9290+-0.1393     !     22.8579+-0.1550        ! definitely 1.0424x slower
   &lt;geometric&gt; *                                     11.0613+-0.0239     !     11.3412+-0.0195        ! definitely 1.0253x slower
   &lt;harmonic&gt;                                         5.4729+-0.0084     !      5.5902+-0.0106        ! definitely 1.0214x slower

                                                        TipOfTree                 PolyInline                                    
AsmBench:
   bigfib.cpp                                       796.8540+-5.1282     ?    801.8202+-3.5901        ?
   cray.c                                           796.2454+-7.5238     ?    796.5911+-4.0687        ?
   dry.c                                            774.6597+-10.4498    ?    784.5348+-8.9135        ? might be 1.0127x slower
   FloatMM.c                                       1148.5861+-0.6920         1148.5180+-0.4762        
   gcc-loops.cpp                                   7554.7483+-16.7400    ?   7566.6718+-10.1157       ?
   n-body.c                                        2008.6216+-0.7456     ^   2005.8173+-0.8630        ^ definitely 1.0014x faster
   Quicksort.c                                      691.6239+-8.2094     ?    699.8070+-7.2348        ? might be 1.0118x slower
   stepanov_container.cpp                          5841.5354+-14.8307    ?   5851.3891+-21.6273       ?
   Towers.c                                         491.4585+-2.6998     ^    484.8095+-1.5100        ^ definitely 1.0137x faster

   &lt;arithmetic&gt;                                    2233.8148+-2.7224     ?   2237.7732+-1.7716        ? might be 1.0018x slower
   &lt;geometric&gt; *                                   1370.0509+-3.4829     ?   1372.9959+-2.8997        ? might be 1.0021x slower
   &lt;harmonic&gt;                                      1005.0478+-3.8727     ?   1006.5637+-3.2032        ? might be 1.0015x slower

                                                        TipOfTree                 PolyInline                                    
All benchmarks:
   &lt;arithmetic&gt;                                     154.9874+-0.1052     !    156.9893+-0.2711        ! definitely 1.0129x slower
   &lt;geometric&gt;                                       17.9647+-0.0186     !     18.3613+-0.0271        ! definitely 1.0221x slower
   &lt;harmonic&gt;                                         4.9114+-0.0275     ^      4.8705+-0.0106        ^ definitely 1.0084x faster

                                                        TipOfTree                 PolyInline                                    
Geomean of preferred means:
   &lt;scaled-result&gt;                                   79.4052+-0.1123     !     81.0038+-0.0695        ! definitely 1.0201x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030935</commentid>
    <comment_count>20</comment_count>
      <attachid>237033</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-23 18:06:52 -0700</bug_when>
    <thetext>Created attachment 237033
a wrong approch

This was an aborted attempt to reduce overhead by using GCD.  It doesn&apos;t work.  GCD dispatch_async isn&apos;t fast enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030946</commentid>
    <comment_count>21</comment_count>
      <attachid>237039</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-23 21:12:37 -0700</bug_when>
    <thetext>Created attachment 237039
closer

This is very close to being a proper speed-up.


Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, and AsmBench on oldmac (MacPro4,1).

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r172835)
&quot;OldPolyInline&quot; at /Volumes/Data/fromMiniMe/quartary/OpenSource/Good/WebKitBuild/Release/jsc
&quot;PolyInline&quot; at /Volumes/Data/fromMiniMe/quartary/OpenSource/WebKitBuild/Release/jsc (r172859)

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               OldPolyInline               PolyInline           PolyInline v. TipOfTree  
SunSpider:
   3d-cube                                            7.5968+-0.1006     !      7.9333+-0.1876     ^      7.6663+-0.0769        ?
   3d-morph                                           9.5368+-0.0470     !      9.7130+-0.0758            9.6005+-0.0860        ?
   3d-raytrace                                        9.6492+-0.1424     !      9.9515+-0.1199            9.7634+-0.1927        ? might be 1.0118x slower
   access-binary-trees                                2.8465+-0.0803     ?      2.9831+-0.1022            2.8157+-0.1096          might be 1.0109x faster
   access-fannkuch                                    9.0343+-0.2192     ?      9.3109+-0.1164     ?      9.3590+-0.1933        ? might be 1.0359x slower
   access-nbody                                       4.6316+-0.0148     !      4.7056+-0.0394     ^      4.6170+-0.0157        
   access-nsieve                                      5.8494+-0.1021            5.7934+-0.1002            5.7559+-0.0686          might be 1.0163x faster
   bitops-3bit-bits-in-byte                           1.8552+-0.0158     !      1.9158+-0.0153     ^      1.8585+-0.0105        ?
   bitops-bits-in-byte                                6.7489+-0.0529     ?      6.8406+-0.1374            6.6799+-0.1146          might be 1.0103x faster
   bitops-bitwise-and                                 3.1820+-0.0081     ?      3.1845+-0.0119            3.1799+-0.0156        
   bitops-nsieve-bits                                 5.7063+-0.0471     ?      5.7207+-0.0453            5.6712+-0.0339        
   controlflow-recursive                              2.8976+-0.0699     !      3.1888+-0.0992            3.1028+-0.0900        ! definitely 1.0708x slower
   crypto-aes                                         6.2038+-0.1265     !      6.4553+-0.0609     ^      6.2128+-0.0745        ?
   crypto-md5                                         3.6947+-0.0737     !      3.9632+-0.0938     ^      3.5592+-0.0931          might be 1.0381x faster
   crypto-sha1                                        3.7256+-0.0414     !      4.3992+-0.0730     ^      3.8115+-0.0737        ? might be 1.0231x slower
   date-format-tofte                                 13.1325+-0.0851     !     13.5885+-0.1987     ^     13.1220+-0.2073        
   date-format-xparb                                  8.5692+-0.1008     !      9.1183+-0.1247     ^      8.8153+-0.1222        ! definitely 1.0287x slower
   math-cordic                                        4.6991+-0.0248     !      4.8151+-0.0618            4.7459+-0.0564        ?
   math-partial-sums                                 10.4487+-0.1216           10.3774+-0.1544     ?     10.4569+-0.1351        ?
   math-spectral-norm                                 3.0253+-0.0131     !      3.0899+-0.0343            3.0553+-0.0589        ?
   regexp-dna                                        11.8418+-0.1761     ?     11.9746+-0.2893           11.6921+-0.0954          might be 1.0128x faster
   string-base64                                      6.3888+-0.0724     !      6.7286+-0.0640     ^      6.4840+-0.0541        ? might be 1.0149x slower
   string-fasta                                      10.2561+-0.2657     ?     10.3331+-0.2601           10.1315+-0.2475          might be 1.0123x faster
   string-tagcloud                                   15.2819+-0.1896     ?     15.3662+-0.1923     ?     15.4204+-0.3423        ?
   string-unpack-code                                30.6004+-0.2242     !     31.5393+-0.4892           31.0600+-0.2566        ? might be 1.0150x slower
   string-validate-input                              7.6459+-0.0588     !      7.8853+-0.0661     ^      7.6635+-0.1098        ?

   &lt;arithmetic&gt; *                                     7.8865+-0.0281     !      8.1106+-0.0312     ^      7.9346+-0.0163        ! definitely 1.0061x slower
   &lt;geometric&gt;                                        6.4813+-0.0274     !      6.7012+-0.0166     ^      6.5152+-0.0178        ? might be 1.0052x slower
   &lt;harmonic&gt;                                         5.4042+-0.0272     !      5.6193+-0.0179     ^      5.4337+-0.0202        ? might be 1.0055x slower

                                                        TipOfTree               OldPolyInline               PolyInline           PolyInline v. TipOfTree  
LongSpider:
   3d-cube                                         1349.9638+-8.7539         1341.9924+-8.6658     ?   1352.2807+-11.9435       ?
   3d-morph                                        2293.9496+-54.3239        2272.9058+-2.7280         2271.9633+-1.8666        
   3d-raytrace                                     1318.5673+-8.5350     !   1343.2097+-9.0392         1334.1944+-9.5874        ? might be 1.0119x slower
   access-binary-trees                             1671.6794+-6.7045     ?   1673.7782+-6.9684     ?   1675.9381+-8.4777        ?
   access-fannkuch                                  518.1686+-18.0454    ?    523.6334+-22.5282         518.0250+-13.1596       
   access-nbody                                    1246.8274+-1.4745     ?   1246.8614+-0.7528     ?   1246.9889+-1.4063        ?
   access-nsieve                                   1610.7732+-4.0603     ?   1611.4959+-1.4659     ?   1613.7677+-6.2302        ?
   bitops-3bit-bits-in-byte                          56.5205+-0.4801     ?     56.5494+-0.5069     ?     56.6397+-0.4483        ?
   bitops-bits-in-byte                              394.4480+-8.6075          392.4211+-2.5878          391.6039+-6.5651        
   bitops-nsieve-bits                              1180.9449+-3.3729         1179.7390+-3.6834     ?   1182.6170+-9.2748        ?
   controlflow-recursive                            866.8516+-1.3217          864.2723+-1.5320     ?    865.7004+-1.2000        
   crypto-aes                                      1134.3077+-7.3833         1131.7182+-2.8674         1127.2899+-5.8699        
   crypto-md5                                       956.6052+-7.8949     !    985.2729+-4.0365     ^    963.4393+-6.0080        ?
   crypto-sha1                                     1199.3875+-3.1823         1199.1652+-3.7565     ?   1201.6001+-14.1220       ?
   date-format-tofte                               1208.9655+-19.8661        1196.1195+-11.4344        1183.6710+-17.8630         might be 1.0214x faster
   date-format-xparb                               1318.3267+-9.5408     ?   1327.7142+-17.7467        1327.1370+-16.6566       ?
   math-cordic                                      813.1115+-1.1082     !    983.9172+-12.1013    ^    812.7138+-1.4998        
   math-partial-sums                               1315.3453+-1.8057     ?   1315.4757+-4.0901         1315.1383+-4.0014        
   math-spectral-norm                              1296.1209+-0.8698     ?   1296.8169+-3.1618     ?   1304.9138+-13.3644       ?
   string-base64                                    590.2656+-4.4362     !    606.5468+-1.7821          605.7721+-4.0021        ! definitely 1.0263x slower
   string-fasta                                     702.6789+-5.0791     ?    715.5973+-22.9297         700.3404+-5.8429        
   string-tagcloud                                  363.0031+-4.0172          360.8392+-2.6286     ?    364.0224+-2.0190        ?

   &lt;arithmetic&gt;                                    1063.9460+-2.9023     !   1073.9110+-1.4746     ^   1064.3526+-2.3943        ? might be 1.0004x slower
   &lt;geometric&gt; *                                    886.2058+-2.0155     !    896.7825+-2.4972     ^    887.1438+-2.3358        ? might be 1.0011x slower
   &lt;harmonic&gt;                                       535.2960+-1.4660     ?    539.3852+-2.9751          536.2064+-1.3968        ? might be 1.0017x slower

                                                        TipOfTree               OldPolyInline               PolyInline           PolyInline v. TipOfTree  
V8Spider:
   crypto                                            82.6233+-2.0640           82.1828+-0.8922           81.4173+-1.1905          might be 1.0148x faster
   deltablue                                         99.7906+-0.9344     !    121.6040+-1.8495     ?    122.4672+-1.0183        ! definitely 1.2272x slower
   earley-boyer                                      74.6517+-1.0537     ?     75.9837+-0.6960           74.5497+-1.3398        
   raytrace                                          44.7302+-0.7809     !     50.5652+-1.0741     ^     46.4859+-0.6909        ! definitely 1.0393x slower
   regexp                                           103.4974+-0.6087     ?    104.5437+-0.6476          104.1118+-0.5190        ?
   richards                                         107.4693+-1.4098     !    119.2686+-1.3092          119.1006+-1.2616        ! definitely 1.1082x slower
   splay                                             50.4520+-0.5289     ?     50.7996+-0.9773           50.1278+-0.4640        

   &lt;arithmetic&gt;                                      80.4592+-0.4942     !     86.4211+-0.4176     ^     85.4658+-0.3501        ! definitely 1.0622x slower
   &lt;geometric&gt; *                                     76.5777+-0.4674     !     81.7064+-0.4761     ^     80.2691+-0.3045        ! definitely 1.0482x slower
   &lt;harmonic&gt;                                        72.4058+-0.4585     !     76.9431+-0.5730     ^     74.9991+-0.2760        ! definitely 1.0358x slower

                                                        TipOfTree               OldPolyInline               PolyInline           PolyInline v. TipOfTree  
Octane:
   encrypt                                           0.39469+-0.00041    ?     0.39542+-0.00070          0.39457+-0.00060       
   decrypt                                           7.15540+-0.00490    ?     7.16783+-0.01390    ^     7.14990+-0.00304       
   deltablue                                x2       0.44237+-0.00944    ^     0.34085+-0.00071    ?     0.34263+-0.00156       ^ definitely 1.2911x faster
   earley                                            1.34044+-0.00931    ?     1.35331+-0.00724    ?     1.43291+-0.13590       ? might be 1.0690x slower
   boyer                                            10.38327+-0.11637         10.36485+-0.13204    ?    10.39576+-0.06340       ?
   navier-stokes                            x2       7.73287+-0.00630          7.72813+-0.00747    ?     7.73359+-0.00506       ?
   raytrace                                 x2       2.65510+-0.02798          2.60345+-0.05979    !     2.71553+-0.02297       ! definitely 1.0228x slower
   richards                                 x2       0.22546+-0.00764    ^     0.21279+-0.00168    ?     0.21400+-0.00349       ^ definitely 1.0536x faster
   splay                                    x2       0.62883+-0.00589          0.62695+-0.00568          0.62436+-0.00609       
   regexp                                   x2      61.05635+-0.52866    ?    62.20920+-0.79195         61.51487+-0.25551       ?
   pdfjs                                    x2      86.61967+-0.12114    !    88.75782+-0.38265         88.45366+-0.45158       ! definitely 1.0212x slower
   mandreel                                 x2      91.75195+-0.59207    ?    93.89854+-1.74704         91.93713+-0.66630       ?
   gbemu                                    x2      68.51092+-0.31507    !    76.45508+-1.62798         74.52003+-1.38221       ! definitely 1.0877x slower
   closure                                           0.90815+-0.00185    ?     0.91114+-0.00232          0.90888+-0.00186       ?
   jquery                                           11.42428+-0.03007    ^    11.31468+-0.06190         11.27173+-0.02340       ^ definitely 1.0135x faster
   box2d                                    x2      24.64889+-0.07543    ?    24.86224+-0.15634         24.75145+-0.15630       ?
   zlib                                     x2     780.59431+-57.54470       780.39533+-55.85512   ?   816.19238+-3.01953       ? might be 1.0456x slower
   typescript                               x2    1286.72534+-8.90420    !  1339.83057+-6.17903    ^  1312.64616+-6.59689       ! definitely 1.0201x slower

   &lt;arithmetic&gt;                                    161.82634+-3.56075    ?   166.24497+-3.54909    ?   166.49484+-0.59211       ! definitely 1.0288x slower
   &lt;geometric&gt; *                                    12.26354+-0.03428    ^    12.17045+-0.05282    ?    12.19757+-0.05384         might be 1.0054x faster
   &lt;harmonic&gt;                                        1.33412+-0.01816    ^     1.23148+-0.00333    ?     1.23799+-0.00976       ^ definitely 1.0776x faster

                                                        TipOfTree               OldPolyInline               PolyInline           PolyInline v. TipOfTree  
Kraken:
   ai-astar                                          527.596+-1.672      ?     528.664+-1.319            528.533+-1.728         ?
   audio-beat-detection                              183.219+-1.109            182.450+-2.138      ?     182.908+-3.479         
   audio-dft                                         253.083+-1.108      ?     254.706+-0.679      ^     253.227+-0.621         ?
   audio-fft                                         130.098+-0.471      ?     130.524+-0.675            129.885+-0.073         
   audio-oscillator                                  367.201+-0.939            367.154+-1.010      ?     367.836+-0.876         ?
   imaging-darkroom                                  286.597+-1.900      ?     288.655+-0.654            286.661+-1.617         ?
   imaging-desaturate                                112.583+-0.313      ?     112.729+-0.453            112.547+-0.353         
   imaging-gaussian-blur                             179.327+-0.591            179.212+-0.592      ?     181.914+-6.849         ? might be 1.0144x slower
   json-parse-financial                               83.081+-1.351      ?      83.703+-0.739      !      85.326+-0.092         ! definitely 1.0270x slower
   json-stringify-tinderbox                          105.336+-0.367      ?     108.859+-3.366      ?     109.153+-0.464         ! definitely 1.0362x slower
   stanford-crypto-aes                               101.613+-1.626      ?     102.128+-0.392            102.095+-0.656         ?
   stanford-crypto-ccm                                93.789+-12.482            91.264+-10.204            87.678+-11.135          might be 1.0697x faster
   stanford-crypto-pbkdf2                            274.520+-1.562      ?     282.098+-7.906            275.662+-0.409         ?
   stanford-crypto-sha256-iterative                  107.149+-0.660      ?     108.169+-0.606            107.495+-0.195         ?

   &lt;arithmetic&gt; *                                    200.371+-0.876      ?     201.451+-1.084            200.780+-1.183         ? might be 1.0020x slower
   &lt;geometric&gt;                                       169.736+-1.581      ?     170.610+-1.683            170.014+-1.813         ? might be 1.0016x slower
   &lt;harmonic&gt;                                        147.655+-2.267      ?     148.355+-2.281            147.790+-2.333         ? might be 1.0009x slower

                                                        TipOfTree               OldPolyInline               PolyInline           PolyInline v. TipOfTree  
JSRegress:
   abs-boolean                                        4.2149+-0.0902     ?      4.2770+-0.0650            4.2188+-0.0499        ?
   adapt-to-double-divide                            20.1724+-0.3184     ?     20.3609+-0.1524           20.1054+-0.3363        
   aliased-arguments-getbyval                         1.0912+-0.0114     !      1.1962+-0.0452     ^      1.1184+-0.0152        ! definitely 1.0249x slower
   allocate-big-object                                3.6155+-0.1075     ?      3.6673+-0.0796            3.6467+-0.0792        ?
   arity-mismatch-inlining                            1.0099+-0.0138     ?      1.0306+-0.0160            1.0165+-0.0136        ?
   array-access-polymorphic-structure                10.9428+-0.1014           10.7421+-0.0993     ?     11.0142+-0.2007        ?
   array-nonarray-polymorhpic-access                 60.8252+-0.1091           60.5706+-0.1949     ?     60.7668+-0.2217        
   array-prototype-every                            124.2107+-0.8628          121.7947+-2.6764     ?    123.4568+-4.7834        
   array-prototype-forEach                          123.4820+-0.6579     ^    121.1670+-1.2575     ?    121.2454+-1.8350          might be 1.0184x faster
   array-prototype-map                              149.1169+-2.7657          147.0619+-4.0173     ?    148.2559+-2.9524        
   array-prototype-some                             122.5469+-0.0784     ^    121.2598+-0.7501          120.8603+-2.1102          might be 1.0140x faster
   array-splice-contiguous                           68.1283+-0.8982     !     74.4046+-0.5605     ^     67.7779+-0.6190        
   array-with-double-add                              6.6599+-0.1047     ?      6.7511+-0.0750            6.7452+-0.1172        ? might be 1.0128x slower
   array-with-double-increment                        4.6470+-0.0745     ?      4.6620+-0.0680     ?      4.6907+-0.0947        ?
   array-with-double-mul-add                          7.9368+-0.2776     ?      7.9533+-0.2101            7.8784+-0.1924        
   array-with-double-sum                              5.0224+-0.0586            4.9780+-0.0494     ?      5.0196+-0.0910        
   array-with-int32-add-sub                          12.0887+-0.3792           11.9502+-0.3457           11.8022+-0.0904          might be 1.0243x faster
   array-with-int32-or-double-sum                     5.0500+-0.0535     ?      5.1146+-0.0817     ?      5.1342+-0.0913        ? might be 1.0167x slower
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                    114.9350+-0.7464     !    117.7443+-1.3931          115.9793+-1.1699        ?
   ArrayBuffer-DataView-alloc-long-lived             32.0286+-0.2330     !     32.8248+-0.4955           32.4517+-0.6099        ? might be 1.0132x slower
   ArrayBuffer-Int32Array-byteOffset                  5.2469+-0.0090     ?      5.2700+-0.0359            5.2610+-0.0171        ?
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                    119.6093+-1.1411     ?    121.5258+-1.8794     ?    121.5333+-2.5143        ? might be 1.0161x slower
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     51.2499+-0.4186     ?     52.6272+-2.4502           50.8320+-0.4991        
   ArrayBuffer-Int8Array-alloc-long-lived            31.4915+-0.6563     ?     31.7945+-0.9916           31.4632+-0.5283        
   ArrayBuffer-Int8Array-alloc                       27.8506+-0.3308     ?     28.4073+-1.1350     ?     28.8704+-1.4210        ? might be 1.0366x slower
   asmjs_bool_bug                                    10.1802+-0.1085     ?     10.2642+-0.1545           10.1805+-0.1020        ?
   assign-custom-setter-polymorphic                   4.9108+-0.0458     ?      5.0059+-0.1602            4.9405+-0.0812        ?
   assign-custom-setter                               6.6821+-0.0457            6.6583+-0.0323     ?      6.7067+-0.0903        ?
   basic-set                                         15.4140+-0.3285     ?     15.8613+-0.5977           15.6650+-0.3186        ? might be 1.0163x slower
   big-int-mul                                        6.3460+-0.0999     !      6.8861+-0.1331            6.7775+-0.1090        ! definitely 1.0680x slower
   boolean-test                                       4.7800+-0.0447     ?      4.8091+-0.0475            4.7576+-0.0157        
   branch-fold                                        5.1593+-0.0467            5.0905+-0.0458     ?      5.0941+-0.0506          might be 1.0128x faster
   by-val-generic                                    13.1451+-0.4799           13.0213+-0.3579           12.9184+-0.4523          might be 1.0176x faster
   call-spread-apply                                 20.5652+-0.3384           20.2854+-0.3161     ?     20.4959+-0.2846        
   call-spread-call                                   8.6464+-0.1705     ?      9.0551+-0.4215            8.8556+-0.0886        ? might be 1.0242x slower
   captured-assignments                               0.5823+-0.0040     ?      0.5837+-0.0034     ?      0.5894+-0.0065        ? might be 1.0122x slower
   cast-int-to-double                                 9.4029+-0.0753     ?      9.5295+-0.1981            9.3415+-0.1181        
   cell-argument                                     10.9720+-0.1187     ?     11.1541+-0.1282           11.1053+-0.1153        ? might be 1.0121x slower
   cfg-simplify                                       4.0688+-0.0260            4.0673+-0.0045            4.0595+-0.0160        
   chain-getter-access                               13.6050+-0.1629     ?     13.6313+-0.1991           13.5080+-0.0982        
   cmpeq-obj-to-obj-other                            13.5198+-0.5414           13.3979+-0.3906           12.8910+-0.4117          might be 1.0488x faster
   constant-test                                      8.7872+-0.0769     ?      8.8425+-0.1299            8.7507+-0.0809        
   DataView-custom-properties                       123.6864+-1.3454     ?    124.4644+-1.5391          123.9122+-1.3967        ?
   delay-tear-off-arguments-strictmode                3.6319+-0.0153     !      3.7894+-0.0134     ^      3.6685+-0.0214        ? might be 1.0101x slower
   destructuring-arguments                            8.8802+-0.1753     ?      9.0114+-0.0451            8.9311+-0.1445        ?
   destructuring-swap                                 8.8676+-0.1154     ?      9.0483+-0.1203            8.9306+-0.0787        ?
   direct-arguments-getbyval                          1.1325+-0.0331     ?      1.1444+-0.0078     ^      1.1215+-0.0122        
   div-boolean-double                                 6.4262+-0.0634     ?      6.4512+-0.1110            6.4451+-0.0770        ?
   div-boolean                                       11.6290+-0.1057           11.6010+-0.1708     ?     11.7338+-0.1791        ?
   double-get-by-val-out-of-bounds                    6.6636+-0.0733     ?      6.8449+-0.3559            6.7746+-0.1097        ? might be 1.0167x slower
   double-pollution-getbyval                         11.3584+-0.1128     ?     11.4490+-0.1361           11.3746+-0.1243        ?
   double-pollution-putbyoffset                       6.0847+-0.1287     ?      6.2992+-0.1768            6.1707+-0.2125        ? might be 1.0141x slower
   double-to-int32-typed-array-no-inline              2.9698+-0.0273     !      3.1902+-0.0813     ^      2.9883+-0.0612        ?
   double-to-int32-typed-array                        2.4681+-0.0772     !      2.6932+-0.0862     ^      2.4713+-0.0161        ?
   double-to-uint32-typed-array-no-inline             3.0086+-0.0230     !      3.2881+-0.0787     ^      3.0789+-0.0686        ? might be 1.0234x slower
   double-to-uint32-typed-array                       2.6413+-0.0216     !      2.9299+-0.1329     ^      2.7011+-0.0671        ? might be 1.0226x slower
   empty-string-plus-int                             10.2400+-0.1017     !     10.6539+-0.1174           10.4852+-0.0740        ! definitely 1.0239x slower
   emscripten-cube2hash                              54.2860+-0.5619     !     56.3243+-0.7747     ^     54.3014+-0.3371        ?
   external-arguments-getbyval                        2.0283+-0.0093     ?      2.0393+-0.0182            2.0347+-0.0255        ?
   external-arguments-putbyval                        3.0343+-0.0279     ?      3.0375+-0.0420            3.0019+-0.0306          might be 1.0108x faster
   fixed-typed-array-storage-var-index                1.5154+-0.0341     ?      1.5505+-0.0127     ^      1.5180+-0.0068        ?
   fixed-typed-array-storage                          1.0880+-0.0090     !      1.1273+-0.0044     ^      1.0919+-0.0100        ?
   Float32Array-matrix-mult                           7.4491+-0.0591     ?      7.5377+-0.1312            7.2648+-0.3790          might be 1.0254x faster
   Float32Array-to-Float64Array-set                  88.5121+-0.6146     ?     89.3494+-0.6009           89.0419+-1.3288        ?
   Float64Array-alloc-long-lived                    102.6328+-0.8965          102.1440+-1.2115          101.8468+-0.7838        
   Float64Array-to-Int16Array-set                   115.8131+-0.8523     !    117.4233+-0.7073          116.9263+-0.3519        ?
   fold-double-to-int                                20.8053+-0.3197     ?     21.0478+-0.3862           20.8540+-0.3034        ?
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     19.1012+-0.2874     !     24.5503+-0.3224           24.2385+-0.2306        ! definitely 1.2690x slower
   fold-get-by-id-to-multi-get-by-offset             18.3438+-0.2683     !     23.3331+-0.4904           22.8990+-0.4426        ! definitely 1.2483x slower
   fold-multi-get-by-offset-to-get-by-offset   
                                                     13.0212+-0.0795     !     18.5174+-0.1443     ^     18.0711+-0.2738        ! definitely 1.3878x slower
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                     13.2924+-0.2919     !     18.6169+-0.1115     ^     17.8204+-0.3874        ! definitely 1.3406x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                     13.3301+-0.1486     !     19.5227+-0.2028     ^     18.4902+-0.0496        ! definitely 1.3871x slower
   fold-multi-put-by-offset-to-put-by-offset   
                                                     13.4483+-1.7540     !     17.8152+-0.1150     ^     16.9463+-0.2826        ! definitely 1.2601x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     17.7071+-0.6060     !     23.1230+-0.4855           22.5600+-0.2714        ! definitely 1.2741x slower
   fold-put-by-id-to-multi-put-by-offset             20.9670+-0.3716     !     26.4670+-0.3657           25.9551+-0.5619        ! definitely 1.2379x slower
   fold-put-structure                                12.8079+-0.1597     !     17.9431+-0.0855     ^     17.5135+-0.2245        ! definitely 1.3674x slower
   for-of-iterate-array-entries                       9.3572+-0.1680     ^      9.1008+-0.0864     ^      8.4761+-0.1667        ^ definitely 1.1040x faster
   for-of-iterate-array-keys                          3.5922+-0.0550     !      4.1378+-0.0592     ^      3.9735+-0.0857        ! definitely 1.1061x slower
   for-of-iterate-array-values                        3.1787+-0.0823     !      3.5773+-0.0826     ^      3.2542+-0.0832        ? might be 1.0238x slower
   fround                                            23.8782+-0.3309     ?     23.9093+-0.2415           23.8439+-0.3053        
   ftl-library-inlining-dataview                    107.7988+-0.1560     ?    111.3772+-7.9733          109.1687+-2.8471        ? might be 1.0127x slower
   ftl-library-inlining                             116.7308+-0.4075     !    127.7039+-0.2288     !    243.0603+-0.3448        ! definitely 2.0822x slower
   function-dot-apply                                 2.2889+-0.0134     !      2.3272+-0.0103            2.3138+-0.0533        ? might be 1.0108x slower
   function-test                                      5.2900+-0.1696            5.1798+-0.0188     ?      5.2205+-0.1003          might be 1.0133x faster
   function-with-eval                               102.4097+-0.7999     ?    104.4310+-1.6402     ?    105.7574+-2.0458        ! definitely 1.0327x slower
   gcse-poly-get-less-obvious                        28.9382+-0.5229     ?     29.0958+-0.6040           29.0524+-0.5800        ?
   gcse-poly-get                                     29.6153+-0.1166           29.5472+-0.1214     ?     29.6174+-0.1013        ?
   gcse                                               7.6211+-0.1937     ?      7.7217+-0.1647            7.6543+-0.0666        ?
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      3.8330+-0.0888            3.7885+-0.0591            3.7813+-0.0473          might be 1.0137x faster
   get-by-id-bimorphic-check-structure-elimination   
                                                      9.5620+-0.1533            9.4995+-0.1931     ?      9.6287+-0.2736        ?
   get-by-id-chain-from-try-block                     8.3120+-0.1389            8.2718+-0.1943            8.0079+-0.1981          might be 1.0380x faster
   get-by-id-check-structure-elimination              8.7340+-0.1850     ?      8.7651+-0.1844            8.7610+-0.1383        ?
   get-by-id-proto-or-self                           24.0046+-0.5082     ?     24.7312+-1.6547     ?     25.3319+-2.4623        ? might be 1.0553x slower
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      4.4948+-0.0428     ?      4.5187+-0.0676     ?      4.5581+-0.0635        ? might be 1.0141x slower
   get-by-id-self-or-proto                           25.4301+-0.9813           24.9903+-1.6589     ?     25.4714+-2.2733        ?
   get-by-val-out-of-bounds                           6.6345+-0.0523     !      6.8168+-0.1124            6.6717+-0.2015        ?
   get_callee_monomorphic                             5.1977+-0.1359     !      5.6157+-0.0573     ^      5.3387+-0.0877        ? might be 1.0271x slower
   get_callee_polymorphic                             4.8602+-0.0884     ?      5.0148+-0.0985            4.9111+-0.1170        ? might be 1.0105x slower
   getter-no-activation                               6.7906+-0.0641            6.7151+-0.0453     ?      6.7275+-0.0897        
   getter-richards                                  148.0258+-3.5250     !    169.3017+-4.3334          164.3755+-5.7176        ! definitely 1.1105x slower
   getter                                             7.4442+-0.0572            7.4325+-0.0850            7.4296+-0.0629        
   global-var-const-infer-fire-from-opt               1.2294+-0.0433     ?      1.3107+-0.0806            1.2013+-0.0847          might be 1.0234x faster
   global-var-const-infer                             1.0243+-0.0364     !      1.1145+-0.0087     ^      1.0283+-0.0100        ?
   HashMap-put-get-iterate-keys                      40.1326+-0.7138     ?     41.8599+-1.2027           40.4428+-0.7204        ?
   HashMap-put-get-iterate                           39.8010+-0.3942     !     41.0865+-0.5813           40.4625+-0.6635        ? might be 1.0166x slower
   HashMap-string-put-get-iterate                    44.8446+-0.7066     !     46.1707+-0.4664           45.8397+-0.6010        ? might be 1.0222x slower
   hoist-make-rope                                   14.0753+-1.2504     ?     14.7747+-0.8972           13.7929+-1.3152          might be 1.0205x faster
   hoist-poly-check-structure-effectful-loop   
                                                      7.4896+-0.0621     ?      7.5360+-0.2758     ?      7.5702+-0.1113        ? might be 1.0108x slower
   hoist-poly-check-structure                         5.6362+-0.1124     ?      5.6482+-0.1073     ?      5.6543+-0.0808        ?
   imul-double-only                                  10.1981+-0.8168            9.8805+-0.3423            9.7654+-0.3830          might be 1.0443x faster
   imul-int-only                                     13.0827+-0.1119     ?     13.3298+-0.1702           13.3048+-0.1314        ? might be 1.0170x slower
   imul-mixed                                         9.8456+-0.5843     ?     10.0185+-0.3136            9.6497+-0.7022          might be 1.0203x faster
   in-four-cases                                     28.2120+-0.3360     ?     28.2530+-0.3102     ?     28.3617+-0.4256        ?
   in-one-case-false                                 14.7668+-0.0877     ?     14.7990+-0.2108     ?     14.8452+-0.3040        ?
   in-one-case-true                                  14.7075+-0.1135     ?     14.7787+-0.1291           14.7604+-0.1627        ?
   in-two-cases                                      15.4447+-0.1222     ?     15.5025+-0.0979     ^     15.3342+-0.0655        
   indexed-properties-in-objects                      4.3050+-0.0492            4.3016+-0.0917            4.2992+-0.0556        
   infer-closure-const-then-mov-no-inline             4.7486+-0.0152     !      4.8519+-0.0205     ^      4.7330+-0.0084        
   infer-closure-const-then-mov                      29.1043+-0.0819     ?     29.2180+-0.0412           29.1016+-0.1024        
   infer-closure-const-then-put-to-scope-no-inline   
                                                     17.4561+-0.0222     !     17.6377+-0.0737           17.5462+-0.1088        ?
   infer-closure-const-then-put-to-scope             33.1772+-0.1312     ?     33.2922+-0.1369     ^     33.0945+-0.0282        
   infer-closure-const-then-reenter-no-inline   
                                                     76.9737+-0.0644     ?     77.1346+-0.1070     ?     77.2095+-0.3940        ?
   infer-closure-const-then-reenter                  33.1945+-0.0914     ?     33.1958+-0.1676           33.1919+-0.0850        
   infer-constant-global-property                     5.4030+-0.0555     !      5.5414+-0.0622     ^      5.4041+-0.0653        ?
   infer-constant-property                            3.6915+-0.0667     ?      3.7079+-0.0620            3.6709+-0.0567        
   infer-one-time-closure-ten-vars                   16.3735+-0.1747     ^     15.9333+-0.2396     ?     16.2356+-0.2883        
   infer-one-time-closure-two-vars                   15.6768+-0.1157     ^     15.2970+-0.1931     !     15.8749+-0.1478        ? might be 1.0126x slower
   infer-one-time-closure                            15.5477+-0.3015           15.2528+-0.1789     ?     15.5892+-0.1607        ?
   infer-one-time-deep-closure                       28.1987+-0.1366     ?     28.2817+-0.0952           28.1884+-0.0894        
   inline-arguments-access                            2.2107+-0.0181     !      2.2583+-0.0076     ^      2.2150+-0.0094        ?
   inline-arguments-aliased-access                    2.4686+-0.0084     !      2.5201+-0.0151            2.4905+-0.0457        ?
   inline-arguments-local-escape                     21.6478+-0.1514     ^     19.7438+-0.2543     ?     19.8426+-0.3683        ^ definitely 1.0910x faster
   inline-get-scoped-var                              6.4697+-0.0557     ?      6.4948+-0.1071            6.4896+-0.0904        ?
   inlined-put-by-id-transition                      15.6674+-0.3907     ?     15.9262+-0.3730           15.5127+-0.4936        
   int-or-other-abs-then-get-by-val                   7.9280+-0.0928     ?      7.9707+-0.0671     ?      8.0153+-0.1383        ? might be 1.0110x slower
   int-or-other-abs-zero-then-get-by-val             29.2338+-0.2342           29.1597+-0.2512           29.1448+-0.1256        
   int-or-other-add-then-get-by-val                   6.7465+-0.1016     ?      6.8022+-0.1140            6.7734+-0.0882        ?
   int-or-other-add                                   9.0803+-0.0994     ?      9.2464+-0.0781     ^      9.0397+-0.0948        
   int-or-other-div-then-get-by-val                   5.8866+-0.0165     ?      5.9354+-0.0742            5.9303+-0.0827        ?
   int-or-other-max-then-get-by-val                   7.3757+-0.0882     ?      7.4250+-0.1276     ?      7.4610+-0.3155        ? might be 1.0116x slower
   int-or-other-min-then-get-by-val                   6.0041+-0.0807     ?      6.0204+-0.0412     ?      6.0264+-0.0703        ?
   int-or-other-mod-then-get-by-val                   5.8297+-0.0273     ?      5.8522+-0.0371     ?      5.8634+-0.0747        ?
   int-or-other-mul-then-get-by-val                   5.7387+-0.1060     ?      5.7741+-0.0857            5.7260+-0.0663        
   int-or-other-neg-then-get-by-val                   7.1411+-0.0611     ?      7.1862+-0.0758            7.1336+-0.0609        
   int-or-other-neg-zero-then-get-by-val             29.1423+-0.2511     ?     29.2471+-0.2541           29.0911+-0.1030        
   int-or-other-sub-then-get-by-val                   6.7624+-0.1592     ?      6.8160+-0.0746            6.7995+-0.1017        ?
   int-or-other-sub                                   5.4883+-0.0792     ?      5.4975+-0.0132            5.4795+-0.0571        
   int-overflow-local                                 6.6740+-0.0255            6.6375+-0.0471     ?      6.6930+-0.1061        ?
   Int16Array-alloc-long-lived                       72.8366+-0.1796     !     73.4300+-0.3516           73.4033+-0.7072        ?
   Int16Array-bubble-sort-with-byteLength            44.2252+-0.3810     ?     44.3159+-0.8990           44.2410+-0.2993        ?
   Int16Array-bubble-sort                            43.2913+-0.2191           43.2770+-0.2648           43.2470+-0.1712        
   Int16Array-load-int-mul                            2.0983+-0.0233            2.0823+-0.0089     ?      2.0908+-0.0293        
   Int16Array-to-Int32Array-set                      83.6410+-1.9265     !     87.2607+-0.4922           86.6679+-0.6782        ! definitely 1.0362x slower
   Int32Array-alloc-large                            42.4063+-2.0213     ?     43.6125+-1.6654           43.3363+-1.6536        ? might be 1.0219x slower
   Int32Array-alloc-long-lived                       81.3474+-0.5692     ?     81.3782+-0.6039     ?     81.8761+-1.5436        ?
   Int32Array-alloc                                   4.8204+-0.0163            4.8134+-0.1771     ?      4.8488+-0.0170        ?
   Int32Array-Int8Array-view-alloc                   15.3437+-0.5068     ?     15.4530+-0.3158     ?     15.4755+-0.3605        ?
   int52-spill                                       10.9688+-0.1540     !     11.4725+-0.1448           11.3023+-0.1860        ? might be 1.0304x slower
   Int8Array-alloc-long-lived                        66.5806+-1.3756     ?     66.7178+-1.0131           66.4979+-0.9569        
   Int8Array-load-with-byteLength                     5.5223+-0.0638            5.4716+-0.0769            5.4302+-0.0153        ^ definitely 1.0170x faster
   Int8Array-load                                     5.5142+-0.0679            5.4497+-0.0466            5.4290+-0.0210          might be 1.0157x faster
   integer-divide                                    16.8267+-0.0668     ?     16.8287+-0.0849           16.8143+-0.0600        
   integer-modulo                                     3.2098+-0.4001     ?      3.5832+-0.2317            3.1034+-0.5421          might be 1.0343x faster
   large-int-captured                                10.8741+-0.1206     ?     11.1955+-0.2817           11.0948+-0.1936        ? might be 1.0203x slower
   large-int-neg                                     24.1534+-0.2364           24.0670+-0.2689           24.0406+-0.2548        
   large-int                                         21.5152+-0.2543           21.4630+-0.2449           21.3324+-0.3220        
   logical-not                                        6.8038+-0.1095     ?      7.0225+-0.2341            6.9162+-0.3242        ? might be 1.0165x slower
   lots-of-fields                                    16.8514+-0.1328     ?     16.9259+-0.1487     ?     16.9386+-0.1195        ?
   make-indexed-storage                               4.4696+-0.2672     ?      4.5696+-0.1397            4.5189+-0.1188        ? might be 1.0110x slower
   make-rope-cse                                      6.3208+-0.0878            6.2726+-0.0581     ?      6.3011+-0.0454        
   marsaglia-larger-ints                             59.4669+-0.2252     ?     59.7473+-0.4511           59.7016+-0.2230        ?
   marsaglia-osr-entry                               31.1518+-0.2327     ?     31.1899+-0.4252           31.1571+-0.2720        ?
   max-boolean                                        3.7424+-0.0659     ?      3.7453+-0.0219     ?      3.7590+-0.0655        ?
   method-on-number                                  27.2869+-0.1527     !     30.3867+-0.4170     ^     27.2798+-0.1138        
   min-boolean                                        3.6280+-0.0161     ?      3.7036+-0.0647            3.7012+-0.0686        ? might be 1.0202x slower
   minus-boolean-double                               4.7714+-0.0055     ?      4.7970+-0.0412            4.7940+-0.0537        ?
   minus-boolean                                      3.6471+-0.0155     ^      3.6090+-0.0122     ?      3.6173+-0.0135        ^ definitely 1.0083x faster
   misc-strict-eq                                    56.1563+-0.9237           55.7197+-1.0024     ?     55.9813+-0.5035        
   mod-boolean-double                                13.8382+-0.1310           13.7159+-0.0829     ?     13.7500+-0.1604        
   mod-boolean                                       10.5156+-0.0858     ?     10.5781+-0.1118     ?     10.5983+-0.1567        ?
   mul-boolean-double                                 5.6134+-0.0773     ?      5.6309+-0.1560            5.6069+-0.0146        
   mul-boolean                                        4.0136+-0.1679            3.9769+-0.0927            3.9692+-0.0614          might be 1.0112x faster
   neg-boolean                                        4.8571+-0.0347     ?      4.9021+-0.0504            4.8773+-0.0513        ?
   negative-zero-divide                               0.4510+-0.0447            0.4277+-0.0041            0.4274+-0.0027          might be 1.0551x faster
   negative-zero-modulo                               0.4309+-0.0187            0.4308+-0.0036            0.4290+-0.0040        
   negative-zero-negate                               0.3936+-0.0016     !      0.4010+-0.0048            0.3982+-0.0036        ? might be 1.0117x slower
   nested-function-parsing                           48.7378+-0.9766           48.6210+-0.0906     ^     46.7253+-0.4019        ^ definitely 1.0431x faster
   new-array-buffer-dead                              4.0292+-0.0791     ?      4.0744+-0.0613     ?      4.1156+-0.1221        ? might be 1.0215x slower
   new-array-buffer-push                             10.6392+-0.0161     !     10.8348+-0.1563           10.6856+-0.1641        ?
   new-array-dead                                    14.5004+-0.2855     ?     14.7206+-0.3967           14.3301+-0.1766          might be 1.0119x faster
   new-array-push                                     7.5645+-0.0540     !      7.8031+-0.1011     ^      7.5240+-0.1273        
   number-test                                        4.6643+-0.0467     ?      4.6887+-0.0497     ?      4.7001+-0.0722        ?
   object-closure-call                                9.0290+-0.0556     !      9.3341+-0.0923            9.2085+-0.2053        ? might be 1.0199x slower
   object-test                                        5.2507+-0.1676     ^      4.9913+-0.0403     ?      5.0469+-0.0892          might be 1.0404x faster
   plus-boolean-arith                                 3.6873+-0.0245     ?      3.7323+-0.0463            3.7129+-0.0140        ?
   plus-boolean-double                                4.8396+-0.0526            4.8219+-0.0462     ?      4.8792+-0.1105        ?
   plus-boolean                                       3.5623+-0.0338            3.5607+-0.0164            3.5540+-0.0129        
   poly-chain-access-different-prototypes-simple   
                                                      4.4331+-0.0672     ?      4.4724+-0.0549            4.4303+-0.0521        
   poly-chain-access-different-prototypes             3.6568+-0.0395     ?      3.7247+-0.1800            3.6627+-0.0069        ?
   poly-chain-access-simpler                          4.4117+-0.0522     ?      4.4365+-0.0640            4.3964+-0.0113        
   poly-chain-access                                  2.9269+-0.2764     ?      2.9437+-0.2981     !      3.6377+-0.0079        ! definitely 1.2429x slower
   poly-stricteq                                     83.0138+-1.8202     !     88.5053+-1.9320     ^     82.4360+-0.6511        
   polymorphic-array-call                             2.1963+-0.0534     !      2.3966+-0.0438     ^      2.2010+-0.0421        ?
   polymorphic-get-by-id                              4.7638+-0.0539     ?      4.7682+-0.0473     ?      4.7705+-0.0400        ?
   polymorphic-put-by-id                             75.7460+-23.7257    ?     81.9525+-20.5136          72.9596+-26.2385         might be 1.0382x faster
   polymorphic-structure                             24.6382+-0.1202     !     25.2109+-0.1374           25.1830+-1.2349        ? might be 1.0221x slower
   polyvariant-monomorphic-get-by-id                 13.3485+-0.1782     ?     13.4566+-0.1177           13.3931+-0.2269        ?
   proto-getter-access                               13.7260+-0.2868           13.6348+-0.1569     ?     13.6823+-0.1631        
   put-by-id-replace-and-transition                  12.6609+-0.1160     ?     12.7542+-0.1722           12.6941+-0.2183        ?
   put-by-id-slightly-polymorphic                     4.0091+-0.0442     ?      4.0288+-0.0296     ?      4.0305+-0.0438        ?
   put-by-id                                         20.8750+-0.1850     ?     21.4504+-0.5532           21.1238+-0.4610        ? might be 1.0119x slower
   put-by-val-direct                                  0.7765+-0.0035     ?      0.7819+-0.0023            0.7797+-0.0034        ?
   put-by-val-large-index-blank-indexing-type   
                                                     10.6413+-0.1263     ?     10.8861+-0.1764           10.7638+-0.0653        ? might be 1.0115x slower
   put-by-val-machine-int                             4.4039+-0.1265     ?      4.6542+-0.1816            4.3188+-0.4648          might be 1.0197x faster
   rare-osr-exit-on-local                            21.5195+-0.2736           21.4345+-0.2497     ?     21.4667+-0.1237        
   register-pressure-from-osr                        31.5215+-0.0719     ?     31.5689+-0.0860           31.5201+-0.1745        
   setter                                             7.4683+-0.0492            7.4510+-0.1114     ?      7.4518+-0.0801        
   simple-activation-demo                            35.3689+-0.3692     ?     35.6153+-0.1176     ^     35.0293+-0.2585        
   simple-getter-access                              20.0575+-0.2354     ?     20.1909+-0.3373           19.9826+-0.1658        
   sin-boolean                                       23.8727+-0.9908     ?     23.8894+-0.6502           23.5522+-0.3004          might be 1.0136x faster
   slow-array-profile-convergence                     4.4796+-0.1670     ?      4.5494+-0.1269            4.4843+-0.2241        ?
   slow-convergence                                   4.8428+-0.0512     ?      4.8766+-0.0355            4.8143+-0.0415        
   sparse-conditional                                 1.4931+-0.0121     !      1.5376+-0.0149     ^      1.4909+-0.0163        
   splice-to-remove                                  26.9743+-0.2990     ?     27.5542+-0.3146     ?     27.6664+-0.8291        ? might be 1.0257x slower
   string-char-code-at                               23.3577+-0.0801     ?     23.4648+-0.1069           23.3784+-0.1480        ?
   string-concat-object                               3.2101+-0.0399     !      3.3333+-0.0257     ^      3.1999+-0.0086        
   string-concat-pair-object                          3.0898+-0.0870     !      3.2934+-0.0384     ^      3.1257+-0.0419        ? might be 1.0116x slower
   string-concat-pair-simple                         18.3832+-0.2159     ?     18.8006+-0.3286           18.7361+-0.1357        ! definitely 1.0192x slower
   string-concat-simple                              18.4762+-0.3861     ?     18.6572+-0.1582     ?     18.7698+-0.3613        ? might be 1.0159x slower
   string-cons-repeat                                11.9176+-0.0776     !     12.1306+-0.0707     ^     11.9970+-0.0411        ?
   string-cons-tower                                 11.0151+-0.3434     ?     11.1670+-0.0449     ^     11.0053+-0.0612        
   string-equality                                   26.2323+-0.1525     ?     26.3252+-0.4308           26.1849+-0.2291        
   string-get-by-val-big-char                        13.7052+-0.2454     !     14.1177+-0.1660           14.0606+-0.3665        ? might be 1.0259x slower
   string-get-by-val-out-of-bounds-insane             5.9594+-0.1215     ?      6.0492+-0.0513     ^      5.9201+-0.0449        
   string-get-by-val-out-of-bounds                    7.1322+-0.1658            7.1187+-0.1002            7.0802+-0.1570        
   string-get-by-val                                  5.5895+-0.0758            5.5475+-0.0139            5.5433+-0.0210        
   string-hash                                        2.9136+-0.0587     ?      2.9716+-0.0227     ^      2.9225+-0.0061        ?
   string-long-ident-equality                        21.2376+-0.0928     ?     21.3842+-0.1900           21.2520+-0.0897        ?
   string-repeat-arith                               49.6843+-0.6231     ?     52.4249+-5.0590           49.4865+-0.2965        
   string-sub                                        96.8472+-1.3413     !    101.5924+-1.3538     ^     94.6843+-0.8454          might be 1.0228x faster
   string-test                                        4.6760+-0.0497     ?      4.6969+-0.0507     ?      4.7067+-0.0736        ?
   string-var-equality                               52.0219+-0.0636     ?     52.0298+-0.1372     ?     52.0672+-0.1870        ?
   structure-hoist-over-transitions                   3.8951+-0.0793     ?      3.9662+-0.0475            3.8890+-0.0839        
   substring-concat-weird                            63.3658+-1.3428     ?     63.7222+-0.5520           63.2126+-0.3641        
   substring-concat                                  66.1567+-0.4491     ?     66.7657+-0.2659           66.7515+-0.7620        ?
   substring                                         74.1842+-0.3242     ?     75.0788+-1.1467           74.8821+-0.5166        ?
   switch-char-constant                               3.6839+-0.0261     ?      3.7617+-0.0958            3.6917+-0.0275        ?
   switch-char                                        9.2883+-0.1206     ?      9.3112+-0.0542     ?      9.3287+-0.1672        ?
   switch-constant                                   11.4915+-0.1947     ?     11.6740+-0.1444           11.6553+-0.1194        ? might be 1.0143x slower
   switch-string-basic-big-var                       25.2930+-1.7575     ?     28.4455+-1.4275     ^     25.1061+-1.7117        
   switch-string-basic-big                           35.8927+-0.9944           33.6920+-3.2047     ?     34.2510+-2.4826          might be 1.0479x faster
   switch-string-basic-var                           32.7207+-1.3018           32.1378+-0.6930           31.6393+-1.7154          might be 1.0342x faster
   switch-string-basic                               30.4102+-2.2741     ?     31.8029+-2.0485           31.2834+-2.3908        ? might be 1.0287x slower
   switch-string-big-length-tower-var                29.8733+-0.1580     ?     30.0264+-0.1825           29.9653+-0.2019        ?
   switch-string-length-tower-var                    24.0283+-0.1080           23.9895+-0.1379           23.9379+-0.1827        
   switch-string-length-tower                        17.3883+-0.0926     ?     17.4363+-0.1308           17.3367+-0.0240        
   switch-string-short                               18.2707+-2.2093           17.4141+-0.0504     ?     17.4950+-0.1288          might be 1.0443x faster
   switch                                            15.9101+-0.1820           15.8076+-0.2261     ?     15.8655+-0.1068        
   tear-off-arguments-simple                          2.3318+-0.0110     !      2.5035+-0.0435     ^      2.3370+-0.0075        ?
   tear-off-arguments                                 3.9292+-0.0630     !      4.0226+-0.0237     ^      3.8708+-0.0525          might be 1.0151x faster
   temporal-structure                                20.3433+-0.0847     ^     20.1624+-0.0896     ?     20.2465+-0.1330        
   to-int32-boolean                                  24.5740+-0.0572     ?     24.6211+-0.0874     ?     24.6845+-0.1985        ?
   undefined-test                                     4.8302+-0.0227     ?      4.8983+-0.0773            4.8250+-0.0191        
   unprofiled-licm                                   31.4245+-0.2250           31.2332+-0.4604     ?     31.3657+-0.1891        
   weird-inlining-const-prop                          2.6377+-0.0304     !      2.8759+-0.0455            2.7970+-0.1022        ! definitely 1.0604x slower

   &lt;arithmetic&gt;                                      21.8187+-0.1167     !     22.3675+-0.0747     ?     22.5325+-0.1116        ! definitely 1.0327x slower
   &lt;geometric&gt; *                                     11.0407+-0.0322     !     11.3136+-0.0194     ^     11.1981+-0.0313        ! definitely 1.0143x slower
   &lt;harmonic&gt;                                         5.4796+-0.0241     !      5.5966+-0.0067     ^      5.5079+-0.0167        ? might be 1.0052x slower

                                                        TipOfTree               OldPolyInline               PolyInline           PolyInline v. TipOfTree  
AsmBench:
   bigfib.cpp                                       801.0834+-4.3416          798.4468+-5.1196     ?    801.2347+-7.4501        ?
   cray.c                                           798.4033+-6.0801          793.7072+-1.7674     ?    793.9558+-5.1047        
   dry.c                                            777.6230+-11.9969    ?    784.8244+-8.6547     ^    768.0978+-0.5798          might be 1.0124x faster
   FloatMM.c                                       1148.4903+-0.4827         1147.9810+-0.7802     ?   1151.7949+-8.2028        ?
   gcc-loops.cpp                                   7572.2552+-36.6993        7564.2115+-7.4664         7554.8780+-17.8145       
   n-body.c                                        2009.4479+-2.3292     ?   2011.8420+-11.3519        2006.8976+-1.0215        
   Quicksort.c                                      703.5504+-18.4446         692.0469+-6.3676     ?    692.1325+-9.9601          might be 1.0165x faster
   stepanov_container.cpp                          5832.1202+-10.2847    ?   5845.3951+-7.2404         5833.5895+-15.5882       ?
   Towers.c                                         491.0273+-0.6002     ^    482.5228+-0.3513     !    484.4304+-1.3997        ^ definitely 1.0136x faster

   &lt;arithmetic&gt;                                    2237.1112+-3.4618         2235.6642+-3.3377         2231.8901+-3.7253          might be 1.0023x faster
   &lt;geometric&gt; *                                   1374.4525+-3.6213         1369.6198+-3.4950         1367.1694+-3.7232          might be 1.0053x faster
   &lt;harmonic&gt;                                      1009.2516+-3.9546         1002.7209+-3.0170         1001.2034+-3.6259        ^ definitely 1.0080x faster

                                                        TipOfTree               OldPolyInline               PolyInline           PolyInline v. TipOfTree  
All benchmarks:
   &lt;arithmetic&gt;                                     154.8285+-0.2870     !    156.2946+-0.2997     ^    155.7217+-0.2086        ! definitely 1.0058x slower
   &lt;geometric&gt;                                       17.9372+-0.0425     !     18.3193+-0.0215     ^     18.1331+-0.0367        ! definitely 1.0109x slower
   &lt;harmonic&gt;                                         4.9141+-0.0227     ^      4.8711+-0.0067     ^      4.8210+-0.0182        ^ definitely 1.0193x faster

                                                        TipOfTree               OldPolyInline               PolyInline           PolyInline v. TipOfTree  
Geomean of preferred means:
   &lt;scaled-result&gt;                                   79.4350+-0.1008     !     80.8472+-0.1551     ^     80.1155+-0.1185        ! definitely 1.0086x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030947</commentid>
    <comment_count>22</comment_count>
      <attachid>237040</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-23 21:13:31 -0700</bug_when>
    <thetext>Created attachment 237040
the wrong approach, for real

For real, this is the approach that had used GCD.  It&apos;s not as good as a purely serial approach.  I&apos;m still going to investigate a concurrent approach, but without using GCD.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031005</commentid>
    <comment_count>23</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-24 17:32:58 -0700</bug_when>
    <thetext>OK - it&apos;s starting to look like I&apos;ve got something that works and that is a speed-up on everything.  I&apos;ll upload shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031008</commentid>
    <comment_count>24</comment_count>
      <attachid>237053</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-24 18:00:22 -0700</bug_when>
    <thetext>Created attachment 237053
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031009</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-24 18:02:20 -0700</bug_when>
    <thetext>Attachment 237053 did not pass style-queue:


ERROR: Source/WTF/wtf/OwnPtr.h:83:  The parameter name &quot;args&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/CallEdgeProfile.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/bytecode/CallEdgeProfile.cpp:70:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/bytecode/CallEdgeProfile.cpp:132:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Spectrum.h:114:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGLazyJSValue.h:99:  The parameter name &quot;kind&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/CallEdge.h:38:  The parameter name &quot;count&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/CallVariant.h:142:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGNode.h:182:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1073:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 10 in 73 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>1031018</commentid>
    <comment_count>26</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-24 20:22:04 -0700</bug_when>
    <thetext>Performance reports on two different machines.  Both show net speed-up if you consider the benchmarks that we care about the most.


Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, and AsmBench on dethklok (MacBookPro9,1).

VMs tested:
&quot;NoEdge&quot; at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r172859)
&quot;OriginalEdge&quot; at /Volumes/Data/pizlo/quartary/OpenSource/WebKitBuild/Release/jsc (r172859)

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.

                                                          NoEdge                 OriginalEdge                                   
SunSpider:
   3d-cube                                            4.8473+-0.0947            4.7944+-0.1150          might be 1.0111x faster
   3d-morph                                           5.8644+-0.1277     ?      5.9585+-0.1790        ? might be 1.0160x slower
   3d-raytrace                                        6.1573+-0.1062     ?      6.3791+-0.2963        ? might be 1.0360x slower
   access-binary-trees                                1.9550+-0.2190            1.9016+-0.2246          might be 1.0281x faster
   access-fannkuch                                    5.6380+-0.0583     ?      5.9061+-0.5882        ? might be 1.0476x slower
   access-nbody                                       2.7178+-0.0331     ?      2.7410+-0.0444        ?
   access-nsieve                                      3.6281+-0.2108            3.4740+-0.0909          might be 1.0444x faster
   bitops-3bit-bits-in-byte                           1.6058+-0.1390     ^      1.4386+-0.0210        ^ definitely 1.1162x faster
   bitops-bits-in-byte                                3.3300+-0.0833     ?      3.3589+-0.0783        ?
   bitops-bitwise-and                                 2.0749+-0.0660     ?      2.1060+-0.0848        ? might be 1.0150x slower
   bitops-nsieve-bits                                 3.6661+-0.0843            3.5808+-0.0712          might be 1.0238x faster
   controlflow-recursive                              2.0715+-0.3358            2.0191+-0.1495          might be 1.0260x faster
   crypto-aes                                         3.9376+-0.0707            3.9072+-0.0963        
   crypto-md5                                         2.2342+-0.0829     ?      2.2422+-0.0560        ?
   crypto-sha1                                        2.5750+-0.2035            2.5121+-0.2493          might be 1.0250x faster
   date-format-tofte                                  9.0503+-0.3890            8.8080+-0.2753          might be 1.0275x faster
   date-format-xparb                                  5.2533+-0.2041     ?      5.3968+-0.1412        ? might be 1.0273x slower
   math-cordic                                        3.1400+-0.3674            2.9217+-0.0946          might be 1.0747x faster
   math-partial-sums                                  5.0568+-0.0919            5.0260+-0.1388        
   math-spectral-norm                                 1.9373+-0.2209            1.8276+-0.1143          might be 1.0600x faster
   regexp-dna                                         8.0685+-1.5339            7.6910+-1.2203          might be 1.0491x faster
   string-base64                                      4.4906+-0.7532            4.4093+-0.7236          might be 1.0184x faster
   string-fasta                                       6.7231+-0.6331            6.5398+-0.2697          might be 1.0280x faster
   string-tagcloud                                    9.7680+-0.2805            9.4676+-0.1879          might be 1.0317x faster
   string-unpack-code                                21.3592+-1.8620           20.8679+-0.3843          might be 1.0235x faster
   string-validate-input                              4.7307+-0.2053            4.7252+-0.0773        

   &lt;arithmetic&gt; *                                     5.0723+-0.1102            5.0000+-0.0392          might be 1.0145x faster
   &lt;geometric&gt;                                        4.1539+-0.0611            4.0900+-0.0443          might be 1.0156x faster
   &lt;harmonic&gt;                                         3.5392+-0.0745            3.4643+-0.0461          might be 1.0216x faster

                                                          NoEdge                 OriginalEdge                                   
LongSpider:
   3d-cube                                          842.5684+-5.4784     ^    819.3873+-6.3395        ^ definitely 1.0283x faster
   3d-morph                                        1520.5031+-4.7924         1517.3269+-3.9255        
   3d-raytrace                                      785.0220+-6.0387     ?    789.6619+-11.3813       ?
   access-binary-trees                             1047.9515+-7.4059         1044.2719+-6.1026        
   access-fannkuch                                  318.2774+-5.7856          317.3702+-6.1373        
   access-nbody                                     629.6464+-1.8397     ?    632.7269+-5.5777        ?
   access-nsieve                                    974.7134+-5.2599          969.1644+-12.6602       
   bitops-3bit-bits-in-byte                          45.2803+-1.3536           45.1784+-1.8556        
   bitops-bits-in-byte                               93.8600+-1.3513     !    103.3273+-3.5802        ! definitely 1.1009x slower
   bitops-nsieve-bits                               716.7527+-2.4818     ?    724.6387+-7.1358        ? might be 1.0110x slower
   controlflow-recursive                            500.6636+-8.6350     ^    476.1738+-4.0576        ^ definitely 1.0514x faster
   crypto-aes                                       721.0531+-9.2317          705.4679+-7.5017          might be 1.0221x faster
   crypto-md5                                       613.8013+-6.6029     ?    629.8641+-14.9234       ? might be 1.0262x slower
   crypto-sha1                                      713.0011+-3.0492     !    724.1548+-5.2631        ! definitely 1.0156x slower
   date-format-tofte                                782.9290+-20.6620         760.5611+-17.1576         might be 1.0294x faster
   date-format-xparb                                828.8994+-21.7037    ?    839.8141+-19.0623       ? might be 1.0132x slower
   math-cordic                                      595.7380+-1.9959     ?    596.2290+-1.9214        ?
   math-partial-sums                                546.2128+-1.5339     ?    546.9527+-1.8089        ?
   math-spectral-norm                               565.5413+-2.4491     ?    565.5567+-2.8546        ?
   string-base64                                    382.9948+-4.3472          381.9809+-7.3070        
   string-fasta                                     435.2933+-3.1558     ?    442.9768+-48.6434       ? might be 1.0177x slower
   string-tagcloud                                  219.8026+-3.3361     ?    221.5259+-2.5344        ?

   &lt;arithmetic&gt;                                     630.9321+-1.8274          629.7414+-1.6952          might be 1.0019x faster
   &lt;geometric&gt; *                                    513.7445+-0.5955     ?    514.8421+-1.8951        ? might be 1.0021x slower
   &lt;harmonic&gt;                                       325.3776+-3.0620     ?    329.5169+-4.1099        ? might be 1.0127x slower

                                                          NoEdge                 OriginalEdge                                   
V8Spider:
   crypto                                            59.1289+-6.1527           54.1401+-2.9165          might be 1.0921x faster
   deltablue                                         84.7660+-2.9282     !    101.2773+-2.8751        ! definitely 1.1948x slower
   earley-boyer                                      44.1268+-2.5555           43.0491+-1.0239          might be 1.0250x faster
   raytrace                                          32.9248+-2.1110     ?     34.3264+-2.6881        ? might be 1.0426x slower
   regexp                                            64.6245+-2.8286           63.6263+-2.0760          might be 1.0157x faster
   richards                                          75.7806+-1.6086     !     86.0550+-3.3720        ! definitely 1.1356x slower
   splay                                             33.5804+-0.6853           33.0387+-0.9394          might be 1.0164x faster

   &lt;arithmetic&gt;                                      56.4189+-0.8175     !     59.3590+-1.0394        ! definitely 1.0521x slower
   &lt;geometric&gt; *                                     53.0864+-0.7444     !     54.6647+-0.6365        ! definitely 1.0297x slower
   &lt;harmonic&gt;                                        49.8206+-0.7352     ?     50.5271+-0.4164        ? might be 1.0142x slower

                                                          NoEdge                 OriginalEdge                                   
Octane:
   encrypt                                           0.24180+-0.00272    ^     0.23444+-0.00114       ^ definitely 1.0314x faster
   decrypt                                           4.32135+-0.02635    ^     4.11357+-0.02466       ^ definitely 1.0505x faster
   deltablue                                x2       0.27267+-0.00255    ^     0.21119+-0.00229       ^ definitely 1.2911x faster
   earley                                            0.73779+-0.00525    !     0.74956+-0.00641       ! definitely 1.0160x slower
   boyer                                             5.33287+-0.02516          5.32994+-0.05543       
   navier-stokes                            x2       5.16838+-0.04323    ?     5.18000+-0.01738       ?
   raytrace                                 x2       1.62509+-0.00884    ^     1.59093+-0.01447       ^ definitely 1.0215x faster
   richards                                 x2       0.14222+-0.00146    ^     0.13222+-0.00166       ^ definitely 1.0756x faster
   splay                                    x2       0.39290+-0.00179    ^     0.38686+-0.00338       ^ definitely 1.0156x faster
   regexp                                   x2      35.56106+-0.35218    ?    35.56423+-0.24496       ?
   pdfjs                                    x2      52.18572+-0.19361    ?    52.92099+-1.53004       ? might be 1.0141x slower
   mandreel                                 x2      52.53030+-0.71364    ?    52.55126+-0.57848       ?
   gbemu                                    x2      40.41020+-0.39611    !    41.92264+-0.14305       ! definitely 1.0374x slower
   closure                                           0.57280+-0.00358          0.56464+-0.00514         might be 1.0144x faster
   jquery                                            7.16769+-0.03484    ^     7.03735+-0.02678       ^ definitely 1.0185x faster
   box2d                                    x2      13.77945+-0.12152    ?    13.88613+-0.17012       ?
   zlib                                     x2     470.55471+-21.01013   ?   478.68171+-18.73276      ? might be 1.0173x slower
   typescript                               x2     856.15588+-9.00129    ?   874.67851+-11.91900      ? might be 1.0216x slower

   &lt;arithmetic&gt;                                    102.53105+-1.23219    ?   104.44810+-1.81418       ? might be 1.0187x slower
   &lt;geometric&gt; *                                     7.42466+-0.02169    ^     7.27067+-0.03278       ^ definitely 1.0212x faster
   &lt;harmonic&gt;                                        0.82790+-0.00254    ^     0.75594+-0.00342       ^ definitely 1.0952x faster

                                                          NoEdge                 OriginalEdge                                   
Kraken:
   ai-astar                                          268.204+-1.402      ?     269.264+-2.056         ?
   audio-beat-detection                              102.855+-1.243            102.425+-0.615         
   audio-dft                                         158.867+-4.006            158.451+-2.367         
   audio-fft                                          76.492+-0.747      ?      76.632+-1.659         ?
   audio-oscillator                                  243.841+-2.223      ^     235.773+-2.250         ^ definitely 1.0342x faster
   imaging-darkroom                                  179.972+-1.761      ?     181.559+-5.048         ?
   imaging-desaturate                                 61.440+-1.387      ?      61.745+-1.813         ?
   imaging-gaussian-blur                             107.652+-1.326            105.845+-0.845           might be 1.0171x faster
   json-parse-financial                               44.688+-1.196      ?      46.611+-1.655         ? might be 1.0430x slower
   json-stringify-tinderbox                           63.690+-2.268      ?      63.881+-2.049         ?
   stanford-crypto-aes                                58.620+-0.595             58.586+-0.835         
   stanford-crypto-ccm                                54.828+-6.911      ?      56.654+-5.999         ? might be 1.0333x slower
   stanford-crypto-pbkdf2                            172.781+-2.815            170.348+-2.326           might be 1.0143x faster
   stanford-crypto-sha256-iterative                   54.186+-1.816      ?      54.745+-1.933         ? might be 1.0103x slower

   &lt;arithmetic&gt; *                                    117.723+-0.601            117.323+-0.487           might be 1.0034x faster
   &lt;geometric&gt;                                        98.651+-0.512      ?      98.910+-0.587         ? might be 1.0026x slower
   &lt;harmonic&gt;                                         84.371+-0.650      ?      85.151+-0.849         ? might be 1.0092x slower

                                                          NoEdge                 OriginalEdge                                   
JSRegress:
   adapt-to-double-divide                            15.9111+-0.3794           15.4702+-0.1769          might be 1.0285x faster
   aliased-arguments-getbyval                         0.8621+-0.1134            0.7594+-0.0111          might be 1.1352x faster
   allocate-big-object                                2.2462+-0.1378            2.1949+-0.0361          might be 1.0234x faster
   arity-mismatch-inlining                            0.7242+-0.0304     ?      0.7278+-0.0240        ?
   array-access-polymorphic-structure                 6.7087+-0.8464     ?      7.0485+-1.2418        ? might be 1.0507x slower
   array-nonarray-polymorhpic-access                 35.4830+-0.4827           34.9902+-0.5444          might be 1.0141x faster
   array-prototype-every                             75.6961+-3.9991           73.9722+-1.7908          might be 1.0233x faster
   array-prototype-forEach                           74.0184+-1.0229     ?     74.5172+-2.0256        ?
   array-prototype-map                               88.4963+-1.6784     ?     88.6663+-1.2885        ?
   array-prototype-some                              75.1981+-3.4914           74.1090+-1.4905          might be 1.0147x faster
   array-splice-contiguous                           39.9036+-1.5865     ?     41.1190+-2.2504        ? might be 1.0305x slower
   array-with-double-add                              4.1946+-0.0772     ?      4.2574+-0.0634        ? might be 1.0150x slower
   array-with-double-increment                        3.1049+-0.1840     ?      3.1573+-0.1417        ? might be 1.0169x slower
   array-with-double-mul-add                          4.7375+-0.0480            4.6980+-0.0617        
   array-with-double-sum                              3.1662+-0.1059     ?      3.2035+-0.1582        ? might be 1.0118x slower
   array-with-int32-add-sub                           7.1881+-0.1429            7.1535+-0.0247        
   array-with-int32-or-double-sum                     3.2732+-0.0985            3.1968+-0.0909          might be 1.0239x faster
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     69.5790+-3.5262     ?     70.1785+-3.3918        ?
   ArrayBuffer-DataView-alloc-long-lived             20.9268+-2.2182     ?     21.2425+-1.8890        ? might be 1.0151x slower
   ArrayBuffer-Int32Array-byteOffset                  3.2653+-0.0377     ?      3.3121+-0.0566        ? might be 1.0143x slower
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     69.8014+-2.8434     ?     69.8719+-1.4509        ?
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     31.8586+-1.9146           30.6895+-0.5594          might be 1.0381x faster
   ArrayBuffer-Int8Array-alloc-long-lived            18.7221+-0.2388     ?     19.5688+-1.5233        ? might be 1.0452x slower
   ArrayBuffer-Int8Array-alloc                       18.3263+-2.1856           17.9643+-1.8646          might be 1.0202x faster
   asmjs_bool_bug                                     7.8994+-1.3570            7.2526+-0.1980          might be 1.0892x faster
   assign-custom-setter-polymorphic                   2.9304+-0.0292     ?      3.0886+-0.1924        ? might be 1.0540x slower
   assign-custom-setter                               4.1167+-0.0826     ?      4.2771+-0.0887        ? might be 1.0390x slower
   basic-set                                          9.5746+-0.2563     ?      9.9709+-0.7458        ? might be 1.0414x slower
   big-int-mul                                        3.7051+-0.2071     ?      3.9315+-0.0989        ? might be 1.0611x slower
   boolean-test                                       2.9324+-0.1512            2.8737+-0.1060          might be 1.0204x faster
   branch-fold                                        3.4703+-0.0202     ?      3.5655+-0.0910        ? might be 1.0274x slower
   by-val-generic                                     8.1034+-0.3149            7.9562+-0.2035          might be 1.0185x faster
   call-spread-apply                                 15.8373+-1.5391     ^     14.0627+-0.1449        ^ definitely 1.1262x faster
   call-spread-call                                   6.5248+-1.0521            5.9438+-0.1489          might be 1.0978x faster
   captured-assignments                               0.4024+-0.0192            0.3993+-0.0171        
   cast-int-to-double                                 5.2120+-0.4517            5.0604+-0.0951          might be 1.0299x faster
   cell-argument                                      7.6795+-0.1549     ?      7.6952+-0.2505        ?
   cfg-simplify                                       2.7973+-0.0675            2.7950+-0.0832        
   chain-getter-access                                8.5792+-0.2557            8.4199+-0.1241          might be 1.0189x faster
   cmpeq-obj-to-obj-other                             8.7150+-0.6359     ?      8.9523+-0.3819        ? might be 1.0272x slower
   constant-test                                      4.7135+-0.0420            4.6895+-0.0396        
   DataView-custom-properties                        72.8916+-1.9729     ?     72.9229+-2.4997        ?
   delay-tear-off-arguments-strictmode                2.4387+-0.0392     ?      2.5474+-0.2668        ? might be 1.0446x slower
   destructuring-arguments                            5.0554+-0.2161     ?      5.0835+-0.1511        ?
   destructuring-swap                                 4.7841+-0.0539     ?      4.9194+-0.2878        ? might be 1.0283x slower
   direct-arguments-getbyval                          0.8061+-0.1090            0.7881+-0.0413          might be 1.0228x faster
   double-get-by-val-out-of-bounds                    4.5018+-0.1201            4.4972+-0.1434        
   double-pollution-getbyval                          8.6908+-0.1331     ?      8.7819+-0.1349        ? might be 1.0105x slower
   double-pollution-putbyoffset                       4.1869+-0.3003            4.1423+-0.4187          might be 1.0108x faster
   double-to-int32-typed-array-no-inline              2.1236+-0.1380            2.0773+-0.1395          might be 1.0223x faster
   double-to-int32-typed-array                        1.6457+-0.0163     ?      1.7067+-0.1082        ? might be 1.0371x slower
   double-to-uint32-typed-array-no-inline             2.2726+-0.2554     ?      2.4224+-0.2973        ? might be 1.0659x slower
   double-to-uint32-typed-array                       1.8773+-0.1858            1.8276+-0.0998          might be 1.0272x faster
   empty-string-plus-int                              6.8245+-0.1863     ?      6.9182+-0.3005        ? might be 1.0137x slower
   emscripten-cube2hash                              37.1687+-1.7054           37.0793+-1.6314        
   external-arguments-getbyval                        1.3024+-0.0599            1.2797+-0.0251          might be 1.0177x faster
   external-arguments-putbyval                        1.9347+-0.0804     ?      1.9585+-0.1900        ? might be 1.0123x slower
   fixed-typed-array-storage-var-index                1.1995+-0.2246            1.1874+-0.0808          might be 1.0102x faster
   fixed-typed-array-storage                          0.8004+-0.0254     ?      0.8008+-0.0396        ?
   Float32Array-matrix-mult                           4.2402+-0.1553            4.1408+-0.0512          might be 1.0240x faster
   Float32Array-to-Float64Array-set                  53.7261+-0.4866           51.1899+-2.0759          might be 1.0495x faster
   Float64Array-alloc-long-lived                     65.4648+-1.4425           65.1720+-1.2079        
   Float64Array-to-Int16Array-set                    68.6312+-2.4850     !     77.6664+-2.8946        ! definitely 1.1316x slower
   fold-double-to-int                                15.2721+-1.2254     ?     15.3154+-1.3821        ?
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     13.7276+-0.1743     !     16.7234+-0.6794        ! definitely 1.2182x slower
   fold-get-by-id-to-multi-get-by-offset             13.0972+-0.3694     !     15.3417+-0.3027        ! definitely 1.1714x slower
   fold-multi-get-by-offset-to-get-by-offset   
                                                      9.9243+-1.3441     !     12.9417+-0.9058        ! definitely 1.3040x slower
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                     10.7543+-0.9525     !     12.9153+-0.5390        ! definitely 1.2009x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                     11.1685+-1.7139     ?     13.3257+-1.3338        ? might be 1.1932x slower
   fold-multi-put-by-offset-to-put-by-offset   
                                                      9.9705+-1.3328     ?     11.3238+-0.6811        ? might be 1.1357x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     13.0063+-1.5383     ?     15.3808+-1.1142        ? might be 1.1826x slower
   fold-put-by-id-to-multi-put-by-offset             14.5850+-1.4851     !     17.0713+-0.5377        ! definitely 1.1705x slower
   fold-put-structure                                 9.0202+-1.4336     ?     11.9835+-1.5647        ? might be 1.3285x slower
   for-of-iterate-array-entries                       6.5238+-0.6746     ^      5.4028+-0.1032        ^ definitely 1.2075x faster
   for-of-iterate-array-keys                          2.6152+-0.5891     ?      2.7003+-0.1956        ? might be 1.0325x slower
   for-of-iterate-array-values                        2.1786+-0.0832     ?      2.2372+-0.1414        ? might be 1.0269x slower
   fround                                            16.8982+-0.6107     ?     16.9528+-0.6850        ?
   ftl-library-inlining-dataview                     77.3541+-3.2728           74.9972+-7.2996          might be 1.0314x faster
   ftl-library-inlining                              85.4471+-24.8381          76.5651+-1.7014          might be 1.1160x faster
   function-dot-apply                                 1.3936+-0.3093            1.2738+-0.0818          might be 1.0940x faster
   function-test                                      3.2131+-0.1507     ?      3.2445+-0.0373        ?
   function-with-eval                                62.2939+-0.8023     ?     65.5090+-3.3291        ? might be 1.0516x slower
   gcse-poly-get-less-obvious                        19.3448+-1.4976           19.1231+-1.1029          might be 1.0116x faster
   gcse-poly-get                                     20.3541+-1.8252     ?     21.6840+-1.5183        ? might be 1.0653x slower
   gcse                                               4.6964+-1.2257            4.2856+-0.1788          might be 1.0958x faster
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      2.6061+-0.0825            2.5830+-0.0350        
   get-by-id-bimorphic-check-structure-elimination   
                                                      6.3439+-0.0930     ?      6.6302+-0.8366        ? might be 1.0451x slower
   get-by-id-chain-from-try-block                     6.6023+-1.2225            5.7734+-0.1104          might be 1.1436x faster
   get-by-id-check-structure-elimination              5.5341+-1.1783            5.0542+-0.0145          might be 1.0949x faster
   get-by-id-proto-or-self                           15.8207+-0.8941     ?     16.5671+-1.4006        ? might be 1.0472x slower
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      2.7938+-0.0426     ?      2.8753+-0.2118        ? might be 1.0292x slower
   get-by-id-self-or-proto                           16.4991+-0.8380     ?     16.5658+-1.2540        ?
   get-by-val-out-of-bounds                           4.2852+-0.0358     ?      4.2942+-0.1340        ?
   get_callee_monomorphic                             3.5390+-0.2195            3.5242+-0.1881        
   get_callee_polymorphic                             3.5861+-0.4303            3.4099+-0.2039          might be 1.0517x faster
   getter-no-activation                               4.8639+-0.2115            4.8145+-0.2318          might be 1.0103x faster
   getter-richards                                  110.5074+-4.8510     !    119.5030+-3.9497        ! definitely 1.0814x slower
   getter                                             5.2279+-0.4467            4.9337+-0.1508          might be 1.0596x faster
   global-var-const-infer-fire-from-opt               0.8542+-0.0528            0.8513+-0.0689        
   global-var-const-infer                             0.7503+-0.0476            0.7448+-0.0769        
   HashMap-put-get-iterate-keys                      25.8888+-0.4146           25.8401+-0.2909        
   HashMap-put-get-iterate                           26.0439+-0.7772           25.7233+-0.4655          might be 1.0125x faster
   HashMap-string-put-get-iterate                    30.1717+-1.3682     ?     30.5080+-2.1760        ? might be 1.0111x slower
   hoist-make-rope                                   10.6191+-1.0045     ?     11.2228+-0.7758        ? might be 1.0568x slower
   hoist-poly-check-structure-effectful-loop   
                                                      4.9403+-0.2043            4.8663+-0.0317          might be 1.0152x faster
   hoist-poly-check-structure                         3.9851+-0.5505            3.7021+-0.0620          might be 1.0765x faster
   imul-double-only                                   6.2677+-0.4827     ?      7.0034+-1.0197        ? might be 1.1174x slower
   imul-int-only                                      8.4528+-0.3082            8.3773+-0.1552        
   imul-mixed                                         6.5246+-0.9244            6.1228+-0.0462          might be 1.0656x faster
   in-four-cases                                     18.6560+-0.3046     ?     19.1302+-1.0203        ? might be 1.0254x slower
   in-one-case-false                                  9.7225+-0.1670            9.6523+-0.0895        
   in-one-case-true                                   9.8327+-0.4384            9.6627+-0.1184          might be 1.0176x faster
   in-two-cases                                      10.1604+-0.3205            9.9874+-0.0396          might be 1.0173x faster
   indexed-properties-in-objects                      2.7975+-0.0979     ?      2.8376+-0.2024        ? might be 1.0143x slower
   infer-closure-const-then-mov-no-inline             3.4567+-0.3130     ?      3.4683+-0.1833        ?
   infer-closure-const-then-mov                      21.2340+-1.6698           21.1328+-1.8970        
   infer-closure-const-then-put-to-scope-no-inline   
                                                     11.3818+-1.5609           10.6845+-0.1597          might be 1.0653x faster
   infer-closure-const-then-put-to-scope             23.1054+-1.7867           22.2324+-0.1961          might be 1.0393x faster
   infer-closure-const-then-reenter-no-inline   
                                                     49.1418+-1.8046     ?     49.2811+-1.5624        ?
   infer-closure-const-then-reenter                  23.4318+-1.6904           22.1821+-1.3155          might be 1.0563x faster
   infer-constant-global-property                     3.4155+-0.1272     ?      3.4680+-0.1178        ? might be 1.0154x slower
   infer-constant-property                            2.5532+-0.0242            2.5520+-0.0489        
   infer-one-time-closure-ten-vars                   11.3206+-0.5638     ?     11.4216+-0.3024        ?
   infer-one-time-closure-two-vars                   11.6942+-1.4416     ?     11.7767+-1.6861        ?
   infer-one-time-closure                            10.9237+-0.2231     ?     11.2741+-1.0375        ? might be 1.0321x slower
   infer-one-time-deep-closure                       21.4851+-1.5776           19.6698+-0.3563          might be 1.0923x faster
   inline-arguments-access                            1.6934+-0.7321            1.2264+-0.0196          might be 1.3808x faster
   inline-arguments-aliased-access                    1.6298+-0.2979            1.5596+-0.2434          might be 1.0450x faster
   inline-arguments-local-escape                     12.4895+-1.2815           12.4754+-1.1180        
   inline-get-scoped-var                              4.5354+-0.1123     ?      4.6167+-0.3023        ? might be 1.0179x slower
   inlined-put-by-id-transition                       9.5757+-0.4593            9.1686+-0.4597          might be 1.0444x faster
   int-or-other-abs-then-get-by-val                   5.0558+-0.6787            4.6918+-0.0407          might be 1.0776x faster
   int-or-other-abs-zero-then-get-by-val             17.8658+-0.8633           17.1224+-0.8024          might be 1.0434x faster
   int-or-other-add-then-get-by-val                   4.1244+-0.0332     ?      4.3808+-0.6842        ? might be 1.0622x slower
   int-or-other-add                                   5.0975+-0.2398     ?      5.2316+-0.5137        ? might be 1.0263x slower
   int-or-other-div-then-get-by-val                   4.1434+-0.0275     ?      4.5543+-0.6530        ? might be 1.0992x slower
   int-or-other-max-then-get-by-val                   4.7247+-0.6093            4.3715+-0.2153          might be 1.0808x faster
   int-or-other-min-then-get-by-val                   4.4168+-0.3083     ?      4.6044+-0.8284        ? might be 1.0425x slower
   int-or-other-mod-then-get-by-val                   3.8519+-0.1236     ?      4.0944+-0.7097        ? might be 1.0630x slower
   int-or-other-mul-then-get-by-val                   3.7355+-0.0173     ?      4.0438+-0.8224        ? might be 1.0825x slower
   int-or-other-neg-then-get-by-val                   4.5945+-0.1655     ?      4.6135+-0.1305        ?
   int-or-other-neg-zero-then-get-by-val             18.2699+-1.7508           17.2702+-1.4201          might be 1.0579x faster
   int-or-other-sub-then-get-by-val                   4.1020+-0.0152     ?      4.1439+-0.0968        ? might be 1.0102x slower
   int-or-other-sub                                   3.9244+-0.6470            3.5462+-0.4530          might be 1.1066x faster
   int-overflow-local                                 4.1763+-0.1527            4.1477+-0.0530        
   Int16Array-alloc-long-lived                       48.3547+-1.2463     ?     49.4706+-1.9856        ? might be 1.0231x slower
   Int16Array-bubble-sort-with-byteLength            20.3020+-0.3422           20.2823+-0.1688        
   Int16Array-bubble-sort                            23.3156+-1.8187           21.2502+-0.4455          might be 1.0972x faster
   Int16Array-load-int-mul                            1.3829+-0.0426            1.3620+-0.0305          might be 1.0153x faster
   Int16Array-to-Int32Array-set                      52.4358+-1.6477     !     57.8646+-2.3241        ! definitely 1.1035x slower
   Int32Array-alloc-large                            24.3643+-1.0646     ?     24.9952+-1.5593        ? might be 1.0259x slower
   Int32Array-alloc-long-lived                       52.6765+-0.8567     ?     53.6390+-2.0571        ? might be 1.0183x slower
   Int32Array-alloc                                   3.1096+-0.1966            2.9393+-0.0523          might be 1.0579x faster
   Int32Array-Int8Array-view-alloc                    9.8758+-0.8232            9.4195+-0.3729          might be 1.0484x faster
   int52-spill                                        7.3663+-0.4578            7.2469+-0.2739          might be 1.0165x faster
   Int8Array-alloc-long-lived                        45.1335+-1.5725           44.5667+-1.3823          might be 1.0127x faster
   Int8Array-load-with-byteLength                     3.2445+-0.0181            3.2413+-0.0496        
   Int8Array-load                                     3.2509+-0.0614     ?      3.3375+-0.1489        ? might be 1.0266x slower
   integer-divide                                    11.9307+-1.1483     ?     12.0754+-1.2857        ? might be 1.0121x slower
   integer-modulo                                     1.9662+-0.0202     ?      2.0782+-0.3246        ? might be 1.0570x slower
   large-int-captured                                 6.2275+-0.5615     ?      6.7668+-0.8904        ? might be 1.0866x slower
   large-int-neg                                     16.7774+-1.5628     ?     16.8585+-1.6128        ?
   large-int                                         14.8174+-0.8984           14.5152+-0.2137          might be 1.0208x faster
   logical-not                                        4.5780+-0.5774            4.3991+-0.1087          might be 1.0407x faster
   lots-of-fields                                     9.1056+-0.1623     ?      9.5751+-0.5806        ? might be 1.0516x slower
   make-indexed-storage                               2.9815+-0.2547            2.8788+-0.3443          might be 1.0357x faster
   make-rope-cse                                      4.2918+-0.4433     ?      4.7550+-0.5868        ? might be 1.1079x slower
   marsaglia-larger-ints                             38.9830+-2.2262           37.2422+-1.0770          might be 1.0467x faster
   marsaglia-osr-entry                               22.1200+-0.6642     ?     22.7126+-1.7192        ? might be 1.0268x slower
   method-on-number                                  18.1733+-1.5487           17.4480+-0.1897          might be 1.0416x faster
   misc-strict-eq                                    34.5827+-0.2961           34.5660+-1.0912        
   negative-zero-divide                               0.2840+-0.0107     ?      0.2914+-0.0084        ? might be 1.0259x slower
   negative-zero-modulo                               0.2907+-0.0075     ?      0.2935+-0.0136        ?
   negative-zero-negate                               0.2782+-0.0123     ?      0.2872+-0.0425        ? might be 1.0325x slower
   nested-function-parsing                           26.6517+-0.1572     ?     27.3912+-1.5352        ? might be 1.0277x slower
   new-array-buffer-dead                              2.6147+-0.1604            2.5889+-0.0607        
   new-array-buffer-push                              7.3367+-1.1664            6.8397+-0.3621          might be 1.0727x faster
   new-array-dead                                    10.1835+-0.8362            9.8870+-0.1967          might be 1.0300x faster
   new-array-push                                     4.8244+-0.0982            4.8015+-0.1095        
   number-test                                        2.8549+-0.0639     ?      2.8715+-0.1602        ?
   object-closure-call                                5.6683+-0.0775            5.6558+-0.1248        
   object-test                                        3.0335+-0.3794            2.9198+-0.0143          might be 1.0390x faster
   poly-chain-access-different-prototypes-simple   
                                                      3.1692+-0.0404     ?      3.1778+-0.0484        ?
   poly-chain-access-different-prototypes             2.6706+-0.2488            2.4948+-0.1757          might be 1.0705x faster
   poly-chain-access-simpler                          3.2211+-0.0885            3.1744+-0.0364          might be 1.0147x faster
   poly-chain-access                                  2.8715+-0.3457            2.6664+-0.0817          might be 1.0769x faster
   poly-stricteq                                     58.8503+-1.0791     ?     59.3150+-1.4607        ?
   polymorphic-array-call                             1.5146+-0.0350            1.4777+-0.0275          might be 1.0250x faster
   polymorphic-get-by-id                              3.0059+-0.0711     ?      3.0193+-0.0372        ?
   polymorphic-put-by-id                             48.1945+-11.9810    ?     49.2583+-11.9805       ? might be 1.0221x slower
   polymorphic-structure                             16.1277+-0.9380           15.6676+-0.4752          might be 1.0294x faster
   polyvariant-monomorphic-get-by-id                  8.2548+-0.0496     ?      8.3204+-0.1054        ?
   proto-getter-access                                8.5110+-0.1902            8.3546+-0.1638          might be 1.0187x faster
   put-by-id-replace-and-transition                   8.9042+-0.6722            8.6540+-0.4206          might be 1.0289x faster
   put-by-id-slightly-polymorphic                     2.8051+-0.1792            2.7749+-0.1026          might be 1.0109x faster
   put-by-id                                         12.9309+-0.3145     ?     13.5411+-0.3987        ? might be 1.0472x slower
   put-by-val-large-index-blank-indexing-type   
                                                      6.5837+-0.7903     ?      7.0031+-1.5198        ? might be 1.0637x slower
   put-by-val-machine-int                             2.5360+-0.1726            2.4324+-0.0417          might be 1.0426x faster
   rare-osr-exit-on-local                            15.6233+-1.2658           15.5515+-1.4393        
   register-pressure-from-osr                        21.5783+-0.4031           21.5454+-0.4809        
   setter                                             5.5010+-0.6955            5.3040+-0.1353          might be 1.0371x faster
   simple-activation-demo                            25.6603+-1.6143           24.4016+-0.2851          might be 1.0516x faster
   simple-getter-access                              11.2225+-0.1747           11.0363+-0.1479          might be 1.0169x faster
   slow-array-profile-convergence                     2.6027+-0.0602     ?      2.6858+-0.1195        ? might be 1.0320x slower
   slow-convergence                                   2.9814+-0.0624     ?      3.0376+-0.0896        ? might be 1.0188x slower
   sparse-conditional                                 1.0778+-0.1098            1.0367+-0.1096          might be 1.0397x faster
   splice-to-remove                                  16.6445+-1.3590           16.0108+-0.1856          might be 1.0396x faster
   string-char-code-at                               16.8199+-1.2434           16.1958+-0.3733          might be 1.0385x faster
   string-concat-object                               2.1056+-0.2109            2.0127+-0.0591          might be 1.0462x faster
   string-concat-pair-object                          2.0357+-0.2461            1.9605+-0.0422          might be 1.0384x faster
   string-concat-pair-simple                         10.8020+-0.4288     ?     10.8233+-0.5840        ?
   string-concat-simple                              11.1286+-0.8912           11.0067+-0.4792          might be 1.0111x faster
   string-cons-repeat                                 7.6390+-0.5620            7.1277+-0.2877          might be 1.0717x faster
   string-cons-tower                                  7.5937+-0.1633     ?      8.2820+-0.9543        ? might be 1.0906x slower
   string-equality                                   18.4849+-1.4579           18.4778+-1.0770        
   string-get-by-val-big-char                         8.6880+-0.3581     ?      8.9099+-0.7731        ? might be 1.0255x slower
   string-get-by-val-out-of-bounds-insane             3.5379+-0.1419            3.4765+-0.0527          might be 1.0177x faster
   string-get-by-val-out-of-bounds                    5.2203+-0.8339            4.7222+-0.0504          might be 1.1055x faster
   string-get-by-val                                  3.1877+-0.1266     ?      3.1895+-0.1588        ?
   string-hash                                        1.9369+-0.1679     ?      2.1098+-0.2733        ? might be 1.0893x slower
   string-long-ident-equality                        14.9052+-0.7969     ?     15.0607+-1.2600        ? might be 1.0104x slower
   string-repeat-arith                               35.6364+-1.8490           33.9522+-2.6905          might be 1.0496x faster
   string-sub                                        66.7113+-1.6644     ?     67.1939+-1.5708        ?
   string-test                                        2.7688+-0.0983            2.7147+-0.0765          might be 1.0199x faster
   string-var-equality                               30.3304+-0.1587     ?     31.2149+-1.3281        ? might be 1.0292x slower
   structure-hoist-over-transitions                   2.3429+-0.0345     ?      2.3896+-0.0396        ? might be 1.0200x slower
   substring-concat-weird                            38.4196+-1.7533     ?     38.9191+-1.4116        ? might be 1.0130x slower
   substring-concat                                  40.1971+-1.8932     ?     40.8398+-1.7974        ? might be 1.0160x slower
   substring                                         46.1918+-1.6901           45.6327+-2.0348          might be 1.0123x faster
   switch-char-constant                               2.5327+-0.0277     ?      2.5557+-0.0687        ?
   switch-char                                        6.2882+-0.7865            5.9194+-0.1049          might be 1.0623x faster
   switch-constant                                    7.8412+-0.4152            7.3651+-0.2029          might be 1.0646x faster
   switch-string-basic-big-var                       14.9858+-1.5225     ?     15.5098+-1.9016        ? might be 1.0350x slower
   switch-string-basic-big                           14.3429+-1.4372           14.1205+-0.6040          might be 1.0157x faster
   switch-string-basic-var                           14.9522+-1.3434     ?     16.0954+-2.1056        ? might be 1.0765x slower
   switch-string-basic                               13.2338+-0.2802     ?     13.9162+-1.5945        ? might be 1.0516x slower
   switch-string-big-length-tower-var                21.3246+-1.7976           20.5445+-1.5737          might be 1.0380x faster
   switch-string-length-tower-var                    15.5506+-1.6214           15.3820+-1.3330          might be 1.0110x faster
   switch-string-length-tower                        13.0862+-1.5414     ?     13.5650+-1.7874        ? might be 1.0366x slower
   switch-string-short                               12.5442+-0.5609     ?     14.5010+-1.9328        ? might be 1.1560x slower
   switch                                            11.7876+-0.6867           11.6716+-0.6270        
   tear-off-arguments-simple                          1.6832+-0.2013            1.6030+-0.0714          might be 1.0500x faster
   tear-off-arguments                                 2.6537+-0.0916            2.6357+-0.1202        
   temporal-structure                                12.1997+-0.5764           11.9831+-0.2281          might be 1.0181x faster
   to-int32-boolean                                  13.9837+-1.4621     ?     14.0686+-0.8808        ?
   undefined-test                                     2.7749+-0.0561     ?      2.7833+-0.0249        ?
   unprofiled-licm                                   22.7968+-2.0947           22.0306+-1.5355          might be 1.0348x faster
   weird-inlining-const-prop                          1.9047+-0.2366            1.8256+-0.1197          might be 1.0433x faster

   &lt;arithmetic&gt;                                      14.7120+-0.1571     ?     14.8053+-0.0908        ? might be 1.0063x slower
   &lt;geometric&gt; *                                      7.6077+-0.0367     ?      7.6211+-0.0333        ? might be 1.0018x slower
   &lt;harmonic&gt;                                         3.7796+-0.0316            3.7639+-0.0306          might be 1.0042x faster

                                                          NoEdge                 OriginalEdge                                   
AsmBench:
   bigfib.cpp                                       482.0354+-3.6144     ?    486.8372+-4.3456        ?
   cray.c                                           466.2465+-6.9750          460.3600+-3.1552          might be 1.0128x faster
   dry.c                                            499.1194+-7.1821          491.2013+-6.2425          might be 1.0161x faster
   FloatMM.c                                        718.8969+-2.1531     !    735.4163+-2.3293        ! definitely 1.0230x slower
   gcc-loops.cpp                                   4335.2929+-15.3065    ?   4341.2349+-29.8479       ?
   n-body.c                                        1000.7402+-5.2103          991.7749+-3.8531        
   Quicksort.c                                      430.2230+-2.4660          424.4895+-4.2282          might be 1.0135x faster
   stepanov_container.cpp                          3597.1681+-61.7194        3579.1082+-13.4140       
   Towers.c                                         275.1847+-1.8351     ?    276.2987+-2.5164        ?

   &lt;arithmetic&gt;                                    1311.6563+-6.5661         1309.6357+-3.7600          might be 1.0015x faster
   &lt;geometric&gt; *                                    809.3140+-2.8585          807.6984+-2.4090          might be 1.0020x faster
   &lt;harmonic&gt;                                       596.7762+-1.8347          595.4123+-2.9594          might be 1.0023x faster

                                                          NoEdge                 OriginalEdge                                   
All benchmarks:
   &lt;arithmetic&gt;                                      97.1485+-0.3264     ?     97.2872+-0.2141        ? might be 1.0014x slower
   &lt;geometric&gt;                                       12.1848+-0.0447           12.1737+-0.0391          might be 1.0009x faster
   &lt;harmonic&gt;                                         3.2484+-0.0174     ^      3.1375+-0.0144        ^ definitely 1.0354x faster

                                                          NoEdge                 OriginalEdge                                   
Geomean of preferred means:
   &lt;scaled-result&gt;                                   49.6551+-0.2149           49.6027+-0.1224          might be 1.0011x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031019</commentid>
    <comment_count>27</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-24 20:22:19 -0700</bug_when>
    <thetext>And the other machine:



Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, and AsmBench on oldmac (MacPro4,1).

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r172859)
&quot;PolyInline&quot; at /Volumes/Data/fromMiniMe/quartary/OpenSource/WebKitBuild/Release/jsc (r172859)

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                 PolyInline                                    
SunSpider:
   3d-cube                                            7.6417+-0.1425     ?      7.6646+-0.1572        ?
   3d-morph                                           9.7458+-0.1848            9.7160+-0.1626        
   3d-raytrace                                        9.6039+-0.1371     ?      9.6735+-0.1106        ?
   access-binary-trees                                2.8898+-0.1344     ?      2.9089+-0.1210        ?
   access-fannkuch                                    9.3876+-0.1983     ?      9.5025+-0.1697        ? might be 1.0122x slower
   access-nbody                                       4.7691+-0.0513     ?      4.7718+-0.0138        ?
   access-nsieve                                      5.8240+-0.1303            5.7928+-0.1274        
   bitops-3bit-bits-in-byte                           2.0142+-0.0148     ?      2.0529+-0.0736        ? might be 1.0192x slower
   bitops-bits-in-byte                                6.8547+-0.0138     ?      6.8665+-0.0363        ?
   bitops-bitwise-and                                 3.1777+-0.0162     ?      3.1884+-0.0056        ?
   bitops-nsieve-bits                                 5.6684+-0.0317     ?      5.7118+-0.0936        ?
   controlflow-recursive                              2.9793+-0.0949     ?      3.0256+-0.0419        ? might be 1.0155x slower
   crypto-aes                                         6.2204+-0.0272     ?      6.2342+-0.0437        ?
   crypto-md5                                         3.5196+-0.0805     ?      3.5896+-0.1039        ? might be 1.0199x slower
   crypto-sha1                                        3.6911+-0.1204     ?      3.6951+-0.1273        ?
   date-format-tofte                                 13.4150+-0.0833     ^     12.9730+-0.1729        ^ definitely 1.0341x faster
   date-format-xparb                                  8.3730+-0.1538     !      8.9183+-0.3152        ! definitely 1.0651x slower
   math-cordic                                        4.6856+-0.0550            4.6676+-0.0593        
   math-partial-sums                                 10.4670+-0.1425           10.4116+-0.1630        
   math-spectral-norm                                 3.0164+-0.0302     ?      3.0216+-0.0250        ?
   regexp-dna                                        11.7566+-0.2298           11.7492+-0.1535        
   string-base64                                      6.3475+-0.0331     ?      6.3821+-0.0893        ?
   string-fasta                                      10.1973+-0.2379           10.0804+-0.2544          might be 1.0116x faster
   string-tagcloud                                   15.2227+-0.1573           15.1354+-0.1027        
   string-unpack-code                                30.7170+-0.3014     ?     30.9201+-0.1492        ?
   string-validate-input                              7.5859+-0.0820     ?      7.5934+-0.1610        ?

   &lt;arithmetic&gt; *                                     7.9143+-0.0192     ?      7.9326+-0.0214        ? might be 1.0023x slower
   &lt;geometric&gt;                                        6.5135+-0.0168     ?      6.5406+-0.0221        ? might be 1.0042x slower
   &lt;harmonic&gt;                                         5.4585+-0.0204     ?      5.4934+-0.0281        ? might be 1.0064x slower

                                                        TipOfTree                 PolyInline                                    
LongSpider:
   3d-cube                                         1362.1188+-23.3389        1356.5332+-8.0583        
   3d-morph                                        2273.7000+-2.4353     ?   2275.1687+-4.6213        ?
   3d-raytrace                                     1319.6954+-8.1454     ?   1339.1442+-33.1985       ? might be 1.0147x slower
   access-binary-trees                             1672.5390+-4.3509     ?   1677.0076+-9.2447        ?
   access-fannkuch                                  522.6868+-15.3211    ?    536.7624+-26.5314       ? might be 1.0269x slower
   access-nbody                                    1246.2704+-1.1416     ?   1247.4120+-3.3324        ?
   access-nsieve                                   1615.5767+-4.6635         1612.7738+-3.6321        
   bitops-3bit-bits-in-byte                          57.5059+-0.2064     ?     57.6591+-0.2030        ?
   bitops-bits-in-byte                              396.1296+-5.5647          391.4351+-3.9145          might be 1.0120x faster
   bitops-nsieve-bits                              1179.4961+-6.3083     ?   1180.5186+-6.1871        ?
   controlflow-recursive                            865.7085+-1.4374     ?    873.6347+-20.5855       ?
   crypto-aes                                      1157.5219+-25.5496        1140.0722+-26.8268         might be 1.0153x faster
   crypto-md5                                       963.3516+-19.5316    ?    975.2854+-29.4450       ? might be 1.0124x slower
   crypto-sha1                                     1196.9741+-4.8196     ?   1198.4860+-4.7225        ?
   date-format-tofte                               1208.6256+-19.7178        1188.6861+-21.8736         might be 1.0168x faster
   date-format-xparb                               1300.4768+-16.9396    !   1396.9031+-63.0692       ! definitely 1.0741x slower
   math-cordic                                      811.4911+-0.8017     ?    813.4789+-4.4890        ?
   math-partial-sums                               1327.8299+-28.7805        1316.1350+-2.6537        
   math-spectral-norm                              1297.2773+-2.9668     ?   1302.5513+-17.4491       ?
   string-base64                                    590.3318+-3.7112     !    606.2293+-2.5908        ! definitely 1.0269x slower
   string-fasta                                     694.8701+-2.9479     ?    719.1703+-23.9962       ? might be 1.0350x slower
   string-tagcloud                                  362.7490+-4.4563     ?    364.6218+-2.4075        ?

   &lt;arithmetic&gt;                                    1064.6785+-1.8617     !   1071.3486+-3.1591        ! definitely 1.0063x slower
   &lt;geometric&gt; *                                    887.7965+-1.3726     !    894.0869+-2.5645        ! definitely 1.0071x slower
   &lt;harmonic&gt;                                       539.6869+-0.5961     !    542.7310+-1.1555        ! definitely 1.0056x slower

                                                        TipOfTree                 PolyInline                                    
V8Spider:
   crypto                                            81.8224+-0.9865           81.5522+-0.9030        
   deltablue                                         98.9138+-0.7415     !    121.6165+-0.8403        ! definitely 1.2295x slower
   earley-boyer                                      75.0022+-1.6672           74.7264+-1.9566        
   raytrace                                          44.4572+-0.5908     !     47.2005+-0.3877        ! definitely 1.0617x slower
   regexp                                           104.0005+-0.2074     ?    105.7373+-2.9882        ? might be 1.0167x slower
   richards                                         106.8020+-1.2684     !    118.9234+-1.2036        ! definitely 1.1135x slower
   splay                                             49.7790+-0.5114     ?     50.4914+-0.6756        ? might be 1.0143x slower

   &lt;arithmetic&gt;                                      80.1110+-0.3317     !     85.7497+-0.6706        ! definitely 1.0704x slower
   &lt;geometric&gt; *                                     76.1987+-0.2431     !     80.6520+-0.6375        ! definitely 1.0584x slower
   &lt;harmonic&gt;                                        71.9892+-0.2134     !     75.4808+-0.5826        ! definitely 1.0485x slower

                                                        TipOfTree                 PolyInline                                    
Octane:
   encrypt                                           0.39505+-0.00037          0.39478+-0.00029       
   decrypt                                           7.14203+-0.00466    ?     7.14556+-0.01286       ?
   deltablue                                x2       0.44034+-0.00323    ^     0.34492+-0.00262       ^ definitely 1.2767x faster
   earley                                            1.35041+-0.01006    ?     1.37208+-0.01624       ? might be 1.0160x slower
   boyer                                            10.40394+-0.12814    ?    10.47997+-0.07309       ?
   navier-stokes                            x2       7.73104+-0.00436          7.72868+-0.00662       
   raytrace                                 x2       2.66991+-0.02755    ?     2.67586+-0.03853       ?
   richards                                 x2       0.22932+-0.01102    ^     0.21293+-0.00244       ^ definitely 1.0770x faster
   splay                                    x2       0.62858+-0.01083          0.62304+-0.00373       
   regexp                                   x2      61.79943+-0.21471         61.37440+-0.28687       
   pdfjs                                    x2      87.56147+-2.74194    ?    88.78002+-0.29038       ? might be 1.0139x slower
   mandreel                                 x2      92.28253+-0.68799    ?    92.28710+-0.53171       ?
   gbemu                                    x2      69.17189+-1.80168    !    73.99837+-0.38989       ! definitely 1.0698x slower
   closure                                           0.90926+-0.00153    ?     0.90982+-0.00191       ?
   jquery                                           11.36424+-0.09067         11.29259+-0.08539       
   box2d                                    x2      24.73689+-0.16971         24.70213+-0.15788       
   zlib                                     x2     819.99953+-13.93619       816.56055+-3.78940       
   typescript                               x2    1284.09753+-7.63138    !  1313.03080+-12.06748      ! definitely 1.0225x slower

   &lt;arithmetic&gt;                                    164.47540+-0.89563    !   166.54108+-0.86400       ! definitely 1.0126x slower
   &lt;geometric&gt; *                                    12.35351+-0.06026    ^    12.17029+-0.02356       ^ definitely 1.0151x faster
   &lt;harmonic&gt;                                        1.34229+-0.02486    ^     1.23546+-0.00594       ^ definitely 1.0865x faster

                                                        TipOfTree                 PolyInline                                    
Kraken:
   ai-astar                                          527.570+-1.057      ?     530.890+-9.426         ?
   audio-beat-detection                              182.564+-0.934            179.410+-3.845           might be 1.0176x faster
   audio-dft                                         266.410+-23.780           252.810+-1.661           might be 1.0538x faster
   audio-fft                                         130.191+-0.503      ?     130.244+-0.248         ?
   audio-oscillator                                  367.561+-0.973      ?     368.280+-1.165         ?
   imaging-darkroom                                  292.169+-15.735           289.151+-7.171           might be 1.0104x faster
   imaging-desaturate                                112.736+-0.352            112.600+-0.370         
   imaging-gaussian-blur                             181.066+-4.892            179.763+-1.549         
   json-parse-financial                               82.034+-0.909      !      85.358+-0.729         ! definitely 1.0405x slower
   json-stringify-tinderbox                          105.918+-0.712      !     108.709+-0.538         ! definitely 1.0263x slower
   stanford-crypto-aes                               101.987+-1.261      ?     102.860+-1.738         ?
   stanford-crypto-ccm                                90.227+-12.114     ?      90.382+-12.305        ?
   stanford-crypto-pbkdf2                            274.997+-0.964            274.822+-1.750         
   stanford-crypto-sha256-iterative                  106.944+-0.226      ?     108.682+-2.631         ? might be 1.0162x slower

   &lt;arithmetic&gt; *                                    201.598+-2.399            200.997+-0.750           might be 1.0030x faster
   &lt;geometric&gt;                                       170.149+-2.483      ?     170.322+-1.830         ? might be 1.0010x slower
   &lt;harmonic&gt;                                        147.349+-2.797      ?     148.317+-2.768         ? might be 1.0066x slower

                                                        TipOfTree                 PolyInline                                    
JSRegress:
   abs-boolean                                        4.1904+-0.0129     ?      4.2500+-0.0819        ? might be 1.0142x slower
   adapt-to-double-divide                            20.2640+-0.5298           20.2598+-0.3938        
   aliased-arguments-getbyval                         1.1014+-0.0085            1.1008+-0.0069        
   allocate-big-object                                3.6531+-0.1073     ?      3.7896+-0.1890        ? might be 1.0374x slower
   arity-mismatch-inlining                            1.0096+-0.0058     ?      1.0140+-0.0181        ?
   array-access-polymorphic-structure                10.8286+-0.2492     ?     10.8593+-0.1247        ?
   array-nonarray-polymorhpic-access                 60.5963+-0.1674     ?     60.8316+-0.2437        ?
   array-prototype-every                            125.3885+-3.0495          124.0745+-5.5939          might be 1.0106x faster
   array-prototype-forEach                          124.9354+-1.9330          122.3156+-1.2700          might be 1.0214x faster
   array-prototype-map                              149.5084+-0.9437     ^    146.0835+-1.2415        ^ definitely 1.0234x faster
   array-prototype-some                             123.8954+-1.2506          121.2385+-1.7273          might be 1.0219x faster
   array-splice-contiguous                           67.8742+-0.7705     ?     68.2931+-0.7644        ?
   array-with-double-add                              6.6257+-0.1668     ?      6.6960+-0.0970        ? might be 1.0106x slower
   array-with-double-increment                        4.7144+-0.1455            4.6615+-0.0857          might be 1.0114x faster
   array-with-double-mul-add                          7.9227+-0.2054            7.8576+-0.1301        
   array-with-double-sum                              5.0220+-0.0820            5.0055+-0.0740        
   array-with-int32-add-sub                          11.9456+-0.3755     ?     12.1267+-0.3805        ? might be 1.0152x slower
   array-with-int32-or-double-sum                     5.1040+-0.0776     ?      5.1344+-0.0857        ?
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                    115.2481+-0.8356     ?    115.4960+-1.1770        ?
   ArrayBuffer-DataView-alloc-long-lived             32.4589+-0.3013           32.1158+-0.3501          might be 1.0107x faster
   ArrayBuffer-Int32Array-byteOffset                  5.2599+-0.0291            5.2572+-0.0084        
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                    119.1289+-1.2854     ?    121.1141+-1.6794        ? might be 1.0167x slower
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     50.5560+-0.5118           50.5299+-0.4884        
   ArrayBuffer-Int8Array-alloc-long-lived            31.0512+-0.4596     ?     31.8198+-0.9214        ? might be 1.0248x slower
   ArrayBuffer-Int8Array-alloc                       27.6998+-0.5981     ?     28.3936+-0.6987        ? might be 1.0250x slower
   asmjs_bool_bug                                    10.2784+-0.1962           10.2381+-0.2763        
   assign-custom-setter-polymorphic                   4.8741+-0.0899     ?      4.9091+-0.0147        ?
   assign-custom-setter                               6.7618+-0.2158            6.7132+-0.1560        
   basic-set                                         15.9680+-1.3795           15.5776+-0.2155          might be 1.0251x faster
   big-int-mul                                        6.2659+-0.1083     !      6.8029+-0.1353        ! definitely 1.0857x slower
   boolean-test                                       4.7462+-0.0350     ?      4.7810+-0.0241        ?
   branch-fold                                        5.0542+-0.0138     ?      5.1107+-0.0503        ? might be 1.0112x slower
   by-val-generic                                    12.8189+-0.1152           12.7554+-0.1893        
   call-spread-apply                                 20.7896+-0.3648           20.5406+-0.2497          might be 1.0121x faster
   call-spread-call                                   8.7040+-0.1308     ?      8.7699+-0.2139        ?
   captured-assignments                               0.5747+-0.0027     !      0.5870+-0.0044        ! definitely 1.0215x slower
   cast-int-to-double                                 9.4230+-0.1677     ?      9.4385+-0.1295        ?
   cell-argument                                     11.0344+-0.1046     ?     11.0364+-0.1733        ?
   cfg-simplify                                       4.0660+-0.0378            4.0552+-0.0090        
   chain-getter-access                               13.7381+-0.1893     ?     13.8132+-0.2665        ?
   cmpeq-obj-to-obj-other                            13.5122+-0.2048     ?     13.6499+-0.4508        ? might be 1.0102x slower
   constant-test                                      8.8265+-0.0770            8.7828+-0.0697        
   DataView-custom-properties                       125.4700+-1.6947          123.8021+-0.9935          might be 1.0135x faster
   delay-tear-off-arguments-strictmode                3.6772+-0.0983            3.6356+-0.0188          might be 1.0115x faster
   destructuring-arguments                            8.9448+-0.2378            8.9150+-0.0839        
   destructuring-swap                                 8.9359+-0.1647            8.9254+-0.0927        
   direct-arguments-getbyval                          1.1204+-0.0368            1.1176+-0.0095        
   div-boolean-double                                 6.4215+-0.0791            6.4041+-0.0504        
   div-boolean                                       11.7522+-0.1085           11.7490+-0.3016        
   double-get-by-val-out-of-bounds                    6.6582+-0.1284     ?      6.7003+-0.1772        ?
   double-pollution-getbyval                         11.4834+-0.2198     ?     11.6361+-0.1453        ? might be 1.0133x slower
   double-pollution-putbyoffset                       6.1704+-0.1254            6.1212+-0.1235        
   double-to-int32-typed-array-no-inline              3.0806+-0.1453            3.0271+-0.0497          might be 1.0177x faster
   double-to-int32-typed-array                        2.4511+-0.0153     !      2.4803+-0.0085        ! definitely 1.0119x slower
   double-to-uint32-typed-array-no-inline             3.1080+-0.1167            3.0998+-0.1145        
   double-to-uint32-typed-array                       2.6748+-0.0515            2.6697+-0.0259        
   empty-string-plus-int                             10.3418+-0.2661     ?     10.4449+-0.0703        ?
   emscripten-cube2hash                              53.6081+-0.9473     ?     53.6765+-0.3949        ?
   external-arguments-getbyval                        2.0438+-0.0189     ?      2.0570+-0.0099        ?
   external-arguments-putbyval                        3.0013+-0.0375     ?      3.0664+-0.1714        ? might be 1.0217x slower
   fixed-typed-array-storage-var-index                1.5112+-0.0095     ?      1.5288+-0.0143        ? might be 1.0116x slower
   fixed-typed-array-storage                          1.0985+-0.0212     ?      1.1035+-0.0133        ?
   Float32Array-matrix-mult                           7.5809+-0.2066            7.5293+-0.1596        
   Float32Array-to-Float64Array-set                  89.3455+-2.0997           88.6150+-0.6059        
   Float64Array-alloc-long-lived                    101.4982+-1.3239     ?    101.7382+-1.0706        ?
   Float64Array-to-Int16Array-set                   116.0667+-2.3927     ?    116.4505+-0.3207        ?
   fold-double-to-int                                20.7860+-0.2592     ?     20.8783+-0.1261        ?
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     19.3485+-0.5090     !     24.2670+-0.4757        ! definitely 1.2542x slower
   fold-get-by-id-to-multi-get-by-offset             18.0706+-0.4343     !     22.9762+-0.3276        ! definitely 1.2715x slower
   fold-multi-get-by-offset-to-get-by-offset   
                                                     13.0519+-0.1259     !     17.7496+-0.4189        ! definitely 1.3599x slower
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                     13.3820+-0.4219     !     18.1259+-0.5271        ! definitely 1.3545x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                     13.2170+-0.0956     !     18.5815+-0.2961        ! definitely 1.4059x slower
   fold-multi-put-by-offset-to-put-by-offset   
                                                     13.1535+-1.1090     !     16.8832+-0.3022        ! definitely 1.2835x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     18.4565+-0.8418     !     22.5794+-0.1791        ! definitely 1.2234x slower
   fold-put-by-id-to-multi-put-by-offset             20.6331+-0.3293     !     25.9192+-0.5631        ! definitely 1.2562x slower
   fold-put-structure                                12.8500+-0.1783     !     17.6426+-0.1786        ! definitely 1.3730x slower
   for-of-iterate-array-entries                       9.4312+-0.2016     ^      8.5077+-0.1317        ^ definitely 1.1085x faster
   for-of-iterate-array-keys                          3.6118+-0.0215     !      3.9165+-0.0564        ! definitely 1.0844x slower
   for-of-iterate-array-values                        3.1910+-0.1020     ?      3.3229+-0.0539        ? might be 1.0414x slower
   fround                                            23.5791+-0.3557     ?     24.1922+-1.0135        ? might be 1.0260x slower
   ftl-library-inlining-dataview                    110.4998+-4.6072          109.1077+-1.2288          might be 1.0128x faster
   ftl-library-inlining                             117.3490+-2.4552          116.6074+-1.4423        
   function-dot-apply                                 2.2856+-0.0272     ?      2.2889+-0.0173        ?
   function-test                                      5.3420+-0.2516            5.2459+-0.1262          might be 1.0183x faster
   function-with-eval                               102.3576+-2.4186     ?    104.8975+-1.4622        ? might be 1.0248x slower
   gcse-poly-get-less-obvious                        29.3587+-0.2803           28.9246+-0.5704          might be 1.0150x faster
   gcse-poly-get                                     29.4891+-0.1294     ?     29.5617+-0.1769        ?
   gcse                                               7.6128+-0.0942     ?      7.6907+-0.1486        ? might be 1.0102x slower
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      3.8202+-0.0900            3.7778+-0.0733          might be 1.0112x faster
   get-by-id-bimorphic-check-structure-elimination   
                                                      9.6056+-0.2382            9.5563+-0.2300        
   get-by-id-chain-from-try-block                     8.3434+-0.1099     ^      7.9974+-0.1113        ^ definitely 1.0433x faster
   get-by-id-check-structure-elimination              8.7511+-0.1382            8.6842+-0.2031        
   get-by-id-proto-or-self                           26.0265+-1.7440     ?     27.1607+-2.0516        ? might be 1.0436x slower
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      4.5235+-0.0640     ?      4.5489+-0.0741        ?
   get-by-id-self-or-proto                           28.9979+-4.6041           27.9952+-5.6188          might be 1.0358x faster
   get-by-val-out-of-bounds                           6.5971+-0.0353     !      6.7671+-0.1132        ! definitely 1.0258x slower
   get_callee_monomorphic                             5.2896+-0.1336            5.2832+-0.0786        
   get_callee_polymorphic                             4.9591+-0.0910            4.9468+-0.0562        
   getter-no-activation                               6.7582+-0.1084            6.6928+-0.0491        
   getter-richards                                  148.9347+-1.3699     !    159.9229+-5.4891        ! definitely 1.0738x slower
   getter                                             7.5523+-0.1618            7.4640+-0.1007          might be 1.0118x faster
   global-var-const-infer-fire-from-opt               1.1779+-0.0744     ?      1.2557+-0.0354        ? might be 1.0661x slower
   global-var-const-infer                             1.0273+-0.0307            1.0205+-0.0051        
   HashMap-put-get-iterate-keys                      39.9696+-0.3442     ?     40.4733+-0.6120        ? might be 1.0126x slower
   HashMap-put-get-iterate                           39.7800+-0.3737           39.6106+-0.5474        
   HashMap-string-put-get-iterate                    44.9473+-0.5934           44.7971+-0.4299        
   hoist-make-rope                                   14.3222+-1.2139           13.1725+-0.5165          might be 1.0873x faster
   hoist-poly-check-structure-effectful-loop   
                                                      7.4647+-0.2217     ?      7.5913+-0.0568        ? might be 1.0170x slower
   hoist-poly-check-structure                         5.6422+-0.1109            5.5929+-0.0107        
   imul-double-only                                   9.7821+-0.1979     ?      9.7927+-0.3047        ?
   imul-int-only                                     13.2105+-0.4060           13.0717+-0.1521          might be 1.0106x faster
   imul-mixed                                         9.5378+-0.6005            9.4825+-0.7362        
   in-four-cases                                     28.3360+-0.5053     ?     28.3902+-0.5436        ?
   in-one-case-false                                 14.6774+-0.1651     ?     14.8540+-0.1751        ? might be 1.0120x slower
   in-one-case-true                                  14.7084+-0.1736     ?     14.7157+-0.1950        ?
   in-two-cases                                      15.4439+-0.2359           15.3542+-0.2213        
   indexed-properties-in-objects                      4.2903+-0.0604     ?      4.3174+-0.0706        ?
   infer-closure-const-then-mov-no-inline             4.7271+-0.0438     ?      4.7900+-0.0913        ? might be 1.0133x slower
   infer-closure-const-then-mov                      29.1670+-0.0623     ?     29.1813+-0.0752        ?
   infer-closure-const-then-put-to-scope-no-inline   
                                                     17.5997+-0.1876           17.5252+-0.1327        
   infer-closure-const-then-put-to-scope             33.1616+-0.0635     ?     33.1768+-0.1238        ?
   infer-closure-const-then-reenter-no-inline   
                                                     77.6793+-1.6291           77.0885+-0.1401        
   infer-closure-const-then-reenter                  33.1973+-0.1083           33.1812+-0.0738        
   infer-constant-global-property                     5.3742+-0.0119     !      5.4571+-0.0639        ! definitely 1.0154x slower
   infer-constant-property                            3.6722+-0.0574     ?      3.6731+-0.0510        ?
   infer-one-time-closure-ten-vars                   16.5052+-0.1355           16.4454+-0.3889        
   infer-one-time-closure-two-vars                   15.7928+-0.1118           15.7264+-0.1075        
   infer-one-time-closure                            15.6665+-0.1384     ?     16.0077+-0.4487        ? might be 1.0218x slower
   infer-one-time-deep-closure                       28.4102+-0.4318           28.1293+-0.1471        
   inline-arguments-access                            2.2023+-0.0099     ?      2.2218+-0.0149        ?
   inline-arguments-aliased-access                    2.4943+-0.0923            2.4766+-0.0155        
   inline-arguments-local-escape                     20.2693+-0.2325     ^     19.7572+-0.1435        ^ definitely 1.0259x faster
   inline-get-scoped-var                              6.4665+-0.1020            6.4353+-0.0273        
   inlined-put-by-id-transition                      15.8419+-0.2961           15.6768+-0.3129          might be 1.0105x faster
   int-or-other-abs-then-get-by-val                   7.9000+-0.0330     ?      7.9666+-0.0472        ?
   int-or-other-abs-zero-then-get-by-val             29.2445+-0.1132           29.0841+-0.1230        
   int-or-other-add-then-get-by-val                   6.7159+-0.0579     ?      6.7597+-0.0419        ?
   int-or-other-add                                   8.9752+-0.1532     ?      9.0004+-0.0993        ?
   int-or-other-div-then-get-by-val                   5.8857+-0.1269            5.8822+-0.0355        
   int-or-other-max-then-get-by-val                   7.5189+-0.2053            7.4499+-0.1188        
   int-or-other-min-then-get-by-val                   6.0328+-0.0981            5.9889+-0.0299        
   int-or-other-mod-then-get-by-val                   5.8432+-0.0246     ?      5.8482+-0.0359        ?
   int-or-other-mul-then-get-by-val                   5.7489+-0.0898            5.7148+-0.0333        
   int-or-other-neg-then-get-by-val                   7.1750+-0.0237            7.1353+-0.0325        
   int-or-other-neg-zero-then-get-by-val             29.2216+-0.1930     ?     29.2758+-0.3230        ?
   int-or-other-sub-then-get-by-val                   6.7803+-0.1393            6.7571+-0.0432        
   int-or-other-sub                                   5.4471+-0.0135     ?      5.4540+-0.0300        ?
   int-overflow-local                                 6.6791+-0.0605     ?      6.6889+-0.0245        ?
   Int16Array-alloc-long-lived                       72.4471+-0.3725     ?     72.8431+-0.8254        ?
   Int16Array-bubble-sort-with-byteLength            44.2178+-0.2543     ?     44.3513+-0.2525        ?
   Int16Array-bubble-sort                            43.3371+-0.1215           43.2833+-0.1032        
   Int16Array-load-int-mul                            2.0850+-0.0160     ?      2.0905+-0.0314        ?
   Int16Array-to-Int32Array-set                      87.1538+-0.7086     ?     88.4499+-2.4546        ? might be 1.0149x slower
   Int32Array-alloc-large                            42.4533+-0.6858     ?     42.6210+-1.5237        ?
   Int32Array-alloc-long-lived                       80.7248+-0.6793     ?     81.5413+-0.5318        ? might be 1.0101x slower
   Int32Array-alloc                                   4.8114+-0.1552            4.7766+-0.1509        
   Int32Array-Int8Array-view-alloc                   15.6599+-0.7869           15.3693+-0.1938          might be 1.0189x faster
   int52-spill                                       11.1039+-0.1095     ?     11.3079+-0.3121        ? might be 1.0184x slower
   Int8Array-alloc-long-lived                        66.9782+-0.7497           66.5729+-0.5437        
   Int8Array-load-with-byteLength                     5.4493+-0.0111     ?      5.5251+-0.0758        ? might be 1.0139x slower
   Int8Array-load                                     5.5015+-0.0948     ?      5.5527+-0.0768        ?
   integer-divide                                    16.7788+-0.0662     ?     16.8385+-0.1250        ?
   integer-modulo                                     3.1339+-0.2867            3.0809+-0.2984          might be 1.0172x faster
   large-int-captured                                10.7169+-0.2030     ?     10.8913+-0.0488        ? might be 1.0163x slower
   large-int-neg                                     24.1620+-0.2618           24.0846+-0.2337        
   large-int                                         21.4510+-0.2560     ?     21.5533+-0.5627        ?
   logical-not                                        6.9349+-0.1920            6.8632+-0.1250          might be 1.0104x faster
   lots-of-fields                                    16.9520+-0.1439     ?     16.9801+-0.1257        ?
   make-indexed-storage                               4.5560+-0.1572     ?      4.6114+-0.1452        ? might be 1.0122x slower
   make-rope-cse                                      6.2449+-0.0544     ?      6.2853+-0.0966        ?
   marsaglia-larger-ints                             59.2665+-0.7333     ?     59.4852+-0.5810        ?
   marsaglia-osr-entry                               31.0822+-0.3873     ?     31.1824+-0.4348        ?
   max-boolean                                        3.6989+-0.0179     ?      3.7004+-0.0089        ?
   method-on-number                                  27.7057+-0.6499           27.5643+-0.4926        
   min-boolean                                        3.7804+-0.3378            3.6527+-0.0476          might be 1.0350x faster
   minus-boolean-double                               4.7937+-0.0390     ?      4.7972+-0.0419        ?
   minus-boolean                                      3.6539+-0.0797            3.6165+-0.0200          might be 1.0103x faster
   misc-strict-eq                                    55.5595+-0.6492     ?     56.6303+-0.9475        ? might be 1.0193x slower
   mod-boolean-double                                13.9290+-0.2239           13.9090+-0.1097        
   mod-boolean                                       10.5693+-0.1510     ?     10.5900+-0.1720        ?
   mul-boolean-double                                 5.6012+-0.0564            5.6012+-0.0124        
   mul-boolean                                        4.0441+-0.1646            3.9701+-0.0542          might be 1.0187x faster
   neg-boolean                                        4.8645+-0.0211            4.8600+-0.0102        
   negative-zero-divide                               0.4234+-0.0016     ?      0.4297+-0.0070        ? might be 1.0149x slower
   negative-zero-modulo                               0.4255+-0.0025     ?      0.4302+-0.0033        ? might be 1.0109x slower
   negative-zero-negate                               0.3944+-0.0027     ?      0.3978+-0.0016        ?
   nested-function-parsing                           48.4243+-0.1858     ^     46.8136+-0.2802        ^ definitely 1.0344x faster
   new-array-buffer-dead                              4.0485+-0.0912     ?      4.1210+-0.1290        ? might be 1.0179x slower
   new-array-buffer-push                             10.7369+-0.2564           10.7238+-0.2654        
   new-array-dead                                    14.3492+-0.4051     ?     14.6842+-0.3093        ? might be 1.0233x slower
   new-array-push                                     7.5195+-0.1034            7.4357+-0.0818          might be 1.0113x faster
   number-test                                        4.6294+-0.0085     ?      4.6885+-0.0536        ? might be 1.0128x slower
   object-closure-call                                9.0721+-0.0646            9.0653+-0.0703        
   object-test                                        5.0187+-0.0895            4.9842+-0.0513        
   plus-boolean-arith                                 3.7793+-0.1231            3.7638+-0.0861        
   plus-boolean-double                                4.7785+-0.1238     ?      4.7989+-0.0134        ?
   plus-boolean                                       3.5606+-0.0427            3.5514+-0.0109        
   poly-chain-access-different-prototypes-simple   
                                                      4.4509+-0.0825            4.4481+-0.0623        
   poly-chain-access-different-prototypes             3.6587+-0.0349            3.6493+-0.0115        
   poly-chain-access-simpler                          4.3841+-0.0114     ?      4.4067+-0.0206        ?
   poly-chain-access                                  2.8846+-0.1668     !      3.6304+-0.0153        ! definitely 1.2585x slower
   poly-stricteq                                     82.4382+-0.3777     ?     82.4407+-0.4155        ?
   polymorphic-array-call                             2.2198+-0.0540     ?      2.2225+-0.0337        ?
   polymorphic-get-by-id                              4.7649+-0.1187            4.7328+-0.0237        
   polymorphic-put-by-id                             91.9373+-30.8290          87.1221+-28.8626         might be 1.0553x faster
   polymorphic-structure                             24.7231+-0.1363           24.6898+-0.1252        
   polyvariant-monomorphic-get-by-id                 13.4931+-0.2289           13.4032+-0.0837        
   proto-getter-access                               13.9190+-0.4572           13.8847+-0.2176        
   put-by-id-replace-and-transition                  12.5491+-0.2205     ?     12.6838+-0.1237        ? might be 1.0107x slower
   put-by-id-slightly-polymorphic                     4.0026+-0.0134     ?      4.0087+-0.0077        ?
   put-by-id                                         21.0482+-0.6425     ?     21.2810+-0.2682        ? might be 1.0111x slower
   put-by-val-direct                                  0.7841+-0.0095            0.7792+-0.0025        
   put-by-val-large-index-blank-indexing-type   
                                                     10.7024+-0.1690     ?     10.8392+-0.1432        ? might be 1.0128x slower
   put-by-val-machine-int                             4.5385+-0.1343     ?      4.6261+-0.1769        ? might be 1.0193x slower
   rare-osr-exit-on-local                            21.5156+-0.2435     ?     21.5888+-0.6285        ?
   register-pressure-from-osr                        31.7705+-0.1699           31.7360+-0.1140        
   setter                                             7.4878+-0.1001     ?      7.5004+-0.0629        ?
   simple-activation-demo                            35.3610+-0.6028           35.0068+-0.0759          might be 1.0101x faster
   simple-getter-access                              20.0123+-0.3547     ?     20.1828+-0.5748        ?
   sin-boolean                                       23.9242+-0.5900     ?     23.9323+-0.9815        ?
   slow-array-profile-convergence                     4.3903+-0.2625     ?      4.5756+-0.4369        ? might be 1.0422x slower
   slow-convergence                                   4.8061+-0.0550     ?      4.8268+-0.0344        ?
   sparse-conditional                                 1.4873+-0.0067     ?      1.5115+-0.0270        ? might be 1.0162x slower
   splice-to-remove                                  27.2432+-0.2019     ?     29.3931+-3.0136        ? might be 1.0789x slower
   string-char-code-at                               23.5105+-0.4838           23.4856+-0.1206        
   string-concat-object                               3.2496+-0.1139            3.2120+-0.0202          might be 1.0117x faster
   string-concat-pair-object                          3.0885+-0.0432     !      3.1497+-0.0158        ! definitely 1.0198x slower
   string-concat-pair-simple                         18.4476+-0.1737     ?     18.4703+-0.2432        ?
   string-concat-simple                              18.8616+-0.3274     ?     18.9595+-0.3733        ?
   string-cons-repeat                                11.9074+-0.0273     ?     12.1541+-0.4696        ? might be 1.0207x slower
   string-cons-tower                                 10.9768+-0.1776     ?     11.0043+-0.0530        ?
   string-equality                                   26.0942+-0.2869           26.0892+-0.2254        
   string-get-by-val-big-char                        13.6257+-0.1574     ?     14.0764+-0.4104        ? might be 1.0331x slower
   string-get-by-val-out-of-bounds-insane             5.9830+-0.1955     ?      6.0499+-0.1949        ? might be 1.0112x slower
   string-get-by-val-out-of-bounds                    7.1162+-0.1626     ?      7.1683+-0.1190        ?
   string-get-by-val                                  5.5465+-0.0554     ?      5.5812+-0.0523        ?
   string-hash                                        2.8822+-0.0554     ?      2.9874+-0.0660        ? might be 1.0365x slower
   string-long-ident-equality                        21.2462+-0.0597     ?     21.3082+-0.2540        ?
   string-repeat-arith                               49.3693+-0.3392     ?     49.7930+-0.4433        ?
   string-sub                                        97.3771+-1.1276           95.6066+-0.8561          might be 1.0185x faster
   string-test                                        4.6431+-0.0028     !      4.7363+-0.0884        ! definitely 1.0201x slower
   string-var-equality                               52.0043+-0.1377     ?     52.0246+-0.2029        ?
   structure-hoist-over-transitions                   3.8567+-0.0423     ?      3.8895+-0.0547        ?
   substring-concat-weird                            62.9324+-0.6381     ?     63.2316+-0.3894        ?
   substring-concat                                  66.0892+-0.3537     ?     66.4879+-0.4288        ?
   substring                                         74.3722+-0.2614     ?     74.7019+-0.3242        ?
   switch-char-constant                               3.6740+-0.0118     ?      3.6772+-0.0170        ?
   switch-char                                       10.2209+-0.0667           10.1985+-0.1072        
   switch-constant                                   11.5618+-0.1827     ?     11.6426+-0.1172        ?
   switch-string-basic-big-var                       24.6698+-2.1359     ?     25.5852+-1.6928        ? might be 1.0371x slower
   switch-string-basic-big                           34.1510+-2.3720           31.8389+-4.2405          might be 1.0726x faster
   switch-string-basic-var                           31.9045+-0.6724           31.3460+-0.8992          might be 1.0178x faster
   switch-string-basic                               33.0007+-1.7155           31.9442+-2.7196          might be 1.0331x faster
   switch-string-big-length-tower-var                29.9474+-0.1772     ?     30.0159+-0.1438        ?
   switch-string-length-tower-var                    23.9316+-0.0810           23.8863+-0.1909        
   switch-string-length-tower                        17.3813+-0.1221     ?     17.3878+-0.0895        ?
   switch-string-short                               18.6518+-2.6385     ?     19.2562+-2.6851        ? might be 1.0324x slower
   switch                                            16.0593+-0.1999     ?     16.0626+-0.1502        ?
   tear-off-arguments-simple                          2.3925+-0.1304            2.3508+-0.0117          might be 1.0177x faster
   tear-off-arguments                                 3.8904+-0.0478            3.8652+-0.0390        
   temporal-structure                                20.3263+-0.1458           20.2465+-0.1312        
   to-int32-boolean                                  24.8057+-0.4850           24.5769+-0.1128        
   undefined-test                                     4.8271+-0.0573     ?      4.9126+-0.0749        ? might be 1.0177x slower
   unprofiled-licm                                   30.9115+-0.6142     ?     31.4133+-0.2212        ? might be 1.0162x slower
   weird-inlining-const-prop                          2.6380+-0.0319     ?      2.7479+-0.1101        ? might be 1.0417x slower

   &lt;arithmetic&gt;                                      21.9531+-0.1235     ?     22.1194+-0.1603        ? might be 1.0076x slower
   &lt;geometric&gt; *                                     11.0702+-0.0183     !     11.2025+-0.0304        ! definitely 1.0120x slower
   &lt;harmonic&gt;                                         5.4656+-0.0129     !      5.5220+-0.0108        ! definitely 1.0103x slower

                                                        TipOfTree                 PolyInline                                    
AsmBench:
   bigfib.cpp                                       799.0097+-5.1042     ?    799.2521+-4.6963        ?
   cray.c                                           797.0303+-6.2303          793.0916+-3.5205        
   dry.c                                            777.9469+-12.0910    ?    788.5703+-23.1861       ? might be 1.0137x slower
   FloatMM.c                                       1148.9486+-1.8388     ?   1153.1522+-11.9924       ?
   gcc-loops.cpp                                   7556.7237+-6.3893     ?   7616.5415+-156.1593      ?
   n-body.c                                        2019.8949+-29.8675        2008.2724+-7.3764        
   Quicksort.c                                      696.5685+-1.2122          694.4550+-14.2886       
   stepanov_container.cpp                          5830.7129+-14.5595    ?   5833.9621+-21.0850       ?
   Towers.c                                         494.4412+-4.2497          493.4085+-1.7915        

   &lt;arithmetic&gt;                                    2235.6974+-4.7198     ?   2242.3006+-16.8359       ? might be 1.0030x slower
   &lt;geometric&gt; *                                   1373.9217+-5.5283     ?   1375.3999+-7.2820        ? might be 1.0011x slower
   &lt;harmonic&gt;                                      1009.0399+-5.0517     ?   1009.4332+-6.3465        ? might be 1.0004x slower

                                                        TipOfTree                 PolyInline                                    
All benchmarks:
   &lt;arithmetic&gt;                                     155.1876+-0.3016     !    156.1091+-0.5973        ! definitely 1.0059x slower
   &lt;geometric&gt;                                       17.9896+-0.0226     !     18.1537+-0.0416        ! definitely 1.0091x slower
   &lt;harmonic&gt;                                         4.9180+-0.0281     ^      4.8290+-0.0097        ^ definitely 1.0184x faster

                                                        TipOfTree                 PolyInline                                    
Geomean of preferred means:
   &lt;scaled-result&gt;                                   79.6170+-0.1866     !     80.3163+-0.1431        ! definitely 1.0088x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031024</commentid>
    <comment_count>28</comment_count>
      <attachid>237056</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-24 21:37:58 -0700</bug_when>
    <thetext>Created attachment 237056
the patch

Some fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031025</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-24 21:40:32 -0700</bug_when>
    <thetext>Attachment 237056 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/CallEdgeProfile.cpp:70:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Spectrum.h:114:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGNode.h:182:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 3 in 73 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>1031151</commentid>
    <comment_count>30</comment_count>
      <attachid>237087</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-25 08:39:16 -0700</bug_when>
    <thetext>Created attachment 237087
the patch

Fix for CMake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031152</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-25 08:42:27 -0700</bug_when>
    <thetext>Attachment 237087 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/CallEdgeProfile.cpp:70:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Spectrum.h:114:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGNode.h:182:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 3 in 73 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>1031190</commentid>
    <comment_count>32</comment_count>
      <attachid>237099</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-25 11:37:15 -0700</bug_when>
    <thetext>Created attachment 237099
the patch

More fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031191</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-25 11:39:20 -0700</bug_when>
    <thetext>Attachment 237099 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/CallEdgeProfile.cpp:70:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Spectrum.h:114:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGNode.h:182:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 3 in 73 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>1031200</commentid>
    <comment_count>34</comment_count>
      <attachid>237099</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-08-25 12:16:08 -0700</bug_when>
    <thetext>Comment on attachment 237099
the patch

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

&gt; Source/JavaScriptCore/bytecode/CallEdgeProfile.cpp:55
&gt; +        for (CallEdge entry : m_otherCallees-&gt;m_processed) {

CallEdge&amp;?

&gt; Source/JavaScriptCore/bytecode/CallEdgeProfile.cpp:82
&gt; +    for (CallEdge edge : callEdges())

CallEdge&amp;?

&gt; Source/JavaScriptCore/bytecode/CallEdgeProfile.cpp:212
&gt; +        for (auto entry : *m_otherCallees-&gt;m_temporarySpectrum)

I think auto&amp; is best here. The pointed-to items are not super huge, but we have scripts that flag uses of &quot;for (auto &quot; because it has been a problem in other places, and it&apos;s nice to stay out of the noise.

&gt; Source/JavaScriptCore/bytecode/CallVariant.h:172
&gt; +    JSCell* m_callee;

It looks like this value is ultimately a member of a heap data structure. Does it need to be a WriteBarrier&lt;JSCell&gt;?

&gt; Source/WTF/wtf/OwnPtr.h:81
&gt; +        // Construct an object to store into this OwnPtr, but only so long as this OwnPtr
&gt; +        // doesn&apos;t already point to an object. This will ensure that after you call this,
&gt; +        // the OwnPtr will point to an instance of T. This instance may or may not have been
&gt; +        // created by this call. Moreover, this call uses an opportunistic transaction, in
&gt; +        // that we may create an instance of T and then immediately throw it away.

Comment should probably mention concurrency: &quot;will point to an instance of T, even in called concurrently&quot;.

&gt; Source/WTF/wtf/Spectrum.h:55
&gt; +        for (auto entry : otherSpectrum)

auto&amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031207</commentid>
    <comment_count>35</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-25 12:39:51 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (From update of attachment 237099 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=237099&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/CallEdgeProfile.cpp:55
&gt; &gt; +        for (CallEdge entry : m_otherCallees-&gt;m_processed) {
&gt; 
&gt; CallEdge&amp;?

I&apos;ll fix these in this patch and I understand the reasoning, but I think it&apos;s a dangerous trade-off.  We used to use references a lot in the DFG - and it led to crash bugs if the underlying storage was changed.  Ever since, we&apos;ve been erring on the side of copying to avoid such crashes.  I guess that this won&apos;t happen in any of these loops, but to me it feels like bad form to introduce aliasing unless it&apos;s really needed, since it can cause memory corruption bugs.

&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/CallEdgeProfile.cpp:82
&gt; &gt; +    for (CallEdge edge : callEdges())
&gt; 
&gt; CallEdge&amp;?

Fixed, but see above.

&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/CallEdgeProfile.cpp:212
&gt; &gt; +        for (auto entry : *m_otherCallees-&gt;m_temporarySpectrum)
&gt; 
&gt; I think auto&amp; is best here. The pointed-to items are not super huge, but we have scripts that flag uses of &quot;for (auto &quot; because it has been a problem in other places, and it&apos;s nice to stay out of the noise.

Fixed, but see above.  I assume that the problem you&apos;re referring to is copying large amounts of stuff?

&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/CallVariant.h:172
&gt; &gt; +    JSCell* m_callee;
&gt; 
&gt; It looks like this value is ultimately a member of a heap data structure. Does it need to be a WriteBarrier&lt;JSCell&gt;?

I think I just added a comment about this.  CallVariant is meant to be used form the concurrent JIT thread, so WriteBarrier&lt;JSCell&gt; would just get in the way.  We don&apos;t want to fire barriers from the concurrent threads.  At least until we finally fix the bug where JS doesn&apos;t have concurrency. :-P

&gt; 
&gt; &gt; Source/WTF/wtf/OwnPtr.h:81
&gt; &gt; +        // Construct an object to store into this OwnPtr, but only so long as this OwnPtr
&gt; &gt; +        // doesn&apos;t already point to an object. This will ensure that after you call this,
&gt; &gt; +        // the OwnPtr will point to an instance of T. This instance may or may not have been
&gt; &gt; +        // created by this call. Moreover, this call uses an opportunistic transaction, in
&gt; &gt; +        // that we may create an instance of T and then immediately throw it away.
&gt; 
&gt; Comment should probably mention concurrency: &quot;will point to an instance of T, even in called concurrently&quot;.

Will fix.

&gt; 
&gt; &gt; Source/WTF/wtf/Spectrum.h:55
&gt; &gt; +        for (auto entry : otherSpectrum)
&gt; 
&gt; auto&amp;

Fixed, but see above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031223</commentid>
    <comment_count>36</comment_count>
      <attachid>237099</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2014-08-25 14:28:25 -0700</bug_when>
    <thetext>Comment on attachment 237099
the patch

Attachment 237099 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/4980519884292096

New failing tests:
compositing/checkerboard.html
compositing/absolute-position-changed-in-composited-layer.html
compositing/bounds-in-flipped-writing-mode.html
accessibility/adjacent-continuations-cause-assertion-failure.html
canvas/philip/tests/2d.clearRect+fillRect.alpha0.html
animations/3d/matrix-transform-type-animation.html
animations/animation-border-overflow.html
animations/3d/transform-origin-vs-functions.html
http/tests/appcache/abort-cache-onchecking.html
animations/3d/state-at-end-event-transform.html
canvas/philip/tests/2d.clearRect+fillRect.basic.html
animations/animation-add-events-in-handler.html
animations/animation-controller-drt-api.html
animations/additive-transform-animations.html
animations/3d/replace-filling-transform.html
http/tests/appcache/abort-cache-onchecking-resource-404.html
accessibility/alt-tag-on-image-with-nonimage-role.html
compositing/absolute-position-changed-with-composited-parent-layer.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031224</commentid>
    <comment_count>37</comment_count>
      <attachid>237107</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2014-08-25 14:28:32 -0700</bug_when>
    <thetext>Created attachment 237107
Archive of layout-test-results from webkit-ews-09 for mac-mountainlion-wk2

The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews.
Bot: webkit-ews-09  Port: mac-mountainlion-wk2  Platform: Mac OS X 10.8.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031229</commentid>
    <comment_count>38</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-25 15:06:44 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; (From update of attachment 237099 [details])
&gt; Attachment 237099 [details] did not pass mac-wk2-ews (mac-wk2):
&gt; Output: http://webkit-queues.appspot.com/results/4980519884292096
&gt; 
&gt; New failing tests:
&gt; compositing/checkerboard.html
&gt; compositing/absolute-position-changed-in-composited-layer.html
&gt; compositing/bounds-in-flipped-writing-mode.html
&gt; accessibility/adjacent-continuations-cause-assertion-failure.html
&gt; canvas/philip/tests/2d.clearRect+fillRect.alpha0.html
&gt; animations/3d/matrix-transform-type-animation.html
&gt; animations/animation-border-overflow.html
&gt; animations/3d/transform-origin-vs-functions.html
&gt; http/tests/appcache/abort-cache-onchecking.html
&gt; animations/3d/state-at-end-event-transform.html
&gt; canvas/philip/tests/2d.clearRect+fillRect.basic.html
&gt; animations/animation-add-events-in-handler.html
&gt; animations/animation-controller-drt-api.html
&gt; animations/additive-transform-animations.html
&gt; animations/3d/replace-filling-transform.html
&gt; http/tests/appcache/abort-cache-onchecking-resource-404.html
&gt; accessibility/alt-tag-on-image-with-nonimage-role.html
&gt; compositing/absolute-position-changed-with-composited-parent-layer.html

The bot seems to be failing these even without my patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031239</commentid>
    <comment_count>39</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-25 15:38:00 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/172940</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031281</commentid>
    <comment_count>40</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-08-25 19:00:19 -0700</bug_when>
    <thetext>Looks like this patch broke fast/storage/serialized-script-value.html:

Thread 15 Crashed:: DFG Worklist Worker Thread
0   com.apple.JavaScriptCore      	0x0000000109f50f7a WTFCrash + 42 (Assertions.cpp:329)
1   com.apple.JavaScriptCore      	0x0000000109998325 JSC::DFG::SpeculativeJIT::speculationCheck(JSC::ExitKind, JSC::JSValueSource, JSC::DFG::Edge, JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::Jump) + 101 (DFGSpeculativeJIT.cpp:171)
2   com.apple.JavaScriptCore      	0x00000001099df645 JSC::DFG::SpeculativeJIT::fillSpeculateCell(JSC::DFG::Edge) + 1413 (DFGSpeculativeJIT64.cpp:1053)
3   com.apple.JavaScriptCore      	0x00000001099b58f0 JSC::DFG::SpeculateCellOperand::gpr() + 144 (DFGSpeculativeJIT.h:3094)
4   com.apple.JavaScriptCore      	0x00000001099d72da JSC::DFG::SpeculateCellOperand::SpeculateCellOperand(JSC::DFG::SpeculativeJIT*, JSC::DFG::Edge, JSC::DFG::OperandSpeculationMode) + 266 (DFGSpeculativeJIT.h:3069)
5   com.apple.JavaScriptCore      	0x00000001099b584b JSC::DFG::SpeculateCellOperand::SpeculateCellOperand(JSC::DFG::SpeculativeJIT*, JSC::DFG::Edge, JSC::DFG::OperandSpeculationMode) + 43 (DFGSpeculativeJIT.h:3070)
6   com.apple.JavaScriptCore      	0x00000001099af1b7 JSC::DFG::SpeculativeJIT::speculateCell(JSC::DFG::Edge) + 103 (DFGSpeculativeJIT.cpp:4583)
7   com.apple.JavaScriptCore      	0x00000001099b046d JSC::DFG::SpeculativeJIT::speculate(JSC::DFG::Node*, JSC::DFG::Edge) + 733 (DFGSpeculativeJIT.cpp:4855)
8   com.apple.JavaScriptCore      	0x00000001099f5f8f JSC::DFG::SpeculativeJIT::compile(JSC::DFG::Node*) + 72895 (DFGSpeculativeJIT64.cpp:4646)
9   com.apple.JavaScriptCore      	0x000000010999e450 JSC::DFG::SpeculativeJIT::compileCurrentBlock() + 1776 (DFGSpeculativeJIT.cpp:1452)
10  com.apple.JavaScriptCore      	0x000000010999ec36 JSC::DFG::SpeculativeJIT::compile() + 182 (DFGSpeculativeJIT.cpp:1558)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031391</commentid>
    <comment_count>41</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-26 09:43:05 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 136256</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031908</commentid>
    <comment_count>42</comment_count>
      <attachid>237289</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-27 22:16:59 -0700</bug_when>
    <thetext>Created attachment 237289
patch for relanding

This has a fix for the crash that Alexey saw.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031909</commentid>
    <comment_count>43</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-27 22:18:19 -0700</bug_when>
    <thetext>Attachment 237289 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/CallEdgeProfile.cpp:70:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Spectrum.h:114:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGNode.h:182:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 3 in 74 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>1031943</commentid>
    <comment_count>44</comment_count>
      <attachid>237289</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2014-08-28 01:16:42 -0700</bug_when>
    <thetext>Comment on attachment 237289
patch for relanding

Attachment 237289 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/6048694088499200

New failing tests:
canvas/philip/tests/2d.clearRect+fillRect.basic.html
canvas/philip/tests/2d.clearRect+fillRect.alpha0.5.html
canvas/philip/tests/2d.clearRect+fillRect.alpha0.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031944</commentid>
    <comment_count>45</comment_count>
      <attachid>237300</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2014-08-28 01:16:49 -0700</bug_when>
    <thetext>Created attachment 237300
Archive of layout-test-results from webkit-ews-16 for mac-mountainlion-wk2

The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews.
Bot: webkit-ews-16  Port: mac-mountainlion-wk2  Platform: Mac OS X 10.8.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032044</commentid>
    <comment_count>46</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-28 12:11:01 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/173069</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235586</attachid>
            <date>2014-07-27 16:49:51 -0700</date>
            <delta_ts>2014-07-29 21:26:02 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>8576</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVBy
b2ZpbGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxFZGdlUHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkNhbGxFZGdlUHJvZmlsZS5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworVmVjdG9yPENhbGxFZGdlPiBDYWxsRWRnZVByb2ZpbGU6OmNhbGxFZGdlKCkgY29uc3QKK3sK
KyAgICBWZWN0b3I8Q2FsbEVkZ2U+IHJlc3VsdDsKKyAgICAKKyAgICBpZiAobV9wcmltYXJ5Q2Fs
bGVlKQorICAgICAgICByZXN1bHQuYXBwZW5kKENhbGxFZGdlKG1fcHJpbWFyeUNhbGxlZSwgbV9u
dW1DYWxsc1RvUHJpbWFyeSkpOworICAgIAorICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAg
ICAgICBmb3IgKGF1dG8gZW50cnkgOiAqbV9vdGhlckNhbGxlZXMpCisgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKENhbGxFZGdlKGVudHJ5LmtleSwgZW50cnkudmFsdWUpKTsKKyAgICB9CisgICAg
CisgICAgc3RkOjpzb3J0KHJlc3VsdC5iZWdpbigpLCByZXN1bHQuZW5kKCksIFtdIChjb25zdCBD
YWxsRWRnZSYgYSwgY29uc3QgQ2FsbEVkZ2UmIGIpIC0+IGJvb2wgeworICAgICAgICAgICAgcmV0
dXJuIGEuY291bnQoKSA+IGIuY291bnQoKTsKKyAgICAgICAgfSk7CisgICAgCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworQ2FsbEVkZ2VMb2c6OkNhbGxFZGdlTG9nKCkKKyAgICA6IG1fc2NhbGVk
TG9nSW5kZXgobG9nU2l6ZSAqIHNpemVvZihFbnRyeSkpCit7Cit9CisKK0NhbGxFZGdlTG9nOjp+
Q2FsbEVkZ2VMb2coKSB7IH0KKworZXh0ZXJuICJDIiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHJvY2Vzc0NhbGxFZGdlTG9nKENhbGxFZGdlTG9nKikgV1RGX0lOVEVSTkFMOworZXh0ZXJu
ICJDIiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHJvY2Vzc0NhbGxFZGdlTG9nKENhbGxF
ZGdlTG9nKiBsb2cpCit7CisgICAgbG9nLT5wcm9jZXNzTG9nKCk7Cit9CisKK3ZvaWQgQ2FsbEVk
Z2VMb2c6OmVtaXRMb2dDb2RlKENDYWxsSGVscGVycyYgaml0LCBDYWxsRWRnZVByb2ZpbGUqIHBy
b2ZpbGUsIEdQUlJlZyBjYWxsZWVHUFIpCit7CisgICAgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZB
cmd1bWVudHMgPSAxOworICAgIAorICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gR1BSSW5mbzo6cmVn
VDA7CisgICAgaWYgKHNjcmF0Y2hHUFIgPT0gY2FsbGVlR1BSKQorICAgICAgICBzY3JhdGNoR1BS
ID0gR1BSSW5mbzo6cmVnVDE7CisgICAgCisgICAgaml0LmxvYWQzMigmbV9zY2FsZWRMb2dJbmRl
eCwgc2NyYXRjaEdQUik7CisgICAgCisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG9rID0gaml0LmJy
YW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIHNjcmF0Y2hHUFIpOworICAgIAorICAg
IGlmIChHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzIDwgbnVtYmVyT2ZBcmd1bWVu
dHMpCisgICAgICAgIGppdC5zdWJQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0YWNr
QWxpZ25tZW50Qnl0ZXMoKSksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwor
ICAgIAorICAgIGppdC5tb3ZlKGNhbGxlZUdQUiwgR1BSSW5mbzo6cmVnVDMpOworICAgIGppdC5z
ZXR1cEFyZ3VtZW50cyhjYWxsZWVHUFIpOworICAgIHNjcmF0Y2hHUFIgPSBHUFJJbmZvOjpub25B
cmdHUFIwOworICAgIGlmIChzY3JhdGNoR1BSID09IEdQUkluZm86OnJlZ1QzKQorICAgICAgICBz
Y3JhdGNoR1BSID0gR1BSSW5mbzo6bm9uQXJnR1BSMTsKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIob3BlcmF0aW9uUHJvY2Vzc0NhbGxFZGdlTG9nKSwgc2NyYXRjaCk7
CisgICAgaml0LmNhbGwoc2NyYXRjaCk7CisgICAgaml0Lm1vdmUoR1BSSW5mbzo6cmVnVDMsIGNh
bGxlZUdQUik7CisgICAgCisgICAgaWYgKEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3Rl
cnMgPCBudW1iZXJPZkFyZ3VtZW50cykKKyAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoc3RhY2tBbGlnbm1lbnRCeXRlcygpKSwgQ0NhbGxIZWxwZXJzOjpzdGFj
a1BvaW50ZXJSZWdpc3Rlcik7CisgICAgCisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIobG9nU2l6ZSAqIHNpemVvZihFbnRyeSkpLCBzY3JhdGNoR1BSKTsKKyAgICBvay5s
aW5rKCZqaXQpOworCisgICAgaml0LnN1YjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHNp
emVvZihFbnRyeSkpLCBzY3JhdGNoR1BSKTsKKyAgICBqaXQuc3RvcmUzMihzY3JhdGNoR1BSLCAm
bV9zY2FsZWRMb2dJbmRleCk7CisgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIobV9sb2cpLCBzY3JhdGNoR1BSKTsKKyAgICBqaXQuc3RvcmU2NChjYWxsZWVHUFIsIEND
YWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW50cnksIG1f
dmFsdWUpKSk7CisgICAgaml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihw
cm9maWxlKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIE9CSkVDVF9PRkZTRVRP
RihFbnRyeSwgbV9wcm9maWxlKSkpOworfQorCit2b2lkIENhbGxFZGdlTG9nOjpwcm9jZXNzTG9n
KCkKK3sKKyAgICBBU1NFUlQoIShtX3NjYWxlZExvZ0luZGV4ICUgc2l6ZW9mKEVudHJ5KSkpOwor
ICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IG1fc2NhbGVkTG9nSW5kZXggLyBzaXplb2YoRW50
cnkpOyBpIDwgbG9nU2l6ZTsgKytpKQorICAgICAgICBtX2xvZ1tpXS5tX3Byb2ZpbGUtPmFkZCht
X2xvZ1tpXS5tX3ZhbHVlKTsKKyAgICAKKyAgICBtX3NjYWxlZExvZ0luZGV4ID0gbG9nU2l6ZSAq
IHNpemVvZihFbnRyeSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ2FsbEVkZ2VQcm9maWxlX2gKKyNkZWZp
bmUgQ2FsbEVkZ2VQcm9maWxlX2gKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKKworY2xhc3MgQ2FsbEVkZ2UgeworcHVibGljOgorICAgIENhbGxFZGdl
KEpTQ2VsbCogY2FsbGVlLCB1bnNpZ25lZCBjb3VudCkKKyAgICAgICAgOiBtX2NhbGxlZShjYWxs
ZWUpCisgICAgICAgICwgbV9jb3VudChjb3VudCkKKyAgICB7CisgICAgfQorICAgIAorICAgIENh
bGxFZGdlKCkKKyAgICAgICAgOiBDYWxsRWRnZShudWxscHRyLCAwKQorICAgIHsKKyAgICB9Cisg
ICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7IH0KKyAg
ICAKKyAgICBKU0NlbGwqIGNhbGxlZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGVlOyB9CisgICAg
dW5zaWduZWQgY291bnQoKSBjb25zdCB7IHJldHVybiBtX2NvdW50OyB9CisgICAgCitwdWJsaWM6
CisgICAgSlNDZWxsKiBtX2NhbGxlZTsKKyAgICB1bnNpZ25lZCBtX2NvdW50OworfTsKKworY2xh
c3MgQ2FsbEVkZ2VQcm9maWxlIHsKK3B1YmxpYzoKKyAgICBDYWxsRWRnZVByb2ZpbGUoKQorICAg
ICAgICA6IG1fbnVtQ2FsbHNUb1ByaW1hcnkoMCkKKyAgICAgICAgLCBtX251bUNhbGxzVG9Ob3RD
ZWxsKDApCisgICAgICAgICwgbV9wcmltYXJ5Q2FsbGVlKG51bGxwdHIpCisgICAgeworICAgIH0K
KyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYWRkKEpTVmFsdWUgdmFsdWUpCisgICAgewor
ICAgICAgICBpZiAoVU5MSUtFWSghdmFsdWUuaXNDZWxsKCkpKSB7CisgICAgICAgICAgICBtX251
bUNhbGxzVG9Ob3RDZWxsKys7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIEpTQ2VsbCogY2VsbCA9IHZhbHVlLmFzQ2VsbCgpOworICAgICAgICAKKyAg
ICAgICAgSlNDZWxsKiBjYWxsZWU7CisgICAgICAgIGlmIChMSUtFTFkoY2VsbC0+dHlwZSgpID09
IEpTRnVuY3Rpb25UeXBlKSkKKyAgICAgICAgICAgIGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9u
Kj4oY2VsbCktPmV4ZWN1dGFibGUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2FsbGVl
ID0gY2VsbDsKKyAgICAgICAgCisgICAgICAgIGlmIChVTkxJS0VMWSghbV9wcmltYXJ5Q2FsbGVl
KSkgeworICAgICAgICAgICAgbV9wcmltYXJ5Q2FsbGVlID0gY2FsbGVlOworICAgICAgICAgICAg
bV9udW1DYWxsc1RvUHJpbWFyeSA9IDE7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIGlmIChMSUtFTFkobV9wcmltYXJ5Q2FsbGVlID09IGNhbGxlZSkp
IHsKKyAgICAgICAgICAgIG1fbnVtQ2FsbHNUb1ByaW1hcnkrKzsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKFVOTElLRUxZKCFtX290aGVyQ2Fs
bGVlcykpCisgICAgICAgICAgICBtX290aGVyQ2FsbGVlcyA9IHN0ZDo6bWFrZV91bmlxdWU8U3Bl
Y3RydW08SlNDZWxsKj4+KCk7CisgICAgICAgIAorICAgICAgICBtX290aGVyQ2FsbGVlcy0+YWRk
KGNhbGxlZSk7CisgICAgfQorICAgIAorICAgIFZlY3RvcjxDYWxsRWRnZT4gY2FsbEVkZ2VzKCkg
Y29uc3Q7CisgICAgCitwcml2YXRlOgorICAgIHVuc2lnbmVkIG1fbnVtQ2FsbHNUb1ByaW1hcnk7
CisgICAgdW5zaWduZWQgbV9udW1DYWxsc1RvTm90Q2VsbDsKKyAgICBKU0NlbGwqIG1fcHJpbWFy
eUNhbGxlZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3BlY3RydW08SlNDZWxsKj4+IG1fb3RoZXJD
YWxsZWVzOworfTsKKworY2xhc3MgQ2FsbEVkZ2VMb2cgeworcHVibGljOgorICAgIENhbGxFZGdl
TG9nKCk7CisgICAgfkNhbGxFZGdlTG9nKCk7CisgICAgCisgICAgdm9pZCBlbWl0TG9nQ29kZShD
Q2FsbEhlbHBlcnMmLCBDYWxsRWRnZVByb2ZpbGUqLCBHUFJSZWcgY2FsbGVlR1BSKTsgLy8gQXNz
dW1lcyB0aGF0IHN0YWNrIGlzIGFsaWduZWQsIGFsbCB2b2xhdGlsZSByZWdpc3RlcnMgLSBvdGhl
ciB0aGFuIGNhbGxlZUdQUiAtIGFyZSBjbG9iYmVyYWJsZSwgYW5kIHRoZSBwYXJhbWV0ZXIgc3Bh
Y2UgaXMgaW4gdXNlLgorICAgIAorICAgIHZvaWQgcHJvY2Vzc0xvZygpOworICAgIAorcHJpdmF0
ZToKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGxvZ1NpemUgPSAxMDAwMDsKKyAgICAKKyAgICBzdHJ1Y3QgRW50cnkg
eworICAgICAgICBKU1ZhbHVlIG1fdmFsdWU7CisgICAgICAgIENhbGxFZGdlUHJvZmlsZSogbV9w
cm9maWxlOworICAgIH07CisgICAgCisgICAgdW5zaWduZWQgbV9zY2FsZWRMb2dJbmRleDsKKyAg
ICBFbnRyeSBtX2xvZ1tsb2dTaXplXTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gQ2FsbEVkZ2VQcm9maWxlX2gKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235733</attachid>
            <date>2014-07-29 21:26:02 -0700</date>
            <delta_ts>2014-08-06 21:09:49 -0700</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>25534</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
Lmpzb24JKHJldmlzaW9uIDE3MTc2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtOTcsMTUgKzk3LDE1IEBACiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2NhcHR1cmVkX2Z1bmMiLCAibGVuZ3RoIiA6IDQg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19mdW5jX2V4cCIsICJsZW5ndGgiIDog
MyB9LAotICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbCIsICJsZW5ndGgiIDogOSB9LAot
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbF9ldmFsIiwgImxlbmd0aCIgOiA5IH0sCi0g
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jYWxsX3ZhcmFyZ3MiLCAibGVuZ3RoIiA6IDkgfSwK
KyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGwiLCAibGVuZ3RoIiA6IDEwIH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9jYWxsX2V2YWwiLCAibGVuZ3RoIiA6IDEwIH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9jYWxsX3ZhcmFyZ3MiLCAibGVuZ3RoIiA6IDEwIH0sCiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90ZWFyX29mZl9hY3RpdmF0aW9uIiwgImxlbmd0aCIg
OiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90ZWFyX29mZl9hcmd1bWVudHMiLCAi
bGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3JldCIsICJsZW5ndGgi
IDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcmV0X29iamVjdF9vcl90aGlzIiwg
Imxlbmd0aCIgOiAzIH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jb25zdHJ1Y3QiLCAi
bGVuZ3RoIiA6IDkgfSwKLSAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NvbnN0cnVjdF92YXJh
cmdzIiwgImxlbmd0aCIgOiA5IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jb25zdHJ1
Y3QiLCAibGVuZ3RoIiA6IDEwIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jb25zdHJ1
Y3RfdmFyYXJncyIsICJsZW5ndGgiIDogMTAgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X3N0cmNhdCIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdG9f
cHJpbWl0aXZlIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9n
ZXRfcG5hbWVzIiwgImxlbmd0aCIgOiA2IH0sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTE2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDYWxsRWRnZVBy
b2ZpbGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1ZlY3RvcjxDYWxsRWRnZT4gQ2FsbEVkZ2VQ
cm9maWxlOjpjYWxsRWRnZSgpIGNvbnN0Cit7CisgICAgVmVjdG9yPENhbGxFZGdlPiByZXN1bHQ7
CisgICAgCisgICAgaWYgKG1fcHJpbWFyeUNhbGxlZSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZChD
YWxsRWRnZShtX3ByaW1hcnlDYWxsZWUsIG1fbnVtQ2FsbHNUb1ByaW1hcnkpKTsKKyAgICAKKyAg
ICBpZiAobV9vdGhlckNhbGxlZXMpIHsKKyAgICAgICAgZm9yIChhdXRvIGVudHJ5IDogKm1fb3Ro
ZXJDYWxsZWVzKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChDYWxsRWRnZShlbnRyeS5rZXks
IGVudHJ5LnZhbHVlKSk7CisgICAgfQorICAgIAorICAgIHN0ZDo6c29ydChyZXN1bHQuYmVnaW4o
KSwgcmVzdWx0LmVuZCgpLCBbXSAoY29uc3QgQ2FsbEVkZ2UmIGEsIGNvbnN0IENhbGxFZGdlJiBi
KSAtPiBib29sIHsKKyAgICAgICAgICAgIHJldHVybiBhLmNvdW50KCkgPiBiLmNvdW50KCk7Cisg
ICAgICAgIH0pOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0NhbGxFZGdlTG9nOjpD
YWxsRWRnZUxvZygpCisgICAgOiBtX3NjYWxlZExvZ0luZGV4KGxvZ1NpemUgKiBzaXplb2YoRW50
cnkpKQoreworfQorCitDYWxsRWRnZUxvZzo6fkNhbGxFZGdlTG9nKCkgeyB9CisKKyNpZiBFTkFC
TEUoSklUKQorCitleHRlcm4gIkMiIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNz
Q2FsbEVkZ2VMb2coQ2FsbEVkZ2VMb2cqKSBXVEZfSU5URVJOQUw7CitleHRlcm4gIkMiIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2coQ2FsbEVkZ2VMb2cqIGxv
ZykKK3sKKyAgICBsb2ctPnByb2Nlc3NMb2coKTsKK30KKwordm9pZCBDYWxsRWRnZUxvZzo6ZW1p
dExvZ0NvZGUoQ0NhbGxIZWxwZXJzJiBqaXQsIENhbGxFZGdlUHJvZmlsZSogcHJvZmlsZSwgSlNW
YWx1ZVJlZ3MgY2FsbGVlUmVncykKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkFyZ3Vt
ZW50cyA9IDE7CisgICAgCisgICAgR1BSUmVnIHNjcmF0Y2hHUFI7CisgICAgaWYgKCFjYWxsZWVS
ZWdzLnVzZXMoR1BSSW5mbzo6cmVnVDApKQorICAgICAgICBzY3JhdGNoR1BSID0gR1BSSW5mbzo6
cmVnVDA7CisgICAgZWxzZSBpZiAoIWNhbGxlZVJlZ3MudXNlcyhHUFJJbmZvOjpyZWdUMSkpCisg
ICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJbmZvOjpyZWdUMTsKKyAgICBlbHNlCisgICAgICAgIHNj
cmF0Y2hHUFIgPSBHUFJJbmZvOjpyZWdUMjsKKyAgICAKKyAgICBqaXQubG9hZDMyKCZtX3NjYWxl
ZExvZ0luZGV4LCBzY3JhdGNoR1BSKTsKKyAgICAKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgb2sg
PSBqaXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6Tm9uWmVybywgc2NyYXRjaEdQUik7Cisg
ICAgCisgICAgQVNTRVJUKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkgPj0gMSArIG51bWJlck9m
QXJndW1lbnRzKTsKKyAgICAKKyAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihzdGFja0FsaWdubWVudEJ5dGVzKCkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyKTsKKyAgICAKKyAgICBqaXQuc3RvcmVWYWx1ZShjYWxsZWVSZWdzLCBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2l6ZW9mKEpT
VmFsdWUpKSk7CisgICAgaml0LnNldHVwQXJndW1lbnRzKGNhbGxlZVJlZ3MpOworICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VM
b2cpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICBqaXQuY2FsbChzY3JhdGNoKTsKKyAgICBq
aXQubG9hZFZhbHVlKENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9p
bnRlclJlZ2lzdGVyLCBzaXplb2YoSlNWYWx1ZSkpLCBjYWxsZWVSZWdzKTsKKyAgICAKKyAgICBq
aXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdGFja0FsaWdubWVudEJ5dGVz
KCkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAKKyAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihsb2dTaXplICogc2l6ZW9mKEVudHJ5KSks
IHNjcmF0Y2hHUFIpOworICAgIG9rLmxpbmsoJmppdCk7CisKKyAgICBqaXQuc3ViMzIoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2l6ZW9mKEVudHJ5KSksIHNjcmF0Y2hHUFIpOworICAgIGpp
dC5zdG9yZTMyKHNjcmF0Y2hHUFIsICZtX3NjYWxlZExvZ0luZGV4KTsKKyAgICBqaXQuYWRkUHRy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX2xvZyksIHNjcmF0Y2hHUFIpOworICAgIGpp
dC5zdG9yZVZhbHVlKGNhbGxlZVJlZ3MsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BS
LCBPQkpFQ1RfT0ZGU0VUT0YoRW50cnksIG1fdmFsdWUpKSk7CisgICAgaml0LnN0b3JlUHRyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihwcm9maWxlKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHNjcmF0Y2hHUFIsIE9CSkVDVF9PRkZTRVRPRihFbnRyeSwgbV9wcm9maWxlKSkpOworfQorCisj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKKwordm9pZCBDYWxsRWRnZUxvZzo6cHJvY2Vzc0xvZygpCit7
CisgICAgQVNTRVJUKCEobV9zY2FsZWRMb2dJbmRleCAlIHNpemVvZihFbnRyeSkpKTsKKyAgICAK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3NjYWxlZExvZ0luZGV4IC8gc2l6ZW9mKEVudHJ5KTsg
aSA8IGxvZ1NpemU7ICsraSkKKyAgICAgICAgbV9sb2dbaV0ubV9wcm9maWxlLT5hZGQobV9sb2db
aV0ubV92YWx1ZSk7CisgICAgCisgICAgbV9zY2FsZWRMb2dJbmRleCA9IGxvZ1NpemUgKiBzaXpl
b2YoRW50cnkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENhbGxFZGdlUHJvZmlsZV9oCisjZGVmaW5lIENh
bGxFZGdlUHJvZmlsZV9oCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CisKK2NsYXNzIENhbGxFZGdlIHsKK3B1YmxpYzoKKyAgICBDYWxsRWRnZShKU0Nl
bGwqIGNhbGxlZSwgdW5zaWduZWQgY291bnQpCisgICAgICAgIDogbV9jYWxsZWUoY2FsbGVlKQor
ICAgICAgICAsIG1fY291bnQoY291bnQpCisgICAgeworICAgIH0KKyAgICAKKyAgICBDYWxsRWRn
ZSgpCisgICAgICAgIDogQ2FsbEVkZ2UobnVsbHB0ciwgMCkKKyAgICB7CisgICAgfQorICAgIAor
ICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fY2FsbGVlOyB9CisgICAgCisg
ICAgSlNDZWxsKiBjYWxsZWUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlZTsgfQorICAgIHVuc2ln
bmVkIGNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb3VudDsgfQorICAgIAorcHVibGljOgorICAg
IEpTQ2VsbCogbV9jYWxsZWU7CisgICAgdW5zaWduZWQgbV9jb3VudDsKK307CisKK2NsYXNzIENh
bGxFZGdlUHJvZmlsZSB7CitwdWJsaWM6CisgICAgQ2FsbEVkZ2VQcm9maWxlKCkKKyAgICAgICAg
OiBtX251bUNhbGxzVG9QcmltYXJ5KDApCisgICAgICAgICwgbV9udW1DYWxsc1RvTm90Q2VsbCgw
KQorICAgICAgICAsIG1fcHJpbWFyeUNhbGxlZShudWxscHRyKQorICAgIHsKKyAgICB9CisgICAg
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGFkZChKU1ZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAg
ICAgaWYgKFVOTElLRVkoIXZhbHVlLmlzQ2VsbCgpKSkgeworICAgICAgICAgICAgbV9udW1DYWxs
c1RvTm90Q2VsbCsrOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBKU0NlbGwqIGNlbGwgPSB2YWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgCisgICAgICAg
IEpTQ2VsbCogY2FsbGVlOworICAgICAgICBpZiAoTElLRUxZKGNlbGwtPnR5cGUoKSA9PSBKU0Z1
bmN0aW9uVHlwZSkpCisgICAgICAgICAgICBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNl
bGwpLT5leGVjdXRhYmxlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNhbGxlZSA9IGNl
bGw7CisgICAgICAgIAorICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcHJpbWFyeUNhbGxlZSkpIHsK
KyAgICAgICAgICAgIG1fcHJpbWFyeUNhbGxlZSA9IGNhbGxlZTsKKyAgICAgICAgICAgIG1fbnVt
Q2FsbHNUb1ByaW1hcnkgPSAxOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBpZiAoTElLRUxZKG1fcHJpbWFyeUNhbGxlZSA9PSBjYWxsZWUpKSB7Cisg
ICAgICAgICAgICBtX251bUNhbGxzVG9QcmltYXJ5Kys7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChVTkxJS0VMWSghbV9vdGhlckNhbGxlZXMp
KQorICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN0cnVt
PEpTQ2VsbCo+PigpOworICAgICAgICAKKyAgICAgICAgbV9vdGhlckNhbGxlZXMtPmFkZChjYWxs
ZWUpOworICAgIH0KKyAgICAKKyAgICBWZWN0b3I8Q2FsbEVkZ2U+IGNhbGxFZGdlcygpIGNvbnN0
OworICAgIAorcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBtX251bUNhbGxzVG9QcmltYXJ5OworICAg
IHVuc2lnbmVkIG1fbnVtQ2FsbHNUb05vdENlbGw7CisgICAgSlNDZWxsKiBtX3ByaW1hcnlDYWxs
ZWU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNwZWN0cnVtPEpTQ2VsbCo+PiBtX290aGVyQ2FsbGVl
czsKK307CisKK2NsYXNzIENhbGxFZGdlTG9nIHsKK3B1YmxpYzoKKyAgICBDYWxsRWRnZUxvZygp
OworICAgIH5DYWxsRWRnZUxvZygpOworCisjaWYgRU5BQkxFKEpJVCkgICAgCisgICAgdm9pZCBl
bWl0TG9nQ29kZShDQ2FsbEhlbHBlcnMmLCBDYWxsRWRnZVByb2ZpbGUqLCBKU1ZhbHVlUmVncyBj
YWxsZWVSZWdzKTsgLy8gQXNzdW1lcyB0aGF0IHN0YWNrIGlzIGFsaWduZWQsIGFsbCB2b2xhdGls
ZSByZWdpc3RlcnMgLSBvdGhlciB0aGFuIGNhbGxlZUdQUiAtIGFyZSBjbG9iYmVyYWJsZSwgYW5k
IHRoZSBwYXJhbWV0ZXIgc3BhY2UgaXMgaW4gdXNlLgorI2VuZGlmIC8vIEVOQUJMRShKSVQpCisg
ICAgCisgICAgdm9pZCBwcm9jZXNzTG9nKCk7CisgICAgCitwcml2YXRlOgorICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
bG9nU2l6ZSA9IDEwMDAwOworICAgIAorICAgIHN0cnVjdCBFbnRyeSB7CisgICAgICAgIEpTVmFs
dWUgbV92YWx1ZTsKKyAgICAgICAgQ2FsbEVkZ2VQcm9maWxlKiBtX3Byb2ZpbGU7CisgICAgfTsK
KyAgICAKKyAgICB1bnNpZ25lZCBtX3NjYWxlZExvZ0luZGV4OworICAgIEVudHJ5IG1fbG9nW2xv
Z1NpemVdOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDYWxsRWRnZVBy
b2ZpbGVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAkocmV2aXNpb24gMTcxNzY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzOSw2ICs1MzksNyBAQCB2b2lk
IENvZGVCbG9jazo6cHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mCiAgICAgfQogICAgICsraXQ7CiAg
ICAgKytpdDsKKyAgICArK2l0OwogICAgIGR1bXBBcnJheVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQ
cmludGVkUHJvZmlsaW5nKTsKICAgICBkdW1wVmFsdWVQcm9maWxpbmcob3V0LCBpdCwgaGFzUHJp
bnRlZFByb2ZpbGluZyk7CiB9CkBAIC0xMzEzLDcgKzEzMTQsNyBAQCB2b2lkIENvZGVCbG9jazo6
ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgaW50IGFyZ3VtZW50cyA9ICgrK2l0KS0+dS5vcGVy
YW5kOwogICAgICAgICAgICAgaW50IGZpcnN0RnJlZVJlZ2lzdGVyID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBpbnQgdmFyQXJnT2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICArK2l0OworICAgICAgICAgICAgKytpdDsgKytpdDsKICAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgb3Bjb2RlID09IG9wX2Nh
bGxfdmFyYXJncyA/ICJjYWxsX3ZhcmFyZ3MiIDogImNvbnN0cnVjdF92YXJhcmdzIik7CiAgICAg
ICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzLCAlcywgJWQsICVkIiwgcmVnaXN0ZXJOYW1l
KHJlc3VsdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoY2FsbGVlKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZSh0aGlzVmFsdWUpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGFyZ3VtZW50cykuZGF0YSgpLCBmaXJz
dEZyZWVSZWdpc3RlciwgdmFyQXJnT2Zmc2V0KTsKICAgICAgICAgICAgIGR1bXBWYWx1ZVByb2Zp
bGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKQEAgLTE3NDMsNyArMTc0NCw5IEBA
IENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICAgICAgbV92YWx1
ZVByb2ZpbGVzLnJlc2l6ZVRvRml0KHNpemUpOwogICAgIGlmIChzaXplX3Qgc2l6ZSA9IHVubGlu
a2VkQ29kZUJsb2NrLT5udW1iZXJPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlcygpKQogICAgICAg
ICBtX29iamVjdEFsbG9jYXRpb25Qcm9maWxlcy5yZXNpemVUb0ZpdChzaXplKTsKLQorICAgIGlm
IChzaXplX3Qgc2l6ZSA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkNhbGxFZGdlUHJvZmls
ZXMoKSkKKyAgICAgICAgbV9jYWxsRWRnZVByb2ZpbGVzLmdyb3coc2l6ZSk7CisgICAgCiAgICAg
Ly8gQ29weSBhbmQgdHJhbnNsYXRlIHRoZSBVbmxpbmtlZEluc3RydWN0aW9ucwogICAgIHVuc2ln
bmVkIGluc3RydWN0aW9uQ291bnQgPSB1bmxpbmtlZENvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCku
Y291bnQoKTsKICAgICBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtOjpSZWFkZXIgaW5zdHJ1Y3Rp
b25SZWFkZXIodW5saW5rZWRDb2RlQmxvY2stPmluc3RydWN0aW9ucygpKTsKQEAgLTE3NjIsMTQg
KzE3NjUsMzAgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogbwogICAg
ICAgICB9CiAgICAgICAgIHN3aXRjaCAocGNbMF0udS5vcGNvZGUpIHsKICAgICAgICAgY2FzZSBv
cF9jYWxsX3ZhcmFyZ3M6Ci0gICAgICAgIGNhc2Ugb3BfY29uc3RydWN0X3ZhcmFyZ3M6CisgICAg
ICAgIGNhc2Ugb3BfY29uc3RydWN0X3ZhcmFyZ3M6IHsKKyAgICAgICAgICAgIGluc3RydWN0aW9u
c1tpICsgb3BMZW5ndGggLSAzXSA9ICZtX2NhbGxFZGdlUHJvZmlsZXNbcGNbb3BMZW5ndGggLSAz
XS51Lm9wZXJhbmRdOworCisgICAgICAgICAgICBpbnQgYXJyYXlQcm9maWxlSW5kZXggPSBwY1tv
cExlbmd0aCAtIDJdLnUub3BlcmFuZDsKKyAgICAgICAgICAgIG1fYXJyYXlQcm9maWxlc1thcnJh
eVByb2ZpbGVJbmRleF0gPSBBcnJheVByb2ZpbGUoaSk7CisKKyAgICAgICAgICAgIGluc3RydWN0
aW9uc1tpICsgb3BMZW5ndGggLSAyXSA9ICZtX2FycmF5UHJvZmlsZXNbYXJyYXlQcm9maWxlSW5k
ZXhdOworICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gJm1fdmFsdWVQcm9maWxl
c1twY1tvcExlbmd0aCAtIDFdLnUub3BlcmFuZF07CisgICAgICAgICAgICBBU1NFUlQocHJvZmls
ZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7CisgICAgICAgICAgICBwcm9maWxlLT5tX2J5dGVj
b2RlT2Zmc2V0ID0gaTsKKyAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgb3BMZW5ndGggLSAx
XSA9IHByb2ZpbGU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX2dldF9ieV92YWw6CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbDogewog
ICAgICAgICAgICAgaW50IGFycmF5UHJvZmlsZUluZGV4ID0gcGNbb3BMZW5ndGggLSAyXS51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBtX2FycmF5UHJvZmlsZXNbYXJyYXlQcm9maWxlSW5kZXhdID0g
QXJyYXlQcm9maWxlKGkpOwogCiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3Ro
IC0gMl0gPSAmbV9hcnJheVByb2ZpbGVzW2FycmF5UHJvZmlsZUluZGV4XTsKLSAgICAgICAgICAg
IEZBTExUSFJPVUdIOworICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gJm1fdmFs
dWVQcm9maWxlc1twY1tvcExlbmd0aCAtIDFdLnUub3BlcmFuZF07CisgICAgICAgICAgICBBU1NF
UlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7CisgICAgICAgICAgICBwcm9maWxl
LT5tX2J5dGVjb2RlT2Zmc2V0ID0gaTsKKyAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgb3BM
ZW5ndGggLSAxXSA9IHByb2ZpbGU7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX2dldF9ieV9pZDogewogICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9m
aWxlID0gJm1fdmFsdWVQcm9maWxlc1twY1tvcExlbmd0aCAtIDFdLnUub3BlcmFuZF07CkBAIC0x
ODE4LDYgKzE4MzcsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBv
CiAgICAgICAgICAgICBpbnQgYXJyYXlQcm9maWxlSW5kZXggPSBwY1tvcExlbmd0aCAtIDJdLnUu
b3BlcmFuZDsKICAgICAgICAgICAgIG1fYXJyYXlQcm9maWxlc1thcnJheVByb2ZpbGVJbmRleF0g
PSBBcnJheVByb2ZpbGUoaSk7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3Ro
IC0gMl0gPSAmbV9hcnJheVByb2ZpbGVzW2FycmF5UHJvZmlsZUluZGV4XTsKKyAgICAgICAgICAg
IGluc3RydWN0aW9uc1tpICsgb3BMZW5ndGggLSAzXSA9ICZtX2NhbGxFZGdlUHJvZmlsZXNbcGNb
b3BMZW5ndGggLSAzXS51Lm9wZXJhbmRdOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA1
XSA9ICZtX2xsaW50Q2FsbExpbmtJbmZvc1twY1s1XS51Lm9wZXJhbmRdOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KQEAgLTE4MjYsNiArMTg0Niw3IEBAIENvZGVCbG9jazo6Q29kZUJs
b2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmls
ZSA9ICZtX3ZhbHVlUHJvZmlsZXNbcGNbb3BMZW5ndGggLSAxXS51Lm9wZXJhbmRdOwogICAgICAg
ICAgICAgQVNTRVJUKHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOwogICAgICAgICAg
ICAgcHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9IGk7CisgICAgICAgICAgICBpbnN0cnVjdGlv
bnNbaSArIG9wTGVuZ3RoIC0gM10gPSAmbV9jYWxsRWRnZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0g
M10udS5vcGVyYW5kXTsKICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgb3BMZW5ndGggLSAx
XSA9IHByb2ZpbGU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTcxNzY4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDY3LDYgKzEwNjcsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxBcnJheUFsbG9j
YXRpb25Qcm9maWxlPiBtX2FycmF5QWxsb2NhdGlvblByb2ZpbGVzOwogICAgIEFycmF5UHJvZmls
ZVZlY3RvciBtX2FycmF5UHJvZmlsZXM7CiAgICAgVmVjdG9yPE9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlPiBtX29iamVjdEFsbG9jYXRpb25Qcm9maWxlczsKKyAgICBWZWN0b3I8Q2FsbEVkZ2VQcm9m
aWxlPiBtX2NhbGxFZGdlUHJvZmlsZXM7CiAKICAgICAvLyBDb25zdGFudCBQb29sCiAgICAgQ09N
UElMRV9BU1NFUlQoc2l6ZW9mKFJlZ2lzdGVyKSA9PSBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25v
d24+KSwgUmVnaXN0ZXJfbXVzdF9iZV9zYW1lX3NpemVfYXNfV3JpdGVCYXJyaWVyX1Vua25vd24p
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJ
KHJldmlzaW9uIDE3MTc2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0
cnVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiBjbGFzcyBBcnJheUFsbG9jYXRpb25Qcm9maWxlOwogY2xhc3MgQXJyYXlQcm9maWxlOwor
Y2xhc3MgQ2FsbEVkZ2VQcm9maWxlOwogY2xhc3MgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7CiBj
bGFzcyBWYXJpYWJsZVdhdGNocG9pbnRTZXQ7CiBzdHJ1Y3QgTExJbnRDYWxsTGlua0luZm87CkBA
IC05Niw2ICs5Nyw3IEBAIHN0cnVjdCBJbnN0cnVjdGlvbiB7CiAgICAgSW5zdHJ1Y3Rpb24oQXJy
YXlQcm9maWxlKiBwcm9maWxlKSB7IHUuYXJyYXlQcm9maWxlID0gcHJvZmlsZTsgfQogICAgIElu
c3RydWN0aW9uKEFycmF5QWxsb2NhdGlvblByb2ZpbGUqIHByb2ZpbGUpIHsgdS5hcnJheUFsbG9j
YXRpb25Qcm9maWxlID0gcHJvZmlsZTsgfQogICAgIEluc3RydWN0aW9uKE9iamVjdEFsbG9jYXRp
b25Qcm9maWxlKiBwcm9maWxlKSB7IHUub2JqZWN0QWxsb2NhdGlvblByb2ZpbGUgPSBwcm9maWxl
OyB9CisgICAgSW5zdHJ1Y3Rpb24oQ2FsbEVkZ2VQcm9maWxlKiBwcm9maWxlKSB7IHUuY2FsbEVk
Z2VQcm9maWxlID0gcHJvZmlsZTsgfQogICAgIEluc3RydWN0aW9uKFdyaXRlQmFycmllcjxVbmtu
b3duPiogcmVnaXN0ZXJQb2ludGVyKSB7IHUucmVnaXN0ZXJQb2ludGVyID0gcmVnaXN0ZXJQb2lu
dGVyOyB9CiAgICAgSW5zdHJ1Y3Rpb24oU3BlY2lhbDo6UG9pbnRlciBwb2ludGVyKSB7IHUuc3Bl
Y2lhbFBvaW50ZXIgPSBwb2ludGVyOyB9CiAgICAgSW5zdHJ1Y3Rpb24oU3RyaW5nSW1wbCogdWlk
KSB7IHUudWlkID0gdWlkOyB9CkBAIC0xMTYsNiArMTE4LDcgQEAgc3RydWN0IEluc3RydWN0aW9u
IHsKICAgICAgICAgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGU7CiAgICAgICAgIEFycmF5QWxs
b2NhdGlvblByb2ZpbGUqIGFycmF5QWxsb2NhdGlvblByb2ZpbGU7CiAgICAgICAgIE9iamVjdEFs
bG9jYXRpb25Qcm9maWxlKiBvYmplY3RBbGxvY2F0aW9uUHJvZmlsZTsKKyAgICAgICAgQ2FsbEVk
Z2VQcm9maWxlKiBjYWxsRWRnZVByb2ZpbGU7CiAgICAgICAgIFZhcmlhYmxlV2F0Y2hwb2ludFNl
dCogd2F0Y2hwb2ludFNldDsKICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxKU0FjdGl2YXRpb24+
IGFjdGl2YXRpb247CiAgICAgICAgIHZvaWQqIHBvaW50ZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAkocmV2aXNpb24g
MTcxNzY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDcgQEAgY2xhc3MgVW5saW5rZWRJbnN0
cnVjdGlvblN0cmVhbTsKIAogdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZFZhbHVlUHJvZmlsZTsK
IHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRBcnJheVByb2ZpbGU7Cit0eXBlZGVmIHVuc2lnbmVk
IFVubGlua2VkQ2FsbEVkZ2VQcm9maWxlOwogdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZEFycmF5
QWxsb2NhdGlvblByb2ZpbGU7CiB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkT2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGU7CiB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkTExJbnRDYWxsTGlua0luZm87
CkBAIC00MTYsNiArNDE3LDggQEAgcHVibGljOgogICAgIHVuc2lnbmVkIG51bWJlck9mT2JqZWN0
QWxsb2NhdGlvblByb2ZpbGVzKCkgeyByZXR1cm4gbV9vYmplY3RBbGxvY2F0aW9uUHJvZmlsZUNv
dW50OyB9CiAgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgYWRkVmFsdWVQcm9maWxlKCkgeyByZXR1
cm4gbV92YWx1ZVByb2ZpbGVDb3VudCsrOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZWYWx1ZVBy
b2ZpbGVzKCkgeyByZXR1cm4gbV92YWx1ZVByb2ZpbGVDb3VudDsgfQorICAgIFVubGlua2VkQ2Fs
bEVkZ2VQcm9maWxlIGFkZENhbGxFZGdlUHJvZmlsZSgpIHsgcmV0dXJuIG1fY2FsbEVkZ2VQcm9m
aWxlQ291bnQrKzsgfQorICAgIHVuc2lnbmVkIG51bWJlck9mQ2FsbEVkZ2VQcm9maWxlcygpIHsg
cmV0dXJuIG1fY2FsbEVkZ2VQcm9maWxlQ291bnQ7IH0KIAogICAgIFVubGlua2VkTExJbnRDYWxs
TGlua0luZm8gYWRkTExJbnRDYWxsTGlua0luZm8oKSB7IHJldHVybiBtX2xsaW50Q2FsbExpbmtJ
bmZvQ291bnQrKzsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mTExpbnRDYWxsTGlua0luZm9zKCkg
eyByZXR1cm4gbV9sbGludENhbGxMaW5rSW5mb0NvdW50OyB9CkBAIC01NTEsNiArNTU0LDcgQEAg
cHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2FycmF5QWxsb2NhdGlvblByb2ZpbGVDb3VudDsKICAg
ICB1bnNpZ25lZCBtX29iamVjdEFsbG9jYXRpb25Qcm9maWxlQ291bnQ7CiAgICAgdW5zaWduZWQg
bV92YWx1ZVByb2ZpbGVDb3VudDsKKyAgICB1bnNpZ25lZCBtX2NhbGxFZGdlUHJvZmlsZUNvdW50
OwogICAgIHVuc2lnbmVkIG1fbGxpbnRDYWxsTGlua0luZm9Db3VudDsKIAogcHVibGljOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDE3MTc2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02MzIsNiArNjMyLDExIEBAIFVubGlua2VkQXJyYXlQcm9maWxlIEJ5dGVjb2RlR2VuZXJhdG9y
OjoKICAgICByZXR1cm4gbV9jb2RlQmxvY2stPmFkZEFycmF5UHJvZmlsZSgpOwogfQogCitVbmxp
bmtlZENhbGxFZGdlUHJvZmlsZSBCeXRlY29kZUdlbmVyYXRvcjo6bmV3Q2FsbEVkZ2VQcm9maWxl
KCkKK3sKKyAgICByZXR1cm4gbV9jb2RlQmxvY2stPmFkZENhbGxFZGdlUHJvZmlsZSgpOworfQor
CiBVbmxpbmtlZEFycmF5QWxsb2NhdGlvblByb2ZpbGUgQnl0ZWNvZGVHZW5lcmF0b3I6Om5ld0Fy
cmF5QWxsb2NhdGlvblByb2ZpbGUoKQogewogICAgIHJldHVybiBtX2NvZGVCbG9jay0+YWRkQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZSgpOwpAQCAtMTc4OCw2ICsxNzkzLDcgQEAgUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKAogICAgIGV4cGVjdGVkRnVuY3Rpb24gPSBlbWl0
RXhwZWN0ZWRGdW5jdGlvblNuaXBwZXQoZHN0LCBmdW5jLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxs
QXJndW1lbnRzLCBkb25lLmdldCgpKTsKICAgICAKICAgICAvLyBFbWl0IGNhbGwuCisgICAgVW5s
aW5rZWRDYWxsRWRnZVByb2ZpbGUgY2FsbEVkZ2VQcm9maWxlID0gbmV3Q2FsbEVkZ2VQcm9maWxl
KCk7CiAgICAgVW5saW5rZWRBcnJheVByb2ZpbGUgYXJyYXlQcm9maWxlID0gbmV3QXJyYXlQcm9m
aWxlKCk7CiAgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9w
Y29kZShvcGNvZGVJRCk7CiAgICAgQVNTRVJUKGRzdCk7CkBAIC0xNzk4LDYgKzE4MDQsNyBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoCiAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGNhbGxBcmd1bWVudHMuc3RhY2tPZmZzZXQoKSk7CiAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKG1fY29kZUJsb2NrLT5hZGRMTEludENhbGxMaW5rSW5mbygpKTsKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxFZGdl
UHJvZmlsZSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFycmF5UHJvZmlsZSk7CiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb2ZpbGUpOwogICAgIApAQCAtMTgzMyw2ICsxODQwLDcg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsVgogICAgIGVtaXRFeHBy
ZXNzaW9uSW5mbyhkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwogCiAgICAgLy8gRW1pdCBj
YWxsLgorICAgIFVubGlua2VkQ2FsbEVkZ2VQcm9maWxlIGNhbGxFZGdlUHJvZmlsZSA9IG5ld0Nh
bGxFZGdlUHJvZmlsZSgpOwogICAgIFVubGlua2VkQXJyYXlQcm9maWxlIGFycmF5UHJvZmlsZSA9
IG5ld0FycmF5UHJvZmlsZSgpOwogICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBl
bWl0UHJvZmlsZWRPcGNvZGUob3Bjb2RlKTsKICAgICBBU1NFUlQoZHN0ICE9IGlnbm9yZWRSZXN1
bHQoKSk7CkBAIC0xODQyLDYgKzE4NTAsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdENhbGxWCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFyZ3VtZW50cy0+aW5kZXgo
KSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZpcnN0RnJlZVJlZ2lzdGVyLT5pbmRleCgp
KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZmlyc3RWYXJBcmdPZmZzZXQpOworICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChjYWxsRWRnZVByb2ZpbGUpOwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChhcnJheVByb2ZpbGUpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9maWxl
KTsKICAgICBpZiAobV9zaG91bGRFbWl0UHJvZmlsZUhvb2tzKSB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CShyZXZpc2lvbiAxNzE3NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3NSw2ICs0NzUsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgVW5saW5rZWRBcnJheUFsbG9jYXRpb25Qcm9maWxlIG5l
d0FycmF5QWxsb2NhdGlvblByb2ZpbGUoKTsKICAgICAgICAgVW5saW5rZWRPYmplY3RBbGxvY2F0
aW9uUHJvZmlsZSBuZXdPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpOwogICAgICAgICBVbmxpbmtl
ZEFycmF5UHJvZmlsZSBuZXdBcnJheVByb2ZpbGUoKTsKKyAgICAgICAgVW5saW5rZWRDYWxsRWRn
ZVByb2ZpbGUgbmV3Q2FsbEVkZ2VQcm9maWxlKCk7CiAgICAgICAgIFVubGlua2VkVmFsdWVQcm9m
aWxlIGVtaXRQcm9maWxlZE9wY29kZShPcGNvZGVJRCk7CiAgICAgICAgIGludCBraWxsKFJlZ2lz
dGVySUQqIGRzdCkKICAgICAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAxNzE3NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCw2ICs4OCwy
MSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAgICAgCisgICAgdm9pZCBsb2FkVmFsdWUoQWRk
cmVzcyBhZGRyZXNzLCBKU1ZhbHVlUmVncyByZWdzKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0
KQorICAgICAgICBsb2FkNjQoYWRkcmVzcywgcmVncy5ncHIoKSk7CisjZWxzZQorICAgICAgICBp
ZiAoYWRkcmVzcy5iYXNlID09IHJlZ3MucGF5bG9hZEdQUigpKSB7CisgICAgICAgICAgICBsb2Fk
MzIoYWRkcmVzcy53aXRoT2Zmc2V0KFRhZ09mZnNldCksIHJlZ3MudGFnR1BSKCkpOworICAgICAg
ICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldChQYXlsb2FkT2Zmc2V0KSwgcmVncy5wYXls
b2FkR1BSKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mu
d2l0aE9mZnNldChQYXlsb2FkT2Zmc2V0KSwgcmVncy5wYXlsb2FkR1BSKCkpOworICAgICAgICAg
ICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldChUYWdPZmZzZXQpLCByZWdzLnRhZ0dQUigpKTsK
KyAgICAgICAgfQorI2VuZGlmCisgICAgfQorICAgIAogICAgIHZvaWQgbW92ZVRydXN0ZWRWYWx1
ZShKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlUmVncyByZWdzKQogICAgIHsKICNpZiBVU0UoSlNWQUxV
RTY0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCShyZXZp
c2lvbiAxNzE3NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjY2LDYgKzE2NjYsMTUgQEAgcHVibGljOgogICAgICAgICBt
b3ZlKGFyZzQsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CiAgICAgfQogI2VuZGlmCisgICAgCisg
ICAgdm9pZCBzZXR1cEFyZ3VtZW50cyhKU1ZhbHVlUmVncyBhcmcxKQorICAgIHsKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgICAgICBzZXR1cEFyZ3VtZW50cyhhcmcxLmdwcigpKTsKKyNlbHNlCisg
ICAgICAgIHNldHVwQXJndW1lbnRzKGFyZzEucGF5bG9hZEdQUigpLCBhcmcxLnRhZ0dQUigpKTsK
KyNlbmRpZgorICAgIH0KIAogICAgIHZvaWQgc2V0dXBSZXN1bHRzKEdQUlJlZyBkZXN0QSwgR1BS
UmVnIGRlc3RCKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5m
by5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCShy
ZXZpc2lvbiAxNzE3NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAko
d29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsOCBAQCBwdWJsaWM6CiAgICAgR1BSUmVnIHRhZ0dQ
UigpIGNvbnN0IHsgcmV0dXJuIEludmFsaWRHUFJSZWc7IH0KICAgICBHUFJSZWcgcGF5bG9hZEdQ
UigpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByOyB9CiAgICAgCisgICAgYm9vbCB1c2VzKEdQUlJlZyBn
cHIpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByID09IGdwcjsgfQorICAgIAogcHJpdmF0ZToKICAgICBH
UFJSZWcgbV9ncHI7CiB9OwpAQCAtMTY5LDYgKzE3MSw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIHRhZ0dQUigpOwogICAgIH0KIAorICAgIGJvb2wgdXNlcyhHUFJSZWcgZ3ByKSBjb25zdCB7
IHJldHVybiBtX3RhZ0dQUiA9PSBncHIgfHwgbV9wYXlsb2FkR1BSID09IGdwcjsgfQorICAgIAog
cHJpdmF0ZToKICAgICBpbnQ4X3QgbV90YWdHUFI7CiAgICAgaW50OF90IG1fcGF5bG9hZEdQUjsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHJldmlz
aW9uIDE3MTc2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAwLDYgKzMwMCwxMSBAQCB2b2lkIEpJVDo6Y29tcGlsZU9w
Q2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgc3RvcmUzMihyZWdUMCwgQWRkcmVzcyhzdGFja1Bv
aW50ZXJSZWdpc3RlciwgSlNTdGFjazo6Q2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2Yo
UmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsK
ICAgICBzdG9yZTMyKHJlZ1QxLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBKU1N0YWNr
OjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgVGFnT2Zmc2V0
IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAKKyAgICBpZiAoc2hvdWxkRW1pdFByb2Zp
bGluZygpKSB7CisgICAgICAgIG1fdm0tPmNhbGxFZGdlTG9nLT5lbWl0TG9nQ29kZSgKKyAgICAg
ICAgICAgICp0aGlzLCBpbnN0cnVjdGlvbltPUENPREVfTEVOR1RIKG9wX2NhbGwpIC0gM10uY2Fs
bEVkZ2VQcm9maWxlLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApKTsKKyAgICB9CisKICAgICBp
ZiAob3Bjb2RlSUQgPT0gb3BfY2FsbF9ldmFsKSB7CiAgICAgICAgIGNvbXBpbGVDYWxsRXZhbChp
bnN0cnVjdGlvbik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQ2FsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDYWxsLmNwcAkocmV2aXNpb24gMTcxNzY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDYWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDYgKzIxMiwxMSBAQCB2b2lk
IEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihjYWxsZWUsIHJlZ1QwKTsgLy8gcmVnVDAgaG9sZHMgY2FsbGVlLgogCiAgICAgc3Rv
cmU2NChyZWdUMCwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgSlNTdGFjazo6Q2FsbGVl
ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAtIHNpemVvZihDYWxsZXJGcmFt
ZUFuZFBDKSkpOworICAgIAorICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKKyAgICAg
ICAgbV92bS0+Y2FsbEVkZ2VMb2ctPmVtaXRMb2dDb2RlKAorICAgICAgICAgICAgKnRoaXMsIGlu
c3RydWN0aW9uW09QQ09ERV9MRU5HVEgob3BfY2FsbCkgLSAzXS5jYWxsRWRnZVByb2ZpbGUsIHJl
Z1QwKTsKKyAgICB9CiAKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbF9ldmFsKSB7CiAgICAg
ICAgIGNvbXBpbGVDYWxsRXZhbChpbnN0cnVjdGlvbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAx
NzE3NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgY29uc3QgRGVsZXRlZFZhbHVl
VGFnID0gLTcKIGNvbnN0IExvd2VzdFRhZyA9IERlbGV0ZWRWYWx1ZVRhZwogZW5kCiAKLWNvbnN0
IENhbGxPcENvZGVTaXplID0gOQorY29uc3QgQ2FsbE9wQ29kZVNpemUgPSAxMAogCiBpZiBYODZf
NjQgb3IgQVJNNjQgb3IgQ19MT09QCiBjb25zdCBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2Fs
bCA9IDAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMTcxNzY4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpA
QCAtNzEsNiArNzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFyaXR5Q2hlY2tG
YWlsUmV0dXJuVGh1bmtzOwogICAgIGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlczsKKyAgICBjbGFz
cyBDYWxsRWRnZUxvZzsKICAgICBjbGFzcyBDb2RlQmxvY2s7CiAgICAgY2xhc3MgQ29kZUNhY2hl
OwogICAgIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwpAQCAtMjMyLDYgKzIzMyw4IEBAIG5hbWVz
cGFjZSBKU0MgewogI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBPd25QdHI8REZHOjpMb25n
TGl2ZWRTdGF0ZT4gZGZnU3RhdGU7CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisgICAgICAg
IAorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbEVkZ2VMb2c+IGNhbGxFZGdlTG9nOwogCiAg
ICAgICAgIFZNVHlwZSB2bVR5cGU7CiAgICAgICAgIENsaWVudERhdGEqIGNsaWVudERhdGE7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236172</attachid>
            <date>2014-08-06 21:09:49 -0700</date>
            <delta_ts>2014-08-07 15:01:42 -0700</delta_ts>
            <desc>better</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>22603</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVBy
b2ZpbGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxFZGdlUHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNTMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkNhbGxFZGdlUHJvZmlsZS5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworVmVjdG9yPENhbGxFZGdlPiBDYWxsRWRnZVByb2ZpbGU6OmNhbGxFZGdlcygpIGNvbnN0Cit7
CisgICAgVmVjdG9yPENhbGxFZGdlPiByZXN1bHQ7CisgICAgCisgICAgaWYgKG1fcHJpbWFyeUNh
bGxlZSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZChDYWxsRWRnZShtX3ByaW1hcnlDYWxsZWUsIG1f
bnVtQ2FsbHNUb1ByaW1hcnkpKTsKKyAgICAKKyAgICBpZiAobV9vdGhlckNhbGxlZXMpIHsKKyAg
ICAgICAgZm9yIChhdXRvIGVudHJ5IDogKm1fb3RoZXJDYWxsZWVzKQorICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZChDYWxsRWRnZShlbnRyeS5rZXksIGVudHJ5LnZhbHVlKSk7CisgICAgfQorICAg
IAorICAgIHN0ZDo6c29ydChyZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpLCBbXSAoY29uc3Qg
Q2FsbEVkZ2UmIGEsIGNvbnN0IENhbGxFZGdlJiBiKSAtPiBib29sIHsKKyAgICAgICAgICAgIHJl
dHVybiBhLmNvdW50KCkgPiBiLmNvdW50KCk7CisgICAgICAgIH0pOworICAgIAorICAgIGlmIChy
ZXN1bHQuc2l6ZSgpID49IDIpCisgICAgICAgIEFTU0VSVChyZXN1bHRbMF0uY291bnQoKSA+IHJl
c3VsdC5sYXN0KCkuY291bnQoKSk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworZmxv
YXQgQ2FsbEVkZ2VQcm9maWxlOjpudW1DYWxsc1RvQ2VsbHMoKSBjb25zdAoreworICAgIGZsb2F0
IHJlc3VsdCA9IDA7CisgICAgZm9yIChDYWxsRWRnZSBlZGdlIDogY2FsbEVkZ2VzKCkpCisgICAg
ICAgIHJlc3VsdCArPSBlZGdlLmNvdW50KCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9p
ZCBDYWxsRWRnZVByb2ZpbGU6OnZpc2l0V2VhaygpCit7CisgICAgaWYgKCFIZWFwOjppc01hcmtl
ZChtX3ByaW1hcnlDYWxsZWUpKSB7CisgICAgICAgIG1fcHJpbWFyeUNhbGxlZSA9IG51bGxwdHI7
CisgICAgICAgIG1fbnVtQ2FsbHNUb0RlbGV0ZWRDZWxsICs9IG1fbnVtQ2FsbHNUb1ByaW1hcnk7
CisgICAgICAgIG1fbnVtQ2FsbHNUb1ByaW1hcnkgPSAwOworICAgIH0KKyAgICAKKyAgICBpZiAo
bV9vdGhlckNhbGxlZXMpIHsKKyAgICAgICAgbV9vdGhlckNhbGxlZXMtPnJlbW92ZUlmKFt0aGlz
XSAoQ2FsbFNwZWN0cnVtOjpLZXlBbmRDb3VudCBlbnRyeSkgeworICAgICAgICAgICAgICAgIGlm
IChIZWFwOjppc01hcmtlZChlbnRyeS5rZXkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbV9udW1DYWxsc1RvRGVs
ZXRlZENlbGwgKz0gZW50cnkudmFsdWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICB9KTsKKyAgICB9Cit9CisKK0NhbGxFZGdlTG9nOjpDYWxsRWRnZUxvZygpCisg
ICAgOiBtX3NjYWxlZExvZ0luZGV4KGxvZ1NpemUgKiBzaXplb2YoRW50cnkpKQoreworfQorCitD
YWxsRWRnZUxvZzo6fkNhbGxFZGdlTG9nKCkgeyB9CisKKyNpZiBFTkFCTEUoSklUKQorCitleHRl
cm4gIkMiIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2coQ2Fs
bEVkZ2VMb2cqKSBXVEZfSU5URVJOQUw7CitleHRlcm4gIkMiIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2coQ2FsbEVkZ2VMb2cqIGxvZykKK3sKKyAgICBsb2ct
PnByb2Nlc3NMb2coKTsKK30KKwordm9pZCBDYWxsRWRnZUxvZzo6ZW1pdExvZ0NvZGUoQ0NhbGxI
ZWxwZXJzJiBqaXQsIENhbGxFZGdlUHJvZmlsZSYgcHJvZmlsZSwgSlNWYWx1ZVJlZ3MgY2FsbGVl
UmVncykKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50cyA9IDE7CisgICAg
CisgICAgR1BSUmVnIHNjcmF0Y2hHUFI7CisgICAgaWYgKCFjYWxsZWVSZWdzLnVzZXMoR1BSSW5m
bzo6cmVnVDApKQorICAgICAgICBzY3JhdGNoR1BSID0gR1BSSW5mbzo6cmVnVDA7CisgICAgZWxz
ZSBpZiAoIWNhbGxlZVJlZ3MudXNlcyhHUFJJbmZvOjpyZWdUMSkpCisgICAgICAgIHNjcmF0Y2hH
UFIgPSBHUFJJbmZvOjpyZWdUMTsKKyAgICBlbHNlCisgICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJ
bmZvOjpyZWdUMjsKKyAgICAKKyAgICBqaXQubG9hZDMyKCZtX3NjYWxlZExvZ0luZGV4LCBzY3Jh
dGNoR1BSKTsKKyAgICAKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgb2sgPSBqaXQuYnJhbmNoVGVz
dDMyKENDYWxsSGVscGVyczo6Tm9uWmVybywgc2NyYXRjaEdQUik7CisgICAgCisgICAgQVNTRVJU
KHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkgPj0gMSArIG51bWJlck9mQXJndW1lbnRzKTsKKyAg
ICAKKyAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdGFja0FsaWdu
bWVudEJ5dGVzKCkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAK
KyAgICBqaXQuc3RvcmVWYWx1ZShjYWxsZWVSZWdzLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0Nh
bGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAg
aml0LnNldHVwQXJndW1lbnRzKGNhbGxlZVJlZ3MpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2cpLCBHUFJJbmZvOjpu
b25BcmdHUFIwKTsKKyAgICBqaXQuY2FsbChzY3JhdGNoKTsKKyAgICBqaXQubG9hZFZhbHVlKEND
YWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBz
aXplb2YoSlNWYWx1ZSkpLCBjYWxsZWVSZWdzKTsKKyAgICAKKyAgICBqaXQuYWRkUHRyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihzdGFja0FsaWdubWVudEJ5dGVzKCkpLCBDQ2FsbEhlbHBl
cnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihsb2dTaXplICogc2l6ZW9mKEVudHJ5KSksIHNjcmF0Y2hHUFIpOwor
ICAgIG9rLmxpbmsoJmppdCk7CisKKyAgICBqaXQuc3ViMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoc2l6ZW9mKEVudHJ5KSksIHNjcmF0Y2hHUFIpOworICAgIGppdC5zdG9yZTMyKHNjcmF0
Y2hHUFIsICZtX3NjYWxlZExvZ0luZGV4KTsKKyAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihtX2xvZyksIHNjcmF0Y2hHUFIpOworICAgIGppdC5zdG9yZVZhbHVlKGNh
bGxlZVJlZ3MsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZGU0VU
T0YoRW50cnksIG1fdmFsdWUpKSk7CisgICAgaml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cigmcHJvZmlsZSksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBP
QkpFQ1RfT0ZGU0VUT0YoRW50cnksIG1fcHJvZmlsZSkpKTsKK30KKwordm9pZCBDYWxsRWRnZUxv
Zzo6ZW1pdExvZ0NvZGUoCisgICAgQ0NhbGxIZWxwZXJzJiBqaXQsIE93blB0cjxDYWxsRWRnZVBy
b2ZpbGU+JiBwcm9maWxlUG9pbnRlciwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncykKK3sKKyAgICBw
cm9maWxlUG9pbnRlci5jcmVhdGVUcmFuc2FjdGlvbmFsbHkoKTsKKyAgICBlbWl0TG9nQ29kZShq
aXQsICpwcm9maWxlUG9pbnRlciwgY2FsbGVlUmVncyk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUo
SklUKQorCit2b2lkIENhbGxFZGdlTG9nOjpwcm9jZXNzTG9nKCkKK3sKKyAgICBBU1NFUlQoISht
X3NjYWxlZExvZ0luZGV4ICUgc2l6ZW9mKEVudHJ5KSkpOworICAgIAorICAgIGZvciAodW5zaWdu
ZWQgaSA9IG1fc2NhbGVkTG9nSW5kZXggLyBzaXplb2YoRW50cnkpOyBpIDwgbG9nU2l6ZTsgKytp
KQorICAgICAgICBtX2xvZ1tpXS5tX3Byb2ZpbGUtPmFkZChtX2xvZ1tpXS5tX3ZhbHVlKTsKKyAg
ICAKKyAgICBtX3NjYWxlZExvZ0luZGV4ID0gbG9nU2l6ZSAqIHNpemVvZihFbnRyeSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbEVkZ2VQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgQ2FsbEVkZ2VQcm9maWxlX2gKKyNkZWZpbmUgQ2FsbEVkZ2VQcm9maWxlX2gK
KworI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKworY2xhc3MgQ2FsbEVk
Z2UgeworcHVibGljOgorICAgIENhbGxFZGdlKEpTQ2VsbCogY2FsbGVlLCBmbG9hdCBjb3VudCkK
KyAgICAgICAgOiBtX2NhbGxlZShjYWxsZWUpCisgICAgICAgICwgbV9jb3VudChjb3VudCkKKyAg
ICB7CisgICAgfQorICAgIAorICAgIENhbGxFZGdlKCkKKyAgICAgICAgOiBDYWxsRWRnZShudWxs
cHRyLCAwKQorICAgIHsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7
IHJldHVybiAhbV9jYWxsZWU7IH0KKyAgICAKKyAgICBKU0NlbGwqIGNhbGxlZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY2FsbGVlOyB9CisgICAgdW5zaWduZWQgY291bnQoKSBjb25zdCB7IHJldHVybiBt
X2NvdW50OyB9CisgICAgCitwdWJsaWM6CisgICAgSlNDZWxsKiBtX2NhbGxlZTsKKyAgICBmbG9h
dCBtX2NvdW50OworfTsKKworY2xhc3MgQ2FsbEVkZ2VQcm9maWxlIHsKK3B1YmxpYzoKKyAgICBD
YWxsRWRnZVByb2ZpbGUoKQorICAgICAgICA6IG1fbnVtQ2FsbHNUb1ByaW1hcnkoMCkKKyAgICAg
ICAgLCBtX251bUNhbGxzVG9Ob3RDZWxsKDApCisgICAgICAgICwgbV9udW1DYWxsc1RvRGVsZXRl
ZENlbGwoMCkKKyAgICAgICAgLCBtX3ByaW1hcnlDYWxsZWUobnVsbHB0cikKKyAgICB7CisgICAg
fQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhZGQoSlNWYWx1ZSB2YWx1ZSkKKyAgICB7
CisgICAgICAgIGlmIChVTkxJS0VZKCF2YWx1ZS5pc0NlbGwoKSkpIHsKKyAgICAgICAgICAgIG1f
bnVtQ2FsbHNUb05vdENlbGwrKzsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgSlNDZWxsKiBjZWxsID0gdmFsdWUuYXNDZWxsKCk7CisgICAgICAgIAor
ICAgICAgICBKU0NlbGwqIGNhbGxlZTsKKyAgICAgICAgaWYgKExJS0VMWShjZWxsLT50eXBlKCkg
PT0gSlNGdW5jdGlvblR5cGUpKQorICAgICAgICAgICAgY2FsbGVlID0ganNDYXN0PEpTRnVuY3Rp
b24qPihjZWxsKS0+ZXhlY3V0YWJsZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjYWxs
ZWUgPSBjZWxsOworICAgICAgICAKKyAgICAgICAgaWYgKFVOTElLRUxZKCFtX3ByaW1hcnlDYWxs
ZWUpKSB7CisgICAgICAgICAgICBtX3ByaW1hcnlDYWxsZWUgPSBjYWxsZWU7CisgICAgICAgICAg
ICBtX251bUNhbGxzVG9QcmltYXJ5ID0gMTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgaWYgKExJS0VMWShtX3ByaW1hcnlDYWxsZWUgPT0gY2FsbGVl
KSkgeworICAgICAgICAgICAgbV9udW1DYWxsc1RvUHJpbWFyeSsrOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoVU5MSUtFTFkoIW1fb3RoZXJD
YWxsZWVzKSkKKyAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzID0gc3RkOjptYWtlX3VuaXF1ZTxT
cGVjdHJ1bTxKU0NlbGwqPj4oKTsKKyAgICAgICAgCisgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5h
ZGQoY2FsbGVlKTsKKyAgICB9CisgICAgCisgICAgZmxvYXQgbnVtQ2FsbHNUb05vdENlbGwoKSBj
b25zdCB7IHJldHVybiBtX251bUNhbGxzVG9Ob3RDZWxsOyB9CisgICAgZmxvYXQgbnVtQ2FsbHNU
b0RlbGV0ZWRDZWxsKCkgY29uc3QgeyByZXR1cm4gbV9udW1DYWxsc1RvRGVsZXRlZENlbGw7IH0K
KyAgICBmbG9hdCBudW1DYWxsc1RvQ2VsbHMoKSBjb25zdDsKKyAgICAKKyAgICBWZWN0b3I8Q2Fs
bEVkZ2U+IGNhbGxFZGdlcygpIGNvbnN0OworICAgIAorICAgIHZvaWQgdmlzaXRXZWFrKCk7Cisg
ICAgCitwcml2YXRlOgorICAgIGZsb2F0IG1fbnVtQ2FsbHNUb1ByaW1hcnk7CisgICAgZmxvYXQg
bV9udW1DYWxsc1RvTm90Q2VsbDsKKyAgICBmbG9hdCBtX251bUNhbGxzVG9EZWxldGVkQ2VsbDsK
KyAgICBKU0NlbGwqIG1fcHJpbWFyeUNhbGxlZTsKKyAgICAKKyAgICB0eXBlZGVmIFNwZWN0cnVt
PEpTQ2VsbCosIGZsb2F0PiBDYWxsU3BlY3RydW07CisgICAgCisgICAgc3RkOjp1bmlxdWVfcHRy
PENhbGxTcGVjdHJ1bT4gbV9vdGhlckNhbGxlZXM7Cit9OworCitjbGFzcyBDYWxsRWRnZUxvZyB7
CitwdWJsaWM6CisgICAgQ2FsbEVkZ2VMb2coKTsKKyAgICB+Q2FsbEVkZ2VMb2coKTsKKworI2lm
IEVOQUJMRShKSVQpICAgIAorICAgIHZvaWQgZW1pdExvZ0NvZGUoQ0NhbGxIZWxwZXJzJiwgQ2Fs
bEVkZ2VQcm9maWxlJiwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncyk7IC8vIEFzc3VtZXMgdGhhdCBz
dGFjayBpcyBhbGlnbmVkLCBhbGwgdm9sYXRpbGUgcmVnaXN0ZXJzIC0gb3RoZXIgdGhhbiBjYWxs
ZWVHUFIgLSBhcmUgY2xvYmJlcmFibGUsIGFuZCB0aGUgcGFyYW1ldGVyIHNwYWNlIGlzIGluIHVz
ZS4KKyAgICAKKyAgICAvLyBTYW1lIGFzIGFib3ZlIGJ1dCBjcmVhdGVzIGEgQ2FsbEVkZ2VQcm9m
aWxlIGluc3RhbmNlIGlmIG9uZSBkaWQgbm90IGFscmVhZHkgZXhpc3QuIERvZXMKKyAgICAvLyB0
aGlzIGluIGEgdGhyZWFkLXNhZmUgbWFubmVyIGJ5IGNhbGxpbmcgLgorICAgIHZvaWQgZW1pdExv
Z0NvZGUoQ0NhbGxIZWxlcHJzJiwgT3duUHRyPENhbGxFZGdlUHJvZmlsZT4mLCBKU1ZhbHVlUmVn
cyBjYWxsZWVSZWdzKTsKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorICAgIAorICAgIHZvaWQgcHJv
Y2Vzc0xvZygpOworICAgIAorcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOworCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvZ1NpemUgPSAxMDAwMDsK
KyAgICAKKyAgICBzdHJ1Y3QgRW50cnkgeworICAgICAgICBKU1ZhbHVlIG1fdmFsdWU7CisgICAg
ICAgIENhbGxFZGdlUHJvZmlsZSogbV9wcm9maWxlOworICAgIH07CisgICAgCisgICAgdW5zaWdu
ZWQgbV9zY2FsZWRMb2dJbmRleDsKKyAgICBFbnRyeSBtX2xvZ1tsb2dTaXplXTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ2FsbEVkZ2VQcm9maWxlX2gKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAJKHJl
dmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlu
a0luZm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4MywxMSBAQCB2b2lkIENhbGxMaW5r
SW5mbzo6dmlzaXRXZWFrKFJlcGF0Y2hCdWZmCiAgICAgfQogICAgIGlmICghIWxhc3RTZWVuQ2Fs
bGVlICYmICFIZWFwOjppc01hcmtlZChsYXN0U2VlbkNhbGxlZS5nZXQoKSkpCiAgICAgICAgIGxh
c3RTZWVuQ2FsbGVlLmNsZWFyKCk7CisgICAgCisgICAgaWYgKGNhbGxFZGdlUHJvZmlsZSkgewor
ICAgICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKKyAgICAgICAgY2FsbEVkZ2VQcm9maWxlLT52
aXNpdFdlYWsoKTsKKyAgICB9CiB9CiAKIENhbGxMaW5rSW5mbyYgQ2FsbExpbmtJbmZvOjpkdW1t
eSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5m
by5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYg
Q2FsbExpbmtJbmZvX2gKICNkZWZpbmUgQ2FsbExpbmtJbmZvX2gKIAorI2luY2x1ZGUgIkNhbGxF
ZGdlUHJvZmlsZS5oIgogI2luY2x1ZGUgIkNsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaCIKICNpbmNs
dWRlICJDb2RlTG9jYXRpb24uaCIKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgi
CkBAIC0zMyw2ICszNCw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIk9w
Y29kZS5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewpAQCAtODgsNiArOTAsNyBAQCBzdHJ1Y3QgQ2FsbExpbmtJbmZvIDogcHVibGljIEJhc2ljUmF3
U2VuCiAgICAgdW5zaWduZWQgY2FsbGVlR1BSIDogODsKICAgICB1bnNpZ25lZCBzbG93UGF0aENv
dW50OwogICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbjsKKyAgICBPd25QdHI8Q2FsbEVkZ2VQcm9m
aWxlPiBjYWxsRWRnZVByb2ZpbGU7CiAKICAgICBib29sIGlzTGlua2VkKCkgeyByZXR1cm4gc3R1
YiB8fCBjYWxsZWU7IH0KICAgICB2b2lkIHVubGluayhSZXBhdGNoQnVmZmVyJik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJ
KHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyNiw3ICs2MjYsNiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTWlzY1N0cmljdEVxCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiB7Ci0KICAgICBib29sIGlzQ2FsbCA9IG5vZGUtPm9wKCkg
PT0gQ2FsbDsKICAgICBpZiAoIWlzQ2FsbCkKICAgICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFw
aCgpLCBub2RlLCBub2RlLT5vcCgpID09IENvbnN0cnVjdCk7CkBAIC02NzAsNiArNjY5LDEwIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKIAogICAgIG1faml0LmVt
aXRTdG9yZUNvZGVPcmlnaW4obm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAKKyAgICBDYWxs
TGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0lu
Zm8oKTsKKyAgICAKKyAgICBtX2ppdC52bSgpLT5jYWxsRWRnZUxvZy0+ZW1pdExvZ0NvZGUobV9q
aXQsIGNhbGxMaW5rSW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBjYWxsZWVHUFIpOworCiAgICAgc2xv
d1BhdGggPSBtX2ppdC5icmFuY2hQdHJXaXRoUGF0Y2goTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBjYWxsZWVHUFIsIHRhcmdldFRvQ2hlY2ssIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KDApKTsKIAogICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2FsbGVl
R1BSLCBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9zY29wZSkpLCByZXN1bHRHUFIpOwpA
QCAtNjgyLDcgKzY4NSw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5v
ZGUKICAgICBzbG93UGF0aC5saW5rKCZtX2ppdCk7CiAgICAgCiAgICAgbV9qaXQubW92ZShjYWxs
ZWVHUFIsIEdQUkluZm86OnJlZ1QwKTsgLy8gQ2FsbGVlIG5lZWRzIHRvIGJlIGluIHJlZ1QwCi0g
ICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkQ2Fs
bExpbmtJbmZvKCk7CiAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpyZWdUMik7IC8vIExpbmsgaW5mbyBuZWVkcyB0byBi
ZSBpbiByZWdUMgogICAgIEpJVENvbXBpbGVyOjpDYWxsIHNsb3dDYWxsID0gbV9qaXQubmVhckNh
bGwoKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsMjEgQEAgcHVibGlj
OgogI2VuZGlmCiAgICAgfQogICAgIAorICAgIHZvaWQgbG9hZFZhbHVlKEFkZHJlc3MgYWRkcmVz
cywgSlNWYWx1ZVJlZ3MgcmVncykKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAg
bG9hZDY0KGFkZHJlc3MsIHJlZ3MuZ3ByKCkpOworI2Vsc2UKKyAgICAgICAgaWYgKGFkZHJlc3Mu
YmFzZSA9PSByZWdzLnBheWxvYWRHUFIoKSkgeworICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mu
d2l0aE9mZnNldChUYWdPZmZzZXQpLCByZWdzLnRhZ0dQUigpKTsKKyAgICAgICAgICAgIGxvYWQz
MihhZGRyZXNzLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCksIHJlZ3MucGF5bG9hZEdQUigpKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQo
UGF5bG9hZE9mZnNldCksIHJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAgICAgIGxvYWQzMihh
ZGRyZXNzLndpdGhPZmZzZXQoVGFnT2Zmc2V0KSwgcmVncy50YWdHUFIoKSk7CisgICAgICAgIH0K
KyNlbmRpZgorICAgIH0KKyAgICAKICAgICB2b2lkIG1vdmVUcnVzdGVkVmFsdWUoSlNWYWx1ZSB2
YWx1ZSwgSlNWYWx1ZVJlZ3MgcmVncykKICAgICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAkocmV2aXNpb24gMTcyMTc3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAkod29ya2luZyBj
b3B5KQpAQCAtMTY2Niw2ICsxNjY2LDE1IEBAIHB1YmxpYzoKICAgICAgICAgbW92ZShhcmc0LCBH
UFJJbmZvOjphcmd1bWVudEdQUjMpOwogICAgIH0KICNlbmRpZgorICAgIAorICAgIHZvaWQgc2V0
dXBBcmd1bWVudHMoSlNWYWx1ZVJlZ3MgYXJnMSkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICAgICAgc2V0dXBBcmd1bWVudHMoYXJnMS5ncHIoKSk7CisjZWxzZQorICAgICAgICBzZXR1
cEFyZ3VtZW50cyhhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSk7CisjZW5kaWYKKyAg
ICB9CiAKICAgICB2b2lkIHNldHVwUmVzdWx0cyhHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QikK
ICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAkocmV2aXNpb24gMTcy
MTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTYwLDYgKzYwLDggQEAgcHVibGljOgogICAgIEdQUlJlZyB0YWdHUFIoKSBjb25zdCB7
IHJldHVybiBJbnZhbGlkR1BSUmVnOyB9CiAgICAgR1BSUmVnIHBheWxvYWRHUFIoKSBjb25zdCB7
IHJldHVybiBtX2dwcjsgfQogICAgIAorICAgIGJvb2wgdXNlcyhHUFJSZWcgZ3ByKSBjb25zdCB7
IHJldHVybiBtX2dwciA9PSBncHI7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3By
OwogfTsKQEAgLTE2OSw2ICsxNzEsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0YWdHUFIo
KTsKICAgICB9CiAKKyAgICBib29sIHVzZXMoR1BSUmVnIGdwcikgY29uc3QgeyByZXR1cm4gbV90
YWdHUFIgPT0gZ3ByIHx8IG1fcGF5bG9hZEdQUiA9PSBncHI7IH0KKyAgICAKIHByaXZhdGU6CiAg
ICAgaW50OF90IG1fdGFnR1BSOwogICAgIGludDhfdCBtX3BheWxvYWRHUFI7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCShyZXZpc2lvbiAxNzIxNzcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMwMCw2ICszMDAsMTMgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2Rl
SUQgb3Bjb2RlSQogICAgIHN0b3JlMzIocmVnVDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0
ZXIsIEpTU3RhY2s6OkNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkg
KyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAgICAgc3RvcmUz
MihyZWdUMSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgSlNTdGFjazo6Q2FsbGVlICog
c3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFRhZ09mZnNldCAtIHNpemVvZihD
YWxsZXJGcmFtZUFuZFBDKSkpOwogCisgICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxv
Y2stPmFkZENhbGxMaW5rSW5mbygpOworCisgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkg
eworICAgICAgICBtX3ZtLT5jYWxsRWRnZUxvZy0+ZW1pdExvZ0NvZGUoCisgICAgICAgICAgICAq
dGhpcywgaW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApKTsK
KyAgICB9CisKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbF9ldmFsKSB7CiAgICAgICAgIGNv
bXBpbGVDYWxsRXZhbChpbnN0cnVjdGlvbik7CiAgICAgICAgIHJldHVybjsKQEAgLTMxMyw3ICsz
MjAsNiBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgYWRk
U2xvd0Nhc2Uoc2xvd0Nhc2UpOwogCiAgICAgQVNTRVJUKG1fY2FsbENvbXBpbGF0aW9uSW5mby5z
aXplKCkgPT0gY2FsbExpbmtJbmZvSW5kZXgpOwotICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1f
Y29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsKICAgICBpbmZvLT5jYWxsVHlwZSA9IENhbGxM
aW5rSW5mbzo6Y2FsbFR5cGVGb3Iob3Bjb2RlSUQpOwogICAgIGluZm8tPmNvZGVPcmlnaW4gPSBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpOwogICAgIGluZm8tPmNhbGxlZUdQUiA9IHJlZ1Qw
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAxNzIx
NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTIsNiArMjEyLDExIEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlE
IG9wY29kZUkKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSwgcmVnVDApOyAvLyBy
ZWdUMCBob2xkcyBjYWxsZWUuCiAKICAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHN0YWNrUG9p
bnRlclJlZ2lzdGVyLCBKU1N0YWNrOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihS
ZWdpc3RlcikpIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CisgICAgCisgICAgQ2FsbExp
bmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5mbygpOworCisgICAgaWYg
KHNob3VsZEVtaXRQcm9maWxpbmcoKSkKKyAgICAgICAgbV92bS0+Y2FsbEVkZ2VMb2ctPmVtaXRM
b2dDb2RlKCp0aGlzLCBpbmZvLT5jYWxsRWRnZVByb2ZpbGUsIHJlZ1QwKTsKIAogICAgIGlmIChv
cGNvZGVJRCA9PSBvcF9jYWxsX2V2YWwpIHsKICAgICAgICAgY29tcGlsZUNhbGxFdmFsKGluc3Ry
dWN0aW9uKTsKQEAgLTIyMyw3ICsyMjgsNiBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNv
ZGVJRCBvcGNvZGVJCiAgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2UpOwogCiAgICAgQVNTRVJUKG1f
Y2FsbENvbXBpbGF0aW9uSW5mby5zaXplKCkgPT0gY2FsbExpbmtJbmZvSW5kZXgpOwotICAgIENh
bGxMaW5rSW5mbyogaW5mbyA9IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsKICAgICBp
bmZvLT5jYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3Iob3Bjb2RlSUQpOwogICAg
IGluZm8tPmNvZGVPcmlnaW4gPSBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpOwogICAgIGlu
Zm8tPmNhbGxlZUdQUiA9IHJlZ1QwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
CShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
CSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3M7CiAgICAgY2xhc3MgQnVpbHRpbkV4ZWN1
dGFibGVzOworICAgIGNsYXNzIENhbGxFZGdlTG9nOwogICAgIGNsYXNzIENvZGVCbG9jazsKICAg
ICBjbGFzcyBDb2RlQ2FjaGU7CiAgICAgY2xhc3MgQ29tbW9uSWRlbnRpZmllcnM7CkBAIC0yMzIs
NiArMjMzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAg
IE93blB0cjxERkc6OkxvbmdMaXZlZFN0YXRlPiBkZmdTdGF0ZTsKICNlbmRpZiAvLyBFTkFCTEUo
REZHX0pJVCkKKyAgICAgICAgCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsRWRnZUxvZz4g
Y2FsbEVkZ2VMb2c7CiAKICAgICAgICAgVk1UeXBlIHZtVHlwZTsKICAgICAgICAgQ2xpZW50RGF0
YSogY2xpZW50RGF0YTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL093blB0ci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL093blB0ci5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2Uv
V1RGL3d0Zi9Pd25QdHIuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsMTQgQEAgbmFtZXNw
YWNlIFdURiB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IE93blB0ciYgb3BlcmF0b3I9
KE93blB0cjxVPiYmKTsKIAogICAgICAgICB2b2lkIHN3YXAoT3duUHRyJiBvKSB7IHN0ZDo6c3dh
cChtX3B0ciwgby5tX3B0cik7IH0KKyAgICAgICAgCisgICAgICAgIC8vIENvbnN0cnVjdCBhbiBv
YmplY3QgdG8gc3RvcmUgaW50byB0aGlzIE93blB0ciwgYnV0IG9ubHkgc28gbG9uZyBhcyB0aGlz
IE93blB0cgorICAgICAgICAvLyBkb2Vzbid0IGFscmVhZHkgcG9pbnQgdG8gYW4gb2JqZWN0LiBU
aGlzIHdpbGwgZW5zdXJlIHRoYXQgYWZ0ZXIgeW91IGNhbGwgdGhpcywKKyAgICAgICAgLy8gdGhl
IE93blB0ciB3aWxsIHBvaW50IHRvIGFuIGluc3RhbmNlIG9mIFQuIFRoaXMgaW5zdGFuY2UgbWF5
IG9yIG1heSBub3QgaGF2ZSBiZWVuCisgICAgICAgIC8vIGNyZWF0ZWQgYnkgdGhpcyBjYWxsLiBN
b3Jlb3ZlciwgdGhpcyBjYWxsIHVzZXMgYW4gb3Bwb3J0dW5pc3RpYyB0cmFuc2FjdGlvbiwgaW4K
KyAgICAgICAgLy8gdGhhdCB3ZSBtYXkgY3JlYXRlIGFuIGluc3RhbmNlIG9mIFQgYW5kIHRoZW4g
aW1tZWRpYXRlbHkgdGhyb3cgaXQgYXdheS4KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4g
QXJncz4KKyAgICAgICAgdm9pZCBjcmVhdGVUcmFuc2FjdGlvbmFsbHkoQXJncy4uLiBhcmdzKTsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IE93blB0cihQdHJUeXBlIHB0cikgOiBt
X3B0cihwdHIpIHsgfQpAQCAtMTg2LDYgKzE5NCwyOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgcmV0dXJuIHAuZ2V0KCk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdGVt
cGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gaW5saW5lIE93blB0cjxUPjo6Y3JlYXRlVHJhbnNhY3Rp
b25hbGx5KEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIGlmIChtX3B0cikgeworICAgICAg
ICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIFQqIG5ld09iamVjdCA9IG5ldyBUKGFyZ3MuLi4pOworICAg
ICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOworI2lmIEVOQUJMRShDT01QQVJFX0FORF9TV0FQ
KQorICAgICAgICBkbyB7CisgICAgICAgICAgICBpZiAobV9wdHIpIHsKKyAgICAgICAgICAgICAg
ICBkZWxldGUgbmV3T2JqZWN0OworICAgICAgICAgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSB3aGls
ZSAoIVdURjo6d2Vha0NvbXBhcmVBbmRTd2FwKCZtX3B0ciwgbnVsbHB0ciwgbmV3T2JqZWN0KSk7
CisjZWxzZQorICAgICAgICBtX3B0ciA9IG5ld09iamVjdDsKKyNlbmRpZgorICAgIH0KKwogfSAv
LyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6T3duUHRyOwpJbmRleDogU291cmNlL1dURi93
dGYvU3BlY3RydW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCShy
ZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zMiwyMiArMzIsMjIgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDb3VudGVyVHlwZSA9IHVuc2ln
bmVkPgogY2xhc3MgU3BlY3RydW0gewogcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFz
aE1hcDxULCB1bnNpZ25lZCBsb25nPjo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiB0
eXBlbmFtZSBIYXNoTWFwPFQsIHVuc2lnbmVkIGxvbmc+Ojpjb25zdF9pdGVyYXRvciBjb25zdF9p
dGVyYXRvcjsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+Ojpp
dGVyYXRvciBpdGVyYXRvcjsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgQ091bnRl
clR5cGU+Ojpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKICAgICAKICAgICBTcGVjdHJ1
bSgpIHsgfQogICAgIAotICAgIHZvaWQgYWRkKGNvbnN0IFQmIGtleSwgdW5zaWduZWQgbG9uZyBj
b3VudCA9IDEpCisgICAgdm9pZCBhZGQoY29uc3QgVCYga2V5LCBDb3VudGVyVHlwZSBjb3VudCA9
IDEpCiAgICAgewotICAgICAgICB0eXBlbmFtZSBIYXNoTWFwPFQsIHVuc2lnbmVkIGxvbmc+OjpB
ZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgY291bnQpOworICAgICAgICB0eXBlbmFt
ZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChr
ZXksIGNvdW50KTsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgKz0gY291bnQ7CiAgICAgfQogICAgIAotICAgIHVuc2ln
bmVkIGxvbmcgZ2V0KGNvbnN0IFQmIGtleSkgY29uc3QKKyAgICBDb3VudGVyVHlwZSBnZXQoY29u
c3QgVCYga2V5KSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3RfaXRlcmF0b3IgaXRlciA9IG1f
bWFwLmZpbmQoa2V5KTsKICAgICAgICAgaWYgKGl0ZXIgPT0gbV9tYXAuZW5kKCkpCkBAIC02Myw3
ICs2Myw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgS2V5QW5kQ291bnQgewogICAgICAgICBLZXlB
bmRDb3VudCgpIHsgfQogICAgICAgICAKLSAgICAgICAgS2V5QW5kQ291bnQoY29uc3QgVCYga2V5
LCB1bnNpZ25lZCBsb25nIGNvdW50KQorICAgICAgICBLZXlBbmRDb3VudChjb25zdCBUJiBrZXks
IENvdW50ZXJUeXBlIGNvdW50KQogICAgICAgICAgICAgOiBrZXkoa2V5KQogICAgICAgICAgICAg
LCBjb3VudChjb3VudCkKICAgICAgICAgewpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIH0KIAogICAgICAgICBUIGtleTsKLSAgICAgICAgdW5zaWduZWQgbG9uZyBjb3VudDsKKyAg
ICAgICAgQ291bnRlclR5cGUgY291bnQ7CiAgICAgfTsKICAgICAKICAgICAvLyBSZXR1cm5zIGEg
bGlzdCBvcmRlcmVkIGZyb20gbG93ZXN0LWNvdW50IHRvIGhpZ2hlc3QtY291bnQuCkBAIC05NCw4
ICs5NCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsaXN0OwogICAgIH0KICAgICAKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIHZvaWQgcmVtb3ZlSWYoY29uc3QgRnVu
Y3RvciYgZnVuY3RvcikKKyAgICB7CisgICAgICAgIG1fbWFwLnJlbW92ZUlmKFtmdW5jdG9yXSAo
SGFzaE1hcDxULCBDb3VudGVyVHlwZT46OktleVZhbHVlUGFpclR5cGUmIHBhaXIpIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZnVuY3RvcihLZXlBbmRDb3VudChwYWlyLmtleSwgcGFpci52YWx1
ZSkpOworICAgICAgICAgICAgfSk7CisgICAgfQorICAgIAogcHJpdmF0ZToKLSAgICBIYXNoTWFw
PFQsIHVuc2lnbmVkIGxvbmc+IG1fbWFwOworICAgIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+IG1f
bWFwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236230</attachid>
            <date>2014-08-07 15:01:42 -0700</date>
            <delta_ts>2014-08-11 12:49:59 -0700</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>39084</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVBy
b2ZpbGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxFZGdlUHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNTUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkNhbGxFZGdlUHJvZmlsZS5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworVmVjdG9yPENhbGxFZGdlPiBDYWxsRWRnZVByb2ZpbGU6OmNhbGxFZGdlcygpIGNvbnN0Cit7
CisgICAgVmVjdG9yPENhbGxFZGdlPiByZXN1bHQ7CisgICAgCisgICAgaWYgKG1fcHJpbWFyeUNh
bGxlZSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZChDYWxsRWRnZShtX3ByaW1hcnlDYWxsZWUsIG1f
bnVtQ2FsbHNUb1ByaW1hcnkpKTsKKyAgICAKKyAgICBpZiAobV9vdGhlckNhbGxlZXMpIHsKKyAg
ICAgICAgZm9yIChhdXRvIGVudHJ5IDogKm1fb3RoZXJDYWxsZWVzKQorICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZChDYWxsRWRnZShlbnRyeS5rZXksIGVudHJ5LnZhbHVlKSk7CisgICAgfQorICAg
IAorICAgIHN0ZDo6c29ydChyZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpLCBbXSAoY29uc3Qg
Q2FsbEVkZ2UmIGEsIGNvbnN0IENhbGxFZGdlJiBiKSAtPiBib29sIHsKKyAgICAgICAgICAgIHJl
dHVybiBhLmNvdW50KCkgPiBiLmNvdW50KCk7CisgICAgICAgIH0pOworICAgIAorICAgIGlmIChy
ZXN1bHQuc2l6ZSgpID49IDIpCisgICAgICAgIEFTU0VSVChyZXN1bHRbMF0uY291bnQoKSA+IHJl
c3VsdC5sYXN0KCkuY291bnQoKSk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworZmxv
YXQgQ2FsbEVkZ2VQcm9maWxlOjpudW1DYWxsc1RvQ2VsbHMoKSBjb25zdAoreworICAgIGZsb2F0
IHJlc3VsdCA9IDA7CisgICAgZm9yIChDYWxsRWRnZSBlZGdlIDogY2FsbEVkZ2VzKCkpCisgICAg
ICAgIHJlc3VsdCArPSBlZGdlLmNvdW50KCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9p
ZCBDYWxsRWRnZVByb2ZpbGU6OnZpc2l0V2VhaygpCit7CisgICAgaWYgKCFIZWFwOjppc01hcmtl
ZChtX3ByaW1hcnlDYWxsZWUpKSB7CisgICAgICAgIG1fcHJpbWFyeUNhbGxlZSA9IG51bGxwdHI7
CisgICAgICAgIG1fbnVtQ2FsbHNUb0RlbGV0ZWRDZWxsICs9IG1fbnVtQ2FsbHNUb1ByaW1hcnk7
CisgICAgICAgIG1fbnVtQ2FsbHNUb1ByaW1hcnkgPSAwOworICAgIH0KKyAgICAKKyAgICBpZiAo
bV9vdGhlckNhbGxlZXMpIHsKKyAgICAgICAgbV9vdGhlckNhbGxlZXMtPnJlbW92ZUlmKFt0aGlz
XSAoQ2FsbFNwZWN0cnVtOjpLZXlBbmRDb3VudCBlbnRyeSkgeworICAgICAgICAgICAgICAgIGlm
IChIZWFwOjppc01hcmtlZChlbnRyeS5rZXkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbV9udW1DYWxsc1RvRGVs
ZXRlZENlbGwgKz0gZW50cnkudmFsdWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICB9KTsKKyAgICB9Cit9CisKK0NhbGxFZGdlTG9nOjpDYWxsRWRnZUxvZygpCisg
ICAgOiBtX3NjYWxlZExvZ0luZGV4KGxvZ1NpemUgKiBzaXplb2YoRW50cnkpKQoreworfQorCitD
YWxsRWRnZUxvZzo6fkNhbGxFZGdlTG9nKCkgeyB9CisKKyNpZiBFTkFCTEUoSklUKQorCitleHRl
cm4gIkMiIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2coQ2Fs
bEVkZ2VMb2cqKSBXVEZfSU5URVJOQUw7CitleHRlcm4gIkMiIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2coQ2FsbEVkZ2VMb2cqIGxvZykKK3sKKyAgICBsb2ct
PnByb2Nlc3NMb2coKTsKK30KKwordm9pZCBDYWxsRWRnZUxvZzo6ZW1pdExvZ0NvZGUoQ0NhbGxI
ZWxwZXJzJiBqaXQsIENhbGxFZGdlUHJvZmlsZSYgcHJvZmlsZSwgSlNWYWx1ZVJlZ3MgY2FsbGVl
UmVncykKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50cyA9IDE7CisgICAg
CisgICAgR1BSUmVnIHNjcmF0Y2hHUFI7CisgICAgaWYgKCFjYWxsZWVSZWdzLnVzZXMoR1BSSW5m
bzo6cmVnVDApKQorICAgICAgICBzY3JhdGNoR1BSID0gR1BSSW5mbzo6cmVnVDA7CisgICAgZWxz
ZSBpZiAoIWNhbGxlZVJlZ3MudXNlcyhHUFJJbmZvOjpyZWdUMSkpCisgICAgICAgIHNjcmF0Y2hH
UFIgPSBHUFJJbmZvOjpyZWdUMTsKKyAgICBlbHNlCisgICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJ
bmZvOjpyZWdUMjsKKyAgICAKKyAgICBqaXQubG9hZDMyKCZtX3NjYWxlZExvZ0luZGV4LCBzY3Jh
dGNoR1BSKTsKKyAgICAKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgb2sgPSBqaXQuYnJhbmNoVGVz
dDMyKENDYWxsSGVscGVyczo6Tm9uWmVybywgc2NyYXRjaEdQUik7CisgICAgCisgICAgQVNTRVJU
KHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkgPj0gMSArIG51bWJlck9mQXJndW1lbnRzKTsKKyAg
ICAKKyAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdGFja0FsaWdu
bWVudEJ5dGVzKCkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAK
KyAgICBqaXQuc3RvcmVWYWx1ZShjYWxsZWVSZWdzLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0Nh
bGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAg
aml0LnNldHVwQXJndW1lbnRzKGNhbGxlZVJlZ3MpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2cpLCBHUFJJbmZvOjpu
b25BcmdHUFIwKTsKKyAgICBqaXQuY2FsbChzY3JhdGNoKTsKKyAgICBqaXQubG9hZFZhbHVlKEND
YWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBz
aXplb2YoSlNWYWx1ZSkpLCBjYWxsZWVSZWdzKTsKKyAgICAKKyAgICBqaXQuYWRkUHRyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihzdGFja0FsaWdubWVudEJ5dGVzKCkpLCBDQ2FsbEhlbHBl
cnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihsb2dTaXplICogc2l6ZW9mKEVudHJ5KSksIHNjcmF0Y2hHUFIpOwor
ICAgIG9rLmxpbmsoJmppdCk7CisKKyAgICBqaXQuc3ViMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoc2l6ZW9mKEVudHJ5KSksIHNjcmF0Y2hHUFIpOworICAgIGppdC5zdG9yZTMyKHNjcmF0
Y2hHUFIsICZtX3NjYWxlZExvZ0luZGV4KTsKKyAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihtX2xvZyksIHNjcmF0Y2hHUFIpOworICAgIGppdC5zdG9yZVZhbHVlKGNh
bGxlZVJlZ3MsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZGU0VU
T0YoRW50cnksIG1fdmFsdWUpKSk7CisgICAgaml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cigmcHJvZmlsZSksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBP
QkpFQ1RfT0ZGU0VUT0YoRW50cnksIG1fcHJvZmlsZSkpKTsKK30KKwordm9pZCBDYWxsRWRnZUxv
Zzo6ZW1pdExvZ0NvZGUoCisgICAgQ0NhbGxIZWxwZXJzJiBqaXQsIE93blB0cjxDYWxsRWRnZVBy
b2ZpbGU+JiBwcm9maWxlUG9pbnRlciwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncykKK3sKKyAgICBw
cm9maWxlUG9pbnRlci5jcmVhdGVUcmFuc2FjdGlvbmFsbHkoKTsKKyAgICBlbWl0TG9nQ29kZShq
aXQsICpwcm9maWxlUG9pbnRlciwgY2FsbGVlUmVncyk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUo
SklUKQorCit2b2lkIENhbGxFZGdlTG9nOjpwcm9jZXNzTG9nKCkKK3sKKyAgICBDb25jdXJyZW50
SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIAorICAgIEFTU0VSVCghKG1fc2NhbGVkTG9n
SW5kZXggJSBzaXplb2YoRW50cnkpKSk7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9z
Y2FsZWRMb2dJbmRleCAvIHNpemVvZihFbnRyeSk7IGkgPCBsb2dTaXplOyArK2kpCisgICAgICAg
IG1fbG9nW2ldLm1fcHJvZmlsZS0+YWRkKG1fbG9nW2ldLm1fdmFsdWUpOworICAgIAorICAgIG1f
c2NhbGVkTG9nSW5kZXggPSBsb2dTaXplICogc2l6ZW9mKEVudHJ5KTsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRn
ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbEVkZ2VQcm9maWxlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNTYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBDYWxsRWRnZVByb2ZpbGVfaAorI2RlZmluZSBDYWxsRWRnZVByb2ZpbGVfaAorCisjaW5jbHVk
ZSAiQ2FsbFZhcmlhbnQuaCIKKyNpbmNsdWRlICJDb25jdXJyZW50SklUTG9jay5oIgorI2luY2x1
ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKworY2xhc3MgQ2FsbEVkZ2UgeworcHVi
bGljOgorICAgIENhbGxFZGdlKENhbGxWYXJpYW50IGNhbGxlZSwgZmxvYXQgY291bnQpCisgICAg
ICAgIDogbV9jYWxsZWUoY2FsbGVlKQorICAgICAgICAsIG1fY291bnQoY291bnQpCisgICAgewor
ICAgIH0KKyAgICAKKyAgICBDYWxsRWRnZSgpCisgICAgICAgIDogQ2FsbEVkZ2UoQ2FsbFZhcmlh
bnQoKSwgMCkKKyAgICB7CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3Qg
eyByZXR1cm4gIW1fY2FsbGVlOyB9CisgICAgCisgICAgQ2FsbFZhcmlhbnQgY2FsbGVlKCkgY29u
c3QgeyByZXR1cm4gbV9jYWxsZWU7IH0KKyAgICB1bnNpZ25lZCBjb3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fY291bnQ7IH0KKyAgICAKK3B1YmxpYzoKKyAgICBDYWxsVmFyaWFudCBtX2NhbGxlZTsK
KyAgICBmbG9hdCBtX2NvdW50OworfTsKKworY2xhc3MgQ2FsbEVkZ2VQcm9maWxlIHsKK3B1Ymxp
YzoKKyAgICBDYWxsRWRnZVByb2ZpbGUoKQorICAgICAgICA6IG1fbnVtQ2FsbHNUb1ByaW1hcnko
MCkKKyAgICAgICAgLCBtX251bUNhbGxzVG9Ob3RDZWxsKDApCisgICAgICAgICwgbV9udW1DYWxs
c1RvRGVsZXRlZENlbGwoMCkKKyAgICAgICAgLCBtX3ByaW1hcnlDYWxsZWUobnVsbHB0cikKKyAg
ICB7CisgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhZGQoSlNWYWx1ZSB2YWx1
ZSkKKyAgICB7CisgICAgICAgIGlmIChVTkxJS0VZKCF2YWx1ZS5pc0NlbGwoKSkpIHsKKyAgICAg
ICAgICAgIG1fbnVtQ2FsbHNUb05vdENlbGwrKzsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIENhbGxWYXJpYW50IGNhbGxlZSA9IENhbGxWYXJpYW50KHZhbHVlLmFz
Q2VsbCgpKS5kZXNwZWNpZnlGdW5jdGlvbigpOworICAgICAgICAKKyAgICAgICAgaWYgKFVOTElL
RUxZKCFtX3ByaW1hcnlDYWxsZWUpKSB7CisgICAgICAgICAgICBtX3ByaW1hcnlDYWxsZWUgPSBj
YWxsZWU7CisgICAgICAgICAgICBtX251bUNhbGxzVG9QcmltYXJ5ID0gMTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKExJS0VMWShtX3ByaW1h
cnlDYWxsZWUgPT0gY2FsbGVlKSkgeworICAgICAgICAgICAgbV9udW1DYWxsc1RvUHJpbWFyeSsr
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAo
VU5MSUtFTFkoIW1fb3RoZXJDYWxsZWVzKSkKKyAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzID0g
c3RkOjptYWtlX3VuaXF1ZTxTcGVjdHJ1bTxKU0NlbGwqPj4oKTsKKyAgICAgICAgCisgICAgICAg
IG1fb3RoZXJDYWxsZWVzLT5hZGQoY2FsbGVlKTsKKyAgICB9CisgICAgCisgICAgZmxvYXQgbnVt
Q2FsbHNUb05vdENlbGwoKSBjb25zdCB7IHJldHVybiBtX251bUNhbGxzVG9Ob3RDZWxsOyB9Cisg
ICAgZmxvYXQgbnVtQ2FsbHNUb0RlbGV0ZWRDZWxsKCkgY29uc3QgeyByZXR1cm4gbV9udW1DYWxs
c1RvRGVsZXRlZENlbGw7IH0KKyAgICBmbG9hdCBudW1DYWxsc1RvQ2VsbHMoKSBjb25zdDsKKyAg
ICAKKyAgICBWZWN0b3I8Q2FsbEVkZ2U+IGNhbGxFZGdlcygpIGNvbnN0OworICAgIAorICAgIHZv
aWQgdmlzaXRXZWFrKCk7CisgICAgCitwcml2YXRlOgorICAgIGZsb2F0IG1fbnVtQ2FsbHNUb1By
aW1hcnk7CisgICAgZmxvYXQgbV9udW1DYWxsc1RvTm90Q2VsbDsKKyAgICBmbG9hdCBtX251bUNh
bGxzVG9EZWxldGVkQ2VsbDsKKyAgICBDYWxsVmFyaWFudCBtX3ByaW1hcnlDYWxsZWU7CisgICAg
CisgICAgdHlwZWRlZiBTcGVjdHJ1bTxDYWxsVmFyaWFudCwgZmxvYXQ+IENhbGxTcGVjdHJ1bTsK
KyAgICAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbFNwZWN0cnVtPiBtX290aGVyQ2FsbGVlczsK
K307CisKK2NsYXNzIENhbGxFZGdlTG9nIHsKK3B1YmxpYzoKKyAgICBDYWxsRWRnZUxvZygpOwor
ICAgIH5DYWxsRWRnZUxvZygpOworCisjaWYgRU5BQkxFKEpJVCkgICAgCisgICAgdm9pZCBlbWl0
TG9nQ29kZShDQ2FsbEhlbHBlcnMmLCBDYWxsRWRnZVByb2ZpbGUmLCBKU1ZhbHVlUmVncyBjYWxs
ZWVSZWdzKTsgLy8gQXNzdW1lcyB0aGF0IHN0YWNrIGlzIGFsaWduZWQsIGFsbCB2b2xhdGlsZSBy
ZWdpc3RlcnMgLSBvdGhlciB0aGFuIGNhbGxlZUdQUiAtIGFyZSBjbG9iYmVyYWJsZSwgYW5kIHRo
ZSBwYXJhbWV0ZXIgc3BhY2UgaXMgaW4gdXNlLgorICAgIAorICAgIC8vIFNhbWUgYXMgYWJvdmUg
YnV0IGNyZWF0ZXMgYSBDYWxsRWRnZVByb2ZpbGUgaW5zdGFuY2UgaWYgb25lIGRpZCBub3QgYWxy
ZWFkeSBleGlzdC4gRG9lcworICAgIC8vIHRoaXMgaW4gYSB0aHJlYWQtc2FmZSBtYW5uZXIgYnkg
Y2FsbGluZyAuCisgICAgdm9pZCBlbWl0TG9nQ29kZShDQ2FsbEhlbGVwcnMmLCBPd25QdHI8Q2Fs
bEVkZ2VQcm9maWxlPiYsIEpTVmFsdWVSZWdzIGNhbGxlZVJlZ3MpOworI2VuZGlmIC8vIEVOQUJM
RShKSVQpCisgICAgCisgICAgdm9pZCBwcm9jZXNzTG9nKCk7CisgICAgCitwcml2YXRlOgorICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKKyAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgbG9nU2l6ZSA9IDEwMDAwOworICAgIAorICAgIHN0cnVjdCBFbnRyeSB7CisgICAg
ICAgIEpTVmFsdWUgbV92YWx1ZTsKKyAgICAgICAgQ2FsbEVkZ2VQcm9maWxlKiBtX3Byb2ZpbGU7
CisgICAgfTsKKyAgICAKKyAgICB1bnNpZ25lZCBtX3NjYWxlZExvZ0luZGV4OworICAgIEVudHJ5
IG1fbG9nW2xvZ1NpemVdOworCitwdWJsaWM6CisgICAgCisgICAgLy8gTm8sIHRoaXMgaXMgd3Jv
bmcuIFRoZSBsb2cgcHJvY2Vzc29yIHNob3VsZCB1c2UgdGhlIENvZGVCbG9jayBsb2NrcyB0byBw
cm90ZWN0IHRoZQorICAgIC8vIGluZGl2aWR1YWwgcHJvZmlsZXMuIEl0IHNob3VsZCBkbyB0aGlz
IGJ5IGhhdmluZyBhIG1haW4gcGFzcyB0aGF0IGNyZWF0ZXMgc2hhZG93IHNwZWN0cmEKKyAgICAv
LyB3aGlsZSB0cmFja2luZyB3aGljaCBwcm9maWxlcyBpdCBoYWQgY3JlYXRlZCBzaGFkb3dzIGZv
ciwgYW5kIHRoZW4gc3BsYXR0aW5nIHRoZSBzaGFkb3dzCisgICAgLy8gYXQgdGhlIGVuZC4KKyAg
ICBDb25jdXJyZW50SklUTG9jayBtX2xvY2s7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIENhbGxFZGdlUHJvZmlsZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODMsNiArODMsMTEgQEAgdm9pZCBDYWxsTGlua0luZm86OnZpc2l0V2VhayhSZXBh
dGNoQnVmZgogICAgIH0KICAgICBpZiAoISFsYXN0U2VlbkNhbGxlZSAmJiAhSGVhcDo6aXNNYXJr
ZWQobGFzdFNlZW5DYWxsZWUuZ2V0KCkpKQogICAgICAgICBsYXN0U2VlbkNhbGxlZS5jbGVhcigp
OworICAgIAorICAgIGlmIChjYWxsRWRnZVByb2ZpbGUpIHsKKyAgICAgICAgV1RGOjpsb2FkTG9h
ZEZlbmNlKCk7CisgICAgICAgIGNhbGxFZGdlUHJvZmlsZS0+dmlzaXRXZWFrKCk7CisgICAgfQog
fQogCiBDYWxsTGlua0luZm8mIENhbGxMaW5rSW5mbzo6ZHVtbXkoKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAkocmV2aXNpb24gMTcyMTc3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIENhbGxMaW5rSW5mb19oCiAjZGVm
aW5lIENhbGxMaW5rSW5mb19oCiAKKyNpbmNsdWRlICJDYWxsRWRnZVByb2ZpbGUuaCIKICNpbmNs
dWRlICJDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmgiCiAjaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgi
CiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgpAQCAtMzMsNiArMzQsNyBAQAog
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJX
cml0ZUJhcnJpZXIuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Nl
bnRpbmVsTGlua2VkTGlzdC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTg4LDYgKzkwLDcgQEAg
c3RydWN0IENhbGxMaW5rSW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1NlbgogICAgIHVuc2lnbmVkIGNh
bGxlZUdQUiA6IDg7CiAgICAgdW5zaWduZWQgc2xvd1BhdGhDb3VudDsKICAgICBDb2RlT3JpZ2lu
IGNvZGVPcmlnaW47CisgICAgT3duUHRyPENhbGxFZGdlUHJvZmlsZT4gY2FsbEVkZ2VQcm9maWxl
OwogCiAgICAgYm9vbCBpc0xpbmtlZCgpIHsgcmV0dXJuIHN0dWIgfHwgY2FsbGVlOyB9CiAgICAg
dm9pZCB1bmxpbmsoUmVwYXRjaEJ1ZmZlciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw0OCArMzgsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiBzdGF0aWMgY29u
c3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKIENhbGxMaW5rU3RhdHVzOjpDYWxsTGlua1N0YXR1
cyhKU1ZhbHVlIHZhbHVlKQotICAgIDogbV9jYWxsVGFyZ2V0KHZhbHVlKQotICAgICwgbV9leGVj
dXRhYmxlKDApCi0gICAgLCBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQorICAgIDogbV9jb3Vs
ZFRha2VTbG93UGF0aChmYWxzZSkKICAgICAsIG1faXNQcm92ZWQoZmFsc2UpCiB7Ci0gICAgaWYg
KCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkpCisgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXND
ZWxsKCkpIHsKKyAgICAgICAgbV9jb3VsZFRha2VTbG93UGF0aCA9IHRydWU7CiAgICAgICAgIHJl
dHVybjsKKyAgICB9CiAgICAgCi0gICAgaWYgKCF2YWx1ZS5hc0NlbGwoKS0+aW5oZXJpdHMoSlNG
dW5jdGlvbjo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIG1fZXhlY3V0YWJs
ZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4odmFsdWUuYXNDZWxsKCkpLT5leGVjdXRhYmxlKCk7Ci19
Ci0KLUpTRnVuY3Rpb24qIENhbGxMaW5rU3RhdHVzOjpmdW5jdGlvbigpIGNvbnN0Ci17Ci0gICAg
aWYgKCFtX2NhbGxUYXJnZXQgfHwgIW1fY2FsbFRhcmdldC5pc0NlbGwoKSkKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgCi0gICAgaWYgKCFtX2NhbGxUYXJnZXQuYXNDZWxsKCktPmluaGVyaXRzKEpT
RnVuY3Rpb246OmluZm8oKSkpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIHJldHVybiBq
c0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2FsbFRhcmdldC5hc0NlbGwoKSk7Ci19Ci0KLUludGVybmFs
RnVuY3Rpb24qIENhbGxMaW5rU3RhdHVzOjppbnRlcm5hbEZ1bmN0aW9uKCkgY29uc3QKLXsKLSAg
ICBpZiAoIW1fY2FsbFRhcmdldCB8fCAhbV9jYWxsVGFyZ2V0LmlzQ2VsbCgpKQotICAgICAgICBy
ZXR1cm4gMDsKLSAgICAKLSAgICBpZiAoIW1fY2FsbFRhcmdldC5hc0NlbGwoKS0+aW5oZXJpdHMo
SW50ZXJuYWxGdW5jdGlvbjo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAg
cmV0dXJuIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4obV9jYWxsVGFyZ2V0LmFzQ2VsbCgpKTsK
LX0KLQotSW50cmluc2ljIENhbGxMaW5rU3RhdHVzOjppbnRyaW5zaWNGb3IoQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKSBjb25zdAotewotICAgIGlmICghbV9leGVjdXRhYmxlKQotICAgICAg
ICByZXR1cm4gTm9JbnRyaW5zaWM7Ci0gICAgCi0gICAgcmV0dXJuIG1fZXhlY3V0YWJsZS0+aW50
cmluc2ljRm9yKGtpbmQpOworICAgIG1fdmFyaWFudHMuYXBwZW5kKENhbGxWYXJpYW50KHZhbHVl
LmFzQ2VsbCgpKSk7CiB9CiAKIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRl
RnJvbUxMSW50KGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgQ29kZUJsb2NrKiBw
cm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQpAQCAtMTU0LDcgKzEyMSw3IEBA
IENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgQ2FsbExpbmtTdGEKIH0KIAogI2lmIEVOQUJM
RShKSVQpCi1DYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcihjb25zdCBD
b25jdXJyZW50SklUTG9ja2VyJiwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pCitDYWxsTGlu
a1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcihjb25zdCBDb25jdXJyZW50SklUTG9j
a2VyJiwgVk0mIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykKIHsKICAgICAvLyBOb3Rl
IHRoYXQgZGVzcGl0ZSByZXF1aXJpbmcgdGhhdCB0aGUgbG9ja2VyIGlzIGhlbGQsIHRoaXMgY29k
ZSBpcyByYWN5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHRoZSBDYWxsTGlua0luZm86IGl0IG1h
eSBnZXQgY2xlYXJlZCB3aGlsZSB0aGlzIGNvZGUgcnVucyEgVGhpcyBpcyBiZWNhdXNlCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAko
cmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxM
aW5rU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDggKzQ2LDcgQEAgc3RydWN0IENhbGxM
aW5rSW5mbzsKIGNsYXNzIENhbGxMaW5rU3RhdHVzIHsKIHB1YmxpYzoKICAgICBDYWxsTGlua1N0
YXR1cygpCi0gICAgICAgIDogbV9leGVjdXRhYmxlKDApCi0gICAgICAgICwgbV9jb3VsZFRha2VT
bG93UGF0aChmYWxzZSkKKyAgICAgICAgOiBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQogICAg
ICAgICAsIG1faXNQcm92ZWQoZmFsc2UpCiAgICAgewogICAgIH0KQEAgLTYxLDggKzYwLDggQEAg
cHVibGljOgogICAgIAogICAgIGV4cGxpY2l0IENhbGxMaW5rU3RhdHVzKEpTVmFsdWUpOwogICAg
IAotICAgIENhbGxMaW5rU3RhdHVzKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKQotICAgICAg
ICA6IG1fZXhlY3V0YWJsZShleGVjdXRhYmxlKQorICAgIENhbGxMaW5rU3RhdHVzKENhbGxWYXJp
YW50IHZhcmlhbnQpCisgICAgICAgIDogbV92YXJpYW50cygxLCBleGVjdXRhYmxlKQogICAgICAg
ICAsIG1fY291bGRUYWtlU2xvd1BhdGgoZmFsc2UpCiAgICAgICAgICwgbV9pc1Byb3ZlZChmYWxz
ZSkKICAgICB7CkBAIC05Miw4ICs5MSw4IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoSklUKQogICAg
IC8vIENvbXB1dGVzIHRoZSBzdGF0dXMgYXNzdW1pbmcgdGhhdCB3ZSBuZXZlciB0b29rIHNsb3cg
cGF0aCBhbmQgbmV2ZXIgcHJldmlvdXNseQogICAgIC8vIGV4aXRlZC4KLSAgICBzdGF0aWMgQ2Fs
bExpbmtTdGF0dXMgY29tcHV0ZUZvcihjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgQ2FsbExp
bmtJbmZvJik7Ci0gICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoY29uc3QgQ29u
Y3VycmVudEpJVExvY2tlciYsIENhbGxMaW5rSW5mbyYsIEV4aXRTaXRlRGF0YSk7CisgICAgc3Rh
dGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYs
IFZNJiwgQ2FsbExpbmtJbmZvJik7CisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVG
b3IoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIFZNJiwgQ2FsbExpbmtJbmZvJiwgRXhpdFNp
dGVEYXRhKTsKICNlbmRpZgogICAgIAogICAgIHR5cGVkZWYgSGFzaE1hcDxDb2RlT3JpZ2luLCBD
YWxsTGlua1N0YXR1cywgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gQ29udGV4dE1hcDsKQEAg
LTEwNywyMCArMTA2LDE5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29t
cHV0ZUZvcigKICAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgY29uc3QgQ2FsbExpbmtJ
bmZvTWFwJiwgY29uc3QgQ29udGV4dE1hcCYpOwogICAgIAotICAgIGJvb2wgaXNTZXQoKSBjb25z
dCB7IHJldHVybiBtX2NhbGxUYXJnZXQgfHwgbV9leGVjdXRhYmxlIHx8IG1fY291bGRUYWtlU2xv
d1BhdGg7IH0KKyAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0IHx8
ICFtX2V4ZWN1dGFibGUuaXNFbXB0eSgpIHx8IG1fY291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAK
ICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFpc1NldCgpOyB9CiAgICAgCiAg
ICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bGRUYWtlU2xv
d1BhdGg7IH0KICAgICBib29sIGlzQ2xvc3VyZUNhbGwoKSBjb25zdCB7IHJldHVybiBtX2V4ZWN1
dGFibGUgJiYgIW1fY2FsbFRhcmdldDsgfQogICAgIAotICAgIEpTVmFsdWUgY2FsbFRhcmdldCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdldDsgfQotICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9u
KCkgY29uc3Q7Ci0gICAgSW50ZXJuYWxGdW5jdGlvbiogaW50ZXJuYWxGdW5jdGlvbigpIGNvbnN0
OwotICAgIEludHJpbnNpYyBpbnRyaW5zaWNGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCkgY29u
c3Q7Ci0gICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtX2V4
ZWN1dGFibGU7IH0KKyAgICBDYWxsVmFyaWFudExpc3QgdmFyaWFudHMoKSBjb25zdCB7IHJldHVy
biBtX3ZhcmlhbnRzOyB9CisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFy
aWFudHMuc2l6ZSgpOyB9CisgICAgQ2FsbFZhcmlhbnQgYXQodW5zaWduZWQgaSkgY29uc3QgeyBy
ZXR1cm4gbV92YXJpYW50c1tpXTsgfQorICAgIENhbGxWYXJpYW50IG9wZXJhdG9yW10odW5zaWdu
ZWQgaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0KICAgICBib29sIGlzUHJvdmVkKCkgY29uc3Qg
eyByZXR1cm4gbV9pc1Byb3ZlZDsgfQotICAgIGJvb2wgY2FuT3B0aW1pemUoKSBjb25zdCB7IHJl
dHVybiAobV9jYWxsVGFyZ2V0IHx8IG1fZXhlY3V0YWJsZSkgJiYgIW1fY291bGRUYWtlU2xvd1Bh
dGg7IH0KKyAgICBib29sIGNhbk9wdGltaXplKCkgY29uc3QgeyByZXR1cm4gIW1fdmFyaWFudHMu
aXNFbXB0eSgpOyB9CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAg
ICAgCkBAIC0xMjgsMTQgKzEyNiwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgbWFrZUNsb3N1cmVD
YWxsKCkKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9pc1Byb3ZlZCk7Ci0gICAgICAgIC8vIFR1
cm4gdGhpcyBpbnRvIGEgY2xvc3VyZSBjYWxsLgotICAgICAgICBtX2NhbGxUYXJnZXQgPSBKU1Zh
bHVlKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fdmFyaWFudHMuc2l6ZSgpOyBpLS07
KQorICAgICAgICAgICAgbV92YXJpYW50c1tpXSA9IG1fdmFyaWFudHNbaV0uZGVzcGVjaWZpZWRD
bG9zdXJlKCk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRl
RnJvbUxMSW50KGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBDb2RlQmxvY2sqLCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4KTsKICAgICAKLSAgICBKU1ZhbHVlIG1fY2FsbFRhcmdldDsKLSAgICBF
eGVjdXRhYmxlQmFzZSogbV9leGVjdXRhYmxlOworICAgIENhbGxWYXJpYW50TGlzdCBtX3Zhcmlh
bnRzOwogICAgIGJvb2wgbV9jb3VsZFRha2VTbG93UGF0aDsKICAgICBib29sIG1faXNQcm92ZWQ7
CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlh
bnQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxWYXJpYW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJDYWxsVmFyaWFudC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBDYWxs
VmFyaWFudDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIGlmIChJbnRlcm5h
bEZ1bmN0aW9uKiBpbnRlcm5hbEZ1bmN0aW9uID0gdGhpcy0+aW50ZXJuYWxGdW5jdGlvbigpKSB7
CisgICAgICAgIG91dC5wcmludCgiSW50ZXJuYWxGdW5jdGlvbjogIiwgSlNWYWx1ZShpbnRlcm5h
bEZ1bmN0aW9uKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKEpTRnVu
Y3Rpb24qIGZ1bmN0aW9uID0gdGhpcy0+ZnVuY3Rpb24oKSkgeworICAgICAgICBvdXQucHJpbnQo
IihGdW5jdGlvbjogIiwgSlNWYWx1ZShmdW5jdGlvbiksICI7IEV4ZWN1dGFibGU6ICIsICpleGVj
dXRhYmxlKCksICIpIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgb3V0LnBy
aW50KCJFeGVjdXRhYmxlOiAiLCAqZXhlY3V0YWJsZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFu
dC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxW
YXJpYW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDYWxsVmFyaWFudF9oCisj
ZGVmaW5lIENhbGxWYXJpYW50X2gKKworI2luY2x1ZGUgIkpTQ2VsbC5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgQ2FsbFZhcmlhbnQgeworcHVibGljOgorICAgIGV4cGxpY2l0IENhbGxW
YXJpYW50KEpTQ2VsbCogY2FsbGVlID0gbnVsbHB0cikKKyAgICAgICAgOiBtX2NhbGxlZShjYWxs
ZWUpCisgICAgeworICAgIH0KKyAgICAKKyAgICBDYWxsVmFyaWFudChXVEY6Okhhc2hUYWJsZURl
bGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIDogbV9jYWxsZWUoZGVsZXRlZFRva2VuKCkpCisgICAg
eworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX2Nh
bGxlZTsgfQorICAgIAorICAgIC8vIElmIHRoaXMgdmFyaWFudCByZWZlcnMgdG8gYSBmdW5jdGlv
biwgY2hhbmdlIGl0IHRvIHJlZmVyIHRvIGl0cyBleGVjdXRhYmxlLgorICAgIEFMV0FZU19JTkxJ
TkUgQ2FsbFZhcmlhbnQgZGVzcGVjaWZpZWRDbG9zdXJlKCkgY29uc3QKKyAgICB7CisgICAgICAg
IGlmIChtX2NhbGxlZS0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKQorICAgICAgICAgICAgcmV0
dXJuIENhbGxWYXJpYW50KGpzQ2FzdDxKU0Z1bmN0aW9uKj4obV9jYWxsZWUpLT5leGVjdXRhYmxl
KCkpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorICAgIAorICAgIEludGVybmFsRnVu
Y3Rpb24qIGludGVybmFsRnVuY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGpz
RHluYW1pY0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KG1fY2FsbGVlKTsKKyAgICB9CisgICAgCisg
ICAgSlNGdW5jdGlvbiogZnVuY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGpz
RHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2FsbGVlKTsKKyAgICB9CisgICAgCisgICAgRXhl
Y3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKEpTRnVu
Y3Rpb24qIGZ1bmN0aW9uID0gdGhpcy0+ZnVuY3Rpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBm
dW5jdGlvbi0+ZXhlY3V0YWJsZSgpOworICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxFeGVj
dXRhYmxlQmFzZSo+KG1fY2FsbGVlKTsKKyAgICB9CisgICAgCisgICAgSW50cmluc2ljIGludHJp
bnNpY0ZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpIGNvbnN0CisgICAgeworICAgICAg
ICBpZiAoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSB0aGlzLT5leGVjdXRhYmxlKCkpCisg
ICAgICAgICAgICByZXR1cm4gZXhlY3V0YWJsZS0+aW50cmluc2ljRm9yKGtpbmQpOworICAgICAg
ICByZXR1cm4gTm9JbnRyaW5zaWM7CisgICAgfQorICAgIAorICAgIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZnVuY3Rpb25FeGVjdXRhYmxlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBqc0R5
bmFtaWNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUoKSk7CisgICAgfQorICAg
IAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKKyAgICAKKyAgICBib29s
IGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2NhbGxlZSA9PSBkZWxldGVkVG9rZW4oKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2NhbGxlZSA9PSBvdGhlci5tX2NhbGxlZTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQg
aGFzaCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gV1RGOjpQdHJIYXNoPEpTQ2VsbCo+
OjpoYXNoKG1fY2FsbGVlKTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIHN0YXRpYyBKU0Nl
bGwqIGRlbGV0ZWRUb2tlbigpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU0NlbGwqPihzdGF0aWNf
Y2FzdDx1aW50cHRyX3Q+KDEpKTsgfQorICAgICAgICAgICAgICAgICAgIAorICAgIEpTQ2VsbCog
bV9jYWxsZWU7Cit9OworCitzdHJ1Y3QgQ2FsbFZhcmlhbnRIYXNoIHsKKyAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBDYWxsVmFyaWFudCYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9
CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgQ2FsbFZhcmlhbnQmIGEsIGNvbnN0IENhbGxW
YXJpYW50JiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZl
VG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Cit9OworCit0eXBlZGVmIFZlY3RvcjxD
YWxsVmFyaWFudCwgMT4gQ2FsbFZhcmlhbnRMaXN0OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
bmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFz
aDsKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEpTQzo6Q2FsbFZhcmlhbnQ+IHsKKyAg
ICB0eXBlZGVmIEpTQzo6Q2FsbFZhcmlhbnRIYXNoIEhhc2g7Cit9OworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8
SlNDOjpDYWxsVmFyaWFudD4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8SlNDOjpDYWxsVmFyaWFu
dD4geyB9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIENhbGxWYXJpYW50X2gK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzEsOCArODcxLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgVmVjdG9yPFVubGlua2VkQmxvY2s+IG1fdW5saW5rZWRCbG9ja3M7CiAg
ICAgICAgIAogICAgICAgICAvLyBQb3RlbnRpYWwgYmxvY2sgbGlua2luZyB0YXJnZXRzLiBNdXN0
IGJlIHNvcnRlZCBieSBieXRlY29kZUJlZ2luLCBhbmQKLSAgICAgICAgLy8gY2Fubm90IGhhdmUg
dHdvIGJsb2NrcyB0aGF0IGhhdmUgdGhlIHNhbWUgYnl0ZWNvZGVCZWdpbi4gRm9yIHRoaXMgdmVy
eQotICAgICAgICAvLyByZWFzb24sIHRoaXMgaXMgbm90IGVxdWl2YWxlbnQgdG8gCisgICAgICAg
IC8vIGNhbm5vdCBoYXZlIHR3byBibG9ja3MgdGhhdCBoYXZlIHRoZSBzYW1lIGJ5dGVjb2RlQmVn
aW4uCiAgICAgICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gbV9ibG9ja0xpbmtpbmdUYXJnZXRzOwog
ICAgICAgICAKICAgICAgICAgLy8gSWYgdGhlIGNhbGxzaXRlJ3MgYmFzaWMgYmxvY2sgd2FzIHNw
bGl0IGludG8gdHdvLCB0aGVuIHRoaXMgd2lsbCBiZQpAQCAtMTMxNyw3ICsxMzE2LDYgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgIAogICAgIC8vIElmIHdl
IGdldCB0byB0aGlzIHBvaW50IHRoZW4gYWxsIGJsb2NrcyBtdXN0IGVuZCBpbiBzb21lIHNvcnQg
b2YgdGVybWluYWxzLgogICAgIEFTU0VSVChsYXN0QmxvY2stPmxhc3QoKS0+aXNUZXJtaW5hbCgp
KTsKLSAgICAKIAogICAgIC8vIE5lZWQgdG8gY3JlYXRlIGEgbmV3IGJhc2ljIGJsb2NrIGZvciB0
aGUgY29udGludWF0aW9uIGF0IHRoZSBjYWxsZXIuCiAgICAgUmVmUHRyPEJhc2ljQmxvY2s+IGJs
b2NrID0gYWRvcHRSZWYobmV3IEJhc2ljQmxvY2sobmV4dE9mZnNldCwgbV9udW1Bcmd1bWVudHMs
IG1fbnVtTG9jYWxzLCBQTmFOKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAgR3JhcGg6OkdyYXBo
KFZNJiB2bSwgUGxhbiYgcGxhbiwgTG9uZ0xpdgogICAgICwgbV9mb3JtKExvYWRTdG9yZSkKICAg
ICAsIG1fdW5pZmljYXRpb25TdGF0ZShMb2NhbGx5VW5pZmllZCkKICAgICAsIG1fcmVmQ291bnRT
dGF0ZShFdmVyeXRoaW5nSXNMaXZlKQorICAgICwgbV9zaG91bGRQcm9maWxlKGZhbHNlKQogewog
ICAgIEFTU0VSVChtX3Byb2ZpbGVkQmxvY2spOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NjEsNiArNzYxLDcgQEAgcHVi
bGljOgogICAgIEdyYXBoRm9ybSBtX2Zvcm07CiAgICAgVW5pZmljYXRpb25TdGF0ZSBtX3VuaWZp
Y2F0aW9uU3RhdGU7CiAgICAgUmVmQ291bnRTdGF0ZSBtX3JlZkNvdW50U3RhdGU7CisgICAgYm9v
bCBtX3Nob3VsZFByb2ZpbGU7CiBwcml2YXRlOgogICAgIAogICAgIHZvaWQgaGFuZGxlU3VjY2Vz
c29yKFZlY3RvcjxCYXNpY0Jsb2NrKiwgMTY+JiB3b3JrbGlzdCwgQmFzaWNCbG9jayosIEJhc2lj
QmxvY2sqIHN1Y2Nlc3Nvcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY4OSw2ICs2ODksMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENh
bGwoTm9kZSogbm9kZQogCiAgICAgbV9qaXQuZW1pdFN0b3JlQ29kZU9yaWdpbihub2RlLT5vcmln
aW4uc2VtYW50aWMpOwogICAgIAorICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1faml0LmNvZGVC
bG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKKworICAgIGlmIChtX2ppdC5ncmFwaCgpLm1fc2hv
dWxkUHJvZmlsZSkgeworICAgICAgICBtX2ppdC52bSgpLmNhbGxFZGdlTG9nLT5lbWl0TG9nQ29k
ZSgKKyAgICAgICAgICAgIG1faml0LCBjYWxsTGlua0luZm8tPmNhbGxFZGdlUHJvZmlsZSwgY2Fs
bGVlLmpzVmFsdWVSZWdzKCkpOworICAgIH0KKyAgICAKICAgICBzbG93UGF0aC5hcHBlbmQoYnJh
bmNoTm90Q2VsbChjYWxsZWUuanNWYWx1ZVJlZ3MoKSkpOwogICAgIHNsb3dQYXRoLmFwcGVuZCht
X2ppdC5icmFuY2hQdHJXaXRoUGF0Y2goTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBjYWxsZWVQ
YXlsb2FkR1BSLCB0YXJnZXRUb0NoZWNrKSk7CiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhjYWxsZWVQYXlsb2FkR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlv
biwgbV9zY29wZSkpLCByZXN1bHRQYXlsb2FkR1BSKTsKQEAgLTcxMyw3ICs3MjAsNiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgIG1faml0Lm1vdmUo
Y2FsbGVlUGF5bG9hZEdQUiwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICBtX2ppdC5tb3ZlKGNh
bGxlZVRhZ0dQUiwgR1BSSW5mbzo6cmVnVDEpOwogICAgIH0KLSAgICBDYWxsTGlua0luZm8qIGlu
Zm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7CiAgICAgbV9qaXQubW92
ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihpbmZvKSwgR1BSSW5mbzo6cmVnVDIpOwog
ICAgIEpJVENvbXBpbGVyOjpDYWxsIHNsb3dDYWxsID0gbV9qaXQubmVhckNhbGwoKTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjYsNyArNjI2LDYgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1pc2NTdHJpY3RFcQogCiB2b2lkIFNwZWN1bGF0aXZl
SklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogewotCiAgICAgYm9vbCBpc0NhbGwgPSBub2RlLT5v
cCgpID09IENhbGw7CiAgICAgaWYgKCFpc0NhbGwpCiAgICAgICAgIERGR19BU1NFUlQobV9qaXQu
Z3JhcGgoKSwgbm9kZSwgbm9kZS0+b3AoKSA9PSBDb25zdHJ1Y3QpOwpAQCAtNjcwLDYgKzY2OSwx
MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAKICAgICBtX2pp
dC5lbWl0U3RvcmVDb2RlT3JpZ2luKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgCisgICAg
Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExp
bmtJbmZvKCk7CisgICAgCisgICAgaWYgKG1faml0LmdyYXBoKCkubV9zaG91bGRQcm9maWxlKQor
ICAgICAgICBtX2ppdC52bSgpLmNhbGxFZGdlTG9nLT5lbWl0TG9nQ29kZShtX2ppdCwgY2FsbExp
bmtJbmZvLT5jYWxsRWRnZVByb2ZpbGUsIGNhbGxlZUdQUik7CisKICAgICBzbG93UGF0aCA9IG1f
aml0LmJyYW5jaFB0cldpdGhQYXRjaChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxlZUdQ
UiwgdGFyZ2V0VG9DaGVjaywgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoMCkpOwogCiAg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjYWxsZWVHUFIsIE9CSkVD
VF9PRkZTRVRPRihKU0Z1bmN0aW9uLCBtX3Njb3BlKSksIHJlc3VsdEdQUik7CkBAIC02ODIsNyAr
Njg2LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgIHNs
b3dQYXRoLmxpbmsoJm1faml0KTsKICAgICAKICAgICBtX2ppdC5tb3ZlKGNhbGxlZUdQUiwgR1BS
SW5mbzo6cmVnVDApOyAvLyBDYWxsZWUgbmVlZHMgdG8gYmUgaW4gcmVnVDAKLSAgICBDYWxsTGlu
a0luZm8qIGNhbGxMaW5rSW5mbyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8o
KTsKICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5r
SW5mbyksIEdQUkluZm86OnJlZ1QyKTsgLy8gTGluayBpbmZvIG5lZWRzIHRvIGJlIGluIHJlZ1Qy
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgc2xvd0NhbGwgPSBtX2ppdC5uZWFyQ2FsbCgpOwogICAg
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlv
blBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Rp
ZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MSw2ICs2MSw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFPcHRpb25z
OjplbmFibGVPU1JFbnRyeVRvRlRMKCkpCiAgICAgICAgICAgICBsZXZlbCA9IEZUTDo6Q2FuQ29t
cGlsZTsKICAgICAgICAgCisgICAgICAgIG1fZ3JhcGgubV9zaG91bGRQcm9maWxlID0gdHJ1ZTsK
KyAgICAgICAgCiAgICAgICAgIEluc2VydGlvblNldCBpbnNlcnRpb25TZXQobV9ncmFwaCk7CiAg
ICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsg
YmxvY2tJbmRleC0tOykgewogICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBo
LmJsb2NrKGJsb2NrSW5kZXgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fz
c2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCw2ICs4OCwyMSBA
QCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAgICAgCisgICAgdm9pZCBsb2FkVmFsdWUoQWRkcmVz
cyBhZGRyZXNzLCBKU1ZhbHVlUmVncyByZWdzKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQor
ICAgICAgICBsb2FkNjQoYWRkcmVzcywgcmVncy5ncHIoKSk7CisjZWxzZQorICAgICAgICBpZiAo
YWRkcmVzcy5iYXNlID09IHJlZ3MucGF5bG9hZEdQUigpKSB7CisgICAgICAgICAgICBsb2FkMzIo
YWRkcmVzcy53aXRoT2Zmc2V0KFRhZ09mZnNldCksIHJlZ3MudGFnR1BSKCkpOworICAgICAgICAg
ICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldChQYXlsb2FkT2Zmc2V0KSwgcmVncy5wYXlsb2Fk
R1BSKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0
aE9mZnNldChQYXlsb2FkT2Zmc2V0KSwgcmVncy5wYXlsb2FkR1BSKCkpOworICAgICAgICAgICAg
bG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldChUYWdPZmZzZXQpLCByZWdzLnRhZ0dQUigpKTsKKyAg
ICAgICAgfQorI2VuZGlmCisgICAgfQorICAgIAogICAgIHZvaWQgbW92ZVRydXN0ZWRWYWx1ZShK
U1ZhbHVlIHZhbHVlLCBKU1ZhbHVlUmVncyByZWdzKQogICAgIHsKICNpZiBVU0UoSlNWQUxVRTY0
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCShyZXZpc2lv
biAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjY2LDYgKzE2NjYsMTUgQEAgcHVibGljOgogICAgICAgICBtb3Zl
KGFyZzQsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CiAgICAgfQogI2VuZGlmCisgICAgCisgICAg
dm9pZCBzZXR1cEFyZ3VtZW50cyhKU1ZhbHVlUmVncyBhcmcxKQorICAgIHsKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgICAgICBzZXR1cEFyZ3VtZW50cyhhcmcxLmdwcigpKTsKKyNlbHNlCisgICAg
ICAgIHNldHVwQXJndW1lbnRzKGFyZzEucGF5bG9hZEdQUigpLCBhcmcxLnRhZ0dQUigpKTsKKyNl
bmRpZgorICAgIH0KIAogICAgIHZvaWQgc2V0dXBSZXN1bHRzKEdQUlJlZyBkZXN0QSwgR1BSUmVn
IGRlc3RCKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCShyZXZp
c2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAkod29y
a2luZyBjb3B5KQpAQCAtNjAsNiArNjAsOCBAQCBwdWJsaWM6CiAgICAgR1BSUmVnIHRhZ0dQUigp
IGNvbnN0IHsgcmV0dXJuIEludmFsaWRHUFJSZWc7IH0KICAgICBHUFJSZWcgcGF5bG9hZEdQUigp
IGNvbnN0IHsgcmV0dXJuIG1fZ3ByOyB9CiAgICAgCisgICAgYm9vbCB1c2VzKEdQUlJlZyBncHIp
IGNvbnN0IHsgcmV0dXJuIG1fZ3ByID09IGdwcjsgfQorICAgIAogcHJpdmF0ZToKICAgICBHUFJS
ZWcgbV9ncHI7CiB9OwpAQCAtMTY5LDYgKzE3MSw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IHRhZ0dQUigpOwogICAgIH0KIAorICAgIGJvb2wgdXNlcyhHUFJSZWcgZ3ByKSBjb25zdCB7IHJl
dHVybiBtX3RhZ0dQUiA9PSBncHIgfHwgbV9wYXlsb2FkR1BSID09IGdwcjsgfQorICAgIAogcHJp
dmF0ZToKICAgICBpbnQ4X3QgbV90YWdHUFI7CiAgICAgaW50OF90IG1fcGF5bG9hZEdQUjsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHJldmlzaW9u
IDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzAwLDYgKzMwMCwxMyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2Fs
bChPcGNvZGVJRCBvcGNvZGVJCiAgICAgc3RvcmUzMihyZWdUMCwgQWRkcmVzcyhzdGFja1BvaW50
ZXJSZWdpc3RlciwgSlNTdGFjazo6Q2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVn
aXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKICAg
ICBzdG9yZTMyKHJlZ1QxLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBKU1N0YWNrOjpD
YWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgVGFnT2Zmc2V0IC0g
c2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAKKyAgICBDYWxsTGlua0luZm8qIGluZm8gPSBt
X2NvZGVCbG9jay0+YWRkQ2FsbExpbmtJbmZvKCk7CisKKyAgICBpZiAoc2hvdWxkRW1pdFByb2Zp
bGluZygpKSB7CisgICAgICAgIG1fdm0tPmNhbGxFZGdlTG9nLT5lbWl0TG9nQ29kZSgKKyAgICAg
ICAgICAgICp0aGlzLCBpbmZvLT5jYWxsRWRnZVByb2ZpbGUsIEpTVmFsdWVSZWdzKHJlZ1QxLCBy
ZWdUMCkpOworICAgIH0KKwogICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsX2V2YWwpIHsKICAg
ICAgICAgY29tcGlsZUNhbGxFdmFsKGluc3RydWN0aW9uKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
MzEzLDcgKzMyMCw2IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkK
ICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZSk7CiAKICAgICBBU1NFUlQobV9jYWxsQ29tcGlsYXRp
b25JbmZvLnNpemUoKSA9PSBjYWxsTGlua0luZm9JbmRleCk7Ci0gICAgQ2FsbExpbmtJbmZvKiBp
bmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5mbygpOwogICAgIGluZm8tPmNhbGxUeXBl
ID0gQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJRCk7CiAgICAgaW5mby0+Y29kZU9y
aWdpbiA9IENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCk7CiAgICAgaW5mby0+Y2FsbGVlR1BS
ID0gcmVnVDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHJldmlz
aW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxMiw2ICsyMTIsMTEgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwo
T3Bjb2RlSUQgb3Bjb2RlSQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVlLCByZWdU
MCk7IC8vIHJlZ1QwIGhvbGRzIGNhbGxlZS4KIAogICAgIHN0b3JlNjQocmVnVDAsIEFkZHJlc3Mo
c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpTU3RhY2s6OkNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4o
c2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKyAgICAKKyAg
ICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2NvZGVCbG9jay0+YWRkQ2FsbExpbmtJbmZvKCk7CisK
KyAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZygpKQorICAgICAgICBtX3ZtLT5jYWxsRWRnZUxv
Zy0+ZW1pdExvZ0NvZGUoKnRoaXMsIGluZm8tPmNhbGxFZGdlUHJvZmlsZSwgcmVnVDApOwogCiAg
ICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCkgewogICAgICAgICBjb21waWxlQ2FsbEV2
YWwoaW5zdHJ1Y3Rpb24pOwpAQCAtMjIzLDcgKzIyOCw2IEBAIHZvaWQgSklUOjpjb21waWxlT3BD
YWxsKE9wY29kZUlEIG9wY29kZUkKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZSk7CiAKICAgICBB
U1NFUlQobV9jYWxsQ29tcGlsYXRpb25JbmZvLnNpemUoKSA9PSBjYWxsTGlua0luZm9JbmRleCk7
Ci0gICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5mbygp
OwogICAgIGluZm8tPmNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJ
RCk7CiAgICAgaW5mby0+Y29kZU9yaWdpbiA9IENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCk7
CiAgICAgaW5mby0+Y2FsbGVlR1BSID0gcmVnVDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBBcml0eUNoZWNrRmFpbFJldHVyblRodW5rczsKICAgICBjbGFzcyBCdWls
dGluRXhlY3V0YWJsZXM7CisgICAgY2xhc3MgQ2FsbEVkZ2VMb2c7CiAgICAgY2xhc3MgQ29kZUJs
b2NrOwogICAgIGNsYXNzIENvZGVDYWNoZTsKICAgICBjbGFzcyBDb21tb25JZGVudGlmaWVyczsK
QEAgLTIzMiw2ICsyMzMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICNpZiBFTkFCTEUoREZHX0pJVCkK
ICAgICAgICAgT3duUHRyPERGRzo6TG9uZ0xpdmVkU3RhdGU+IGRmZ1N0YXRlOwogI2VuZGlmIC8v
IEVOQUJMRShERkdfSklUKQorICAgICAgICAKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxF
ZGdlTG9nPiBjYWxsRWRnZUxvZzsKIAogICAgICAgICBWTVR5cGUgdm1UeXBlOwogICAgICAgICBD
bGllbnREYXRhKiBjbGllbnREYXRhOwpJbmRleDogU291cmNlL1dURi93dGYvT3duUHRyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvT3duUHRyLmgJKHJldmlzaW9uIDE3MjE3NykKKysr
IFNvdXJjZS9XVEYvd3RmL093blB0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3MiwxNCBA
QCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gT3duUHRyJiBv
cGVyYXRvcj0oT3duUHRyPFU+JiYpOwogCiAgICAgICAgIHZvaWQgc3dhcChPd25QdHImIG8pIHsg
c3RkOjpzd2FwKG1fcHRyLCBvLm1fcHRyKTsgfQorICAgICAgICAKKyAgICAgICAgLy8gQ29uc3Ry
dWN0IGFuIG9iamVjdCB0byBzdG9yZSBpbnRvIHRoaXMgT3duUHRyLCBidXQgb25seSBzbyBsb25n
IGFzIHRoaXMgT3duUHRyCisgICAgICAgIC8vIGRvZXNuJ3QgYWxyZWFkeSBwb2ludCB0byBhbiBv
YmplY3QuIFRoaXMgd2lsbCBlbnN1cmUgdGhhdCBhZnRlciB5b3UgY2FsbCB0aGlzLAorICAgICAg
ICAvLyB0aGUgT3duUHRyIHdpbGwgcG9pbnQgdG8gYW4gaW5zdGFuY2Ugb2YgVC4gVGhpcyBpbnN0
YW5jZSBtYXkgb3IgbWF5IG5vdCBoYXZlIGJlZW4KKyAgICAgICAgLy8gY3JlYXRlZCBieSB0aGlz
IGNhbGwuIE1vcmVvdmVyLCB0aGlzIGNhbGwgdXNlcyBhbiBvcHBvcnR1bmlzdGljIHRyYW5zYWN0
aW9uLCBpbgorICAgICAgICAvLyB0aGF0IHdlIG1heSBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgVCBh
bmQgdGhlbiBpbW1lZGlhdGVseSB0aHJvdyBpdCBhd2F5LgorICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBBcmdzPgorICAgICAgICB2b2lkIGNyZWF0ZVRyYW5zYWN0aW9uYWxseShBcmdzLi4u
IGFyZ3MpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZXhwbGljaXQgT3duUHRyKFB0clR5cGUg
cHRyKSA6IG1fcHRyKHB0cikgeyB9CkBAIC0xODYsNiArMTk0LDI4IEBAIG5hbWVzcGFjZSBXVEYg
ewogICAgICAgICByZXR1cm4gcC5nZXQoKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBpbmxpbmUgT3duUHRyPFQ+OjpjcmVhdGVU
cmFuc2FjdGlvbmFsbHkoQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgaWYgKG1fcHRyKSB7
CisgICAgICAgICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgVCogbmV3T2JqZWN0ID0gbmV3IFQoYXJncy4u
Lik7CisgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CisjaWYgRU5BQkxFKENPTVBBUkVf
QU5EX1NXQVApCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGlmIChtX3B0cikgeworICAgICAg
ICAgICAgICAgIGRlbGV0ZSBuZXdPYmplY3Q7CisgICAgICAgICAgICAgICAgV1RGOjpsb2FkTG9h
ZEZlbmNlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAg
ICB9IHdoaWxlICghV1RGOjp3ZWFrQ29tcGFyZUFuZFN3YXAoJm1fcHRyLCBudWxscHRyLCBuZXdP
YmplY3QpKTsKKyNlbHNlCisgICAgICAgIG1fcHRyID0gbmV3T2JqZWN0OworI2VuZGlmCisgICAg
fQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpPd25QdHI7CkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NwZWN0
cnVtLmgJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTMyLDIyICszMiwyMiBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdGVtcGxh
dGU8dHlwZW5hbWUgVD4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIENvdW50ZXJUeXBl
ID0gdW5zaWduZWQ+CiBjbGFzcyBTcGVjdHJ1bSB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBl
bmFtZSBIYXNoTWFwPFQsIHVuc2lnbmVkIGxvbmc+OjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB0
eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz46OmNvbnN0X2l0ZXJhdG9y
IGNvbnN0X2l0ZXJhdG9yOworICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVy
VHlwZT46Oml0ZXJhdG9yIGl0ZXJhdG9yOworICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxU
LCBDT3VudGVyVHlwZT46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwogICAgIAogICAg
IFNwZWN0cnVtKCkgeyB9CiAgICAgCi0gICAgdm9pZCBhZGQoY29uc3QgVCYga2V5LCB1bnNpZ25l
ZCBsb25nIGNvdW50ID0gMSkKKyAgICB2b2lkIGFkZChjb25zdCBUJiBrZXksIENvdW50ZXJUeXBl
IGNvdW50ID0gMSkKICAgICB7Ci0gICAgICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwgdW5zaWduZWQg
bG9uZz46OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBjb3VudCk7CisgICAgICAg
IHR5cGVuYW1lIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9t
YXAuYWRkKGtleSwgY291bnQpOwogICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAg
ICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSArPSBjb3VudDsKICAgICB9CiAgICAgCi0g
ICAgdW5zaWduZWQgbG9uZyBnZXQoY29uc3QgVCYga2V5KSBjb25zdAorICAgIENvdW50ZXJUeXBl
IGdldChjb25zdCBUJiBrZXkpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdF9pdGVyYXRvciBp
dGVyID0gbV9tYXAuZmluZChrZXkpOwogICAgICAgICBpZiAoaXRlciA9PSBtX21hcC5lbmQoKSkK
QEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBLZXlBbmRDb3VudCB7CiAgICAg
ICAgIEtleUFuZENvdW50KCkgeyB9CiAgICAgICAgIAotICAgICAgICBLZXlBbmRDb3VudChjb25z
dCBUJiBrZXksIHVuc2lnbmVkIGxvbmcgY291bnQpCisgICAgICAgIEtleUFuZENvdW50KGNvbnN0
IFQmIGtleSwgQ291bnRlclR5cGUgY291bnQpCiAgICAgICAgICAgICA6IGtleShrZXkpCiAgICAg
ICAgICAgICAsIGNvdW50KGNvdW50KQogICAgICAgICB7CkBAIC04MCw3ICs4MCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgfQogCiAgICAgICAgIFQga2V5OwotICAgICAgICB1bnNpZ25lZCBsb25nIGNv
dW50OworICAgICAgICBDb3VudGVyVHlwZSBjb3VudDsKICAgICB9OwogICAgIAogICAgIC8vIFJl
dHVybnMgYSBsaXN0IG9yZGVyZWQgZnJvbSBsb3dlc3QtY291bnQgdG8gaGlnaGVzdC1jb3VudC4K
QEAgLTk0LDggKzk0LDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgfQog
ICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgdm9pZCByZW1vdmVJZihj
b25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAgICAgICAgbV9tYXAucmVtb3ZlSWYoW2Z1
bmN0b3JdIChIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6S2V5VmFsdWVQYWlyVHlwZSYgcGFpcikg
eworICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdG9yKEtleUFuZENvdW50KHBhaXIua2V5LCBw
YWlyLnZhbHVlKSk7CisgICAgICAgICAgICB9KTsKKyAgICB9CisgICAgCiBwcml2YXRlOgotICAg
IEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz4gbV9tYXA7CisgICAgSGFzaE1hcDxULCBDb3VudGVy
VHlwZT4gbV9tYXA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236393</attachid>
            <date>2014-08-11 12:49:59 -0700</date>
            <delta_ts>2014-08-16 10:35:13 -0700</delta_ts>
            <desc>a bit more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>44105</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVBy
b2ZpbGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxFZGdlUHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOTkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkNhbGxFZGdlUHJvZmlsZS5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworVmVjdG9yPENhbGxFZGdlPiBDYWxsRWRnZVByb2ZpbGU6OmNhbGxFZGdlcygpIGNvbnN0Cit7
CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAKKyAgICBWZWN0
b3I8Q2FsbEVkZ2U+IHJlc3VsdDsKKyAgICAKKyAgICBDYWxsVmFyaWFudCBwcmltYXJ5Q2FsbGVl
ID0gbV9wcmltYXJ5Q2FsbGVlOworICAgIGZsb2F0IG51bUNhbGxzVG9QcmltYXJ5ID0gbV9udW1D
YWxsc1RvUHJpbWFyeTsKKyAgICAvLyBEZWZlbmQgYWdhaW5zdCByYWNlcy4gVGhlc2UgZmllbGRz
IGFyZSBtb2RpZmllZCBieSB0aGUgbG9nIHByb2Nlc3NvciB3aXRob3V0IGxvY2tpbmcuCisgICAg
aWYgKCEhcHJpbWFyeUNhbGxlZSAmJiBudW1DYWxsc1RvUHJpbWFyeSkKKyAgICAgICAgcmVzdWx0
LmFwcGVuZChDYWxsRWRnZShwcmltYXJ5Q2FsbGVlLCBudW1DYWxsc1RvUHJpbWFyeSkpOworICAg
IAorICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBp
ZiB0aGUgcHJpbWFyeSB0aHJlYWQgaGFkIGp1c3QgY3JlYXRlZCBhIG1fb3RoZXJDYWxsZXMgd2hp
bGUgbG9nCisgICAgICAgIC8vIHByb2Nlc3NpbmcsIHdlIHNlZSBhIGNvbnNpc3RlbnRseSBjcmVh
dGVkIG9uZS4gVGhlIGxvY2sgYmVpbmcgaGVsZCBpcyBpbnN1ZmZpY2llbnQgZm9yCisgICAgICAg
IC8vIHRoaXMsIHNpbmNlIHRoZSBsb2cgcHJvY2Vzc29yIHdpbGwgb25seSBncmFiIHRoZSBsb2Nr
IHdoZW4gbWVyZ2luZyB0aGUgc2Vjb25kYXJ5CisgICAgICAgIC8vIHNwZWN0cnVtIGludG8gdGhl
IHByaW1hcnkgb25lIGJ1dCBtYXkgc3RpbGwgY3JlYXRlIHRoZSBkYXRhIHN0cnVjdHVyZSB3aXRo
b3V0IGhvbGRpbmcKKyAgICAgICAgLy8gbG9ja3MuCisgICAgICAgIFdURjo6bG9hZExvYWRGZW5j
ZSgpOworICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiAqbV9vdGhlckNhbGxlZXMpCisgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKENhbGxFZGdlKGVudHJ5LmtleSwgZW50cnkudmFsdWUpKTsKKyAg
ICB9CisgICAgCisgICAgc3RkOjpzb3J0KHJlc3VsdC5iZWdpbigpLCByZXN1bHQuZW5kKCksIFtd
IChjb25zdCBDYWxsRWRnZSYgYSwgY29uc3QgQ2FsbEVkZ2UmIGIpIC0+IGJvb2wgeworICAgICAg
ICAgICAgcmV0dXJuIGEuY291bnQoKSA+IGIuY291bnQoKTsKKyAgICAgICAgfSk7CisgICAgCisg
ICAgaWYgKHJlc3VsdC5zaXplKCkgPj0gMikKKyAgICAgICAgQVNTRVJUKHJlc3VsdFswXS5jb3Vu
dCgpID4gcmVzdWx0Lmxhc3QoKS5jb3VudCgpKTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCitmbG9hdCBDYWxsRWRnZVByb2ZpbGU6Om51bUNhbGxzVG9DZWxscygpIGNvbnN0Cit7Cisg
ICAgZmxvYXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKENhbGxFZGdlIGVkZ2UgOiBjYWxsRWRnZXMo
KSkKKyAgICAgICAgcmVzdWx0ICs9IGVkZ2UuY291bnQoKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCit2b2lkIENhbGxFZGdlUHJvZmlsZTo6dmlzaXRXZWFrKCkKK3sKKyAgICBDb25jdXJyZW50
SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIAorICAgIGlmICghSGVhcDo6aXNNYXJrZWQo
bV9wcmltYXJ5Q2FsbGVlKSkgeworICAgICAgICBtX3ByaW1hcnlDYWxsZWUgPSBudWxscHRyOwor
ICAgICAgICBtX251bUNhbGxzVG9EZWxldGVkQ2VsbCArPSBtX251bUNhbGxzVG9QcmltYXJ5Owor
ICAgICAgICBtX251bUNhbGxzVG9QcmltYXJ5ID0gMDsKKyAgICB9CisgICAgCisgICAgaWYgKG1f
b3RoZXJDYWxsZWVzKSB7CisgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3ByaW1hcnkucmVtb3Zl
SWYoW3RoaXNdIChDYWxsU3BlY3RydW06OktleUFuZENvdW50IGVudHJ5KSB7CisgICAgICAgICAg
ICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKGVudHJ5LmtleSkpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtX251bUNh
bGxzVG9EZWxldGVkQ2VsbCArPSBlbnRyeS52YWx1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgLy8gT25seSBleGlzdHMg
d2hpbGUgd2UgYXJlIHByb2Nlc3NpbmcgdGhlIGxvZy4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
IW1fb3RoZXJDYWxsZWVzLT5tX3NlY29uZGFyeSk7CisgICAgfQorfQorCit2b2lkIENhbGxFZGdl
UHJvZmlsZTo6YWRkU2xvdyhDYWxsVmFyaWFudCBjYWxsZWUsIENhbGxFZGdlUHJvZmlsZVZlY3Rv
ciYgbWVyZ2VCYWNrTG9nKQoreworICAgIC8vIFRoaXMgZXhpc3RzIHRvIGhhbmRsZSBjYXNlcyB3
aGVyZSB0aGUgc3BlY3RydW0gd2Fzbid0IGNyZWF0ZWQgeWV0LCBvciB3ZSdyZSBzdG9yaW5nIHRv
IGEKKyAgICAvLyBwYXJ0aWN1bGFyIHNwZWN0cnVtIGZvciB0aGUgZmlyc3QgdGltZSBkdXJpbmcg
YSBsb2cgcHJvY2Vzc2luZyBpdGVyYXRpb24uCisgICAgCisgICAgaWYgKCFtX290aGVyQ2FsbGVl
cykgeworICAgICAgICBtX290aGVyQ2FsbGVlcyA9IHN0ZDo6bWFrZV91bnFpdWU8Q2FsbFNwZWN0
cnVtSG9sZGVyPigpOworICAgICAgICAvLyBJZiBhIGNvbXBpbGVyIHRocmVhZCBub3RpY2VzIHRo
ZSBtX290aGVyQ2FsbGVlcyBiZWluZyBub24tbnVsbCwgd2Ugd2FudCB0byBtYWtlIHN1cmUKKyAg
ICAgICAgLy8gdGhhdCBpdCBzZWVzIGEgZnVsbHkgY3JlYXRlZCBvbmUuCisgICAgICAgIFdURjo6
c3RvcmVTdG9yZUZlbmNlKCk7CisgICAgfQorICAgIAorICAgIGlmICghbV9vdGhlckNhbGxlZXMt
Pm1fc2Vjb25kYXJ5KSB7CisgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3NlY29uZGFyeSA9IHN0
ZDo6bWFrZV91bmlxdWU8Q2FsbFNwZWN0cnVtPigpOworICAgICAgICAKKyAgICAgICAgLy8gVGhp
cyBtZWFucyB0aGF0IHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgd2UncmUgc2VlaW5nIHRoaXMgcHJv
ZmlsZSBkdXJpbmcgdGhpcyBsb2cKKyAgICAgICAgLy8gcHJvY2Vzc2luZyBpdGVyYXRpb24uCisg
ICAgICAgIG1lcmdlQmFja0xvZy5hcHBlbmQodGhpcyk7CisgICAgfQorICAgIAorICAgIG1fb3Ro
ZXJDYWxsZWVzLT5tX3NlY29uZGFyeS0+YWRkKGNhbGxlZSk7Cit9CisKK0NhbGxFZGdlTG9nOjpD
YWxsRWRnZUxvZygpCisgICAgOiBtX3NjYWxlZExvZ0luZGV4KGxvZ1NpemUgKiBzaXplb2YoRW50
cnkpKQoreworfQorCitDYWxsRWRnZUxvZzo6fkNhbGxFZGdlTG9nKCkgeyB9CisKKyNpZiBFTkFC
TEUoSklUKQorCitleHRlcm4gIkMiIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNz
Q2FsbEVkZ2VMb2coQ2FsbEVkZ2VMb2cqKSBXVEZfSU5URVJOQUw7CitleHRlcm4gIkMiIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2coQ2FsbEVkZ2VMb2cqIGxv
ZykKK3sKKyAgICBsb2ctPnByb2Nlc3NMb2coKTsKK30KKwordm9pZCBDYWxsRWRnZUxvZzo6ZW1p
dExvZ0NvZGUoQ0NhbGxIZWxwZXJzJiBqaXQsIENhbGxFZGdlUHJvZmlsZSYgcHJvZmlsZSwgSlNW
YWx1ZVJlZ3MgY2FsbGVlUmVncykKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkFyZ3Vt
ZW50cyA9IDE7CisgICAgCisgICAgR1BSUmVnIHNjcmF0Y2hHUFI7CisgICAgaWYgKCFjYWxsZWVS
ZWdzLnVzZXMoR1BSSW5mbzo6cmVnVDApKQorICAgICAgICBzY3JhdGNoR1BSID0gR1BSSW5mbzo6
cmVnVDA7CisgICAgZWxzZSBpZiAoIWNhbGxlZVJlZ3MudXNlcyhHUFJJbmZvOjpyZWdUMSkpCisg
ICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJbmZvOjpyZWdUMTsKKyAgICBlbHNlCisgICAgICAgIHNj
cmF0Y2hHUFIgPSBHUFJJbmZvOjpyZWdUMjsKKyAgICAKKyAgICBqaXQubG9hZDMyKCZtX3NjYWxl
ZExvZ0luZGV4LCBzY3JhdGNoR1BSKTsKKyAgICAKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgb2sg
PSBqaXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6Tm9uWmVybywgc2NyYXRjaEdQUik7Cisg
ICAgCisgICAgQVNTRVJUKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkgPj0gMSArIG51bWJlck9m
QXJndW1lbnRzKTsKKyAgICAKKyAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihzdGFja0FsaWdubWVudEJ5dGVzKCkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyKTsKKyAgICAKKyAgICBqaXQuc3RvcmVWYWx1ZShjYWxsZWVSZWdzLCBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2l6ZW9mKEpT
VmFsdWUpKSk7CisgICAgaml0LnNldHVwQXJndW1lbnRzKGNhbGxlZVJlZ3MpOworICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VM
b2cpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICBqaXQuY2FsbChzY3JhdGNoKTsKKyAgICBq
aXQubG9hZFZhbHVlKENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9p
bnRlclJlZ2lzdGVyLCBzaXplb2YoSlNWYWx1ZSkpLCBjYWxsZWVSZWdzKTsKKyAgICAKKyAgICBq
aXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdGFja0FsaWdubWVudEJ5dGVz
KCkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAKKyAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihsb2dTaXplICogc2l6ZW9mKEVudHJ5KSks
IHNjcmF0Y2hHUFIpOworICAgIG9rLmxpbmsoJmppdCk7CisKKyAgICBqaXQuc3ViMzIoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2l6ZW9mKEVudHJ5KSksIHNjcmF0Y2hHUFIpOworICAgIGpp
dC5zdG9yZTMyKHNjcmF0Y2hHUFIsICZtX3NjYWxlZExvZ0luZGV4KTsKKyAgICBqaXQuYWRkUHRy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX2xvZyksIHNjcmF0Y2hHUFIpOworICAgIGpp
dC5zdG9yZVZhbHVlKGNhbGxlZVJlZ3MsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BS
LCBPQkpFQ1RfT0ZGU0VUT0YoRW50cnksIG1fdmFsdWUpKSk7CisgICAgaml0LnN0b3JlUHRyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmcHJvZmlsZSksIENDYWxsSGVscGVyczo6QWRkcmVz
cyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW50cnksIG1fcHJvZmlsZSkpKTsKK30KKwor
dm9pZCBDYWxsRWRnZUxvZzo6ZW1pdExvZ0NvZGUoCisgICAgQ0NhbGxIZWxwZXJzJiBqaXQsIE93
blB0cjxDYWxsRWRnZVByb2ZpbGU+JiBwcm9maWxlUG9pbnRlciwgSlNWYWx1ZVJlZ3MgY2FsbGVl
UmVncykKK3sKKyAgICBwcm9maWxlUG9pbnRlci5jcmVhdGVUcmFuc2FjdGlvbmFsbHkoKTsKKyAg
ICBlbWl0TG9nQ29kZShqaXQsICpwcm9maWxlUG9pbnRlciwgY2FsbGVlUmVncyk7Cit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoSklUKQorCit2b2lkIENhbGxFZGdlTG9nOjpwcm9jZXNzTG9nKCkKK3sK
KyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIAorICAgIEFTU0VS
VCghKG1fc2NhbGVkTG9nSW5kZXggJSBzaXplb2YoRW50cnkpKSk7CisgICAgCisgICAgQ2FsbEVk
Z2VQcm9maWxlVmVjdG9yIG1lcmdlQmFja0xvZzsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSBtX3NjYWxlZExvZ0luZGV4IC8gc2l6ZW9mKEVudHJ5KTsgaSA8IGxvZ1NpemU7ICsraSkKKyAg
ICAgICAgbV9sb2dbaV0ubV9wcm9maWxlLT5hZGQobV9sb2dbaV0ubV92YWx1ZSwgbWVyZ2VCYWNr
TG9nKTsKKyAgICAKKyAgICBtX3NjYWxlZExvZ0luZGV4ID0gbG9nU2l6ZSAqIHNpemVvZihFbnRy
eSk7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gbWVyZ2VCYWNrTG9nLnNpemUoKTsgaS0t
OykKKyAgICAgICAgbWVyZ2VCYWNrTG9nW2ldLT5tZXJnZUJhY2soKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRn
ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbEVkZ2VQcm9maWxlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBDYWxsRWRnZVByb2ZpbGVfaAorI2RlZmluZSBDYWxsRWRnZVByb2ZpbGVfaAorCisjaW5jbHVk
ZSAiQ2FsbFZhcmlhbnQuaCIKKyNpbmNsdWRlICJDb25jdXJyZW50SklUTG9jay5oIgorI2luY2x1
ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKworY2xhc3MgQ2FsbEVkZ2UgeworcHVi
bGljOgorICAgIENhbGxFZGdlKCk7CisgICAgQ2FsbEVkZ2UoQ2FsbFZhcmlhbnQgY2FsbGVlLCBm
bG9hdCBjb3VudCk7CisgICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAh
bV9jYWxsZWU7IH0KKyAgICAKKyAgICBDYWxsVmFyaWFudCBjYWxsZWUoKSBjb25zdCB7IHJldHVy
biBtX2NhbGxlZTsgfQorICAgIHVuc2lnbmVkIGNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb3Vu
dDsgfQorICAgIAorcHVibGljOgorICAgIENhbGxWYXJpYW50IG1fY2FsbGVlOworICAgIGZsb2F0
IG1fY291bnQ7Cit9OworCitjbGFzcyBDYWxsRWRnZVByb2ZpbGU7Cit0eXBlZGVmIFZlY3RvcjxD
YWxsRWRnZVByb2ZpbGUqLCAxMD4gQ2FsbEVkZ2VQcm9maWxlVmVjdG9yOworCitjbGFzcyBDYWxs
RWRnZVByb2ZpbGUgeworcHVibGljOgorICAgIENhbGxFZGdlUHJvZmlsZShDb2RlQmxvY2sqIGNv
ZGVCbG9jayk7CisgICAgCisgICAgQUxXQVlTX3ZvaWQgYWRkKEpTVmFsdWUsIENhbGxFZGdlUHJv
ZmlsZVZlY3RvciYgbWVyZ2VCYWNrTG9nKTsKKyAgICAKKyAgICBmbG9hdCBudW1DYWxsc1RvTm90
Q2VsbCgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQ2FsbHNUb05vdENlbGw7IH0KKyAgICBmbG9hdCBu
dW1DYWxsc1RvRGVsZXRlZENlbGwoKSBjb25zdCB7IHJldHVybiBtX251bUNhbGxzVG9EZWxldGVk
Q2VsbDsgfQorICAgIGZsb2F0IG51bUNhbGxzVG9DZWxscygpIGNvbnN0OworICAgIAorICAgIC8v
IENhbGwgd2hpbGUgaG9sZGluZyB0aGUgb3duaW5nIENvZGVCbG9jaydzIGxvY2suCisgICAgVmVj
dG9yPENhbGxFZGdlPiBjYWxsRWRnZXMoKSBjb25zdDsKKyAgICAKKyAgICB2b2lkIHZpc2l0V2Vh
aygpOworICAgIAorcHJpdmF0ZToKKyAgICB2b2lkIGFkZFNsb3coQ2FsbFZhcmlhbnQsIENhbGxF
ZGdlUHJvZmlsZVZlY3RvciYgbWVyZ2VCYWNrTG9nKTsKKyAgICB2b2lkIG1lcmdlQmFjaygpOwor
ICAgIAorICAgIC8vIEl0J3MgY2hlYXBlciB0byBsZXQgdGhpcyBoYXZlIGl0cyBvd24gbG9jay4g
SXQgbmVlZHMgdG8gYmUgYWJsZSB0byBmaW5kIHdoaWNoIGxvY2sgdG8KKyAgICAvLyBsb2NrLiBO
b3JtYWxseSBpdCB3b3VsZCBsb2NrIHRoZSBvd25pbmcgQ29kZUJsb2NrJ3MgbG9jaywgYnV0IHRo
YXQgd291bGQgcmVxdWlyZSBhCisgICAgLy8gcG9pbnRlci13aWR0aCB3b3JkIHRvIHBvaW50IGF0
IHRoZSBDb2RlQmxvY2suIEhhdmluZyB0aGUgYnl0ZS1zaXplZCBsb2NrIGhlcmUgaXMKKyAgICAv
LyBjaGVhcGVyLiBIb3dldmVyLCB0aGlzIG1lYW5zIHRoYXQgdGhlIHJlbGF0aW9uc2hpcCB3aXRo
IHRoZSBDb2RlQmxvY2sgbG9jayBpczoKKyAgICAvLyBhY3F1aXJlIHRoZSBDb2RlQmxvY2sgbG9j
ayBiZWZvcmUgdGhpcyBvbmUuCisgICAgQ29uY3VycmVudEpJVExvY2sgbV9sb2NrOworICAgIAor
ICAgIGZsb2F0IG1fbnVtQ2FsbHNUb1ByaW1hcnk7CisgICAgZmxvYXQgbV9udW1DYWxsc1RvTm90
Q2VsbDsKKyAgICBmbG9hdCBtX251bUNhbGxzVG9EZWxldGVkQ2VsbDsKKyAgICBDYWxsVmFyaWFu
dCBtX3ByaW1hcnlDYWxsZWU7CisgICAgCisgICAgdHlwZWRlZiBTcGVjdHJ1bTxDYWxsVmFyaWFu
dCwgZmxvYXQ+IENhbGxTcGVjdHJ1bTsKKyAgICAKKyAgICBzdHJ1Y3QgQ2FsbFNwZWN0cnVtSG9s
ZGVyIHsKKyAgICAgICAgQ2FsbFNwZWN0cnVtIG1fcHJpbWFyeTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPENhbGxTcGVjdHJ1bT4gbV9zZWNvbmRhcnk7CisgICAgfTsKKyAgICAKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8Q2FsbFNwZWN0cnVtSG9sZGVyPiBtX290aGVyQ2FsbGVlczsKK307CisKK2Ns
YXNzIENhbGxFZGdlTG9nIHsKK3B1YmxpYzoKKyAgICBDYWxsRWRnZUxvZygpOworICAgIH5DYWxs
RWRnZUxvZygpOworCisjaWYgRU5BQkxFKEpJVCkgICAgCisgICAgdm9pZCBlbWl0TG9nQ29kZShD
Q2FsbEhlbHBlcnMmLCBDYWxsRWRnZVByb2ZpbGUmLCBKU1ZhbHVlUmVncyBjYWxsZWVSZWdzKTsg
Ly8gQXNzdW1lcyB0aGF0IHN0YWNrIGlzIGFsaWduZWQsIGFsbCB2b2xhdGlsZSByZWdpc3RlcnMg
LSBvdGhlciB0aGFuIGNhbGxlZUdQUiAtIGFyZSBjbG9iYmVyYWJsZSwgYW5kIHRoZSBwYXJhbWV0
ZXIgc3BhY2UgaXMgaW4gdXNlLgorICAgIAorICAgIC8vIFNhbWUgYXMgYWJvdmUgYnV0IGNyZWF0
ZXMgYSBDYWxsRWRnZVByb2ZpbGUgaW5zdGFuY2UgaWYgb25lIGRpZCBub3QgYWxyZWFkeSBleGlz
dC4gRG9lcworICAgIC8vIHRoaXMgaW4gYSB0aHJlYWQtc2FmZSBtYW5uZXIgYnkgY2FsbGluZyBP
d25QdHI6OmNyZWF0ZVRyYW5zYWN0aW9uYWxseS4KKyAgICB2b2lkIGVtaXRMb2dDb2RlKENDYWxs
SGVsZXBycyYsIE93blB0cjxDYWxsRWRnZVByb2ZpbGU+JiwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVn
cyk7CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKyAgICAKKyAgICB2b2lkIHByb2Nlc3NMb2coKTsK
KyAgICAKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb2dTaXplID0gMTAwMDA7CisgICAgCisgICAg
c3RydWN0IEVudHJ5IHsKKyAgICAgICAgSlNWYWx1ZSBtX3ZhbHVlOworICAgICAgICBDYWxsRWRn
ZVByb2ZpbGUqIG1fcHJvZmlsZTsKKyAgICB9OworICAgIAorICAgIHVuc2lnbmVkIG1fc2NhbGVk
TG9nSW5kZXg7CisgICAgRW50cnkgbV9sb2dbbG9nU2l6ZV07Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKworI2VuZGlmIC8vIENhbGxFZGdlUHJvZmlsZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZUlubGluZXMu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRn
ZVByb2ZpbGVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENhbGxFZGdl
UHJvZmlsZUlubGluZXNfaAorI2RlZmluZSBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzX2gKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2lubGluZSBDYWxsRWRnZTo6Q2FsbEVkZ2UoQ2FsbFZhcmlhbnQgY2Fs
bGVlLCBmbG9hdCBjb3VudCkKKyAgICA6IG1fY2FsbGVlKGNhbGxlZSkKKyAgICAsIG1fY291bnQo
Y291bnQpCit7Cit9CisKK2lubGluZSBDYWxsRWRnZTo6Q2FsbEVkZ2UoKQorICAgIDogQ2FsbEVk
Z2UoQ2FsbFZhcmlhbnQoKSwgMCkKK3sKK30KKworaW5saW5lIENhbGxFZGdlUHJvZmlsZTo6Q2Fs
bEVkZ2VQcm9maWxlKCkKKyAgICA6IG1fbnVtQ2FsbHNUb1ByaW1hcnkoMCkKKyAgICAsIG1fbnVt
Q2FsbHNUb05vdENlbGwoMCkKKyAgICAsIG1fbnVtQ2FsbHNUb0RlbGV0ZWRDZWxsKDApCisgICAg
LCBtX3ByaW1hcnlDYWxsZWUobnVsbHB0cikKK3sKK30KKworQUxXQVlTX0lOTElORSBDYWxsRWRn
ZVByb2ZpbGU6OmFkZChKU1ZhbHVlIHZhbHVlLCBDYWxsRWRnZVByb2ZpbGVWZWN0b3ImIG1lcmdl
QmFja0xvZykKK3sKKyAgICBpZiAoVU5MSUtFWSghdmFsdWUuaXNDZWxsKCkpKSB7CisgICAgICAg
IG1fbnVtQ2FsbHNUb05vdENlbGwrKzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIENh
bGxWYXJpYW50IGNhbGxlZSA9IENhbGxWYXJpYW50KHZhbHVlLmFzQ2VsbCgpKS5kZXNwZWNpZnlG
dW5jdGlvbigpOworICAgICAgICAKKyAgICBpZiAoVU5MSUtFTFkoIW1fcHJpbWFyeUNhbGxlZSkp
IHsKKyAgICAgICAgbV9wcmltYXJ5Q2FsbGVlID0gY2FsbGVlOworICAgICAgICBtX251bUNhbGxz
VG9QcmltYXJ5ID0gMTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAgaWYg
KExJS0VMWShtX3ByaW1hcnlDYWxsZWUgPT0gY2FsbGVlKSkgeworICAgICAgICBtX251bUNhbGxz
VG9QcmltYXJ5Kys7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAorICAgIGlmIChV
TkxJS0VMWSghbV9vdGhlckNhbGxlZXMpKSB7CisgICAgICAgIGFkZFNsb3coY2FsbGVlLCBtZXJn
ZUJhY2tMb2cpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBDYWxsU3Bl
Y3RydW0qIHNlY29uZGFyeSA9IG1fb3RoZXJDYWxsZWVzLT5tX3NlY29uZGFyeS5nZXQoKTsKKyAg
ICBpZiAoIXNlY29uZGFyeSkgeworICAgICAgICBhZGRTbG93KGNhbGxlZSwgbWVyZ2VCYWNrTG9n
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAgc2Vjb25kYXJ5LT5hZGQo
Y2FsbGVlKTsKK30KKworQUxXQVlTX0lOTElORSBDYWxsRWRnZVByb2ZpbGU6Om1lcmdlQmFjaygp
Cit7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAKKyAgICBB
U1NFUlQobV9vdGhlckNhbGxlZXMpOworICAgIEFTU0VSVChtX290aGVyQ2FsbGVlcy0+bV9zZWNv
bmRhcnkpOworICAgIAorICAgIG1fb3RoZXJDYWxsZWVzLT5tX3ByaW1hcnkuYWRkQWxsKCptX290
aGVyQ2FsbGVlcy0+bV9zZWNvbmRhcnkpOworICAgIG1fb3RoZXJDYWxsZWVzLT5tX3NlY29uZGFy
eSA9IG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ2FsbEVk
Z2VQcm9maWxlSW5saW5lc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsTGlua0luZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua0luZm8uY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODMsNiArODMsMTEgQEAgdm9pZCBDYWxsTGlua0luZm86OnZpc2l0V2VhayhSZXBhdGNoQnVmZgog
ICAgIH0KICAgICBpZiAoISFsYXN0U2VlbkNhbGxlZSAmJiAhSGVhcDo6aXNNYXJrZWQobGFzdFNl
ZW5DYWxsZWUuZ2V0KCkpKQogICAgICAgICBsYXN0U2VlbkNhbGxlZS5jbGVhcigpOworICAgIAor
ICAgIGlmIChjYWxsRWRnZVByb2ZpbGUpIHsKKyAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7
CisgICAgICAgIGNhbGxFZGdlUHJvZmlsZS0+dmlzaXRXZWFrKCk7CisgICAgfQogfQogCiBDYWxs
TGlua0luZm8mIENhbGxMaW5rSW5mbzo6ZHVtbXkoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIENhbGxMaW5rSW5mb19oCiAjZGVmaW5lIENhbGxM
aW5rSW5mb19oCiAKKyNpbmNsdWRlICJDYWxsRWRnZVByb2ZpbGUuaCIKICNpbmNsdWRlICJDbG9z
dXJlQ2FsbFN0dWJSb3V0aW5lLmgiCiAjaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCiAjaW5jbHVk
ZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgpAQCAtMzMsNiArMzQsNyBAQAogI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJp
ZXIuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlu
a2VkTGlzdC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTg4LDYgKzkwLDcgQEAgc3RydWN0IENh
bGxMaW5rSW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1NlbgogICAgIHVuc2lnbmVkIGNhbGxlZUdQUiA6
IDg7CiAgICAgdW5zaWduZWQgc2xvd1BhdGhDb3VudDsKICAgICBDb2RlT3JpZ2luIGNvZGVPcmln
aW47CisgICAgT3duUHRyPENhbGxFZGdlUHJvZmlsZT4gY2FsbEVkZ2VQcm9maWxlOwogCiAgICAg
Ym9vbCBpc0xpbmtlZCgpIHsgcmV0dXJuIHN0dWIgfHwgY2FsbGVlOyB9CiAgICAgdm9pZCB1bmxp
bmsoUmVwYXRjaEJ1ZmZlciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCw0OCArMzgsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiBzdGF0aWMgY29uc3QgYm9vbCB2
ZXJib3NlID0gZmFsc2U7CiAKIENhbGxMaW5rU3RhdHVzOjpDYWxsTGlua1N0YXR1cyhKU1ZhbHVl
IHZhbHVlKQotICAgIDogbV9jYWxsVGFyZ2V0KHZhbHVlKQotICAgICwgbV9leGVjdXRhYmxlKDAp
Ci0gICAgLCBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQorICAgIDogbV9jb3VsZFRha2VTbG93
UGF0aChmYWxzZSkKICAgICAsIG1faXNQcm92ZWQoZmFsc2UpCiB7Ci0gICAgaWYgKCF2YWx1ZSB8
fCAhdmFsdWUuaXNDZWxsKCkpCisgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkpIHsK
KyAgICAgICAgbV9jb3VsZFRha2VTbG93UGF0aCA9IHRydWU7CiAgICAgICAgIHJldHVybjsKKyAg
ICB9CiAgICAgCi0gICAgaWYgKCF2YWx1ZS5hc0NlbGwoKS0+aW5oZXJpdHMoSlNGdW5jdGlvbjo6
aW5mbygpKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIG1fZXhlY3V0YWJsZSA9IGpzQ2Fz
dDxKU0Z1bmN0aW9uKj4odmFsdWUuYXNDZWxsKCkpLT5leGVjdXRhYmxlKCk7Ci19Ci0KLUpTRnVu
Y3Rpb24qIENhbGxMaW5rU3RhdHVzOjpmdW5jdGlvbigpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2Nh
bGxUYXJnZXQgfHwgIW1fY2FsbFRhcmdldC5pc0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgCi0gICAgaWYgKCFtX2NhbGxUYXJnZXQuYXNDZWxsKCktPmluaGVyaXRzKEpTRnVuY3Rpb246
OmluZm8oKSkpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIHJldHVybiBqc0Nhc3Q8SlNG
dW5jdGlvbio+KG1fY2FsbFRhcmdldC5hc0NlbGwoKSk7Ci19Ci0KLUludGVybmFsRnVuY3Rpb24q
IENhbGxMaW5rU3RhdHVzOjppbnRlcm5hbEZ1bmN0aW9uKCkgY29uc3QKLXsKLSAgICBpZiAoIW1f
Y2FsbFRhcmdldCB8fCAhbV9jYWxsVGFyZ2V0LmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4gMDsK
LSAgICAKLSAgICBpZiAoIW1fY2FsbFRhcmdldC5hc0NlbGwoKS0+aW5oZXJpdHMoSW50ZXJuYWxG
dW5jdGlvbjo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgcmV0dXJuIGpz
Q2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4obV9jYWxsVGFyZ2V0LmFzQ2VsbCgpKTsKLX0KLQotSW50
cmluc2ljIENhbGxMaW5rU3RhdHVzOjppbnRyaW5zaWNGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBraW5kKSBjb25zdAotewotICAgIGlmICghbV9leGVjdXRhYmxlKQotICAgICAgICByZXR1cm4g
Tm9JbnRyaW5zaWM7Ci0gICAgCi0gICAgcmV0dXJuIG1fZXhlY3V0YWJsZS0+aW50cmluc2ljRm9y
KGtpbmQpOworICAgIG1fdmFyaWFudHMuYXBwZW5kKENhbGxWYXJpYW50KHZhbHVlLmFzQ2VsbCgp
KSk7CiB9CiAKIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50
KGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgQ29kZUJsb2NrKiBwcm9maWxlZEJs
b2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQpAQCAtMTU0LDcgKzEyMSw3IEBAIENhbGxMaW5r
U3RhdHVzOjpFeGl0U2l0ZURhdGEgQ2FsbExpbmtTdGEKIH0KIAogI2lmIEVOQUJMRShKSVQpCi1D
YWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcihjb25zdCBDb25jdXJyZW50
SklUTG9ja2VyJiwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pCitDYWxsTGlua1N0YXR1cyBD
YWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcihjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgVk0m
IHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykKIHsKICAgICAvLyBOb3RlIHRoYXQgZGVz
cGl0ZSByZXF1aXJpbmcgdGhhdCB0aGUgbG9ja2VyIGlzIGhlbGQsIHRoaXMgY29kZSBpcyByYWN5
IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHRoZSBDYWxsTGlua0luZm86IGl0IG1heSBnZXQgY2xl
YXJlZCB3aGlsZSB0aGlzIGNvZGUgcnVucyEgVGhpcyBpcyBiZWNhdXNlCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkocmV2aXNpb24g
MTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDggKzQ2LDcgQEAgc3RydWN0IENhbGxMaW5rSW5mbzsK
IGNsYXNzIENhbGxMaW5rU3RhdHVzIHsKIHB1YmxpYzoKICAgICBDYWxsTGlua1N0YXR1cygpCi0g
ICAgICAgIDogbV9leGVjdXRhYmxlKDApCi0gICAgICAgICwgbV9jb3VsZFRha2VTbG93UGF0aChm
YWxzZSkKKyAgICAgICAgOiBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQogICAgICAgICAsIG1f
aXNQcm92ZWQoZmFsc2UpCiAgICAgewogICAgIH0KQEAgLTYxLDggKzYwLDggQEAgcHVibGljOgog
ICAgIAogICAgIGV4cGxpY2l0IENhbGxMaW5rU3RhdHVzKEpTVmFsdWUpOwogICAgIAotICAgIENh
bGxMaW5rU3RhdHVzKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKQotICAgICAgICA6IG1fZXhl
Y3V0YWJsZShleGVjdXRhYmxlKQorICAgIENhbGxMaW5rU3RhdHVzKENhbGxWYXJpYW50IHZhcmlh
bnQpCisgICAgICAgIDogbV92YXJpYW50cygxLCBleGVjdXRhYmxlKQogICAgICAgICAsIG1fY291
bGRUYWtlU2xvd1BhdGgoZmFsc2UpCiAgICAgICAgICwgbV9pc1Byb3ZlZChmYWxzZSkKICAgICB7
CkBAIC05Miw4ICs5MSw4IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIENvbXB1
dGVzIHRoZSBzdGF0dXMgYXNzdW1pbmcgdGhhdCB3ZSBuZXZlciB0b29rIHNsb3cgcGF0aCBhbmQg
bmV2ZXIgcHJldmlvdXNseQogICAgIC8vIGV4aXRlZC4KLSAgICBzdGF0aWMgQ2FsbExpbmtTdGF0
dXMgY29tcHV0ZUZvcihjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgQ2FsbExpbmtJbmZvJik7
Ci0gICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoY29uc3QgQ29uY3VycmVudEpJ
VExvY2tlciYsIENhbGxMaW5rSW5mbyYsIEV4aXRTaXRlRGF0YSk7CisgICAgc3RhdGljIENhbGxM
aW5rU3RhdHVzIGNvbXB1dGVGb3IoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIFZNJiwgQ2Fs
bExpbmtJbmZvJik7CisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoY29uc3Qg
Q29uY3VycmVudEpJVExvY2tlciYsIFZNJiwgQ2FsbExpbmtJbmZvJiwgRXhpdFNpdGVEYXRhKTsK
ICNlbmRpZgogICAgIAogICAgIHR5cGVkZWYgSGFzaE1hcDxDb2RlT3JpZ2luLCBDYWxsTGlua1N0
YXR1cywgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gQ29udGV4dE1hcDsKQEAgLTEwNywyMCAr
MTA2LDE5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcigK
ICAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiwg
Y29uc3QgQ29udGV4dE1hcCYpOwogICAgIAotICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVy
biBtX2NhbGxUYXJnZXQgfHwgbV9leGVjdXRhYmxlIHx8IG1fY291bGRUYWtlU2xvd1BhdGg7IH0K
KyAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0IHx8ICFtX2V4ZWN1
dGFibGUuaXNFbXB0eSgpIHx8IG1fY291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKICAgICBib29s
IG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFpc1NldCgpOyB9CiAgICAgCiAgICAgYm9vbCBj
b3VsZFRha2VTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bGRUYWtlU2xvd1BhdGg7IH0K
ICAgICBib29sIGlzQ2xvc3VyZUNhbGwoKSBjb25zdCB7IHJldHVybiBtX2V4ZWN1dGFibGUgJiYg
IW1fY2FsbFRhcmdldDsgfQogICAgIAotICAgIEpTVmFsdWUgY2FsbFRhcmdldCgpIGNvbnN0IHsg
cmV0dXJuIG1fY2FsbFRhcmdldDsgfQotICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uKCkgY29uc3Q7
Ci0gICAgSW50ZXJuYWxGdW5jdGlvbiogaW50ZXJuYWxGdW5jdGlvbigpIGNvbnN0OwotICAgIElu
dHJpbnNpYyBpbnRyaW5zaWNGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCkgY29uc3Q7Ci0gICAg
RXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtX2V4ZWN1dGFibGU7
IH0KKyAgICBDYWxsVmFyaWFudExpc3QgdmFyaWFudHMoKSBjb25zdCB7IHJldHVybiBtX3Zhcmlh
bnRzOyB9CisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFudHMuc2l6
ZSgpOyB9CisgICAgQ2FsbFZhcmlhbnQgYXQodW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV92
YXJpYW50c1tpXTsgfQorICAgIENhbGxWYXJpYW50IG9wZXJhdG9yW10odW5zaWduZWQgaSkgY29u
c3QgeyByZXR1cm4gYXQoaSk7IH0KICAgICBib29sIGlzUHJvdmVkKCkgY29uc3QgeyByZXR1cm4g
bV9pc1Byb3ZlZDsgfQotICAgIGJvb2wgY2FuT3B0aW1pemUoKSBjb25zdCB7IHJldHVybiAobV9j
YWxsVGFyZ2V0IHx8IG1fZXhlY3V0YWJsZSkgJiYgIW1fY291bGRUYWtlU2xvd1BhdGg7IH0KKyAg
ICBib29sIGNhbk9wdGltaXplKCkgY29uc3QgeyByZXR1cm4gIW1fdmFyaWFudHMuaXNFbXB0eSgp
OyB9CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgCkBAIC0x
MjgsMTQgKzEyNiwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgbWFrZUNsb3N1cmVDYWxsKCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVCghbV9pc1Byb3ZlZCk7Ci0gICAgICAgIC8vIFR1cm4gdGhpcyBp
bnRvIGEgY2xvc3VyZSBjYWxsLgotICAgICAgICBtX2NhbGxUYXJnZXQgPSBKU1ZhbHVlKCk7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fdmFyaWFudHMuc2l6ZSgpOyBpLS07KQorICAgICAg
ICAgICAgbV92YXJpYW50c1tpXSA9IG1fdmFyaWFudHNbaV0uZGVzcGVjaWZpZWRDbG9zdXJlKCk7
CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRnJvbUxMSW50
KGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29k
ZUluZGV4KTsKICAgICAKLSAgICBKU1ZhbHVlIG1fY2FsbFRhcmdldDsKLSAgICBFeGVjdXRhYmxl
QmFzZSogbV9leGVjdXRhYmxlOworICAgIENhbGxWYXJpYW50TGlzdCBtX3ZhcmlhbnRzOwogICAg
IGJvb2wgbV9jb3VsZFRha2VTbG93UGF0aDsKICAgICBib29sIG1faXNQcm92ZWQ7CiB9OwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJDYWxsVmFyaWFudC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBDYWxsVmFyaWFudDo6
ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIGlmIChJbnRlcm5hbEZ1bmN0aW9u
KiBpbnRlcm5hbEZ1bmN0aW9uID0gdGhpcy0+aW50ZXJuYWxGdW5jdGlvbigpKSB7CisgICAgICAg
IG91dC5wcmludCgiSW50ZXJuYWxGdW5jdGlvbjogIiwgSlNWYWx1ZShpbnRlcm5hbEZ1bmN0aW9u
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKEpTRnVuY3Rpb24qIGZ1
bmN0aW9uID0gdGhpcy0+ZnVuY3Rpb24oKSkgeworICAgICAgICBvdXQucHJpbnQoIihGdW5jdGlv
bjogIiwgSlNWYWx1ZShmdW5jdGlvbiksICI7IEV4ZWN1dGFibGU6ICIsICpleGVjdXRhYmxlKCks
ICIpIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgb3V0LnByaW50KCJFeGVj
dXRhYmxlOiAiLCAqZXhlY3V0YWJsZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDYWxsVmFyaWFudF9oCisjZGVmaW5lIENh
bGxWYXJpYW50X2gKKworI2luY2x1ZGUgIkpTQ2VsbC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgQ2FsbFZhcmlhbnQgeworcHVibGljOgorICAgIGV4cGxpY2l0IENhbGxWYXJpYW50KEpT
Q2VsbCogY2FsbGVlID0gbnVsbHB0cikKKyAgICAgICAgOiBtX2NhbGxlZShjYWxsZWUpCisgICAg
eworICAgIH0KKyAgICAKKyAgICBDYWxsVmFyaWFudChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1
ZVR5cGUpCisgICAgICAgIDogbV9jYWxsZWUoZGVsZXRlZFRva2VuKCkpCisgICAgeworICAgIH0K
KyAgICAKKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX2NhbGxlZTsgfQor
ICAgIAorICAgIC8vIElmIHRoaXMgdmFyaWFudCByZWZlcnMgdG8gYSBmdW5jdGlvbiwgY2hhbmdl
IGl0IHRvIHJlZmVyIHRvIGl0cyBleGVjdXRhYmxlLgorICAgIEFMV0FZU19JTkxJTkUgQ2FsbFZh
cmlhbnQgZGVzcGVjaWZpZWRDbG9zdXJlKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2Nh
bGxlZS0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKQorICAgICAgICAgICAgcmV0dXJuIENhbGxW
YXJpYW50KGpzQ2FzdDxKU0Z1bmN0aW9uKj4obV9jYWxsZWUpLT5leGVjdXRhYmxlKCkpOworICAg
ICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorICAgIAorICAgIEludGVybmFsRnVuY3Rpb24qIGlu
dGVybmFsRnVuY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SW50ZXJuYWxGdW5jdGlvbio+KG1fY2FsbGVlKTsKKyAgICB9CisgICAgCisgICAgSlNGdW5j
dGlvbiogZnVuY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SlNGdW5jdGlvbio+KG1fY2FsbGVlKTsKKyAgICB9CisgICAgCisgICAgRXhlY3V0YWJsZUJh
c2UqIGV4ZWN1dGFibGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKEpTRnVuY3Rpb24qIGZ1
bmN0aW9uID0gdGhpcy0+ZnVuY3Rpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbi0+
ZXhlY3V0YWJsZSgpOworICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxFeGVjdXRhYmxlQmFz
ZSo+KG1fY2FsbGVlKTsKKyAgICB9CisgICAgCisgICAgSW50cmluc2ljIGludHJpbnNpY0ZvcihD
b2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoRXhl
Y3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSB0aGlzLT5leGVjdXRhYmxlKCkpCisgICAgICAgICAg
ICByZXR1cm4gZXhlY3V0YWJsZS0+aW50cmluc2ljRm9yKGtpbmQpOworICAgICAgICByZXR1cm4g
Tm9JbnRyaW5zaWM7CisgICAgfQorICAgIAorICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rp
b25FeGVjdXRhYmxlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBqc0R5bmFtaWNDYXN0
PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUoKSk7CisgICAgfQorICAgIAorICAgIHZv
aWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKKyAgICAKKyAgICBib29sIGlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NhbGxlZSA9
PSBkZWxldGVkVG9rZW4oKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NhbGxl
ZSA9PSBvdGhlci5tX2NhbGxlZTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgaGFzaCgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gV1RGOjpQdHJIYXNoPEpTQ2VsbCo+OjpoYXNoKG1f
Y2FsbGVlKTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIHN0YXRpYyBKU0NlbGwqIGRlbGV0
ZWRUb2tlbigpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU0NlbGwqPihzdGF0aWNfY2FzdDx1aW50
cHRyX3Q+KDEpKTsgfQorICAgICAgICAgICAgICAgICAgIAorICAgIEpTQ2VsbCogbV9jYWxsZWU7
Cit9OworCitzdHJ1Y3QgQ2FsbFZhcmlhbnRIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFz
aChjb25zdCBDYWxsVmFyaWFudCYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgc3Rh
dGljIGJvb2wgZXF1YWwoY29uc3QgQ2FsbFZhcmlhbnQmIGEsIGNvbnN0IENhbGxWYXJpYW50JiBi
KSB7IHJldHVybiBhID09IGI7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJl
VG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Cit9OworCit0eXBlZGVmIFZlY3RvcjxDYWxsVmFyaWFu
dCwgMT4gQ2FsbFZhcmlhbnRMaXN0OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNl
IFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKK3RlbXBs
YXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEpTQzo6Q2FsbFZhcmlhbnQ+IHsKKyAgICB0eXBlZGVm
IEpTQzo6Q2FsbFZhcmlhbnRIYXNoIEhhc2g7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dHJ1Y3QgSGFzaFRyYWl0czsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpDYWxs
VmFyaWFudD4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8SlNDOjpDYWxsVmFyaWFudD4geyB9Owor
Cit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIENhbGxWYXJpYW50X2gKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJl
dmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzEsOCArODcxLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgVmVjdG9yPFVubGlua2VkQmxvY2s+IG1fdW5saW5rZWRCbG9ja3M7CiAgICAgICAgIAog
ICAgICAgICAvLyBQb3RlbnRpYWwgYmxvY2sgbGlua2luZyB0YXJnZXRzLiBNdXN0IGJlIHNvcnRl
ZCBieSBieXRlY29kZUJlZ2luLCBhbmQKLSAgICAgICAgLy8gY2Fubm90IGhhdmUgdHdvIGJsb2Nr
cyB0aGF0IGhhdmUgdGhlIHNhbWUgYnl0ZWNvZGVCZWdpbi4gRm9yIHRoaXMgdmVyeQotICAgICAg
ICAvLyByZWFzb24sIHRoaXMgaXMgbm90IGVxdWl2YWxlbnQgdG8gCisgICAgICAgIC8vIGNhbm5v
dCBoYXZlIHR3byBibG9ja3MgdGhhdCBoYXZlIHRoZSBzYW1lIGJ5dGVjb2RlQmVnaW4uCiAgICAg
ICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gbV9ibG9ja0xpbmtpbmdUYXJnZXRzOwogICAgICAgICAK
ICAgICAgICAgLy8gSWYgdGhlIGNhbGxzaXRlJ3MgYmFzaWMgYmxvY2sgd2FzIHNwbGl0IGludG8g
dHdvLCB0aGVuIHRoaXMgd2lsbCBiZQpAQCAtMTMxNyw3ICsxMzE2LDYgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgIAogICAgIC8vIElmIHdlIGdldCB0byB0
aGlzIHBvaW50IHRoZW4gYWxsIGJsb2NrcyBtdXN0IGVuZCBpbiBzb21lIHNvcnQgb2YgdGVybWlu
YWxzLgogICAgIEFTU0VSVChsYXN0QmxvY2stPmxhc3QoKS0+aXNUZXJtaW5hbCgpKTsKLSAgICAK
IAogICAgIC8vIE5lZWQgdG8gY3JlYXRlIGEgbmV3IGJhc2ljIGJsb2NrIGZvciB0aGUgY29udGlu
dWF0aW9uIGF0IHRoZSBjYWxsZXIuCiAgICAgUmVmUHRyPEJhc2ljQmxvY2s+IGJsb2NrID0gYWRv
cHRSZWYobmV3IEJhc2ljQmxvY2sobmV4dE9mZnNldCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9j
YWxzLCBQTmFOKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAko
cmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAgR3JhcGg6OkdyYXBoKFZNJiB2bSwg
UGxhbiYgcGxhbiwgTG9uZ0xpdgogICAgICwgbV9mb3JtKExvYWRTdG9yZSkKICAgICAsIG1fdW5p
ZmljYXRpb25TdGF0ZShMb2NhbGx5VW5pZmllZCkKICAgICAsIG1fcmVmQ291bnRTdGF0ZShFdmVy
eXRoaW5nSXNMaXZlKQorICAgICwgbV9zaG91bGRQcm9maWxlKGZhbHNlKQogewogICAgIEFTU0VS
VChtX3Byb2ZpbGVkQmxvY2spOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NjEsNiArNzYxLDcgQEAgcHVibGljOgogICAg
IEdyYXBoRm9ybSBtX2Zvcm07CiAgICAgVW5pZmljYXRpb25TdGF0ZSBtX3VuaWZpY2F0aW9uU3Rh
dGU7CiAgICAgUmVmQ291bnRTdGF0ZSBtX3JlZkNvdW50U3RhdGU7CisgICAgYm9vbCBtX3Nob3Vs
ZFByb2ZpbGU7CiBwcml2YXRlOgogICAgIAogICAgIHZvaWQgaGFuZGxlU3VjY2Vzc29yKFZlY3Rv
cjxCYXNpY0Jsb2NrKiwgMTY+JiB3b3JrbGlzdCwgQmFzaWNCbG9jayosIEJhc2ljQmxvY2sqIHN1
Y2Nlc3Nvcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY4OSw2ICs2ODksMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSog
bm9kZQogCiAgICAgbV9qaXQuZW1pdFN0b3JlQ29kZU9yaWdpbihub2RlLT5vcmlnaW4uc2VtYW50
aWMpOwogICAgIAorICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1faml0LmNvZGVCbG9jaygpLT5h
ZGRDYWxsTGlua0luZm8oKTsKKworICAgIGlmIChtX2ppdC5ncmFwaCgpLm1fc2hvdWxkUHJvZmls
ZSkgeworICAgICAgICBtX2ppdC52bSgpLmNhbGxFZGdlTG9nLT5lbWl0TG9nQ29kZSgKKyAgICAg
ICAgICAgIG1faml0LCBjYWxsTGlua0luZm8tPmNhbGxFZGdlUHJvZmlsZSwgY2FsbGVlLmpzVmFs
dWVSZWdzKCkpOworICAgIH0KKyAgICAKICAgICBzbG93UGF0aC5hcHBlbmQoYnJhbmNoTm90Q2Vs
bChjYWxsZWUuanNWYWx1ZVJlZ3MoKSkpOwogICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFu
Y2hQdHJXaXRoUGF0Y2goTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBjYWxsZWVQYXlsb2FkR1BS
LCB0YXJnZXRUb0NoZWNrKSk7CiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhjYWxsZWVQYXlsb2FkR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9zY29w
ZSkpLCByZXN1bHRQYXlsb2FkR1BSKTsKQEAgLTcxMyw3ICs3MjAsNiBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgIG1faml0Lm1vdmUoY2FsbGVlUGF5
bG9hZEdQUiwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICBtX2ppdC5tb3ZlKGNhbGxlZVRhZ0dQ
UiwgR1BSSW5mbzo6cmVnVDEpOwogICAgIH0KLSAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2pp
dC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7CiAgICAgbV9qaXQubW92ZShNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihpbmZvKSwgR1BSSW5mbzo6cmVnVDIpOwogICAgIEpJVENv
bXBpbGVyOjpDYWxsIHNsb3dDYWxsID0gbV9qaXQubmVhckNhbGwoKTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZp
c2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjYsNyArNjI2LDYgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZU1pc2NTdHJpY3RFcQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
Q2FsbChOb2RlKiBub2RlKQogewotCiAgICAgYm9vbCBpc0NhbGwgPSBub2RlLT5vcCgpID09IENh
bGw7CiAgICAgaWYgKCFpc0NhbGwpCiAgICAgICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwg
bm9kZSwgbm9kZS0+b3AoKSA9PSBDb25zdHJ1Y3QpOwpAQCAtNjcwLDYgKzY2OSwxMSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAKICAgICBtX2ppdC5lbWl0U3Rv
cmVDb2RlT3JpZ2luKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgCisgICAgQ2FsbExpbmtJ
bmZvKiBjYWxsTGlua0luZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7
CisgICAgCisgICAgaWYgKG1faml0LmdyYXBoKCkubV9zaG91bGRQcm9maWxlKQorICAgICAgICBt
X2ppdC52bSgpLmNhbGxFZGdlTG9nLT5lbWl0TG9nQ29kZShtX2ppdCwgY2FsbExpbmtJbmZvLT5j
YWxsRWRnZVByb2ZpbGUsIGNhbGxlZUdQUik7CisKICAgICBzbG93UGF0aCA9IG1faml0LmJyYW5j
aFB0cldpdGhQYXRjaChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxlZUdQUiwgdGFyZ2V0
VG9DaGVjaywgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoMCkpOwogCiAgICAgbV9qaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjYWxsZWVHUFIsIE9CSkVDVF9PRkZTRVRP
RihKU0Z1bmN0aW9uLCBtX3Njb3BlKSksIHJlc3VsdEdQUik7CkBAIC02ODIsNyArNjg2LDYgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgIHNsb3dQYXRoLmxp
bmsoJm1faml0KTsKICAgICAKICAgICBtX2ppdC5tb3ZlKGNhbGxlZUdQUiwgR1BSSW5mbzo6cmVn
VDApOyAvLyBDYWxsZWUgbmVlZHMgdG8gYmUgaW4gcmVnVDAKLSAgICBDYWxsTGlua0luZm8qIGNh
bGxMaW5rSW5mbyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKICAgICBt
X2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQ
UkluZm86OnJlZ1QyKTsgLy8gTGluayBpbmZvIG5lZWRzIHRvIGJlIGluIHJlZ1QyCiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgc2xvd0NhbGwgPSBtX2ppdC5uZWFyQ2FsbCgpOwogICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNr
SW5qZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02MSw2ICs2MSw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFPcHRpb25zOjplbmFibGVP
U1JFbnRyeVRvRlRMKCkpCiAgICAgICAgICAgICBsZXZlbCA9IEZUTDo6Q2FuQ29tcGlsZTsKICAg
ICAgICAgCisgICAgICAgIG1fZ3JhcGgubV9zaG91bGRQcm9maWxlID0gdHJ1ZTsKKyAgICAgICAg
CiAgICAgICAgIEluc2VydGlvblNldCBpbnNlcnRpb25TZXQobV9ncmFwaCk7CiAgICAgICAgIGZv
ciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRl
eC0tOykgewogICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJs
b2NrSW5kZXgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fz
c2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCw2ICs4OCwyMSBAQCBwdWJsaWM6
CiAjZW5kaWYKICAgICB9CiAgICAgCisgICAgdm9pZCBsb2FkVmFsdWUoQWRkcmVzcyBhZGRyZXNz
LCBKU1ZhbHVlUmVncyByZWdzKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBs
b2FkNjQoYWRkcmVzcywgcmVncy5ncHIoKSk7CisjZWxzZQorICAgICAgICBpZiAoYWRkcmVzcy5i
YXNlID09IHJlZ3MucGF5bG9hZEdQUigpKSB7CisgICAgICAgICAgICBsb2FkMzIoYWRkcmVzcy53
aXRoT2Zmc2V0KFRhZ09mZnNldCksIHJlZ3MudGFnR1BSKCkpOworICAgICAgICAgICAgbG9hZDMy
KGFkZHJlc3Mud2l0aE9mZnNldChQYXlsb2FkT2Zmc2V0KSwgcmVncy5wYXlsb2FkR1BSKCkpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldChQ
YXlsb2FkT2Zmc2V0KSwgcmVncy5wYXlsb2FkR1BSKCkpOworICAgICAgICAgICAgbG9hZDMyKGFk
ZHJlc3Mud2l0aE9mZnNldChUYWdPZmZzZXQpLCByZWdzLnRhZ0dQUigpKTsKKyAgICAgICAgfQor
I2VuZGlmCisgICAgfQorICAgIAogICAgIHZvaWQgbW92ZVRydXN0ZWRWYWx1ZShKU1ZhbHVlIHZh
bHVlLCBKU1ZhbHVlUmVncyByZWdzKQogICAgIHsKICNpZiBVU0UoSlNWQUxVRTY0KQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCShyZXZpc2lvbiAxNzIxNzcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjY2LDYgKzE2NjYsMTUgQEAgcHVibGljOgogICAgICAgICBtb3ZlKGFyZzQsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMyk7CiAgICAgfQogI2VuZGlmCisgICAgCisgICAgdm9pZCBzZXR1
cEFyZ3VtZW50cyhKU1ZhbHVlUmVncyBhcmcxKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQor
ICAgICAgICBzZXR1cEFyZ3VtZW50cyhhcmcxLmdwcigpKTsKKyNlbHNlCisgICAgICAgIHNldHVw
QXJndW1lbnRzKGFyZzEucGF5bG9hZEdQUigpLCBhcmcxLnRhZ0dQUigpKTsKKyNlbmRpZgorICAg
IH0KIAogICAgIHZvaWQgc2V0dXBSZXN1bHRzKEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCKQog
ICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCShyZXZpc2lvbiAxNzIx
NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAkod29ya2luZyBjb3B5
KQpAQCAtNjAsNiArNjAsOCBAQCBwdWJsaWM6CiAgICAgR1BSUmVnIHRhZ0dQUigpIGNvbnN0IHsg
cmV0dXJuIEludmFsaWRHUFJSZWc7IH0KICAgICBHUFJSZWcgcGF5bG9hZEdQUigpIGNvbnN0IHsg
cmV0dXJuIG1fZ3ByOyB9CiAgICAgCisgICAgYm9vbCB1c2VzKEdQUlJlZyBncHIpIGNvbnN0IHsg
cmV0dXJuIG1fZ3ByID09IGdwcjsgfQorICAgIAogcHJpdmF0ZToKICAgICBHUFJSZWcgbV9ncHI7
CiB9OwpAQCAtMTY5LDYgKzE3MSw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRhZ0dQUigp
OwogICAgIH0KIAorICAgIGJvb2wgdXNlcyhHUFJSZWcgZ3ByKSBjb25zdCB7IHJldHVybiBtX3Rh
Z0dQUiA9PSBncHIgfHwgbV9wYXlsb2FkR1BSID09IGdwcjsgfQorICAgIAogcHJpdmF0ZToKICAg
ICBpbnQ4X3QgbV90YWdHUFI7CiAgICAgaW50OF90IG1fcGF5bG9hZEdQUjsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHJldmlzaW9uIDE3MjE3NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAwLDYgKzMwMCwxMyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJ
RCBvcGNvZGVJCiAgICAgc3RvcmUzMihyZWdUMCwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3Rl
ciwgSlNTdGFjazo6Q2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAr
IFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKICAgICBzdG9yZTMy
KHJlZ1QxLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBKU1N0YWNrOjpDYWxsZWUgKiBz
dGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgVGFnT2Zmc2V0IC0gc2l6ZW9mKENh
bGxlckZyYW1lQW5kUEMpKSk7CiAKKyAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2NvZGVCbG9j
ay0+YWRkQ2FsbExpbmtJbmZvKCk7CisKKyAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7
CisgICAgICAgIG1fdm0tPmNhbGxFZGdlTG9nLT5lbWl0TG9nQ29kZSgKKyAgICAgICAgICAgICp0
aGlzLCBpbmZvLT5jYWxsRWRnZVByb2ZpbGUsIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkpOwor
ICAgIH0KKwogICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsX2V2YWwpIHsKICAgICAgICAgY29t
cGlsZUNhbGxFdmFsKGluc3RydWN0aW9uKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzEzLDcgKzMy
MCw2IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICBhZGRT
bG93Q2FzZShzbG93Q2FzZSk7CiAKICAgICBBU1NFUlQobV9jYWxsQ29tcGlsYXRpb25JbmZvLnNp
emUoKSA9PSBjYWxsTGlua0luZm9JbmRleCk7Ci0gICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9j
b2RlQmxvY2stPmFkZENhbGxMaW5rSW5mbygpOwogICAgIGluZm8tPmNhbGxUeXBlID0gQ2FsbExp
bmtJbmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJRCk7CiAgICAgaW5mby0+Y29kZU9yaWdpbiA9IENv
ZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCk7CiAgICAgaW5mby0+Y2FsbGVlR1BSID0gcmVnVDA7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHJldmlzaW9uIDE3MjE3
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIxMiw2ICsyMTIsMTEgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQg
b3Bjb2RlSQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVlLCByZWdUMCk7IC8vIHJl
Z1QwIGhvbGRzIGNhbGxlZS4KIAogICAgIHN0b3JlNjQocmVnVDAsIEFkZHJlc3Moc3RhY2tQb2lu
dGVyUmVnaXN0ZXIsIEpTU3RhY2s6OkNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJl
Z2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKyAgICAKKyAgICBDYWxsTGlu
a0luZm8qIGluZm8gPSBtX2NvZGVCbG9jay0+YWRkQ2FsbExpbmtJbmZvKCk7CisKKyAgICBpZiAo
c2hvdWxkRW1pdFByb2ZpbGluZygpKQorICAgICAgICBtX3ZtLT5jYWxsRWRnZUxvZy0+ZW1pdExv
Z0NvZGUoKnRoaXMsIGluZm8tPmNhbGxFZGdlUHJvZmlsZSwgcmVnVDApOwogCiAgICAgaWYgKG9w
Y29kZUlEID09IG9wX2NhbGxfZXZhbCkgewogICAgICAgICBjb21waWxlQ2FsbEV2YWwoaW5zdHJ1
Y3Rpb24pOwpAQCAtMjIzLDcgKzIyOCw2IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29k
ZUlEIG9wY29kZUkKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZSk7CiAKICAgICBBU1NFUlQobV9j
YWxsQ29tcGlsYXRpb25JbmZvLnNpemUoKSA9PSBjYWxsTGlua0luZm9JbmRleCk7Ci0gICAgQ2Fs
bExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5mbygpOwogICAgIGlu
Zm8tPmNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJRCk7CiAgICAg
aW5mby0+Y29kZU9yaWdpbiA9IENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCk7CiAgICAgaW5m
by0+Y2FsbGVlR1BSID0gcmVnVDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJ
KHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBBcml0eUNoZWNrRmFpbFJldHVyblRodW5rczsKICAgICBjbGFzcyBCdWlsdGluRXhlY3V0
YWJsZXM7CisgICAgY2xhc3MgQ2FsbEVkZ2VMb2c7CiAgICAgY2xhc3MgQ29kZUJsb2NrOwogICAg
IGNsYXNzIENvZGVDYWNoZTsKICAgICBjbGFzcyBDb21tb25JZGVudGlmaWVyczsKQEAgLTIzMiw2
ICsyMzMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAg
T3duUHRyPERGRzo6TG9uZ0xpdmVkU3RhdGU+IGRmZ1N0YXRlOwogI2VuZGlmIC8vIEVOQUJMRShE
RkdfSklUKQorICAgICAgICAKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxFZGdlTG9nPiBj
YWxsRWRnZUxvZzsKIAogICAgICAgICBWTVR5cGUgdm1UeXBlOwogICAgICAgICBDbGllbnREYXRh
KiBjbGllbnREYXRhOwpJbmRleDogU291cmNlL1dURi93dGYvT3duUHRyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvT3duUHRyLmgJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9X
VEYvd3RmL093blB0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3MiwxNCBAQCBuYW1lc3Bh
Y2UgV1RGIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gT3duUHRyJiBvcGVyYXRvcj0o
T3duUHRyPFU+JiYpOwogCiAgICAgICAgIHZvaWQgc3dhcChPd25QdHImIG8pIHsgc3RkOjpzd2Fw
KG1fcHRyLCBvLm1fcHRyKTsgfQorICAgICAgICAKKyAgICAgICAgLy8gQ29uc3RydWN0IGFuIG9i
amVjdCB0byBzdG9yZSBpbnRvIHRoaXMgT3duUHRyLCBidXQgb25seSBzbyBsb25nIGFzIHRoaXMg
T3duUHRyCisgICAgICAgIC8vIGRvZXNuJ3QgYWxyZWFkeSBwb2ludCB0byBhbiBvYmplY3QuIFRo
aXMgd2lsbCBlbnN1cmUgdGhhdCBhZnRlciB5b3UgY2FsbCB0aGlzLAorICAgICAgICAvLyB0aGUg
T3duUHRyIHdpbGwgcG9pbnQgdG8gYW4gaW5zdGFuY2Ugb2YgVC4gVGhpcyBpbnN0YW5jZSBtYXkg
b3IgbWF5IG5vdCBoYXZlIGJlZW4KKyAgICAgICAgLy8gY3JlYXRlZCBieSB0aGlzIGNhbGwuIE1v
cmVvdmVyLCB0aGlzIGNhbGwgdXNlcyBhbiBvcHBvcnR1bmlzdGljIHRyYW5zYWN0aW9uLCBpbgor
ICAgICAgICAvLyB0aGF0IHdlIG1heSBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgVCBhbmQgdGhlbiBp
bW1lZGlhdGVseSB0aHJvdyBpdCBhd2F5LgorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBB
cmdzPgorICAgICAgICB2b2lkIGNyZWF0ZVRyYW5zYWN0aW9uYWxseShBcmdzLi4uIGFyZ3MpOwog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgZXhwbGljaXQgT3duUHRyKFB0clR5cGUgcHRyKSA6IG1f
cHRyKHB0cikgeyB9CkBAIC0xODYsNiArMTk0LDI4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAg
ICByZXR1cm4gcC5nZXQoKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1w
bGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBpbmxpbmUgT3duUHRyPFQ+OjpjcmVhdGVUcmFuc2FjdGlv
bmFsbHkoQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgaWYgKG1fcHRyKSB7CisgICAgICAg
ICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgVCogbmV3T2JqZWN0ID0gbmV3IFQoYXJncy4uLik7CisgICAg
ICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CisjaWYgRU5BQkxFKENPTVBBUkVfQU5EX1NXQVAp
CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGlmIChtX3B0cikgeworICAgICAgICAgICAgICAg
IGRlbGV0ZSBuZXdPYmplY3Q7CisgICAgICAgICAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9IHdoaWxl
ICghV1RGOjp3ZWFrQ29tcGFyZUFuZFN3YXAoJm1fcHRyLCBudWxscHRyLCBuZXdPYmplY3QpKTsK
KyNlbHNlCisgICAgICAgIG1fcHRyID0gbmV3T2JqZWN0OworI2VuZGlmCisgICAgfQorCiB9IC8v
IG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpPd25QdHI7CkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9TcGVjdHJ1bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgJKHJl
dmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTMyLDIyICszMiwyOSBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdGVtcGxhdGU8dHlwZW5h
bWUgVD4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIENvdW50ZXJUeXBlID0gdW5zaWdu
ZWQ+CiBjbGFzcyBTcGVjdHJ1bSB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNo
TWFwPFQsIHVuc2lnbmVkIGxvbmc+OjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIHR5
cGVuYW1lIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0
ZXJhdG9yOworICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46Oml0
ZXJhdG9yIGl0ZXJhdG9yOworICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBDT3VudGVy
VHlwZT46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwogICAgIAogICAgIFNwZWN0cnVt
KCkgeyB9CiAgICAgCi0gICAgdm9pZCBhZGQoY29uc3QgVCYga2V5LCB1bnNpZ25lZCBsb25nIGNv
dW50ID0gMSkKKyAgICB2b2lkIGFkZChjb25zdCBUJiBrZXksIENvdW50ZXJUeXBlIGNvdW50ID0g
MSkKICAgICB7Ci0gICAgICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz46OkFk
ZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBjb3VudCk7CisgICAgICAgIHR5cGVuYW1l
IEhhc2hNYXA8VCwgQ291bnRlclR5cGU+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRkKGtl
eSwgY291bnQpOwogICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAg
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSArPSBjb3VudDsKICAgICB9CiAgICAgCi0gICAgdW5zaWdu
ZWQgbG9uZyBnZXQoY29uc3QgVCYga2V5KSBjb25zdAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
CisgICAgdm9pZCBhZGRBbGwoY29uc3QgU3BlY3RydW08VCwgVT4mIG90aGVyU3BlY3RydW0pCisg
ICAgeworICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBvdGhlclNwZWN0cnVtKQorICAgICAgICAg
ICAgYWRkKGVudHJ5LmtleSwgZW50cnkuY291bnQpOworICAgIH0KKyAgICAKKyAgICBDb3VudGVy
VHlwZSBnZXQoY29uc3QgVCYga2V5KSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3RfaXRlcmF0
b3IgaXRlciA9IG1fbWFwLmZpbmQoa2V5KTsKICAgICAgICAgaWYgKGl0ZXIgPT0gbV9tYXAuZW5k
KCkpCkBAIC02Myw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgS2V5QW5kQ291bnQgewog
ICAgICAgICBLZXlBbmRDb3VudCgpIHsgfQogICAgICAgICAKLSAgICAgICAgS2V5QW5kQ291bnQo
Y29uc3QgVCYga2V5LCB1bnNpZ25lZCBsb25nIGNvdW50KQorICAgICAgICBLZXlBbmRDb3VudChj
b25zdCBUJiBrZXksIENvdW50ZXJUeXBlIGNvdW50KQogICAgICAgICAgICAgOiBrZXkoa2V5KQog
ICAgICAgICAgICAgLCBjb3VudChjb3VudCkKICAgICAgICAgewpAQCAtODAsNyArODcsNyBAQCBw
dWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBUIGtleTsKLSAgICAgICAgdW5zaWduZWQgbG9u
ZyBjb3VudDsKKyAgICAgICAgQ291bnRlclR5cGUgY291bnQ7CiAgICAgfTsKICAgICAKICAgICAv
LyBSZXR1cm5zIGEgbGlzdCBvcmRlcmVkIGZyb20gbG93ZXN0LWNvdW50IHRvIGhpZ2hlc3QtY291
bnQuCkBAIC05NCw4ICsxMDEsMTYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbGlzdDsKICAg
ICB9CiAgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICB2b2lkIHJlbW92
ZUlmKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgeworICAgICAgICBtX21hcC5yZW1vdmVJ
ZihbZnVuY3Rvcl0gKEhhc2hNYXA8VCwgQ291bnRlclR5cGU+OjpLZXlWYWx1ZVBhaXJUeXBlJiBw
YWlyKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0b3IoS2V5QW5kQ291bnQocGFpci5r
ZXksIHBhaXIudmFsdWUpKTsKKyAgICAgICAgICAgIH0pOworICAgIH0KKyAgICAKIHByaXZhdGU6
Ci0gICAgSGFzaE1hcDxULCB1bnNpZ25lZCBsb25nPiBtX21hcDsKKyAgICBIYXNoTWFwPFQsIENv
dW50ZXJUeXBlPiBtX21hcDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdURgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236718</attachid>
            <date>2014-08-16 10:35:13 -0700</date>
            <delta_ts>2014-08-16 12:19:34 -0700</delta_ts>
            <desc>it&apos;s coming together</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>77345</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZS5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIENhbGxFZGdlX2gKKyNkZWZpbmUgQ2FsbEVkZ2VfaAor
CisjaW5jbHVkZSAiQ2FsbFZhcmlhbnQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIENh
bGxFZGdlIHsKK3B1YmxpYzoKKyAgICBDYWxsRWRnZSgpOworICAgIENhbGxFZGdlKENhbGxWYXJp
YW50IGNhbGxlZSwgQ2FsbEVkZ2VDb3VudFR5cGUgY291bnQpOworICAgIAorICAgIGJvb2wgb3Bl
cmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fY2FsbGVlOyB9CisgICAgCisgICAgQ2FsbFZhcmlh
bnQgY2FsbGVlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsZWU7IH0KKyAgICBDYWxsRWRnZUNvdW50
VHlwZSBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnQ7IH0KKyAgICAKK3B1YmxpYzoKKyAg
ICBDYWxsVmFyaWFudCBtX2NhbGxlZTsKKyAgICBDYWxsRWRnZUNvdW50VHlwZSBtX2NvdW50Owor
fTsKKworaW5saW5lIENhbGxFZGdlOjpDYWxsRWRnZShDYWxsVmFyaWFudCBjYWxsZWUsIGZsb2F0
IGNvdW50KQorICAgIDogbV9jYWxsZWUoY2FsbGVlKQorICAgICwgbV9jb3VudChjb3VudCkKK3sK
K30KKworaW5saW5lIENhbGxFZGdlOjpDYWxsRWRnZSgpCisgICAgOiBDYWxsRWRnZShDYWxsVmFy
aWFudCgpLCAwKQoreworfQorCit0eXBlZGVmIFZlY3RvcjxDYWxsRWRnZSwgMT4gQ2FsbEVkZ2VM
aXN0OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIENhbGxFZGdlX2gKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmls
ZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bEVkZ2VQcm9maWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyMyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQ2FsbEVkZ2VQcm9maWxlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitW
ZWN0b3I8Q2FsbEVkZ2U+IENhbGxFZGdlUHJvZmlsZTo6Y2FsbEVkZ2VzKCkgY29uc3QKK3sKKyAg
ICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIAorICAgIENhbGxFZGdl
TGlzdCByZXN1bHQ7CisgICAgCisgICAgQ2FsbFZhcmlhbnQgcHJpbWFyeUNhbGxlZSA9IG1fcHJp
bWFyeUNhbGxlZTsKKyAgICBmbG9hdCBudW1DYWxsc1RvUHJpbWFyeSA9IG1fbnVtQ2FsbHNUb1By
aW1hcnk7CisgICAgLy8gRGVmZW5kIGFnYWluc3QgcmFjZXMuIFRoZXNlIGZpZWxkcyBhcmUgbW9k
aWZpZWQgYnkgdGhlIGxvZyBwcm9jZXNzb3Igd2l0aG91dCBsb2NraW5nLgorICAgIGlmICghIXBy
aW1hcnlDYWxsZWUgJiYgbnVtQ2FsbHNUb1ByaW1hcnkpCisgICAgICAgIHJlc3VsdC5hcHBlbmQo
Q2FsbEVkZ2UocHJpbWFyeUNhbGxlZSwgbnVtQ2FsbHNUb1ByaW1hcnkpKTsKKyAgICAKKyAgICBp
ZiAobV9vdGhlckNhbGxlZXMpIHsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgaWYgdGhlIHBy
aW1hcnkgdGhyZWFkIGhhZCBqdXN0IGNyZWF0ZWQgYSBtX290aGVyQ2FsbGVzIHdoaWxlIGxvZwor
ICAgICAgICAvLyBwcm9jZXNzaW5nLCB3ZSBzZWUgYSBjb25zaXN0ZW50bHkgY3JlYXRlZCBvbmUu
IFRoZSBsb2NrIGJlaW5nIGhlbGQgaXMgaW5zdWZmaWNpZW50IGZvcgorICAgICAgICAvLyB0aGlz
LCBzaW5jZSB0aGUgbG9nIHByb2Nlc3NvciB3aWxsIG9ubHkgZ3JhYiB0aGUgbG9jayB3aGVuIG1l
cmdpbmcgdGhlIHNlY29uZGFyeQorICAgICAgICAvLyBzcGVjdHJ1bSBpbnRvIHRoZSBwcmltYXJ5
IG9uZSBidXQgbWF5IHN0aWxsIGNyZWF0ZSB0aGUgZGF0YSBzdHJ1Y3R1cmUgd2l0aG91dCBob2xk
aW5nCisgICAgICAgIC8vIGxvY2tzLgorICAgICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKKyAg
ICAgICAgZm9yIChDYWxsRWRnZSBlbnRyeSA6IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZCkK
KyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZW50cnkpOworICAgIH0KKyAgICAKKyAgICBzdGQ6
OnNvcnQocmVzdWx0LmJlZ2luKCksIHJlc3VsdC5lbmQoKSwgW10gKGNvbnN0IENhbGxFZGdlJiBh
LCBjb25zdCBDYWxsRWRnZSYgYikgLT4gYm9vbCB7CisgICAgICAgICAgICByZXR1cm4gYS5jb3Vu
dCgpID4gYi5jb3VudCgpOworICAgICAgICB9KTsKKyAgICAKKyAgICBpZiAocmVzdWx0LnNpemUo
KSA+PSAyKQorICAgICAgICBBU1NFUlQocmVzdWx0WzBdLmNvdW50KCkgPiByZXN1bHQubGFzdCgp
LmNvdW50KCkpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Zsb2F0IENhbGxFZGdl
UHJvZmlsZTo6bnVtQ2FsbHNUb0tub3duQ2VsbHMoKSBjb25zdAoreworICAgIHVuc2lnbmVkIHJl
c3VsdCA9IDA7CisgICAgZm9yIChDYWxsRWRnZSBlZGdlIDogY2FsbEVkZ2VzKCkpCisgICAgICAg
IHJlc3VsdCArPSBlZGdlLmNvdW50KCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGlj
IGJvb2wgd29ydGhEZXNwZWNpZnlpbmcoY29uc3QgQ2FsbFZhcmlhbnQmIHZhcmlhbnQpCit7Cisg
ICAgcmV0dXJuICFIZWFwOjppc01hcmtlZCh2YXJpYW50LnJhd0NhbGxlZUNlbGwoKSkKKyAgICAg
ICAgJiYgSGVhcDo6aXNNYXJrZWQodmFyaWFudC5kZXNwZWNpZmllZENsb3N1cmUoKS5yYXdDYWxs
ZWVDZWxsKCkpOworfQorCitib29sIENhbGxFZGdlUHJvZmlsZTo6d29ydGhEZXNwZWNpZnlpbmco
KQoreworICAgIGlmIChtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAKKyAgICBpZiAoISFtX3ByaW1hcnlDYWxsZWUgJiYgIXdvcnRoRGVzcGVjaWZ5
aW5nKG1fcHJpbWFyeUNhbGxlZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBp
ZiAobV9vdGhlckNhbGxlZXMpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9vdGhlckNh
bGxlZXMtPm1fcHJvY2Vzc2VkLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgaWYgKCF3b3J0
aERlc3BlY2lmeWluZyhtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCkpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDYWxsRWRnZVByb2ZpbGU6OnZpc2l0V2VhaygpCit7
CisgICAgaWYgKCFtX3ByaW1hcnlDYWxsZWUgJiYgIW1fb3RoZXJDYWxsZWVzKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAg
ICAKKyAgICAvLyBTZWUgaWYgYW55dGhpbmcgaXMgZGVhZCBhbmQgaWYgdGhhdCBjYW4gYmUgcmVj
dGlmaWVkIGJ5IGRlc3BlY2lmeWluZy4KKyAgICBpZiAod29ydGhEZXNwZWNpZnlpbmcoKSkgewor
ICAgICAgICBDYWxsU3BlY3RydW0gbmV3U3BlY3RydW07CisgICAgICAgIAorICAgICAgICBpZiAo
ISFtX3ByaW1hcnlDYWxsZWUpCisgICAgICAgICAgICBuZXdTcGVjdHJ1bS5hZGQobV9wcmltYXJ5
Q2FsbGVlLmRlc3BlY2lmaWVkQ2xvc3VyZSgpLCBtX251bUNhbGxzVG9QcmltYXJ5KTsKKyAgICAg
ICAgCisgICAgICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLnNpemUoKTsgaS0tOykgeworICAg
ICAgICAgICAgICAgIG5ld1NwZWN0cnVtLmFkZCgKKyAgICAgICAgICAgICAgICAgICAgbV9vdGhl
ckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNhbGxlZSgpLmRlc3BlY2lmaWVkQ2xvc3VyZSgpLAor
ICAgICAgICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQo
KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgVmVjdG9yPENhbGxTcGVjdHJ1bTo6S2V5QW5kQ291bnQ+IGxpc3QgPSBuZXdT
cGVjdHJ1bS5idWlsZExpc3QoKTsKKyAgICAgICAgQVNTRVJUKGxpc3Quc2l6ZSgpKTsKKyAgICAg
ICAgbV9wcmltYXJ5Q2FsbGVlID0gbGlzdC5sYXN0KCkua2V5OworICAgICAgICBtX251bUNhbGxz
VG9QcmltYXJ5ID0gbGlzdC5sYXN0KCkuY291bnQ7CisgICAgICAgIAorICAgICAgICBBU1NFUlQo
ISFtX290aGVyQ2FsbGVlcyA9PSAobGlzdC5zaXplKCkgPj0gMikpOworICAgICAgICBpZiAobV9v
dGhlckNhbGxlZXMpIHsKKyAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5j
bGVhcigpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbGlzdC5zaXplKCkgLSAxOyBp
LS07KQorICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5hcHBlbmQo
Q2FsbEVkZ2UobGlzdFtpXS5rZXksIGxpc3RbaV0uY291bnQpKTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgbV9jbG9zdXJlc0FyZURlc3BlY2lmaWVkID0gdHJ1ZTsKKyAgICAgICAgCisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKCEhbV9wcmltYXJ5Q2FsbGVlICYm
ICFIZWFwOjppc01hcmtlZChtX3ByaW1hcnlDYWxsZWUucmF3Q2FsbGVlQ2VsbCgpKSkgeworICAg
ICAgICBtX3ByaW1hcnlDYWxsZWUgPSBudWxscHRyOworICAgICAgICBtX251bUNhbGxzVG9Vbmtu
b3duQ2VsbCArPSBtX251bUNhbGxzVG9QcmltYXJ5OworICAgICAgICBtX251bUNhbGxzVG9Qcmlt
YXJ5ID0gMDsKKyAgICB9CisgICAgCisgICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6
ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChIZWFwOjppc01hcmtlZChtX290aGVyQ2FsbGVl
cy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCkucmF3Q2FsbGVlQ2VsbCgpKSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbV9udW1DYWxsc1RvVW5r
bm93bkNlbGwgKz0gbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNvdW50KCk7CisgICAg
ICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaS0tXSA9IG1fb3RoZXJDYWxsZWVz
LT5tX3Byb2Nlc3NlZC5sYXN0KCk7CisgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9j
ZXNzZWQucmVtb3ZlTGFzdCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBPbmx5
IGV4aXN0cyB3aGlsZSB3ZSBhcmUgcHJvY2Vzc2luZyB0aGUgbG9nLgorICAgICAgICBSRUxFQVNF
X0FTU0VSVCghbV9vdGhlckNhbGxlZXMtPm1fc2Vjb25kYXJ5KTsKKyAgICB9Cit9CisKK3ZvaWQg
Q2FsbEVkZ2VQcm9maWxlOjphZGRTbG93KENhbGxWYXJpYW50IGNhbGxlZSwgQ2FsbEVkZ2VQcm9m
aWxlVmVjdG9yJiBtZXJnZUJhY2tMb2cpCit7CisgICAgLy8gVGhpcyBleGlzdHMgdG8gaGFuZGxl
IGNhc2VzIHdoZXJlIHRoZSBzcGVjdHJ1bSB3YXNuJ3QgY3JlYXRlZCB5ZXQsIG9yIHdlJ3JlIHN0
b3JpbmcgdG8gYQorICAgIC8vIHBhcnRpY3VsYXIgc3BlY3RydW0gZm9yIHRoZSBmaXJzdCB0aW1l
IGR1cmluZyBhIGxvZyBwcm9jZXNzaW5nIGl0ZXJhdGlvbi4KKyAgICAKKyAgICBpZiAoIW1fb3Ro
ZXJDYWxsZWVzKSB7CisgICAgICAgIG1fb3RoZXJDYWxsZWVzID0gc3RkOjptYWtlX3VucWl1ZTxT
ZWNvbmRhcnk+KCk7CisgICAgICAgIC8vIElmIGEgY29tcGlsZXIgdGhyZWFkIG5vdGljZXMgdGhl
IG1fb3RoZXJDYWxsZWVzIGJlaW5nIG5vbi1udWxsLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZQorICAg
ICAgICAvLyB0aGF0IGl0IHNlZXMgYSBmdWxseSBjcmVhdGVkIG9uZS4KKyAgICAgICAgV1RGOjpz
dG9yZVN0b3JlRmVuY2UoKTsKKyAgICB9CisgICAgCisgICAgaWYgKCFtX290aGVyQ2FsbGVlcy0+
bV90ZW1wb3JhcnlTcGVjdHJ1bSkgeworICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3Jh
cnlTcGVjdHJ1bSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbFNwZWN0cnVtPigpOworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpLS07
KSB7CisgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+YWRk
KAorICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jYWxsZWUo
KSwKKyAgICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQo
KSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlz
IGlzIHRoZSBmaXJzdCB0aW1lIHdlJ3JlIHNlZWluZyB0aGlzIHByb2ZpbGUgZHVyaW5nIHRoaXMg
bG9nCisgICAgICAgIC8vIHByb2Nlc3NpbmcgaXRlcmF0aW9uLgorICAgICAgICBtZXJnZUJhY2tM
b2cuYXBwZW5kKHRoaXMpOworICAgIH0KKyAgICAKKyAgICBtX290aGVyQ2FsbGVlcy0+bV9zZWNv
bmRhcnktPmFkZChjYWxsZWUpOworfQorCit2b2lkIENhbGxFZGdlUHJvZmlsZTo6bWVyZ2VCYWNr
KCkKK3sKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIAorICAg
IEFTU0VSVChtX290aGVyQ2FsbGVlcyk7CisgICAgQVNTRVJUKG1fb3RoZXJDYWxsZWVzLT5tX3Rl
bXBvcmFyeVNwZWN0cnVtKTsKKyAgICAKKyAgICBpZiAoISFtX3ByaW1hcnlDYWxsZWUpCisgICAg
ICAgIG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5hZGQobV9wcmltYXJ5Q2Fs
bGVlLCBtX251bUNhbGxzVG9QcmltYXJ5KTsKKyAgICAKKyAgICBpZiAoIW1fY2xvc3VyZXNBcmVE
ZXNwZWNpZmllZCkgeworICAgICAgICBDYWxsU3BlY3RydW0gbmV3U3BlY3RydW07CisgICAgICAg
IGZvciAoYXV0byBlbnRyeSA6ICptX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSkK
KyAgICAgICAgICAgIG5ld1NwZWN0cnVtLmFkZChlbnRyeS5rZXkuZGVzcGVjaWZpZWRDbG9zdXJl
KCksIGVudHJ5LmNvdW50KTsKKyAgICAgICAgCisgICAgICAgIGlmIChuZXdTcGVjdHJ1bS5zaXpl
KCkgPCBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+c2l6ZSgpKQorICAgICAg
ICAgICAgKm1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtID0gbmV3U3BlY3RydW07
CisgICAgICAgIAorICAgICAgICBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQgPSB0cnVlOworICAg
IH0KKyAgICAKKyAgICBWZWN0b3I8Q2FsbFNwZWN0cnVtOjpLZXlBbmRDb3VudD4gbGlzdCA9IG1f
b3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5idWlsZExpc3QoKTsKKyAgICBtX290
aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSA9IG51bGxwdHI7CisgICAgCisgICAgbV9w
cmltYXJ5Q2FsbGVlID0gbGlzdC5sYXN0KCkua2V5OworICAgIG1fbnVtQ2FsbHNUb1ByaW1hcnkg
PSBsaXN0Lmxhc3QoKS5jb3VudDsKKyAgICBsaXN0LnJlbW92ZUxhc3QoKTsKKyAgICAKKyAgICBt
X290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuY2xlYXIoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGNv
dW50ID0gbWF4S25vd25DYWxsZWVzOyBjb3VudC0tICYmICFsaXN0LmlzRW1wdHkoKTspIHsKKyAg
ICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLmFwcGVuZChDYWxsRWRnZShsaXN0Lmxh
c3QoKS5rZXksIGxpc3QubGFzdCgpLmNvdW50KSk7CisgICAgICAgIGxpc3QucmVtb3ZlTGFzdCgp
OworICAgIH0KKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBsaXN0LnNpemUoKTsgaS0tOykK
KyAgICAgICAgbV9udW1DYWxsc1RvVW5rbm93bkNlbGwgKz0gbGlzdFtpXS5jb3VudDsKK30KKwor
dm9pZCBDYWxsRWRnZVByb2ZpbGU6OmZhZGVCeUhhbGYoKQoreworICAgIG1fbnVtQ2FsbHNUb1By
aW1hcnkgPj49IDE7CisgICAgbV9udW1DYWxsc1RvTm90Q2VsbCA+Pj0gMTsKKyAgICBtX251bUNh
bGxzVG9Vbmtub3duQ2VsbCA+Pj0gMTsKKyAgICBtX3RvdGFsQ291bnQgPj49IDE7CisgICAgCisg
ICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fb3Ro
ZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIG1fb3Ro
ZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXSA9IENhbGxFZGdlKAorICAgICAgICAgICAgICAgIG1f
b3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jYWxsZWUoKSwKKyAgICAgICAgICAgICAgICBt
X290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQoKSA+PiAxKTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgaWYgKG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVt
KSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiAqbV9vdGhlckNhbGxlZXMtPm1fdGVt
cG9yYXJ5U3BlY3RydW0pCisgICAgICAgICAgICAgICAgZW50cnkuY291bnQgPj49IDE7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK0NhbGxFZGdlTG9nOjpDYWxsRWRnZUxvZygpCisgICAgOiBtX3Nj
YWxlZExvZ0luZGV4KGxvZ1NpemUgKiBzaXplb2YoRW50cnkpKQoreworfQorCitDYWxsRWRnZUxv
Zzo6fkNhbGxFZGdlTG9nKCkgeyB9CisKKyNpZiBFTkFCTEUoSklUKQorCitleHRlcm4gIkMiIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2coQ2FsbEVkZ2VMb2cq
KSBXVEZfSU5URVJOQUw7CitleHRlcm4gIkMiIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
cm9jZXNzQ2FsbEVkZ2VMb2coQ2FsbEVkZ2VMb2cqIGxvZykKK3sKKyAgICBsb2ctPnByb2Nlc3NM
b2coKTsKK30KKwordm9pZCBDYWxsRWRnZUxvZzo6ZW1pdExvZ0NvZGUoQ0NhbGxIZWxwZXJzJiBq
aXQsIENhbGxFZGdlUHJvZmlsZSYgcHJvZmlsZSwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncykKK3sK
KyAgICBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50cyA9IDE7CisgICAgCisgICAgR1BS
UmVnIHNjcmF0Y2hHUFI7CisgICAgaWYgKCFjYWxsZWVSZWdzLnVzZXMoR1BSSW5mbzo6cmVnVDAp
KQorICAgICAgICBzY3JhdGNoR1BSID0gR1BSSW5mbzo6cmVnVDA7CisgICAgZWxzZSBpZiAoIWNh
bGxlZVJlZ3MudXNlcyhHUFJJbmZvOjpyZWdUMSkpCisgICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJ
bmZvOjpyZWdUMTsKKyAgICBlbHNlCisgICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJbmZvOjpyZWdU
MjsKKyAgICAKKyAgICBqaXQubG9hZDMyKCZtX3NjYWxlZExvZ0luZGV4LCBzY3JhdGNoR1BSKTsK
KyAgICAKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgb2sgPSBqaXQuYnJhbmNoVGVzdDMyKENDYWxs
SGVscGVyczo6Tm9uWmVybywgc2NyYXRjaEdQUik7CisgICAgCisgICAgQVNTRVJUKHN0YWNrQWxp
Z25tZW50UmVnaXN0ZXJzKCkgPj0gMSArIG51bWJlck9mQXJndW1lbnRzKTsKKyAgICAKKyAgICBq
aXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdGFja0FsaWdubWVudEJ5dGVz
KCkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAKKyAgICBqaXQu
c3RvcmVWYWx1ZShjYWxsZWVSZWdzLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJz
OjpzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgaml0LnNldHVw
QXJndW1lbnRzKGNhbGxlZVJlZ3MpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2cpLCBHUFJJbmZvOjpub25BcmdHUFIw
KTsKKyAgICBqaXQuY2FsbChzY3JhdGNoKTsKKyAgICBqaXQubG9hZFZhbHVlKENDYWxsSGVscGVy
czo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzaXplb2YoSlNW
YWx1ZSkpLCBjYWxsZWVSZWdzKTsKKyAgICAKKyAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihzdGFja0FsaWdubWVudEJ5dGVzKCkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKKyAgICAKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihsb2dTaXplICogc2l6ZW9mKEVudHJ5KSksIHNjcmF0Y2hHUFIpOworICAgIG9rLmxp
bmsoJmppdCk7CisKKyAgICBqaXQuc3ViMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2l6
ZW9mKEVudHJ5KSksIHNjcmF0Y2hHUFIpOworICAgIGppdC5zdG9yZTMyKHNjcmF0Y2hHUFIsICZt
X3NjYWxlZExvZ0luZGV4KTsKKyAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihtX2xvZyksIHNjcmF0Y2hHUFIpOworICAgIGppdC5zdG9yZVZhbHVlKGNhbGxlZVJlZ3Ms
IENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW50cnks
IG1fdmFsdWUpKSk7CisgICAgaml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cigmcHJvZmlsZSksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZG
U0VUT0YoRW50cnksIG1fcHJvZmlsZSkpKTsKK30KKwordm9pZCBDYWxsRWRnZUxvZzo6ZW1pdExv
Z0NvZGUoCisgICAgQ0NhbGxIZWxwZXJzJiBqaXQsIE93blB0cjxDYWxsRWRnZVByb2ZpbGU+JiBw
cm9maWxlUG9pbnRlciwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncykKK3sKKyAgICBwcm9maWxlUG9p
bnRlci5jcmVhdGVUcmFuc2FjdGlvbmFsbHkoKTsKKyAgICBlbWl0TG9nQ29kZShqaXQsICpwcm9m
aWxlUG9pbnRlciwgY2FsbGVlUmVncyk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCit2
b2lkIENhbGxFZGdlTG9nOjpwcm9jZXNzTG9nKCkKK3sKKyAgICBDb25jdXJyZW50SklUTG9ja2Vy
IGxvY2tlcihtX2xvY2spOworICAgIAorICAgIEFTU0VSVCghKG1fc2NhbGVkTG9nSW5kZXggJSBz
aXplb2YoRW50cnkpKSk7CisgICAgCisgICAgQ2FsbEVkZ2VQcm9maWxlVmVjdG9yIG1lcmdlQmFj
a0xvZzsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3NjYWxlZExvZ0luZGV4IC8gc2l6
ZW9mKEVudHJ5KTsgaSA8IGxvZ1NpemU7ICsraSkKKyAgICAgICAgbV9sb2dbaV0ubV9wcm9maWxl
LT5hZGQobV9sb2dbaV0ubV92YWx1ZSwgbWVyZ2VCYWNrTG9nKTsKKyAgICAKKyAgICBtX3NjYWxl
ZExvZ0luZGV4ID0gbG9nU2l6ZSAqIHNpemVvZihFbnRyeSk7CisgICAgCisgICAgZm9yICh1bnNp
Z25lZCBpID0gbWVyZ2VCYWNrTG9nLnNpemUoKTsgaS0tOykKKyAgICAgICAgbWVyZ2VCYWNrTG9n
W2ldLT5tZXJnZUJhY2soKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDYWxsRWRnZVByb2ZpbGVfaAorI2Rl
ZmluZSBDYWxsRWRnZVByb2ZpbGVfaAorCisjaW5jbHVkZSAiQ2FsbEVkZ2UuaCIKKyNpbmNsdWRl
ICJDYWxsVmFyaWFudC5oIgorI2luY2x1ZGUgIkNvbmN1cnJlbnRKSVRMb2NrLmgiCisjaW5jbHVk
ZSAiSlNDZWxsLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCit0eXBlZGVmIHVpbnQxNl90IENhbGxF
ZGdlQ291bnRUeXBlOworCitjbGFzcyBDYWxsRWRnZVByb2ZpbGU7Cit0eXBlZGVmIFZlY3RvcjxD
YWxsRWRnZVByb2ZpbGUqLCAxMD4gQ2FsbEVkZ2VQcm9maWxlVmVjdG9yOworCitjbGFzcyBDYWxs
RWRnZVByb2ZpbGUgeworcHVibGljOgorICAgIENhbGxFZGdlUHJvZmlsZShDb2RlQmxvY2sqIGNv
ZGVCbG9jayk7CisgICAgCisgICAgdm9pZCBhZGQoSlNWYWx1ZSwgQ2FsbEVkZ2VQcm9maWxlVmVj
dG9yJiBtZXJnZUJhY2tMb2cpOworICAgIAorICAgIHVuc2lnbmVkIG51bUNhbGxzVG9Ob3RDZWxs
KCkgY29uc3QgeyByZXR1cm4gbV9udW1DYWxsc1RvTm90Q2VsbDsgfQorICAgIHVuc2lnbmVkIG51
bUNhbGxzVG9Vbmtub3duQ2VsbCgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQ2FsbHNUb1Vua25vd25D
ZWxsOyB9CisgICAgdW5zaWduZWQgbnVtQ2FsbHNUb0tub3duQ2VsbHMoKSBjb25zdDsKKyAgICAK
KyAgICAvLyBDYWxsIHdoaWxlIGhvbGRpbmcgdGhlIG93bmluZyBDb2RlQmxvY2sncyBsb2NrLgor
ICAgIENhbGxFZGdlTGlzdGUgY2FsbEVkZ2VzKCkgY29uc3Q7CisgICAgCisgICAgdm9pZCB2aXNp
dFdlYWsoKTsKKyAgICAKK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heEtu
b3duQ2FsbGVlcyA9IDU7CisgICAgCisgICAgYm9vbCB3b3J0aERlc3BlY2lmeWluZygpOworICAg
IHZvaWQgYWRkU2xvdyhDYWxsVmFyaWFudCwgQ2FsbEVkZ2VQcm9maWxlVmVjdG9yJiBtZXJnZUJh
Y2tMb2cpOworICAgIHZvaWQgbWVyZ2VCYWNrKCk7CisgICAgdm9pZCBmYWRlQnlIYWxmKCk7Cisg
ICAgCisgICAgLy8gSXQncyBjaGVhcGVyIHRvIGxldCB0aGlzIGhhdmUgaXRzIG93biBsb2NrLiBJ
dCBuZWVkcyB0byBiZSBhYmxlIHRvIGZpbmQgd2hpY2ggbG9jayB0bworICAgIC8vIGxvY2suIE5v
cm1hbGx5IGl0IHdvdWxkIGxvY2sgdGhlIG93bmluZyBDb2RlQmxvY2sncyBsb2NrLCBidXQgdGhh
dCB3b3VsZCByZXF1aXJlIGEKKyAgICAvLyBwb2ludGVyLXdpZHRoIHdvcmQgdG8gcG9pbnQgYXQg
dGhlIENvZGVCbG9jay4gSGF2aW5nIHRoZSBieXRlLXNpemVkIGxvY2sgaGVyZSBpcworICAgIC8v
IGNoZWFwZXIuIEhvd2V2ZXIsIHRoaXMgbWVhbnMgdGhhdCB0aGUgcmVsYXRpb25zaGlwIHdpdGgg
dGhlIENvZGVCbG9jayBsb2NrIGlzOgorICAgIC8vIGFjcXVpcmUgdGhlIENvZGVCbG9jayBsb2Nr
IGJlZm9yZSB0aGlzIG9uZS4KKyAgICBDb25jdXJyZW50SklUTG9jayBtX2xvY2s7CisgICAgCisg
ICAgYm9vbCBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQ7CisgICAgCisgICAgQ2FsbEVkZ2VDb3Vu
dFR5cGUgbV9udW1DYWxsc1RvUHJpbWFyeTsKKyAgICBDYWxsRWRnZUNvdW50VHlwZSBtX251bUNh
bGxzVG9Ob3RDZWxsOworICAgIENhbGxFZGdlQ291bnRUeXBlIG1fbnVtQ2FsbHNUb1Vua293bkNl
bGw7CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbV90b3RhbENvdW50OworICAgIENhbGxWYXJpYW50
IG1fcHJpbWFyeUNhbGxlZTsKKyAgICAKKyAgICB0eXBlZGVmIFNwZWN0cnVtPENhbGxWYXJpYW50
LCBDYWxsRWRnZUNvdW50VHlwZT4gQ2FsbFNwZWN0cnVtOworICAgIAorICAgIHN0cnVjdCBTZWNv
bmRhcnkgeworICAgICAgICBWZWN0b3I8Q2FsbEVkZ2U+IG1fcHJvY2Vzc2VkOyAvLyBQcm9jZXNz
ZWQgYnV0IG5vdCBuZWNlc3NhcmlseSBzb3J0ZWQuCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxD
YWxsU3BlY3RydW0+IG1fdGVtcG9yYXJ5U3BlY3RydW07CisgICAgfTsKKyAgICAKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2Vjb25kYXJ5PiBtX290aGVyQ2FsbGVlczsKK307CisKK2NsYXNzIENhbGxF
ZGdlTG9nIHsKK3B1YmxpYzoKKyAgICBDYWxsRWRnZUxvZygpOworICAgIH5DYWxsRWRnZUxvZygp
OworCisjaWYgRU5BQkxFKEpJVCkgICAgCisgICAgdm9pZCBlbWl0TG9nQ29kZShDQ2FsbEhlbHBl
cnMmLCBDYWxsRWRnZVByb2ZpbGUmLCBKU1ZhbHVlUmVncyBjYWxsZWVSZWdzKTsgLy8gQXNzdW1l
cyB0aGF0IHN0YWNrIGlzIGFsaWduZWQsIGFsbCB2b2xhdGlsZSByZWdpc3RlcnMgLSBvdGhlciB0
aGFuIGNhbGxlZUdQUiAtIGFyZSBjbG9iYmVyYWJsZSwgYW5kIHRoZSBwYXJhbWV0ZXIgc3BhY2Ug
aXMgaW4gdXNlLgorICAgIAorICAgIC8vIFNhbWUgYXMgYWJvdmUgYnV0IGNyZWF0ZXMgYSBDYWxs
RWRnZVByb2ZpbGUgaW5zdGFuY2UgaWYgb25lIGRpZCBub3QgYWxyZWFkeSBleGlzdC4gRG9lcwor
ICAgIC8vIHRoaXMgaW4gYSB0aHJlYWQtc2FmZSBtYW5uZXIgYnkgY2FsbGluZyBPd25QdHI6OmNy
ZWF0ZVRyYW5zYWN0aW9uYWxseS4KKyAgICB2b2lkIGVtaXRMb2dDb2RlKENDYWxsSGVsZXBycyYs
IE93blB0cjxDYWxsRWRnZVByb2ZpbGU+JiwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncyk7CisjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKKyAgICAKKyAgICB2b2lkIHByb2Nlc3NMb2coKTsKKyAgICAKK3By
aXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBsb2dTaXplID0gMTAwMDA7CisgICAgCisgICAgc3RydWN0IEVu
dHJ5IHsKKyAgICAgICAgSlNWYWx1ZSBtX3ZhbHVlOworICAgICAgICBDYWxsRWRnZVByb2ZpbGUq
IG1fcHJvZmlsZTsKKyAgICB9OworICAgIAorICAgIHVuc2lnbmVkIG1fc2NhbGVkTG9nSW5kZXg7
CisgICAgRW50cnkgbV9sb2dbbG9nU2l6ZV07Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIENhbGxFZGdlUHJvZmlsZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZUlubGluZXMuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGVJ
bmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENhbGxFZGdlUHJvZmlsZUlu
bGluZXNfaAorI2RlZmluZSBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzX2gKKworbmFtZXNwYWNlIEpT
QyB7CisKK2lubGluZSBDYWxsRWRnZVByb2ZpbGU6OkNhbGxFZGdlUHJvZmlsZSgpCisgICAgOiBt
X2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQoZmFsc2UpCisgICAgLCBtX251bUNhbGxzVG9QcmltYXJ5
KDApCisgICAgLCBtX251bUNhbGxzVG9Ob3RDZWxsKDApCisgICAgLCBtX251bUNhbGxzVG9EZWxl
dGVkQ2VsbCgwKQorICAgICwgbV90b3RhbENvdW50KDApCisgICAgLCBtX3ByaW1hcnlDYWxsZWUo
bnVsbHB0cikKK3sKK30KKworQUxXQVlTX0lOTElORSBDYWxsRWRnZVByb2ZpbGU6OmFkZChKU1Zh
bHVlIHZhbHVlLCBDYWxsRWRnZVByb2ZpbGVWZWN0b3ImIG1lcmdlQmFja0xvZykKK3sKKyAgICB1
bnNpZ25lZCBuZXdUb3RhbENvdW50ID0gbV90b3RhbENvdW50ICsgMTsKKyAgICBpZiAoVU5MSUtF
TFkoIW5ld1RvdGFsQ291bnQpKSB7CisgICAgICAgIGZhZGVCeUhhbGYoKTsgLy8gVGFja2xlIG92
ZXJmbG93cyBieSBkaXZpZGluZyBhbGwgY291bnRzIGJ5IHR3by4KKyAgICAgICAgbmV3VG90YWxD
b3VudCA9IG1fdG90YWxDb3VudCArIDE7CisgICAgfQorICAgIEFTU0VSVChuZXdUb3RhbENvdW50
KTsKKyAgICBtX3RvdGFsQ291bnQgPSBuZXdUb3RhbENvdW50OworICAgIAorICAgIGlmIChVTkxJ
S0VZKCF2YWx1ZS5pc0NlbGwoKSkpIHsKKyAgICAgICAgbV9udW1DYWxsc1RvTm90Q2VsbCsrOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ2FsbFZhcmlhbnQgY2FsbGVlID0gQ2FsbFZh
cmlhbnQodmFsdWUuYXNDZWxsKCkpOworICAgIAorICAgIGlmIChtX2Nsb3N1cmVzQXJlRGVzcGVj
aWZpZWQpCisgICAgICAgIGNhbGxlZSA9IGNhbGxlZS5kZXNwZWNpZmllZENsb3N1cmUoKTsKKyAg
ICAgICAgCisgICAgaWYgKFVOTElLRUxZKCFtX3ByaW1hcnlDYWxsZWUpKSB7CisgICAgICAgIG1f
cHJpbWFyeUNhbGxlZSA9IGNhbGxlZTsKKyAgICAgICAgbV9udW1DYWxsc1RvUHJpbWFyeSA9IDE7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAorICAgIGlmIChMSUtFTFkobV9wcmlt
YXJ5Q2FsbGVlID09IGNhbGxlZSkpIHsKKyAgICAgICAgbV9udW1DYWxsc1RvUHJpbWFyeSsrOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBpZiAoVU5MSUtFTFkoIW1fb3Ro
ZXJDYWxsZWVzKSkgeworICAgICAgICBhZGRTbG93KGNhbGxlZSwgbWVyZ2VCYWNrTG9nKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAgQ2FsbFNwZWN0cnVtKiBzZWNvbmRh
cnkgPSBtX290aGVyQ2FsbGVlcy0+bV9zZWNvbmRhcnkuZ2V0KCk7CisgICAgaWYgKCFzZWNvbmRh
cnkpIHsKKyAgICAgICAgYWRkU2xvdyhjYWxsZWUsIG1lcmdlQmFja0xvZyk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgICAgIAorICAgIHNlY29uZGFyeS0+YWRkKGNhbGxlZSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ2FsbEVkZ2VQcm9maWxlSW5saW5lc19o
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0lu
Zm8uY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsMTEgQEAgdm9p
ZCBDYWxsTGlua0luZm86OnZpc2l0V2VhayhSZXBhdGNoQnVmZgogICAgIH0KICAgICBpZiAoISFs
YXN0U2VlbkNhbGxlZSAmJiAhSGVhcDo6aXNNYXJrZWQobGFzdFNlZW5DYWxsZWUuZ2V0KCkpKQog
ICAgICAgICBsYXN0U2VlbkNhbGxlZS5jbGVhcigpOworICAgIAorICAgIGlmIChjYWxsRWRnZVBy
b2ZpbGUpIHsKKyAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CisgICAgICAgIGNhbGxFZGdl
UHJvZmlsZS0+dmlzaXRXZWFrKCk7CisgICAgfQogfQogCiBDYWxsTGlua0luZm8mIENhbGxMaW5r
SW5mbzo6ZHVtbXkoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxM
aW5rSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua0luZm8uaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaWZuZGVmIENhbGxMaW5rSW5mb19oCiAjZGVmaW5lIENhbGxMaW5rSW5mb19oCiAKKyNpbmNs
dWRlICJDYWxsRWRnZVByb2ZpbGUuaCIKICNpbmNsdWRlICJDbG9zdXJlQ2FsbFN0dWJSb3V0aW5l
LmgiCiAjaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0
aW9uS2luZC5oIgpAQCAtMzMsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKKyNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTg4LDYgKzkwLDcgQEAgc3RydWN0IENhbGxMaW5rSW5mbyA6IHB1Ymxp
YyBCYXNpY1Jhd1NlbgogICAgIHVuc2lnbmVkIGNhbGxlZUdQUiA6IDg7CiAgICAgdW5zaWduZWQg
c2xvd1BhdGhDb3VudDsKICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW47CisgICAgT3duUHRyPENh
bGxFZGdlUHJvZmlsZT4gY2FsbEVkZ2VQcm9maWxlOwogCiAgICAgYm9vbCBpc0xpbmtlZCgpIHsg
cmV0dXJuIHN0dWIgfHwgY2FsbGVlOyB9CiAgICAgdm9pZCB1bmxpbmsoUmVwYXRjaEJ1ZmZlciYp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtT
dGF0dXMuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw0OCArMzgsMTUg
QEAgbmFtZXNwYWNlIEpTQyB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAK
IENhbGxMaW5rU3RhdHVzOjpDYWxsTGlua1N0YXR1cyhKU1ZhbHVlIHZhbHVlKQotICAgIDogbV9j
YWxsVGFyZ2V0KHZhbHVlKQotICAgICwgbV9leGVjdXRhYmxlKDApCi0gICAgLCBtX2NvdWxkVGFr
ZVNsb3dQYXRoKGZhbHNlKQorICAgIDogbV9jb3VsZFRha2VTbG93UGF0aChmYWxzZSkKICAgICAs
IG1faXNQcm92ZWQoZmFsc2UpCiB7Ci0gICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkp
CisgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkpIHsKKyAgICAgICAgbV9jb3VsZFRh
a2VTbG93UGF0aCA9IHRydWU7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgCi0gICAgaWYg
KCF2YWx1ZS5hc0NlbGwoKS0+aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkKLSAgICAgICAg
cmV0dXJuOwotICAgIAotICAgIG1fZXhlY3V0YWJsZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4odmFs
dWUuYXNDZWxsKCkpLT5leGVjdXRhYmxlKCk7Ci19Ci0KLUpTRnVuY3Rpb24qIENhbGxMaW5rU3Rh
dHVzOjpmdW5jdGlvbigpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2NhbGxUYXJnZXQgfHwgIW1fY2Fs
bFRhcmdldC5pc0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgaWYgKCFtX2Nh
bGxUYXJnZXQuYXNDZWxsKCktPmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpCi0gICAgICAg
IHJldHVybiAwOwotICAgIAotICAgIHJldHVybiBqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2FsbFRh
cmdldC5hc0NlbGwoKSk7Ci19Ci0KLUludGVybmFsRnVuY3Rpb24qIENhbGxMaW5rU3RhdHVzOjpp
bnRlcm5hbEZ1bmN0aW9uKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fY2FsbFRhcmdldCB8fCAhbV9j
YWxsVGFyZ2V0LmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBpZiAoIW1f
Y2FsbFRhcmdldC5hc0NlbGwoKS0+aW5oZXJpdHMoSW50ZXJuYWxGdW5jdGlvbjo6aW5mbygpKSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgcmV0dXJuIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0
aW9uKj4obV9jYWxsVGFyZ2V0LmFzQ2VsbCgpKTsKLX0KLQotSW50cmluc2ljIENhbGxMaW5rU3Rh
dHVzOjppbnRyaW5zaWNGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKSBjb25zdAotewot
ICAgIGlmICghbV9leGVjdXRhYmxlKQotICAgICAgICByZXR1cm4gTm9JbnRyaW5zaWM7Ci0gICAg
Ci0gICAgcmV0dXJuIG1fZXhlY3V0YWJsZS0+aW50cmluc2ljRm9yKGtpbmQpOworICAgIG1fZWRn
ZXMuYXBwZW5kKENhbGxFZGdlKHZhbHVlLmFzQ2VsbCgpLCAxKSk7CiB9CiAKIENhbGxMaW5rU3Rh
dHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KGNvbnN0IENvbmN1cnJlbnRKSVRM
b2NrZXImIGxvY2tlciwgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29k
ZUluZGV4KQpAQCAtMTM5LDcgKzEwNiw3IEBAIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEg
Q2FsbExpbmtTdGEKICAgICAKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBleGl0U2l0ZURhdGEu
bV90YWtlc1Nsb3dQYXRoID0KLSAgICAgICAgcHJvZmlsZWRCbG9jay0+aGFzRXhpdFNpdGUobG9j
a2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkQ2FjaGUsIGV4aXRp
bmdKSVRUeXBlKSkKKyAgICAgICAgcHJvZmlsZWRCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBE
Rkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkVHlwZSwgZXhpdGluZ0pJVFR5
cGUpKQogICAgICAgICB8fCBwcm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6
RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRFeGVjdXRhYmxlLCBleGl0aW5nSklU
VHlwZSkpOwogICAgIGV4aXRTaXRlRGF0YS5tX2JhZEZ1bmN0aW9uID0KICAgICAgICAgcHJvZmls
ZWRCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNv
ZGVJbmRleCwgQmFkRnVuY3Rpb24sIGV4aXRpbmdKSVRUeXBlKSk7CkBAIC0xNTYsNiArMTIzLDE4
IEBAIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgQ2FsbExpbmtTdGEKICNpZiBFTkFCTEUo
SklUKQogQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoY29uc3QgQ29u
Y3VycmVudEpJVExvY2tlciYsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQogeworICAgIC8v
IEFsd2F5cyB0cnVzdCB0aGUgY2FsbCBlZGdlIHByb2ZpbGUgb3ZlciBhbnl0aGluZyBlbHNlIHNp
bmNlIHRoaXMgaGFzIHByZWNpc2UgY291bnRzLgorICAgIC8vIEl0IGNhbiBtYWtlIHRoZSBiZXN0
IHBvc3NpYmxlIGRlY2lzaW9uIGJlY2F1c2UgaXQgbmV2ZXIgImZvcmdldHMiIHdoYXQgaGFwcGVu
ZWQgZm9yIGFueQorICAgIC8vIGNhbGwsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBmYWRpbmcgb3V0
IHRoZSBjb3VudHMgb2Ygb2xkIGNhbGxzIChmb3IgZXhhbXBsZSBpZiB0aGUKKyAgICAvLyBjb3Vu
dGVyIHR5cGUgaXMgMTYtYml0IHRoZW4gY2FsbHMgdGhhdCBoYXBwZW5lZCBtb3JlIHRoYW4gMl4x
NiBjYWxscyBhZ28gYXJlIGdpdmVuIGhhbGYKKyAgICAvLyB3ZWlnaHQsIGFuZCB0aGlzIGNvbXBv
dW5kcyBmb3IgZXZlcnkgMl4xNSBbc2ljXSBjYWxscyBhZnRlciB0aGF0KS4gVGhlIGNvbWJpbmF0
aW9uIG9mCisgICAgLy8gaGlnaCBmaWRlbGl0eSBmb3IgcmVjZW50IGNhbGxzIGFuZCBmYWRpbmcg
Zm9yIG9sZGVyIGNhbGxzIG1ha2VzIHRoaXMgdGhlIG1vc3QgdXNlZnVsCisgICAgLy8gbWVjaGFt
aXNtIG9mIGNob29zaW5nIGhvdyB0byBvcHRpbWl6ZSBmdXR1cmUgY2FsbHMuCisgICAgQ2FsbEVk
Z2VQcm9maWxlKiBlZGdlUHJvZmlsZSA9IGNhbGxMaW5rSW5mby5jYWxsRWRnZVByb2ZpbGUuZ2V0
KCk7CisgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CisgICAgaWYgKGVkZ2VQcm9maWxlKQorICAg
ICAgICByZXR1cm4gY29tcHV0ZUZyb21DYWxsRWRnZVByb2ZpbGUoZWRnZVByb2ZpbGUpOworICAg
IAogICAgIC8vIE5vdGUgdGhhdCBkZXNwaXRlIHJlcXVpcmluZyB0aGF0IHRoZSBsb2NrZXIgaXMg
aGVsZCwgdGhpcyBjb2RlIGlzIHJhY3kgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gdGhlIENhbGxM
aW5rSW5mbzogaXQgbWF5IGdldCBjbGVhcmVkIHdoaWxlIHRoaXMgY29kZSBydW5zISBUaGlzIGlz
IGJlY2F1c2UKICAgICAvLyBDYWxsTGlua0luZm86OnVubGluaygpIG1heSBiZSBjYWxsZWQgZnJv
bSBhIGRpZmZlcmVudCBDb2RlQmxvY2sgdGhhbiB0aGUgb25lIHRoYXQgb3ducwpAQCAtMTc3LDcg
KzE1Niw3IEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICAgICAK
ICAgICBKU0Z1bmN0aW9uKiB0YXJnZXQgPSBjYWxsTGlua0luZm8ubGFzdFNlZW5DYWxsZWUuZ2V0
KCk7CiAgICAgaWYgKCF0YXJnZXQpCi0gICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygpOwor
ICAgICAgICByZXR1cm4gdGFrZXNTbG93UGF0aCgpOwogICAgIAogICAgIGlmIChjYWxsTGlua0lu
Zm8uaGFzU2VlbkNsb3N1cmUpCiAgICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyh0YXJnZXQt
PmV4ZWN1dGFibGUoKSk7CkBAIC0xODUsMTUgKzE2NCwzMSBAQCBDYWxsTGlua1N0YXR1cyBDYWxs
TGlua1N0YXR1czo6Y29tcHV0ZUZvCiAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKHRhcmdldCk7
CiB9CiAKLUNhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAotICAgIGNv
bnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0lu
Zm8sIEV4aXRTaXRlRGF0YSBleGl0U2l0ZURhdGEpCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0
YXR1czpjb21wdXRlRnJvbUNhbGxFZGdlUHJvZmlsZShDYWxsRWRnZVByb2ZpbGUqIGVkZ2VQcm9m
aWxlKQogewotICAgIGlmIChleGl0U2l0ZURhdGEubV90YWtlc1Nsb3dQYXRoKQorICAgIC8vIFRv
IGRvIGFueXRoaW5nIG1lYW5pbmdmdWwsIHdlIHJlcXVpcmUgdGhhdCB0aGUgbWFqb3JpdHkgb2Yg
Y2FsbHMgYXJlIHRvIHNvbWV0aGluZyB3ZQorICAgIC8vIGtub3cgaG93IHRvIGhhbmRsZS4KKyAg
ICB1bnNpZ25lZCBudW1DYWxsc1RvS25vd24gPSBlZGdlUHJvZmlsZS0+bnVtQ2FsbHNUb0tub3du
RWRnZXMoKTsKKyAgICB1bnNpZ25lZCBudW1DYWxsc1RvVW5rbm93biA9IGVkZ2VQcm9maWxlLT5u
dW1DYWxsc1RvTm90Q2VsbCgpICsgZWRnZVByb2ZpbGUtPm51bUNhbGxzVG9Vbmtub3duQ2VsbCgp
OworICAgIGlmIChudW1DYWxsc1RvS25vd24gPD0gbnVtQ2FsbHNUb1Vua25vd24pCiAgICAgICAg
IHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7CiAgICAgCisgICAgQ2FsbExpbmtTdGF0dXMgcmVzdWx0
OworICAgIHJlc3VsdC5tX2VkZ2VzID0gY2FsbEVkZ2VzLT5jYWxsRWRnZXMoKTsKKyAgICByZXN1
bHQubV9jb3VsZFRha2VTbG93UGF0aCA9ICEhbnVtQ2FsbHNUb1Vua25vd247CisgICAgcmVzdWx0
Lm1fY2FuVHJ1c3RDb3VudHMgPSB0cnVlOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K0NhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAorICAgIGNvbnN0IENv
bmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIEV4
aXRTaXRlRGF0YSBleGl0U2l0ZURhdGEpCit7CiAgICAgQ2FsbExpbmtTdGF0dXMgcmVzdWx0ID0g
Y29tcHV0ZUZvcihsb2NrZXIsIGNhbGxMaW5rSW5mbyk7CiAgICAgaWYgKGV4aXRTaXRlRGF0YS5t
X2JhZEZ1bmN0aW9uKQogICAgICAgICByZXN1bHQubWFrZUNsb3N1cmVDYWxsKCk7CisgICAgaWYg
KGV4aXRTaXRlRGF0YS5tX3Rha2VzU2xvd1BhdGgpCisgICAgICAgIHJlc3VsdC5tX2NvdWxkVGFr
ZVNsb3dQYXRoID0gdHJ1ZTsKICAgICAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjU2LDYg
KzI1MSwzMiBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvCiAgICAg
cmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4
LCBiYXNlbGluZU1hcCk7CiB9CiAKK2Jvb2wgQ2FsbExpbmtTdGF0dXM6OmlzQ2xvc3VyZUNhbGwo
KSBjb25zdAoreworICAgIGZvciAodW5zaWduZWQgaSA9IG1fZWRnZXMuc2l6ZSgpOyBpLS07KSB7
CisgICAgICAgIGlmIChtX2VkZ2VzW2ldLmlzQ2xvc3VyZUNhbGwoKSkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQ2FsbExpbmtT
dGF0dXM6Om1ha2VDbG9zdXJlQ2FsbCgpCit7CisgICAgQVNTRVJUKCFtX2lzUHJvdmVkKTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBtX2VkZ2VzLnNpemUoKTsgaS0tOykKKyAgICAgICAgbV9lZGdl
c1tpXSA9IG1fZWRnZXNbaV0uZGVzcGVjaWZpZWRDbG9zdXJlKCk7CisgICAgCisgICAgaWYgKCFB
U1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgLy8gRG9pbmcgdGhpcyBzaG91bGQgbm90IGhhdmUg
Y3JlYXRlZCBkdXBsaWNhdGVzLCBiZWNhdXNlIHRoZSBDYWxsRWRnZVByb2ZpbGUKKyAgICAgICAg
Ly8gc2hvdWxkIGRlc3BlY2lmeSBjbG9zdXJlcyBpZiBkb2luZyBzbyB3b3VsZCByZWR1Y2UgdGhl
IG51bWJlciBvZiBrbm93biBjYWxsZWVzLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9lZGdlcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFu
dCA9IG1fZWRnZXNbaV0uY2FsbGVlKCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSBp
ICsgMTsgaiA8IG1fZWRnZXMuc2l6ZSgpOyArK2opCisgICAgICAgICAgICAgICAgQVNTRVJUKHZh
cmlhbnQgIT0gbV9lZGdlc1tqXS5jYWxsZWUoKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZv
aWQgQ2FsbExpbmtTdGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBp
ZiAoIWlzU2V0KCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TGlua1N0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsTGlua1N0YXR1cy5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsOSAr
NDYsOSBAQCBzdHJ1Y3QgQ2FsbExpbmtJbmZvOwogY2xhc3MgQ2FsbExpbmtTdGF0dXMgewogcHVi
bGljOgogICAgIENhbGxMaW5rU3RhdHVzKCkKLSAgICAgICAgOiBtX2V4ZWN1dGFibGUoMCkKLSAg
ICAgICAgLCBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQorICAgICAgICA6IG1fY291bGRUYWtl
U2xvd1BhdGgoZmFsc2UpCiAgICAgICAgICwgbV9pc1Byb3ZlZChmYWxzZSkKKyAgICAgICAgLCBt
X2NhblRydXN0Q291bnRzKGZhbHNlKQogICAgIHsKICAgICB9CiAgICAgCkBAIC02MSwxMCArNjEs
MTEgQEAgcHVibGljOgogICAgIAogICAgIGV4cGxpY2l0IENhbGxMaW5rU3RhdHVzKEpTVmFsdWUp
OwogICAgIAotICAgIENhbGxMaW5rU3RhdHVzKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKQot
ICAgICAgICA6IG1fZXhlY3V0YWJsZShleGVjdXRhYmxlKQorICAgIENhbGxMaW5rU3RhdHVzKENh
bGxWYXJpYW50IHZhcmlhbnQpCisgICAgICAgIDogbV9lZGdlcygxLCBDYWxsRWRnZShleGVjdXRh
YmxlLCAxKSkKICAgICAgICAgLCBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQogICAgICAgICAs
IG1faXNQcm92ZWQoZmFsc2UpCisgICAgICAgICwgbV9jYW5UcnVzdENvdW50cyhmYWxzZSkKICAg
ICB7CiAgICAgfQogICAgIApAQCAtMTA3LDM3ICsxMDgsMzUgQEAgcHVibGljOgogICAgIHN0YXRp
YyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKAogICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3Jp
Z2luLCBjb25zdCBDYWxsTGlua0luZm9NYXAmLCBjb25zdCBDb250ZXh0TWFwJik7CiAgICAgCi0g
ICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdldCB8fCBtX2V4ZWN1dGFi
bGUgfHwgbV9jb3VsZFRha2VTbG93UGF0aDsgfQorICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJl
dHVybiBtX2NhbGxUYXJnZXQgfHwgIW1fZXhlY3V0YWJsZS5pc0VtcHR5KCkgfHwgbV9jb3VsZFRh
a2VTbG93UGF0aDsgfQogICAgIAogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4g
IWlzU2V0KCk7IH0KICAgICAKICAgICBib29sIGNvdWxkVGFrZVNsb3dQYXRoKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb3VsZFRha2VTbG93UGF0aDsgfQotICAgIGJvb2wgaXNDbG9zdXJlQ2FsbCgpIGNv
bnN0IHsgcmV0dXJuIG1fZXhlY3V0YWJsZSAmJiAhbV9jYWxsVGFyZ2V0OyB9CiAgICAgCi0gICAg
SlNWYWx1ZSBjYWxsVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0OyB9Ci0gICAg
SlNGdW5jdGlvbiogZnVuY3Rpb24oKSBjb25zdDsKLSAgICBJbnRlcm5hbEZ1bmN0aW9uKiBpbnRl
cm5hbEZ1bmN0aW9uKCkgY29uc3Q7Ci0gICAgSW50cmluc2ljIGludHJpbnNpY0ZvcihDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kKSBjb25zdDsKLSAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZXhlY3V0YWJsZTsgfQorICAgIENhbGxFZGdlTGlzdCBlZGdlcygp
IGNvbnN0IHsgcmV0dXJuIG1fZWRnZXM7IH0KKyAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9lZGdlc3NpemUoKTsgfQorICAgIENhbGxWYXJpYW50IGF0KHVuc2lnbmVkIGkpIGNv
bnN0IHsgcmV0dXJuIG1fZWRnZXNbaV07IH0KKyAgICBDYWxsVmFyaWFudCBvcGVyYXRvcltdKHVu
c2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIGF0KGkpOyB9CiAgICAgYm9vbCBpc1Byb3ZlZCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNQcm92ZWQ7IH0KLSAgICBib29sIGNhbk9wdGltaXplKCkgY29uc3Qg
eyByZXR1cm4gKG1fY2FsbFRhcmdldCB8fCBtX2V4ZWN1dGFibGUpICYmICFtX2NvdWxkVGFrZVNs
b3dQYXRoOyB9CisgICAgYm9vbCBjYW5PcHRpbWl6ZSgpIGNvbnN0IHsgcmV0dXJuICFtX2VkZ2Vz
LmlzRW1wdHkoKTsgfQorICAgIGJvb2wgY2FuVHJ1c3RDb3VudHMoKSBjb25zdCB7IHJldHVybiBt
X2NhblRydXN0Q291bnRzOyB9CisgICAgYm9vbCBpc0Nsb3N1cmVDYWxsKCkgY29uc3Q7CiAgICAg
CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgotICAg
IHZvaWQgbWFrZUNsb3N1cmVDYWxsKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9pc1Byb3Zl
ZCk7Ci0gICAgICAgIC8vIFR1cm4gdGhpcyBpbnRvIGEgY2xvc3VyZSBjYWxsLgotICAgICAgICBt
X2NhbGxUYXJnZXQgPSBKU1ZhbHVlKCk7Ci0gICAgfQorICAgIHZvaWQgbWFrZUNsb3N1cmVDYWxs
KCk7CiAgICAgCiAgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGcm9tTExJbnQoY29u
c3QgQ29uY3VycmVudEpJVExvY2tlciYsIENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgpOworI2lmIEVOQUJMRShKSVQpCisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVG
cm9tQ2FsbEVkZ2VQcm9maWxlKENhbGxFZGdlUHJvZmlsZSopOworI2VuZGlmCiAgICAgCi0gICAg
SlNWYWx1ZSBtX2NhbGxUYXJnZXQ7Ci0gICAgRXhlY3V0YWJsZUJhc2UqIG1fZXhlY3V0YWJsZTsK
KyAgICBDYWxsRWRnZUxpc3QgbV9lZGdlczsKICAgICBib29sIG1fY291bGRUYWtlU2xvd1BhdGg7
CiAgICAgYm9vbCBtX2lzUHJvdmVkOworICAgIGJvb2wgbV9jYW5UcnVzdENvdW50czsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxWYXJpYW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDYWxsVmFyaWFudC5oIgorCituYW1lc3BhY2UgSlND
IHsKKwordm9pZCBDYWxsVmFyaWFudDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAorewor
ICAgIGlmIChJbnRlcm5hbEZ1bmN0aW9uKiBpbnRlcm5hbEZ1bmN0aW9uID0gdGhpcy0+aW50ZXJu
YWxGdW5jdGlvbigpKSB7CisgICAgICAgIG91dC5wcmludCgiSW50ZXJuYWxGdW5jdGlvbjogIiwg
SlNWYWx1ZShpbnRlcm5hbEZ1bmN0aW9uKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
CisgICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gdGhpcy0+ZnVuY3Rpb24oKSkgeworICAg
ICAgICBvdXQucHJpbnQoIihGdW5jdGlvbjogIiwgSlNWYWx1ZShmdW5jdGlvbiksICI7IEV4ZWN1
dGFibGU6ICIsICpleGVjdXRhYmxlKCksICIpIik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgCisgICAgb3V0LnByaW50KCJFeGVjdXRhYmxlOiAiLCAqZXhlY3V0YWJsZSgpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsVmFyaWFudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DYWxsVmFyaWFudC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBD
YWxsVmFyaWFudF9oCisjZGVmaW5lIENhbGxWYXJpYW50X2gKKworI2luY2x1ZGUgIkpTQ2VsbC5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQ2FsbFZhcmlhbnQgeworcHVibGljOgorICAg
IGV4cGxpY2l0IENhbGxWYXJpYW50KEpTQ2VsbCogY2FsbGVlID0gbnVsbHB0cikKKyAgICAgICAg
OiBtX2NhbGxlZShjYWxsZWUpCisgICAgeworICAgIH0KKyAgICAKKyAgICBDYWxsVmFyaWFudChX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIDogbV9jYWxsZWUoZGVsZXRl
ZFRva2VuKCkpCisgICAgeworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0
IHsgcmV0dXJuICFtX2NhbGxlZTsgfQorICAgIAorICAgIC8vIElmIHRoaXMgdmFyaWFudCByZWZl
cnMgdG8gYSBmdW5jdGlvbiwgY2hhbmdlIGl0IHRvIHJlZmVyIHRvIGl0cyBleGVjdXRhYmxlLgor
ICAgIEFMV0FZU19JTkxJTkUgQ2FsbFZhcmlhbnQgZGVzcGVjaWZpZWRDbG9zdXJlKCkgY29uc3QK
KyAgICB7CisgICAgICAgIGlmIChtX2NhbGxlZS0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKQor
ICAgICAgICAgICAgcmV0dXJuIENhbGxWYXJpYW50KGpzQ2FzdDxKU0Z1bmN0aW9uKj4obV9jYWxs
ZWUpLT5leGVjdXRhYmxlKCkpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorICAgIAor
ICAgIEpTQ2VsbCogcmF3Q2FsbGVlQ2VsbCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGVlOyB9Cisg
ICAgCisgICAgSW50ZXJuYWxGdW5jdGlvbiogaW50ZXJuYWxGdW5jdGlvbigpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4obV9jYWxs
ZWUpOworICAgIH0KKyAgICAKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbigpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4obV9jYWxsZWUpOwor
ICAgIH0KKyAgICAKKyAgICBib29sIGlzQ2xvc3VyZUNhbGwoKSBjb25zdCB7IHJldHVybiAhIWpz
RHluYW1pY0Nhc3Q8RXhlY3V0YWJsZUJhc2UqPihtX2NhbGxlZSk7IH0KKyAgICAKKyAgICBFeGVj
dXRhYmxlQmFzZSogZXhlY3V0YWJsZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoSlNGdW5j
dGlvbiogZnVuY3Rpb24gPSB0aGlzLT5mdW5jdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uLT5leGVjdXRhYmxlKCk7CisgICAgICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEV4ZWN1
dGFibGVCYXNlKj4obV9jYWxsZWUpOworICAgIH0KKyAgICAKKyAgICBJbnRyaW5zaWMgaW50cmlu
c2ljRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkgY29uc3QKKyAgICB7CisgICAgICAg
IGlmIChFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IHRoaXMtPmV4ZWN1dGFibGUoKSkKKyAg
ICAgICAgICAgIHJldHVybiBleGVjdXRhYmxlLT5pbnRyaW5zaWNGb3Ioa2luZCk7CisgICAgICAg
IHJldHVybiBOb0ludHJpbnNpYzsKKyAgICB9CisgICAgCisgICAgRnVuY3Rpb25FeGVjdXRhYmxl
KiBmdW5jdGlvbkV4ZWN1dGFibGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGpzRHlu
YW1pY0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSgpKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OworICAgIAorICAgIGJvb2wg
aXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
Y2FsbGVlID09IGRlbGV0ZWRUb2tlbigpOworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fY2FsbGVlID09IG90aGVyLm1fY2FsbGVlOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBo
YXNoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBXVEY6OlB0ckhhc2g8SlNDZWxsKj46
Omhhc2gobV9jYWxsZWUpOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgc3RhdGljIEpTQ2Vs
bCogZGVsZXRlZFRva2VuKCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PEpTQ2VsbCo+KHN0YXRpY19j
YXN0PHVpbnRwdHJfdD4oMSkpOyB9CisgICAgICAgICAgICAgICAgICAgCisgICAgSlNDZWxsKiBt
X2NhbGxlZTsKK307CisKK3N0cnVjdCBDYWxsVmFyaWFudEhhc2ggeworICAgIHN0YXRpYyB1bnNp
Z25lZCBoYXNoKGNvbnN0IENhbGxWYXJpYW50JiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0K
KyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBDYWxsVmFyaWFudCYgYSwgY29uc3QgQ2FsbFZh
cmlhbnQmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVU
b0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKK307CisKK3R5cGVkZWYgVmVjdG9yPENh
bGxWYXJpYW50LCAxPiBDYWxsVmFyaWFudExpc3Q7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCitu
YW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNo
OwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpDYWxsVmFyaWFudD4geworICAg
IHR5cGVkZWYgSlNDOjpDYWxsVmFyaWFudEhhc2ggSGFzaDsKK307CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRzOwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxK
U0M6OkNhbGxWYXJpYW50PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OkNhbGxWYXJpYW50
PiB7IH07CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gQ2FsbFZhcmlhbnRfaAor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OCwxNCArMTc4LDE5IEBAIHBy
aXZhdGU6CiAgICAgICAgIE5vZGUqIGNhbGxUYXJnZXQsIGludCBhcmdDb3VudCwgaW50IHJlZ2lz
dGVyT2Zmc2V0LCBDYWxsTGlua1N0YXR1cyk7CiAgICAgdm9pZCBoYW5kbGVDYWxsKGludCByZXN1
bHQsIE5vZGVUeXBlIG9wLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCB1bnNpZ25lZCBpbnN0cnVj
dGlvblNpemUsIGludCBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0KTsK
ICAgICB2b2lkIGhhbmRsZUNhbGwoSW5zdHJ1Y3Rpb24qIHBjLCBOb2RlVHlwZSBvcCwgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCk7Ci0gICAgdm9pZCBlbWl0RnVuY3Rpb25DaGVja3MoY29uc3QgQ2Fs
bExpbmtTdGF0dXMmLCBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENvZGVT
cGVjaWFsaXphdGlvbktpbmQpOworICAgIHZvaWQgZW1pdEZ1bmN0aW9uQ2hlY2tzKENhbGxWYXJp
YW50LCBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQpOworICAgIHZvaWQgdW5kb0Z1bmN0aW9uQ2hlY2tzKENhbGxWYXJpYW50KTsKICAg
ICB2b2lkIGVtaXRBcmd1bWVudFBoYW50b21zKGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICB1bnNp
Z25lZCBpbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7IC8vIFJldHVybiBVSU5UX01BWCBpZiBpdCdz
IG5vdCBhbiBpbmxpbmluZyBjYW5kaWRhdGUuIEJ5IGNvbnZlbnRpb24sIGludHJpbnNpY3MgaGF2
ZSBhIGNvc3Qgb2YgMS4KICAgICAvLyBIYW5kbGUgaW5saW5pbmcuIFJldHVybiB0cnVlIGlmIGl0
IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCi0gICAgYm9vbCBo
YW5kbGVJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNv
bnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2lu
ZCk7CisgICAgYm9vbCBoYW5kbGVJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJl
c3VsdE9wZXJhbmQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBp
bnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGlu
ZUNhbGxGcmFtZTo6S2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CisgICAgZW51bSBD
YWxsVGFpbExpbmthYmlsaXR5IHsgQ2FsbFRhaWxJc0xpbmthYmxlLCBDYWxsVGFpbElzTm90TGlu
a2FibGUgfTsKKyAgICBib29sIGF0dGVtcHRUb0lubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5v
ZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBp
bnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGlu
ZUNhbGxGcmFtZTo6S2luZCwgQ2FsbFRhaWxMaW5rYWJpbGl0eSwgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSk7CisgICAgdm9pZCBpbmxpbmVDYWxs
KE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcmlhbnQsIGlu
dCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25l
ZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIENhbGxUYWlsTGlua2FiaWxpdHkp
OwogICAgIC8vIEhhbmRsZSBpbnRyaW5zaWMgZnVuY3Rpb25zLiBSZXR1cm4gdHJ1ZSBpZiBpdCBz
dWNjZWVkZWQsIGZhbHNlIGlmIHdlIG5lZWQgdG8gcGxhbnQgYSBjYWxsLgogICAgIGJvb2wgaGFu
ZGxlSW50cmluc2ljKGludCByZXN1bHRPcGVyYW5kLCBJbnRyaW5zaWMsIGludCByZWdpc3Rlck9m
ZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVk
aWN0aW9uKTsKICAgICBib29sIGhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihpbnQgcmVzdWx0
T3BlcmFuZCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBlZEFycmF5VHlwZSk7Ci0gICAgYm9vbCBoYW5kbGVD
b25zdGFudEludGVybmFsRnVuY3Rpb24oaW50IHJlc3VsdE9wZXJhbmQsIEludGVybmFsRnVuY3Rp
b24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7CisgICAg
Ym9vbCBoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oaW50IHJlc3VsdE9wZXJhbmQsIElu
dGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7CiAgICAgTm9kZSogaGFuZGxlUHV0
QnlPZmZzZXQoTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQs
IE5vZGUqIHZhbHVlKTsKICAgICBOb2RlKiBoYW5kbGVHZXRCeU9mZnNldChTcGVjdWxhdGVkVHlw
ZSwgTm9kZSogYmFzZSwgY29uc3QgU3RydWN0dXJlU2V0JiwgdW5zaWduZWQgaWRlbnRpZmllck51
bWJlciwgUHJvcGVydHlPZmZzZXQsIE5vZGVUeXBlIG9wID0gR2V0QnlPZmZzZXQpOwogICAgIHZv
aWQgaGFuZGxlR2V0QnlJZCgKQEAgLTYzNyw2ICs2NDIsMTMgQEAgcHJpdmF0ZToKICAgICAgICAg
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQorICAgIAorICAgIHZvaWQgcmVtb3ZlTGFz
dE5vZGVGcm9tR3JhcGgoTm9kZVR5cGUgZXhwZWN0ZWROb2RlVHlwZSkKKyAgICB7CisgICAgICAg
IE5vZGUqIG5vZGUgPSBtX2N1cnJlbnRCbG9jay0+dGFrZUxhc3QoKTsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQobm9kZS0+b3AoKSA9PSBleHBlY3RlZE5vZGVUeXBlKTsKKyAgICAgICAgbV9ncmFw
aC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOworICAgIH0KIAogICAgIHZvaWQgYWRkVmFyQXJnQ2hp
bGQoTm9kZSogY2hpbGQpCiAgICAgewpAQCAtODcxLDggKzg4Myw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIFZlY3RvcjxVbmxpbmtlZEJsb2NrPiBtX3VubGlua2VkQmxvY2tzOwogICAgICAgICAKICAg
ICAgICAgLy8gUG90ZW50aWFsIGJsb2NrIGxpbmtpbmcgdGFyZ2V0cy4gTXVzdCBiZSBzb3J0ZWQg
YnkgYnl0ZWNvZGVCZWdpbiwgYW5kCi0gICAgICAgIC8vIGNhbm5vdCBoYXZlIHR3byBibG9ja3Mg
dGhhdCBoYXZlIHRoZSBzYW1lIGJ5dGVjb2RlQmVnaW4uIEZvciB0aGlzIHZlcnkKLSAgICAgICAg
Ly8gcmVhc29uLCB0aGlzIGlzIG5vdCBlcXVpdmFsZW50IHRvIAorICAgICAgICAvLyBjYW5ub3Qg
aGF2ZSB0d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRlY29kZUJlZ2luLgogICAgICAg
ICBWZWN0b3I8QmFzaWNCbG9jayo+IG1fYmxvY2tMaW5raW5nVGFyZ2V0czsKICAgICAgICAgCiAg
ICAgICAgIC8vIElmIHRoZSBjYWxsc2l0ZSdzIGJhc2ljIGJsb2NrIHdhcyBzcGxpdCBpbnRvIHR3
bywgdGhlbiB0aGlzIHdpbGwgYmUKQEAgLTEwMzQsMzYgKzEwNDUsNyBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVDYWxsKAogICAgIAogICAgIHVuc2lnbmVkIG5leHRPZmZzZXQgPSBtX2N1
cnJlbnRJbmRleCArIGluc3RydWN0aW9uU2l6ZTsKIAotICAgIGlmIChJbnRlcm5hbEZ1bmN0aW9u
KiBmdW5jdGlvbiA9IGNhbGxMaW5rU3RhdHVzLmludGVybmFsRnVuY3Rpb24oKSkgewotICAgICAg
ICBpZiAoaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKHJlc3VsdCwgZnVuY3Rpb24sIHJl
Z2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbiwgc3Bl
Y2lhbGl6YXRpb25LaW5kKSkgewotICAgICAgICAgICAgLy8gVGhpcyBwaGFudG9taW5nIGhhcyB0
byBiZSAqYWZ0ZXIqIHRoZSBjb2RlIGZvciB0aGUgaW50cmluc2ljLCB0byBzaWduaWZ5IHRoYXQK
LSAgICAgICAgICAgIC8vIHRoZSBpbnB1dHMgbXVzdCBiZSBrZXB0IGFsaXZlIHdoYXRldmVyIGV4
aXRzIHRoZSBpbnRyaW5zaWMgbWF5IGRvLgotICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9t
LCBjYWxsVGFyZ2V0KTsKLSAgICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVy
T2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gQ2Fu
IG9ubHkgaGFuZGxlIHRoaXMgdXNpbmcgdGhlIGdlbmVyaWMgY2FsbCBoYW5kbGVyLgotICAgICAg
ICBhZGRDYWxsKHJlc3VsdCwgb3AsIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgICAgIAotICAgIEludHJpbnNpYyBpbnRyaW5zaWMgPSBjYWxsTGlua1N0YXR1cy5pbnRy
aW5zaWNGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKLQotICAgIEpTRnVuY3Rpb24qIGtub3duRnVu
Y3Rpb24gPSBudWxscHRyOwotICAgIGlmIChpbnRyaW5zaWMgIT0gTm9JbnRyaW5zaWMpIHsKLSAg
ICAgICAgZW1pdEZ1bmN0aW9uQ2hlY2tzKGNhbGxMaW5rU3RhdHVzLCBjYWxsVGFyZ2V0LCByZWdp
c3Rlck9mZnNldCwgc3BlY2lhbGl6YXRpb25LaW5kKTsKLSAgICAgICAgICAgIAotICAgICAgICBp
ZiAoaGFuZGxlSW50cmluc2ljKHJlc3VsdCwgaW50cmluc2ljLCByZWdpc3Rlck9mZnNldCwgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHByZWRpY3Rpb24pKSB7Ci0gICAgICAgICAgICAvLyBU
aGlzIHBoYW50b21pbmcgaGFzIHRvIGJlICphZnRlciogdGhlIGNvZGUgZm9yIHRoZSBpbnRyaW5z
aWMsIHRvIHNpZ25pZnkgdGhhdAotICAgICAgICAgICAgLy8gdGhlIGlucHV0cyBtdXN0IGJlIGtl
cHQgYWxpdmUgd2hhdGV2ZXIgZXhpdHMgdGhlIGludHJpbnNpYyBtYXkgZG8uCi0gICAgICAgICAg
ICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXQpOwotICAgICAgICAgICAgZW1pdEFyZ3Vt
ZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBz
cGVjaWFsaXphdGlvbktpbmQpOwotICAgICAgICAgICAgaWYgKG1fZ3JhcGguY29tcGlsYXRpb24o
KSkKLSAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5vdGljZUlubGluZWRD
YWxsKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGhh
bmRsZUlubGluaW5nKGNhbGxUYXJnZXQsIHJlc3VsdCwgY2FsbExpbmtTdGF0dXMsIHJlZ2lzdGVy
T2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbmV4dE9mZnNldCwga2luZCkpIHsK
KyAgICBpZiAoaGFuZGxlSW5saW5pbmcoY2FsbFRhcmdldCwgcmVzdWx0LCBjYWxsTGlua1N0YXR1
cywgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zmc2V0
LCBraW5kLCBwcmVkaWN0aW9uKSkgewogICAgICAgICBpZiAobV9ncmFwaC5jb21waWxhdGlvbigp
KQogICAgICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkQ2FsbCgp
OwogICAgICAgICByZXR1cm47CkBAIC0xMDg5LDcgKzEwNzEsNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVDYWxsKAogICAgICAgICBjYWxsLT5naXZlS25vd25GdW5jdGlvbihrbm93bkZ1
bmN0aW9uKTsKIH0KIAotdm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdEZ1bmN0aW9uQ2hlY2tzKGNv
bnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgTm9kZSogY2FsbFRhcmdldCwgaW50
IHJlZ2lzdGVyT2Zmc2V0LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit2b2lkIEJ5dGVD
b2RlUGFyc2VyOjplbWl0RnVuY3Rpb25DaGVja3MoQ2FsbFZhcmlhbnQgY2FsbGVlLCBOb2RlKiBj
YWxsVGFyZ2V0LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCkKIHsKICAgICBOb2RlKiB0aGlzQXJndW1lbnQ7CiAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNh
bGwpCkBAIC0xMDk3LDU4ICsxMDc5LDQ3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRGdW5j
dGlvbkNoZWNrcygKICAgICBlbHNlCiAgICAgICAgIHRoaXNBcmd1bWVudCA9IDA7CiAKLSAgICBp
ZiAoY2FsbExpbmtTdGF0dXMuaXNQcm92ZWQoKSkgewotICAgICAgICBhZGRUb0dyYXBoKFBoYW50
b20sIGNhbGxUYXJnZXQsIHRoaXNBcmd1bWVudCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgCi0gICAgQVNTRVJUKGNhbGxMaW5rU3RhdHVzLmNhbk9wdGltaXplKCkpOwotICAgIAotICAg
IGlmIChKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxMaW5rU3RhdHVzLmZ1bmN0aW9uKCkpCi0g
ICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tGdW5jdGlvbiwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKGZ1
bmN0aW9uKSksIGNhbGxUYXJnZXQsIHRoaXNBcmd1bWVudCk7CisgICAgaWYgKCFjYWxsZWUuaXND
b3N1cmVDYWxsKCkpCisgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tGdW5jdGlvbiwgT3BJbmZvKG1f
Z3JhcGguZnJlZXplKGNhbGxlZS5mdW5jdGlvbigpKSksIGNhbGxUYXJnZXQsIHRoaXNBcmd1bWVu
dCk7CiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVChjYWxsTGlua1N0YXR1cy5leGVjdXRhYmxl
KCkpOwogICAgICAgICAKLSAgICAgICAgYWRkVG9HcmFwaChDaGVja0V4ZWN1dGFibGUsIE9wSW5m
byhjYWxsTGlua1N0YXR1cy5leGVjdXRhYmxlKCkpLCBjYWxsVGFyZ2V0LCB0aGlzQXJndW1lbnQp
OworICAgICAgICBhZGRUb0dyYXBoKENoZWNrRXhlY3V0YWJsZSwgT3BJbmZvKGNhbGxlZS5leGVj
dXRhYmxlKCkpLCBjYWxsVGFyZ2V0LCB0aGlzQXJndW1lbnQpOwogICAgIH0KIH0KIAordm9pZCBC
eXRlQ29kZVBhcnNlcjo6dW5kb0Z1bmN0aW9uQ2hlY2tzKENhbGxWYXJpYW50IGNhbGxlZSkKK3sK
KyAgICByZW1vdmVMYXN0Tm9kZUZyb21HcmFwaChjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpID8gQ2hl
Y2tFeGVjdXRhYmxlIDogQ2hlY2tGdW5jdGlvbik7Cit9CisKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OmVtaXRBcmd1bWVudFBoYW50b21zKGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgZm9y
IChpbnQgaSA9IGtpbmQgPT0gQ29kZUZvckNhbGwgPyAwIDogMTsgaSA8IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzOyArK2kpCiAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgZ2V0KHZpcnR1
YWxSZWdpc3RlckZvckFyZ3VtZW50KGksIHJlZ2lzdGVyT2Zmc2V0KSkpOwogfQogCi1ib29sIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJl
c3VsdE9wZXJhbmQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgaW50IHJl
Z2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5l
eHRPZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kKQordW5zaWduZWQgQnl0ZUNvZGVQ
YXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIHN0YXRp
YyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKICAgICAKLSAgICBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCA9IElubGluZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRp
b25LaW5kRm9yKGtpbmQpOwotICAgIAogICAgIGlmICh2ZXJib3NlKQotICAgICAgICBkYXRhTG9n
KCJDb25zaWRlcmluZyBpbmxpbmluZyAiLCBjYWxsTGlua1N0YXR1cywgIiBpbnRvICIsIGN1cnJl
bnRDb2RlT3JpZ2luKCksICJcbiIpOworICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyBpbmxp
bmluZyAiLCBjYWxsZWUsICIgaW50byAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKICAg
ICAKLSAgICAvLyBGaXJzdCwgdGhlIHJlYWxseSBzaW1wbGUgY2hlY2tzOiBkbyB3ZSBoYXZlIGFu
IGFjdHVhbCBKUyBmdW5jdGlvbj8KLSAgICBpZiAoIWNhbGxMaW5rU3RhdHVzLmV4ZWN1dGFibGUo
KSkgeworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS5mdW5jdGlv
bkV4ZWN1dGFibGUoKTsKKyAgICBpZiAoIWV4ZWN1dGFibGUpIHsKICAgICAgICAgaWYgKHZlcmJv
c2UpCi0gICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIHRoZXJlIGlzIG5v
IGV4ZWN1dGFibGUuXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBpZiAo
Y2FsbExpbmtTdGF0dXMuZXhlY3V0YWJsZSgpLT5pc0hvc3RGdW5jdGlvbigpKSB7Ci0gICAgICAg
IGlmICh2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSBp
dCdzIGEgaG9zdCBmdW5jdGlvbi5cbiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIHRoZXJlIGlzIG5vIGZ1bmN0aW9uIGV4
ZWN1dGFibGUuIik7CisgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CiAgICAgCi0gICAg
RnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJs
ZSo+KGNhbGxMaW5rU3RhdHVzLmV4ZWN1dGFibGUoKSk7Ci0gICAgCiAgICAgLy8gRG9lcyB0aGUg
bnVtYmVyIG9mIGFyZ3VtZW50cyB3ZSdyZSBwYXNzaW5nIG1hdGNoIHRoZSBhcml0eSBvZiB0aGUg
dGFyZ2V0PyBXZSBjdXJyZW50bHkKICAgICAvLyBpbmxpbmUgb25seSBpZiB0aGUgbnVtYmVyIG9m
IGFyZ3VtZW50cyBwYXNzZWQgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBudW1iZXIK
ICAgICAvLyBhcmd1bWVudHMgZXhwZWN0ZWQuCiAgICAgaWYgKHN0YXRpY19jYXN0PGludD4oZXhl
Y3V0YWJsZS0+cGFyYW1ldGVyQ291bnQoKSkgKyAxID4gYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMpIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFp
bGluZyBiZWNhdXNlIG9mIGFyaXR5IG1pc21hdGNoLlxuIik7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgIH0KICAgICAKICAgICAvLyBEbyB3ZSBo
YXZlIGEgY29kZSBibG9jaywgYW5kIGRvZXMgdGhlIGNvZGUgYmxvY2sncyBzaXplIG1hdGNoIHRo
ZSBoZXVyaXN0aWNzL3JlcXVpcmVtZW50cyBmb3IKQEAgLTExNTcsMTggKzExMjgsMTggQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgIC8vIGlmIHdlIGhhZCBh
IHN0YXRpYyBwcm9vZiBvZiB3aGF0IHdhcyBiZWluZyBjYWxsZWQ7IHRoaXMgbWlnaHQgaGFwcGVu
IGZvciBleGFtcGxlIGlmIHlvdSBjYWxsIGEKICAgICAvLyBnbG9iYWwgZnVuY3Rpb24sIHdoZXJl
IHdhdGNocG9pbnRpbmcgZ2l2ZXMgdXMgc3RhdGljIGluZm9ybWF0aW9uLiBPdmVyYWxsLCBpdCdz
IGEgcmFyZSBjYXNlCiAgICAgLy8gYmVjYXVzZSB3ZSBleHBlY3QgdGhhdCBhbnkgaG90IGNhbGxl
ZXMgd291bGQgaGF2ZSBhbHJlYWR5IGJlZW4gY29tcGlsZWQuCi0gICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBleGVjdXRhYmxlLT5iYXNlbGluZUNvZGVCbG9ja0ZvcihzcGVjaWFsaXphdGlvbktp
bmQpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+YmFzZWxpbmVDb2Rl
QmxvY2tGb3Ioa2luZCk7CiAgICAgaWYgKCFjb2RlQmxvY2spIHsKICAgICAgICAgaWYgKHZlcmJv
c2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIG5vIGNvZGUgYmxv
Y2sgYXZhaWxhYmxlLlxuIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IFVJTlRfTUFYOwogICAgIH0KICAgICBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsID0g
aW5saW5lRnVuY3Rpb25Gb3JDYXBhYmlsaXR5TGV2ZWwoCi0gICAgICAgIGNvZGVCbG9jaywgc3Bl
Y2lhbGl6YXRpb25LaW5kLCBjYWxsTGlua1N0YXR1cy5pc0Nsb3N1cmVDYWxsKCkpOworICAgICAg
ICBjb2RlQmxvY2ssIGtpbmcsIGNhbGxMaW5rU3RhdHVzLmlzQ2xvc3VyZUNhbGwoKSk7CiAgICAg
aWYgKCFjYW5JbmxpbmUoY2FwYWJpbGl0eUxldmVsKSkgewogICAgICAgICBpZiAodmVyYm9zZSkK
ICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGlz
IG5vdCBpbmxpbmVhYmxlLlxuIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0
dXJuIFVJTlRfTUFYOwogICAgIH0KICAgICAKICAgICAvLyBDaGVjayBpZiB0aGUgY2FsbGVyIGlz
IGFscmVhZHkgdG9vIGxhcmdlLiBXZSBkbyB0aGlzIGNoZWNrIGhlcmUgYmVjYXVzZSB0aGF0J3Mg
anVzdApAQCAtMTE3OCw3ICsxMTQ5LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5s
aW5pbmcoTm9kZQogICAgICAgICBjb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID0g
ZmFsc2U7CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZh
aWxpbmcgYmVjYXVzZSB0aGUgY2FsbGVyIGlzIHRvbyBsYXJnZS5cbiIpOwotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CiAgICAgCiAgICAgLy8g
RklYTUU6IHRoaXMgc2hvdWxkIGJlIGJldHRlciBhdCBwcmVkaWN0aW5nIGhvdyBtdWNoIGJsb2F0
IHdlIHdpbGwgaW50cm9kdWNlIGJ5IGlubGluaW5nCkBAIC0xMTk3LDcgKzExNjgsNyBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgICAgIGlmIChkZXB0aCA+
PSBPcHRpb25zOjptYXhpbXVtSW5saW5pbmdEZXB0aCgpKSB7CiAgICAgICAgICAgICBpZiAodmVy
Ym9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIGRlcHRo
IGV4Y2VlZGVkLlxuIik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBy
ZXR1cm4gVUlOVF9NQVg7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChlbnRyeS0+
ZXhlY3V0YWJsZSgpID09IGV4ZWN1dGFibGUpIHsKQEAgLTEyMDUsMTggKzExNzYsMzAgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgICAgICAgICAgaWYgKHJl
Y3Vyc2lvbiA+PSBPcHRpb25zOjptYXhpbXVtSW5saW5pbmdSZWN1cnNpb24oKSkgewogICAgICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAg
RmFpbGluZyBiZWNhdXNlIHJlY3Vyc2lvbiBkZXRlY3RlZC5cbiIpOwotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAg
IGRhdGFMb2coIiAgICBDb21taXR0aW5nIHRvIGlubGluaW5nLlxuIik7CisgICAgICAgIGRhdGFM
b2coIiAgICBJbmxpbmluZyBzaG91bGQgYmUgcG9zc2libGUuXG4iKTsKKyAgICAKKyAgICAvLyBJ
dCBtaWdodCBiZSBwb3NzaWJsZSB0byBpbmxpbmUuCisgICAgcmV0dXJuIGNvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25Db3VudCgpOworfQorCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5v
ZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcmlhbnQgY2FsbGVl
LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5z
aWduZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIENhbGxUYWlsTGlu
a2FiaWxpdHkgY2FsbFRhaWxMaW5rYWJpbGl0eSkKK3sKKyAgICBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHNwZWNpYWxpemF0aW9uS2luZCA9IElubGluZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25L
aW5kRm9yKGtpbmQpOwogICAgIAorICAgIEFTU0VSVChpbmxpbmluZ0Nvc3QoY2FsbGVlLCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kKSAhPSBVSU5UX01BWCk7
CisgICAgCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsZWUuZnVuY3Rpb25FeGVjdXRh
YmxlKCktPmJhc2VsaW5lQ29kZUJsb2NrRm9yKHNwZWNpYWxpemF0aW9uS2luZCk7CisKICAgICAv
LyBOb3cgd2Uga25vdyB3aXRob3V0IGEgZG91YnQgdGhhdCB3ZSBhcmUgY29tbWl0dGVkIHRvIGlu
bGluaW5nLiBTbyBiZWdpbiB0aGUgcHJvY2VzcwogICAgIC8vIGJ5IGNoZWNraW5nIHRoZSBjYWxs
ZWUgKGlmIG5lY2Vzc2FyeSkgYW5kIG1ha2luZyBzdXJlIHRoYXQgYXJndW1lbnRzIGFuZCB0aGUg
Y2FsbGVlCiAgICAgLy8gYXJlIGZsdXNoZWQuCi0gICAgZW1pdEZ1bmN0aW9uQ2hlY2tzKGNhbGxM
aW5rU3RhdHVzLCBjYWxsVGFyZ2V0Tm9kZSwgcmVnaXN0ZXJPZmZzZXQsIHNwZWNpYWxpemF0aW9u
S2luZCk7CisgICAgZW1pdEZ1bmN0aW9uQ2hlY2tzKGNhbGxlZSwgY2FsbFRhcmdldE5vZGUsIHJl
Z2lzdGVyT2Zmc2V0LCBzcGVjaWFsaXphdGlvbktpbmQpOwogICAgIAogICAgIC8vIEZJWE1FOiBE
b24ndCBmbHVzaCBjb25zdGFudHMhCiAgICAgCkBAIC0xMjMzLDcgKzEyMTYsNyBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgICAgIHJlc3VsdFJlZyA9IG1f
aW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChyZXN1bHRSZWcpOwogICAgIAogICAgIElubGlu
ZVN0YWNrRW50cnkgaW5saW5lU3RhY2tFbnRyeSgKLSAgICAgICAgdGhpcywgY29kZUJsb2NrLCBj
b2RlQmxvY2ssIG1fZ3JhcGgubGFzdEJsb2NrKCksIGNhbGxMaW5rU3RhdHVzLmZ1bmN0aW9uKCks
IHJlc3VsdFJlZywKKyAgICAgICAgdGhpcywgY29kZUJsb2NrLCBjb2RlQmxvY2ssIG1fZ3JhcGgu
bGFzdEJsb2NrKCksIGNhbGxlZS5mdW5jdGlvbigpLCByZXN1bHRSZWcsCiAgICAgICAgIChWaXJ0
dWFsUmVnaXN0ZXIpaW5saW5lQ2FsbEZyYW1lU3RhcnQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBraW5kKTsKICAgICAKICAgICAvLyBUaGlzIGlzIHdoZXJlIHRoZSBhY3R1YWwgaW5saW5p
bmcgcmVhbGx5IGhhcHBlbnMuCkBAIC0xMjQ3LDggKzEyMzAsOCBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgCiAgICAgUkVMRUFTRV9BU1NFUlQoCiAgICAg
ICAgIG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsCi0g
ICAgICAgID09IGNhbGxMaW5rU3RhdHVzLmlzQ2xvc3VyZUNhbGwoKSk7Ci0gICAgaWYgKGNhbGxM
aW5rU3RhdHVzLmlzQ2xvc3VyZUNhbGwoKSkgeworICAgICAgICA9PSBjYWxsZWUuaXNDbG9zdXJl
Q2FsbCgpKTsKKyAgICBpZiAoY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSkgewogICAgICAgICBWYXJp
YWJsZUFjY2Vzc0RhdGEqIGNhbGxlZVZhcmlhYmxlID0KICAgICAgICAgICAgIHNldChWaXJ0dWFs
UmVnaXN0ZXIoSlNTdGFjazo6Q2FsbGVlKSwgY2FsbFRhcmdldE5vZGUsIEltbWVkaWF0ZU5ha2Vk
U2V0KS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSog
c2NvcGVWYXJpYWJsZSA9CkBAIC0xMzE3LDcgKzEzMDAsNiBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgCiAgICAgLy8gSWYgd2UgZ2V0IHRvIHRoaXMgcG9p
bnQgdGhlbiBhbGwgYmxvY2tzIG11c3QgZW5kIGluIHNvbWUgc29ydCBvZiB0ZXJtaW5hbHMuCiAg
ICAgQVNTRVJUKGxhc3RCbG9jay0+bGFzdCgpLT5pc1Rlcm1pbmFsKCkpOwotICAgIAogCiAgICAg
Ly8gTmVlZCB0byBjcmVhdGUgYSBuZXcgYmFzaWMgYmxvY2sgZm9yIHRoZSBjb250aW51YXRpb24g
YXQgdGhlIGNhbGxlci4KICAgICBSZWZQdHI8QmFzaWNCbG9jaz4gYmxvY2sgPSBhZG9wdFJlZihu
ZXcgQmFzaWNCbG9jayhuZXh0T2Zmc2V0LCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIFBO
YU4pKTsKQEAgLTEzNDEsMTMgKzEzMjMsODAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW5saW5pbmcoTm9kZQogICAgIG1fY3VycmVudEJsb2NrID0gYmxvY2suZ2V0KCk7CiAgICAgQVNT
RVJUKG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuaXNF
bXB0eSgpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1Rhcmdl
dHMubGFzdCgpLT5ieXRlY29kZUJlZ2luIDwgbmV4dE9mZnNldCk7CiAgICAgbV9pbmxpbmVTdGFj
a1RvcC0+bV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxv
Y2suZ2V0KCkpKTsKLSAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtp
bmdUYXJnZXRzLmFwcGVuZChibG9jay5nZXQoKSk7CisgICAgaWYgKGNhbGxUYWlsTGlua2FiaWxp
dHkgPT0gQ2FsbFRhaWxJc0xpbmthYmxlKQorICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Nh
bGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9jay5nZXQoKSk7CiAgICAgbV9n
cmFwaC5hcHBlbmRCbG9jayhibG9jayk7CiAgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOworfQor
Citib29sIEJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJn
ZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0
ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9m
ZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIENhbGxUYWlsTGlua2FiaWxpdHkgY2Fs
bFRhaWxMaW5rYWJpbGl0eSwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgdW5zaWduZWQmIGlu
bGluaW5nQmFsYW5jZSkKK3sKKyAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0
aW9uS2luZCA9IElubGluZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOwor
ICAgIAorICAgIGlmICghaW5saW5pbmdCYWxhbmNlKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgaWYgKEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLmludGVybmFs
RnVuY3Rpb24oKSkgeworICAgICAgICBlbWl0RnVuY3Rpb25DaGVja3MoY2FsbGVlLCBjYWxsVGFy
Z2V0Tm9kZSwgcmVnaXN0ZXJPZmZzZXQsIHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgICAgIAor
ICAgICAgICBpZiAoaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKHJlc3VsdE9wZXJhbmQs
IGZ1bmN0aW9uLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNw
ZWNpYWxpemF0aW9uS2luZCkpIHsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2Fs
bFRhcmdldE5vZGUpOworICAgICAgICAgICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJP
ZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQpOwor
ICAgICAgICAgICAgaW5saW5pbmdCYWxhbmNlLS07CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdW5kb0Z1bmN0aW9uQ2hlY2tzKGNhbGxlZSk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgCi0gICAgLy8gQXQgdGhpcyBwb2lu
dCB3ZSByZXR1cm4gYW5kIGNvbnRpbnVlIHRvIGdlbmVyYXRlIGNvZGUgZm9yIHRoZSBjYWxsZXIs
IGJ1dAotICAgIC8vIGluIHRoZSBuZXcgYmFzaWMgYmxvY2suCisgICAgSW50cmluc2ljIGludHJp
bnNpYyA9IGNhbGxlZS5pbnRyaW5zaWNGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICBpZiAo
aW50cmluc2ljICE9IE5vSW50cmluc2ljKSB7CisgICAgICAgIGVtaXRGdW5jdGlvbkNoZWNrcyhj
YWxsZWUsIGNhbGxUYXJnZXROb2RlLCByZWdpc3Rlck9mZnNldCwgc3BlY2lhbGl6YXRpb25LaW5k
KTsKKyAgICAgICAgCisgICAgICAgIGlmIChoYW5kbGVJbnRyaW5zaWMocmVzdWx0T3BlcmFuZCwg
aW50cmluc2ljLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHBy
ZWRpY3Rpb24pKSB7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXRO
b2RlKTsKKyAgICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICAgICAg
ICAgIGlubGluaW5nQmFsYW5jZS0tOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIHVuZG9GdW5jdGlvbkNoZWNrcyhjYWxsZWUpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIG15SW5saW5pbmdDb3N0
ID0gaW5saW5pbmdDb3N0KAorICAgICAgICBjYWxsTGlua1N0YXR1c1swXSwgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgCisgICAgaWYgKG15SW5s
aW5pbmdDb3N0ID4gaW5saW5pbmdCYWxhbmNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
CisgICAgaW5saW5lQ2FsbChjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0T3BlcmFuZCwgY2FsbExpbmtT
dGF0dXNbMF0sIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbmV4
dE9mZnNldCwga2luZCwgY2FsbFRhaWxMaW5rYWJpbGl0eSk7CisgICAgaW5saW5pbmdCYWxhbmNl
IC09IG15SW5saW5pbmdDb3N0OwogICAgIHJldHVybiB0cnVlOworICAgIAorfQorCitib29sIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJl
c3VsdE9wZXJhbmQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgaW50IHJl
Z2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5l
eHRPZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVk
aWN0aW9uKQoreworICAgIHVuc2lnbmVkIGlubGluaW5nQmFsYW5jZSA9IE9wdGlvbnM6Om1heGlt
dW1GdW5jdGlvbkZvckNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCk7CisgICAg
aWYgKElubGluZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpID09IENvZGVG
b3JDb25zdHJ1Y3QpCisgICAgICAgIGlubGluaW5nQmFsYW5jZSA9IHN0ZDo6bWluKGlubGluaW5n
QmFsYW5jZSwgT3B0aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saW5lQ2FuZGlk
YXRlSW5zdHJ1Y3Rpb25Db3VudCgpKTsKKyAgICBpZiAoY2FsbExpbmtTdGF0dXMuaXNDbG9zdXJl
Q2FsbCgpKQorICAgICAgICBpbmxpbmluZ0JhbGFuY2UgPSBzdGQ6Om1pbihpbmxpbmluZ0JhbGFu
Y2UsIE9wdGlvbnM6Om1heGltdW1GdW5jdGlvbkZvckNsb3N1cmVDYWxsSW5saW5lQ2FuZGlkYXRl
SW5zdHJ1Y3Rpb25Db3VudCgpKTsKKyAgICAKKyAgICAvLyBGaXJzdCBjaGVjayBpZiB3ZSBjYW4g
YXZvaWQgY3JlYXRpbmcgY29udHJvbCBmbG93LiBPdXIgaW5saW5lciBkb2VzIHNvbWUgQ0ZHCisg
ICAgLy8gc2ltcGxpZmljYXRpb24gb24gdGhlIGZseSBhbmQgdGhpcyBoZWxwcyByZWR1Y2UgY29t
cGlsZSB0aW1lcywgYnV0IHdlIGNhbiBvbmx5IGxldmVyYWdlCisgICAgLy8gdGhpcyBpbiBjYXNl
cyB3aGVyZSB3ZSBkb24ndCBuZWVkIGNvbnRyb2wgZmxvdyBkaWFtb25kcyB0byBjaGVjayB0aGUg
Y2FsbGVlLgorICAgIGlmICghY2FsbExpbmtTdGF0dXMuY291bGRUYWtlU2xvd1BhdGgoKSAmJiBj
YWxsTGlua1N0YXR1cy5zaXplKCkgPT0gMSkgeworICAgICAgICByZXR1cm4gYXR0ZW1wdFRvSW5s
aW5lQ2FsbCgKKyAgICAgICAgICAgIGNhbGxUYXJnZXROb2RlLCByZXN1bHRPcGVyYW5kLCBjYWxs
TGlua1N0YXR1c1swXSwgcmVnaXN0ZXJPZmZzZXQsCisgICAgICAgICAgICBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgbmV4dE9mZnNldCwga2luZCwgQ2FsbFRhaWxJc0xpbmthYmxlLCBwcmVk
aWN0aW9uLAorICAgICAgICAgICAgaW5saW5pbmdCYWxhbmNlKTsKKyAgICB9CisgICAgCisgICAg
Ly8gV2UgbmVlZCB0byBjcmVhdGUgc29tZSBraW5kIG9mIHN3aXRjaCBvdmVyIGNhbGxlZS4KKyAg
ICAvLyBGSVhNRTogZG8gdGhpcyBwYXJ0LgogfQogCiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVNaW5NYXgoaW50IHJlc3VsdE9wZXJhbmQsIE5vZGVUeXBlIG9wLCBpbnQgcmVnaXN0ZXJPZmZz
ZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykKQEAgLTE2NDUsNyArMTY5NCw3IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVR5cGVkQXJyYXlDb24KIAogYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKAogICAgIGludCByZXN1bHRP
cGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgaW50IHJlZ2lzdGVyT2Zmc2V0LAot
ICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
dGlvbiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQorICAgIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIC8vIElm
IHdlIGV2ZXIgZmluZCB0aGF0IHdlIGhhdmUgYSBsb3Qgb2YgaW50ZXJuYWwgZnVuY3Rpb25zIHRo
YXQgd2Ugc3BlY2lhbGl6ZSBmb3IsCiAgICAgLy8gdGhlbiB3ZSBzaG91bGQgcHJvYmFibHkgaGF2
ZSBzb21lIHNvcnQgb2YgaGFzaHRhYmxlIGRpc3BhdGNoLCBvciBtYXliZSBldmVuCkBAIC0xNjU0
LDggKzE3MDMsNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVyCiAg
ICAgLy8gd2Uga25vdyBhYm91dCBpcyBzbWFsbCBlbm91Z2gsIHRoYXQgaGF2aW5nIGp1c3QgYSBs
aW5lYXIgY2FzY2FkZSBvZiBpZiBzdGF0ZW1lbnRzCiAgICAgLy8gaXMgZ29vZCBlbm91Z2guCiAg
ICAgCi0gICAgVU5VU0VEX1BBUkFNKHByZWRpY3Rpb24pOyAvLyBSZW1vdmUgdGhpcyBvbmNlIHdl
IGRvIG1vcmUgdGhpbmdzLgotICAgIAogICAgIGlmIChmdW5jdGlvbi0+Y2xhc3NJbmZvKCkgPT0g
QXJyYXlDb25zdHJ1Y3Rvcjo6aW5mbygpKSB7CiAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2xvYmFs
T2JqZWN0KCkgIT0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxNzIx
NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MCw4ICs5MCwxMCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5zZXRDaGlsZDEoRWRnZSgpKTsKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOgotICAgICAgICAg
ICAgICAgICAgICBpZiAoIW5vZGUtPmNoaWxkMSgpKQorICAgICAgICAgICAgICAgICAgICBpZiAo
IW5vZGUtPmNoaWxkMSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxs
b2NhdG9yLmZyZWUobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmNo
aWxkMSgpLT5vcCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgUGhpOgogICAgICAgICAg
ICAgICAgICAgICBjYXNlIFNldEFyZ3VtZW50OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3IEBAIEdyYXBo
OjpHcmFwaChWTSYgdm0sIFBsYW4mIHBsYW4sIExvbmdMaXYKICAgICAsIG1fZm9ybShMb2FkU3Rv
cmUpCiAgICAgLCBtX3VuaWZpY2F0aW9uU3RhdGUoTG9jYWxseVVuaWZpZWQpCiAgICAgLCBtX3Jl
ZkNvdW50U3RhdGUoRXZlcnl0aGluZ0lzTGl2ZSkKKyAgICAsIG1fc2hvdWxkUHJvZmlsZShmYWxz
ZSkKIHsKICAgICBBU1NFUlQobV9wcm9maWxlZEJsb2NrKTsKICAgICAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtNzYxLDYgKzc2MSw3
IEBAIHB1YmxpYzoKICAgICBHcmFwaEZvcm0gbV9mb3JtOwogICAgIFVuaWZpY2F0aW9uU3RhdGUg
bV91bmlmaWNhdGlvblN0YXRlOwogICAgIFJlZkNvdW50U3RhdGUgbV9yZWZDb3VudFN0YXRlOwor
ICAgIGJvb2wgbV9zaG91bGRQcm9maWxlOwogcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGhhbmRs
ZVN1Y2Nlc3NvcihWZWN0b3I8QmFzaWNCbG9jayosIDE2PiYgd29ya2xpc3QsIEJhc2ljQmxvY2sq
LCBCYXNpY0Jsb2NrKiBzdWNjZXNzb3IpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuY3Bw
CShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50
b21DYW5vbmljYWxpemF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw4ICs5Miwx
MCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5yZW1v
dmVFZGdlKGktLSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpCisgICAg
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9DaGVjaygp
OwogICAgICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UGhhbnRvbVJlbW92YWxQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTI1LDYgKzEyNSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkcmVuLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5t
X2FsbG9jYXRvci5mcmVlKG5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9
IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAg
ICAgICAgfQpAQCAtMTQyLDYgKzE0Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTE0OSw4ICsxNTEsMTAgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY2Fz
ZSBIYXJkUGhhbnRvbTogewotICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4u
aXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0
eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUo
bm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02ODksNiArNjg5LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRD
YWxsKE5vZGUqIG5vZGUKIAogICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4obm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKICAgICAKKyAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2ppdC5jb2Rl
QmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7CisKKyAgICBpZiAobV9qaXQuZ3JhcGgoKS5tX3No
b3VsZFByb2ZpbGUpIHsKKyAgICAgICAgbV9qaXQudm0oKS5jYWxsRWRnZUxvZy0+ZW1pdExvZ0Nv
ZGUoCisgICAgICAgICAgICBtX2ppdCwgY2FsbExpbmtJbmZvLT5jYWxsRWRnZVByb2ZpbGUsIGNh
bGxlZS5qc1ZhbHVlUmVncygpKTsKKyAgICB9CisgICAgCiAgICAgc2xvd1BhdGguYXBwZW5kKGJy
YW5jaE5vdENlbGwoY2FsbGVlLmpzVmFsdWVSZWdzKCkpKTsKICAgICBzbG93UGF0aC5hcHBlbmQo
bV9qaXQuYnJhbmNoUHRyV2l0aFBhdGNoKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgY2FsbGVl
UGF5bG9hZEdQUiwgdGFyZ2V0VG9DaGVjaykpOwogICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoY2FsbGVlUGF5bG9hZEdQUiwgT0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rp
b24sIG1fc2NvcGUpKSwgcmVzdWx0UGF5bG9hZEdQUik7CkBAIC03MTMsNyArNzIwLDYgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAgICBtX2ppdC5tb3Zl
KGNhbGxlZVBheWxvYWRHUFIsIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgbV9qaXQubW92ZShj
YWxsZWVUYWdHUFIsIEdQUkluZm86OnJlZ1QxKTsKICAgICB9Ci0gICAgQ2FsbExpbmtJbmZvKiBp
bmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbygpOwogICAgIG1faml0Lm1v
dmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoaW5mbyksIEdQUkluZm86OnJlZ1QyKTsK
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjI2LDcgKzYyNiw2IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNaXNjU3RyaWN0RXEKIAogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKIHsKLQogICAgIGJvb2wgaXNDYWxsID0gbm9kZS0+
b3AoKSA9PSBDYWxsOwogICAgIGlmICghaXNDYWxsKQogICAgICAgICBERkdfQVNTRVJUKG1faml0
LmdyYXBoKCksIG5vZGUsIG5vZGUtPm9wKCkgPT0gQ29uc3RydWN0KTsKQEAgLTY3MCw2ICs2Njks
MTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogCiAgICAgbV9q
aXQuZW1pdFN0b3JlQ29kZU9yaWdpbihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgIAorICAg
IENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZENhbGxM
aW5rSW5mbygpOworICAgIAorICAgIGlmIChtX2ppdC5ncmFwaCgpLm1fc2hvdWxkUHJvZmlsZSkK
KyAgICAgICAgbV9qaXQudm0oKS5jYWxsRWRnZUxvZy0+ZW1pdExvZ0NvZGUobV9qaXQsIGNhbGxM
aW5rSW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBjYWxsZWVHUFIpOworCiAgICAgc2xvd1BhdGggPSBt
X2ppdC5icmFuY2hQdHJXaXRoUGF0Y2goTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBjYWxsZWVH
UFIsIHRhcmdldFRvQ2hlY2ssIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKDApKTsKIAog
ICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2FsbGVlR1BSLCBPQkpF
Q1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9zY29wZSkpLCByZXN1bHRHUFIpOwpAQCAtNjgyLDcg
KzY4Niw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICBz
bG93UGF0aC5saW5rKCZtX2ppdCk7CiAgICAgCiAgICAgbV9qaXQubW92ZShjYWxsZWVHUFIsIEdQ
UkluZm86OnJlZ1QwKTsgLy8gQ2FsbGVlIG5lZWRzIHRvIGJlIGluIHJlZ1QwCi0gICAgQ2FsbExp
bmtJbmZvKiBjYWxsTGlua0luZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZv
KCk7CiAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihjYWxsTGlu
a0luZm8pLCBHUFJJbmZvOjpyZWdUMik7IC8vIExpbmsgaW5mbyBuZWVkcyB0byBiZSBpbiByZWdU
MgogICAgIEpJVENvbXBpbGVyOjpDYWxsIHNsb3dDYWxsID0gbV9qaXQubmVhckNhbGwoKTsKICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rp
b25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdU
aWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjEsNiArNjEsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghT3B0aW9u
czo6ZW5hYmxlT1NSRW50cnlUb0ZUTCgpKQogICAgICAgICAgICAgbGV2ZWwgPSBGVEw6OkNhbkNv
bXBpbGU7CiAgICAgICAgIAorICAgICAgICBtX2dyYXBoLm1fc2hvdWxkUHJvZmlsZSA9IHRydWU7
CisgICAgICAgIAogICAgICAgICBJbnNlcnRpb25TZXQgaW5zZXJ0aW9uU2V0KG1fZ3JhcGgpOwog
ICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7
IGJsb2NrSW5kZXgtLTspIHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFw
aC5ibG9jayhibG9ja0luZGV4KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsMjEg
QEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogICAgIAorICAgIHZvaWQgbG9hZFZhbHVlKEFkZHJl
c3MgYWRkcmVzcywgSlNWYWx1ZVJlZ3MgcmVncykKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICAgICAgbG9hZDY0KGFkZHJlc3MsIHJlZ3MuZ3ByKCkpOworI2Vsc2UKKyAgICAgICAgaWYg
KGFkZHJlc3MuYmFzZSA9PSByZWdzLnBheWxvYWRHUFIoKSkgeworICAgICAgICAgICAgbG9hZDMy
KGFkZHJlc3Mud2l0aE9mZnNldChUYWdPZmZzZXQpLCByZWdzLnRhZ0dQUigpKTsKKyAgICAgICAg
ICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCksIHJlZ3MucGF5bG9h
ZEdQUigpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndp
dGhPZmZzZXQoUGF5bG9hZE9mZnNldCksIHJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAgICAg
IGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoVGFnT2Zmc2V0KSwgcmVncy50YWdHUFIoKSk7Cisg
ICAgICAgIH0KKyNlbmRpZgorICAgIH0KKyAgICAKICAgICB2b2lkIG1vdmVUcnVzdGVkVmFsdWUo
SlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZVJlZ3MgcmVncykKICAgICB7CiAjaWYgVVNFKEpTVkFMVUU2
NCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAkocmV2aXNp
b24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAko
d29ya2luZyBjb3B5KQpAQCAtMTY2Niw2ICsxNjY2LDE1IEBAIHB1YmxpYzoKICAgICAgICAgbW92
ZShhcmc0LCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwogICAgIH0KICNlbmRpZgorICAgIAorICAg
IHZvaWQgc2V0dXBBcmd1bWVudHMoSlNWYWx1ZVJlZ3MgYXJnMSkKKyAgICB7CisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICAgICAgc2V0dXBBcmd1bWVudHMoYXJnMS5ncHIoKSk7CisjZWxzZQorICAg
ICAgICBzZXR1cEFyZ3VtZW50cyhhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSk7Cisj
ZW5kaWYKKyAgICB9CiAKICAgICB2b2lkIHNldHVwUmVzdWx0cyhHUFJSZWcgZGVzdEEsIEdQUlJl
ZyBkZXN0QikKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAkocmV2
aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgJKHdv
cmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDggQEAgcHVibGljOgogICAgIEdQUlJlZyB0YWdHUFIo
KSBjb25zdCB7IHJldHVybiBJbnZhbGlkR1BSUmVnOyB9CiAgICAgR1BSUmVnIHBheWxvYWRHUFIo
KSBjb25zdCB7IHJldHVybiBtX2dwcjsgfQogICAgIAorICAgIGJvb2wgdXNlcyhHUFJSZWcgZ3By
KSBjb25zdCB7IHJldHVybiBtX2dwciA9PSBncHI7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgR1BS
UmVnIG1fZ3ByOwogfTsKQEAgLTE2OSw2ICsxNzEsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biB0YWdHUFIoKTsKICAgICB9CiAKKyAgICBib29sIHVzZXMoR1BSUmVnIGdwcikgY29uc3QgeyBy
ZXR1cm4gbV90YWdHUFIgPT0gZ3ByIHx8IG1fcGF5bG9hZEdQUiA9PSBncHI7IH0KKyAgICAKIHBy
aXZhdGU6CiAgICAgaW50OF90IG1fdGFnR1BSOwogICAgIGludDhfdCBtX3BheWxvYWRHUFI7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCShyZXZpc2lv
biAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwMCw2ICszMDAsMTMgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENh
bGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIHN0b3JlMzIocmVnVDAsIEFkZHJlc3Moc3RhY2tQb2lu
dGVyUmVnaXN0ZXIsIEpTU3RhY2s6OkNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJl
Z2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAg
ICAgc3RvcmUzMihyZWdUMSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgSlNTdGFjazo6
Q2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFRhZ09mZnNldCAt
IHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogCisgICAgQ2FsbExpbmtJbmZvKiBpbmZvID0g
bV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5mbygpOworCisgICAgaWYgKHNob3VsZEVtaXRQcm9m
aWxpbmcoKSkgeworICAgICAgICBtX3ZtLT5jYWxsRWRnZUxvZy0+ZW1pdExvZ0NvZGUoCisgICAg
ICAgICAgICAqdGhpcywgaW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBKU1ZhbHVlUmVncyhyZWdUMSwg
cmVnVDApKTsKKyAgICB9CisKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbF9ldmFsKSB7CiAg
ICAgICAgIGNvbXBpbGVDYWxsRXZhbChpbnN0cnVjdGlvbik7CiAgICAgICAgIHJldHVybjsKQEAg
LTMxMyw3ICszMjAsNiBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJ
CiAgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2UpOwogCiAgICAgQVNTRVJUKG1fY2FsbENvbXBpbGF0
aW9uSW5mby5zaXplKCkgPT0gY2FsbExpbmtJbmZvSW5kZXgpOwotICAgIENhbGxMaW5rSW5mbyog
aW5mbyA9IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsKICAgICBpbmZvLT5jYWxsVHlw
ZSA9IENhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3Iob3Bjb2RlSUQpOwogICAgIGluZm8tPmNvZGVP
cmlnaW4gPSBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpOwogICAgIGluZm8tPmNhbGxlZUdQ
UiA9IHJlZ1QwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCShyZXZp
c2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMTIsNiArMjEyLDExIEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxs
KE9wY29kZUlEIG9wY29kZUkKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSwgcmVn
VDApOyAvLyByZWdUMCBob2xkcyBjYWxsZWUuCiAKICAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNz
KHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBKU1N0YWNrOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+
KHNpemVvZihSZWdpc3RlcikpIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CisgICAgCisg
ICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5mbygpOwor
CisgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkKKyAgICAgICAgbV92bS0+Y2FsbEVkZ2VM
b2ctPmVtaXRMb2dDb2RlKCp0aGlzLCBpbmZvLT5jYWxsRWRnZVByb2ZpbGUsIHJlZ1QwKTsKIAog
ICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsX2V2YWwpIHsKICAgICAgICAgY29tcGlsZUNhbGxF
dmFsKGluc3RydWN0aW9uKTsKQEAgLTIyMyw3ICsyMjgsNiBAQCB2b2lkIEpJVDo6Y29tcGlsZU9w
Q2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2UpOwogCiAgICAg
QVNTRVJUKG1fY2FsbENvbXBpbGF0aW9uSW5mby5zaXplKCkgPT0gY2FsbExpbmtJbmZvSW5kZXgp
OwotICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8o
KTsKICAgICBpbmZvLT5jYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3Iob3Bjb2Rl
SUQpOwogICAgIGluZm8tPmNvZGVPcmlnaW4gPSBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQp
OwogICAgIGluZm8tPmNhbGxlZUdQUiA9IHJlZ1QwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0lubGluZXMuaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2
ICszNyw3IEBACiAvLyBJbiBmYWN0LCBpdCBjYW4gbWFrZSBhIGxvdCBvZiBzZW5zZTogb3V0c2lk
ZSBvZiBKU0MsIHRoaXMgZmlsZSBiZWNvbWVzIGEga2luZCBvZiB1bWJyZWxsYQogLy8gaGVhZGVy
IHRoYXQgcHVsbHMgaW4gbW9zdCAoYWxsPykgb2YgdGhlIGludGVyZXN0aW5nIHRoaW5ncyBpbiBK
U0MuCiAKKyNpbmNsdWRlICJDYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ2Fs
bEZyYW1lSW5saW5lcy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRl
ICJHQ0luY29taW5nUmVmQ291bnRlZElubGluZXMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzOwogICAgIGNsYXNzIEJ1
aWx0aW5FeGVjdXRhYmxlczsKKyAgICBjbGFzcyBDYWxsRWRnZUxvZzsKICAgICBjbGFzcyBDb2Rl
QmxvY2s7CiAgICAgY2xhc3MgQ29kZUNhY2hlOwogICAgIGNsYXNzIENvbW1vbklkZW50aWZpZXJz
OwpAQCAtMjMyLDYgKzIzMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogI2lmIEVOQUJMRShERkdfSklU
KQogICAgICAgICBPd25QdHI8REZHOjpMb25nTGl2ZWRTdGF0ZT4gZGZnU3RhdGU7CiAjZW5kaWYg
Ly8gRU5BQkxFKERGR19KSVQpCisgICAgICAgIAorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2Fs
bEVkZ2VMb2c+IGNhbGxFZGdlTG9nOwogCiAgICAgICAgIFZNVHlwZSB2bVR5cGU7CiAgICAgICAg
IENsaWVudERhdGEqIGNsaWVudERhdGE7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL25ldy1hcnJheS10aGVuLWV4aXQuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9uZXctYXJyYXktdGhlbi1leGl0LmpzCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9uZXctYXJyYXktdGhl
bi1leGl0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKK2Z1bmN0aW9uIGZvbyhm
KSB7CisgICAgcmV0dXJuIG5ldyBmKCk7Cit9CisKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKKyAgICBmb28oQXJyYXkpOworCit2YXIgZGlkQ2FsbCA9
IGZhbHNlOworZm9vKGZ1bmN0aW9uKCkgeyBkaWRDYWxsID0gdHJ1ZTsgfSk7CisKK2lmICghZGlk
Q2FsbCkKKyAgICB0aHJvdyAiRXJyb3I6IGRpZG4ndCBjYWxsIG15IGZ1bmN0aW9uLiI7CkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9Pd25QdHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9P
d25QdHIuaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL1dURi93dGYvT3duUHRyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDE0IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBPd25QdHImIG9wZXJhdG9yPShPd25QdHI8VT4mJik7CiAKICAg
ICAgICAgdm9pZCBzd2FwKE93blB0ciYgbykgeyBzdGQ6OnN3YXAobV9wdHIsIG8ubV9wdHIpOyB9
CisgICAgICAgIAorICAgICAgICAvLyBDb25zdHJ1Y3QgYW4gb2JqZWN0IHRvIHN0b3JlIGludG8g
dGhpcyBPd25QdHIsIGJ1dCBvbmx5IHNvIGxvbmcgYXMgdGhpcyBPd25QdHIKKyAgICAgICAgLy8g
ZG9lc24ndCBhbHJlYWR5IHBvaW50IHRvIGFuIG9iamVjdC4gVGhpcyB3aWxsIGVuc3VyZSB0aGF0
IGFmdGVyIHlvdSBjYWxsIHRoaXMsCisgICAgICAgIC8vIHRoZSBPd25QdHIgd2lsbCBwb2ludCB0
byBhbiBpbnN0YW5jZSBvZiBULiBUaGlzIGluc3RhbmNlIG1heSBvciBtYXkgbm90IGhhdmUgYmVl
bgorICAgICAgICAvLyBjcmVhdGVkIGJ5IHRoaXMgY2FsbC4gTW9yZW92ZXIsIHRoaXMgY2FsbCB1
c2VzIGFuIG9wcG9ydHVuaXN0aWMgdHJhbnNhY3Rpb24sIGluCisgICAgICAgIC8vIHRoYXQgd2Ug
bWF5IGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiBUIGFuZCB0aGVuIGltbWVkaWF0ZWx5IHRocm93IGl0
IGF3YXkuCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgICAgIHZvaWQg
Y3JlYXRlVHJhbnNhY3Rpb25hbGx5KEFyZ3MuLi4gYXJncyk7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICBleHBsaWNpdCBPd25QdHIoUHRyVHlwZSBwdHIpIDogbV9wdHIocHRyKSB7IH0KQEAgLTE4
Niw2ICsxOTQsMjggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJldHVybiBwLmdldCgpOwog
ICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFy
Z3M+IGlubGluZSBPd25QdHI8VD46OmNyZWF0ZVRyYW5zYWN0aW9uYWxseShBcmdzLi4uIGFyZ3Mp
CisgICAgeworICAgICAgICBpZiAobV9wdHIpIHsKKyAgICAgICAgICAgIFdURjo6bG9hZExvYWRG
ZW5jZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBUKiBuZXdPYmplY3QgPSBuZXcgVChhcmdzLi4uKTsKKyAgICAgICAgV1RGOjpzdG9yZVN0b3Jl
RmVuY2UoKTsKKyNpZiBFTkFCTEUoQ09NUEFSRV9BTkRfU1dBUCkKKyAgICAgICAgZG8geworICAg
ICAgICAgICAgaWYgKG1fcHRyKSB7CisgICAgICAgICAgICAgICAgZGVsZXRlIG5ld09iamVjdDsK
KyAgICAgICAgICAgICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0gd2hpbGUgKCFXVEY6OndlYWtDb21wYXJl
QW5kU3dhcCgmbV9wdHIsIG51bGxwdHIsIG5ld09iamVjdCkpOworI2Vsc2UKKyAgICAgICAgbV9w
dHIgPSBuZXdPYmplY3Q7CisjZW5kaWYKKyAgICB9CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1
c2luZyBXVEY6Ok93blB0cjsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvU3BlY3RydW0uaAkocmV2aXNpb24gMTcyMTc3KQorKysg
U291cmNlL1dURi93dGYvU3BlY3RydW0uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMjIgKzMyLDMxIEBA
CiAKIG5hbWVzcGFjZSBXVEYgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgordGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgQ291bnRlclR5cGUgPSB1bnNpZ25lZD4KIGNsYXNzIFNwZWN0cnVt
IHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9u
Zz46Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCB1
bnNpZ25lZCBsb25nPjo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CisgICAgdHlwZWRl
ZiB0eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6aXRlcmF0b3IgaXRlcmF0b3I7Cisg
ICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPFQsIENPdW50ZXJUeXBlPjo6Y29uc3RfaXRlcmF0
b3IgY29uc3RfaXRlcmF0b3I7CiAgICAgCiAgICAgU3BlY3RydW0oKSB7IH0KICAgICAKLSAgICB2
b2lkIGFkZChjb25zdCBUJiBrZXksIHVuc2lnbmVkIGxvbmcgY291bnQgPSAxKQorICAgIHZvaWQg
YWRkKGNvbnN0IFQmIGtleSwgQ291bnRlclR5cGUgY291bnQgPSAxKQogICAgIHsKLSAgICAgICAg
dHlwZW5hbWUgSGFzaE1hcDxULCB1bnNpZ25lZCBsb25nPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1f
bWFwLmFkZChrZXksIGNvdW50KTsKKyAgICAgICAgaWYgKCFjb3VudCkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgdHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46OkFkZFJlc3Vs
dCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBjb3VudCk7CiAgICAgICAgIGlmICghcmVzdWx0Lmlz
TmV3RW50cnkpCiAgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlICs9IGNvdW50Owog
ICAgIH0KICAgICAKLSAgICB1bnNpZ25lZCBsb25nIGdldChjb25zdCBUJiBrZXkpIGNvbnN0Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KKyAgICB2b2lkIGFkZEFsbChjb25zdCBTcGVjdHJ1bTxU
LCBVPiYgb3RoZXJTcGVjdHJ1bSkKKyAgICB7CisgICAgICAgIGZvciAoYXV0byBlbnRyeSA6IG90
aGVyU3BlY3RydW0pCisgICAgICAgICAgICBhZGQoZW50cnkua2V5LCBlbnRyeS5jb3VudCk7Cisg
ICAgfQorICAgIAorICAgIENvdW50ZXJUeXBlIGdldChjb25zdCBUJiBrZXkpIGNvbnN0CiAgICAg
ewogICAgICAgICBjb25zdF9pdGVyYXRvciBpdGVyID0gbV9tYXAuZmluZChrZXkpOwogICAgICAg
ICBpZiAoaXRlciA9PSBtX21hcC5lbmQoKSkKQEAgLTYzLDcgKzcyLDcgQEAgcHVibGljOgogICAg
IHN0cnVjdCBLZXlBbmRDb3VudCB7CiAgICAgICAgIEtleUFuZENvdW50KCkgeyB9CiAgICAgICAg
IAotICAgICAgICBLZXlBbmRDb3VudChjb25zdCBUJiBrZXksIHVuc2lnbmVkIGxvbmcgY291bnQp
CisgICAgICAgIEtleUFuZENvdW50KGNvbnN0IFQmIGtleSwgQ291bnRlclR5cGUgY291bnQpCiAg
ICAgICAgICAgICA6IGtleShrZXkpCiAgICAgICAgICAgICAsIGNvdW50KGNvdW50KQogICAgICAg
ICB7CkBAIC04MCw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIFQga2V5
OwotICAgICAgICB1bnNpZ25lZCBsb25nIGNvdW50OworICAgICAgICBDb3VudGVyVHlwZSBjb3Vu
dDsKICAgICB9OwogICAgIAogICAgIC8vIFJldHVybnMgYSBsaXN0IG9yZGVyZWQgZnJvbSBsb3dl
c3QtY291bnQgdG8gaGlnaGVzdC1jb3VudC4KQEAgLTk0LDggKzEwMywxOCBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBsaXN0OwogICAgIH0KICAgICAKKyAgICB2b2lkIGNsZWFyKCkgeyBtX21h
cC5jbGVhcigpOyB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICB2
b2lkIHJlbW92ZUlmKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgeworICAgICAgICBtX21h
cC5yZW1vdmVJZihbZnVuY3Rvcl0gKEhhc2hNYXA8VCwgQ291bnRlclR5cGU+OjpLZXlWYWx1ZVBh
aXJUeXBlJiBwYWlyKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0b3IoS2V5QW5kQ291
bnQocGFpci5rZXksIHBhaXIudmFsdWUpKTsKKyAgICAgICAgICAgIH0pOworICAgIH0KKyAgICAK
IHByaXZhdGU6Ci0gICAgSGFzaE1hcDxULCB1bnNpZ25lZCBsb25nPiBtX21hcDsKKyAgICBIYXNo
TWFwPFQsIENvdW50ZXJUeXBlPiBtX21hcDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdURgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236721</attachid>
            <date>2014-08-16 12:19:34 -0700</date>
            <delta_ts>2014-08-16 16:58:35 -0700</delta_ts>
            <desc>getting there</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>89981</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZS5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIENhbGxFZGdlX2gKKyNkZWZpbmUgQ2FsbEVkZ2VfaAor
CisjaW5jbHVkZSAiQ2FsbFZhcmlhbnQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIENh
bGxFZGdlIHsKK3B1YmxpYzoKKyAgICBDYWxsRWRnZSgpOworICAgIENhbGxFZGdlKENhbGxWYXJp
YW50IGNhbGxlZSwgQ2FsbEVkZ2VDb3VudFR5cGUgY291bnQpOworICAgIAorICAgIGJvb2wgb3Bl
cmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fY2FsbGVlOyB9CisgICAgCisgICAgQ2FsbFZhcmlh
bnQgY2FsbGVlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsZWU7IH0KKyAgICBDYWxsRWRnZUNvdW50
VHlwZSBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnQ7IH0KKyAgICAKK3B1YmxpYzoKKyAg
ICBDYWxsVmFyaWFudCBtX2NhbGxlZTsKKyAgICBDYWxsRWRnZUNvdW50VHlwZSBtX2NvdW50Owor
fTsKKworaW5saW5lIENhbGxFZGdlOjpDYWxsRWRnZShDYWxsVmFyaWFudCBjYWxsZWUsIGZsb2F0
IGNvdW50KQorICAgIDogbV9jYWxsZWUoY2FsbGVlKQorICAgICwgbV9jb3VudChjb3VudCkKK3sK
K30KKworaW5saW5lIENhbGxFZGdlOjpDYWxsRWRnZSgpCisgICAgOiBDYWxsRWRnZShDYWxsVmFy
aWFudCgpLCAwKQoreworfQorCit0eXBlZGVmIFZlY3RvcjxDYWxsRWRnZSwgMT4gQ2FsbEVkZ2VM
aXN0OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIENhbGxFZGdlX2gKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmls
ZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bEVkZ2VQcm9maWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyMyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQ2FsbEVkZ2VQcm9maWxlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitW
ZWN0b3I8Q2FsbEVkZ2U+IENhbGxFZGdlUHJvZmlsZTo6Y2FsbEVkZ2VzKCkgY29uc3QKK3sKKyAg
ICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIAorICAgIENhbGxFZGdl
TGlzdCByZXN1bHQ7CisgICAgCisgICAgQ2FsbFZhcmlhbnQgcHJpbWFyeUNhbGxlZSA9IG1fcHJp
bWFyeUNhbGxlZTsKKyAgICBmbG9hdCBudW1DYWxsc1RvUHJpbWFyeSA9IG1fbnVtQ2FsbHNUb1By
aW1hcnk7CisgICAgLy8gRGVmZW5kIGFnYWluc3QgcmFjZXMuIFRoZXNlIGZpZWxkcyBhcmUgbW9k
aWZpZWQgYnkgdGhlIGxvZyBwcm9jZXNzb3Igd2l0aG91dCBsb2NraW5nLgorICAgIGlmICghIXBy
aW1hcnlDYWxsZWUgJiYgbnVtQ2FsbHNUb1ByaW1hcnkpCisgICAgICAgIHJlc3VsdC5hcHBlbmQo
Q2FsbEVkZ2UocHJpbWFyeUNhbGxlZSwgbnVtQ2FsbHNUb1ByaW1hcnkpKTsKKyAgICAKKyAgICBp
ZiAobV9vdGhlckNhbGxlZXMpIHsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgaWYgdGhlIHBy
aW1hcnkgdGhyZWFkIGhhZCBqdXN0IGNyZWF0ZWQgYSBtX290aGVyQ2FsbGVzIHdoaWxlIGxvZwor
ICAgICAgICAvLyBwcm9jZXNzaW5nLCB3ZSBzZWUgYSBjb25zaXN0ZW50bHkgY3JlYXRlZCBvbmUu
IFRoZSBsb2NrIGJlaW5nIGhlbGQgaXMgaW5zdWZmaWNpZW50IGZvcgorICAgICAgICAvLyB0aGlz
LCBzaW5jZSB0aGUgbG9nIHByb2Nlc3NvciB3aWxsIG9ubHkgZ3JhYiB0aGUgbG9jayB3aGVuIG1l
cmdpbmcgdGhlIHNlY29uZGFyeQorICAgICAgICAvLyBzcGVjdHJ1bSBpbnRvIHRoZSBwcmltYXJ5
IG9uZSBidXQgbWF5IHN0aWxsIGNyZWF0ZSB0aGUgZGF0YSBzdHJ1Y3R1cmUgd2l0aG91dCBob2xk
aW5nCisgICAgICAgIC8vIGxvY2tzLgorICAgICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKKyAg
ICAgICAgZm9yIChDYWxsRWRnZSBlbnRyeSA6IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZCkK
KyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZW50cnkpOworICAgIH0KKyAgICAKKyAgICBzdGQ6
OnNvcnQocmVzdWx0LmJlZ2luKCksIHJlc3VsdC5lbmQoKSwgW10gKGNvbnN0IENhbGxFZGdlJiBh
LCBjb25zdCBDYWxsRWRnZSYgYikgLT4gYm9vbCB7CisgICAgICAgICAgICByZXR1cm4gYS5jb3Vu
dCgpID4gYi5jb3VudCgpOworICAgICAgICB9KTsKKyAgICAKKyAgICBpZiAocmVzdWx0LnNpemUo
KSA+PSAyKQorICAgICAgICBBU1NFUlQocmVzdWx0WzBdLmNvdW50KCkgPiByZXN1bHQubGFzdCgp
LmNvdW50KCkpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Zsb2F0IENhbGxFZGdl
UHJvZmlsZTo6bnVtQ2FsbHNUb0tub3duQ2VsbHMoKSBjb25zdAoreworICAgIHVuc2lnbmVkIHJl
c3VsdCA9IDA7CisgICAgZm9yIChDYWxsRWRnZSBlZGdlIDogY2FsbEVkZ2VzKCkpCisgICAgICAg
IHJlc3VsdCArPSBlZGdlLmNvdW50KCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGlj
IGJvb2wgd29ydGhEZXNwZWNpZnlpbmcoY29uc3QgQ2FsbFZhcmlhbnQmIHZhcmlhbnQpCit7Cisg
ICAgcmV0dXJuICFIZWFwOjppc01hcmtlZCh2YXJpYW50LnJhd0NhbGxlZUNlbGwoKSkKKyAgICAg
ICAgJiYgSGVhcDo6aXNNYXJrZWQodmFyaWFudC5kZXNwZWNpZmllZENsb3N1cmUoKS5yYXdDYWxs
ZWVDZWxsKCkpOworfQorCitib29sIENhbGxFZGdlUHJvZmlsZTo6d29ydGhEZXNwZWNpZnlpbmco
KQoreworICAgIGlmIChtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAKKyAgICBpZiAoISFtX3ByaW1hcnlDYWxsZWUgJiYgIXdvcnRoRGVzcGVjaWZ5
aW5nKG1fcHJpbWFyeUNhbGxlZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBp
ZiAobV9vdGhlckNhbGxlZXMpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9vdGhlckNh
bGxlZXMtPm1fcHJvY2Vzc2VkLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgaWYgKCF3b3J0
aERlc3BlY2lmeWluZyhtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCkpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDYWxsRWRnZVByb2ZpbGU6OnZpc2l0V2VhaygpCit7
CisgICAgaWYgKCFtX3ByaW1hcnlDYWxsZWUgJiYgIW1fb3RoZXJDYWxsZWVzKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAg
ICAKKyAgICAvLyBTZWUgaWYgYW55dGhpbmcgaXMgZGVhZCBhbmQgaWYgdGhhdCBjYW4gYmUgcmVj
dGlmaWVkIGJ5IGRlc3BlY2lmeWluZy4KKyAgICBpZiAod29ydGhEZXNwZWNpZnlpbmcoKSkgewor
ICAgICAgICBDYWxsU3BlY3RydW0gbmV3U3BlY3RydW07CisgICAgICAgIAorICAgICAgICBpZiAo
ISFtX3ByaW1hcnlDYWxsZWUpCisgICAgICAgICAgICBuZXdTcGVjdHJ1bS5hZGQobV9wcmltYXJ5
Q2FsbGVlLmRlc3BlY2lmaWVkQ2xvc3VyZSgpLCBtX251bUNhbGxzVG9QcmltYXJ5KTsKKyAgICAg
ICAgCisgICAgICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLnNpemUoKTsgaS0tOykgeworICAg
ICAgICAgICAgICAgIG5ld1NwZWN0cnVtLmFkZCgKKyAgICAgICAgICAgICAgICAgICAgbV9vdGhl
ckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNhbGxlZSgpLmRlc3BlY2lmaWVkQ2xvc3VyZSgpLAor
ICAgICAgICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQo
KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgVmVjdG9yPENhbGxTcGVjdHJ1bTo6S2V5QW5kQ291bnQ+IGxpc3QgPSBuZXdT
cGVjdHJ1bS5idWlsZExpc3QoKTsKKyAgICAgICAgQVNTRVJUKGxpc3Quc2l6ZSgpKTsKKyAgICAg
ICAgbV9wcmltYXJ5Q2FsbGVlID0gbGlzdC5sYXN0KCkua2V5OworICAgICAgICBtX251bUNhbGxz
VG9QcmltYXJ5ID0gbGlzdC5sYXN0KCkuY291bnQ7CisgICAgICAgIAorICAgICAgICBBU1NFUlQo
ISFtX290aGVyQ2FsbGVlcyA9PSAobGlzdC5zaXplKCkgPj0gMikpOworICAgICAgICBpZiAobV9v
dGhlckNhbGxlZXMpIHsKKyAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5j
bGVhcigpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbGlzdC5zaXplKCkgLSAxOyBp
LS07KQorICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5hcHBlbmQo
Q2FsbEVkZ2UobGlzdFtpXS5rZXksIGxpc3RbaV0uY291bnQpKTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgbV9jbG9zdXJlc0FyZURlc3BlY2lmaWVkID0gdHJ1ZTsKKyAgICAgICAgCisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKCEhbV9wcmltYXJ5Q2FsbGVlICYm
ICFIZWFwOjppc01hcmtlZChtX3ByaW1hcnlDYWxsZWUucmF3Q2FsbGVlQ2VsbCgpKSkgeworICAg
ICAgICBtX3ByaW1hcnlDYWxsZWUgPSBudWxscHRyOworICAgICAgICBtX251bUNhbGxzVG9Vbmtu
b3duQ2VsbCArPSBtX251bUNhbGxzVG9QcmltYXJ5OworICAgICAgICBtX251bUNhbGxzVG9Qcmlt
YXJ5ID0gMDsKKyAgICB9CisgICAgCisgICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6
ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChIZWFwOjppc01hcmtlZChtX290aGVyQ2FsbGVl
cy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCkucmF3Q2FsbGVlQ2VsbCgpKSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbV9udW1DYWxsc1RvVW5r
bm93bkNlbGwgKz0gbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNvdW50KCk7CisgICAg
ICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaS0tXSA9IG1fb3RoZXJDYWxsZWVz
LT5tX3Byb2Nlc3NlZC5sYXN0KCk7CisgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9j
ZXNzZWQucmVtb3ZlTGFzdCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBPbmx5
IGV4aXN0cyB3aGlsZSB3ZSBhcmUgcHJvY2Vzc2luZyB0aGUgbG9nLgorICAgICAgICBSRUxFQVNF
X0FTU0VSVCghbV9vdGhlckNhbGxlZXMtPm1fc2Vjb25kYXJ5KTsKKyAgICB9Cit9CisKK3ZvaWQg
Q2FsbEVkZ2VQcm9maWxlOjphZGRTbG93KENhbGxWYXJpYW50IGNhbGxlZSwgQ2FsbEVkZ2VQcm9m
aWxlVmVjdG9yJiBtZXJnZUJhY2tMb2cpCit7CisgICAgLy8gVGhpcyBleGlzdHMgdG8gaGFuZGxl
IGNhc2VzIHdoZXJlIHRoZSBzcGVjdHJ1bSB3YXNuJ3QgY3JlYXRlZCB5ZXQsIG9yIHdlJ3JlIHN0
b3JpbmcgdG8gYQorICAgIC8vIHBhcnRpY3VsYXIgc3BlY3RydW0gZm9yIHRoZSBmaXJzdCB0aW1l
IGR1cmluZyBhIGxvZyBwcm9jZXNzaW5nIGl0ZXJhdGlvbi4KKyAgICAKKyAgICBpZiAoIW1fb3Ro
ZXJDYWxsZWVzKSB7CisgICAgICAgIG1fb3RoZXJDYWxsZWVzID0gc3RkOjptYWtlX3VucWl1ZTxT
ZWNvbmRhcnk+KCk7CisgICAgICAgIC8vIElmIGEgY29tcGlsZXIgdGhyZWFkIG5vdGljZXMgdGhl
IG1fb3RoZXJDYWxsZWVzIGJlaW5nIG5vbi1udWxsLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZQorICAg
ICAgICAvLyB0aGF0IGl0IHNlZXMgYSBmdWxseSBjcmVhdGVkIG9uZS4KKyAgICAgICAgV1RGOjpz
dG9yZVN0b3JlRmVuY2UoKTsKKyAgICB9CisgICAgCisgICAgaWYgKCFtX290aGVyQ2FsbGVlcy0+
bV90ZW1wb3JhcnlTcGVjdHJ1bSkgeworICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3Jh
cnlTcGVjdHJ1bSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbFNwZWN0cnVtPigpOworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpLS07
KSB7CisgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+YWRk
KAorICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jYWxsZWUo
KSwKKyAgICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQo
KSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlz
IGlzIHRoZSBmaXJzdCB0aW1lIHdlJ3JlIHNlZWluZyB0aGlzIHByb2ZpbGUgZHVyaW5nIHRoaXMg
bG9nCisgICAgICAgIC8vIHByb2Nlc3NpbmcgaXRlcmF0aW9uLgorICAgICAgICBtZXJnZUJhY2tM
b2cuYXBwZW5kKHRoaXMpOworICAgIH0KKyAgICAKKyAgICBtX290aGVyQ2FsbGVlcy0+bV9zZWNv
bmRhcnktPmFkZChjYWxsZWUpOworfQorCit2b2lkIENhbGxFZGdlUHJvZmlsZTo6bWVyZ2VCYWNr
KCkKK3sKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIAorICAg
IEFTU0VSVChtX290aGVyQ2FsbGVlcyk7CisgICAgQVNTRVJUKG1fb3RoZXJDYWxsZWVzLT5tX3Rl
bXBvcmFyeVNwZWN0cnVtKTsKKyAgICAKKyAgICBpZiAoISFtX3ByaW1hcnlDYWxsZWUpCisgICAg
ICAgIG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5hZGQobV9wcmltYXJ5Q2Fs
bGVlLCBtX251bUNhbGxzVG9QcmltYXJ5KTsKKyAgICAKKyAgICBpZiAoIW1fY2xvc3VyZXNBcmVE
ZXNwZWNpZmllZCkgeworICAgICAgICBDYWxsU3BlY3RydW0gbmV3U3BlY3RydW07CisgICAgICAg
IGZvciAoYXV0byBlbnRyeSA6ICptX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSkK
KyAgICAgICAgICAgIG5ld1NwZWN0cnVtLmFkZChlbnRyeS5rZXkuZGVzcGVjaWZpZWRDbG9zdXJl
KCksIGVudHJ5LmNvdW50KTsKKyAgICAgICAgCisgICAgICAgIGlmIChuZXdTcGVjdHJ1bS5zaXpl
KCkgPCBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+c2l6ZSgpKQorICAgICAg
ICAgICAgKm1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtID0gbmV3U3BlY3RydW07
CisgICAgICAgIAorICAgICAgICBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQgPSB0cnVlOworICAg
IH0KKyAgICAKKyAgICBWZWN0b3I8Q2FsbFNwZWN0cnVtOjpLZXlBbmRDb3VudD4gbGlzdCA9IG1f
b3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5idWlsZExpc3QoKTsKKyAgICBtX290
aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSA9IG51bGxwdHI7CisgICAgCisgICAgbV9w
cmltYXJ5Q2FsbGVlID0gbGlzdC5sYXN0KCkua2V5OworICAgIG1fbnVtQ2FsbHNUb1ByaW1hcnkg
PSBsaXN0Lmxhc3QoKS5jb3VudDsKKyAgICBsaXN0LnJlbW92ZUxhc3QoKTsKKyAgICAKKyAgICBt
X290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuY2xlYXIoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGNv
dW50ID0gbWF4S25vd25DYWxsZWVzOyBjb3VudC0tICYmICFsaXN0LmlzRW1wdHkoKTspIHsKKyAg
ICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLmFwcGVuZChDYWxsRWRnZShsaXN0Lmxh
c3QoKS5rZXksIGxpc3QubGFzdCgpLmNvdW50KSk7CisgICAgICAgIGxpc3QucmVtb3ZlTGFzdCgp
OworICAgIH0KKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBsaXN0LnNpemUoKTsgaS0tOykK
KyAgICAgICAgbV9udW1DYWxsc1RvVW5rbm93bkNlbGwgKz0gbGlzdFtpXS5jb3VudDsKK30KKwor
dm9pZCBDYWxsRWRnZVByb2ZpbGU6OmZhZGVCeUhhbGYoKQoreworICAgIG1fbnVtQ2FsbHNUb1By
aW1hcnkgPj49IDE7CisgICAgbV9udW1DYWxsc1RvTm90Q2VsbCA+Pj0gMTsKKyAgICBtX251bUNh
bGxzVG9Vbmtub3duQ2VsbCA+Pj0gMTsKKyAgICBtX3RvdGFsQ291bnQgPj49IDE7CisgICAgCisg
ICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fb3Ro
ZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIG1fb3Ro
ZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXSA9IENhbGxFZGdlKAorICAgICAgICAgICAgICAgIG1f
b3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jYWxsZWUoKSwKKyAgICAgICAgICAgICAgICBt
X290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQoKSA+PiAxKTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgaWYgKG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVt
KSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiAqbV9vdGhlckNhbGxlZXMtPm1fdGVt
cG9yYXJ5U3BlY3RydW0pCisgICAgICAgICAgICAgICAgZW50cnkuY291bnQgPj49IDE7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK0NhbGxFZGdlTG9nOjpDYWxsRWRnZUxvZygpCisgICAgOiBtX3Nj
YWxlZExvZ0luZGV4KGxvZ1NpemUgKiBzaXplb2YoRW50cnkpKQoreworfQorCitDYWxsRWRnZUxv
Zzo6fkNhbGxFZGdlTG9nKCkgeyB9CisKKyNpZiBFTkFCTEUoSklUKQorCitleHRlcm4gIkMiIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2coQ2FsbEVkZ2VMb2cq
KSBXVEZfSU5URVJOQUw7CitleHRlcm4gIkMiIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
cm9jZXNzQ2FsbEVkZ2VMb2coQ2FsbEVkZ2VMb2cqIGxvZykKK3sKKyAgICBsb2ctPnByb2Nlc3NM
b2coKTsKK30KKwordm9pZCBDYWxsRWRnZUxvZzo6ZW1pdExvZ0NvZGUoQ0NhbGxIZWxwZXJzJiBq
aXQsIENhbGxFZGdlUHJvZmlsZSYgcHJvZmlsZSwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncykKK3sK
KyAgICBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50cyA9IDE7CisgICAgCisgICAgR1BS
UmVnIHNjcmF0Y2hHUFI7CisgICAgaWYgKCFjYWxsZWVSZWdzLnVzZXMoR1BSSW5mbzo6cmVnVDAp
KQorICAgICAgICBzY3JhdGNoR1BSID0gR1BSSW5mbzo6cmVnVDA7CisgICAgZWxzZSBpZiAoIWNh
bGxlZVJlZ3MudXNlcyhHUFJJbmZvOjpyZWdUMSkpCisgICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJ
bmZvOjpyZWdUMTsKKyAgICBlbHNlCisgICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJbmZvOjpyZWdU
MjsKKyAgICAKKyAgICBqaXQubG9hZDMyKCZtX3NjYWxlZExvZ0luZGV4LCBzY3JhdGNoR1BSKTsK
KyAgICAKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgb2sgPSBqaXQuYnJhbmNoVGVzdDMyKENDYWxs
SGVscGVyczo6Tm9uWmVybywgc2NyYXRjaEdQUik7CisgICAgCisgICAgQVNTRVJUKHN0YWNrQWxp
Z25tZW50UmVnaXN0ZXJzKCkgPj0gMSArIG51bWJlck9mQXJndW1lbnRzKTsKKyAgICAKKyAgICBq
aXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdGFja0FsaWdubWVudEJ5dGVz
KCkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAKKyAgICBqaXQu
c3RvcmVWYWx1ZShjYWxsZWVSZWdzLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJz
OjpzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgaml0LnNldHVw
QXJndW1lbnRzKGNhbGxlZVJlZ3MpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2cpLCBHUFJJbmZvOjpub25BcmdHUFIw
KTsKKyAgICBqaXQuY2FsbChzY3JhdGNoKTsKKyAgICBqaXQubG9hZFZhbHVlKENDYWxsSGVscGVy
czo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzaXplb2YoSlNW
YWx1ZSkpLCBjYWxsZWVSZWdzKTsKKyAgICAKKyAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihzdGFja0FsaWdubWVudEJ5dGVzKCkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKKyAgICAKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihsb2dTaXplICogc2l6ZW9mKEVudHJ5KSksIHNjcmF0Y2hHUFIpOworICAgIG9rLmxp
bmsoJmppdCk7CisKKyAgICBqaXQuc3ViMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2l6
ZW9mKEVudHJ5KSksIHNjcmF0Y2hHUFIpOworICAgIGppdC5zdG9yZTMyKHNjcmF0Y2hHUFIsICZt
X3NjYWxlZExvZ0luZGV4KTsKKyAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihtX2xvZyksIHNjcmF0Y2hHUFIpOworICAgIGppdC5zdG9yZVZhbHVlKGNhbGxlZVJlZ3Ms
IENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW50cnks
IG1fdmFsdWUpKSk7CisgICAgaml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cigmcHJvZmlsZSksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZG
U0VUT0YoRW50cnksIG1fcHJvZmlsZSkpKTsKK30KKwordm9pZCBDYWxsRWRnZUxvZzo6ZW1pdExv
Z0NvZGUoCisgICAgQ0NhbGxIZWxwZXJzJiBqaXQsIE93blB0cjxDYWxsRWRnZVByb2ZpbGU+JiBw
cm9maWxlUG9pbnRlciwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncykKK3sKKyAgICBwcm9maWxlUG9p
bnRlci5jcmVhdGVUcmFuc2FjdGlvbmFsbHkoKTsKKyAgICBlbWl0TG9nQ29kZShqaXQsICpwcm9m
aWxlUG9pbnRlciwgY2FsbGVlUmVncyk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCit2
b2lkIENhbGxFZGdlTG9nOjpwcm9jZXNzTG9nKCkKK3sKKyAgICBDb25jdXJyZW50SklUTG9ja2Vy
IGxvY2tlcihtX2xvY2spOworICAgIAorICAgIEFTU0VSVCghKG1fc2NhbGVkTG9nSW5kZXggJSBz
aXplb2YoRW50cnkpKSk7CisgICAgCisgICAgQ2FsbEVkZ2VQcm9maWxlVmVjdG9yIG1lcmdlQmFj
a0xvZzsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3NjYWxlZExvZ0luZGV4IC8gc2l6
ZW9mKEVudHJ5KTsgaSA8IGxvZ1NpemU7ICsraSkKKyAgICAgICAgbV9sb2dbaV0ubV9wcm9maWxl
LT5hZGQobV9sb2dbaV0ubV92YWx1ZSwgbWVyZ2VCYWNrTG9nKTsKKyAgICAKKyAgICBtX3NjYWxl
ZExvZ0luZGV4ID0gbG9nU2l6ZSAqIHNpemVvZihFbnRyeSk7CisgICAgCisgICAgZm9yICh1bnNp
Z25lZCBpID0gbWVyZ2VCYWNrTG9nLnNpemUoKTsgaS0tOykKKyAgICAgICAgbWVyZ2VCYWNrTG9n
W2ldLT5tZXJnZUJhY2soKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDYWxsRWRnZVByb2ZpbGVfaAorI2Rl
ZmluZSBDYWxsRWRnZVByb2ZpbGVfaAorCisjaW5jbHVkZSAiQ2FsbEVkZ2UuaCIKKyNpbmNsdWRl
ICJDYWxsVmFyaWFudC5oIgorI2luY2x1ZGUgIkNvbmN1cnJlbnRKSVRMb2NrLmgiCisjaW5jbHVk
ZSAiSlNDZWxsLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCit0eXBlZGVmIHVpbnQxNl90IENhbGxF
ZGdlQ291bnRUeXBlOworCitjbGFzcyBDYWxsRWRnZVByb2ZpbGU7Cit0eXBlZGVmIFZlY3RvcjxD
YWxsRWRnZVByb2ZpbGUqLCAxMD4gQ2FsbEVkZ2VQcm9maWxlVmVjdG9yOworCitjbGFzcyBDYWxs
RWRnZVByb2ZpbGUgeworcHVibGljOgorICAgIENhbGxFZGdlUHJvZmlsZShDb2RlQmxvY2sqIGNv
ZGVCbG9jayk7CisgICAgCisgICAgdm9pZCBhZGQoSlNWYWx1ZSwgQ2FsbEVkZ2VQcm9maWxlVmVj
dG9yJiBtZXJnZUJhY2tMb2cpOworICAgIAorICAgIHVuc2lnbmVkIG51bUNhbGxzVG9Ob3RDZWxs
KCkgY29uc3QgeyByZXR1cm4gbV9udW1DYWxsc1RvTm90Q2VsbDsgfQorICAgIHVuc2lnbmVkIG51
bUNhbGxzVG9Vbmtub3duQ2VsbCgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQ2FsbHNUb1Vua25vd25D
ZWxsOyB9CisgICAgdW5zaWduZWQgbnVtQ2FsbHNUb0tub3duQ2VsbHMoKSBjb25zdDsKKyAgICAK
KyAgICAvLyBDYWxsIHdoaWxlIGhvbGRpbmcgdGhlIG93bmluZyBDb2RlQmxvY2sncyBsb2NrLgor
ICAgIENhbGxFZGdlTGlzdGUgY2FsbEVkZ2VzKCkgY29uc3Q7CisgICAgCisgICAgdm9pZCB2aXNp
dFdlYWsoKTsKKyAgICAKK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heEtu
b3duQ2FsbGVlcyA9IDU7CisgICAgCisgICAgYm9vbCB3b3J0aERlc3BlY2lmeWluZygpOworICAg
IHZvaWQgYWRkU2xvdyhDYWxsVmFyaWFudCwgQ2FsbEVkZ2VQcm9maWxlVmVjdG9yJiBtZXJnZUJh
Y2tMb2cpOworICAgIHZvaWQgbWVyZ2VCYWNrKCk7CisgICAgdm9pZCBmYWRlQnlIYWxmKCk7Cisg
ICAgCisgICAgLy8gSXQncyBjaGVhcGVyIHRvIGxldCB0aGlzIGhhdmUgaXRzIG93biBsb2NrLiBJ
dCBuZWVkcyB0byBiZSBhYmxlIHRvIGZpbmQgd2hpY2ggbG9jayB0bworICAgIC8vIGxvY2suIE5v
cm1hbGx5IGl0IHdvdWxkIGxvY2sgdGhlIG93bmluZyBDb2RlQmxvY2sncyBsb2NrLCBidXQgdGhh
dCB3b3VsZCByZXF1aXJlIGEKKyAgICAvLyBwb2ludGVyLXdpZHRoIHdvcmQgdG8gcG9pbnQgYXQg
dGhlIENvZGVCbG9jay4gSGF2aW5nIHRoZSBieXRlLXNpemVkIGxvY2sgaGVyZSBpcworICAgIC8v
IGNoZWFwZXIuIEhvd2V2ZXIsIHRoaXMgbWVhbnMgdGhhdCB0aGUgcmVsYXRpb25zaGlwIHdpdGgg
dGhlIENvZGVCbG9jayBsb2NrIGlzOgorICAgIC8vIGFjcXVpcmUgdGhlIENvZGVCbG9jayBsb2Nr
IGJlZm9yZSB0aGlzIG9uZS4KKyAgICBDb25jdXJyZW50SklUTG9jayBtX2xvY2s7CisgICAgCisg
ICAgYm9vbCBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQ7CisgICAgCisgICAgQ2FsbEVkZ2VDb3Vu
dFR5cGUgbV9udW1DYWxsc1RvUHJpbWFyeTsKKyAgICBDYWxsRWRnZUNvdW50VHlwZSBtX251bUNh
bGxzVG9Ob3RDZWxsOworICAgIENhbGxFZGdlQ291bnRUeXBlIG1fbnVtQ2FsbHNUb1Vua293bkNl
bGw7CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbV90b3RhbENvdW50OworICAgIENhbGxWYXJpYW50
IG1fcHJpbWFyeUNhbGxlZTsKKyAgICAKKyAgICB0eXBlZGVmIFNwZWN0cnVtPENhbGxWYXJpYW50
LCBDYWxsRWRnZUNvdW50VHlwZT4gQ2FsbFNwZWN0cnVtOworICAgIAorICAgIHN0cnVjdCBTZWNv
bmRhcnkgeworICAgICAgICBWZWN0b3I8Q2FsbEVkZ2U+IG1fcHJvY2Vzc2VkOyAvLyBQcm9jZXNz
ZWQgYnV0IG5vdCBuZWNlc3NhcmlseSBzb3J0ZWQuCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxD
YWxsU3BlY3RydW0+IG1fdGVtcG9yYXJ5U3BlY3RydW07CisgICAgfTsKKyAgICAKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2Vjb25kYXJ5PiBtX290aGVyQ2FsbGVlczsKK307CisKK2NsYXNzIENhbGxF
ZGdlTG9nIHsKK3B1YmxpYzoKKyAgICBDYWxsRWRnZUxvZygpOworICAgIH5DYWxsRWRnZUxvZygp
OworCisjaWYgRU5BQkxFKEpJVCkgICAgCisgICAgdm9pZCBlbWl0TG9nQ29kZShDQ2FsbEhlbHBl
cnMmLCBDYWxsRWRnZVByb2ZpbGUmLCBKU1ZhbHVlUmVncyBjYWxsZWVSZWdzKTsgLy8gQXNzdW1l
cyB0aGF0IHN0YWNrIGlzIGFsaWduZWQsIGFsbCB2b2xhdGlsZSByZWdpc3RlcnMgLSBvdGhlciB0
aGFuIGNhbGxlZUdQUiAtIGFyZSBjbG9iYmVyYWJsZSwgYW5kIHRoZSBwYXJhbWV0ZXIgc3BhY2Ug
aXMgaW4gdXNlLgorICAgIAorICAgIC8vIFNhbWUgYXMgYWJvdmUgYnV0IGNyZWF0ZXMgYSBDYWxs
RWRnZVByb2ZpbGUgaW5zdGFuY2UgaWYgb25lIGRpZCBub3QgYWxyZWFkeSBleGlzdC4gRG9lcwor
ICAgIC8vIHRoaXMgaW4gYSB0aHJlYWQtc2FmZSBtYW5uZXIgYnkgY2FsbGluZyBPd25QdHI6OmNy
ZWF0ZVRyYW5zYWN0aW9uYWxseS4KKyAgICB2b2lkIGVtaXRMb2dDb2RlKENDYWxsSGVsZXBycyYs
IE93blB0cjxDYWxsRWRnZVByb2ZpbGU+JiwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncyk7CisjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKKyAgICAKKyAgICB2b2lkIHByb2Nlc3NMb2coKTsKKyAgICAKK3By
aXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBsb2dTaXplID0gMTAwMDA7CisgICAgCisgICAgc3RydWN0IEVu
dHJ5IHsKKyAgICAgICAgSlNWYWx1ZSBtX3ZhbHVlOworICAgICAgICBDYWxsRWRnZVByb2ZpbGUq
IG1fcHJvZmlsZTsKKyAgICB9OworICAgIAorICAgIHVuc2lnbmVkIG1fc2NhbGVkTG9nSW5kZXg7
CisgICAgRW50cnkgbV9sb2dbbG9nU2l6ZV07Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIENhbGxFZGdlUHJvZmlsZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZUlubGluZXMuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGVJ
bmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENhbGxFZGdlUHJvZmlsZUlu
bGluZXNfaAorI2RlZmluZSBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzX2gKKworbmFtZXNwYWNlIEpT
QyB7CisKK2lubGluZSBDYWxsRWRnZVByb2ZpbGU6OkNhbGxFZGdlUHJvZmlsZSgpCisgICAgOiBt
X2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQoZmFsc2UpCisgICAgLCBtX251bUNhbGxzVG9QcmltYXJ5
KDApCisgICAgLCBtX251bUNhbGxzVG9Ob3RDZWxsKDApCisgICAgLCBtX251bUNhbGxzVG9EZWxl
dGVkQ2VsbCgwKQorICAgICwgbV90b3RhbENvdW50KDApCisgICAgLCBtX3ByaW1hcnlDYWxsZWUo
bnVsbHB0cikKK3sKK30KKworQUxXQVlTX0lOTElORSBDYWxsRWRnZVByb2ZpbGU6OmFkZChKU1Zh
bHVlIHZhbHVlLCBDYWxsRWRnZVByb2ZpbGVWZWN0b3ImIG1lcmdlQmFja0xvZykKK3sKKyAgICB1
bnNpZ25lZCBuZXdUb3RhbENvdW50ID0gbV90b3RhbENvdW50ICsgMTsKKyAgICBpZiAoVU5MSUtF
TFkoIW5ld1RvdGFsQ291bnQpKSB7CisgICAgICAgIGZhZGVCeUhhbGYoKTsgLy8gVGFja2xlIG92
ZXJmbG93cyBieSBkaXZpZGluZyBhbGwgY291bnRzIGJ5IHR3by4KKyAgICAgICAgbmV3VG90YWxD
b3VudCA9IG1fdG90YWxDb3VudCArIDE7CisgICAgfQorICAgIEFTU0VSVChuZXdUb3RhbENvdW50
KTsKKyAgICBtX3RvdGFsQ291bnQgPSBuZXdUb3RhbENvdW50OworICAgIAorICAgIGlmIChVTkxJ
S0VZKCF2YWx1ZS5pc0NlbGwoKSkpIHsKKyAgICAgICAgbV9udW1DYWxsc1RvTm90Q2VsbCsrOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ2FsbFZhcmlhbnQgY2FsbGVlID0gQ2FsbFZh
cmlhbnQodmFsdWUuYXNDZWxsKCkpOworICAgIAorICAgIGlmIChtX2Nsb3N1cmVzQXJlRGVzcGVj
aWZpZWQpCisgICAgICAgIGNhbGxlZSA9IGNhbGxlZS5kZXNwZWNpZmllZENsb3N1cmUoKTsKKyAg
ICAgICAgCisgICAgaWYgKFVOTElLRUxZKCFtX3ByaW1hcnlDYWxsZWUpKSB7CisgICAgICAgIG1f
cHJpbWFyeUNhbGxlZSA9IGNhbGxlZTsKKyAgICAgICAgbV9udW1DYWxsc1RvUHJpbWFyeSA9IDE7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAorICAgIGlmIChMSUtFTFkobV9wcmlt
YXJ5Q2FsbGVlID09IGNhbGxlZSkpIHsKKyAgICAgICAgbV9udW1DYWxsc1RvUHJpbWFyeSsrOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBpZiAoVU5MSUtFTFkoIW1fb3Ro
ZXJDYWxsZWVzKSkgeworICAgICAgICBhZGRTbG93KGNhbGxlZSwgbWVyZ2VCYWNrTG9nKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAgQ2FsbFNwZWN0cnVtKiBzZWNvbmRh
cnkgPSBtX290aGVyQ2FsbGVlcy0+bV9zZWNvbmRhcnkuZ2V0KCk7CisgICAgaWYgKCFzZWNvbmRh
cnkpIHsKKyAgICAgICAgYWRkU2xvdyhjYWxsZWUsIG1lcmdlQmFja0xvZyk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgICAgIAorICAgIHNlY29uZGFyeS0+YWRkKGNhbGxlZSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ2FsbEVkZ2VQcm9maWxlSW5saW5lc19o
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0lu
Zm8uY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsMTEgQEAgdm9p
ZCBDYWxsTGlua0luZm86OnZpc2l0V2VhayhSZXBhdGNoQnVmZgogICAgIH0KICAgICBpZiAoISFs
YXN0U2VlbkNhbGxlZSAmJiAhSGVhcDo6aXNNYXJrZWQobGFzdFNlZW5DYWxsZWUuZ2V0KCkpKQog
ICAgICAgICBsYXN0U2VlbkNhbGxlZS5jbGVhcigpOworICAgIAorICAgIGlmIChjYWxsRWRnZVBy
b2ZpbGUpIHsKKyAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CisgICAgICAgIGNhbGxFZGdl
UHJvZmlsZS0+dmlzaXRXZWFrKCk7CisgICAgfQogfQogCiBDYWxsTGlua0luZm8mIENhbGxMaW5r
SW5mbzo6ZHVtbXkoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxM
aW5rSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua0luZm8uaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaWZuZGVmIENhbGxMaW5rSW5mb19oCiAjZGVmaW5lIENhbGxMaW5rSW5mb19oCiAKKyNpbmNs
dWRlICJDYWxsRWRnZVByb2ZpbGUuaCIKICNpbmNsdWRlICJDbG9zdXJlQ2FsbFN0dWJSb3V0aW5l
LmgiCiAjaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0
aW9uS2luZC5oIgpAQCAtMzMsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKKyNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTg4LDYgKzkwLDcgQEAgc3RydWN0IENhbGxMaW5rSW5mbyA6IHB1Ymxp
YyBCYXNpY1Jhd1NlbgogICAgIHVuc2lnbmVkIGNhbGxlZUdQUiA6IDg7CiAgICAgdW5zaWduZWQg
c2xvd1BhdGhDb3VudDsKICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW47CisgICAgT3duUHRyPENh
bGxFZGdlUHJvZmlsZT4gY2FsbEVkZ2VQcm9maWxlOwogCiAgICAgYm9vbCBpc0xpbmtlZCgpIHsg
cmV0dXJuIHN0dWIgfHwgY2FsbGVlOyB9CiAgICAgdm9pZCB1bmxpbmsoUmVwYXRjaEJ1ZmZlciYp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtT
dGF0dXMuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw0OCArMzgsMTUg
QEAgbmFtZXNwYWNlIEpTQyB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAK
IENhbGxMaW5rU3RhdHVzOjpDYWxsTGlua1N0YXR1cyhKU1ZhbHVlIHZhbHVlKQotICAgIDogbV9j
YWxsVGFyZ2V0KHZhbHVlKQotICAgICwgbV9leGVjdXRhYmxlKDApCi0gICAgLCBtX2NvdWxkVGFr
ZVNsb3dQYXRoKGZhbHNlKQorICAgIDogbV9jb3VsZFRha2VTbG93UGF0aChmYWxzZSkKICAgICAs
IG1faXNQcm92ZWQoZmFsc2UpCiB7Ci0gICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkp
CisgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkpIHsKKyAgICAgICAgbV9jb3VsZFRh
a2VTbG93UGF0aCA9IHRydWU7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgCi0gICAgaWYg
KCF2YWx1ZS5hc0NlbGwoKS0+aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkKLSAgICAgICAg
cmV0dXJuOwotICAgIAotICAgIG1fZXhlY3V0YWJsZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4odmFs
dWUuYXNDZWxsKCkpLT5leGVjdXRhYmxlKCk7Ci19Ci0KLUpTRnVuY3Rpb24qIENhbGxMaW5rU3Rh
dHVzOjpmdW5jdGlvbigpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2NhbGxUYXJnZXQgfHwgIW1fY2Fs
bFRhcmdldC5pc0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgaWYgKCFtX2Nh
bGxUYXJnZXQuYXNDZWxsKCktPmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpCi0gICAgICAg
IHJldHVybiAwOwotICAgIAotICAgIHJldHVybiBqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2FsbFRh
cmdldC5hc0NlbGwoKSk7Ci19Ci0KLUludGVybmFsRnVuY3Rpb24qIENhbGxMaW5rU3RhdHVzOjpp
bnRlcm5hbEZ1bmN0aW9uKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fY2FsbFRhcmdldCB8fCAhbV9j
YWxsVGFyZ2V0LmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBpZiAoIW1f
Y2FsbFRhcmdldC5hc0NlbGwoKS0+aW5oZXJpdHMoSW50ZXJuYWxGdW5jdGlvbjo6aW5mbygpKSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgcmV0dXJuIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0
aW9uKj4obV9jYWxsVGFyZ2V0LmFzQ2VsbCgpKTsKLX0KLQotSW50cmluc2ljIENhbGxMaW5rU3Rh
dHVzOjppbnRyaW5zaWNGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKSBjb25zdAotewot
ICAgIGlmICghbV9leGVjdXRhYmxlKQotICAgICAgICByZXR1cm4gTm9JbnRyaW5zaWM7Ci0gICAg
Ci0gICAgcmV0dXJuIG1fZXhlY3V0YWJsZS0+aW50cmluc2ljRm9yKGtpbmQpOworICAgIG1fZWRn
ZXMuYXBwZW5kKENhbGxFZGdlKHZhbHVlLmFzQ2VsbCgpLCAxKSk7CiB9CiAKIENhbGxMaW5rU3Rh
dHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KGNvbnN0IENvbmN1cnJlbnRKSVRM
b2NrZXImIGxvY2tlciwgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29k
ZUluZGV4KQpAQCAtODcsNyArNTQsNyBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6
Y29tcHV0ZUZyCiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9Q
QVJBTShieXRlY29kZUluZGV4KTsKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAocHJvZmls
ZWRCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNv
ZGVJbmRleCwgQmFkRnVuY3Rpb24pKSkgeworICAgIGlmIChwcm9maWxlZEJsb2NrLT5oYXNFeGl0
U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDZWxs
KSkpIHsKICAgICAgICAgLy8gV2UgY291bGQgZm9yY2UgdGhpcyB0byBiZSBhIGNsb3N1cmUgY2Fs
bCwgYnV0IGluc3RlYWQgd2UnbGwganVzdCBhc3N1bWUgdGhhdCBpdAogICAgICAgICAvLyB0YWtl
cyBzbG93IHBhdGguCiAgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7CkBAIC0xMzksMTAg
KzEwNiwxMCBAQCBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRhIENhbGxMaW5rU3RhCiAgICAg
CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgZXhpdFNpdGVEYXRhLm1fdGFrZXNTbG93UGF0aCA9
Ci0gICAgICAgIHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVu
dEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENhY2hlLCBleGl0aW5nSklUVHlwZSkpCisgICAg
ICAgIHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRT
aXRlKGJ5dGVjb2RlSW5kZXgsIEJhZFR5cGUsIGV4aXRpbmdKSVRUeXBlKSkKICAgICAgICAgfHwg
cHJvZmlsZWRCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUo
Ynl0ZWNvZGVJbmRleCwgQmFkRXhlY3V0YWJsZSwgZXhpdGluZ0pJVFR5cGUpKTsKICAgICBleGl0
U2l0ZURhdGEubV9iYWRGdW5jdGlvbiA9Ci0gICAgICAgIHByb2ZpbGVkQmxvY2stPmhhc0V4aXRT
aXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZEZ1bmN0
aW9uLCBleGl0aW5nSklUVHlwZSkpOworICAgICAgICBwcm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0
ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDZWxsLCBl
eGl0aW5nSklUVHlwZSkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obG9ja2VyKTsKICAgICBV
TlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CkBAIC0xNTYsNiArMTIzLDE4IEBAIENhbGxMaW5r
U3RhdHVzOjpFeGl0U2l0ZURhdGEgQ2FsbExpbmtTdGEKICNpZiBFTkFCTEUoSklUKQogQ2FsbExp
bmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoY29uc3QgQ29uY3VycmVudEpJVExv
Y2tlciYsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQogeworICAgIC8vIEFsd2F5cyB0cnVz
dCB0aGUgY2FsbCBlZGdlIHByb2ZpbGUgb3ZlciBhbnl0aGluZyBlbHNlIHNpbmNlIHRoaXMgaGFz
IHByZWNpc2UgY291bnRzLgorICAgIC8vIEl0IGNhbiBtYWtlIHRoZSBiZXN0IHBvc3NpYmxlIGRl
Y2lzaW9uIGJlY2F1c2UgaXQgbmV2ZXIgImZvcmdldHMiIHdoYXQgaGFwcGVuZWQgZm9yIGFueQor
ICAgIC8vIGNhbGwsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBmYWRpbmcgb3V0IHRoZSBjb3VudHMg
b2Ygb2xkIGNhbGxzIChmb3IgZXhhbXBsZSBpZiB0aGUKKyAgICAvLyBjb3VudGVyIHR5cGUgaXMg
MTYtYml0IHRoZW4gY2FsbHMgdGhhdCBoYXBwZW5lZCBtb3JlIHRoYW4gMl4xNiBjYWxscyBhZ28g
YXJlIGdpdmVuIGhhbGYKKyAgICAvLyB3ZWlnaHQsIGFuZCB0aGlzIGNvbXBvdW5kcyBmb3IgZXZl
cnkgMl4xNSBbc2ljXSBjYWxscyBhZnRlciB0aGF0KS4gVGhlIGNvbWJpbmF0aW9uIG9mCisgICAg
Ly8gaGlnaCBmaWRlbGl0eSBmb3IgcmVjZW50IGNhbGxzIGFuZCBmYWRpbmcgZm9yIG9sZGVyIGNh
bGxzIG1ha2VzIHRoaXMgdGhlIG1vc3QgdXNlZnVsCisgICAgLy8gbWVjaGFtaXNtIG9mIGNob29z
aW5nIGhvdyB0byBvcHRpbWl6ZSBmdXR1cmUgY2FsbHMuCisgICAgQ2FsbEVkZ2VQcm9maWxlKiBl
ZGdlUHJvZmlsZSA9IGNhbGxMaW5rSW5mby5jYWxsRWRnZVByb2ZpbGUuZ2V0KCk7CisgICAgV1RG
Ojpsb2FkTG9hZEZlbmNlKCk7CisgICAgaWYgKGVkZ2VQcm9maWxlKQorICAgICAgICByZXR1cm4g
Y29tcHV0ZUZyb21DYWxsRWRnZVByb2ZpbGUoZWRnZVByb2ZpbGUpOworICAgIAogICAgIC8vIE5v
dGUgdGhhdCBkZXNwaXRlIHJlcXVpcmluZyB0aGF0IHRoZSBsb2NrZXIgaXMgaGVsZCwgdGhpcyBj
b2RlIGlzIHJhY3kgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gdGhlIENhbGxMaW5rSW5mbzogaXQg
bWF5IGdldCBjbGVhcmVkIHdoaWxlIHRoaXMgY29kZSBydW5zISBUaGlzIGlzIGJlY2F1c2UKICAg
ICAvLyBDYWxsTGlua0luZm86OnVubGluaygpIG1heSBiZSBjYWxsZWQgZnJvbSBhIGRpZmZlcmVu
dCBDb2RlQmxvY2sgdGhhbiB0aGUgb25lIHRoYXQgb3ducwpAQCAtMTc3LDcgKzE1Niw3IEBAIENh
bGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICAgICAKICAgICBKU0Z1bmN0
aW9uKiB0YXJnZXQgPSBjYWxsTGlua0luZm8ubGFzdFNlZW5DYWxsZWUuZ2V0KCk7CiAgICAgaWYg
KCF0YXJnZXQpCi0gICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygpOworICAgICAgICByZXR1
cm4gdGFrZXNTbG93UGF0aCgpOwogICAgIAogICAgIGlmIChjYWxsTGlua0luZm8uaGFzU2VlbkNs
b3N1cmUpCiAgICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyh0YXJnZXQtPmV4ZWN1dGFibGUo
KSk7CkBAIC0xODUsMTUgKzE2NCwzMSBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6
Y29tcHV0ZUZvCiAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKHRhcmdldCk7CiB9CiAKLUNhbGxM
aW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAotICAgIGNvbnN0IENvbmN1cnJl
bnRKSVRMb2NrZXImIGxvY2tlciwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIEV4aXRTaXRl
RGF0YSBleGl0U2l0ZURhdGEpCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czpjb21wdXRl
RnJvbUNhbGxFZGdlUHJvZmlsZShDYWxsRWRnZVByb2ZpbGUqIGVkZ2VQcm9maWxlKQogewotICAg
IGlmIChleGl0U2l0ZURhdGEubV90YWtlc1Nsb3dQYXRoKQorICAgIC8vIFRvIGRvIGFueXRoaW5n
IG1lYW5pbmdmdWwsIHdlIHJlcXVpcmUgdGhhdCB0aGUgbWFqb3JpdHkgb2YgY2FsbHMgYXJlIHRv
IHNvbWV0aGluZyB3ZQorICAgIC8vIGtub3cgaG93IHRvIGhhbmRsZS4KKyAgICB1bnNpZ25lZCBu
dW1DYWxsc1RvS25vd24gPSBlZGdlUHJvZmlsZS0+bnVtQ2FsbHNUb0tub3duRWRnZXMoKTsKKyAg
ICB1bnNpZ25lZCBudW1DYWxsc1RvVW5rbm93biA9IGVkZ2VQcm9maWxlLT5udW1DYWxsc1RvTm90
Q2VsbCgpICsgZWRnZVByb2ZpbGUtPm51bUNhbGxzVG9Vbmtub3duQ2VsbCgpOworICAgIGlmIChu
dW1DYWxsc1RvS25vd24gPD0gbnVtQ2FsbHNUb1Vua25vd24pCiAgICAgICAgIHJldHVybiB0YWtl
c1Nsb3dQYXRoKCk7CiAgICAgCisgICAgQ2FsbExpbmtTdGF0dXMgcmVzdWx0OworICAgIHJlc3Vs
dC5tX2VkZ2VzID0gY2FsbEVkZ2VzLT5jYWxsRWRnZXMoKTsKKyAgICByZXN1bHQubV9jb3VsZFRh
a2VTbG93UGF0aCA9ICEhbnVtQ2FsbHNUb1Vua25vd247CisgICAgcmVzdWx0Lm1fY2FuVHJ1c3RD
b3VudHMgPSB0cnVlOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0NhbGxMaW5rU3Rh
dHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAorICAgIGNvbnN0IENvbmN1cnJlbnRKSVRM
b2NrZXImIGxvY2tlciwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIEV4aXRTaXRlRGF0YSBl
eGl0U2l0ZURhdGEpCit7CiAgICAgQ2FsbExpbmtTdGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZvcihs
b2NrZXIsIGNhbGxMaW5rSW5mbyk7CiAgICAgaWYgKGV4aXRTaXRlRGF0YS5tX2JhZEZ1bmN0aW9u
KQogICAgICAgICByZXN1bHQubWFrZUNsb3N1cmVDYWxsKCk7CisgICAgaWYgKGV4aXRTaXRlRGF0
YS5tX3Rha2VzU2xvd1BhdGgpCisgICAgICAgIHJlc3VsdC5tX2NvdWxkVGFrZVNsb3dQYXRoID0g
dHJ1ZTsKICAgICAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjU2LDYgKzI1MSwzMiBAQCBD
YWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvCiAgICAgcmV0dXJuIGNvbXB1
dGVGb3IocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBiYXNlbGluZU1h
cCk7CiB9CiAKK2Jvb2wgQ2FsbExpbmtTdGF0dXM6OmlzQ2xvc3VyZUNhbGwoKSBjb25zdAorewor
ICAgIGZvciAodW5zaWduZWQgaSA9IG1fZWRnZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIGlm
IChtX2VkZ2VzW2ldLmlzQ2xvc3VyZUNhbGwoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQ2FsbExpbmtTdGF0dXM6Om1ha2VD
bG9zdXJlQ2FsbCgpCit7CisgICAgQVNTRVJUKCFtX2lzUHJvdmVkKTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSBtX2VkZ2VzLnNpemUoKTsgaS0tOykKKyAgICAgICAgbV9lZGdlc1tpXSA9IG1fZWRn
ZXNbaV0uZGVzcGVjaWZpZWRDbG9zdXJlKCk7CisgICAgCisgICAgaWYgKCFBU1NFUlRfRElTQUJM
RUQpIHsKKyAgICAgICAgLy8gRG9pbmcgdGhpcyBzaG91bGQgbm90IGhhdmUgY3JlYXRlZCBkdXBs
aWNhdGVzLCBiZWNhdXNlIHRoZSBDYWxsRWRnZVByb2ZpbGUKKyAgICAgICAgLy8gc2hvdWxkIGRl
c3BlY2lmeSBjbG9zdXJlcyBpZiBkb2luZyBzbyB3b3VsZCByZWR1Y2UgdGhlIG51bWJlciBvZiBr
bm93biBjYWxsZWVzLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9lZGdlcy5z
aXplKCk7ICsraSkgeworICAgICAgICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFudCA9IG1fZWRnZXNb
aV0uY2FsbGVlKCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSBpICsgMTsgaiA8IG1f
ZWRnZXMuc2l6ZSgpOyArK2opCisgICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQgIT0gbV9l
ZGdlc1tqXS5jYWxsZWUoKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgQ2FsbExpbmtT
dGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBpZiAoIWlzU2V0KCkp
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0
YXR1cy5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsOSArNDYsOSBAQCBzdHJ1
Y3QgQ2FsbExpbmtJbmZvOwogY2xhc3MgQ2FsbExpbmtTdGF0dXMgewogcHVibGljOgogICAgIENh
bGxMaW5rU3RhdHVzKCkKLSAgICAgICAgOiBtX2V4ZWN1dGFibGUoMCkKLSAgICAgICAgLCBtX2Nv
dWxkVGFrZVNsb3dQYXRoKGZhbHNlKQorICAgICAgICA6IG1fY291bGRUYWtlU2xvd1BhdGgoZmFs
c2UpCiAgICAgICAgICwgbV9pc1Byb3ZlZChmYWxzZSkKKyAgICAgICAgLCBtX2NhblRydXN0Q291
bnRzKGZhbHNlKQogICAgIHsKICAgICB9CiAgICAgCkBAIC02MSwxMCArNjEsMTEgQEAgcHVibGlj
OgogICAgIAogICAgIGV4cGxpY2l0IENhbGxMaW5rU3RhdHVzKEpTVmFsdWUpOwogICAgIAotICAg
IENhbGxMaW5rU3RhdHVzKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKQotICAgICAgICA6IG1f
ZXhlY3V0YWJsZShleGVjdXRhYmxlKQorICAgIENhbGxMaW5rU3RhdHVzKENhbGxWYXJpYW50IHZh
cmlhbnQpCisgICAgICAgIDogbV9lZGdlcygxLCBDYWxsRWRnZShleGVjdXRhYmxlLCAxKSkKICAg
ICAgICAgLCBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQogICAgICAgICAsIG1faXNQcm92ZWQo
ZmFsc2UpCisgICAgICAgICwgbV9jYW5UcnVzdENvdW50cyhmYWxzZSkKICAgICB7CiAgICAgfQog
ICAgIApAQCAtMTA3LDM3ICsxMDgsMzYgQEAgcHVibGljOgogICAgIHN0YXRpYyBDYWxsTGlua1N0
YXR1cyBjb21wdXRlRm9yKAogICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBjb25zdCBD
YWxsTGlua0luZm9NYXAmLCBjb25zdCBDb250ZXh0TWFwJik7CiAgICAgCi0gICAgYm9vbCBpc1Nl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdldCB8fCBtX2V4ZWN1dGFibGUgfHwgbV9jb3Vs
ZFRha2VTbG93UGF0aDsgfQorICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxU
YXJnZXQgfHwgIW1fZXhlY3V0YWJsZS5pc0VtcHR5KCkgfHwgbV9jb3VsZFRha2VTbG93UGF0aDsg
fQogICAgIAogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7IH0K
ICAgICAKICAgICBib29sIGNvdWxkVGFrZVNsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9jb3Vs
ZFRha2VTbG93UGF0aDsgfQotICAgIGJvb2wgaXNDbG9zdXJlQ2FsbCgpIGNvbnN0IHsgcmV0dXJu
IG1fZXhlY3V0YWJsZSAmJiAhbV9jYWxsVGFyZ2V0OyB9CiAgICAgCi0gICAgSlNWYWx1ZSBjYWxs
VGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0OyB9Ci0gICAgSlNGdW5jdGlvbiog
ZnVuY3Rpb24oKSBjb25zdDsKLSAgICBJbnRlcm5hbEZ1bmN0aW9uKiBpbnRlcm5hbEZ1bmN0aW9u
KCkgY29uc3Q7Ci0gICAgSW50cmluc2ljIGludHJpbnNpY0ZvcihDb2RlU3BlY2lhbGl6YXRpb25L
aW5kKSBjb25zdDsKLSAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZXhlY3V0YWJsZTsgfQorICAgIENhbGxFZGdlTGlzdCBlZGdlcygpIGNvbnN0IHsgcmV0
dXJuIG1fZWRnZXM7IH0KKyAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9lZGdl
c3NpemUoKTsgfQorICAgIENhbGxFZGdlIGF0KHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIG1f
ZWRnZXNbaV07IH0KKyAgICBDYWxsRWRnZSBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIGNvbnN0IHsg
cmV0dXJuIGF0KGkpOyB9CiAgICAgYm9vbCBpc1Byb3ZlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNQ
cm92ZWQ7IH0KLSAgICBib29sIGNhbk9wdGltaXplKCkgY29uc3QgeyByZXR1cm4gKG1fY2FsbFRh
cmdldCB8fCBtX2V4ZWN1dGFibGUpICYmICFtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CisgICAgYm9v
bCBjYW5PcHRpbWl6ZSgpIGNvbnN0IHsgcmV0dXJuICFtX2VkZ2VzLmlzRW1wdHkoKTsgfQorICAg
IGJvb2wgY2FuVHJ1c3RDb3VudHMoKSBjb25zdCB7IHJldHVybiBtX2NhblRydXN0Q291bnRzOyB9
CisgICAgCisgICAgYm9vbCBpc0Nsb3N1cmVDYWxsKCkgY29uc3Q7IC8vIFJldHVybnMgdHJ1ZSBp
ZiBhbnkgY2FsbGVlIGlzIGEgY2xvc3VyZSBjYWxsLgogICAgIAogICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKLSAgICB2b2lkIG1ha2VDbG9zdXJlQ2Fs
bCgpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1faXNQcm92ZWQpOwotICAgICAgICAvLyBUdXJu
IHRoaXMgaW50byBhIGNsb3N1cmUgY2FsbC4KLSAgICAgICAgbV9jYWxsVGFyZ2V0ID0gSlNWYWx1
ZSgpOwotICAgIH0KKyAgICB2b2lkIG1ha2VDbG9zdXJlQ2FsbCgpOwogICAgIAogICAgIHN0YXRp
YyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRnJvbUxMSW50KGNvbnN0IENvbmN1cnJlbnRKSVRMb2Nr
ZXImLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKyNpZiBFTkFCTEUoSklU
KQorICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRnJvbUNhbGxFZGdlUHJvZmlsZShD
YWxsRWRnZVByb2ZpbGUqKTsKKyNlbmRpZgogICAgIAotICAgIEpTVmFsdWUgbV9jYWxsVGFyZ2V0
OwotICAgIEV4ZWN1dGFibGVCYXNlKiBtX2V4ZWN1dGFibGU7CisgICAgQ2FsbEVkZ2VMaXN0IG1f
ZWRnZXM7CiAgICAgYm9vbCBtX2NvdWxkVGFrZVNsb3dQYXRoOwogICAgIGJvb2wgbV9pc1Byb3Zl
ZDsKKyAgICBib29sIG1fY2FuVHJ1c3RDb3VudHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFy
aWFudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQ2FsbFZhcmlhbnQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgQ2FsbFZhcmlh
bnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBpZiAoSW50ZXJuYWxGdW5j
dGlvbiogaW50ZXJuYWxGdW5jdGlvbiA9IHRoaXMtPmludGVybmFsRnVuY3Rpb24oKSkgeworICAg
ICAgICBvdXQucHJpbnQoIkludGVybmFsRnVuY3Rpb246ICIsIEpTVmFsdWUoaW50ZXJuYWxGdW5j
dGlvbikpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChKU0Z1bmN0aW9u
KiBmdW5jdGlvbiA9IHRoaXMtPmZ1bmN0aW9uKCkpIHsKKyAgICAgICAgb3V0LnByaW50KCIoRnVu
Y3Rpb246ICIsIEpTVmFsdWUoZnVuY3Rpb24pLCAiOyBFeGVjdXRhYmxlOiAiLCAqZXhlY3V0YWJs
ZSgpLCAiKSIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIG91dC5wcmludCgi
RXhlY3V0YWJsZTogIiwgKmV4ZWN1dGFibGUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTM0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ2FsbFZhcmlhbnRfaAorI2RlZmlu
ZSBDYWxsVmFyaWFudF9oCisKKyNpbmNsdWRlICJKU0NlbGwuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIENhbGxWYXJpYW50IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBDYWxsVmFyaWFu
dChKU0NlbGwqIGNhbGxlZSA9IG51bGxwdHIpCisgICAgICAgIDogbV9jYWxsZWUoY2FsbGVlKQor
ICAgIHsKKyAgICB9CisgICAgCisgICAgQ2FsbFZhcmlhbnQoV1RGOjpIYXNoVGFibGVEZWxldGVk
VmFsdWVUeXBlKQorICAgICAgICA6IG1fY2FsbGVlKGRlbGV0ZWRUb2tlbigpKQorICAgIHsKKyAg
ICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7
IH0KKyAgICAKKyAgICAvLyBJZiB0aGlzIHZhcmlhbnQgcmVmZXJzIHRvIGEgZnVuY3Rpb24sIGNo
YW5nZSBpdCB0byByZWZlciB0byBpdHMgZXhlY3V0YWJsZS4KKyAgICBBTFdBWVNfSU5MSU5FIENh
bGxWYXJpYW50IGRlc3BlY2lmaWVkQ2xvc3VyZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAo
bV9jYWxsZWUtPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICAgICAgICAgIHJldHVybiBD
YWxsVmFyaWFudChqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2FsbGVlKS0+ZXhlY3V0YWJsZSgpKTsK
KyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAgICAKKyAgICBKU0NlbGwqIHJhd0NhbGxl
ZUNlbGwoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlZTsgfQorICAgIAorICAgIEludGVybmFsRnVu
Y3Rpb24qIGludGVybmFsRnVuY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGpz
RHluYW1pY0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KG1fY2FsbGVlKTsKKyAgICB9CisgICAgCisg
ICAgSlNGdW5jdGlvbiogZnVuY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGpz
RHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2FsbGVlKTsKKyAgICB9CisgICAgCisgICAgYm9v
bCBpc0Nsb3N1cmVDYWxsKCkgY29uc3QgeyByZXR1cm4gISFqc0R5bmFtaWNDYXN0PEV4ZWN1dGFi
bGVCYXNlKj4obV9jYWxsZWUpOyB9CisgICAgCisgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFi
bGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gdGhp
cy0+ZnVuY3Rpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbi0+ZXhlY3V0YWJsZSgp
OworICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxFeGVjdXRhYmxlQmFzZSo+KG1fY2FsbGVl
KTsKKyAgICB9CisgICAgCisgICAgSW50cmluc2ljIGludHJpbnNpY0ZvcihDb2RlU3BlY2lhbGl6
YXRpb25LaW5kIGtpbmQpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoRXhlY3V0YWJsZUJhc2Uq
IGV4ZWN1dGFibGUgPSB0aGlzLT5leGVjdXRhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4gZXhl
Y3V0YWJsZS0+aW50cmluc2ljRm9yKGtpbmQpOworICAgICAgICByZXR1cm4gTm9JbnRyaW5zaWM7
CisgICAgfQorICAgIAorICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxl
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEZ1bmN0aW9uRXhl
Y3V0YWJsZSo+KGV4ZWN1dGFibGUoKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdDsKKyAgICAKKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NhbGxlZSA9PSBkZWxldGVkVG9r
ZW4oKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhbGxWYXJpYW50
JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NhbGxlZSA9PSBvdGhlci5t
X2NhbGxlZTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gV1RGOjpQdHJIYXNoPEpTQ2VsbCo+OjpoYXNoKG1fY2FsbGVlKTsKKyAg
ICB9CisgICAgCitwcml2YXRlOgorICAgIHN0YXRpYyBKU0NlbGwqIGRlbGV0ZWRUb2tlbigpIHsg
cmV0dXJuIGJpdHdpc2VfY2FzdDxKU0NlbGwqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsg
fQorICAgICAgICAgICAgICAgICAgIAorICAgIEpTQ2VsbCogbV9jYWxsZWU7Cit9OworCitzdHJ1
Y3QgQ2FsbFZhcmlhbnRIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBDYWxs
VmFyaWFudCYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgc3RhdGljIGJvb2wgZXF1
YWwoY29uc3QgQ2FsbFZhcmlhbnQmIGEsIGNvbnN0IENhbGxWYXJpYW50JiBiKSB7IHJldHVybiBh
ID09IGI7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVs
ZXRlZCA9IHRydWU7Cit9OworCit0eXBlZGVmIFZlY3RvcjxDYWxsVmFyaWFudCwgMT4gQ2FsbFZh
cmlhbnRMaXN0OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKK3RlbXBsYXRlPD4gc3RydWN0
IERlZmF1bHRIYXNoPEpTQzo6Q2FsbFZhcmlhbnQ+IHsKKyAgICB0eXBlZGVmIEpTQzo6Q2FsbFZh
cmlhbnRIYXNoIEhhc2g7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRy
YWl0czsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpDYWxsVmFyaWFudD4gOiBT
aW1wbGVDbGFzc0hhc2hUcmFpdHM8SlNDOjpDYWxsVmFyaWFudD4geyB9OworCit9IC8vIG5hbWVz
cGFjZSBXVEYKKworI2VuZGlmIC8vIENhbGxWYXJpYW50X2gKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmgJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw3ICszMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogZW51bSBFeGl0S2luZCA6IHVpbnQ4X3Qgewog
ICAgIEV4aXRLaW5kVW5zZXQsCiAgICAgQmFkVHlwZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2UgYSB0
eXBlIHByZWRpY3Rpb24gd2FzIHdyb25nLgotICAgIEJhZEZ1bmN0aW9uLCAvLyBXZSBleGl0ZWQg
YmVjYXVzZSB3ZSBtYWRlIGFuIGluY29ycmVjdCBhc3N1bXB0aW9uIGFib3V0IHdoYXQgZnVuY3Rp
b24gd2Ugd291bGQgc2VlLgorICAgIEJhZENlbGwsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIG1h
ZGUgYW4gaW5jb3JyZWN0IGFzc3VtcHRpb24gYWJvdXQgd2hhdCBjZWxsIHdlIHdvdWxkIHNlZS4g
VXN1YWxseSB1c2VkIGZvciBmdW5jdGlvbiBjaGVja3MuCiAgICAgQmFkRXhlY3V0YWJsZSwgLy8g
V2UgZXhpdGVkIGJlY2F1c2Ugd2UgbWFkZSBhbiBpbmNvcnJlY3QgYXNzdW1wdGlvbiBhYm91dCB3
aGF0IGV4ZWN1dGFibGUgd2Ugd291bGQgc2VlLgogICAgIEJhZENhY2hlLCAvLyBXZSBleGl0ZWQg
YmVjYXVzZSBhbiBpbmxpbmUgY2FjaGUgd2FzIHdyb25nLgogICAgIEJhZENvbnN0YW50Q2FjaGUs
IC8vIFdlIGV4aXRlZCBiZWNhdXNlIGEgY2FjaGUgb24gYSB3ZWFrIGNvbnN0YW50ICh1c3VhbGx5
IGEgcHJvdG90eXBlKSB3YXMgd3JvbmcuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lv
biAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NjAsMTQgKzE0NjAsNiBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgY2Fz
ZSBDaGVja0V4ZWN1dGFibGU6IHsKLSAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIHRyYWNrIGV4
ZWN1dGFibGVzIGluIEFic3RyYWN0VmFsdWUsIHdoaWNoIHdvdWxkIGFsbG93IHVzIHRvIGdldCBy
aWQgb2YgdGhlc2UgY2hlY2tzCi0gICAgICAgIC8vIG1vcmUgdGhvcm91Z2hseS4gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjIwMAotICAgICAgICAvLyBGSVhNRTog
V2UgY291bGQgZWxpbWluYXRlIHRoZXNlIGVudGlyZWx5IGlmIHdlIGtub3cgdGhlIGV4YWN0IHZh
bHVlIHRoYXQgZmxvd3MgaW50byB0aGlzLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MjAxCi0gICAgICAgIGJyZWFrOwotICAgIH0KLQogICAg
IGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6IHsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBh
YmxlIHRvIHByb3BhZ2F0ZSB0aGUgc3RydWN0dXJlIHNldHMgb2YgY29uc3RhbnRzIChpLmUuIHBy
b3RvdHlwZXMpLgogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpOwpAQCAtMTcyNywxNiArMTcxOSwyMCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2Up
OwogICAgICAgICBicmVhazsKICAgICB9CisgICAgICAgIAorICAgIGNhc2UgR2V0RXhlY3V0YWJs
ZToKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNDZWxsT3RoZXIpOworICAgICAg
ICBicmVhazsKICAgICAKLSAgICBjYXNlIENoZWNrRnVuY3Rpb246IHsKKyAgICBjYXNlIENoZWNr
Q2VsbDogewogICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSku
dmFsdWUoKTsKLSAgICAgICAgaWYgKHZhbHVlID09IG5vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkp
IHsKKyAgICAgICAgaWYgKHZhbHVlID09IG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkpIHsK
ICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CiAgICAgICAgICAg
ICBBU1NFUlQodmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Ci0gICAgICAgIGZpbHRlckJ5VmFsdWUobm9kZS0+Y2hpbGQxKCksICpub2RlLT5mdW5jdGlvbigp
KTsKKyAgICAgICAgZmlsdGVyQnlWYWx1ZShub2RlLT5jaGlsZDEoKSwgKm5vZGUtPmNlbGxPcGVy
YW5kKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDE3
MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsMTQgKzE3OCwxOSBAQCBwcml2YXRlOgogICAgICAgICBO
b2RlKiBjYWxsVGFyZ2V0LCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCwgQ2FsbExp
bmtTdGF0dXMpOwogICAgIHZvaWQgaGFuZGxlQ2FsbChpbnQgcmVzdWx0LCBOb2RlVHlwZSBvcCwg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplLCBpbnQgY2Fs
bGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCk7CiAgICAgdm9pZCBoYW5kbGVD
YWxsKEluc3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3AsIENvZGVTcGVjaWFsaXphdGlvbktpbmQp
OwotICAgIHZvaWQgZW1pdEZ1bmN0aW9uQ2hlY2tzKGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgTm9k
ZSogY2FsbFRhcmdldCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
KTsKKyAgICB2b2lkIGVtaXRGdW5jdGlvbkNoZWNrcyhDYWxsVmFyaWFudCwgTm9kZSogY2FsbFRh
cmdldCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICB2
b2lkIHVuZG9GdW5jdGlvbkNoZWNrcyhDYWxsVmFyaWFudCk7CiAgICAgdm9pZCBlbWl0QXJndW1l
bnRQaGFudG9tcyhpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgdW5zaWduZWQgaW5saW5pbmdDb3N0
KENhbGxWYXJpYW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFs
aXphdGlvbktpbmQpOyAvLyBSZXR1cm4gVUlOVF9NQVggaWYgaXQncyBub3QgYW4gaW5saW5pbmcg
Y2FuZGlkYXRlLiBCeSBjb252ZW50aW9uLCBpbnRyaW5zaWNzIGhhdmUgYSBjb3N0IG9mIDEuCiAg
ICAgLy8gSGFuZGxlIGlubGluaW5nLiBSZXR1cm4gdHJ1ZSBpZiBpdCBzdWNjZWVkZWQsIGZhbHNl
IGlmIHdlIG5lZWQgdG8gcGxhbnQgYSBjYWxsLgotICAgIGJvb2wgaGFuZGxlSW5saW5pbmcoTm9k
ZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBDYWxsTGlua1N0YXR1
cyYsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1
bnNpZ25lZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQpOworICAgIGJvb2wgaGFu
ZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBjb25z
dCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQs
IFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pOworICAgIGVudW0gQ2FsbFRhaWxMaW5rYWJpbGl0
eSB7IENhbGxUYWlsSXNMaW5rYWJsZSwgQ2FsbFRhaWxJc05vdExpbmthYmxlIH07CisgICAgYm9v
bCBhdHRlbXB0VG9JbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3Bl
cmFuZCwgQ2FsbFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQs
IENhbGxUYWlsTGlua2FiaWxpdHksIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIHVuc2lnbmVk
JiBpbmxpbmluZ0JhbGFuY2UpOworICAgIHZvaWQgaW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0
Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQs
IGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgSW5s
aW5lQ2FsbEZyYW1lOjpLaW5kLCBDYWxsVGFpbExpbmthYmlsaXR5KTsKICAgICAvLyBIYW5kbGUg
aW50cmluc2ljIGZ1bmN0aW9ucy4gUmV0dXJuIHRydWUgaWYgaXQgc3VjY2VlZGVkLCBmYWxzZSBp
ZiB3ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4KICAgICBib29sIGhhbmRsZUludHJpbnNpYyhpbnQg
cmVzdWx0T3BlcmFuZCwgSW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CiAgICAgYm9v
bCBoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IoaW50IHJlc3VsdE9wZXJhbmQsIEludGVybmFs
RnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgVHlwZWRBcnJheVR5cGUpOwotICAgIGJvb2wgaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1
bmN0aW9uKGludCByZXN1bHRPcGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVy
T2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24sIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOworICAgIGJvb2wgaGFuZGxlQ29uc3Rh
bnRJbnRlcm5hbEZ1bmN0aW9uKGludCByZXN1bHRPcGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiwg
aW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVT
cGVjaWFsaXphdGlvbktpbmQpOwogICAgIE5vZGUqIGhhbmRsZVB1dEJ5T2Zmc2V0KE5vZGUqIGJh
c2UsIHVuc2lnbmVkIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBOb2RlKiB2YWx1ZSk7CiAg
ICAgTm9kZSogaGFuZGxlR2V0QnlPZmZzZXQoU3BlY3VsYXRlZFR5cGUsIE5vZGUqIGJhc2UsIGNv
bnN0IFN0cnVjdHVyZVNldCYsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFByb3BlcnR5T2Zm
c2V0LCBOb2RlVHlwZSBvcCA9IEdldEJ5T2Zmc2V0KTsKICAgICB2b2lkIGhhbmRsZUdldEJ5SWQo
CkBAIC02MzcsNiArNjQyLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KKyAgICAKKyAgICB2b2lkIHJlbW92ZUxhc3ROb2RlRnJvbUdyYXBoKE5v
ZGVUeXBlIGV4cGVjdGVkTm9kZVR5cGUpCisgICAgeworICAgICAgICBOb2RlKiBub2RlID0gbV9j
dXJyZW50QmxvY2stPnRha2VMYXN0KCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPm9w
KCkgPT0gZXhwZWN0ZWROb2RlVHlwZSk7CisgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJl
ZShub2RlKTsKKyAgICB9CiAKICAgICB2b2lkIGFkZFZhckFyZ0NoaWxkKE5vZGUqIGNoaWxkKQog
ICAgIHsKQEAgLTg3MSw4ICs4ODMsNyBAQCBwcml2YXRlOgogICAgICAgICBWZWN0b3I8VW5saW5r
ZWRCbG9jaz4gbV91bmxpbmtlZEJsb2NrczsKICAgICAgICAgCiAgICAgICAgIC8vIFBvdGVudGlh
bCBibG9jayBsaW5raW5nIHRhcmdldHMuIE11c3QgYmUgc29ydGVkIGJ5IGJ5dGVjb2RlQmVnaW4s
IGFuZAotICAgICAgICAvLyBjYW5ub3QgaGF2ZSB0d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2Ft
ZSBieXRlY29kZUJlZ2luLiBGb3IgdGhpcyB2ZXJ5Ci0gICAgICAgIC8vIHJlYXNvbiwgdGhpcyBp
cyBub3QgZXF1aXZhbGVudCB0byAKKyAgICAgICAgLy8gY2Fubm90IGhhdmUgdHdvIGJsb2NrcyB0
aGF0IGhhdmUgdGhlIHNhbWUgYnl0ZWNvZGVCZWdpbi4KICAgICAgICAgVmVjdG9yPEJhc2ljQmxv
Y2sqPiBtX2Jsb2NrTGlua2luZ1RhcmdldHM7CiAgICAgICAgIAogICAgICAgICAvLyBJZiB0aGUg
Y2FsbHNpdGUncyBiYXNpYyBibG9jayB3YXMgc3BsaXQgaW50byB0d28sIHRoZW4gdGhpcyB3aWxs
IGJlCkBAIC0xMDM0LDM2ICsxMDQ1LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2Fs
bCgKICAgICAKICAgICB1bnNpZ25lZCBuZXh0T2Zmc2V0ID0gbV9jdXJyZW50SW5kZXggKyBpbnN0
cnVjdGlvblNpemU7CiAKLSAgICBpZiAoSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxs
TGlua1N0YXR1cy5pbnRlcm5hbEZ1bmN0aW9uKCkpIHsKLSAgICAgICAgaWYgKGhhbmRsZUNvbnN0
YW50SW50ZXJuYWxGdW5jdGlvbihyZXN1bHQsIGZ1bmN0aW9uLCByZWdpc3Rlck9mZnNldCwgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHByZWRpY3Rpb24sIHNwZWNpYWxpemF0aW9uS2luZCkp
IHsKLSAgICAgICAgICAgIC8vIFRoaXMgcGhhbnRvbWluZyBoYXMgdG8gYmUgKmFmdGVyKiB0aGUg
Y29kZSBmb3IgdGhlIGludHJpbnNpYywgdG8gc2lnbmlmeSB0aGF0Ci0gICAgICAgICAgICAvLyB0
aGUgaW5wdXRzIG11c3QgYmUga2VwdCBhbGl2ZSB3aGF0ZXZlciBleGl0cyB0aGUgaW50cmluc2lj
IG1heSBkby4KLSAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldCk7Ci0g
ICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIENhbiBvbmx5IGhhbmRsZSB0aGlz
IHVzaW5nIHRoZSBnZW5lcmljIGNhbGwgaGFuZGxlci4KLSAgICAgICAgYWRkQ2FsbChyZXN1bHQs
IG9wLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZz
ZXQsIHByZWRpY3Rpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgICAgICAKLSAgICBJ
bnRyaW5zaWMgaW50cmluc2ljID0gY2FsbExpbmtTdGF0dXMuaW50cmluc2ljRm9yKHNwZWNpYWxp
emF0aW9uS2luZCk7Ci0KLSAgICBKU0Z1bmN0aW9uKiBrbm93bkZ1bmN0aW9uID0gbnVsbHB0cjsK
LSAgICBpZiAoaW50cmluc2ljICE9IE5vSW50cmluc2ljKSB7Ci0gICAgICAgIGVtaXRGdW5jdGlv
bkNoZWNrcyhjYWxsTGlua1N0YXR1cywgY2FsbFRhcmdldCwgcmVnaXN0ZXJPZmZzZXQsIHNwZWNp
YWxpemF0aW9uS2luZCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgaWYgKGhhbmRsZUludHJpbnNp
YyhyZXN1bHQsIGludHJpbnNpYywgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBwcmVkaWN0aW9uKSkgewotICAgICAgICAgICAgLy8gVGhpcyBwaGFudG9taW5nIGhh
cyB0byBiZSAqYWZ0ZXIqIHRoZSBjb2RlIGZvciB0aGUgaW50cmluc2ljLCB0byBzaWduaWZ5IHRo
YXQKLSAgICAgICAgICAgIC8vIHRoZSBpbnB1dHMgbXVzdCBiZSBrZXB0IGFsaXZlIHdoYXRldmVy
IGV4aXRzIHRoZSBpbnRyaW5zaWMgbWF5IGRvLgotICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFu
dG9tLCBjYWxsVGFyZ2V0KTsKLSAgICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lz
dGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5k
KTsKLSAgICAgICAgICAgIGlmIChtX2dyYXBoLmNvbXBpbGF0aW9uKCkpCi0gICAgICAgICAgICAg
ICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkQ2FsbCgpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChoYW5kbGVJbmxpbmluZyhjYWxs
VGFyZ2V0LCByZXN1bHQsIGNhbGxMaW5rU3RhdHVzLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQsIGtpbmQpKSB7CisgICAgaWYgKGhhbmRsZUlu
bGluaW5nKGNhbGxUYXJnZXQsIHJlc3VsdCwgY2FsbExpbmtTdGF0dXMsIHJlZ2lzdGVyT2Zmc2V0
LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbmV4dE9mZnNldCwga2luZCwgcHJlZGljdGlv
bikpIHsKICAgICAgICAgaWYgKG1fZ3JhcGguY29tcGlsYXRpb24oKSkKICAgICAgICAgICAgIG1f
Z3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZENhbGwoKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMTA4NSwxMSArMTA2NywxMSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxs
KAogICAgIH0KICAgICBOb2RlKiBjYWxsID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBjYWxsVGFyZ2V0
LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24p
OwogCi0gICAgaWYgKGtub3duRnVuY3Rpb24pIAotICAgICAgICBjYWxsLT5naXZlS25vd25GdW5j
dGlvbihrbm93bkZ1bmN0aW9uKTsKKyAgICBpZiAoa25vd25GdW5jdGlvbikKKyAgICAgICAgY2Fs
bC0+c2V0Q2VsbE9wZXJhbmQobV9ncmFwaC5mcmVlemUoa25vd25GdW5jdGlvbikpOwogfQogCi12
b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0RnVuY3Rpb25DaGVja3MoY29uc3QgQ2FsbExpbmtTdGF0
dXMmIGNhbGxMaW5rU3RhdHVzLCBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgcmVnaXN0ZXJPZmZzZXQs
IENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRG
dW5jdGlvbkNoZWNrcyhDYWxsVmFyaWFudCBjYWxsZWUsIE5vZGUqIGNhbGxUYXJnZXQsIGludCBy
ZWdpc3Rlck9mZnNldCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIE5vZGUq
IHRoaXNBcmd1bWVudDsKICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkKQEAgLTEwOTcsNTAg
KzEwNzksNDEgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdEZ1bmN0aW9uQ2hlY2tzKAogICAg
IGVsc2UKICAgICAgICAgdGhpc0FyZ3VtZW50ID0gMDsKIAotICAgIGlmIChjYWxsTGlua1N0YXR1
cy5pc1Byb3ZlZCgpKSB7Ci0gICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldCwg
dGhpc0FyZ3VtZW50KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBBU1NFUlQo
Y2FsbExpbmtTdGF0dXMuY2FuT3B0aW1pemUoKSk7Ci0gICAgCi0gICAgaWYgKEpTRnVuY3Rpb24q
IGZ1bmN0aW9uID0gY2FsbExpbmtTdGF0dXMuZnVuY3Rpb24oKSkKLSAgICAgICAgYWRkVG9HcmFw
aChDaGVja0Z1bmN0aW9uLCBPcEluZm8obV9ncmFwaC5mcmVlemUoZnVuY3Rpb24pKSwgY2FsbFRh
cmdldCwgdGhpc0FyZ3VtZW50KTsKKyAgICBpZiAoIWNhbGxlZS5pc0Nvc3VyZUNhbGwoKSkKKyAg
ICAgICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShjYWxsZWUu
ZnVuY3Rpb24oKSkpLCBjYWxsVGFyZ2V0LCB0aGlzQXJndW1lbnQpOwogICAgIGVsc2UgewogICAg
ICAgICBBU1NFUlQoY2FsbExpbmtTdGF0dXMuZXhlY3V0YWJsZSgpKTsKICAgICAgICAgCi0gICAg
ICAgIGFkZFRvR3JhcGgoQ2hlY2tFeGVjdXRhYmxlLCBPcEluZm8oY2FsbExpbmtTdGF0dXMuZXhl
Y3V0YWJsZSgpKSwgY2FsbFRhcmdldCwgdGhpc0FyZ3VtZW50KTsKKyAgICAgICAgYWRkVG9HcmFw
aChDaGVja0NlbGwsIE9wSW5mbyhjYWxsZWUuZXhlY3V0YWJsZSgpKSwgYWRkVG9HcmFwaChHZXRF
eGVjdXRhYmxlLCBjYWxsVGFyZ2V0KSwgdGhpc0FyZ3VtZW50KTsKICAgICB9CiB9CiAKK3ZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OnVuZG9GdW5jdGlvbkNoZWNrcyhDYWxsVmFyaWFudCBjYWxsZWUpCit7
CisgICAgcmVtb3ZlTGFzdE5vZGVGcm9tR3JhcGgoQ2hlY2tDZWxsKTsKKyAgICBpZiAoY2FsbGVl
LmlzQ2xvc3VyZUNhbGwoKSkKKyAgICAgICAgcmVtb3ZlTGFzdE5vZGVGcm9tR3JhcGgoR2V0RXhl
Y3V0YWJsZSk7Cit9CisKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRBcmd1bWVudFBoYW50b21z
KGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgZm9yIChpbnQgaSA9IGtpbmQgPT0gQ29k
ZUZvckNhbGwgPyAwIDogMTsgaSA8IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOyArK2kpCiAg
ICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50
KGksIHJlZ2lzdGVyT2Zmc2V0KSkpOwogfQogCi1ib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJ
bmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IENh
bGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxG
cmFtZTo6S2luZCBraW5kKQordW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChD
YWxsVmFyaWFudCBjYWxsZWUsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2Ug
PSBmYWxzZTsKICAgICAKLSAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9u
S2luZCA9IElubGluZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOwotICAg
IAogICAgIGlmICh2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyBpbmxpbmlu
ZyAiLCBjYWxsTGlua1N0YXR1cywgIiBpbnRvICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIp
OworICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyBpbmxpbmluZyAiLCBjYWxsZWUsICIgaW50
byAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKICAgICAKLSAgICAvLyBGaXJzdCwgdGhl
IHJlYWxseSBzaW1wbGUgY2hlY2tzOiBkbyB3ZSBoYXZlIGFuIGFjdHVhbCBKUyBmdW5jdGlvbj8K
LSAgICBpZiAoIWNhbGxMaW5rU3RhdHVzLmV4ZWN1dGFibGUoKSkgeworICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS5mdW5jdGlvbkV4ZWN1dGFibGUoKTsKKyAgICBp
ZiAoIWV4ZWN1dGFibGUpIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAgICBkYXRh
TG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIHRoZXJlIGlzIG5vIGV4ZWN1dGFibGUuXG4iKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVj
YXVzZSB0aGVyZSBpcyBubyBmdW5jdGlvbiBleGVjdXRhYmxlLiIpOworICAgICAgICByZXR1cm4g
VUlOVF9NQVg7CiAgICAgfQotICAgIGlmIChjYWxsTGlua1N0YXR1cy5leGVjdXRhYmxlKCktPmlz
SG9zdEZ1bmN0aW9uKCkpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAgICBkYXRh
TG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIGl0J3MgYSBob3N0IGZ1bmN0aW9uLlxuIik7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNhbGxMaW5rU3RhdHVzLmV4
ZWN1dGFibGUoKSk7CiAgICAgCiAgICAgLy8gRG9lcyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyB3
ZSdyZSBwYXNzaW5nIG1hdGNoIHRoZSBhcml0eSBvZiB0aGUgdGFyZ2V0PyBXZSBjdXJyZW50bHkK
ICAgICAvLyBpbmxpbmUgb25seSBpZiB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgaXMg
Z3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBudW1iZXIKQEAgLTExNDgsNyArMTEyMSw3IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICBpZiAoc3RhdGlj
X2Nhc3Q8aW50PihleGVjdXRhYmxlLT5wYXJhbWV0ZXJDb3VudCgpKSArIDEgPiBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcykgewogICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRh
dGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2Ugb2YgYXJpdHkgbWlzbWF0Y2guXG4iKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQogICAgIAog
ICAgIC8vIERvIHdlIGhhdmUgYSBjb2RlIGJsb2NrLCBhbmQgZG9lcyB0aGUgY29kZSBibG9jaydz
IHNpemUgbWF0Y2ggdGhlIGhldXJpc3RpY3MvcmVxdWlyZW1lbnRzIGZvcgpAQCAtMTE1NywxOCAr
MTEzMCwxOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAg
Ly8gaWYgd2UgaGFkIGEgc3RhdGljIHByb29mIG9mIHdoYXQgd2FzIGJlaW5nIGNhbGxlZDsgdGhp
cyBtaWdodCBoYXBwZW4gZm9yIGV4YW1wbGUgaWYgeW91IGNhbGwgYQogICAgIC8vIGdsb2JhbCBm
dW5jdGlvbiwgd2hlcmUgd2F0Y2hwb2ludGluZyBnaXZlcyB1cyBzdGF0aWMgaW5mb3JtYXRpb24u
IE92ZXJhbGwsIGl0J3MgYSByYXJlIGNhc2UKICAgICAvLyBiZWNhdXNlIHdlIGV4cGVjdCB0aGF0
IGFueSBob3QgY2FsbGVlcyB3b3VsZCBoYXZlIGFscmVhZHkgYmVlbiBjb21waWxlZC4KLSAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmJhc2VsaW5lQ29kZUJsb2NrRm9yKHNw
ZWNpYWxpemF0aW9uS2luZCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxl
LT5iYXNlbGluZUNvZGVCbG9ja0ZvcihraW5kKTsKICAgICBpZiAoIWNvZGVCbG9jaykgewogICAg
ICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1
c2Ugbm8gY29kZSBibG9jayBhdmFpbGFibGUuXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQogICAgIENhcGFiaWxpdHlMZXZlbCBjYXBh
YmlsaXR5TGV2ZWwgPSBpbmxpbmVGdW5jdGlvbkZvckNhcGFiaWxpdHlMZXZlbCgKLSAgICAgICAg
Y29kZUJsb2NrLCBzcGVjaWFsaXphdGlvbktpbmQsIGNhbGxMaW5rU3RhdHVzLmlzQ2xvc3VyZUNh
bGwoKSk7CisgICAgICAgIGNvZGVCbG9jaywga2luZywgY2FsbExpbmtTdGF0dXMuaXNDbG9zdXJl
Q2FsbCgpKTsKICAgICBpZiAoIWNhbklubGluZShjYXBhYmlsaXR5TGV2ZWwpKSB7CiAgICAgICAg
IGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSB0
aGUgZnVuY3Rpb24gaXMgbm90IGlubGluZWFibGUuXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQogICAgIAogICAgIC8vIENoZWNrIGlm
IHRoZSBjYWxsZXIgaXMgYWxyZWFkeSB0b28gbGFyZ2UuIFdlIGRvIHRoaXMgY2hlY2sgaGVyZSBi
ZWNhdXNlIHRoYXQncyBqdXN0CkBAIC0xMTc4LDcgKzExNTEsNyBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgICAgIGNvZGVCbG9jay0+bV9zaG91bGRBbHdh
eXNCZUlubGluZWQgPSBmYWxzZTsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIHRoZSBjYWxsZXIgaXMgdG9vIGxhcmdlLlxuIik7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgIH0K
ICAgICAKICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgYmV0dGVyIGF0IHByZWRpY3Rpbmcg
aG93IG11Y2ggYmxvYXQgd2Ugd2lsbCBpbnRyb2R1Y2UgYnkgaW5saW5pbmcKQEAgLTExOTcsNyAr
MTE3MCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAg
ICAgaWYgKGRlcHRoID49IE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ0RlcHRoKCkpIHsKICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5n
IGJlY2F1c2UgZGVwdGggZXhjZWVkZWQuXG4iKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgaWYgKGVudHJ5LT5leGVjdXRhYmxlKCkgPT0gZXhlY3V0YWJsZSkgewpAQCAtMTIwNSwxOCAr
MTE3OCwzMCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAg
ICAgICAgICBpZiAocmVjdXJzaW9uID49IE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ1JlY3Vyc2lv
bigpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgcmVjdXJzaW9uIGRldGVjdGVkLlxuIik7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiBVSU5U
X01BWDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICAKICAgICBpZiAodmVy
Ym9zZSkKLSAgICAgICAgZGF0YUxvZygiICAgIENvbW1pdHRpbmcgdG8gaW5saW5pbmcuXG4iKTsK
KyAgICAgICAgZGF0YUxvZygiICAgIElubGluaW5nIHNob3VsZCBiZSBwb3NzaWJsZS5cbiIpOwor
ICAgIAorICAgIC8vIEl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRvIGlubGluZS4KKyAgICByZXR1cm4g
Y29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCk7Cit9CisKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6
OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxs
VmFyaWFudCBjYWxsZWUsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2lu
ZCwgQ2FsbFRhaWxMaW5rYWJpbGl0eSBjYWxsVGFpbExpbmthYmlsaXR5KQoreworICAgIENvZGVT
cGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1lOjpz
cGVjaWFsaXphdGlvbktpbmRGb3Ioa2luZCk7CisgICAgCisgICAgQVNTRVJUKGlubGluaW5nQ29z
dChjYWxsZWUsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQp
ICE9IFVJTlRfTUFYKTsKICAgICAKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxlZS5m
dW5jdGlvbkV4ZWN1dGFibGUoKS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Ioc3BlY2lhbGl6YXRpb25L
aW5kKTsKKwogICAgIC8vIE5vdyB3ZSBrbm93IHdpdGhvdXQgYSBkb3VidCB0aGF0IHdlIGFyZSBj
b21taXR0ZWQgdG8gaW5saW5pbmcuIFNvIGJlZ2luIHRoZSBwcm9jZXNzCiAgICAgLy8gYnkgY2hl
Y2tpbmcgdGhlIGNhbGxlZSAoaWYgbmVjZXNzYXJ5KSBhbmQgbWFraW5nIHN1cmUgdGhhdCBhcmd1
bWVudHMgYW5kIHRoZSBjYWxsZWUKICAgICAvLyBhcmUgZmx1c2hlZC4KLSAgICBlbWl0RnVuY3Rp
b25DaGVja3MoY2FsbExpbmtTdGF0dXMsIGNhbGxUYXJnZXROb2RlLCByZWdpc3Rlck9mZnNldCwg
c3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICBlbWl0RnVuY3Rpb25DaGVja3MoY2FsbGVlLCBjYWxs
VGFyZ2V0Tm9kZSwgcmVnaXN0ZXJPZmZzZXQsIHNwZWNpYWxpemF0aW9uS2luZCk7CiAgICAgCiAg
ICAgLy8gRklYTUU6IERvbid0IGZsdXNoIGNvbnN0YW50cyEKICAgICAKQEAgLTEyMzMsNyArMTIx
OCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAgICAg
cmVzdWx0UmVnID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKHJlc3VsdFJlZyk7CiAg
ICAgCiAgICAgSW5saW5lU3RhY2tFbnRyeSBpbmxpbmVTdGFja0VudHJ5KAotICAgICAgICB0aGlz
LCBjb2RlQmxvY2ssIGNvZGVCbG9jaywgbV9ncmFwaC5sYXN0QmxvY2soKSwgY2FsbExpbmtTdGF0
dXMuZnVuY3Rpb24oKSwgcmVzdWx0UmVnLAorICAgICAgICB0aGlzLCBjb2RlQmxvY2ssIGNvZGVC
bG9jaywgbV9ncmFwaC5sYXN0QmxvY2soKSwgY2FsbGVlLmZ1bmN0aW9uKCksIHJlc3VsdFJlZywK
ICAgICAgICAgKFZpcnR1YWxSZWdpc3RlcilpbmxpbmVDYWxsRnJhbWVTdGFydCwgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIGtpbmQpOwogICAgIAogICAgIC8vIFRoaXMgaXMgd2hlcmUgdGhl
IGFjdHVhbCBpbmxpbmluZyByZWFsbHkgaGFwcGVucy4KQEAgLTEyNDcsOCArMTIzMiw4IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAKICAgICBSRUxFQVNF
X0FTU0VSVCgKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUtPmlz
Q2xvc3VyZUNhbGwKLSAgICAgICAgPT0gY2FsbExpbmtTdGF0dXMuaXNDbG9zdXJlQ2FsbCgpKTsK
LSAgICBpZiAoY2FsbExpbmtTdGF0dXMuaXNDbG9zdXJlQ2FsbCgpKSB7CisgICAgICAgID09IGNh
bGxlZS5pc0Nsb3N1cmVDYWxsKCkpOworICAgIGlmIChjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKSB7
CiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogY2FsbGVlVmFyaWFibGUgPQogICAgICAgICAg
ICAgc2V0KFZpcnR1YWxSZWdpc3RlcihKU1N0YWNrOjpDYWxsZWUpLCBjYWxsVGFyZ2V0Tm9kZSwg
SW1tZWRpYXRlTmFrZWRTZXQpLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKICAgICAgICAgVmFyaWFi
bGVBY2Nlc3NEYXRhKiBzY29wZVZhcmlhYmxlID0KQEAgLTEzMTcsNyArMTMwMiw2IEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAKICAgICAvLyBJZiB3ZSBn
ZXQgdG8gdGhpcyBwb2ludCB0aGVuIGFsbCBibG9ja3MgbXVzdCBlbmQgaW4gc29tZSBzb3J0IG9m
IHRlcm1pbmFscy4KICAgICBBU1NFUlQobGFzdEJsb2NrLT5sYXN0KCktPmlzVGVybWluYWwoKSk7
Ci0gICAgCiAKICAgICAvLyBOZWVkIHRvIGNyZWF0ZSBhIG5ldyBiYXNpYyBibG9jayBmb3IgdGhl
IGNvbnRpbnVhdGlvbiBhdCB0aGUgY2FsbGVyLgogICAgIFJlZlB0cjxCYXNpY0Jsb2NrPiBibG9j
ayA9IGFkb3B0UmVmKG5ldyBCYXNpY0Jsb2NrKG5leHRPZmZzZXQsIG1fbnVtQXJndW1lbnRzLCBt
X251bUxvY2FscywgUE5hTikpOwpAQCAtMTM0MSwxMyArMTMyNSwxMDcgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgIG1fY3VycmVudEJsb2NrID0gYmxvY2su
Z2V0KCk7CiAgICAgQVNTRVJUKG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlu
a2luZ1RhcmdldHMuaXNFbXB0eSgpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX2Js
b2NrTGlua2luZ1RhcmdldHMubGFzdCgpLT5ieXRlY29kZUJlZ2luIDwgbmV4dE9mZnNldCk7CiAg
ICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVu
bGlua2VkQmxvY2soYmxvY2suZ2V0KCkpKTsKLSAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxl
ci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9jay5nZXQoKSk7CisgICAgaWYgKGNh
bGxUYWlsTGlua2FiaWxpdHkgPT0gQ2FsbFRhaWxJc0xpbmthYmxlKQorICAgICAgICBtX2lubGlu
ZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9jay5n
ZXQoKSk7CiAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhibG9jayk7CiAgICAgcHJlcGFyZVRvUGFy
c2VCbG9jaygpOworfQorCitib29sIEJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxs
KE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcmlhbnQgY2Fs
bGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
dW5zaWduZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIENhbGxUYWls
TGlua2FiaWxpdHkgY2FsbFRhaWxMaW5rYWJpbGl0eSwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSkKK3sKKyAgICBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHNwZWNpYWxpemF0aW9uS2luZCA9IElubGluZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25L
aW5kRm9yKGtpbmQpOworICAgIAorICAgIGlmICghaW5saW5pbmdCYWxhbmNlKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0g
Y2FsbGVlLmludGVybmFsRnVuY3Rpb24oKSkgeworICAgICAgICBlbWl0RnVuY3Rpb25DaGVja3Mo
Y2FsbGVlLCBjYWxsVGFyZ2V0Tm9kZSwgcmVnaXN0ZXJPZmZzZXQsIHNwZWNpYWxpemF0aW9uS2lu
ZCk7CisgICAgICAgIAorICAgICAgICBpZiAoaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9u
KHJlc3VsdE9wZXJhbmQsIGZ1bmN0aW9uLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCkpIHsKKyAgICAgICAgICAgIGFkZFRvR3Jh
cGgoUGhhbnRvbSwgY2FsbFRhcmdldE5vZGUpOworICAgICAgICAgICAgZW1pdEFyZ3VtZW50UGhh
bnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFs
aXphdGlvbktpbmQpOworICAgICAgICAgICAgaW5saW5pbmdCYWxhbmNlLS07CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdW5kb0Z1bmN0aW9u
Q2hlY2tzKGNhbGxlZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAg
SW50cmluc2ljIGludHJpbnNpYyA9IGNhbGxlZS5pbnRyaW5zaWNGb3Ioc3BlY2lhbGl6YXRpb25L
aW5kKTsKKyAgICBpZiAoaW50cmluc2ljICE9IE5vSW50cmluc2ljKSB7CisgICAgICAgIGVtaXRG
dW5jdGlvbkNoZWNrcyhjYWxsZWUsIGNhbGxUYXJnZXROb2RlLCByZWdpc3Rlck9mZnNldCwgc3Bl
Y2lhbGl6YXRpb25LaW5kKTsKKyAgICAgICAgCisgICAgICAgIGlmIChoYW5kbGVJbnRyaW5zaWMo
cmVzdWx0T3BlcmFuZCwgaW50cmluc2ljLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIHByZWRpY3Rpb24pKSB7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50
b20sIGNhbGxUYXJnZXROb2RlKTsKKyAgICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJl
Z2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25L
aW5kKTsKKyAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZS0tOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHVuZG9GdW5jdGlvbkNoZWNrcyhj
YWxsZWUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVk
IG15SW5saW5pbmdDb3N0ID0gaW5saW5pbmdDb3N0KAorICAgICAgICBjYWxsTGlua1N0YXR1c1sw
XS5jYWxsZWUoKSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2lu
ZCk7CiAgICAgCi0gICAgLy8gQXQgdGhpcyBwb2ludCB3ZSByZXR1cm4gYW5kIGNvbnRpbnVlIHRv
IGdlbmVyYXRlIGNvZGUgZm9yIHRoZSBjYWxsZXIsIGJ1dAotICAgIC8vIGluIHRoZSBuZXcgYmFz
aWMgYmxvY2suCisgICAgaWYgKG15SW5saW5pbmdDb3N0ID4gaW5saW5pbmdCYWxhbmNlKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaW5saW5lQ2FsbChjYWxsVGFyZ2V0Tm9kZSwg
cmVzdWx0T3BlcmFuZCwgY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVlKCksIHJlZ2lzdGVyT2Zmc2V0
LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbmV4dE9mZnNldCwga2luZCwgY2FsbFRhaWxM
aW5rYWJpbGl0eSk7CisgICAgaW5saW5pbmdCYWxhbmNlIC09IG15SW5saW5pbmdDb3N0OwogICAg
IHJldHVybiB0cnVlOworICAgIAorfQorCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxp
bmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IENhbGxM
aW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFt
ZTo6S2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQoreworICAgIGlmICghY2Fs
bExpbmtTdGF0dXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgdW5z
aWduZWQgaW5saW5pbmdCYWxhbmNlID0gT3B0aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElu
bGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKTsKKyAgICBpZiAoSW5saW5lQ2FsbEZyYW1l
OjpzcGVjaWFsaXphdGlvbktpbmRGb3Ioa2luZCkgPT0gQ29kZUZvckNvbnN0cnVjdCkKKyAgICAg
ICAgaW5saW5pbmdCYWxhbmNlID0gc3RkOjptaW4oaW5saW5pbmdCYWxhbmNlLCBPcHRpb25zOjpt
YXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50
KCkpOworICAgIGlmIChjYWxsTGlua1N0YXR1cy5pc0Nsb3N1cmVDYWxsKCkpCisgICAgICAgIGlu
bGluaW5nQmFsYW5jZSA9IHN0ZDo6bWluKGlubGluaW5nQmFsYW5jZSwgT3B0aW9uczo6bWF4aW11
bUZ1bmN0aW9uRm9yQ2xvc3VyZUNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCkp
OworICAgIAorICAgIC8vIEZpcnN0IGNoZWNrIGlmIHdlIGNhbiBhdm9pZCBjcmVhdGluZyBjb250
cm9sIGZsb3cuIE91ciBpbmxpbmVyIGRvZXMgc29tZSBDRkcKKyAgICAvLyBzaW1wbGlmaWNhdGlv
biBvbiB0aGUgZmx5IGFuZCB0aGlzIGhlbHBzIHJlZHVjZSBjb21waWxlIHRpbWVzLCBidXQgd2Ug
Y2FuIG9ubHkgbGV2ZXJhZ2UKKyAgICAvLyB0aGlzIGluIGNhc2VzIHdoZXJlIHdlIGRvbid0IG5l
ZWQgY29udHJvbCBmbG93IGRpYW1vbmRzIHRvIGNoZWNrIHRoZSBjYWxsZWUuCisgICAgaWYgKCFj
YWxsTGlua1N0YXR1cy5jb3VsZFRha2VTbG93UGF0aCgpICYmIGNhbGxMaW5rU3RhdHVzLnNpemUo
KSA9PSAxKSB7CisgICAgICAgIHJldHVybiBhdHRlbXB0VG9JbmxpbmVDYWxsKAorICAgICAgICAg
ICAgY2FsbFRhcmdldE5vZGUsIHJlc3VsdE9wZXJhbmQsIGNhbGxMaW5rU3RhdHVzWzBdLmNhbGxl
ZSgpLCByZWdpc3Rlck9mZnNldCwKKyAgICAgICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBuZXh0T2Zmc2V0LCBraW5kLCBDYWxsVGFpbElzTGlua2FibGUsIHByZWRpY3Rpb24sCisg
ICAgICAgICAgICBpbmxpbmluZ0JhbGFuY2UpOworICAgIH0KKyAgICAKKyAgICAvLyBXZSBuZWVk
IHRvIGNyZWF0ZSBzb21lIGtpbmQgb2Ygc3dpdGNoIG92ZXIgY2FsbGVlLgorCisgICAgYm9vbCBh
bGxBcmVDbG9zdXJlQ2FsbHMgPSB0cnVlOworICAgIGJvb2wgYWxsQXJlRGlyZWN0Q2FsbHMgPSB0
cnVlOworICAgIGZvciAodW5zaWduZWQgaSA9IGNhbGxMaW5rU3RhdHVzLnNpemUoKTsgaS0tOykg
eworICAgICAgICBpZiAoY2FsbExpbmtTdGF0dXNbaV0uY2FsbGVlKCkuaXNDbG9zdXJlQ2FsbCgp
KQorICAgICAgICAgICAgYWxsQXJlRGlyZWN0Q2FsbHMgPSBmYWxzZTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgYWxsQXJlQ2xvc3VyZUNhbGxzID0gZmFsc2U7CisgICAgfQorICAgIAorICAg
IE5vZGUqIHRoaW5nVG9Td2l0Y2hPbjsKKyAgICBpZiAoYWxsQXJlRGlyZWN0Q2FsbHMpCisgICAg
ICAgIHRoaW5nVG9Td2l0Y2hPbiA9IGNhbGxUYXJnZXROb2RlOworICAgIGVsc2UgaWYgKGFsbEFy
ZUNsb3N1cmVDYWxscykKKyAgICAgICAgdGhpbmdUb1N3aXRjaE9uID0gYWRkVG9HcmFwaChHZXRF
eGVjdXRhYmxlLCB0aGluZ1RvU3dpdGNoT24pOworICAgIGVsc2UgeworICAgICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIHRoaXMgY2FzZSwgYnV0IGl0J3MgdHJpY2t5
IGFuZCB3ZSBkb24ndCBrbm93IG9mIGNhc2VzCisgICAgICAgIC8vIHdoZXJlIGl0IHdvdWxkIGJl
IGJlbmVmaWNpYWwuIEFsc28sIENhbGxMaW5rU3RhdHVzIHdvdWxkIG1ha2UgYWxsIGNhbGxlZXMg
YXBwZWFyIGxpa2UKKyAgICAgICAgLy8gY2xvc3VyZSBjYWxscyBpZiBhbnkgY2FsbHMgd2VyZSBj
bG9zdXJlIGNhbGxzIC0gZXhjZXB0IGZvciBjYWxscyB0byBpbnRlcm5hbCBmdW5jdGlvbnMuCisg
ICAgICAgIC8vIFNvIHRoaXMgd2lsbCBvbmx5IGFyaXNlIGlmIHNvbWUgY2FsbGVlcyBhcmUgaW50
ZXJuYWwgZnVuY3Rpb25zIGFuZCBvdGhlcnMgYXJlIGNsb3N1cmVzLgorICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MDIwCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgCisgICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzIHBhcnQu
CiB9CiAKIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZU1pbk1heChpbnQgcmVzdWx0T3BlcmFu
ZCwgTm9kZVR5cGUgb3AsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKQpAQCAtMTY0NSw3ICsxNzIzLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlVHlwZWRBcnJheUNvbgogCiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudElu
dGVybmFsRnVuY3Rpb24oCiAgICAgaW50IHJlc3VsdE9wZXJhbmQsIEludGVybmFsRnVuY3Rpb24q
IGZ1bmN0aW9uLCBpbnQgcmVnaXN0ZXJPZmZzZXQsCi0gICAgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQpCisgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgLy8gSWYgd2UgZXZlciBmaW5kIHRoYXQgd2UgaGF2
ZSBhIGxvdCBvZiBpbnRlcm5hbCBmdW5jdGlvbnMgdGhhdCB3ZSBzcGVjaWFsaXplIGZvciwKICAg
ICAvLyB0aGVuIHdlIHNob3VsZCBwcm9iYWJseSBoYXZlIHNvbWUgc29ydCBvZiBoYXNodGFibGUg
ZGlzcGF0Y2gsIG9yIG1heWJlIGV2ZW4KQEAgLTE2NTQsOCArMTczMiw2IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50SW50ZXIKICAgICAvLyB3ZSBrbm93IGFib3V0IGlzIHNt
YWxsIGVub3VnaCwgdGhhdCBoYXZpbmcganVzdCBhIGxpbmVhciBjYXNjYWRlIG9mIGlmIHN0YXRl
bWVudHMKICAgICAvLyBpcyBnb29kIGVub3VnaC4KICAgICAKLSAgICBVTlVTRURfUEFSQU0ocHJl
ZGljdGlvbik7IC8vIFJlbW92ZSB0aGlzIG9uY2Ugd2UgZG8gbW9yZSB0aGluZ3MuCi0gICAgCiAg
ICAgaWYgKGZ1bmN0aW9uLT5jbGFzc0luZm8oKSA9PSBBcnJheUNvbnN0cnVjdG9yOjppbmZvKCkp
IHsKICAgICAgICAgaWYgKGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKSAhPSBtX2lubGluZVN0YWNr
VG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0yMjE1LDcgKzIyOTEsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGgu
ZnJlZXplKGNhY2hlZEZ1bmN0aW9uKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoY2FjaGVkRnVu
Y3Rpb24tPmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpOwogICAgICAgICAgICAgICAgIE5v
ZGUqIGFjdHVhbENhbGxlZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6Q2FsbGVlKSk7
Ci0gICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0Z1bmN0aW9uLCBPcEluZm8oZnJvemVu
KSwgYWN0dWFsQ2FsbGVlKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwg
T3BJbmZvKGZyb3plbiksIGFjdHVhbENhbGxlZSk7CiAgICAgICAgICAgICAgICAgc2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChK
U0NvbnN0YW50LCBPcEluZm8oZnJvemVuKSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfZ2V0X2NhbGxlZSk7CkBAIC0yODk3LDcgKzI5NzMsNyBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAvLyBhbHJlYWR5
IGduYXJseSBlbm91Z2ggYXMgaXQgaXMuCiAgICAgICAgICAgICBBU1NFUlQocG9pbnRlcklzRnVu
Y3Rpb24oY3VycmVudEluc3RydWN0aW9uWzJdLnUuc3BlY2lhbFBvaW50ZXIpKTsKICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoCi0gICAgICAgICAgICAgICAgQ2hlY2tGdW5jdGlvbiwKKyAgICAgICAg
ICAgICAgICBDaGVja0NlbGwsCiAgICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGguZnJlZXpl
KHN0YXRpY19jYXN0PEpTQ2VsbCo+KGFjdHVhbFBvaW50ZXJGb3IoCiAgICAgICAgICAgICAgICAg
ICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5zcGVjaWFsUG9pbnRlcikpKSksCiAgICAgICAgICAgICAgICAgZ2V0KFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSkpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCShyZXZp
c2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFk
aW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MCw4ICs5MCwxMCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5zZXRDaGlsZDEoRWRnZSgpKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOgot
ICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmNoaWxkMSgpKQorICAgICAgICAgICAgICAg
ICAgICBpZiAoIW5vZGUtPmNoaWxkMSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBzd2l0Y2gg
KG5vZGUtPmNoaWxkMSgpLT5vcCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgUGhpOgog
ICAgICAgICAgICAgICAgICAgICBjYXNlIFNldEFyZ3VtZW50OgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDQsNiArMTQ0LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQog
ICAgIGNhc2UgRmlhdEludDUyOgogICAgIGNhc2UgTWFrZVJvcGU6CiAgICAgY2FzZSBWYWx1ZVRv
SW50MzI6CisgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgogICAgICAgICBkZWYoUHVyZVZhbHVlKG5v
ZGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKQEAgLTIzOSwxMiArMjQwLDggQEAgdm9p
ZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICBkZWYoUHVyZVZh
bHVlKG5vZGUsIG5vZGUtPmFyaXRoTW9kZSgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICAgICAg
Ci0gICAgY2FzZSBDaGVja0Z1bmN0aW9uOgotICAgICAgICBkZWYoUHVyZVZhbHVlKENoZWNrRnVu
Y3Rpb24sIEFkamFjZW5jeUxpc3QoQWRqYWNlbmN5TGlzdDo6Rml4ZWQsIG5vZGUtPmNoaWxkMSgp
KSwgbm9kZS0+ZnVuY3Rpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgIGNh
c2UgQ2hlY2tFeGVjdXRhYmxlOgotICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUsIG5vZGUtPmV4
ZWN1dGFibGUoKSkpOworICAgIGNhc2UgQ2hlY2tDZWxsOgorICAgICAgICBkZWYoUHVyZVZhbHVl
KENoZWNrQ2VsbCwgQWRqYWNlbmN5TGlzdChBZGphY2VuY3lMaXN0OjpGaXhlZCwgbm9kZS0+Y2hp
bGQxKCkpLCBub2RlLT5mdW5jdGlvbigpKSk7CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAg
ICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
OTgsMTMgKzg5OCwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
IAotICAgICAgICBjYXNlIENoZWNrRXhlY3V0YWJsZTogeworICAgICAgICBjYXNlIEdldEV4ZWN1
dGFibGU6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8RnVuY3Rpb25Vc2U+KG5vZGUtPmNoaWxkMSgp
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAg
Y2FzZSBDaGVja1N0cnVjdHVyZToKLSAgICAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOgorICAgICAg
ICBjYXNlIENoZWNrQ2VsbDoKICAgICAgICAgY2FzZSBDaGVja0hhc0luc3RhbmNlOgogICAgICAg
ICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgICAgIGNhc2UgR2V0QnV0dGVyZmx5OiB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY5LDYgKzY5LDcgQEAgR3JhcGg6OkdyYXBoKFZNJiB2bSwgUGxhbiYgcGxhbiwgTG9uZ0xpdgog
ICAgICwgbV9mb3JtKExvYWRTdG9yZSkKICAgICAsIG1fdW5pZmljYXRpb25TdGF0ZShMb2NhbGx5
VW5pZmllZCkKICAgICAsIG1fcmVmQ291bnRTdGF0ZShFdmVyeXRoaW5nSXNMaXZlKQorICAgICwg
bV9zaG91bGRQcm9maWxlKGZhbHNlKQogewogICAgIEFTU0VSVChtX3Byb2ZpbGVkQmxvY2spOwog
ICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMTcy
MTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNv
cHkpCkBAIC03NjEsNiArNzYxLDcgQEAgcHVibGljOgogICAgIEdyYXBoRm9ybSBtX2Zvcm07CiAg
ICAgVW5pZmljYXRpb25TdGF0ZSBtX3VuaWZpY2F0aW9uU3RhdGU7CiAgICAgUmVmQ291bnRTdGF0
ZSBtX3JlZkNvdW50U3RhdGU7CisgICAgYm9vbCBtX3Nob3VsZFByb2ZpbGU7CiBwcml2YXRlOgog
ICAgIAogICAgIHZvaWQgaGFuZGxlU3VjY2Vzc29yKFZlY3RvcjxCYXNpY0Jsb2NrKiwgMTY+JiB3
b3JrbGlzdCwgQmFzaWNCbG9jayosIEJhc2ljQmxvY2sqIHN1Y2Nlc3Nvcik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2MCw3ICsxNjAs
OCBAQCBzdHJ1Y3QgU3dpdGNoQ2FzZSB7CiBlbnVtIFN3aXRjaEtpbmQgewogICAgIFN3aXRjaElt
bSwKICAgICBTd2l0Y2hDaGFyLAotICAgIFN3aXRjaFN0cmluZworICAgIFN3aXRjaFN0cmluZywK
KyAgICBTd2l0Y2hDZWxsCiB9OwogCiBzdHJ1Y3QgU3dpdGNoRGF0YSB7CkBAIC0xMDQ0LDkgKzEw
NDUsMTEgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBtX29wSW5mbzIgPSBwcmVkaWN0aW9uOwog
ICAgIH0KICAgICAKLSAgICBib29sIGNhbkJlS25vd25GdW5jdGlvbigpCisgICAgYm9vbCBoYXND
ZWxsT3BlcmFuZCgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2Fz
ZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6CisgICAgICAgIGNhc2UgQ2hlY2tDZWxsOgog
ICAgICAgICBjYXNlIE5hdGl2ZUNvbnN0cnVjdDoKICAgICAgICAgY2FzZSBOYXRpdmVDYWxsOgog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDU1LDU0ICsxMDU4LDE2IEBAIHN0cnVjdCBO
b2RlIHsKICAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgaGFzS25vd25GdW5jdGlvbigpCisg
ICAgRnJvemVuVmFsdWUqIGNlbGxPcGVyYW5kKCkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAob3Ao
KSkgewotICAgICAgICBjYXNlIE5hdGl2ZUNvbnN0cnVjdDoKLSAgICAgICAgY2FzZSBOYXRpdmVD
YWxsOgotICAgICAgICAgICAgcmV0dXJuIChib29sKW1fb3BJbmZvOwotICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAg
IEpTRnVuY3Rpb24qIGtub3duRnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNhbkJl
S25vd25GdW5jdGlvbigpKTsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU0Z1bmN0aW9u
Kj4obV9vcEluZm8pOwotICAgIH0KLQotICAgIHZvaWQgZ2l2ZUtub3duRnVuY3Rpb24oSlNGdW5j
dGlvbiogY2FsbERhdGEpIAotICAgIHsKLSAgICAgICAgQVNTRVJUKGNhbkJlS25vd25GdW5jdGlv
bigpKTsKLSAgICAgICAgbV9vcEluZm8gPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihjYWxsRGF0
YSk7Ci0gICAgfQotCi0gICAgYm9vbCBoYXNGdW5jdGlvbigpCi0gICAgewotICAgICAgICBzd2l0
Y2ggKG9wKCkpIHsKLSAgICAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOgotICAgICAgICBjYXNlIEFs
bG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDoKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgRnJvemVuVmFsdWUqIGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCho
YXNGdW5jdGlvbigpKTsKKyAgICAgICAgQVNTRVJUKGhhc0NlbGxPcGVyYW5kKCkpOwogICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxGcm96ZW5WYWx1ZSo+KG1fb3BJbmZvKTsKICAgICB9
CiAgICAgCi0gICAgYm9vbCBoYXNFeGVjdXRhYmxlKCkKKyAgICB2b2lkIHNldENlbGxPcGVyYW5k
KEZyb3plblZhbHVlKiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBvcCgpID09IENoZWNr
RXhlY3V0YWJsZTsKLSAgICB9Ci0gICAgCi0gICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUo
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGpzQ2FzdDxFeGVjdXRhYmxlQmFzZSo+KHJlaW50ZXJw
cmV0X2Nhc3Q8SlNDZWxsKj4obV9vcEluZm8pKTsKKyAgICAgICAgQVNTRVJUKGhhc0NlbGxPcGVy
YW5kKCkpOworICAgICAgICBtX29wSW5mbyA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHZhbHVl
KTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNWYXJpYWJsZVdhdGNocG9pbnRTZXQoKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMTcyMTc3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTMsNyArMTUzLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
ICAgIG1hY3JvKFB1dEJ5SWRGbHVzaCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVNdXN0R2VuZXJh
dGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAogICAgIG1hY3JvKFB1dEJ5SWREaXJlY3QsIE5vZGVN
dXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAogICAgIG1hY3JvKENoZWNrU3RydWN0
dXJlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCi0gICAgbWFjcm8oQ2hlY2tFeGVjdXRhYmxlLCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oR2V0RXhlY3V0YWJsZSwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oUHV0U3RydWN0dXJlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
QWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0U3Rv
cmFnZSkgXAogICAgIG1hY3JvKFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UsIE5vZGVNdXN0R2Vu
ZXJhdGUgfCBOb2RlUmVzdWx0U3RvcmFnZSkgXApAQCAtMTg2LDcgKzE4Niw4IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhWYXJpYWJsZVdhdGNocG9pbnQsIE5v
ZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhWYXJJbmplY3Rpb25XYXRjaHBvaW50LCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oRnVuY3Rpb25SZWVudHJ5V2F0Y2hwb2ludCwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAotICAgIG1hY3JvKENoZWNrRnVuY3Rpb24sIE5vZGVNdXN0R2VuZXJh
dGUpIFwKKyAgICBtYWNybyhDaGVja0NlbGwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNy
byhDaGVja0JhZENlbGwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhBbGxvY2F0aW9u
UHJvZmlsZVdhdGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja0lu
Qm91bmRzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgXApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21DYW5vbmljYWxpemF0aW9u
UGhhc2UuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
Miw4ICs5MiwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGls
ZHJlbi5yZW1vdmVFZGdlKGktLSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5
KCkpCisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0
VG9DaGVjaygpOwogICAgICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcAkocmV2aXNpb24gMTcy
MTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDYgKzEyNSw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgICAgICAgICAgfQpAQCAtMTQyLDYgKzE0Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTE0OSw4ICsxNTEsMTAgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgY2FzZSBIYXJkUGhhbnRvbTogewotICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+
Y2hpbGRyZW4uaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRy
ZW4uaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2Nh
dG9yLmZyZWUobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxNzIx
NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODksNiArNjg5LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKIAogICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4o
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAKKyAgICBDYWxsTGlua0luZm8qIGluZm8gPSBt
X2ppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7CisKKyAgICBpZiAobV9qaXQuZ3Jh
cGgoKS5tX3Nob3VsZFByb2ZpbGUpIHsKKyAgICAgICAgbV9qaXQudm0oKS5jYWxsRWRnZUxvZy0+
ZW1pdExvZ0NvZGUoCisgICAgICAgICAgICBtX2ppdCwgY2FsbExpbmtJbmZvLT5jYWxsRWRnZVBy
b2ZpbGUsIGNhbGxlZS5qc1ZhbHVlUmVncygpKTsKKyAgICB9CisgICAgCiAgICAgc2xvd1BhdGgu
YXBwZW5kKGJyYW5jaE5vdENlbGwoY2FsbGVlLmpzVmFsdWVSZWdzKCkpKTsKICAgICBzbG93UGF0
aC5hcHBlbmQobV9qaXQuYnJhbmNoUHRyV2l0aFBhdGNoKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgY2FsbGVlUGF5bG9hZEdQUiwgdGFyZ2V0VG9DaGVjaykpOwogICAgIG1faml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2FsbGVlUGF5bG9hZEdQUiwgT0JKRUNUX09GRlNFVE9G
KEpTRnVuY3Rpb24sIG1fc2NvcGUpKSwgcmVzdWx0UGF5bG9hZEdQUik7CkBAIC03MTMsNyArNzIw
LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAgICBt
X2ppdC5tb3ZlKGNhbGxlZVBheWxvYWRHUFIsIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgbV9q
aXQubW92ZShjYWxsZWVUYWdHUFIsIEdQUkluZm86OnJlZ1QxKTsKICAgICB9Ci0gICAgQ2FsbExp
bmtJbmZvKiBpbmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbygpOwogICAg
IG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoaW5mbyksIEdQUkluZm86
OnJlZ1QyKTsKICAgICBKSVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9IG1faml0Lm5lYXJDYWxs
KCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjI2LDcgKzYy
Niw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNaXNjU3RyaWN0RXEKIAogdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKIHsKLQogICAgIGJvb2wgaXNDYWxs
ID0gbm9kZS0+b3AoKSA9PSBDYWxsOwogICAgIGlmICghaXNDYWxsKQogICAgICAgICBERkdfQVNT
RVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPm9wKCkgPT0gQ29uc3RydWN0KTsKQEAgLTY3
MCw2ICs2NjksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQog
CiAgICAgbV9qaXQuZW1pdFN0b3JlQ29kZU9yaWdpbihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwog
ICAgIAorICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gbV9qaXQuY29kZUJsb2NrKCkt
PmFkZENhbGxMaW5rSW5mbygpOworICAgIAorICAgIGlmIChtX2ppdC5ncmFwaCgpLm1fc2hvdWxk
UHJvZmlsZSkKKyAgICAgICAgbV9qaXQudm0oKS5jYWxsRWRnZUxvZy0+ZW1pdExvZ0NvZGUobV9q
aXQsIGNhbGxMaW5rSW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBjYWxsZWVHUFIpOworCiAgICAgc2xv
d1BhdGggPSBtX2ppdC5icmFuY2hQdHJXaXRoUGF0Y2goTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBjYWxsZWVHUFIsIHRhcmdldFRvQ2hlY2ssIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KDApKTsKIAogICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2FsbGVl
R1BSLCBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9zY29wZSkpLCByZXN1bHRHUFIpOwpA
QCAtNjgyLDcgKzY4Niw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5v
ZGUKICAgICBzbG93UGF0aC5saW5rKCZtX2ppdCk7CiAgICAgCiAgICAgbV9qaXQubW92ZShjYWxs
ZWVHUFIsIEdQUkluZm86OnJlZ1QwKTsgLy8gQ2FsbGVlIG5lZWRzIHRvIGJlIGluIHJlZ1QwCi0g
ICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkQ2Fs
bExpbmtJbmZvKCk7CiAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpyZWdUMik7IC8vIExpbmsgaW5mbyBuZWVkcyB0byBi
ZSBpbiByZWdUMgogICAgIEpJVENvbXBpbGVyOjpDYWxsIHNsb3dDYWxsID0gbV9qaXQubmVhckNh
bGwoKTsKICAgICAKQEAgLTM3ODQsMTggKzM3ODcsMjYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgobm9kZSk7
CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKLSAgICBjYXNlIENoZWNrRnVuY3Rpb246IHsKLSAg
ICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZEZ1bmN0aW9uLCBKU1ZhbHVlU291cmNlOjp1
bmJveGVkQ2VsbChmdW5jdGlvbi5ncHIoKSksIG5vZGUtPmNoaWxkMSgpLCBtX2ppdC5icmFuY2hX
ZWFrUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgZnVuY3Rpb24uZ3ByKCksIG5vZGUtPmZ1bmN0
aW9uKCktPnZhbHVlKCkuYXNDZWxsKCkpKTsKKyAgICBjYXNlIENoZWNrQ2VsbDogeworICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBjZWxsKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhCYWRDZWxsLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChj
ZWxsLmdwcigpKSwgbm9kZS0+Y2hpbGQxKCksIG1faml0LmJyYW5jaFdlYWtQdHIoSklUQ29tcGls
ZXI6Ok5vdEVxdWFsLCBjZWxsLmdwcigpLCBub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpLmFz
Q2VsbCgpKSk7CiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgICAgIAotICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOiB7CisgICAgY2FzZSBDaGVja0Jh
ZENlbGw6IHsKKyAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oQmFkQ2VsbCwg
SlNWYWx1ZVJlZ3MoKSwgMCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCisgICAg
Y2FzZSBHZXRFeGVjdXRhYmxlOiB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZ1bmN0
aW9uKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgc3BlY3VsYXRlQ2VsbFR5cGUobm9k
ZS0+Y2hpbGQxKCksIGZ1bmN0aW9uLmdwcigpLCBTcGVjRnVuY3Rpb24sIEpTRnVuY3Rpb25UeXBl
KTsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRFeGVjdXRhYmxlLCBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChmdW5jdGlvbi5ncHIoKSksIG5vZGUtPmNoaWxkMSgpLCBtX2ppdC5icmFu
Y2hXZWFrUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZnVu
Y3Rpb24uZ3ByKCksIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwgbm9kZS0+ZXhl
Y3V0YWJsZSgpKSk7Ci0gICAgICAgIG5vUmVzdWx0KG5vZGUpOworICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMsIFJldXNlLCBmdW5jdGlvbik7CisgICAgICAgIEdQUlJlZyBmdW5jdGlv
bkdQUiA9IGZ1bmN0aW9uLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOworICAgICAgICBzcGVjdWxhdGVDZWxsVHlwZShub2RlLT5jaGlsZDEoKSwgZnVuY3Rp
b25HUFIsIFNwZWNGdW5jdGlvbiwgSlNGdW5jdGlvblR5cGUpOworICAgICAgICBtX2ppdC5sb2Fk
UHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uR1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRP
ZkV4ZWN1dGFibGUoKSksIHJlc3VsdEdQUik7CisgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BS
LCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlv
blBoYXNlLmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEs
NiArNjEsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghT3B0aW9uczo6ZW5hYmxlT1NSRW50cnlU
b0ZUTCgpKQogICAgICAgICAgICAgbGV2ZWwgPSBGVEw6OkNhbkNvbXBpbGU7CiAgICAgICAgIAor
ICAgICAgICBtX2dyYXBoLm1fc2hvdWxkUHJvZmlsZSA9IHRydWU7CisgICAgICAgIAogICAgICAg
ICBJbnNlcnRpb25TZXQgaW5zZXJ0aW9uU2V0KG1fZ3JhcGgpOwogICAgICAgICBmb3IgKEJsb2Nr
SW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsK
ICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAko
cmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsMjEgQEAgcHVibGljOgogI2VuZGlm
CiAgICAgfQogICAgIAorICAgIHZvaWQgbG9hZFZhbHVlKEFkZHJlc3MgYWRkcmVzcywgSlNWYWx1
ZVJlZ3MgcmVncykKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbG9hZDY0KGFk
ZHJlc3MsIHJlZ3MuZ3ByKCkpOworI2Vsc2UKKyAgICAgICAgaWYgKGFkZHJlc3MuYmFzZSA9PSBy
ZWdzLnBheWxvYWRHUFIoKSkgeworICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNl
dChUYWdPZmZzZXQpLCByZWdzLnRhZ0dQUigpKTsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNz
LndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCksIHJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoUGF5bG9hZE9m
ZnNldCksIHJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndp
dGhPZmZzZXQoVGFnT2Zmc2V0KSwgcmVncy50YWdHUFIoKSk7CisgICAgICAgIH0KKyNlbmRpZgor
ICAgIH0KKyAgICAKICAgICB2b2lkIG1vdmVUcnVzdGVkVmFsdWUoSlNWYWx1ZSB2YWx1ZSwgSlNW
YWx1ZVJlZ3MgcmVncykKICAgICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAt
MTY2Niw2ICsxNjY2LDE1IEBAIHB1YmxpYzoKICAgICAgICAgbW92ZShhcmc0LCBHUFJJbmZvOjph
cmd1bWVudEdQUjMpOwogICAgIH0KICNlbmRpZgorICAgIAorICAgIHZvaWQgc2V0dXBBcmd1bWVu
dHMoSlNWYWx1ZVJlZ3MgYXJnMSkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAg
c2V0dXBBcmd1bWVudHMoYXJnMS5ncHIoKSk7CisjZWxzZQorICAgICAgICBzZXR1cEFyZ3VtZW50
cyhhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSk7CisjZW5kaWYKKyAgICB9CiAKICAg
ICB2b2lkIHNldHVwUmVzdWx0cyhHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QikKICAgICB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAkocmV2aXNpb24gMTcyMTc3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTYw
LDYgKzYwLDggQEAgcHVibGljOgogICAgIEdQUlJlZyB0YWdHUFIoKSBjb25zdCB7IHJldHVybiBJ
bnZhbGlkR1BSUmVnOyB9CiAgICAgR1BSUmVnIHBheWxvYWRHUFIoKSBjb25zdCB7IHJldHVybiBt
X2dwcjsgfQogICAgIAorICAgIGJvb2wgdXNlcyhHUFJSZWcgZ3ByKSBjb25zdCB7IHJldHVybiBt
X2dwciA9PSBncHI7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByOwogfTsKQEAg
LTE2OSw2ICsxNzEsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0YWdHUFIoKTsKICAgICB9
CiAKKyAgICBib29sIHVzZXMoR1BSUmVnIGdwcikgY29uc3QgeyByZXR1cm4gbV90YWdHUFIgPT0g
Z3ByIHx8IG1fcGF5bG9hZEdQUiA9PSBncHI7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgaW50OF90
IG1fdGFnR1BSOwogICAgIGludDhfdCBtX3BheWxvYWRHUFI7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMwMCw2ICszMDAsMTMgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2Rl
SQogICAgIHN0b3JlMzIocmVnVDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpTU3Rh
Y2s6OkNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2Fk
T2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAgICAgc3RvcmUzMihyZWdUMSwg
QWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgSlNTdGFjazo6Q2FsbGVlICogc3RhdGljX2Nh
c3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFRhZ09mZnNldCAtIHNpemVvZihDYWxsZXJGcmFt
ZUFuZFBDKSkpOwogCisgICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENh
bGxMaW5rSW5mbygpOworCisgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkgeworICAgICAg
ICBtX3ZtLT5jYWxsRWRnZUxvZy0+ZW1pdExvZ0NvZGUoCisgICAgICAgICAgICAqdGhpcywgaW5m
by0+Y2FsbEVkZ2VQcm9maWxlLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApKTsKKyAgICB9CisK
ICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbF9ldmFsKSB7CiAgICAgICAgIGNvbXBpbGVDYWxs
RXZhbChpbnN0cnVjdGlvbik7CiAgICAgICAgIHJldHVybjsKQEAgLTMxMyw3ICszMjAsNiBAQCB2
b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgYWRkU2xvd0Nhc2Uo
c2xvd0Nhc2UpOwogCiAgICAgQVNTRVJUKG1fY2FsbENvbXBpbGF0aW9uSW5mby5zaXplKCkgPT0g
Y2FsbExpbmtJbmZvSW5kZXgpOwotICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1fY29kZUJsb2Nr
LT5hZGRDYWxsTGlua0luZm8oKTsKICAgICBpbmZvLT5jYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6
Y2FsbFR5cGVGb3Iob3Bjb2RlSUQpOwogICAgIGluZm8tPmNvZGVPcmlnaW4gPSBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVPZmZzZXQpOwogICAgIGluZm8tPmNhbGxlZUdQUiA9IHJlZ1QwOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTIsNiArMjEyLDExIEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSwgcmVnVDApOyAvLyByZWdUMCBob2xk
cyBjYWxsZWUuCiAKICAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lz
dGVyLCBKU1N0YWNrOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rlcikp
IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CisgICAgCisgICAgQ2FsbExpbmtJbmZvKiBp
bmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5mbygpOworCisgICAgaWYgKHNob3VsZEVt
aXRQcm9maWxpbmcoKSkKKyAgICAgICAgbV92bS0+Y2FsbEVkZ2VMb2ctPmVtaXRMb2dDb2RlKCp0
aGlzLCBpbmZvLT5jYWxsRWRnZVByb2ZpbGUsIHJlZ1QwKTsKIAogICAgIGlmIChvcGNvZGVJRCA9
PSBvcF9jYWxsX2V2YWwpIHsKICAgICAgICAgY29tcGlsZUNhbGxFdmFsKGluc3RydWN0aW9uKTsK
QEAgLTIyMyw3ICsyMjgsNiBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNv
ZGVJCiAgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2UpOwogCiAgICAgQVNTRVJUKG1fY2FsbENvbXBp
bGF0aW9uSW5mby5zaXplKCkgPT0gY2FsbExpbmtJbmZvSW5kZXgpOwotICAgIENhbGxMaW5rSW5m
byogaW5mbyA9IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsKICAgICBpbmZvLT5jYWxs
VHlwZSA9IENhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3Iob3Bjb2RlSUQpOwogICAgIGluZm8tPmNv
ZGVPcmlnaW4gPSBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpOwogICAgIGluZm8tPmNhbGxl
ZUdQUiA9IHJlZ1QwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0lu
bGluZXMuaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAvLyBJbiBm
YWN0LCBpdCBjYW4gbWFrZSBhIGxvdCBvZiBzZW5zZTogb3V0c2lkZSBvZiBKU0MsIHRoaXMgZmls
ZSBiZWNvbWVzIGEga2luZCBvZiB1bWJyZWxsYQogLy8gaGVhZGVyIHRoYXQgcHVsbHMgaW4gbW9z
dCAoYWxsPykgb2YgdGhlIGludGVyZXN0aW5nIHRoaW5ncyBpbiBKU0MuCiAKKyNpbmNsdWRlICJD
YWxsRWRnZVByb2ZpbGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lSW5saW5lcy5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJHQ0luY29taW5nUmVmQ291
bnRlZElubGluZXMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNp
b24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFy
aXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzOwogICAgIGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlczsK
KyAgICBjbGFzcyBDYWxsRWRnZUxvZzsKICAgICBjbGFzcyBDb2RlQmxvY2s7CiAgICAgY2xhc3Mg
Q29kZUNhY2hlOwogICAgIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwpAQCAtMjMyLDYgKzIzMyw4
IEBAIG5hbWVzcGFjZSBKU0MgewogI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBPd25QdHI8
REZHOjpMb25nTGl2ZWRTdGF0ZT4gZGZnU3RhdGU7CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQp
CisgICAgICAgIAorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbEVkZ2VMb2c+IGNhbGxFZGdl
TG9nOwogCiAgICAgICAgIFZNVHlwZSB2bVR5cGU7CiAgICAgICAgIENsaWVudERhdGEqIGNsaWVu
dERhdGE7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL25ldy1hcnJh
eS10aGVuLWV4aXQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9uZXctYXJyYXktdGhlbi1leGl0LmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9uZXctYXJyYXktdGhlbi1leGl0LmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKK2Z1bmN0aW9uIGZvbyhmKSB7CisgICAgcmV0dXJuIG5l
dyBmKCk7Cit9CisKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7
ICsraSkKKyAgICBmb28oQXJyYXkpOworCit2YXIgZGlkQ2FsbCA9IGZhbHNlOworZm9vKGZ1bmN0
aW9uKCkgeyBkaWRDYWxsID0gdHJ1ZTsgfSk7CisKK2lmICghZGlkQ2FsbCkKKyAgICB0aHJvdyAi
RXJyb3I6IGRpZG4ndCBjYWxsIG15IGZ1bmN0aW9uLiI7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9P
d25QdHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Pd25QdHIuaAkocmV2aXNpb24g
MTcyMTc3KQorKysgU291cmNlL1dURi93dGYvT3duUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTcy
LDYgKzcyLDE0IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
PiBPd25QdHImIG9wZXJhdG9yPShPd25QdHI8VT4mJik7CiAKICAgICAgICAgdm9pZCBzd2FwKE93
blB0ciYgbykgeyBzdGQ6OnN3YXAobV9wdHIsIG8ubV9wdHIpOyB9CisgICAgICAgIAorICAgICAg
ICAvLyBDb25zdHJ1Y3QgYW4gb2JqZWN0IHRvIHN0b3JlIGludG8gdGhpcyBPd25QdHIsIGJ1dCBv
bmx5IHNvIGxvbmcgYXMgdGhpcyBPd25QdHIKKyAgICAgICAgLy8gZG9lc24ndCBhbHJlYWR5IHBv
aW50IHRvIGFuIG9iamVjdC4gVGhpcyB3aWxsIGVuc3VyZSB0aGF0IGFmdGVyIHlvdSBjYWxsIHRo
aXMsCisgICAgICAgIC8vIHRoZSBPd25QdHIgd2lsbCBwb2ludCB0byBhbiBpbnN0YW5jZSBvZiBU
LiBUaGlzIGluc3RhbmNlIG1heSBvciBtYXkgbm90IGhhdmUgYmVlbgorICAgICAgICAvLyBjcmVh
dGVkIGJ5IHRoaXMgY2FsbC4gTW9yZW92ZXIsIHRoaXMgY2FsbCB1c2VzIGFuIG9wcG9ydHVuaXN0
aWMgdHJhbnNhY3Rpb24sIGluCisgICAgICAgIC8vIHRoYXQgd2UgbWF5IGNyZWF0ZSBhbiBpbnN0
YW5jZSBvZiBUIGFuZCB0aGVuIGltbWVkaWF0ZWx5IHRocm93IGl0IGF3YXkuCisgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgICAgIHZvaWQgY3JlYXRlVHJhbnNhY3Rpb25h
bGx5KEFyZ3MuLi4gYXJncyk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBleHBsaWNpdCBPd25Q
dHIoUHRyVHlwZSBwdHIpIDogbV9wdHIocHRyKSB7IH0KQEAgLTE4Niw2ICsxOTQsMjggQEAgbmFt
ZXNwYWNlIFdURiB7CiAgICAgICAgIHJldHVybiBwLmdldCgpOwogICAgIH0KIAorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IGlubGluZSBPd25QdHI8
VD46OmNyZWF0ZVRyYW5zYWN0aW9uYWxseShBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICBp
ZiAobV9wdHIpIHsKKyAgICAgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBUKiBuZXdPYmplY3QgPSBu
ZXcgVChhcmdzLi4uKTsKKyAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKKyNpZiBFTkFC
TEUoQ09NUEFSRV9BTkRfU1dBUCkKKyAgICAgICAgZG8geworICAgICAgICAgICAgaWYgKG1fcHRy
KSB7CisgICAgICAgICAgICAgICAgZGVsZXRlIG5ld09iamVjdDsKKyAgICAgICAgICAgICAgICBX
VEY6OmxvYWRMb2FkRmVuY2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gd2hpbGUgKCFXVEY6OndlYWtDb21wYXJlQW5kU3dhcCgmbV9wdHIsIG51
bGxwdHIsIG5ld09iamVjdCkpOworI2Vsc2UKKyAgICAgICAgbV9wdHIgPSBuZXdPYmplY3Q7Cisj
ZW5kaWYKKyAgICB9CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6Ok93blB0cjsK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvU3BlY3RydW0uaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL1dURi93dGYvU3Bl
Y3RydW0uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMjIgKzMyLDMxIEBACiAKIG5hbWVzcGFjZSBXVEYg
ewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
Q291bnRlclR5cGUgPSB1bnNpZ25lZD4KIGNsYXNzIFNwZWN0cnVtIHsKIHB1YmxpYzoKLSAgICB0
eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz46Oml0ZXJhdG9yIGl0ZXJh
dG9yOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCB1bnNpZ25lZCBsb25nPjo6Y29u
c3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFw
PFQsIENvdW50ZXJUeXBlPjo6aXRlcmF0b3IgaXRlcmF0b3I7CisgICAgdHlwZWRlZiB0eXBlbmFt
ZSBIYXNoTWFwPFQsIENPdW50ZXJUeXBlPjo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7
CiAgICAgCiAgICAgU3BlY3RydW0oKSB7IH0KICAgICAKLSAgICB2b2lkIGFkZChjb25zdCBUJiBr
ZXksIHVuc2lnbmVkIGxvbmcgY291bnQgPSAxKQorICAgIHZvaWQgYWRkKGNvbnN0IFQmIGtleSwg
Q291bnRlclR5cGUgY291bnQgPSAxKQogICAgIHsKLSAgICAgICAgdHlwZW5hbWUgSGFzaE1hcDxU
LCB1bnNpZ25lZCBsb25nPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGNvdW50
KTsKKyAgICAgICAgaWYgKCFjb3VudCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdHlw
ZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5h
ZGQoa2V5LCBjb3VudCk7CiAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAg
ICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlICs9IGNvdW50OwogICAgIH0KICAgICAKLSAgICB1
bnNpZ25lZCBsb25nIGdldChjb25zdCBUJiBrZXkpIGNvbnN0CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVT4KKyAgICB2b2lkIGFkZEFsbChjb25zdCBTcGVjdHJ1bTxULCBVPiYgb3RoZXJTcGVjdHJ1
bSkKKyAgICB7CisgICAgICAgIGZvciAoYXV0byBlbnRyeSA6IG90aGVyU3BlY3RydW0pCisgICAg
ICAgICAgICBhZGQoZW50cnkua2V5LCBlbnRyeS5jb3VudCk7CisgICAgfQorICAgIAorICAgIENv
dW50ZXJUeXBlIGdldChjb25zdCBUJiBrZXkpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdF9p
dGVyYXRvciBpdGVyID0gbV9tYXAuZmluZChrZXkpOwogICAgICAgICBpZiAoaXRlciA9PSBtX21h
cC5lbmQoKSkKQEAgLTYzLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBLZXlBbmRDb3Vu
dCB7CiAgICAgICAgIEtleUFuZENvdW50KCkgeyB9CiAgICAgICAgIAotICAgICAgICBLZXlBbmRD
b3VudChjb25zdCBUJiBrZXksIHVuc2lnbmVkIGxvbmcgY291bnQpCisgICAgICAgIEtleUFuZENv
dW50KGNvbnN0IFQmIGtleSwgQ291bnRlclR5cGUgY291bnQpCiAgICAgICAgICAgICA6IGtleShr
ZXkpCiAgICAgICAgICAgICAsIGNvdW50KGNvdW50KQogICAgICAgICB7CkBAIC04MCw3ICs4OSw3
IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIFQga2V5OwotICAgICAgICB1bnNpZ25l
ZCBsb25nIGNvdW50OworICAgICAgICBDb3VudGVyVHlwZSBjb3VudDsKICAgICB9OwogICAgIAog
ICAgIC8vIFJldHVybnMgYSBsaXN0IG9yZGVyZWQgZnJvbSBsb3dlc3QtY291bnQgdG8gaGlnaGVz
dC1jb3VudC4KQEAgLTk0LDggKzEwMywxOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsaXN0
OwogICAgIH0KICAgICAKKyAgICB2b2lkIGNsZWFyKCkgeyBtX21hcC5jbGVhcigpOyB9CisgICAg
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICB2b2lkIHJlbW92ZUlmKGNvbnN0
IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgeworICAgICAgICBtX21hcC5yZW1vdmVJZihbZnVuY3Rv
cl0gKEhhc2hNYXA8VCwgQ291bnRlclR5cGU+OjpLZXlWYWx1ZVBhaXJUeXBlJiBwYWlyKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0b3IoS2V5QW5kQ291bnQocGFpci5rZXksIHBhaXIu
dmFsdWUpKTsKKyAgICAgICAgICAgIH0pOworICAgIH0KKyAgICAKIHByaXZhdGU6Ci0gICAgSGFz
aE1hcDxULCB1bnNpZ25lZCBsb25nPiBtX21hcDsKKyAgICBIYXNoTWFwPFQsIENvdW50ZXJUeXBl
PiBtX21hcDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdURgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236724</attachid>
            <date>2014-08-16 16:58:35 -0700</date>
            <delta_ts>2014-08-16 20:44:03 -0700</delta_ts>
            <desc>very close</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>97055</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZS5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIENhbGxFZGdlX2gKKyNkZWZpbmUgQ2FsbEVkZ2VfaAor
CisjaW5jbHVkZSAiQ2FsbFZhcmlhbnQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIENh
bGxFZGdlIHsKK3B1YmxpYzoKKyAgICBDYWxsRWRnZSgpOworICAgIENhbGxFZGdlKENhbGxWYXJp
YW50IGNhbGxlZSwgQ2FsbEVkZ2VDb3VudFR5cGUgY291bnQpOworICAgIAorICAgIGJvb2wgb3Bl
cmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fY2FsbGVlOyB9CisgICAgCisgICAgQ2FsbFZhcmlh
bnQgY2FsbGVlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsZWU7IH0KKyAgICBDYWxsRWRnZUNvdW50
VHlwZSBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnQ7IH0KKyAgICAKK3B1YmxpYzoKKyAg
ICBDYWxsVmFyaWFudCBtX2NhbGxlZTsKKyAgICBDYWxsRWRnZUNvdW50VHlwZSBtX2NvdW50Owor
fTsKKworaW5saW5lIENhbGxFZGdlOjpDYWxsRWRnZShDYWxsVmFyaWFudCBjYWxsZWUsIGZsb2F0
IGNvdW50KQorICAgIDogbV9jYWxsZWUoY2FsbGVlKQorICAgICwgbV9jb3VudChjb3VudCkKK3sK
K30KKworaW5saW5lIENhbGxFZGdlOjpDYWxsRWRnZSgpCisgICAgOiBDYWxsRWRnZShDYWxsVmFy
aWFudCgpLCAwKQoreworfQorCit0eXBlZGVmIFZlY3RvcjxDYWxsRWRnZSwgMT4gQ2FsbEVkZ2VM
aXN0OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIENhbGxFZGdlX2gKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmls
ZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bEVkZ2VQcm9maWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyMyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQ2FsbEVkZ2VQcm9maWxlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitW
ZWN0b3I8Q2FsbEVkZ2U+IENhbGxFZGdlUHJvZmlsZTo6Y2FsbEVkZ2VzKCkgY29uc3QKK3sKKyAg
ICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIAorICAgIENhbGxFZGdl
TGlzdCByZXN1bHQ7CisgICAgCisgICAgQ2FsbFZhcmlhbnQgcHJpbWFyeUNhbGxlZSA9IG1fcHJp
bWFyeUNhbGxlZTsKKyAgICBmbG9hdCBudW1DYWxsc1RvUHJpbWFyeSA9IG1fbnVtQ2FsbHNUb1By
aW1hcnk7CisgICAgLy8gRGVmZW5kIGFnYWluc3QgcmFjZXMuIFRoZXNlIGZpZWxkcyBhcmUgbW9k
aWZpZWQgYnkgdGhlIGxvZyBwcm9jZXNzb3Igd2l0aG91dCBsb2NraW5nLgorICAgIGlmICghIXBy
aW1hcnlDYWxsZWUgJiYgbnVtQ2FsbHNUb1ByaW1hcnkpCisgICAgICAgIHJlc3VsdC5hcHBlbmQo
Q2FsbEVkZ2UocHJpbWFyeUNhbGxlZSwgbnVtQ2FsbHNUb1ByaW1hcnkpKTsKKyAgICAKKyAgICBp
ZiAobV9vdGhlckNhbGxlZXMpIHsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgaWYgdGhlIHBy
aW1hcnkgdGhyZWFkIGhhZCBqdXN0IGNyZWF0ZWQgYSBtX290aGVyQ2FsbGVzIHdoaWxlIGxvZwor
ICAgICAgICAvLyBwcm9jZXNzaW5nLCB3ZSBzZWUgYSBjb25zaXN0ZW50bHkgY3JlYXRlZCBvbmUu
IFRoZSBsb2NrIGJlaW5nIGhlbGQgaXMgaW5zdWZmaWNpZW50IGZvcgorICAgICAgICAvLyB0aGlz
LCBzaW5jZSB0aGUgbG9nIHByb2Nlc3NvciB3aWxsIG9ubHkgZ3JhYiB0aGUgbG9jayB3aGVuIG1l
cmdpbmcgdGhlIHNlY29uZGFyeQorICAgICAgICAvLyBzcGVjdHJ1bSBpbnRvIHRoZSBwcmltYXJ5
IG9uZSBidXQgbWF5IHN0aWxsIGNyZWF0ZSB0aGUgZGF0YSBzdHJ1Y3R1cmUgd2l0aG91dCBob2xk
aW5nCisgICAgICAgIC8vIGxvY2tzLgorICAgICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKKyAg
ICAgICAgZm9yIChDYWxsRWRnZSBlbnRyeSA6IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZCkK
KyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZW50cnkpOworICAgIH0KKyAgICAKKyAgICBzdGQ6
OnNvcnQocmVzdWx0LmJlZ2luKCksIHJlc3VsdC5lbmQoKSwgW10gKGNvbnN0IENhbGxFZGdlJiBh
LCBjb25zdCBDYWxsRWRnZSYgYikgLT4gYm9vbCB7CisgICAgICAgICAgICByZXR1cm4gYS5jb3Vu
dCgpID4gYi5jb3VudCgpOworICAgICAgICB9KTsKKyAgICAKKyAgICBpZiAocmVzdWx0LnNpemUo
KSA+PSAyKQorICAgICAgICBBU1NFUlQocmVzdWx0WzBdLmNvdW50KCkgPiByZXN1bHQubGFzdCgp
LmNvdW50KCkpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Zsb2F0IENhbGxFZGdl
UHJvZmlsZTo6bnVtQ2FsbHNUb0tub3duQ2VsbHMoKSBjb25zdAoreworICAgIHVuc2lnbmVkIHJl
c3VsdCA9IDA7CisgICAgZm9yIChDYWxsRWRnZSBlZGdlIDogY2FsbEVkZ2VzKCkpCisgICAgICAg
IHJlc3VsdCArPSBlZGdlLmNvdW50KCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGlj
IGJvb2wgd29ydGhEZXNwZWNpZnlpbmcoY29uc3QgQ2FsbFZhcmlhbnQmIHZhcmlhbnQpCit7Cisg
ICAgcmV0dXJuICFIZWFwOjppc01hcmtlZCh2YXJpYW50LnJhd0NhbGxlZUNlbGwoKSkKKyAgICAg
ICAgJiYgSGVhcDo6aXNNYXJrZWQodmFyaWFudC5kZXNwZWNpZmllZENsb3N1cmUoKS5yYXdDYWxs
ZWVDZWxsKCkpOworfQorCitib29sIENhbGxFZGdlUHJvZmlsZTo6d29ydGhEZXNwZWNpZnlpbmco
KQoreworICAgIGlmIChtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAKKyAgICBpZiAoISFtX3ByaW1hcnlDYWxsZWUgJiYgIXdvcnRoRGVzcGVjaWZ5
aW5nKG1fcHJpbWFyeUNhbGxlZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBp
ZiAobV9vdGhlckNhbGxlZXMpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9vdGhlckNh
bGxlZXMtPm1fcHJvY2Vzc2VkLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgaWYgKCF3b3J0
aERlc3BlY2lmeWluZyhtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCkpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDYWxsRWRnZVByb2ZpbGU6OnZpc2l0V2VhaygpCit7
CisgICAgaWYgKCFtX3ByaW1hcnlDYWxsZWUgJiYgIW1fb3RoZXJDYWxsZWVzKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAg
ICAKKyAgICAvLyBTZWUgaWYgYW55dGhpbmcgaXMgZGVhZCBhbmQgaWYgdGhhdCBjYW4gYmUgcmVj
dGlmaWVkIGJ5IGRlc3BlY2lmeWluZy4KKyAgICBpZiAod29ydGhEZXNwZWNpZnlpbmcoKSkgewor
ICAgICAgICBDYWxsU3BlY3RydW0gbmV3U3BlY3RydW07CisgICAgICAgIAorICAgICAgICBpZiAo
ISFtX3ByaW1hcnlDYWxsZWUpCisgICAgICAgICAgICBuZXdTcGVjdHJ1bS5hZGQobV9wcmltYXJ5
Q2FsbGVlLmRlc3BlY2lmaWVkQ2xvc3VyZSgpLCBtX251bUNhbGxzVG9QcmltYXJ5KTsKKyAgICAg
ICAgCisgICAgICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLnNpemUoKTsgaS0tOykgeworICAg
ICAgICAgICAgICAgIG5ld1NwZWN0cnVtLmFkZCgKKyAgICAgICAgICAgICAgICAgICAgbV9vdGhl
ckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNhbGxlZSgpLmRlc3BlY2lmaWVkQ2xvc3VyZSgpLAor
ICAgICAgICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQo
KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgVmVjdG9yPENhbGxTcGVjdHJ1bTo6S2V5QW5kQ291bnQ+IGxpc3QgPSBuZXdT
cGVjdHJ1bS5idWlsZExpc3QoKTsKKyAgICAgICAgQVNTRVJUKGxpc3Quc2l6ZSgpKTsKKyAgICAg
ICAgbV9wcmltYXJ5Q2FsbGVlID0gbGlzdC5sYXN0KCkua2V5OworICAgICAgICBtX251bUNhbGxz
VG9QcmltYXJ5ID0gbGlzdC5sYXN0KCkuY291bnQ7CisgICAgICAgIAorICAgICAgICBBU1NFUlQo
ISFtX290aGVyQ2FsbGVlcyA9PSAobGlzdC5zaXplKCkgPj0gMikpOworICAgICAgICBpZiAobV9v
dGhlckNhbGxlZXMpIHsKKyAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5j
bGVhcigpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbGlzdC5zaXplKCkgLSAxOyBp
LS07KQorICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5hcHBlbmQo
Q2FsbEVkZ2UobGlzdFtpXS5rZXksIGxpc3RbaV0uY291bnQpKTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgbV9jbG9zdXJlc0FyZURlc3BlY2lmaWVkID0gdHJ1ZTsKKyAgICAgICAgCisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKCEhbV9wcmltYXJ5Q2FsbGVlICYm
ICFIZWFwOjppc01hcmtlZChtX3ByaW1hcnlDYWxsZWUucmF3Q2FsbGVlQ2VsbCgpKSkgeworICAg
ICAgICBtX3ByaW1hcnlDYWxsZWUgPSBudWxscHRyOworICAgICAgICBtX251bUNhbGxzVG9Vbmtu
b3duQ2VsbCArPSBtX251bUNhbGxzVG9QcmltYXJ5OworICAgICAgICBtX251bUNhbGxzVG9Qcmlt
YXJ5ID0gMDsKKyAgICB9CisgICAgCisgICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6
ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChIZWFwOjppc01hcmtlZChtX290aGVyQ2FsbGVl
cy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCkucmF3Q2FsbGVlQ2VsbCgpKSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbV9udW1DYWxsc1RvVW5r
bm93bkNlbGwgKz0gbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNvdW50KCk7CisgICAg
ICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaS0tXSA9IG1fb3RoZXJDYWxsZWVz
LT5tX3Byb2Nlc3NlZC5sYXN0KCk7CisgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9j
ZXNzZWQucmVtb3ZlTGFzdCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBPbmx5
IGV4aXN0cyB3aGlsZSB3ZSBhcmUgcHJvY2Vzc2luZyB0aGUgbG9nLgorICAgICAgICBSRUxFQVNF
X0FTU0VSVCghbV9vdGhlckNhbGxlZXMtPm1fc2Vjb25kYXJ5KTsKKyAgICB9Cit9CisKK3ZvaWQg
Q2FsbEVkZ2VQcm9maWxlOjphZGRTbG93KENhbGxWYXJpYW50IGNhbGxlZSwgQ2FsbEVkZ2VQcm9m
aWxlVmVjdG9yJiBtZXJnZUJhY2tMb2cpCit7CisgICAgLy8gVGhpcyBleGlzdHMgdG8gaGFuZGxl
IGNhc2VzIHdoZXJlIHRoZSBzcGVjdHJ1bSB3YXNuJ3QgY3JlYXRlZCB5ZXQsIG9yIHdlJ3JlIHN0
b3JpbmcgdG8gYQorICAgIC8vIHBhcnRpY3VsYXIgc3BlY3RydW0gZm9yIHRoZSBmaXJzdCB0aW1l
IGR1cmluZyBhIGxvZyBwcm9jZXNzaW5nIGl0ZXJhdGlvbi4KKyAgICAKKyAgICBpZiAoIW1fb3Ro
ZXJDYWxsZWVzKSB7CisgICAgICAgIG1fb3RoZXJDYWxsZWVzID0gc3RkOjptYWtlX3VucWl1ZTxT
ZWNvbmRhcnk+KCk7CisgICAgICAgIC8vIElmIGEgY29tcGlsZXIgdGhyZWFkIG5vdGljZXMgdGhl
IG1fb3RoZXJDYWxsZWVzIGJlaW5nIG5vbi1udWxsLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZQorICAg
ICAgICAvLyB0aGF0IGl0IHNlZXMgYSBmdWxseSBjcmVhdGVkIG9uZS4KKyAgICAgICAgV1RGOjpz
dG9yZVN0b3JlRmVuY2UoKTsKKyAgICB9CisgICAgCisgICAgaWYgKCFtX290aGVyQ2FsbGVlcy0+
bV90ZW1wb3JhcnlTcGVjdHJ1bSkgeworICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3Jh
cnlTcGVjdHJ1bSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbFNwZWN0cnVtPigpOworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpLS07
KSB7CisgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+YWRk
KAorICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jYWxsZWUo
KSwKKyAgICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQo
KSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlz
IGlzIHRoZSBmaXJzdCB0aW1lIHdlJ3JlIHNlZWluZyB0aGlzIHByb2ZpbGUgZHVyaW5nIHRoaXMg
bG9nCisgICAgICAgIC8vIHByb2Nlc3NpbmcgaXRlcmF0aW9uLgorICAgICAgICBtZXJnZUJhY2tM
b2cuYXBwZW5kKHRoaXMpOworICAgIH0KKyAgICAKKyAgICBtX290aGVyQ2FsbGVlcy0+bV9zZWNv
bmRhcnktPmFkZChjYWxsZWUpOworfQorCit2b2lkIENhbGxFZGdlUHJvZmlsZTo6bWVyZ2VCYWNr
KCkKK3sKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIAorICAg
IEFTU0VSVChtX290aGVyQ2FsbGVlcyk7CisgICAgQVNTRVJUKG1fb3RoZXJDYWxsZWVzLT5tX3Rl
bXBvcmFyeVNwZWN0cnVtKTsKKyAgICAKKyAgICBpZiAoISFtX3ByaW1hcnlDYWxsZWUpCisgICAg
ICAgIG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5hZGQobV9wcmltYXJ5Q2Fs
bGVlLCBtX251bUNhbGxzVG9QcmltYXJ5KTsKKyAgICAKKyAgICBpZiAoIW1fY2xvc3VyZXNBcmVE
ZXNwZWNpZmllZCkgeworICAgICAgICBDYWxsU3BlY3RydW0gbmV3U3BlY3RydW07CisgICAgICAg
IGZvciAoYXV0byBlbnRyeSA6ICptX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSkK
KyAgICAgICAgICAgIG5ld1NwZWN0cnVtLmFkZChlbnRyeS5rZXkuZGVzcGVjaWZpZWRDbG9zdXJl
KCksIGVudHJ5LmNvdW50KTsKKyAgICAgICAgCisgICAgICAgIGlmIChuZXdTcGVjdHJ1bS5zaXpl
KCkgPCBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+c2l6ZSgpKQorICAgICAg
ICAgICAgKm1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtID0gbmV3U3BlY3RydW07
CisgICAgICAgIAorICAgICAgICBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQgPSB0cnVlOworICAg
IH0KKyAgICAKKyAgICBWZWN0b3I8Q2FsbFNwZWN0cnVtOjpLZXlBbmRDb3VudD4gbGlzdCA9IG1f
b3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5idWlsZExpc3QoKTsKKyAgICBtX290
aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSA9IG51bGxwdHI7CisgICAgCisgICAgbV9w
cmltYXJ5Q2FsbGVlID0gbGlzdC5sYXN0KCkua2V5OworICAgIG1fbnVtQ2FsbHNUb1ByaW1hcnkg
PSBsaXN0Lmxhc3QoKS5jb3VudDsKKyAgICBsaXN0LnJlbW92ZUxhc3QoKTsKKyAgICAKKyAgICBt
X290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuY2xlYXIoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGNv
dW50ID0gbWF4S25vd25DYWxsZWVzOyBjb3VudC0tICYmICFsaXN0LmlzRW1wdHkoKTspIHsKKyAg
ICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLmFwcGVuZChDYWxsRWRnZShsaXN0Lmxh
c3QoKS5rZXksIGxpc3QubGFzdCgpLmNvdW50KSk7CisgICAgICAgIGxpc3QucmVtb3ZlTGFzdCgp
OworICAgIH0KKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBsaXN0LnNpemUoKTsgaS0tOykK
KyAgICAgICAgbV9udW1DYWxsc1RvVW5rbm93bkNlbGwgKz0gbGlzdFtpXS5jb3VudDsKK30KKwor
dm9pZCBDYWxsRWRnZVByb2ZpbGU6OmZhZGVCeUhhbGYoKQoreworICAgIG1fbnVtQ2FsbHNUb1By
aW1hcnkgPj49IDE7CisgICAgbV9udW1DYWxsc1RvTm90Q2VsbCA+Pj0gMTsKKyAgICBtX251bUNh
bGxzVG9Vbmtub3duQ2VsbCA+Pj0gMTsKKyAgICBtX3RvdGFsQ291bnQgPj49IDE7CisgICAgCisg
ICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fb3Ro
ZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIG1fb3Ro
ZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXSA9IENhbGxFZGdlKAorICAgICAgICAgICAgICAgIG1f
b3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jYWxsZWUoKSwKKyAgICAgICAgICAgICAgICBt
X290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQoKSA+PiAxKTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgaWYgKG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVt
KSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiAqbV9vdGhlckNhbGxlZXMtPm1fdGVt
cG9yYXJ5U3BlY3RydW0pCisgICAgICAgICAgICAgICAgZW50cnkuY291bnQgPj49IDE7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK0NhbGxFZGdlTG9nOjpDYWxsRWRnZUxvZygpCisgICAgOiBtX3Nj
YWxlZExvZ0luZGV4KGxvZ1NpemUgKiBzaXplb2YoRW50cnkpKQoreworfQorCitDYWxsRWRnZUxv
Zzo6fkNhbGxFZGdlTG9nKCkgeyB9CisKKyNpZiBFTkFCTEUoSklUKQorCitleHRlcm4gIkMiIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2coQ2FsbEVkZ2VMb2cq
KSBXVEZfSU5URVJOQUw7CitleHRlcm4gIkMiIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
cm9jZXNzQ2FsbEVkZ2VMb2coQ2FsbEVkZ2VMb2cqIGxvZykKK3sKKyAgICBsb2ctPnByb2Nlc3NM
b2coKTsKK30KKwordm9pZCBDYWxsRWRnZUxvZzo6ZW1pdExvZ0NvZGUoQ0NhbGxIZWxwZXJzJiBq
aXQsIENhbGxFZGdlUHJvZmlsZSYgcHJvZmlsZSwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncykKK3sK
KyAgICBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50cyA9IDE7CisgICAgCisgICAgR1BS
UmVnIHNjcmF0Y2hHUFI7CisgICAgaWYgKCFjYWxsZWVSZWdzLnVzZXMoR1BSSW5mbzo6cmVnVDAp
KQorICAgICAgICBzY3JhdGNoR1BSID0gR1BSSW5mbzo6cmVnVDA7CisgICAgZWxzZSBpZiAoIWNh
bGxlZVJlZ3MudXNlcyhHUFJJbmZvOjpyZWdUMSkpCisgICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJ
bmZvOjpyZWdUMTsKKyAgICBlbHNlCisgICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJbmZvOjpyZWdU
MjsKKyAgICAKKyAgICBqaXQubG9hZDMyKCZtX3NjYWxlZExvZ0luZGV4LCBzY3JhdGNoR1BSKTsK
KyAgICAKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgb2sgPSBqaXQuYnJhbmNoVGVzdDMyKENDYWxs
SGVscGVyczo6Tm9uWmVybywgc2NyYXRjaEdQUik7CisgICAgCisgICAgQVNTRVJUKHN0YWNrQWxp
Z25tZW50UmVnaXN0ZXJzKCkgPj0gMSArIG51bWJlck9mQXJndW1lbnRzKTsKKyAgICAKKyAgICBq
aXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdGFja0FsaWdubWVudEJ5dGVz
KCkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAKKyAgICBqaXQu
c3RvcmVWYWx1ZShjYWxsZWVSZWdzLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJz
OjpzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgaml0LnNldHVw
QXJndW1lbnRzKGNhbGxlZVJlZ3MpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2cpLCBHUFJJbmZvOjpub25BcmdHUFIw
KTsKKyAgICBqaXQuY2FsbChzY3JhdGNoKTsKKyAgICBqaXQubG9hZFZhbHVlKENDYWxsSGVscGVy
czo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzaXplb2YoSlNW
YWx1ZSkpLCBjYWxsZWVSZWdzKTsKKyAgICAKKyAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihzdGFja0FsaWdubWVudEJ5dGVzKCkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKKyAgICAKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihsb2dTaXplICogc2l6ZW9mKEVudHJ5KSksIHNjcmF0Y2hHUFIpOworICAgIG9rLmxp
bmsoJmppdCk7CisKKyAgICBqaXQuc3ViMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2l6
ZW9mKEVudHJ5KSksIHNjcmF0Y2hHUFIpOworICAgIGppdC5zdG9yZTMyKHNjcmF0Y2hHUFIsICZt
X3NjYWxlZExvZ0luZGV4KTsKKyAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihtX2xvZyksIHNjcmF0Y2hHUFIpOworICAgIGppdC5zdG9yZVZhbHVlKGNhbGxlZVJlZ3Ms
IENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW50cnks
IG1fdmFsdWUpKSk7CisgICAgaml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cigmcHJvZmlsZSksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZG
U0VUT0YoRW50cnksIG1fcHJvZmlsZSkpKTsKK30KKwordm9pZCBDYWxsRWRnZUxvZzo6ZW1pdExv
Z0NvZGUoCisgICAgQ0NhbGxIZWxwZXJzJiBqaXQsIE93blB0cjxDYWxsRWRnZVByb2ZpbGU+JiBw
cm9maWxlUG9pbnRlciwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncykKK3sKKyAgICBwcm9maWxlUG9p
bnRlci5jcmVhdGVUcmFuc2FjdGlvbmFsbHkoKTsKKyAgICBlbWl0TG9nQ29kZShqaXQsICpwcm9m
aWxlUG9pbnRlciwgY2FsbGVlUmVncyk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCit2
b2lkIENhbGxFZGdlTG9nOjpwcm9jZXNzTG9nKCkKK3sKKyAgICBDb25jdXJyZW50SklUTG9ja2Vy
IGxvY2tlcihtX2xvY2spOworICAgIAorICAgIEFTU0VSVCghKG1fc2NhbGVkTG9nSW5kZXggJSBz
aXplb2YoRW50cnkpKSk7CisgICAgCisgICAgQ2FsbEVkZ2VQcm9maWxlVmVjdG9yIG1lcmdlQmFj
a0xvZzsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3NjYWxlZExvZ0luZGV4IC8gc2l6
ZW9mKEVudHJ5KTsgaSA8IGxvZ1NpemU7ICsraSkKKyAgICAgICAgbV9sb2dbaV0ubV9wcm9maWxl
LT5hZGQobV9sb2dbaV0ubV92YWx1ZSwgbWVyZ2VCYWNrTG9nKTsKKyAgICAKKyAgICBtX3NjYWxl
ZExvZ0luZGV4ID0gbG9nU2l6ZSAqIHNpemVvZihFbnRyeSk7CisgICAgCisgICAgZm9yICh1bnNp
Z25lZCBpID0gbWVyZ2VCYWNrTG9nLnNpemUoKTsgaS0tOykKKyAgICAgICAgbWVyZ2VCYWNrTG9n
W2ldLT5tZXJnZUJhY2soKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDYWxsRWRnZVByb2ZpbGVfaAorI2Rl
ZmluZSBDYWxsRWRnZVByb2ZpbGVfaAorCisjaW5jbHVkZSAiQ2FsbEVkZ2UuaCIKKyNpbmNsdWRl
ICJDYWxsVmFyaWFudC5oIgorI2luY2x1ZGUgIkNvbmN1cnJlbnRKSVRMb2NrLmgiCisjaW5jbHVk
ZSAiSlNDZWxsLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCit0eXBlZGVmIHVpbnQxNl90IENhbGxF
ZGdlQ291bnRUeXBlOworCitjbGFzcyBDYWxsRWRnZVByb2ZpbGU7Cit0eXBlZGVmIFZlY3RvcjxD
YWxsRWRnZVByb2ZpbGUqLCAxMD4gQ2FsbEVkZ2VQcm9maWxlVmVjdG9yOworCitjbGFzcyBDYWxs
RWRnZVByb2ZpbGUgeworcHVibGljOgorICAgIENhbGxFZGdlUHJvZmlsZShDb2RlQmxvY2sqIGNv
ZGVCbG9jayk7CisgICAgCisgICAgdm9pZCBhZGQoSlNWYWx1ZSwgQ2FsbEVkZ2VQcm9maWxlVmVj
dG9yJiBtZXJnZUJhY2tMb2cpOworICAgIAorICAgIHVuc2lnbmVkIG51bUNhbGxzVG9Ob3RDZWxs
KCkgY29uc3QgeyByZXR1cm4gbV9udW1DYWxsc1RvTm90Q2VsbDsgfQorICAgIHVuc2lnbmVkIG51
bUNhbGxzVG9Vbmtub3duQ2VsbCgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQ2FsbHNUb1Vua25vd25D
ZWxsOyB9CisgICAgdW5zaWduZWQgbnVtQ2FsbHNUb0tub3duQ2VsbHMoKSBjb25zdDsKKyAgICAK
KyAgICAvLyBDYWxsIHdoaWxlIGhvbGRpbmcgdGhlIG93bmluZyBDb2RlQmxvY2sncyBsb2NrLgor
ICAgIENhbGxFZGdlTGlzdGUgY2FsbEVkZ2VzKCkgY29uc3Q7CisgICAgCisgICAgdm9pZCB2aXNp
dFdlYWsoKTsKKyAgICAKK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heEtu
b3duQ2FsbGVlcyA9IDU7CisgICAgCisgICAgYm9vbCB3b3J0aERlc3BlY2lmeWluZygpOworICAg
IHZvaWQgYWRkU2xvdyhDYWxsVmFyaWFudCwgQ2FsbEVkZ2VQcm9maWxlVmVjdG9yJiBtZXJnZUJh
Y2tMb2cpOworICAgIHZvaWQgbWVyZ2VCYWNrKCk7CisgICAgdm9pZCBmYWRlQnlIYWxmKCk7Cisg
ICAgCisgICAgLy8gSXQncyBjaGVhcGVyIHRvIGxldCB0aGlzIGhhdmUgaXRzIG93biBsb2NrLiBJ
dCBuZWVkcyB0byBiZSBhYmxlIHRvIGZpbmQgd2hpY2ggbG9jayB0bworICAgIC8vIGxvY2suIE5v
cm1hbGx5IGl0IHdvdWxkIGxvY2sgdGhlIG93bmluZyBDb2RlQmxvY2sncyBsb2NrLCBidXQgdGhh
dCB3b3VsZCByZXF1aXJlIGEKKyAgICAvLyBwb2ludGVyLXdpZHRoIHdvcmQgdG8gcG9pbnQgYXQg
dGhlIENvZGVCbG9jay4gSGF2aW5nIHRoZSBieXRlLXNpemVkIGxvY2sgaGVyZSBpcworICAgIC8v
IGNoZWFwZXIuIEhvd2V2ZXIsIHRoaXMgbWVhbnMgdGhhdCB0aGUgcmVsYXRpb25zaGlwIHdpdGgg
dGhlIENvZGVCbG9jayBsb2NrIGlzOgorICAgIC8vIGFjcXVpcmUgdGhlIENvZGVCbG9jayBsb2Nr
IGJlZm9yZSB0aGlzIG9uZS4KKyAgICBDb25jdXJyZW50SklUTG9jayBtX2xvY2s7CisgICAgCisg
ICAgYm9vbCBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQ7CisgICAgCisgICAgQ2FsbEVkZ2VDb3Vu
dFR5cGUgbV9udW1DYWxsc1RvUHJpbWFyeTsKKyAgICBDYWxsRWRnZUNvdW50VHlwZSBtX251bUNh
bGxzVG9Ob3RDZWxsOworICAgIENhbGxFZGdlQ291bnRUeXBlIG1fbnVtQ2FsbHNUb1Vua293bkNl
bGw7CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbV90b3RhbENvdW50OworICAgIENhbGxWYXJpYW50
IG1fcHJpbWFyeUNhbGxlZTsKKyAgICAKKyAgICB0eXBlZGVmIFNwZWN0cnVtPENhbGxWYXJpYW50
LCBDYWxsRWRnZUNvdW50VHlwZT4gQ2FsbFNwZWN0cnVtOworICAgIAorICAgIHN0cnVjdCBTZWNv
bmRhcnkgeworICAgICAgICBWZWN0b3I8Q2FsbEVkZ2U+IG1fcHJvY2Vzc2VkOyAvLyBQcm9jZXNz
ZWQgYnV0IG5vdCBuZWNlc3NhcmlseSBzb3J0ZWQuCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxD
YWxsU3BlY3RydW0+IG1fdGVtcG9yYXJ5U3BlY3RydW07CisgICAgfTsKKyAgICAKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2Vjb25kYXJ5PiBtX290aGVyQ2FsbGVlczsKK307CisKK2NsYXNzIENhbGxF
ZGdlTG9nIHsKK3B1YmxpYzoKKyAgICBDYWxsRWRnZUxvZygpOworICAgIH5DYWxsRWRnZUxvZygp
OworCisjaWYgRU5BQkxFKEpJVCkgICAgCisgICAgdm9pZCBlbWl0TG9nQ29kZShDQ2FsbEhlbHBl
cnMmLCBDYWxsRWRnZVByb2ZpbGUmLCBKU1ZhbHVlUmVncyBjYWxsZWVSZWdzKTsgLy8gQXNzdW1l
cyB0aGF0IHN0YWNrIGlzIGFsaWduZWQsIGFsbCB2b2xhdGlsZSByZWdpc3RlcnMgLSBvdGhlciB0
aGFuIGNhbGxlZUdQUiAtIGFyZSBjbG9iYmVyYWJsZSwgYW5kIHRoZSBwYXJhbWV0ZXIgc3BhY2Ug
aXMgaW4gdXNlLgorICAgIAorICAgIC8vIFNhbWUgYXMgYWJvdmUgYnV0IGNyZWF0ZXMgYSBDYWxs
RWRnZVByb2ZpbGUgaW5zdGFuY2UgaWYgb25lIGRpZCBub3QgYWxyZWFkeSBleGlzdC4gRG9lcwor
ICAgIC8vIHRoaXMgaW4gYSB0aHJlYWQtc2FmZSBtYW5uZXIgYnkgY2FsbGluZyBPd25QdHI6OmNy
ZWF0ZVRyYW5zYWN0aW9uYWxseS4KKyAgICB2b2lkIGVtaXRMb2dDb2RlKENDYWxsSGVsZXBycyYs
IE93blB0cjxDYWxsRWRnZVByb2ZpbGU+JiwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncyk7CisjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKKyAgICAKKyAgICB2b2lkIHByb2Nlc3NMb2coKTsKKyAgICAKK3By
aXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBsb2dTaXplID0gMTAwMDA7CisgICAgCisgICAgc3RydWN0IEVu
dHJ5IHsKKyAgICAgICAgSlNWYWx1ZSBtX3ZhbHVlOworICAgICAgICBDYWxsRWRnZVByb2ZpbGUq
IG1fcHJvZmlsZTsKKyAgICB9OworICAgIAorICAgIHVuc2lnbmVkIG1fc2NhbGVkTG9nSW5kZXg7
CisgICAgRW50cnkgbV9sb2dbbG9nU2l6ZV07Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIENhbGxFZGdlUHJvZmlsZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZUlubGluZXMuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGVJ
bmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENhbGxFZGdlUHJvZmlsZUlu
bGluZXNfaAorI2RlZmluZSBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzX2gKKworbmFtZXNwYWNlIEpT
QyB7CisKK2lubGluZSBDYWxsRWRnZVByb2ZpbGU6OkNhbGxFZGdlUHJvZmlsZSgpCisgICAgOiBt
X2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQoZmFsc2UpCisgICAgLCBtX251bUNhbGxzVG9QcmltYXJ5
KDApCisgICAgLCBtX251bUNhbGxzVG9Ob3RDZWxsKDApCisgICAgLCBtX251bUNhbGxzVG9EZWxl
dGVkQ2VsbCgwKQorICAgICwgbV90b3RhbENvdW50KDApCisgICAgLCBtX3ByaW1hcnlDYWxsZWUo
bnVsbHB0cikKK3sKK30KKworQUxXQVlTX0lOTElORSBDYWxsRWRnZVByb2ZpbGU6OmFkZChKU1Zh
bHVlIHZhbHVlLCBDYWxsRWRnZVByb2ZpbGVWZWN0b3ImIG1lcmdlQmFja0xvZykKK3sKKyAgICB1
bnNpZ25lZCBuZXdUb3RhbENvdW50ID0gbV90b3RhbENvdW50ICsgMTsKKyAgICBpZiAoVU5MSUtF
TFkoIW5ld1RvdGFsQ291bnQpKSB7CisgICAgICAgIGZhZGVCeUhhbGYoKTsgLy8gVGFja2xlIG92
ZXJmbG93cyBieSBkaXZpZGluZyBhbGwgY291bnRzIGJ5IHR3by4KKyAgICAgICAgbmV3VG90YWxD
b3VudCA9IG1fdG90YWxDb3VudCArIDE7CisgICAgfQorICAgIEFTU0VSVChuZXdUb3RhbENvdW50
KTsKKyAgICBtX3RvdGFsQ291bnQgPSBuZXdUb3RhbENvdW50OworICAgIAorICAgIGlmIChVTkxJ
S0VZKCF2YWx1ZS5pc0NlbGwoKSkpIHsKKyAgICAgICAgbV9udW1DYWxsc1RvTm90Q2VsbCsrOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ2FsbFZhcmlhbnQgY2FsbGVlID0gQ2FsbFZh
cmlhbnQodmFsdWUuYXNDZWxsKCkpOworICAgIAorICAgIGlmIChtX2Nsb3N1cmVzQXJlRGVzcGVj
aWZpZWQpCisgICAgICAgIGNhbGxlZSA9IGNhbGxlZS5kZXNwZWNpZmllZENsb3N1cmUoKTsKKyAg
ICAgICAgCisgICAgaWYgKFVOTElLRUxZKCFtX3ByaW1hcnlDYWxsZWUpKSB7CisgICAgICAgIG1f
cHJpbWFyeUNhbGxlZSA9IGNhbGxlZTsKKyAgICAgICAgbV9udW1DYWxsc1RvUHJpbWFyeSA9IDE7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAorICAgIGlmIChMSUtFTFkobV9wcmlt
YXJ5Q2FsbGVlID09IGNhbGxlZSkpIHsKKyAgICAgICAgbV9udW1DYWxsc1RvUHJpbWFyeSsrOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBpZiAoVU5MSUtFTFkoIW1fb3Ro
ZXJDYWxsZWVzKSkgeworICAgICAgICBhZGRTbG93KGNhbGxlZSwgbWVyZ2VCYWNrTG9nKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAgQ2FsbFNwZWN0cnVtKiBzZWNvbmRh
cnkgPSBtX290aGVyQ2FsbGVlcy0+bV9zZWNvbmRhcnkuZ2V0KCk7CisgICAgaWYgKCFzZWNvbmRh
cnkpIHsKKyAgICAgICAgYWRkU2xvdyhjYWxsZWUsIG1lcmdlQmFja0xvZyk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgICAgIAorICAgIHNlY29uZGFyeS0+YWRkKGNhbGxlZSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ2FsbEVkZ2VQcm9maWxlSW5saW5lc19o
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0lu
Zm8uY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsMTEgQEAgdm9p
ZCBDYWxsTGlua0luZm86OnZpc2l0V2VhayhSZXBhdGNoQnVmZgogICAgIH0KICAgICBpZiAoISFs
YXN0U2VlbkNhbGxlZSAmJiAhSGVhcDo6aXNNYXJrZWQobGFzdFNlZW5DYWxsZWUuZ2V0KCkpKQog
ICAgICAgICBsYXN0U2VlbkNhbGxlZS5jbGVhcigpOworICAgIAorICAgIGlmIChjYWxsRWRnZVBy
b2ZpbGUpIHsKKyAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CisgICAgICAgIGNhbGxFZGdl
UHJvZmlsZS0+dmlzaXRXZWFrKCk7CisgICAgfQogfQogCiBDYWxsTGlua0luZm8mIENhbGxMaW5r
SW5mbzo6ZHVtbXkoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxM
aW5rSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua0luZm8uaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaWZuZGVmIENhbGxMaW5rSW5mb19oCiAjZGVmaW5lIENhbGxMaW5rSW5mb19oCiAKKyNpbmNs
dWRlICJDYWxsRWRnZVByb2ZpbGUuaCIKICNpbmNsdWRlICJDbG9zdXJlQ2FsbFN0dWJSb3V0aW5l
LmgiCiAjaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0
aW9uS2luZC5oIgpAQCAtMzMsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKKyNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTg4LDYgKzkwLDcgQEAgc3RydWN0IENhbGxMaW5rSW5mbyA6IHB1Ymxp
YyBCYXNpY1Jhd1NlbgogICAgIHVuc2lnbmVkIGNhbGxlZUdQUiA6IDg7CiAgICAgdW5zaWduZWQg
c2xvd1BhdGhDb3VudDsKICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW47CisgICAgT3duUHRyPENh
bGxFZGdlUHJvZmlsZT4gY2FsbEVkZ2VQcm9maWxlOwogCiAgICAgYm9vbCBpc0xpbmtlZCgpIHsg
cmV0dXJuIHN0dWIgfHwgY2FsbGVlOyB9CiAgICAgdm9pZCB1bmxpbmsoUmVwYXRjaEJ1ZmZlciYp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtT
dGF0dXMuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw0OCArMzgsMTUg
QEAgbmFtZXNwYWNlIEpTQyB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAK
IENhbGxMaW5rU3RhdHVzOjpDYWxsTGlua1N0YXR1cyhKU1ZhbHVlIHZhbHVlKQotICAgIDogbV9j
YWxsVGFyZ2V0KHZhbHVlKQotICAgICwgbV9leGVjdXRhYmxlKDApCi0gICAgLCBtX2NvdWxkVGFr
ZVNsb3dQYXRoKGZhbHNlKQorICAgIDogbV9jb3VsZFRha2VTbG93UGF0aChmYWxzZSkKICAgICAs
IG1faXNQcm92ZWQoZmFsc2UpCiB7Ci0gICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkp
CisgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkpIHsKKyAgICAgICAgbV9jb3VsZFRh
a2VTbG93UGF0aCA9IHRydWU7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgCi0gICAgaWYg
KCF2YWx1ZS5hc0NlbGwoKS0+aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkKLSAgICAgICAg
cmV0dXJuOwotICAgIAotICAgIG1fZXhlY3V0YWJsZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4odmFs
dWUuYXNDZWxsKCkpLT5leGVjdXRhYmxlKCk7Ci19Ci0KLUpTRnVuY3Rpb24qIENhbGxMaW5rU3Rh
dHVzOjpmdW5jdGlvbigpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2NhbGxUYXJnZXQgfHwgIW1fY2Fs
bFRhcmdldC5pc0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgaWYgKCFtX2Nh
bGxUYXJnZXQuYXNDZWxsKCktPmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpCi0gICAgICAg
IHJldHVybiAwOwotICAgIAotICAgIHJldHVybiBqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2FsbFRh
cmdldC5hc0NlbGwoKSk7Ci19Ci0KLUludGVybmFsRnVuY3Rpb24qIENhbGxMaW5rU3RhdHVzOjpp
bnRlcm5hbEZ1bmN0aW9uKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fY2FsbFRhcmdldCB8fCAhbV9j
YWxsVGFyZ2V0LmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBpZiAoIW1f
Y2FsbFRhcmdldC5hc0NlbGwoKS0+aW5oZXJpdHMoSW50ZXJuYWxGdW5jdGlvbjo6aW5mbygpKSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgcmV0dXJuIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0
aW9uKj4obV9jYWxsVGFyZ2V0LmFzQ2VsbCgpKTsKLX0KLQotSW50cmluc2ljIENhbGxMaW5rU3Rh
dHVzOjppbnRyaW5zaWNGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKSBjb25zdAotewot
ICAgIGlmICghbV9leGVjdXRhYmxlKQotICAgICAgICByZXR1cm4gTm9JbnRyaW5zaWM7Ci0gICAg
Ci0gICAgcmV0dXJuIG1fZXhlY3V0YWJsZS0+aW50cmluc2ljRm9yKGtpbmQpOworICAgIG1fZWRn
ZXMuYXBwZW5kKENhbGxFZGdlKHZhbHVlLmFzQ2VsbCgpLCAxKSk7CiB9CiAKIENhbGxMaW5rU3Rh
dHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KGNvbnN0IENvbmN1cnJlbnRKSVRM
b2NrZXImIGxvY2tlciwgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29k
ZUluZGV4KQpAQCAtODcsNyArNTQsNyBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6
Y29tcHV0ZUZyCiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9Q
QVJBTShieXRlY29kZUluZGV4KTsKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAocHJvZmls
ZWRCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNv
ZGVJbmRleCwgQmFkRnVuY3Rpb24pKSkgeworICAgIGlmIChwcm9maWxlZEJsb2NrLT5oYXNFeGl0
U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDZWxs
KSkpIHsKICAgICAgICAgLy8gV2UgY291bGQgZm9yY2UgdGhpcyB0byBiZSBhIGNsb3N1cmUgY2Fs
bCwgYnV0IGluc3RlYWQgd2UnbGwganVzdCBhc3N1bWUgdGhhdCBpdAogICAgICAgICAvLyB0YWtl
cyBzbG93IHBhdGguCiAgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7CkBAIC0xMzksMTAg
KzEwNiwxMCBAQCBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRhIENhbGxMaW5rU3RhCiAgICAg
CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgZXhpdFNpdGVEYXRhLm1fdGFrZXNTbG93UGF0aCA9
Ci0gICAgICAgIHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVu
dEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENhY2hlLCBleGl0aW5nSklUVHlwZSkpCisgICAg
ICAgIHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRT
aXRlKGJ5dGVjb2RlSW5kZXgsIEJhZFR5cGUsIGV4aXRpbmdKSVRUeXBlKSkKICAgICAgICAgfHwg
cHJvZmlsZWRCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUo
Ynl0ZWNvZGVJbmRleCwgQmFkRXhlY3V0YWJsZSwgZXhpdGluZ0pJVFR5cGUpKTsKICAgICBleGl0
U2l0ZURhdGEubV9iYWRGdW5jdGlvbiA9Ci0gICAgICAgIHByb2ZpbGVkQmxvY2stPmhhc0V4aXRT
aXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZEZ1bmN0
aW9uLCBleGl0aW5nSklUVHlwZSkpOworICAgICAgICBwcm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0
ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDZWxsLCBl
eGl0aW5nSklUVHlwZSkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obG9ja2VyKTsKICAgICBV
TlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CkBAIC0xNTYsNiArMTIzLDE4IEBAIENhbGxMaW5r
U3RhdHVzOjpFeGl0U2l0ZURhdGEgQ2FsbExpbmtTdGEKICNpZiBFTkFCTEUoSklUKQogQ2FsbExp
bmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoY29uc3QgQ29uY3VycmVudEpJVExv
Y2tlciYsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQogeworICAgIC8vIEFsd2F5cyB0cnVz
dCB0aGUgY2FsbCBlZGdlIHByb2ZpbGUgb3ZlciBhbnl0aGluZyBlbHNlIHNpbmNlIHRoaXMgaGFz
IHByZWNpc2UgY291bnRzLgorICAgIC8vIEl0IGNhbiBtYWtlIHRoZSBiZXN0IHBvc3NpYmxlIGRl
Y2lzaW9uIGJlY2F1c2UgaXQgbmV2ZXIgImZvcmdldHMiIHdoYXQgaGFwcGVuZWQgZm9yIGFueQor
ICAgIC8vIGNhbGwsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBmYWRpbmcgb3V0IHRoZSBjb3VudHMg
b2Ygb2xkIGNhbGxzIChmb3IgZXhhbXBsZSBpZiB0aGUKKyAgICAvLyBjb3VudGVyIHR5cGUgaXMg
MTYtYml0IHRoZW4gY2FsbHMgdGhhdCBoYXBwZW5lZCBtb3JlIHRoYW4gMl4xNiBjYWxscyBhZ28g
YXJlIGdpdmVuIGhhbGYKKyAgICAvLyB3ZWlnaHQsIGFuZCB0aGlzIGNvbXBvdW5kcyBmb3IgZXZl
cnkgMl4xNSBbc2ljXSBjYWxscyBhZnRlciB0aGF0KS4gVGhlIGNvbWJpbmF0aW9uIG9mCisgICAg
Ly8gaGlnaCBmaWRlbGl0eSBmb3IgcmVjZW50IGNhbGxzIGFuZCBmYWRpbmcgZm9yIG9sZGVyIGNh
bGxzIG1ha2VzIHRoaXMgdGhlIG1vc3QgdXNlZnVsCisgICAgLy8gbWVjaGFtaXNtIG9mIGNob29z
aW5nIGhvdyB0byBvcHRpbWl6ZSBmdXR1cmUgY2FsbHMuCisgICAgQ2FsbEVkZ2VQcm9maWxlKiBl
ZGdlUHJvZmlsZSA9IGNhbGxMaW5rSW5mby5jYWxsRWRnZVByb2ZpbGUuZ2V0KCk7CisgICAgV1RG
Ojpsb2FkTG9hZEZlbmNlKCk7CisgICAgaWYgKGVkZ2VQcm9maWxlKQorICAgICAgICByZXR1cm4g
Y29tcHV0ZUZyb21DYWxsRWRnZVByb2ZpbGUoZWRnZVByb2ZpbGUpOworICAgIAogICAgIC8vIE5v
dGUgdGhhdCBkZXNwaXRlIHJlcXVpcmluZyB0aGF0IHRoZSBsb2NrZXIgaXMgaGVsZCwgdGhpcyBj
b2RlIGlzIHJhY3kgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gdGhlIENhbGxMaW5rSW5mbzogaXQg
bWF5IGdldCBjbGVhcmVkIHdoaWxlIHRoaXMgY29kZSBydW5zISBUaGlzIGlzIGJlY2F1c2UKICAg
ICAvLyBDYWxsTGlua0luZm86OnVubGluaygpIG1heSBiZSBjYWxsZWQgZnJvbSBhIGRpZmZlcmVu
dCBDb2RlQmxvY2sgdGhhbiB0aGUgb25lIHRoYXQgb3ducwpAQCAtMTc3LDcgKzE1Niw3IEBAIENh
bGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICAgICAKICAgICBKU0Z1bmN0
aW9uKiB0YXJnZXQgPSBjYWxsTGlua0luZm8ubGFzdFNlZW5DYWxsZWUuZ2V0KCk7CiAgICAgaWYg
KCF0YXJnZXQpCi0gICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygpOworICAgICAgICByZXR1
cm4gdGFrZXNTbG93UGF0aCgpOwogICAgIAogICAgIGlmIChjYWxsTGlua0luZm8uaGFzU2VlbkNs
b3N1cmUpCiAgICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyh0YXJnZXQtPmV4ZWN1dGFibGUo
KSk7CkBAIC0xODUsMTUgKzE2NCwzMSBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6
Y29tcHV0ZUZvCiAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKHRhcmdldCk7CiB9CiAKLUNhbGxM
aW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAotICAgIGNvbnN0IENvbmN1cnJl
bnRKSVRMb2NrZXImIGxvY2tlciwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIEV4aXRTaXRl
RGF0YSBleGl0U2l0ZURhdGEpCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czpjb21wdXRl
RnJvbUNhbGxFZGdlUHJvZmlsZShDYWxsRWRnZVByb2ZpbGUqIGVkZ2VQcm9maWxlKQogewotICAg
IGlmIChleGl0U2l0ZURhdGEubV90YWtlc1Nsb3dQYXRoKQorICAgIC8vIFRvIGRvIGFueXRoaW5n
IG1lYW5pbmdmdWwsIHdlIHJlcXVpcmUgdGhhdCB0aGUgbWFqb3JpdHkgb2YgY2FsbHMgYXJlIHRv
IHNvbWV0aGluZyB3ZQorICAgIC8vIGtub3cgaG93IHRvIGhhbmRsZS4KKyAgICB1bnNpZ25lZCBu
dW1DYWxsc1RvS25vd24gPSBlZGdlUHJvZmlsZS0+bnVtQ2FsbHNUb0tub3duRWRnZXMoKTsKKyAg
ICB1bnNpZ25lZCBudW1DYWxsc1RvVW5rbm93biA9IGVkZ2VQcm9maWxlLT5udW1DYWxsc1RvTm90
Q2VsbCgpICsgZWRnZVByb2ZpbGUtPm51bUNhbGxzVG9Vbmtub3duQ2VsbCgpOworICAgIGlmIChu
dW1DYWxsc1RvS25vd24gPD0gbnVtQ2FsbHNUb1Vua25vd24pCiAgICAgICAgIHJldHVybiB0YWtl
c1Nsb3dQYXRoKCk7CiAgICAgCisgICAgQ2FsbExpbmtTdGF0dXMgcmVzdWx0OworICAgIHJlc3Vs
dC5tX2VkZ2VzID0gY2FsbEVkZ2VzLT5jYWxsRWRnZXMoKTsKKyAgICByZXN1bHQubV9jb3VsZFRh
a2VTbG93UGF0aCA9ICEhbnVtQ2FsbHNUb1Vua25vd247CisgICAgcmVzdWx0Lm1fY2FuVHJ1c3RD
b3VudHMgPSB0cnVlOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0NhbGxMaW5rU3Rh
dHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAorICAgIGNvbnN0IENvbmN1cnJlbnRKSVRM
b2NrZXImIGxvY2tlciwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIEV4aXRTaXRlRGF0YSBl
eGl0U2l0ZURhdGEpCit7CiAgICAgQ2FsbExpbmtTdGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZvcihs
b2NrZXIsIGNhbGxMaW5rSW5mbyk7CiAgICAgaWYgKGV4aXRTaXRlRGF0YS5tX2JhZEZ1bmN0aW9u
KQogICAgICAgICByZXN1bHQubWFrZUNsb3N1cmVDYWxsKCk7CisgICAgaWYgKGV4aXRTaXRlRGF0
YS5tX3Rha2VzU2xvd1BhdGgpCisgICAgICAgIHJlc3VsdC5tX2NvdWxkVGFrZVNsb3dQYXRoID0g
dHJ1ZTsKICAgICAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjU2LDYgKzI1MSwzMiBAQCBD
YWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvCiAgICAgcmV0dXJuIGNvbXB1
dGVGb3IocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBiYXNlbGluZU1h
cCk7CiB9CiAKK2Jvb2wgQ2FsbExpbmtTdGF0dXM6OmlzQ2xvc3VyZUNhbGwoKSBjb25zdAorewor
ICAgIGZvciAodW5zaWduZWQgaSA9IG1fZWRnZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIGlm
IChtX2VkZ2VzW2ldLmlzQ2xvc3VyZUNhbGwoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQ2FsbExpbmtTdGF0dXM6Om1ha2VD
bG9zdXJlQ2FsbCgpCit7CisgICAgQVNTRVJUKCFtX2lzUHJvdmVkKTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSBtX2VkZ2VzLnNpemUoKTsgaS0tOykKKyAgICAgICAgbV9lZGdlc1tpXSA9IG1fZWRn
ZXNbaV0uZGVzcGVjaWZpZWRDbG9zdXJlKCk7CisgICAgCisgICAgaWYgKCFBU1NFUlRfRElTQUJM
RUQpIHsKKyAgICAgICAgLy8gRG9pbmcgdGhpcyBzaG91bGQgbm90IGhhdmUgY3JlYXRlZCBkdXBs
aWNhdGVzLCBiZWNhdXNlIHRoZSBDYWxsRWRnZVByb2ZpbGUKKyAgICAgICAgLy8gc2hvdWxkIGRl
c3BlY2lmeSBjbG9zdXJlcyBpZiBkb2luZyBzbyB3b3VsZCByZWR1Y2UgdGhlIG51bWJlciBvZiBr
bm93biBjYWxsZWVzLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9lZGdlcy5z
aXplKCk7ICsraSkgeworICAgICAgICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFudCA9IG1fZWRnZXNb
aV0uY2FsbGVlKCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSBpICsgMTsgaiA8IG1f
ZWRnZXMuc2l6ZSgpOyArK2opCisgICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQgIT0gbV9l
ZGdlc1tqXS5jYWxsZWUoKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgQ2FsbExpbmtT
dGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBpZiAoIWlzU2V0KCkp
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0
YXR1cy5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsOSArNDYsOSBAQCBzdHJ1
Y3QgQ2FsbExpbmtJbmZvOwogY2xhc3MgQ2FsbExpbmtTdGF0dXMgewogcHVibGljOgogICAgIENh
bGxMaW5rU3RhdHVzKCkKLSAgICAgICAgOiBtX2V4ZWN1dGFibGUoMCkKLSAgICAgICAgLCBtX2Nv
dWxkVGFrZVNsb3dQYXRoKGZhbHNlKQorICAgICAgICA6IG1fY291bGRUYWtlU2xvd1BhdGgoZmFs
c2UpCiAgICAgICAgICwgbV9pc1Byb3ZlZChmYWxzZSkKKyAgICAgICAgLCBtX2NhblRydXN0Q291
bnRzKGZhbHNlKQogICAgIHsKICAgICB9CiAgICAgCkBAIC02MSwxMCArNjEsMTEgQEAgcHVibGlj
OgogICAgIAogICAgIGV4cGxpY2l0IENhbGxMaW5rU3RhdHVzKEpTVmFsdWUpOwogICAgIAotICAg
IENhbGxMaW5rU3RhdHVzKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKQotICAgICAgICA6IG1f
ZXhlY3V0YWJsZShleGVjdXRhYmxlKQorICAgIENhbGxMaW5rU3RhdHVzKENhbGxWYXJpYW50IHZh
cmlhbnQpCisgICAgICAgIDogbV9lZGdlcygxLCBDYWxsRWRnZShleGVjdXRhYmxlLCAxKSkKICAg
ICAgICAgLCBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQogICAgICAgICAsIG1faXNQcm92ZWQo
ZmFsc2UpCisgICAgICAgICwgbV9jYW5UcnVzdENvdW50cyhmYWxzZSkKICAgICB7CiAgICAgfQog
ICAgIApAQCAtMTA3LDM3ICsxMDgsMzYgQEAgcHVibGljOgogICAgIHN0YXRpYyBDYWxsTGlua1N0
YXR1cyBjb21wdXRlRm9yKAogICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBjb25zdCBD
YWxsTGlua0luZm9NYXAmLCBjb25zdCBDb250ZXh0TWFwJik7CiAgICAgCi0gICAgYm9vbCBpc1Nl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdldCB8fCBtX2V4ZWN1dGFibGUgfHwgbV9jb3Vs
ZFRha2VTbG93UGF0aDsgfQorICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxU
YXJnZXQgfHwgIW1fZXhlY3V0YWJsZS5pc0VtcHR5KCkgfHwgbV9jb3VsZFRha2VTbG93UGF0aDsg
fQogICAgIAogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7IH0K
ICAgICAKICAgICBib29sIGNvdWxkVGFrZVNsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9jb3Vs
ZFRha2VTbG93UGF0aDsgfQotICAgIGJvb2wgaXNDbG9zdXJlQ2FsbCgpIGNvbnN0IHsgcmV0dXJu
IG1fZXhlY3V0YWJsZSAmJiAhbV9jYWxsVGFyZ2V0OyB9CiAgICAgCi0gICAgSlNWYWx1ZSBjYWxs
VGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0OyB9Ci0gICAgSlNGdW5jdGlvbiog
ZnVuY3Rpb24oKSBjb25zdDsKLSAgICBJbnRlcm5hbEZ1bmN0aW9uKiBpbnRlcm5hbEZ1bmN0aW9u
KCkgY29uc3Q7Ci0gICAgSW50cmluc2ljIGludHJpbnNpY0ZvcihDb2RlU3BlY2lhbGl6YXRpb25L
aW5kKSBjb25zdDsKLSAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZXhlY3V0YWJsZTsgfQorICAgIENhbGxFZGdlTGlzdCBlZGdlcygpIGNvbnN0IHsgcmV0
dXJuIG1fZWRnZXM7IH0KKyAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9lZGdl
c3NpemUoKTsgfQorICAgIENhbGxFZGdlIGF0KHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIG1f
ZWRnZXNbaV07IH0KKyAgICBDYWxsRWRnZSBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIGNvbnN0IHsg
cmV0dXJuIGF0KGkpOyB9CiAgICAgYm9vbCBpc1Byb3ZlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNQ
cm92ZWQ7IH0KLSAgICBib29sIGNhbk9wdGltaXplKCkgY29uc3QgeyByZXR1cm4gKG1fY2FsbFRh
cmdldCB8fCBtX2V4ZWN1dGFibGUpICYmICFtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CisgICAgYm9v
bCBjYW5PcHRpbWl6ZSgpIGNvbnN0IHsgcmV0dXJuICFtX2VkZ2VzLmlzRW1wdHkoKTsgfQorICAg
IGJvb2wgY2FuVHJ1c3RDb3VudHMoKSBjb25zdCB7IHJldHVybiBtX2NhblRydXN0Q291bnRzOyB9
CisgICAgCisgICAgYm9vbCBpc0Nsb3N1cmVDYWxsKCkgY29uc3Q7IC8vIFJldHVybnMgdHJ1ZSBp
ZiBhbnkgY2FsbGVlIGlzIGEgY2xvc3VyZSBjYWxsLgogICAgIAogICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKLSAgICB2b2lkIG1ha2VDbG9zdXJlQ2Fs
bCgpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1faXNQcm92ZWQpOwotICAgICAgICAvLyBUdXJu
IHRoaXMgaW50byBhIGNsb3N1cmUgY2FsbC4KLSAgICAgICAgbV9jYWxsVGFyZ2V0ID0gSlNWYWx1
ZSgpOwotICAgIH0KKyAgICB2b2lkIG1ha2VDbG9zdXJlQ2FsbCgpOwogICAgIAogICAgIHN0YXRp
YyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRnJvbUxMSW50KGNvbnN0IENvbmN1cnJlbnRKSVRMb2Nr
ZXImLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKyNpZiBFTkFCTEUoSklU
KQorICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRnJvbUNhbGxFZGdlUHJvZmlsZShD
YWxsRWRnZVByb2ZpbGUqKTsKKyNlbmRpZgogICAgIAotICAgIEpTVmFsdWUgbV9jYWxsVGFyZ2V0
OwotICAgIEV4ZWN1dGFibGVCYXNlKiBtX2V4ZWN1dGFibGU7CisgICAgQ2FsbEVkZ2VMaXN0IG1f
ZWRnZXM7CiAgICAgYm9vbCBtX2NvdWxkVGFrZVNsb3dQYXRoOwogICAgIGJvb2wgbV9pc1Byb3Zl
ZDsKKyAgICBib29sIG1fY2FuVHJ1c3RDb3VudHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFy
aWFudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQ2FsbFZhcmlhbnQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgQ2FsbFZhcmlh
bnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBpZiAoSW50ZXJuYWxGdW5j
dGlvbiogaW50ZXJuYWxGdW5jdGlvbiA9IHRoaXMtPmludGVybmFsRnVuY3Rpb24oKSkgeworICAg
ICAgICBvdXQucHJpbnQoIkludGVybmFsRnVuY3Rpb246ICIsIEpTVmFsdWUoaW50ZXJuYWxGdW5j
dGlvbikpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChKU0Z1bmN0aW9u
KiBmdW5jdGlvbiA9IHRoaXMtPmZ1bmN0aW9uKCkpIHsKKyAgICAgICAgb3V0LnByaW50KCIoRnVu
Y3Rpb246ICIsIEpTVmFsdWUoZnVuY3Rpb24pLCAiOyBFeGVjdXRhYmxlOiAiLCAqZXhlY3V0YWJs
ZSgpLCAiKSIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIG91dC5wcmludCgi
RXhlY3V0YWJsZTogIiwgKmV4ZWN1dGFibGUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ2FsbFZhcmlhbnRfaAorI2RlZmlu
ZSBDYWxsVmFyaWFudF9oCisKKyNpbmNsdWRlICJKU0NlbGwuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIENhbGxWYXJpYW50IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBDYWxsVmFyaWFu
dChKU0NlbGwqIGNhbGxlZSA9IG51bGxwdHIpCisgICAgICAgIDogbV9jYWxsZWUoY2FsbGVlKQor
ICAgIHsKKyAgICB9CisgICAgCisgICAgQ2FsbFZhcmlhbnQoV1RGOjpIYXNoVGFibGVEZWxldGVk
VmFsdWVUeXBlKQorICAgICAgICA6IG1fY2FsbGVlKGRlbGV0ZWRUb2tlbigpKQorICAgIHsKKyAg
ICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7
IH0KKyAgICAKKyAgICAvLyBJZiB0aGlzIHZhcmlhbnQgcmVmZXJzIHRvIGEgZnVuY3Rpb24sIGNo
YW5nZSBpdCB0byByZWZlciB0byBpdHMgZXhlY3V0YWJsZS4KKyAgICBBTFdBWVNfSU5MSU5FIENh
bGxWYXJpYW50IGRlc3BlY2lmaWVkQ2xvc3VyZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAo
bV9jYWxsZWUtPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICAgICAgICAgIHJldHVybiBD
YWxsVmFyaWFudChqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2FsbGVlKS0+ZXhlY3V0YWJsZSgpKTsK
KyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAgICAKKyAgICBKU0NlbGwqIHJhd0NhbGxl
ZUNlbGwoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlZTsgfQorICAgIAorICAgIEludGVybmFsRnVu
Y3Rpb24qIGludGVybmFsRnVuY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGpz
RHluYW1pY0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KG1fY2FsbGVlKTsKKyAgICB9CisgICAgCisg
ICAgSlNGdW5jdGlvbiogZnVuY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGpz
RHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2FsbGVlKTsKKyAgICB9CisgICAgCisgICAgYm9v
bCBpc0Nsb3N1cmVDYWxsKCkgY29uc3QgeyByZXR1cm4gISFqc0R5bmFtaWNDYXN0PEV4ZWN1dGFi
bGVCYXNlKj4obV9jYWxsZWUpOyB9CisgICAgCisgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFi
bGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gdGhp
cy0+ZnVuY3Rpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbi0+ZXhlY3V0YWJsZSgp
OworICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxFeGVjdXRhYmxlQmFzZSo+KG1fY2FsbGVl
KTsKKyAgICB9CisgICAgCisgICAgSlNDZWxsKiBub25FeGVjdXRhYmxlQ2FsbGVlKCkgY29uc3QK
KyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpc0Nsb3N1cmVDYWxsKCkpOworICAgICAg
ICByZXR1cm4gbV9jYWxsZWU7CisgICAgfQorICAgIAorICAgIEludHJpbnNpYyBpbnRyaW5zaWNG
b3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYg
KEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gdGhpcy0+ZXhlY3V0YWJsZSgpKQorICAgICAg
ICAgICAgcmV0dXJuIGV4ZWN1dGFibGUtPmludHJpbnNpY0ZvcihraW5kKTsKKyAgICAgICAgcmV0
dXJuIE5vSW50cmluc2ljOworICAgIH0KKyAgICAKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1
bmN0aW9uRXhlY3V0YWJsZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4ganNEeW5hbWlj
Q2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKCkpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CisgICAgCisgICAgYm9vbCBpc0hh
c2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9jYWxs
ZWUgPT0gZGVsZXRlZFRva2VuKCk7CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBDYWxsVmFyaWFudCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9j
YWxsZWUgPT0gb3RoZXIubV9jYWxsZWU7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIGhhc2go
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6UHRySGFzaDxKU0NlbGwqPjo6aGFz
aChtX2NhbGxlZSk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBzdGF0aWMgSlNDZWxsKiBk
ZWxldGVkVG9rZW4oKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4oc3RhdGljX2Nhc3Q8
dWludHB0cl90PigxKSk7IH0KKyAgICAgICAgICAgICAgICAgICAKKyAgICBKU0NlbGwqIG1fY2Fs
bGVlOworfTsKKworc3RydWN0IENhbGxWYXJpYW50SGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVk
IGhhc2goY29uc3QgQ2FsbFZhcmlhbnQmIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQorICAg
IHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENhbGxWYXJpYW50JiBhLCBjb25zdCBDYWxsVmFyaWFu
dCYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29t
cGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKKwordHlwZWRlZiBWZWN0b3I8Q2FsbFZh
cmlhbnQsIDE+IENhbGxWYXJpYW50TGlzdDsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVz
cGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7Cit0
ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6OkNhbGxWYXJpYW50PiB7CisgICAgdHlw
ZWRlZiBKU0M6OkNhbGxWYXJpYW50SGFzaCBIYXNoOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IEhhc2hUcmFpdHM7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6
Q2FsbFZhcmlhbnQ+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6Q2FsbFZhcmlhbnQ+IHsg
fTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBDYWxsVmFyaWFudF9oCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5oCShyZXZpc2lvbiAx
NzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGVudW0gRXhpdEtp
bmQgOiB1aW50OF90IHsKICAgICBFeGl0S2luZFVuc2V0LAogICAgIEJhZFR5cGUsIC8vIFdlIGV4
aXRlZCBiZWNhdXNlIGEgdHlwZSBwcmVkaWN0aW9uIHdhcyB3cm9uZy4KLSAgICBCYWRGdW5jdGlv
biwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2UgbWFkZSBhbiBpbmNvcnJlY3QgYXNzdW1wdGlvbiBh
Ym91dCB3aGF0IGZ1bmN0aW9uIHdlIHdvdWxkIHNlZS4KKyAgICBCYWRDZWxsLCAvLyBXZSBleGl0
ZWQgYmVjYXVzZSB3ZSBtYWRlIGFuIGluY29ycmVjdCBhc3N1bXB0aW9uIGFib3V0IHdoYXQgY2Vs
bCB3ZSB3b3VsZCBzZWUuIFVzdWFsbHkgdXNlZCBmb3IgZnVuY3Rpb24gY2hlY2tzLgogICAgIEJh
ZEV4ZWN1dGFibGUsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIG1hZGUgYW4gaW5jb3JyZWN0IGFz
c3VtcHRpb24gYWJvdXQgd2hhdCBleGVjdXRhYmxlIHdlIHdvdWxkIHNlZS4KICAgICBCYWRDYWNo
ZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2UgYW4gaW5saW5lIGNhY2hlIHdhcyB3cm9uZy4KICAgICBC
YWRDb25zdGFudENhY2hlLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSBhIGNhY2hlIG9uIGEgd2VhayBj
b25zdGFudCAodXN1YWxseSBhIHByb3RvdHlwZSkgd2FzIHdyb25nLgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYwLDE0
ICsxNDYwLDYgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAg
ICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIAotICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOiB7Ci0gICAgICAgIC8vIEZJWE1FOiBX
ZSBjb3VsZCB0cmFjayBleGVjdXRhYmxlcyBpbiBBYnN0cmFjdFZhbHVlLCB3aGljaCB3b3VsZCBh
bGxvdyB1cyB0byBnZXQgcmlkIG9mIHRoZXNlIGNoZWNrcwotICAgICAgICAvLyBtb3JlIHRob3Jv
dWdobHkuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYyMDAKLSAg
ICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIGVsaW1pbmF0ZSB0aGVzZSBlbnRpcmVseSBpZiB3ZSBr
bm93IHRoZSBleGFjdCB2YWx1ZSB0aGF0IGZsb3dzIGludG8gdGhpcy4KLSAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjIwMQotICAgICAgICBicmVh
azsKLSAgICB9Ci0KICAgICBjYXNlIENoZWNrU3RydWN0dXJlOiB7CiAgICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgYmUgYWJsZSB0byBwcm9wYWdhdGUgdGhlIHN0cnVjdHVyZSBzZXRzIG9mIGNv
bnN0YW50cyAoaS5lLiBwcm90b3R5cGVzKS4KICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUg
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKQEAgLTE3MjcsMTYgKzE3MTksMjAgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgbV9zdGF0ZS5z
ZXRJc1ZhbGlkKGZhbHNlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgICAgICAKKyAgICBj
YXNlIEdldEV4ZWN1dGFibGU6CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjQ2Vs
bE90aGVyKTsKKyAgICAgICAgYnJlYWs7CiAgICAgCi0gICAgY2FzZSBDaGVja0Z1bmN0aW9uOiB7
CisgICAgY2FzZSBDaGVja0NlbGw6IHsKICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGZvck5vZGUo
bm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7Ci0gICAgICAgIGlmICh2YWx1ZSA9PSBub2RlLT5mdW5j
dGlvbigpLT52YWx1ZSgpKSB7CisgICAgICAgIGlmICh2YWx1ZSA9PSBub2RlLT5jZWxsT3BlcmFu
ZCgpLT52YWx1ZSgpKSB7CiAgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRy
dWUpOwogICAgICAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIAotICAgICAgICBmaWx0ZXJCeVZhbHVlKG5vZGUtPmNoaWxkMSgpLCAq
bm9kZS0+ZnVuY3Rpb24oKSk7CisgICAgICAgIGZpbHRlckJ5VmFsdWUobm9kZS0+Y2hpbGQxKCks
ICpub2RlLT5jZWxsT3BlcmFuZCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCShyZXZpc2lv
biAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiwxMyBAQCBzdHJ1Y3QgQmFzaWNCbG9jayA6IFJl
ZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0OwogICAgIAorICAgIHZvaWQgZGlkTGluaygpCisgICAgeworI2lmICFBU1NFUlRfRElT
QUJMRUQKKyAgICAgICAgaXNMaW5rZWQgPSB0cnVlOworI2VuZGlmCisgICAgfQorICAgIAogICAg
IC8vIFRoaXMgdmFsdWUgaXMgdXNlZCBpbnRlcm5hbGx5IGZvciBibG9jayBsaW5raW5nIGFuZCBP
U1IgZW50cnkuIEl0IGlzIG1vc3RseSBtZWFuaW5nbGVzcwogICAgIC8vIGZvciBvdGhlciBwdXJw
b3NlcyBkdWUgdG8gaW5saW5pbmcuCiAgICAgdW5zaWduZWQgYnl0ZWNvZGVCZWdpbjsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShy
ZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDE0ICsxNzgsMTkgQEAgcHJpdmF0ZToK
ICAgICAgICAgTm9kZSogY2FsbFRhcmdldCwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZz
ZXQsIENhbGxMaW5rU3RhdHVzKTsKICAgICB2b2lkIGhhbmRsZUNhbGwoaW50IHJlc3VsdCwgTm9k
ZVR5cGUgb3AsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6
ZSwgaW50IGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQpOwogICAgIHZv
aWQgaGFuZGxlQ2FsbChJbnN0cnVjdGlvbiogcGMsIE5vZGVUeXBlIG9wLCBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kKTsKLSAgICB2b2lkIGVtaXRGdW5jdGlvbkNoZWNrcyhjb25zdCBDYWxsTGlua1N0
YXR1cyYsIE5vZGUqIGNhbGxUYXJnZXQsIGludCByZWdpc3Rlck9mZnNldCwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCk7CisgICAgdm9pZCBlbWl0RnVuY3Rpb25DaGVja3MoQ2FsbFZhcmlhbnQsIE5v
ZGUqIGNhbGxUYXJnZXQsIGludCByZWdpc3Rlck9mZnNldCwgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCk7CisgICAgdm9pZCB1bmRvRnVuY3Rpb25DaGVja3MoQ2FsbFZhcmlhbnQpOwogICAgIHZvaWQg
ZW1pdEFyZ3VtZW50UGhhbnRvbXMoaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOworICAgIHVuc2lnbmVkIGlu
bGluaW5nQ29zdChDYWxsVmFyaWFudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kKTsgLy8gUmV0dXJuIFVJTlRfTUFYIGlmIGl0J3Mgbm90IGFu
IGlubGluaW5nIGNhbmRpZGF0ZS4gQnkgY29udmVudGlvbiwgaW50cmluc2ljcyBoYXZlIGEgY29z
dCBvZiAxLgogICAgIC8vIEhhbmRsZSBpbmxpbmluZy4gUmV0dXJuIHRydWUgaWYgaXQgc3VjY2Vl
ZGVkLCBmYWxzZSBpZiB3ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4KLSAgICBib29sIGhhbmRsZUlu
bGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgQ2Fs
bExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kKTsKKyAg
ICBib29sIGhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3Bl
cmFuZCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZy
YW1lOjpLaW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKKyAgICBlbnVtIENhbGxlckxp
bmthYmlsaXR5IHsgQ2FsbGVyRG9lc05vcm1hbExpbmtpbmcsIENhbGxlckxpbmtzTWFudWFsbHkg
fTsKKyAgICBib29sIGF0dGVtcHRUb0lubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGlu
dCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxG
cmFtZTo6S2luZCwgQ2FsbFRhaWxMaW5rYWJpbGl0eSwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSk7CisgICAgdm9pZCBpbmxpbmVDYWxsKE5vZGUq
IGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcmlhbnQsIGludCByZWdp
c3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0
T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIENhbGxlckxpbmthYmlsaXR5KTsKICAgICAv
LyBIYW5kbGUgaW50cmluc2ljIGZ1bmN0aW9ucy4gUmV0dXJuIHRydWUgaWYgaXQgc3VjY2VlZGVk
LCBmYWxzZSBpZiB3ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4KICAgICBib29sIGhhbmRsZUludHJp
bnNpYyhpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7
CiAgICAgYm9vbCBoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IoaW50IHJlc3VsdE9wZXJhbmQs
IEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgVHlwZWRBcnJheVR5cGUpOwotICAgIGJvb2wgaGFuZGxlQ29uc3RhbnRJ
bnRlcm5hbEZ1bmN0aW9uKGludCByZXN1bHRPcGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50
IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0
ZWRUeXBlIHByZWRpY3Rpb24sIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOworICAgIGJvb2wgaGFu
ZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKGludCByZXN1bHRPcGVyYW5kLCBJbnRlcm5hbEZ1
bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwogICAgIE5vZGUqIGhhbmRsZVB1dEJ5T2Zmc2V0
KE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBOb2RlKiB2
YWx1ZSk7CiAgICAgTm9kZSogaGFuZGxlR2V0QnlPZmZzZXQoU3BlY3VsYXRlZFR5cGUsIE5vZGUq
IGJhc2UsIGNvbnN0IFN0cnVjdHVyZVNldCYsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFBy
b3BlcnR5T2Zmc2V0LCBOb2RlVHlwZSBvcCA9IEdldEJ5T2Zmc2V0KTsKICAgICB2b2lkIGhhbmRs
ZUdldEJ5SWQoCkBAIC02MzcsNiArNjQyLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KKyAgICAKKyAgICB2b2lkIHJlbW92ZUxhc3ROb2RlRnJv
bUdyYXBoKE5vZGVUeXBlIGV4cGVjdGVkTm9kZVR5cGUpCisgICAgeworICAgICAgICBOb2RlKiBu
b2RlID0gbV9jdXJyZW50QmxvY2stPnRha2VMYXN0KCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG5vZGUtPm9wKCkgPT0gZXhwZWN0ZWROb2RlVHlwZSk7CisgICAgICAgIG1fZ3JhcGgubV9hbGxv
Y2F0b3IuZnJlZShub2RlKTsKKyAgICB9CiAKICAgICB2b2lkIGFkZFZhckFyZ0NoaWxkKE5vZGUq
IGNoaWxkKQogICAgIHsKQEAgLTg3MSw4ICs4ODMsNyBAQCBwcml2YXRlOgogICAgICAgICBWZWN0
b3I8VW5saW5rZWRCbG9jaz4gbV91bmxpbmtlZEJsb2NrczsKICAgICAgICAgCiAgICAgICAgIC8v
IFBvdGVudGlhbCBibG9jayBsaW5raW5nIHRhcmdldHMuIE11c3QgYmUgc29ydGVkIGJ5IGJ5dGVj
b2RlQmVnaW4sIGFuZAotICAgICAgICAvLyBjYW5ub3QgaGF2ZSB0d28gYmxvY2tzIHRoYXQgaGF2
ZSB0aGUgc2FtZSBieXRlY29kZUJlZ2luLiBGb3IgdGhpcyB2ZXJ5Ci0gICAgICAgIC8vIHJlYXNv
biwgdGhpcyBpcyBub3QgZXF1aXZhbGVudCB0byAKKyAgICAgICAgLy8gY2Fubm90IGhhdmUgdHdv
IGJsb2NrcyB0aGF0IGhhdmUgdGhlIHNhbWUgYnl0ZWNvZGVCZWdpbi4KICAgICAgICAgVmVjdG9y
PEJhc2ljQmxvY2sqPiBtX2Jsb2NrTGlua2luZ1RhcmdldHM7CiAgICAgICAgIAogICAgICAgICAv
LyBJZiB0aGUgY2FsbHNpdGUncyBiYXNpYyBibG9jayB3YXMgc3BsaXQgaW50byB0d28sIHRoZW4g
dGhpcyB3aWxsIGJlCkBAIC0xMDM0LDM2ICsxMDQ1LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlQ2FsbCgKICAgICAKICAgICB1bnNpZ25lZCBuZXh0T2Zmc2V0ID0gbV9jdXJyZW50SW5k
ZXggKyBpbnN0cnVjdGlvblNpemU7CiAKLSAgICBpZiAoSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rp
b24gPSBjYWxsTGlua1N0YXR1cy5pbnRlcm5hbEZ1bmN0aW9uKCkpIHsKLSAgICAgICAgaWYgKGhh
bmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihyZXN1bHQsIGZ1bmN0aW9uLCByZWdpc3Rlck9m
ZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHByZWRpY3Rpb24sIHNwZWNpYWxpemF0
aW9uS2luZCkpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgcGhhbnRvbWluZyBoYXMgdG8gYmUgKmFm
dGVyKiB0aGUgY29kZSBmb3IgdGhlIGludHJpbnNpYywgdG8gc2lnbmlmeSB0aGF0Ci0gICAgICAg
ICAgICAvLyB0aGUgaW5wdXRzIG11c3QgYmUga2VwdCBhbGl2ZSB3aGF0ZXZlciBleGl0cyB0aGUg
aW50cmluc2ljIG1heSBkby4KLSAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRh
cmdldCk7Ci0gICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIENhbiBvbmx5IGhh
bmRsZSB0aGlzIHVzaW5nIHRoZSBnZW5lcmljIGNhbGwgaGFuZGxlci4KLSAgICAgICAgYWRkQ2Fs
bChyZXN1bHQsIG9wLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVn
aXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgICAg
ICAKLSAgICBJbnRyaW5zaWMgaW50cmluc2ljID0gY2FsbExpbmtTdGF0dXMuaW50cmluc2ljRm9y
KHNwZWNpYWxpemF0aW9uS2luZCk7Ci0KLSAgICBKU0Z1bmN0aW9uKiBrbm93bkZ1bmN0aW9uID0g
bnVsbHB0cjsKLSAgICBpZiAoaW50cmluc2ljICE9IE5vSW50cmluc2ljKSB7Ci0gICAgICAgIGVt
aXRGdW5jdGlvbkNoZWNrcyhjYWxsTGlua1N0YXR1cywgY2FsbFRhcmdldCwgcmVnaXN0ZXJPZmZz
ZXQsIHNwZWNpYWxpemF0aW9uS2luZCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgaWYgKGhhbmRs
ZUludHJpbnNpYyhyZXN1bHQsIGludHJpbnNpYywgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCBwcmVkaWN0aW9uKSkgewotICAgICAgICAgICAgLy8gVGhpcyBwaGFu
dG9taW5nIGhhcyB0byBiZSAqYWZ0ZXIqIHRoZSBjb2RlIGZvciB0aGUgaW50cmluc2ljLCB0byBz
aWduaWZ5IHRoYXQKLSAgICAgICAgICAgIC8vIHRoZSBpbnB1dHMgbXVzdCBiZSBrZXB0IGFsaXZl
IHdoYXRldmVyIGV4aXRzIHRoZSBpbnRyaW5zaWMgbWF5IGRvLgotICAgICAgICAgICAgYWRkVG9H
cmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0KTsKLSAgICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50
b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6
YXRpb25LaW5kKTsKLSAgICAgICAgICAgIGlmIChtX2dyYXBoLmNvbXBpbGF0aW9uKCkpCi0gICAg
ICAgICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkQ2FsbCgpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChoYW5kbGVJbmxp
bmluZyhjYWxsVGFyZ2V0LCByZXN1bHQsIGNhbGxMaW5rU3RhdHVzLCByZWdpc3Rlck9mZnNldCwg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQsIGtpbmQpKSB7CisgICAgaWYg
KGhhbmRsZUlubGluaW5nKGNhbGxUYXJnZXQsIHJlc3VsdCwgY2FsbExpbmtTdGF0dXMsIHJlZ2lz
dGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbmV4dE9mZnNldCwga2luZCwg
cHJlZGljdGlvbikpIHsKICAgICAgICAgaWYgKG1fZ3JhcGguY29tcGlsYXRpb24oKSkKICAgICAg
ICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZENhbGwoKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTA4NSwxMSArMTA2NywxMSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVDYWxsKAogICAgIH0KICAgICBOb2RlKiBjYWxsID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBj
YWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHBy
ZWRpY3Rpb24pOwogCi0gICAgaWYgKGtub3duRnVuY3Rpb24pIAotICAgICAgICBjYWxsLT5naXZl
S25vd25GdW5jdGlvbihrbm93bkZ1bmN0aW9uKTsKKyAgICBpZiAoa25vd25GdW5jdGlvbikKKyAg
ICAgICAgY2FsbC0+c2V0Q2VsbE9wZXJhbmQobV9ncmFwaC5mcmVlemUoa25vd25GdW5jdGlvbikp
OwogfQogCi12b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0RnVuY3Rpb25DaGVja3MoY29uc3QgQ2Fs
bExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgcmVnaXN0
ZXJPZmZzZXQsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3ZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmVtaXRGdW5jdGlvbkNoZWNrcyhDYWxsVmFyaWFudCBjYWxsZWUsIE5vZGUqIGNhbGxUYXJn
ZXQsIGludCByZWdpc3Rlck9mZnNldCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewog
ICAgIE5vZGUqIHRoaXNBcmd1bWVudDsKICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkKQEAg
LTEwOTcsNTggKzEwNzksNDkgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdEZ1bmN0aW9uQ2hl
Y2tzKAogICAgIGVsc2UKICAgICAgICAgdGhpc0FyZ3VtZW50ID0gMDsKIAotICAgIGlmIChjYWxs
TGlua1N0YXR1cy5pc1Byb3ZlZCgpKSB7Ci0gICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2Fs
bFRhcmdldCwgdGhpc0FyZ3VtZW50KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAg
ICBBU1NFUlQoY2FsbExpbmtTdGF0dXMuY2FuT3B0aW1pemUoKSk7Ci0gICAgCi0gICAgaWYgKEpT
RnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbExpbmtTdGF0dXMuZnVuY3Rpb24oKSkKLSAgICAgICAg
YWRkVG9HcmFwaChDaGVja0Z1bmN0aW9uLCBPcEluZm8obV9ncmFwaC5mcmVlemUoZnVuY3Rpb24p
KSwgY2FsbFRhcmdldCwgdGhpc0FyZ3VtZW50KTsKKyAgICBpZiAoIWNhbGxlZS5pc0Nvc3VyZUNh
bGwoKSkKKyAgICAgICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhtX2dyYXBoLmZyZWV6
ZShjYWxsZWUuZnVuY3Rpb24oKSkpLCBjYWxsVGFyZ2V0LCB0aGlzQXJndW1lbnQpOwogICAgIGVs
c2UgewogICAgICAgICBBU1NFUlQoY2FsbExpbmtTdGF0dXMuZXhlY3V0YWJsZSgpKTsKICAgICAg
ICAgCi0gICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tFeGVjdXRhYmxlLCBPcEluZm8oY2FsbExpbmtT
dGF0dXMuZXhlY3V0YWJsZSgpKSwgY2FsbFRhcmdldCwgdGhpc0FyZ3VtZW50KTsKKyAgICAgICAg
YWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhjYWxsZWUuZXhlY3V0YWJsZSgpKSwgYWRkVG9H
cmFwaChHZXRFeGVjdXRhYmxlLCBjYWxsVGFyZ2V0KSwgdGhpc0FyZ3VtZW50KTsKICAgICB9CiB9
CiAKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OnVuZG9GdW5jdGlvbkNoZWNrcyhDYWxsVmFyaWFudCBj
YWxsZWUpCit7CisgICAgcmVtb3ZlTGFzdE5vZGVGcm9tR3JhcGgoQ2hlY2tDZWxsKTsKKyAgICBp
ZiAoY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSkKKyAgICAgICAgcmVtb3ZlTGFzdE5vZGVGcm9tR3Jh
cGgoR2V0RXhlY3V0YWJsZSk7Cit9CisKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRBcmd1bWVu
dFBoYW50b21zKGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgZm9yIChpbnQgaSA9IGtp
bmQgPT0gQ29kZUZvckNhbGwgPyAwIDogMTsgaSA8IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
OyArK2kpCiAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZv
ckFyZ3VtZW50KGksIHJlZ2lzdGVyT2Zmc2V0KSkpOwogfQogCi1ib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQs
IGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElu
bGluZUNhbGxGcmFtZTo6S2luZCBraW5kKQordW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGlu
aW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIHN0YXRpYyBjb25zdCBib29s
IHZlcmJvc2UgPSBmYWxzZTsKICAgICAKLSAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNp
YWxpemF0aW9uS2luZCA9IElubGluZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtp
bmQpOwotICAgIAogICAgIGlmICh2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmlu
ZyBpbmxpbmluZyAiLCBjYWxsTGlua1N0YXR1cywgIiBpbnRvICIsIGN1cnJlbnRDb2RlT3JpZ2lu
KCksICJcbiIpOworICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyBpbmxpbmluZyAiLCBjYWxs
ZWUsICIgaW50byAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKICAgICAKLSAgICAvLyBG
aXJzdCwgdGhlIHJlYWxseSBzaW1wbGUgY2hlY2tzOiBkbyB3ZSBoYXZlIGFuIGFjdHVhbCBKUyBm
dW5jdGlvbj8KLSAgICBpZiAoIWNhbGxMaW5rU3RhdHVzLmV4ZWN1dGFibGUoKSkgeworICAgIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS5mdW5jdGlvbkV4ZWN1dGFibGUo
KTsKKyAgICBpZiAoIWV4ZWN1dGFibGUpIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAg
ICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIHRoZXJlIGlzIG5vIGV4ZWN1dGFibGUu
XG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBpZiAoY2FsbExpbmtTdGF0
dXMuZXhlY3V0YWJsZSgpLT5pc0hvc3RGdW5jdGlvbigpKSB7Ci0gICAgICAgIGlmICh2ZXJib3Nl
KQotICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSBpdCdzIGEgaG9zdCBm
dW5jdGlvbi5cbiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBkYXRhTG9n
KCIgICAgRmFpbGluZyBiZWNhdXNlIHRoZXJlIGlzIG5vIGZ1bmN0aW9uIGV4ZWN1dGFibGUuIik7
CisgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CiAgICAgCi0gICAgRnVuY3Rpb25FeGVj
dXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNhbGxMaW5r
U3RhdHVzLmV4ZWN1dGFibGUoKSk7Ci0gICAgCiAgICAgLy8gRG9lcyB0aGUgbnVtYmVyIG9mIGFy
Z3VtZW50cyB3ZSdyZSBwYXNzaW5nIG1hdGNoIHRoZSBhcml0eSBvZiB0aGUgdGFyZ2V0PyBXZSBj
dXJyZW50bHkKICAgICAvLyBpbmxpbmUgb25seSBpZiB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBw
YXNzZWQgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBudW1iZXIKICAgICAvLyBhcmd1
bWVudHMgZXhwZWN0ZWQuCiAgICAgaWYgKHN0YXRpY19jYXN0PGludD4oZXhlY3V0YWJsZS0+cGFy
YW1ldGVyQ291bnQoKSkgKyAxID4gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpIHsKICAgICAg
ICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNl
IG9mIGFyaXR5IG1pc21hdGNoLlxuIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIFVJTlRfTUFYOwogICAgIH0KICAgICAKICAgICAvLyBEbyB3ZSBoYXZlIGEgY29kZSBi
bG9jaywgYW5kIGRvZXMgdGhlIGNvZGUgYmxvY2sncyBzaXplIG1hdGNoIHRoZSBoZXVyaXN0aWNz
L3JlcXVpcmVtZW50cyBmb3IKQEAgLTExNTcsMTggKzExMzAsMTggQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgIC8vIGlmIHdlIGhhZCBhIHN0YXRpYyBwcm9v
ZiBvZiB3aGF0IHdhcyBiZWluZyBjYWxsZWQ7IHRoaXMgbWlnaHQgaGFwcGVuIGZvciBleGFtcGxl
IGlmIHlvdSBjYWxsIGEKICAgICAvLyBnbG9iYWwgZnVuY3Rpb24sIHdoZXJlIHdhdGNocG9pbnRp
bmcgZ2l2ZXMgdXMgc3RhdGljIGluZm9ybWF0aW9uLiBPdmVyYWxsLCBpdCdzIGEgcmFyZSBjYXNl
CiAgICAgLy8gYmVjYXVzZSB3ZSBleHBlY3QgdGhhdCBhbnkgaG90IGNhbGxlZXMgd291bGQgaGF2
ZSBhbHJlYWR5IGJlZW4gY29tcGlsZWQuCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVj
dXRhYmxlLT5iYXNlbGluZUNvZGVCbG9ja0ZvcihzcGVjaWFsaXphdGlvbktpbmQpOworICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Ioa2lu
ZCk7CiAgICAgaWYgKCFjb2RlQmxvY2spIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIG5vIGNvZGUgYmxvY2sgYXZhaWxhYmxl
LlxuIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwog
ICAgIH0KICAgICBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsID0gaW5saW5lRnVuY3Rp
b25Gb3JDYXBhYmlsaXR5TGV2ZWwoCi0gICAgICAgIGNvZGVCbG9jaywgc3BlY2lhbGl6YXRpb25L
aW5kLCBjYWxsTGlua1N0YXR1cy5pc0Nsb3N1cmVDYWxsKCkpOworICAgICAgICBjb2RlQmxvY2ss
IGtpbmcsIGNhbGxMaW5rU3RhdHVzLmlzQ2xvc3VyZUNhbGwoKSk7CiAgICAgaWYgKCFjYW5Jbmxp
bmUoY2FwYWJpbGl0eUxldmVsKSkgewogICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAg
IGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGlzIG5vdCBpbmxpbmVh
YmxlLlxuIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFY
OwogICAgIH0KICAgICAKICAgICAvLyBDaGVjayBpZiB0aGUgY2FsbGVyIGlzIGFscmVhZHkgdG9v
IGxhcmdlLiBXZSBkbyB0aGlzIGNoZWNrIGhlcmUgYmVjYXVzZSB0aGF0J3MganVzdApAQCAtMTE3
OCw3ICsxMTUxLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQog
ICAgICAgICBjb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID0gZmFsc2U7CiAgICAg
ICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVz
ZSB0aGUgY2FsbGVyIGlzIHRvbyBsYXJnZS5cbiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CiAgICAgCiAgICAgLy8gRklYTUU6IHRoaXMg
c2hvdWxkIGJlIGJldHRlciBhdCBwcmVkaWN0aW5nIGhvdyBtdWNoIGJsb2F0IHdlIHdpbGwgaW50
cm9kdWNlIGJ5IGlubGluaW5nCkBAIC0xMTk3LDcgKzExNzAsNyBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgICAgIGlmIChkZXB0aCA+PSBPcHRpb25zOjpt
YXhpbXVtSW5saW5pbmdEZXB0aCgpKSB7CiAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIGRlcHRoIGV4Y2VlZGVkLlxu
Iik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gVUlOVF9N
QVg7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChlbnRyeS0+ZXhlY3V0YWJsZSgp
ID09IGV4ZWN1dGFibGUpIHsKQEAgLTEyMDUsMTkgKzExNzgsMjYgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgICAgICAgICAgaWYgKHJlY3Vyc2lvbiA+PSBP
cHRpb25zOjptYXhpbXVtSW5saW5pbmdSZWN1cnNpb24oKSkgewogICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNh
dXNlIHJlY3Vyc2lvbiBkZXRlY3RlZC5cbiIpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICB9CiAgICAgCiAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2coIiAg
ICBDb21taXR0aW5nIHRvIGlubGluaW5nLlxuIik7CisgICAgICAgIGRhdGFMb2coIiAgICBJbmxp
bmluZyBzaG91bGQgYmUgcG9zc2libGUuXG4iKTsKKyAgICAKKyAgICAvLyBJdCBtaWdodCBiZSBw
b3NzaWJsZSB0byBpbmxpbmUuCisgICAgcmV0dXJuIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3Vu
dCgpOworfQorCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJn
ZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0
ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9m
ZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIENhbGxlckxpbmthYmlsaXR5IGNhbGxl
ckxpbmthYmlsaXR5KQoreworICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRp
b25LaW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXphdGlvbktpbmRGb3Ioa2luZCk7CiAg
ICAgCi0gICAgLy8gTm93IHdlIGtub3cgd2l0aG91dCBhIGRvdWJ0IHRoYXQgd2UgYXJlIGNvbW1p
dHRlZCB0byBpbmxpbmluZy4gU28gYmVnaW4gdGhlIHByb2Nlc3MKLSAgICAvLyBieSBjaGVja2lu
ZyB0aGUgY2FsbGVlIChpZiBuZWNlc3NhcnkpIGFuZCBtYWtpbmcgc3VyZSB0aGF0IGFyZ3VtZW50
cyBhbmQgdGhlIGNhbGxlZQotICAgIC8vIGFyZSBmbHVzaGVkLgotICAgIGVtaXRGdW5jdGlvbkNo
ZWNrcyhjYWxsTGlua1N0YXR1cywgY2FsbFRhcmdldE5vZGUsIHJlZ2lzdGVyT2Zmc2V0LCBzcGVj
aWFsaXphdGlvbktpbmQpOworICAgIEFTU0VSVChpbmxpbmluZ0Nvc3QoY2FsbGVlLCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kKSAhPSBVSU5UX01BWCk7CiAg
ICAgCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsZWUuZnVuY3Rpb25FeGVjdXRhYmxl
KCktPmJhc2VsaW5lQ29kZUJsb2NrRm9yKHNwZWNpYWxpemF0aW9uS2luZCk7CisKICAgICAvLyBG
SVhNRTogRG9uJ3QgZmx1c2ggY29uc3RhbnRzIQogICAgIAogICAgIGludCBpbmxpbmVDYWxsRnJh
bWVTdGFydCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIo
cmVnaXN0ZXJPZmZzZXQpKS5vZmZzZXQoKSArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7
CkBAIC0xMjMzLDcgKzEyMTMsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmlu
ZyhOb2RlCiAgICAgICAgIHJlc3VsdFJlZyA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFu
ZChyZXN1bHRSZWcpOwogICAgIAogICAgIElubGluZVN0YWNrRW50cnkgaW5saW5lU3RhY2tFbnRy
eSgKLSAgICAgICAgdGhpcywgY29kZUJsb2NrLCBjb2RlQmxvY2ssIG1fZ3JhcGgubGFzdEJsb2Nr
KCksIGNhbGxMaW5rU3RhdHVzLmZ1bmN0aW9uKCksIHJlc3VsdFJlZywKKyAgICAgICAgdGhpcywg
Y29kZUJsb2NrLCBjb2RlQmxvY2ssIG1fZ3JhcGgubGFzdEJsb2NrKCksIGNhbGxlZS5mdW5jdGlv
bigpLCByZXN1bHRSZWcsCiAgICAgICAgIChWaXJ0dWFsUmVnaXN0ZXIpaW5saW5lQ2FsbEZyYW1l
U3RhcnQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBraW5kKTsKICAgICAKICAgICAvLyBU
aGlzIGlzIHdoZXJlIHRoZSBhY3R1YWwgaW5saW5pbmcgcmVhbGx5IGhhcHBlbnMuCkBAIC0xMjQ3
LDggKzEyMjcsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAg
ICAgCiAgICAgUkVMRUFTRV9BU1NFUlQoCiAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1faW5s
aW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsCi0gICAgICAgID09IGNhbGxMaW5rU3RhdHVzLmlz
Q2xvc3VyZUNhbGwoKSk7Ci0gICAgaWYgKGNhbGxMaW5rU3RhdHVzLmlzQ2xvc3VyZUNhbGwoKSkg
eworICAgICAgICA9PSBjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKTsKKyAgICBpZiAoY2FsbGVlLmlz
Q2xvc3VyZUNhbGwoKSkgewogICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGNhbGxlZVZhcmlh
YmxlID0KICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6Q2FsbGVlKSwg
Y2FsbFRhcmdldE5vZGUsIEltbWVkaWF0ZU5ha2VkU2V0KS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7
CiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogc2NvcGVWYXJpYWJsZSA9CkBAIC0xMjc2LDE5
ICsxMjU2LDIxIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgQVNTRVJUKGlubGluZVN0YWNrRW50cnkubV9jYWxsc2l0
ZUJsb2NrSGVhZC0+aXNMaW5rZWQpOwogICAgICAgICAKLSAgICAgICAgLy8gSXQncyBwb3NzaWJs
ZSB0aGF0IHRoZSBjYWxsc2l0ZSBibG9jayBoZWFkIGlzIG5vdCBvd25lZCBieSB0aGUgY2FsbGVy
LgotICAgICAgICBpZiAoIWlubGluZVN0YWNrRW50cnkubV9jYWxsZXItPm1fdW5saW5rZWRCbG9j
a3MuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAvLyBJdCdzIGRlZmluaXRlbHkgb3duZWQgYnkg
dGhlIGNhbGxlciwgYmVjYXVzZSB0aGUgY2FsbGVyIGNyZWF0ZWQgbmV3IGJsb2Nrcy4KLSAgICAg
ICAgICAgIC8vIEFzc2VydCB0aGF0IHRoaXMgYWxsIGFkZHMgdXAuCi0gICAgICAgICAgICBBU1NF
UlQoaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9i
bG9jayA9PSBpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbHNpdGVCbG9ja0hlYWQpOwotICAgICAgICAg
ICAgQVNTRVJUKGlubGluZVN0YWNrRW50cnkubV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MubGFz
dCgpLm1fbmVlZHNOb3JtYWxMaW5raW5nKTsKLSAgICAgICAgICAgIGlubGluZVN0YWNrRW50cnku
bV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MubGFzdCgpLm1fbmVlZHNOb3JtYWxMaW5raW5nID0g
ZmFsc2U7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBJdCdzIGRlZmluaXRlbHkg
bm90IG93bmVkIGJ5IHRoZSBjYWxsZXIuIFRlbGwgdGhlIGNhbGxlciB0aGF0IGhlIGRvZXMgbm90
Ci0gICAgICAgICAgICAvLyBuZWVkIHRvIGxpbmsgaGlzIGNhbGxzaXRlIGJsb2NrIGhlYWQsIGJl
Y2F1c2Ugd2UgZGlkIGl0IGZvciBoaW0uCi0gICAgICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tF
bnRyeS5tX2NhbGxlci0+bV9jYWxsc2l0ZUJsb2NrSGVhZE5lZWRzTGlua2luZyk7Ci0gICAgICAg
ICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+bV9jYWxsc2l0ZUJsb2NrSGVh
ZCA9PSBpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbHNpdGVCbG9ja0hlYWQpOwotICAgICAgICAgICAg
aW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+bV9jYWxsc2l0ZUJsb2NrSGVhZE5lZWRzTGlua2lu
ZyA9IGZhbHNlOworICAgICAgICBpZiAoY2FsbGVyTGlua2FiaWxpdHkgPT0gQ2FsbGVyRG9lc05v
cm1hbExpbmtpbmcpIHsKKyAgICAgICAgICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB0aGUgY2Fs
bHNpdGUgYmxvY2sgaGVhZCBpcyBub3Qgb3duZWQgYnkgdGhlIGNhbGxlci4KKyAgICAgICAgICAg
IGlmICghaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5pc0VtcHR5
KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBJdCdzIGRlZmluaXRlbHkgb3duZWQgYnkgdGhlIGNh
bGxlciwgYmVjYXVzZSB0aGUgY2FsbGVyIGNyZWF0ZWQgbmV3IGJsb2Nrcy4KKyAgICAgICAgICAg
ICAgICAvLyBBc3NlcnQgdGhhdCB0aGlzIGFsbCBhZGRzIHVwLgorICAgICAgICAgICAgICAgIEFT
U0VSVChpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5t
X2Jsb2NrID09IGlubGluZVN0YWNrRW50cnkubV9jYWxsc2l0ZUJsb2NrSGVhZCk7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKGlubGluZVN0YWNrRW50cnkubV9jYWxsZXItPm1fdW5saW5rZWRCbG9j
a3MubGFzdCgpLm1fbmVlZHNOb3JtYWxMaW5raW5nKTsKKyAgICAgICAgICAgICAgICBpbmxpbmVT
dGFja0VudHJ5Lm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX25lZWRzTm9ybWFs
TGlua2luZyA9IGZhbHNlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAv
LyBJdCdzIGRlZmluaXRlbHkgbm90IG93bmVkIGJ5IHRoZSBjYWxsZXIuIFRlbGwgdGhlIGNhbGxl
ciB0aGF0IGhlIGRvZXMgbm90CisgICAgICAgICAgICAgICAgLy8gbmVlZCB0byBsaW5rIGhpcyBj
YWxsc2l0ZSBibG9jayBoZWFkLCBiZWNhdXNlIHdlIGRpZCBpdCBmb3IgaGltLgorICAgICAgICAg
ICAgICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLT5tX2NhbGxzaXRlQmxvY2tI
ZWFkTmVlZHNMaW5raW5nKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRy
eS5tX2NhbGxlci0+bV9jYWxsc2l0ZUJsb2NrSGVhZCA9PSBpbmxpbmVTdGFja0VudHJ5Lm1fY2Fs
bHNpdGVCbG9ja0hlYWQpOworICAgICAgICAgICAgICAgIGlubGluZVN0YWNrRW50cnkubV9jYWxs
ZXItPm1fY2FsbHNpdGVCbG9ja0hlYWROZWVkc0xpbmtpbmcgPSBmYWxzZTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgbGlua0Jsb2NrcyhpbmxpbmVTdGFja0Vu
dHJ5Lm1fdW5saW5rZWRCbG9ja3MsIGlubGluZVN0YWNrRW50cnkubV9ibG9ja0xpbmtpbmdUYXJn
ZXRzKTsKQEAgLTEzMTcsNyArMTI5OSw2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
bGluaW5nKE5vZGUKICAgICAKICAgICAvLyBJZiB3ZSBnZXQgdG8gdGhpcyBwb2ludCB0aGVuIGFs
bCBibG9ja3MgbXVzdCBlbmQgaW4gc29tZSBzb3J0IG9mIHRlcm1pbmFscy4KICAgICBBU1NFUlQo
bGFzdEJsb2NrLT5sYXN0KCktPmlzVGVybWluYWwoKSk7Ci0gICAgCiAKICAgICAvLyBOZWVkIHRv
IGNyZWF0ZSBhIG5ldyBiYXNpYyBibG9jayBmb3IgdGhlIGNvbnRpbnVhdGlvbiBhdCB0aGUgY2Fs
bGVyLgogICAgIFJlZlB0cjxCYXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKG5ldyBCYXNpY0Js
b2NrKG5leHRPZmZzZXQsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgUE5hTikpOwpAQCAt
MTMzMywyMSArMTMxNCwxODQgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmco
Tm9kZQogICAgICAgICBBU1NFUlQoIW5vZGUtPnRhcmdldEJsb2NrKCkpOwogICAgICAgICBub2Rl
LT50YXJnZXRCbG9jaygpID0gYmxvY2suZ2V0KCk7CiAgICAgICAgIGlubGluZVN0YWNrRW50cnku
bV91bmxpbmtlZEJsb2Nrc1tpXS5tX25lZWRzRWFybHlSZXR1cm5MaW5raW5nID0gZmFsc2U7Ci0j
aWYgIUFTU0VSVF9ESVNBQkxFRAotICAgICAgICBibG9ja1RvTGluay0+aXNMaW5rZWQgPSB0cnVl
OwotI2VuZGlmCisgICAgICAgIGJsb2NrVG9MaW5rLT5kaWRMaW5rKCk7CiAgICAgfQogICAgIAog
ICAgIG1fY3VycmVudEJsb2NrID0gYmxvY2suZ2V0KCk7CiAgICAgQVNTRVJUKG1faW5saW5lU3Rh
Y2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuaXNFbXB0eSgpIHx8IG1faW5s
aW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMubGFzdCgpLT5ieXRl
Y29kZUJlZ2luIDwgbmV4dE9mZnNldCk7CiAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXIt
Pm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2suZ2V0KCkpKTsKLSAg
ICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVu
ZChibG9jay5nZXQoKSk7CisgICAgaWYgKGNhbGxlckxpbmthYmlsaXR5ID09IENhbGxlckRvZXNO
b3JtYWxMaW5raW5nKQorICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9j
a0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9jay5nZXQoKSk7CiAgICAgbV9ncmFwaC5hcHBlbmRC
bG9jayhibG9jayk7CiAgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOworfQorCitib29sIEJ5dGVD
b2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQg
cmVzdWx0T3BlcmFuZCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgSW5saW5l
Q2FsbEZyYW1lOjpLaW5kIGtpbmQsIENhbGxlckxpbmthYmlsaXR5IGNhbGxlckxpbmthYmlsaXR5
LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCB1bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlKQor
eworICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5l
Q2FsbEZyYW1lOjpzcGVjaWFsaXphdGlvbktpbmRGb3Ioa2luZCk7CiAgICAgCi0gICAgLy8gQXQg
dGhpcyBwb2ludCB3ZSByZXR1cm4gYW5kIGNvbnRpbnVlIHRvIGdlbmVyYXRlIGNvZGUgZm9yIHRo
ZSBjYWxsZXIsIGJ1dAotICAgIC8vIGluIHRoZSBuZXcgYmFzaWMgYmxvY2suCisgICAgaWYgKCFp
bmxpbmluZ0JhbGFuY2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoSW50
ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUuaW50ZXJuYWxGdW5jdGlvbigpKSB7Cisg
ICAgICAgIGlmIChoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24ocmVzdWx0T3BlcmFuZCwg
ZnVuY3Rpb24sIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3Bl
Y2lhbGl6YXRpb25LaW5kKSkgeworICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxs
VGFyZ2V0Tm9kZSk7CisgICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9m
ZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7Cisg
ICAgICAgICAgICBpbmxpbmluZ0JhbGFuY2UtLTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgSW50cmlu
c2ljIGludHJpbnNpYyA9IGNhbGxlZS5pbnRyaW5zaWNGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsK
KyAgICBpZiAoaW50cmluc2ljICE9IE5vSW50cmluc2ljKSB7CisgICAgICAgIGlmIChoYW5kbGVJ
bnRyaW5zaWMocmVzdWx0T3BlcmFuZCwgaW50cmluc2ljLCByZWdpc3Rlck9mZnNldCwgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIHByZWRpY3Rpb24pKSB7CisgICAgICAgICAgICBhZGRUb0dy
YXBoKFBoYW50b20sIGNhbGxUYXJnZXROb2RlKTsKKyAgICAgICAgICAgIGVtaXRBcmd1bWVudFBo
YW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lh
bGl6YXRpb25LaW5kKTsKKyAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZS0tOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICAKKyAgICB1bnNpZ25lZCBteUlubGluaW5nQ29zdCA9IGlubGluaW5nQ29zdCgKKyAgICAg
ICAgY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVlKCksIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgIAorICAgIGlmIChteUlubGluaW5nQ29zdCA+IGlu
bGluaW5nQmFsYW5jZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlubGluZUNh
bGwoY2FsbFRhcmdldE5vZGUsIHJlc3VsdE9wZXJhbmQsIGNhbGxMaW5rU3RhdHVzWzBdLmNhbGxl
ZSgpLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG5leHRPZmZz
ZXQsIGtpbmQsIGNhbGxlckxpbmthYmlsaXR5KTsKKyAgICBpbmxpbmluZ0JhbGFuY2UgLT0gbXlJ
bmxpbmluZ0Nvc3Q7CiAgICAgcmV0dXJuIHRydWU7CisgICAgCit9CisKK2Jvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3Bl
cmFuZCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBpbnQgcmVnaXN0ZXJP
ZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNl
dCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24p
Cit7CisgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQgPSBJbmxp
bmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5kKTsKKyAgICAKKyAgICBpZiAo
IWNhbGxMaW5rU3RhdHVzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAg
IHVuc2lnbmVkIGlubGluaW5nQmFsYW5jZSA9IE9wdGlvbnM6Om1heGltdW1GdW5jdGlvbkZvckNh
bGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCk7CisgICAgaWYgKHNwZWNpYWxpemF0
aW9uS2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KQorICAgICAgICBpbmxpbmluZ0JhbGFuY2UgPSBz
dGQ6Om1pbihpbmxpbmluZ0JhbGFuY2UsIE9wdGlvbnM6Om1heGltdW1GdW5jdGlvbkZvckNvbnN0
cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKSk7CisgICAgaWYgKGNhbGxMaW5r
U3RhdHVzLmlzQ2xvc3VyZUNhbGwoKSkKKyAgICAgICAgaW5saW5pbmdCYWxhbmNlID0gc3RkOjpt
aW4oaW5saW5pbmdCYWxhbmNlLCBPcHRpb25zOjptYXhpbXVtRnVuY3Rpb25Gb3JDbG9zdXJlQ2Fs
bElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKSk7CisgICAgCisgICAgLy8gRmlyc3Qg
Y2hlY2sgaWYgd2UgY2FuIGF2b2lkIGNyZWF0aW5nIGNvbnRyb2wgZmxvdy4gT3VyIGlubGluZXIg
ZG9lcyBzb21lIENGRworICAgIC8vIHNpbXBsaWZpY2F0aW9uIG9uIHRoZSBmbHkgYW5kIHRoaXMg
aGVscHMgcmVkdWNlIGNvbXBpbGUgdGltZXMsIGJ1dCB3ZSBjYW4gb25seSBsZXZlcmFnZQorICAg
IC8vIHRoaXMgaW4gY2FzZXMgd2hlcmUgd2UgZG9uJ3QgbmVlZCBjb250cm9sIGZsb3cgZGlhbW9u
ZHMgdG8gY2hlY2sgdGhlIGNhbGxlZS4KKyAgICBpZiAoIWNhbGxMaW5rU3RhdHVzLmNvdWxkVGFr
ZVNsb3dQYXRoKCkgJiYgY2FsbExpbmtTdGF0dXMuc2l6ZSgpID09IDEpIHsKKyAgICAgICAgaWYg
KCFjYWxsTGlua1N0YXR1cy5pc1Byb3ZlZCgpKSB7CisgICAgICAgICAgICBlbWl0RnVuY3Rpb25D
aGVja3MoCisgICAgICAgICAgICAgICAgY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVlKCksIGNhbGxU
YXJnZXROb2RlLCByZWdpc3Rlck9mZnNldCwgc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICAgICAg
fQorICAgICAgICBib29sIHJlc3VsdCA9IGF0dGVtcHRUb0lubGluZUNhbGwoCisgICAgICAgICAg
ICBjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0T3BlcmFuZCwgY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVl
KCksIHJlZ2lzdGVyT2Zmc2V0LAorICAgICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIG5leHRPZmZzZXQsIGtpbmQsIENhbGxlckRvZXNOb3JtYWxMaW5raW5nLCBwcmVkaWN0aW9u
LAorICAgICAgICAgICAgaW5saW5pbmdCYWxhbmNlKTsKKyAgICAgICAgaWYgKCFyZXN1bHQgJiYg
IWNhbGxMaW5rU3RhdHVzLmlzUHJvdmVkKCkpCisgICAgICAgICAgICB1bmRvRnVuY3Rpb25DaGVj
a3MoY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVlKCkpOworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKyAgICAKKyAgICAvLyBXZSBuZWVkIHRvIGNyZWF0ZSBzb21lIGtpbmQgb2Ygc3dpdGNo
IG92ZXIgY2FsbGVlLiBGb3Igbm93IHdlIG9ubHkgZG8gdGhpcyBpZiB3ZSBiZWxpZXZlIHRoYXQK
KyAgICAvLyB3ZSdyZSBpbiB0aGUgdG9wIHRpZXIuCisgICAgaWYgKCFpc0ZUTChtX2dyYXBoLm1f
cGxhbi5tb2RlKSB8fCAhT3B0aW9uczo6ZW5hYmxlUG9seW1vcnBoaWNDYWxsSW5saW5pbmcoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGJvb2wgYWxsQXJlQ2xvc3VyZUNhbGxz
ID0gdHJ1ZTsKKyAgICBib29sIGFsbEFyZURpcmVjdENhbGxzID0gdHJ1ZTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSBjYWxsTGlua1N0YXR1cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgaWYgKGNh
bGxMaW5rU3RhdHVzW2ldLmNhbGxlZSgpLmlzQ2xvc3VyZUNhbGwoKSkKKyAgICAgICAgICAgIGFs
bEFyZURpcmVjdENhbGxzID0gZmFsc2U7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFsbEFy
ZUNsb3N1cmVDYWxscyA9IGZhbHNlOworICAgIH0KKyAgICAKKyAgICBOb2RlKiB0aGluZ1RvU3dp
dGNoT247CisgICAgaWYgKGFsbEFyZURpcmVjdENhbGxzKQorICAgICAgICB0aGluZ1RvU3dpdGNo
T24gPSBjYWxsVGFyZ2V0Tm9kZTsKKyAgICBlbHNlIGlmIChhbGxBcmVDbG9zdXJlQ2FsbHMpCisg
ICAgICAgIHRoaW5nVG9Td2l0Y2hPbiA9IGFkZFRvR3JhcGgoR2V0RXhlY3V0YWJsZSwgdGhpbmdU
b1N3aXRjaE9uKTsKKyAgICBlbHNlIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBh
YmxlIHRvIGhhbmRsZSB0aGlzIGNhc2UsIGJ1dCBpdCdzIHRyaWNreSBhbmQgd2UgZG9uJ3Qga25v
dyBvZiBjYXNlcworICAgICAgICAvLyB3aGVyZSBpdCB3b3VsZCBiZSBiZW5lZmljaWFsLiBBbHNv
LCBDYWxsTGlua1N0YXR1cyB3b3VsZCBtYWtlIGFsbCBjYWxsZWVzIGFwcGVhciBsaWtlCisgICAg
ICAgIC8vIGNsb3N1cmUgY2FsbHMgaWYgYW55IGNhbGxzIHdlcmUgY2xvc3VyZSBjYWxscyAtIGV4
Y2VwdCBmb3IgY2FsbHMgdG8gaW50ZXJuYWwgZnVuY3Rpb25zLgorICAgICAgICAvLyBTbyB0aGlz
IHdpbGwgb25seSBhcmlzZSBpZiBzb21lIGNhbGxlZXMgYXJlIGludGVybmFsIGZ1bmN0aW9ucyBh
bmQgb3RoZXJzIGFyZSBjbG9zdXJlcy4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzNjAyMAorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIAorICAgIFN3aXRjaERhdGEmIGRhdGEgPSAqbV9ncmFwaC5tX3N3aXRjaERhdGEuYWRkKCk7
CisgICAgZGF0YS5raW5kID0gU3dpdGNoQ2VsbDsKKyAgICBhZGRUb0dyYXBoKFN3aXRjaCwgT3BJ
bmZvKCZkYXRhKSwgdGhpbmdUb1N3aXRjaE9uKTsKKyAgICAKKyAgICBCYXNpY0Jsb2NrKiBvcmln
aW5CbG9jayA9IG1fY3VycmVudEJsb2NrOworICAgIG9yaWdpbkJsb2NrLT5kaWRMaW5rKCk7Cisg
ICAgLy8gRklYTUU6IE5lZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgYmxvY2sgZG9lcyBub3QgbmVl
ZCBhbnkgbGlua2luZy4KKyAgICAKKyAgICAvLyBFYWNoIGlubGluZWQgY2FsbGVlIHdpbGwgaGF2
ZSBhIGxhbmRpbmcgYmxvY2sgdGhhdCBpdCByZXR1cm5zIGF0LiBUaGV5IHNob3VsZCBhbGwgaGF2
ZSBqdW1wcworICAgIC8vIHRvIHRoZSBjb250aW51YXRpb24gYmxvY2ssIHdoaWNoIHdlIGNyZWF0
ZSBsYXN0LgorICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gbGFuZGluZ0Jsb2NrczsKKyAgICAKKyAg
ICAvLyBXZSBtYWtlIGZvcmNlIHRoaXMgdHJ1ZSBpZiB3ZSBnaXZlIHVwIG9uIGlubGluaW5nIGFu
eSBvZiB0aGUgZWRnZXMuCisgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCA9IGNhbGxMaW5rU3Rh
dHVzLmNvdWxkVGFrZVNsb3dQYXRoKCk7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGNhbGxMaW5rU3RhdHVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIFJlZlB0cjxCYXNpY0Js
b2NrPiBibG9jayA9IGFkb3B0UmVmKG5ldyBCYXNpY0Jsb2NrKFVJTlRfTUFYLCBtX251bUFyZ3Vt
ZW50cywgbV9udW1Mb2NhbHMsIFBOYU4pKTsKKyAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBibG9j
ay5nZXQoKTsKKyAgICAgICAgbV9ncmFwaC5hcHBlbmQoYmxvY2spOworICAgICAgICAKKyAgICAg
ICAgYm9vbCBpbmxpbmluZ1Jlc3VsdCA9IGF0dGVtcHRUb0lubGluZUNhbGwoCisgICAgICAgICAg
ICBjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0T3BlcmFuZCwgY2FsbExpbmtTdGF0dXNbaV0uY2FsbGVl
KCksIHJlZ2lzdGVyT2Zmc2V0LAorICAgICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIG5leHRPZmZzZXQsIGtpbmQsIENhbGxlckxpbmtzTWFudWFsbHksIHByZWRpY3Rpb24sCisg
ICAgICAgICAgICBpbmxpbmluZ0JhbGFuY2UpOworICAgICAgICAKKyAgICAgICAgaWYgKCFpbmxp
bmluZ1Jlc3VsdCkgeworICAgICAgICAgICAgLy8gVGhhdCBmYWlsZWQgc28gd2UgbGV0IHRoZSBi
bG9jayBkaWUuIE5vdGhpbmcgc2hvdWxkIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgYmxvY2suIFdl
CisgICAgICAgICAgICAvLyBhbHNvIGdpdmUgdXAgb24gaW5saW5pbmcgYW55IG9mIHRoZSAobGVz
cyBmcmVxdWVudCkgY2FsbGVlcy4KKyAgICAgICAgICAgIEFTU0VSVCghYmxvY2stPm51bU5vZGVz
KCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2Jsb2Nrcy5s
YXN0KCkgPT0gYmxvY2spOworICAgICAgICAgICAgbV9ncmFwaC5tX2Jsb2Nrcy5yZW1vdmVMYXN0
KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFRoZSBmYWN0IHRoYXQgaW5saW5pbmcg
ZmFpbGVkIG1lYW5zIHdlIG5lZWQgYSBzbG93IHBhdGguCisgICAgICAgICAgICBjb3VsZFRha2VT
bG93UGF0aCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgSlNDZWxsKiB0aGluZ1RvQ2FzZU9uOworICAgICAgICBpZiAoYWxsQXJlRGlyZWN0
Q2FsbHMpCisgICAgICAgICAgICB0aGluZ1RvQ2FzZU9uID0gY2FsbExpbmtTdGF0dXNbaV0uY2Fs
bGVlKCkubm9uRXhlY3V0YWJsZUNhbGxlZSgpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IEFTU0VSVChhbGxBcmVDbG9zdXJlQ2FsbHMpOworICAgICAgICAgICAgdGhpbmdUb0Nhc2VPbiA9
IGNhbGxMaW5rU3RhdHVzW2ldLmNhbGxlZSgpLmV4ZWN1dGFibGUoKTsKKyAgICAgICAgfQorICAg
ICAgICBkYXRhLmNhc2VzLmFwcGVuZChTd2l0Y2hDYXNlKG1fZ3JhcGguZnJlZXplKHRoaW5nVG9D
YXNlT24pLCBibG9jay5nZXQoKSkpOworICAgICAgICBhZGRUb0dyYXBoKEp1bXApOworICAgICAg
ICBtX2N1cnJlbnRCbG9jay0+ZGlkTGluaygpOworICAgICAgICBsYW5kaW5nQmxvY2tzLmFwcGVu
ZChtX2N1cnJlbnRCbG9jayk7CisgICAgfQorICAgIAorICAgIFJlZlB0cjxCYXNpY0Jsb2NrPiBz
bG93UGF0aEJsb2NrID0gYWRvcHRSZWYobmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIG1fbnVtQXJn
dW1lbnRzLCBtX251bUxvY2FscywgUE5hTikpOworICAgIG1fZ3JhcGgubV9ibG9ja3MuYXBwZW5k
KHNsb3dQYXRoQmxvY2spOworICAgIHNsb3dQYXRoQmxvY2stPmRpZExpbmsoKTsKKyAgICBtX2N1
cnJlbnRCbG9jayA9IHNsb3dQYXRoQmxvY2suZ2V0KCk7CisgICAgaWYgKGNvdWxkVGFrZVNsb3dQ
YXRoKSB7CisgICAgICAgIGFkZENhbGwoLi4uKTsKKyAgICAgICAgYWRkVG9HcmFwaChKdW1wKTsK
KyAgICAgICAgbGFuZGluZ0Jsb2Nrcy5hcHBlbmQobV9jdXJyZW50QmxvY2spOworICAgIH0gZWxz
ZSB7CisgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tCYWRDYWxsKTsKKyAgICAgICAgZmx1c2hGb3JU
ZXJtaW5hbCgpOworICAgICAgICBhZGRUb0dyYXBoKFVucmVhY2hhYmxlKTsKKyAgICB9CisgICAg
CisgICAgUmVmUHRyPEJhc2ljQmxvY2s+IGNvbnRpbnVhdGlvbkJsb2NrID0gYWRvcHRSZWYobmV3
IEJhc2ljQmxvY2soVUlOVF9NQVgsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgUE5hTikp
OworICAgIG1fZ3JhcGgubV9ibG9ja3MuYXBwZW5kKGNvbnRpbnVhdGlvbkJsb2NrKTsKKyAgICAv
LyBGSVhNRTogU3RpbGwgc29tZSBtb3JlIHN0dWZmIGhlcmUuCiB9CiAKIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZU1pbk1heChpbnQgcmVzdWx0T3BlcmFuZCwgTm9kZVR5cGUgb3AsIGludCBy
ZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKQpAQCAtMTY0NSw3
ICsxNzg5LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVHlwZWRBcnJheUNvbgogCiBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oCiAgICAg
aW50IHJlc3VsdE9wZXJhbmQsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgcmVnaXN0
ZXJPZmZzZXQsCi0gICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0aW9uLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7
CiAgICAgLy8gSWYgd2UgZXZlciBmaW5kIHRoYXQgd2UgaGF2ZSBhIGxvdCBvZiBpbnRlcm5hbCBm
dW5jdGlvbnMgdGhhdCB3ZSBzcGVjaWFsaXplIGZvciwKICAgICAvLyB0aGVuIHdlIHNob3VsZCBw
cm9iYWJseSBoYXZlIHNvbWUgc29ydCBvZiBoYXNodGFibGUgZGlzcGF0Y2gsIG9yIG1heWJlIGV2
ZW4KQEAgLTE2NTQsOCArMTc5OCw2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0
YW50SW50ZXIKICAgICAvLyB3ZSBrbm93IGFib3V0IGlzIHNtYWxsIGVub3VnaCwgdGhhdCBoYXZp
bmcganVzdCBhIGxpbmVhciBjYXNjYWRlIG9mIGlmIHN0YXRlbWVudHMKICAgICAvLyBpcyBnb29k
IGVub3VnaC4KICAgICAKLSAgICBVTlVTRURfUEFSQU0ocHJlZGljdGlvbik7IC8vIFJlbW92ZSB0
aGlzIG9uY2Ugd2UgZG8gbW9yZSB0aGluZ3MuCi0gICAgCiAgICAgaWYgKGZ1bmN0aW9uLT5jbGFz
c0luZm8oKSA9PSBBcnJheUNvbnN0cnVjdG9yOjppbmZvKCkpIHsKICAgICAgICAgaWYgKGZ1bmN0
aW9uLT5nbG9iYWxPYmplY3QoKSAhPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjE1LDcgKzIzNTcs
NyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAg
ICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJlZXplKGNhY2hlZEZ1bmN0aW9u
KTsKICAgICAgICAgICAgICAgICBBU1NFUlQoY2FjaGVkRnVuY3Rpb24tPmluaGVyaXRzKEpTRnVu
Y3Rpb246OmluZm8oKSkpOwogICAgICAgICAgICAgICAgIE5vZGUqIGFjdHVhbENhbGxlZSA9IGdl
dChWaXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6Q2FsbGVlKSk7Ci0gICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChDaGVja0Z1bmN0aW9uLCBPcEluZm8oZnJvemVuKSwgYWN0dWFsQ2FsbGVlKTsKKyAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKGZyb3plbiksIGFjdHVh
bENhbGxlZSk7CiAgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8oZnJv
emVuKSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2Nh
bGxlZSk7CkBAIC0yODk3LDcgKzMwMzksNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAvLyBhbHJlYWR5IGduYXJseSBlbm91Z2ggYXMgaXQg
aXMuCiAgICAgICAgICAgICBBU1NFUlQocG9pbnRlcklzRnVuY3Rpb24oY3VycmVudEluc3RydWN0
aW9uWzJdLnUuc3BlY2lhbFBvaW50ZXIpKTsKICAgICAgICAgICAgIGFkZFRvR3JhcGgoCi0gICAg
ICAgICAgICAgICAgQ2hlY2tGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICBDaGVja0NlbGwsCiAg
ICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGguZnJlZXplKHN0YXRpY19jYXN0PEpTQ2VsbCo+
KGFjdHVhbFBvaW50ZXJGb3IoCiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3At
Pm1fY29kZUJsb2NrLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5zcGVjaWFsUG9pbnRlcikpKSks
CiAgICAgICAgICAgICAgICAgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKSkpOwpAQCAtMzMyMiw5ICszNDY0LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNl
cjo6bGlua0Jsb2NrKEJhc2ljQmxvYwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgCi0jaWYg
IUFTU0VSVF9ESVNBQkxFRAotICAgIGJsb2NrLT5pc0xpbmtlZCA9IHRydWU7Ci0jZW5kaWYKKyAg
ICBibG9jay0+ZGlkTGluaygpOwogfQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2tz
KFZlY3RvcjxVbmxpbmtlZEJsb2NrPiYgdW5saW5rZWRCbG9ja3MsIFZlY3RvcjxCYXNpY0Jsb2Nr
Kj4mIHBvc3NpYmxlVGFyZ2V0cykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTAsOCArOTAsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGRyZW4uc2V0Q2hpbGQxKEVkZ2UoKSk7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCFub2RlLT5jaGlsZDEoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5j
aGlsZDEoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5m
cmVlKG5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS0+
b3AoKSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIFBoaToKICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBTZXRBcmd1bWVudDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDYgKzE0NCw3IEBAIHZv
aWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIEZpYXRJbnQ1
MjoKICAgICBjYXNlIE1ha2VSb3BlOgogICAgIGNhc2UgVmFsdWVUb0ludDMyOgorICAgIGNhc2Ug
R2V0RXhlY3V0YWJsZToKICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICAgICAgCkBAIC0yMzksMTIgKzI0MCw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlLCBub2RlLT5h
cml0aE1vZGUoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIGNhc2UgQ2hlY2tG
dW5jdGlvbjoKLSAgICAgICAgZGVmKFB1cmVWYWx1ZShDaGVja0Z1bmN0aW9uLCBBZGphY2VuY3lM
aXN0KEFkamFjZW5jeUxpc3Q6OkZpeGVkLCBub2RlLT5jaGlsZDEoKSksIG5vZGUtPmZ1bmN0aW9u
KCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICBjYXNlIENoZWNrRXhlY3V0YWJs
ZToKLSAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlLCBub2RlLT5leGVjdXRhYmxlKCkpKTsKKyAg
ICBjYXNlIENoZWNrQ2VsbDoKKyAgICAgICAgZGVmKFB1cmVWYWx1ZShDaGVja0NlbGwsIEFkamFj
ZW5jeUxpc3QoQWRqYWNlbmN5TGlzdDo6Rml4ZWQsIG5vZGUtPmNoaWxkMSgpKSwgbm9kZS0+ZnVu
Y3Rpb24oKSkpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgQ29uc3RhbnRT
dG9yYWdlUG9pbnRlcjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODk4LDEzICs4OTgsMTMgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBD
aGVja0V4ZWN1dGFibGU6IHsKKyAgICAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOiB7CiAgICAgICAg
ICAgICBmaXhFZGdlPEZ1bmN0aW9uVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1
cmU6Ci0gICAgICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBDaGVja0NlbGw6
CiAgICAgICAgIGNhc2UgQ2hlY2tIYXNJbnN0YW5jZToKICAgICAgICAgY2FzZSBDcmVhdGVUaGlz
OgogICAgICAgICBjYXNlIEdldEJ1dHRlcmZseTogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3IEBAIEdy
YXBoOjpHcmFwaChWTSYgdm0sIFBsYW4mIHBsYW4sIExvbmdMaXYKICAgICAsIG1fZm9ybShMb2Fk
U3RvcmUpCiAgICAgLCBtX3VuaWZpY2F0aW9uU3RhdGUoTG9jYWxseVVuaWZpZWQpCiAgICAgLCBt
X3JlZkNvdW50U3RhdGUoRXZlcnl0aGluZ0lzTGl2ZSkKKyAgICAsIG1fc2hvdWxkUHJvZmlsZShm
YWxzZSkKIHsKICAgICBBU1NFUlQobV9wcm9maWxlZEJsb2NrKTsKICAgICAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtNzYxLDYgKzc2
MSw3IEBAIHB1YmxpYzoKICAgICBHcmFwaEZvcm0gbV9mb3JtOwogICAgIFVuaWZpY2F0aW9uU3Rh
dGUgbV91bmlmaWNhdGlvblN0YXRlOwogICAgIFJlZkNvdW50U3RhdGUgbV9yZWZDb3VudFN0YXRl
OworICAgIGJvb2wgbV9zaG91bGRQcm9maWxlOwogcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGhh
bmRsZVN1Y2Nlc3NvcihWZWN0b3I8QmFzaWNCbG9jayosIDE2PiYgd29ya2xpc3QsIEJhc2ljQmxv
Y2sqLCBCYXNpY0Jsb2NrKiBzdWNjZXNzb3IpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsNyArMTYwLDggQEAgc3RydWN0IFN3aXRj
aENhc2UgewogZW51bSBTd2l0Y2hLaW5kIHsKICAgICBTd2l0Y2hJbW0sCiAgICAgU3dpdGNoQ2hh
ciwKLSAgICBTd2l0Y2hTdHJpbmcKKyAgICBTd2l0Y2hTdHJpbmcsCisgICAgU3dpdGNoQ2VsbAog
fTsKIAogc3RydWN0IFN3aXRjaERhdGEgewpAQCAtMTA0NCw5ICsxMDQ1LDExIEBAIHN0cnVjdCBO
b2RlIHsKICAgICAgICAgbV9vcEluZm8yID0gcHJlZGljdGlvbjsKICAgICB9CiAgICAgCi0gICAg
Ym9vbCBjYW5CZUtub3duRnVuY3Rpb24oKQorICAgIGJvb2wgaGFzQ2VsbE9wZXJhbmQoKQogICAg
IHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgQWxsb2NhdGlvblByb2Zp
bGVXYXRjaHBvaW50OgorICAgICAgICBjYXNlIENoZWNrQ2VsbDoKICAgICAgICAgY2FzZSBOYXRp
dmVDb25zdHJ1Y3Q6CiAgICAgICAgIGNhc2UgTmF0aXZlQ2FsbDoKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwpAQCAtMTA1NSw1NCArMTA1OCwxNiBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBib29sIGhhc0tub3duRnVuY3Rpb24oKQorICAgIEZyb3plblZhbHVlKiBj
ZWxsT3BlcmFuZCgpCiAgICAgewotICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKLSAgICAgICAgY2Fz
ZSBOYXRpdmVDb25zdHJ1Y3Q6Ci0gICAgICAgIGNhc2UgTmF0aXZlQ2FsbDoKLSAgICAgICAgICAg
IHJldHVybiAoYm9vbCltX29wSW5mbzsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBKU0Z1bmN0aW9uKiBrbm93
bkZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjYW5CZUtub3duRnVuY3Rpb24oKSk7
Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNGdW5jdGlvbio+KG1fb3BJbmZvKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIGdpdmVLbm93bkZ1bmN0aW9uKEpTRnVuY3Rpb24qIGNhbGxEYXRhKSAK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChjYW5CZUtub3duRnVuY3Rpb24oKSk7Ci0gICAgICAgIG1f
b3BJbmZvID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oY2FsbERhdGEpOwotICAgIH0KLQotICAg
IGJvb2wgaGFzRnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgc3dpdGNoIChvcCgpKSB7Ci0gICAg
ICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKLSAgICAgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdh
dGNocG9pbnQ6Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEZyb3plblZh
bHVlKiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBBU1NFUlQoaGFzRnVuY3Rpb24oKSk7Cisg
ICAgICAgIEFTU0VSVChoYXNDZWxsT3BlcmFuZCgpKTsKICAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8RnJvemVuVmFsdWUqPihtX29wSW5mbyk7CiAgICAgfQogICAgIAotICAgIGJvb2wg
aGFzRXhlY3V0YWJsZSgpCisgICAgdm9pZCBzZXRDZWxsT3BlcmFuZChGcm96ZW5WYWx1ZSogdmFs
dWUpCiAgICAgewotICAgICAgICByZXR1cm4gb3AoKSA9PSBDaGVja0V4ZWN1dGFibGU7Ci0gICAg
fQotICAgIAotICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBqc0Nhc3Q8RXhlY3V0YWJsZUJhc2UqPihyZWludGVycHJldF9jYXN0PEpTQ2VsbCo+
KG1fb3BJbmZvKSk7CisgICAgICAgIEFTU0VSVChoYXNDZWxsT3BlcmFuZCgpKTsKKyAgICAgICAg
bV9vcEluZm8gPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSk7CiAgICAgfQogICAgIAog
ICAgIGJvb2wgaGFzVmFyaWFibGVXYXRjaHBvaW50U2V0KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDcgKzE1
Myw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhQdXRCeUlk
Rmx1c2gsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJz
V29ybGQpIFwKICAgICBtYWNybyhQdXRCeUlkRGlyZWN0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9k
ZUNsb2JiZXJzV29ybGQpIFwKICAgICBtYWNybyhDaGVja1N0cnVjdHVyZSwgTm9kZU11c3RHZW5l
cmF0ZSkgXAotICAgIG1hY3JvKENoZWNrRXhlY3V0YWJsZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAor
ICAgIG1hY3JvKEdldEV4ZWN1dGFibGUsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFB1dFN0
cnVjdHVyZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEFsbG9jYXRlUHJvcGVydHlT
dG9yYWdlLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdFN0b3JhZ2UpIFwKICAgICBtYWNy
byhSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3Vs
dFN0b3JhZ2UpIFwKQEAgLTE4Niw3ICsxODYsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAgICAgbWFjcm8oVmFyaWFibGVXYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgbWFjcm8oVmFySW5qZWN0aW9uV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAog
ICAgIG1hY3JvKEZ1bmN0aW9uUmVlbnRyeVdhdGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
LSAgICBtYWNybyhDaGVja0Z1bmN0aW9uLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8o
Q2hlY2tDZWxsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oQ2hlY2tCYWRDZWxsLCBO
b2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50
LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tJbkJvdW5kcywgTm9kZU11c3RH
ZW5lcmF0ZSkgXAogICAgIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhh
bnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tQ2Fub25p
Y2FsaXphdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsOCArOTIsMTAgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4ucmVtb3ZlRWRnZShp
LS0pOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKQorICAgICAgICAgICAg
ICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvQ2hlY2soKTsKICAgICAg
ICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21S
ZW1vdmFsUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyNSw2ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJl
bi5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0
b3IuZnJlZShub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwog
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgIH0K
QEAgLTE0Miw2ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFu
Z2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBt
X2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgICAgICAgICB9CkBAIC0xNDksOCArMTUxLDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNhc2UgSGFyZFBo
YW50b206IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHko
KSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjg5LDYgKzY4OSwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2Rl
KiBub2RlCiAKICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7CiAgICAgCisgICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9qaXQuY29kZUJsb2NrKCkt
PmFkZENhbGxMaW5rSW5mbygpOworCisgICAgaWYgKG1faml0LmdyYXBoKCkubV9zaG91bGRQcm9m
aWxlICYmICFtX3N0YXRlLmZvck5vZGUoY2FsbGVlRWRnZSkubV92YWx1ZSkgeworICAgICAgICBt
X2ppdC52bSgpLmNhbGxFZGdlTG9nLT5lbWl0TG9nQ29kZSgKKyAgICAgICAgICAgIG1faml0LCBj
YWxsTGlua0luZm8tPmNhbGxFZGdlUHJvZmlsZSwgY2FsbGVlLmpzVmFsdWVSZWdzKCkpOworICAg
IH0KKyAgICAKICAgICBzbG93UGF0aC5hcHBlbmQoYnJhbmNoTm90Q2VsbChjYWxsZWUuanNWYWx1
ZVJlZ3MoKSkpOwogICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hQdHJXaXRoUGF0Y2go
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBjYWxsZWVQYXlsb2FkR1BSLCB0YXJnZXRUb0NoZWNr
KSk7CiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjYWxsZWVQYXls
b2FkR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9zY29wZSkpLCByZXN1bHRQYXls
b2FkR1BSKTsKQEAgLTcxMyw3ICs3MjAsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2Fs
bChOb2RlKiBub2RlCiAgICAgICAgIG1faml0Lm1vdmUoY2FsbGVlUGF5bG9hZEdQUiwgR1BSSW5m
bzo6cmVnVDApOwogICAgICAgICBtX2ppdC5tb3ZlKGNhbGxlZVRhZ0dQUiwgR1BSSW5mbzo6cmVn
VDEpOwogICAgIH0KLSAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+
YWRkQ2FsbExpbmtJbmZvKCk7CiAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihpbmZvKSwgR1BSSW5mbzo6cmVnVDIpOwogICAgIEpJVENvbXBpbGVyOjpDYWxsIHNs
b3dDYWxsID0gbV9qaXQubmVhckNhbGwoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MjYsNyArNjI2LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU1pc2NTdHJpY3RFcQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2Rl
KQogewotCiAgICAgYm9vbCBpc0NhbGwgPSBub2RlLT5vcCgpID09IENhbGw7CiAgICAgaWYgKCFp
c0NhbGwpCiAgICAgICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+b3Ao
KSA9PSBDb25zdHJ1Y3QpOwpAQCAtNjcwLDYgKzY2OSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0Q2FsbChOb2RlKiBub2RlCiAKICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgCisgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0lu
Zm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7CisgICAgCisgICAgaWYg
KG1faml0LmdyYXBoKCkubV9zaG91bGRQcm9maWxlICYmICFtX3N0YXRlLmZvck5vZGUoY2FsbGVl
RWRnZSkubV92YWx1ZSkKKyAgICAgICAgbV9qaXQudm0oKS5jYWxsRWRnZUxvZy0+ZW1pdExvZ0Nv
ZGUobV9qaXQsIGNhbGxMaW5rSW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBjYWxsZWVHUFIpOworCiAg
ICAgc2xvd1BhdGggPSBtX2ppdC5icmFuY2hQdHJXaXRoUGF0Y2goTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBjYWxsZWVHUFIsIHRhcmdldFRvQ2hlY2ssIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKDApKTsKIAogICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
Y2FsbGVlR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9zY29wZSkpLCByZXN1bHRH
UFIpOwpAQCAtNjgyLDcgKzY4Niw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5v
ZGUqIG5vZGUKICAgICBzbG93UGF0aC5saW5rKCZtX2ppdCk7CiAgICAgCiAgICAgbV9qaXQubW92
ZShjYWxsZWVHUFIsIEdQUkluZm86OnJlZ1QwKTsgLy8gQ2FsbGVlIG5lZWRzIHRvIGJlIGluIHJl
Z1QwCi0gICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+
YWRkQ2FsbExpbmtJbmZvKCk7CiAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpyZWdUMik7IC8vIExpbmsgaW5mbyBuZWVk
cyB0byBiZSBpbiByZWdUMgogICAgIEpJVENvbXBpbGVyOjpDYWxsIHNsb3dDYWxsID0gbV9qaXQu
bmVhckNhbGwoKTsKICAgICAKQEAgLTM3ODQsMTggKzM3ODcsMjYgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgo
bm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKLSAgICBjYXNlIENoZWNrRnVuY3Rpb246
IHsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZEZ1bmN0aW9uLCBKU1ZhbHVlU291
cmNlOjp1bmJveGVkQ2VsbChmdW5jdGlvbi5ncHIoKSksIG5vZGUtPmNoaWxkMSgpLCBtX2ppdC5i
cmFuY2hXZWFrUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgZnVuY3Rpb24uZ3ByKCksIG5vZGUt
PmZ1bmN0aW9uKCktPnZhbHVlKCkuYXNDZWxsKCkpKTsKKyAgICBjYXNlIENoZWNrQ2VsbDogewor
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBjZWxsKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRDZWxsLCBKU1ZhbHVlU291cmNlOjp1bmJveGVk
Q2VsbChjZWxsLmdwcigpKSwgbm9kZS0+Y2hpbGQxKCksIG1faml0LmJyYW5jaFdlYWtQdHIoSklU
Q29tcGlsZXI6Ok5vdEVxdWFsLCBjZWxsLmdwcigpLCBub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1
ZSgpLmFzQ2VsbCgpKSk7CiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOiB7CisgICAgY2FzZSBD
aGVja0JhZENlbGw6IHsKKyAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oQmFk
Q2VsbCwgSlNWYWx1ZVJlZ3MoKSwgMCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAg
CisgICAgY2FzZSBHZXRFeGVjdXRhYmxlOiB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGZ1bmN0aW9uKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgc3BlY3VsYXRlQ2VsbFR5
cGUobm9kZS0+Y2hpbGQxKCksIGZ1bmN0aW9uLmdwcigpLCBTcGVjRnVuY3Rpb24sIEpTRnVuY3Rp
b25UeXBlKTsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRFeGVjdXRhYmxlLCBKU1ZhbHVl
U291cmNlOjp1bmJveGVkQ2VsbChmdW5jdGlvbi5ncHIoKSksIG5vZGUtPmNoaWxkMSgpLCBtX2pp
dC5icmFuY2hXZWFrUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJl
c3MoZnVuY3Rpb24uZ3ByKCksIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwgbm9k
ZS0+ZXhlY3V0YWJsZSgpKSk7Ci0gICAgICAgIG5vUmVzdWx0KG5vZGUpOworICAgICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBmdW5jdGlvbik7CisgICAgICAgIEdQUlJlZyBm
dW5jdGlvbkdQUiA9IGZ1bmN0aW9uLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOworICAgICAgICBzcGVjdWxhdGVDZWxsVHlwZShub2RlLT5jaGlsZDEoKSwg
ZnVuY3Rpb25HUFIsIFNwZWNGdW5jdGlvbiwgSlNGdW5jdGlvblR5cGUpOworICAgICAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uR1BSLCBKU0Z1bmN0aW9uOjpv
ZmZzZXRPZkV4ZWN1dGFibGUoKSksIHJlc3VsdEdQUik7CisgICAgICAgIGNlbGxSZXN1bHQocmVz
dWx0R1BSLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0lu
amVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjEsNiArNjEsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghT3B0aW9uczo6ZW5hYmxlT1NS
RW50cnlUb0ZUTCgpKQogICAgICAgICAgICAgbGV2ZWwgPSBGVEw6OkNhbkNvbXBpbGU7CiAgICAg
ICAgIAorICAgICAgICBtX2dyYXBoLm1fc2hvdWxkUHJvZmlsZSA9IHRydWU7CisgICAgICAgIAog
ICAgICAgICBJbnNlcnRpb25TZXQgaW5zZXJ0aW9uU2V0KG1fZ3JhcGgpOwogICAgICAgICBmb3Ig
KEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgt
LTspIHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9j
a0luZGV4KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsMjEgQEAgcHVibGljOgog
I2VuZGlmCiAgICAgfQogICAgIAorICAgIHZvaWQgbG9hZFZhbHVlKEFkZHJlc3MgYWRkcmVzcywg
SlNWYWx1ZVJlZ3MgcmVncykKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbG9h
ZDY0KGFkZHJlc3MsIHJlZ3MuZ3ByKCkpOworI2Vsc2UKKyAgICAgICAgaWYgKGFkZHJlc3MuYmFz
ZSA9PSByZWdzLnBheWxvYWRHUFIoKSkgeworICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0
aE9mZnNldChUYWdPZmZzZXQpLCByZWdzLnRhZ0dQUigpKTsKKyAgICAgICAgICAgIGxvYWQzMihh
ZGRyZXNzLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCksIHJlZ3MucGF5bG9hZEdQUigpKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoUGF5
bG9hZE9mZnNldCksIHJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAgICAgIGxvYWQzMihhZGRy
ZXNzLndpdGhPZmZzZXQoVGFnT2Zmc2V0KSwgcmVncy50YWdHUFIoKSk7CisgICAgICAgIH0KKyNl
bmRpZgorICAgIH0KKyAgICAKICAgICB2b2lkIG1vdmVUcnVzdGVkVmFsdWUoSlNWYWx1ZSB2YWx1
ZSwgSlNWYWx1ZVJlZ3MgcmVncykKICAgICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAkocmV2aXNpb24gMTcyMTc3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAkod29ya2luZyBjb3B5
KQpAQCAtMTY2Niw2ICsxNjY2LDE1IEBAIHB1YmxpYzoKICAgICAgICAgbW92ZShhcmc0LCBHUFJJ
bmZvOjphcmd1bWVudEdQUjMpOwogICAgIH0KICNlbmRpZgorICAgIAorICAgIHZvaWQgc2V0dXBB
cmd1bWVudHMoSlNWYWx1ZVJlZ3MgYXJnMSkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICAgICAgc2V0dXBBcmd1bWVudHMoYXJnMS5ncHIoKSk7CisjZWxzZQorICAgICAgICBzZXR1cEFy
Z3VtZW50cyhhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSk7CisjZW5kaWYKKyAgICB9
CiAKICAgICB2b2lkIHNldHVwUmVzdWx0cyhHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QikKICAg
ICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAkocmV2aXNpb24gMTcyMTc3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgJKHdvcmtpbmcgY29weSkK
QEAgLTYwLDYgKzYwLDggQEAgcHVibGljOgogICAgIEdQUlJlZyB0YWdHUFIoKSBjb25zdCB7IHJl
dHVybiBJbnZhbGlkR1BSUmVnOyB9CiAgICAgR1BSUmVnIHBheWxvYWRHUFIoKSBjb25zdCB7IHJl
dHVybiBtX2dwcjsgfQogICAgIAorICAgIGJvb2wgdXNlcyhHUFJSZWcgZ3ByKSBjb25zdCB7IHJl
dHVybiBtX2dwciA9PSBncHI7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByOwog
fTsKQEAgLTE2OSw2ICsxNzEsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0YWdHUFIoKTsK
ICAgICB9CiAKKyAgICBib29sIHVzZXMoR1BSUmVnIGdwcikgY29uc3QgeyByZXR1cm4gbV90YWdH
UFIgPT0gZ3ByIHx8IG1fcGF5bG9hZEdQUiA9PSBncHI7IH0KKyAgICAKIHByaXZhdGU6CiAgICAg
aW50OF90IG1fdGFnR1BSOwogICAgIGludDhfdCBtX3BheWxvYWRHUFI7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMwMCw2ICszMDAsMTMgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQg
b3Bjb2RlSQogICAgIHN0b3JlMzIocmVnVDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIs
IEpTU3RhY2s6OkNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQ
YXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAgICAgc3RvcmUzMihy
ZWdUMSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgSlNTdGFjazo6Q2FsbGVlICogc3Rh
dGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFRhZ09mZnNldCAtIHNpemVvZihDYWxs
ZXJGcmFtZUFuZFBDKSkpOwogCisgICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2st
PmFkZENhbGxMaW5rSW5mbygpOworCisgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewor
ICAgICAgICBtX3ZtLT5jYWxsRWRnZUxvZy0+ZW1pdExvZ0NvZGUoCisgICAgICAgICAgICAqdGhp
cywgaW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApKTsKKyAg
ICB9CisKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbF9ldmFsKSB7CiAgICAgICAgIGNvbXBp
bGVDYWxsRXZhbChpbnN0cnVjdGlvbik7CiAgICAgICAgIHJldHVybjsKQEAgLTMxMyw3ICszMjAs
NiBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgYWRkU2xv
d0Nhc2Uoc2xvd0Nhc2UpOwogCiAgICAgQVNTRVJUKG1fY2FsbENvbXBpbGF0aW9uSW5mby5zaXpl
KCkgPT0gY2FsbExpbmtJbmZvSW5kZXgpOwotICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1fY29k
ZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsKICAgICBpbmZvLT5jYWxsVHlwZSA9IENhbGxMaW5r
SW5mbzo6Y2FsbFR5cGVGb3Iob3Bjb2RlSUQpOwogICAgIGluZm8tPmNvZGVPcmlnaW4gPSBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpOwogICAgIGluZm8tPmNhbGxlZUdQUiA9IHJlZ1QwOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAxNzIxNzcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTIsNiArMjEyLDExIEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9w
Y29kZUkKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSwgcmVnVDApOyAvLyByZWdU
MCBob2xkcyBjYWxsZWUuCiAKICAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHN0YWNrUG9pbnRl
clJlZ2lzdGVyLCBKU1N0YWNrOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdp
c3RlcikpIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CisgICAgCisgICAgQ2FsbExpbmtJ
bmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5mbygpOworCisgICAgaWYgKHNo
b3VsZEVtaXRQcm9maWxpbmcoKSkKKyAgICAgICAgbV92bS0+Y2FsbEVkZ2VMb2ctPmVtaXRMb2dD
b2RlKCp0aGlzLCBpbmZvLT5jYWxsRWRnZVByb2ZpbGUsIHJlZ1QwKTsKIAogICAgIGlmIChvcGNv
ZGVJRCA9PSBvcF9jYWxsX2V2YWwpIHsKICAgICAgICAgY29tcGlsZUNhbGxFdmFsKGluc3RydWN0
aW9uKTsKQEAgLTIyMyw3ICsyMjgsNiBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJ
RCBvcGNvZGVJCiAgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2UpOwogCiAgICAgQVNTRVJUKG1fY2Fs
bENvbXBpbGF0aW9uSW5mby5zaXplKCkgPT0gY2FsbExpbmtJbmZvSW5kZXgpOwotICAgIENhbGxM
aW5rSW5mbyogaW5mbyA9IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsKICAgICBpbmZv
LT5jYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3Iob3Bjb2RlSUQpOwogICAgIGlu
Zm8tPmNvZGVPcmlnaW4gPSBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpOwogICAgIGluZm8t
PmNhbGxlZUdQUiA9IHJlZ1QwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0lubGluZXMuaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAv
LyBJbiBmYWN0LCBpdCBjYW4gbWFrZSBhIGxvdCBvZiBzZW5zZTogb3V0c2lkZSBvZiBKU0MsIHRo
aXMgZmlsZSBiZWNvbWVzIGEga2luZCBvZiB1bWJyZWxsYQogLy8gaGVhZGVyIHRoYXQgcHVsbHMg
aW4gbW9zdCAoYWxsPykgb2YgdGhlIGludGVyZXN0aW5nIHRoaW5ncyBpbiBKU0MuCiAKKyNpbmNs
dWRlICJDYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lSW5saW5l
cy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJHQ0luY29taW5n
UmVmQ291bnRlZElubGluZXMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAko
cmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAko
d29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNs
YXNzIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzOwogICAgIGNsYXNzIEJ1aWx0aW5FeGVjdXRh
YmxlczsKKyAgICBjbGFzcyBDYWxsRWRnZUxvZzsKICAgICBjbGFzcyBDb2RlQmxvY2s7CiAgICAg
Y2xhc3MgQ29kZUNhY2hlOwogICAgIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwpAQCAtMjMyLDYg
KzIzMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBP
d25QdHI8REZHOjpMb25nTGl2ZWRTdGF0ZT4gZGZnU3RhdGU7CiAjZW5kaWYgLy8gRU5BQkxFKERG
R19KSVQpCisgICAgICAgIAorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbEVkZ2VMb2c+IGNh
bGxFZGdlTG9nOwogCiAgICAgICAgIFZNVHlwZSB2bVR5cGU7CiAgICAgICAgIENsaWVudERhdGEq
IGNsaWVudERhdGE7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL25l
dy1hcnJheS10aGVuLWV4aXQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9uZXctYXJyYXktdGhlbi1leGl0LmpzCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9uZXctYXJyYXktdGhlbi1leGl0LmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKK2Z1bmN0aW9uIGZvbyhmKSB7CisgICAgcmV0
dXJuIG5ldyBmKCk7Cit9CisKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MTAwMDA7ICsraSkKKyAgICBmb28oQXJyYXkpOworCit2YXIgZGlkQ2FsbCA9IGZhbHNlOworZm9v
KGZ1bmN0aW9uKCkgeyBkaWRDYWxsID0gdHJ1ZTsgfSk7CisKK2lmICghZGlkQ2FsbCkKKyAgICB0
aHJvdyAiRXJyb3I6IGRpZG4ndCBjYWxsIG15IGZ1bmN0aW9uLiI7CkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9Pd25QdHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Pd25QdHIuaAkocmV2
aXNpb24gMTcyMTc3KQorKysgU291cmNlL1dURi93dGYvT3duUHRyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTcyLDYgKzcyLDE0IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVPiBPd25QdHImIG9wZXJhdG9yPShPd25QdHI8VT4mJik7CiAKICAgICAgICAgdm9pZCBz
d2FwKE93blB0ciYgbykgeyBzdGQ6OnN3YXAobV9wdHIsIG8ubV9wdHIpOyB9CisgICAgICAgIAor
ICAgICAgICAvLyBDb25zdHJ1Y3QgYW4gb2JqZWN0IHRvIHN0b3JlIGludG8gdGhpcyBPd25QdHIs
IGJ1dCBvbmx5IHNvIGxvbmcgYXMgdGhpcyBPd25QdHIKKyAgICAgICAgLy8gZG9lc24ndCBhbHJl
YWR5IHBvaW50IHRvIGFuIG9iamVjdC4gVGhpcyB3aWxsIGVuc3VyZSB0aGF0IGFmdGVyIHlvdSBj
YWxsIHRoaXMsCisgICAgICAgIC8vIHRoZSBPd25QdHIgd2lsbCBwb2ludCB0byBhbiBpbnN0YW5j
ZSBvZiBULiBUaGlzIGluc3RhbmNlIG1heSBvciBtYXkgbm90IGhhdmUgYmVlbgorICAgICAgICAv
LyBjcmVhdGVkIGJ5IHRoaXMgY2FsbC4gTW9yZW92ZXIsIHRoaXMgY2FsbCB1c2VzIGFuIG9wcG9y
dHVuaXN0aWMgdHJhbnNhY3Rpb24sIGluCisgICAgICAgIC8vIHRoYXQgd2UgbWF5IGNyZWF0ZSBh
biBpbnN0YW5jZSBvZiBUIGFuZCB0aGVuIGltbWVkaWF0ZWx5IHRocm93IGl0IGF3YXkuCisgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgICAgIHZvaWQgY3JlYXRlVHJhbnNh
Y3Rpb25hbGx5KEFyZ3MuLi4gYXJncyk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBleHBsaWNp
dCBPd25QdHIoUHRyVHlwZSBwdHIpIDogbV9wdHIocHRyKSB7IH0KQEAgLTE4Niw2ICsxOTQsMjgg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJldHVybiBwLmdldCgpOwogICAgIH0KIAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IGlubGluZSBP
d25QdHI8VD46OmNyZWF0ZVRyYW5zYWN0aW9uYWxseShBcmdzLi4uIGFyZ3MpCisgICAgeworICAg
ICAgICBpZiAobV9wdHIpIHsKKyAgICAgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBUKiBuZXdPYmpl
Y3QgPSBuZXcgVChhcmdzLi4uKTsKKyAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKKyNp
ZiBFTkFCTEUoQ09NUEFSRV9BTkRfU1dBUCkKKyAgICAgICAgZG8geworICAgICAgICAgICAgaWYg
KG1fcHRyKSB7CisgICAgICAgICAgICAgICAgZGVsZXRlIG5ld09iamVjdDsKKyAgICAgICAgICAg
ICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisgICAgICAgIH0gd2hpbGUgKCFXVEY6OndlYWtDb21wYXJlQW5kU3dhcCgmbV9w
dHIsIG51bGxwdHIsIG5ld09iamVjdCkpOworI2Vsc2UKKyAgICAgICAgbV9wdHIgPSBuZXdPYmpl
Y3Q7CisjZW5kaWYKKyAgICB9CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6Ok93
blB0cjsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvU3BlY3RydW0uaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL1dURi93
dGYvU3BlY3RydW0uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMjIgKzMyLDMxIEBACiAKIG5hbWVzcGFj
ZSBXVEYgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgQ291bnRlclR5cGUgPSB1bnNpZ25lZD4KIGNsYXNzIFNwZWN0cnVtIHsKIHB1YmxpYzoK
LSAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz46Oml0ZXJhdG9y
IGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCB1bnNpZ25lZCBsb25n
Pjo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBI
YXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6aXRlcmF0b3IgaXRlcmF0b3I7CisgICAgdHlwZWRlZiB0
eXBlbmFtZSBIYXNoTWFwPFQsIENPdW50ZXJUeXBlPjo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRl
cmF0b3I7CiAgICAgCiAgICAgU3BlY3RydW0oKSB7IH0KICAgICAKLSAgICB2b2lkIGFkZChjb25z
dCBUJiBrZXksIHVuc2lnbmVkIGxvbmcgY291bnQgPSAxKQorICAgIHZvaWQgYWRkKGNvbnN0IFQm
IGtleSwgQ291bnRlclR5cGUgY291bnQgPSAxKQogICAgIHsKLSAgICAgICAgdHlwZW5hbWUgSGFz
aE1hcDxULCB1bnNpZ25lZCBsb25nPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChrZXks
IGNvdW50KTsKKyAgICAgICAgaWYgKCFjb3VudCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgdHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46OkFkZFJlc3VsdCByZXN1bHQgPSBt
X21hcC5hZGQoa2V5LCBjb3VudCk7CiAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAg
ICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlICs9IGNvdW50OwogICAgIH0KICAgICAK
LSAgICB1bnNpZ25lZCBsb25nIGdldChjb25zdCBUJiBrZXkpIGNvbnN0CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVT4KKyAgICB2b2lkIGFkZEFsbChjb25zdCBTcGVjdHJ1bTxULCBVPiYgb3RoZXJT
cGVjdHJ1bSkKKyAgICB7CisgICAgICAgIGZvciAoYXV0byBlbnRyeSA6IG90aGVyU3BlY3RydW0p
CisgICAgICAgICAgICBhZGQoZW50cnkua2V5LCBlbnRyeS5jb3VudCk7CisgICAgfQorICAgIAor
ICAgIENvdW50ZXJUeXBlIGdldChjb25zdCBUJiBrZXkpIGNvbnN0CiAgICAgewogICAgICAgICBj
b25zdF9pdGVyYXRvciBpdGVyID0gbV9tYXAuZmluZChrZXkpOwogICAgICAgICBpZiAoaXRlciA9
PSBtX21hcC5lbmQoKSkKQEAgLTYzLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBLZXlB
bmRDb3VudCB7CiAgICAgICAgIEtleUFuZENvdW50KCkgeyB9CiAgICAgICAgIAotICAgICAgICBL
ZXlBbmRDb3VudChjb25zdCBUJiBrZXksIHVuc2lnbmVkIGxvbmcgY291bnQpCisgICAgICAgIEtl
eUFuZENvdW50KGNvbnN0IFQmIGtleSwgQ291bnRlclR5cGUgY291bnQpCiAgICAgICAgICAgICA6
IGtleShrZXkpCiAgICAgICAgICAgICAsIGNvdW50KGNvdW50KQogICAgICAgICB7CkBAIC04MCw3
ICs4OSw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIFQga2V5OwotICAgICAgICB1
bnNpZ25lZCBsb25nIGNvdW50OworICAgICAgICBDb3VudGVyVHlwZSBjb3VudDsKICAgICB9Owog
ICAgIAogICAgIC8vIFJldHVybnMgYSBsaXN0IG9yZGVyZWQgZnJvbSBsb3dlc3QtY291bnQgdG8g
aGlnaGVzdC1jb3VudC4KQEAgLTk0LDggKzEwMywxOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBsaXN0OwogICAgIH0KICAgICAKKyAgICB2b2lkIGNsZWFyKCkgeyBtX21hcC5jbGVhcigpOyB9
CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICB2b2lkIHJlbW92ZUlm
KGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgeworICAgICAgICBtX21hcC5yZW1vdmVJZihb
ZnVuY3Rvcl0gKEhhc2hNYXA8VCwgQ291bnRlclR5cGU+OjpLZXlWYWx1ZVBhaXJUeXBlJiBwYWly
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0b3IoS2V5QW5kQ291bnQocGFpci5rZXks
IHBhaXIudmFsdWUpKTsKKyAgICAgICAgICAgIH0pOworICAgIH0KKyAgICAKIHByaXZhdGU6Ci0g
ICAgSGFzaE1hcDxULCB1bnNpZ25lZCBsb25nPiBtX21hcDsKKyAgICBIYXNoTWFwPFQsIENvdW50
ZXJUeXBlPiBtX21hcDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdURgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236725</attachid>
            <date>2014-08-16 20:44:03 -0700</date>
            <delta_ts>2014-08-17 11:30:46 -0700</delta_ts>
            <desc>parser hacks done</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>98249</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZS5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIENhbGxFZGdlX2gKKyNkZWZpbmUgQ2FsbEVkZ2VfaAor
CisjaW5jbHVkZSAiQ2FsbFZhcmlhbnQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIENh
bGxFZGdlIHsKK3B1YmxpYzoKKyAgICBDYWxsRWRnZSgpOworICAgIENhbGxFZGdlKENhbGxWYXJp
YW50IGNhbGxlZSwgQ2FsbEVkZ2VDb3VudFR5cGUgY291bnQpOworICAgIAorICAgIGJvb2wgb3Bl
cmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fY2FsbGVlOyB9CisgICAgCisgICAgQ2FsbFZhcmlh
bnQgY2FsbGVlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsZWU7IH0KKyAgICBDYWxsRWRnZUNvdW50
VHlwZSBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnQ7IH0KKyAgICAKK3B1YmxpYzoKKyAg
ICBDYWxsVmFyaWFudCBtX2NhbGxlZTsKKyAgICBDYWxsRWRnZUNvdW50VHlwZSBtX2NvdW50Owor
fTsKKworaW5saW5lIENhbGxFZGdlOjpDYWxsRWRnZShDYWxsVmFyaWFudCBjYWxsZWUsIGZsb2F0
IGNvdW50KQorICAgIDogbV9jYWxsZWUoY2FsbGVlKQorICAgICwgbV9jb3VudChjb3VudCkKK3sK
K30KKworaW5saW5lIENhbGxFZGdlOjpDYWxsRWRnZSgpCisgICAgOiBDYWxsRWRnZShDYWxsVmFy
aWFudCgpLCAwKQoreworfQorCit0eXBlZGVmIFZlY3RvcjxDYWxsRWRnZSwgMT4gQ2FsbEVkZ2VM
aXN0OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIENhbGxFZGdlX2gKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmls
ZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bEVkZ2VQcm9maWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyMyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQ2FsbEVkZ2VQcm9maWxlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitW
ZWN0b3I8Q2FsbEVkZ2U+IENhbGxFZGdlUHJvZmlsZTo6Y2FsbEVkZ2VzKCkgY29uc3QKK3sKKyAg
ICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIAorICAgIENhbGxFZGdl
TGlzdCByZXN1bHQ7CisgICAgCisgICAgQ2FsbFZhcmlhbnQgcHJpbWFyeUNhbGxlZSA9IG1fcHJp
bWFyeUNhbGxlZTsKKyAgICBmbG9hdCBudW1DYWxsc1RvUHJpbWFyeSA9IG1fbnVtQ2FsbHNUb1By
aW1hcnk7CisgICAgLy8gRGVmZW5kIGFnYWluc3QgcmFjZXMuIFRoZXNlIGZpZWxkcyBhcmUgbW9k
aWZpZWQgYnkgdGhlIGxvZyBwcm9jZXNzb3Igd2l0aG91dCBsb2NraW5nLgorICAgIGlmICghIXBy
aW1hcnlDYWxsZWUgJiYgbnVtQ2FsbHNUb1ByaW1hcnkpCisgICAgICAgIHJlc3VsdC5hcHBlbmQo
Q2FsbEVkZ2UocHJpbWFyeUNhbGxlZSwgbnVtQ2FsbHNUb1ByaW1hcnkpKTsKKyAgICAKKyAgICBp
ZiAobV9vdGhlckNhbGxlZXMpIHsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgaWYgdGhlIHBy
aW1hcnkgdGhyZWFkIGhhZCBqdXN0IGNyZWF0ZWQgYSBtX290aGVyQ2FsbGVzIHdoaWxlIGxvZwor
ICAgICAgICAvLyBwcm9jZXNzaW5nLCB3ZSBzZWUgYSBjb25zaXN0ZW50bHkgY3JlYXRlZCBvbmUu
IFRoZSBsb2NrIGJlaW5nIGhlbGQgaXMgaW5zdWZmaWNpZW50IGZvcgorICAgICAgICAvLyB0aGlz
LCBzaW5jZSB0aGUgbG9nIHByb2Nlc3NvciB3aWxsIG9ubHkgZ3JhYiB0aGUgbG9jayB3aGVuIG1l
cmdpbmcgdGhlIHNlY29uZGFyeQorICAgICAgICAvLyBzcGVjdHJ1bSBpbnRvIHRoZSBwcmltYXJ5
IG9uZSBidXQgbWF5IHN0aWxsIGNyZWF0ZSB0aGUgZGF0YSBzdHJ1Y3R1cmUgd2l0aG91dCBob2xk
aW5nCisgICAgICAgIC8vIGxvY2tzLgorICAgICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKKyAg
ICAgICAgZm9yIChDYWxsRWRnZSBlbnRyeSA6IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZCkK
KyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZW50cnkpOworICAgIH0KKyAgICAKKyAgICBzdGQ6
OnNvcnQocmVzdWx0LmJlZ2luKCksIHJlc3VsdC5lbmQoKSwgW10gKGNvbnN0IENhbGxFZGdlJiBh
LCBjb25zdCBDYWxsRWRnZSYgYikgLT4gYm9vbCB7CisgICAgICAgICAgICByZXR1cm4gYS5jb3Vu
dCgpID4gYi5jb3VudCgpOworICAgICAgICB9KTsKKyAgICAKKyAgICBpZiAocmVzdWx0LnNpemUo
KSA+PSAyKQorICAgICAgICBBU1NFUlQocmVzdWx0WzBdLmNvdW50KCkgPiByZXN1bHQubGFzdCgp
LmNvdW50KCkpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Zsb2F0IENhbGxFZGdl
UHJvZmlsZTo6bnVtQ2FsbHNUb0tub3duQ2VsbHMoKSBjb25zdAoreworICAgIHVuc2lnbmVkIHJl
c3VsdCA9IDA7CisgICAgZm9yIChDYWxsRWRnZSBlZGdlIDogY2FsbEVkZ2VzKCkpCisgICAgICAg
IHJlc3VsdCArPSBlZGdlLmNvdW50KCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGlj
IGJvb2wgd29ydGhEZXNwZWNpZnlpbmcoY29uc3QgQ2FsbFZhcmlhbnQmIHZhcmlhbnQpCit7Cisg
ICAgcmV0dXJuICFIZWFwOjppc01hcmtlZCh2YXJpYW50LnJhd0NhbGxlZUNlbGwoKSkKKyAgICAg
ICAgJiYgSGVhcDo6aXNNYXJrZWQodmFyaWFudC5kZXNwZWNpZmllZENsb3N1cmUoKS5yYXdDYWxs
ZWVDZWxsKCkpOworfQorCitib29sIENhbGxFZGdlUHJvZmlsZTo6d29ydGhEZXNwZWNpZnlpbmco
KQoreworICAgIGlmIChtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAKKyAgICBpZiAoISFtX3ByaW1hcnlDYWxsZWUgJiYgIXdvcnRoRGVzcGVjaWZ5
aW5nKG1fcHJpbWFyeUNhbGxlZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBp
ZiAobV9vdGhlckNhbGxlZXMpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9vdGhlckNh
bGxlZXMtPm1fcHJvY2Vzc2VkLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgaWYgKCF3b3J0
aERlc3BlY2lmeWluZyhtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCkpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDYWxsRWRnZVByb2ZpbGU6OnZpc2l0V2VhaygpCit7
CisgICAgaWYgKCFtX3ByaW1hcnlDYWxsZWUgJiYgIW1fb3RoZXJDYWxsZWVzKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAg
ICAKKyAgICAvLyBTZWUgaWYgYW55dGhpbmcgaXMgZGVhZCBhbmQgaWYgdGhhdCBjYW4gYmUgcmVj
dGlmaWVkIGJ5IGRlc3BlY2lmeWluZy4KKyAgICBpZiAod29ydGhEZXNwZWNpZnlpbmcoKSkgewor
ICAgICAgICBDYWxsU3BlY3RydW0gbmV3U3BlY3RydW07CisgICAgICAgIAorICAgICAgICBpZiAo
ISFtX3ByaW1hcnlDYWxsZWUpCisgICAgICAgICAgICBuZXdTcGVjdHJ1bS5hZGQobV9wcmltYXJ5
Q2FsbGVlLmRlc3BlY2lmaWVkQ2xvc3VyZSgpLCBtX251bUNhbGxzVG9QcmltYXJ5KTsKKyAgICAg
ICAgCisgICAgICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLnNpemUoKTsgaS0tOykgeworICAg
ICAgICAgICAgICAgIG5ld1NwZWN0cnVtLmFkZCgKKyAgICAgICAgICAgICAgICAgICAgbV9vdGhl
ckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNhbGxlZSgpLmRlc3BlY2lmaWVkQ2xvc3VyZSgpLAor
ICAgICAgICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQo
KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgVmVjdG9yPENhbGxTcGVjdHJ1bTo6S2V5QW5kQ291bnQ+IGxpc3QgPSBuZXdT
cGVjdHJ1bS5idWlsZExpc3QoKTsKKyAgICAgICAgQVNTRVJUKGxpc3Quc2l6ZSgpKTsKKyAgICAg
ICAgbV9wcmltYXJ5Q2FsbGVlID0gbGlzdC5sYXN0KCkua2V5OworICAgICAgICBtX251bUNhbGxz
VG9QcmltYXJ5ID0gbGlzdC5sYXN0KCkuY291bnQ7CisgICAgICAgIAorICAgICAgICBBU1NFUlQo
ISFtX290aGVyQ2FsbGVlcyA9PSAobGlzdC5zaXplKCkgPj0gMikpOworICAgICAgICBpZiAobV9v
dGhlckNhbGxlZXMpIHsKKyAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5j
bGVhcigpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbGlzdC5zaXplKCkgLSAxOyBp
LS07KQorICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5hcHBlbmQo
Q2FsbEVkZ2UobGlzdFtpXS5rZXksIGxpc3RbaV0uY291bnQpKTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgbV9jbG9zdXJlc0FyZURlc3BlY2lmaWVkID0gdHJ1ZTsKKyAgICAgICAgCisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKCEhbV9wcmltYXJ5Q2FsbGVlICYm
ICFIZWFwOjppc01hcmtlZChtX3ByaW1hcnlDYWxsZWUucmF3Q2FsbGVlQ2VsbCgpKSkgeworICAg
ICAgICBtX3ByaW1hcnlDYWxsZWUgPSBudWxscHRyOworICAgICAgICBtX251bUNhbGxzVG9Vbmtu
b3duQ2VsbCArPSBtX251bUNhbGxzVG9QcmltYXJ5OworICAgICAgICBtX251bUNhbGxzVG9Qcmlt
YXJ5ID0gMDsKKyAgICB9CisgICAgCisgICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6
ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChIZWFwOjppc01hcmtlZChtX290aGVyQ2FsbGVl
cy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCkucmF3Q2FsbGVlQ2VsbCgpKSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbV9udW1DYWxsc1RvVW5r
bm93bkNlbGwgKz0gbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNvdW50KCk7CisgICAg
ICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaS0tXSA9IG1fb3RoZXJDYWxsZWVz
LT5tX3Byb2Nlc3NlZC5sYXN0KCk7CisgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9j
ZXNzZWQucmVtb3ZlTGFzdCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBPbmx5
IGV4aXN0cyB3aGlsZSB3ZSBhcmUgcHJvY2Vzc2luZyB0aGUgbG9nLgorICAgICAgICBSRUxFQVNF
X0FTU0VSVCghbV9vdGhlckNhbGxlZXMtPm1fc2Vjb25kYXJ5KTsKKyAgICB9Cit9CisKK3ZvaWQg
Q2FsbEVkZ2VQcm9maWxlOjphZGRTbG93KENhbGxWYXJpYW50IGNhbGxlZSwgQ2FsbEVkZ2VQcm9m
aWxlVmVjdG9yJiBtZXJnZUJhY2tMb2cpCit7CisgICAgLy8gVGhpcyBleGlzdHMgdG8gaGFuZGxl
IGNhc2VzIHdoZXJlIHRoZSBzcGVjdHJ1bSB3YXNuJ3QgY3JlYXRlZCB5ZXQsIG9yIHdlJ3JlIHN0
b3JpbmcgdG8gYQorICAgIC8vIHBhcnRpY3VsYXIgc3BlY3RydW0gZm9yIHRoZSBmaXJzdCB0aW1l
IGR1cmluZyBhIGxvZyBwcm9jZXNzaW5nIGl0ZXJhdGlvbi4KKyAgICAKKyAgICBpZiAoIW1fb3Ro
ZXJDYWxsZWVzKSB7CisgICAgICAgIG1fb3RoZXJDYWxsZWVzID0gc3RkOjptYWtlX3VucWl1ZTxT
ZWNvbmRhcnk+KCk7CisgICAgICAgIC8vIElmIGEgY29tcGlsZXIgdGhyZWFkIG5vdGljZXMgdGhl
IG1fb3RoZXJDYWxsZWVzIGJlaW5nIG5vbi1udWxsLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZQorICAg
ICAgICAvLyB0aGF0IGl0IHNlZXMgYSBmdWxseSBjcmVhdGVkIG9uZS4KKyAgICAgICAgV1RGOjpz
dG9yZVN0b3JlRmVuY2UoKTsKKyAgICB9CisgICAgCisgICAgaWYgKCFtX290aGVyQ2FsbGVlcy0+
bV90ZW1wb3JhcnlTcGVjdHJ1bSkgeworICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3Jh
cnlTcGVjdHJ1bSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbFNwZWN0cnVtPigpOworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpLS07
KSB7CisgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+YWRk
KAorICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jYWxsZWUo
KSwKKyAgICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQo
KSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlz
IGlzIHRoZSBmaXJzdCB0aW1lIHdlJ3JlIHNlZWluZyB0aGlzIHByb2ZpbGUgZHVyaW5nIHRoaXMg
bG9nCisgICAgICAgIC8vIHByb2Nlc3NpbmcgaXRlcmF0aW9uLgorICAgICAgICBtZXJnZUJhY2tM
b2cuYXBwZW5kKHRoaXMpOworICAgIH0KKyAgICAKKyAgICBtX290aGVyQ2FsbGVlcy0+bV9zZWNv
bmRhcnktPmFkZChjYWxsZWUpOworfQorCit2b2lkIENhbGxFZGdlUHJvZmlsZTo6bWVyZ2VCYWNr
KCkKK3sKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIAorICAg
IEFTU0VSVChtX290aGVyQ2FsbGVlcyk7CisgICAgQVNTRVJUKG1fb3RoZXJDYWxsZWVzLT5tX3Rl
bXBvcmFyeVNwZWN0cnVtKTsKKyAgICAKKyAgICBpZiAoISFtX3ByaW1hcnlDYWxsZWUpCisgICAg
ICAgIG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5hZGQobV9wcmltYXJ5Q2Fs
bGVlLCBtX251bUNhbGxzVG9QcmltYXJ5KTsKKyAgICAKKyAgICBpZiAoIW1fY2xvc3VyZXNBcmVE
ZXNwZWNpZmllZCkgeworICAgICAgICBDYWxsU3BlY3RydW0gbmV3U3BlY3RydW07CisgICAgICAg
IGZvciAoYXV0byBlbnRyeSA6ICptX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSkK
KyAgICAgICAgICAgIG5ld1NwZWN0cnVtLmFkZChlbnRyeS5rZXkuZGVzcGVjaWZpZWRDbG9zdXJl
KCksIGVudHJ5LmNvdW50KTsKKyAgICAgICAgCisgICAgICAgIGlmIChuZXdTcGVjdHJ1bS5zaXpl
KCkgPCBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+c2l6ZSgpKQorICAgICAg
ICAgICAgKm1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtID0gbmV3U3BlY3RydW07
CisgICAgICAgIAorICAgICAgICBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQgPSB0cnVlOworICAg
IH0KKyAgICAKKyAgICBWZWN0b3I8Q2FsbFNwZWN0cnVtOjpLZXlBbmRDb3VudD4gbGlzdCA9IG1f
b3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5idWlsZExpc3QoKTsKKyAgICBtX290
aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSA9IG51bGxwdHI7CisgICAgCisgICAgbV9w
cmltYXJ5Q2FsbGVlID0gbGlzdC5sYXN0KCkua2V5OworICAgIG1fbnVtQ2FsbHNUb1ByaW1hcnkg
PSBsaXN0Lmxhc3QoKS5jb3VudDsKKyAgICBsaXN0LnJlbW92ZUxhc3QoKTsKKyAgICAKKyAgICBt
X290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuY2xlYXIoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGNv
dW50ID0gbWF4S25vd25DYWxsZWVzOyBjb3VudC0tICYmICFsaXN0LmlzRW1wdHkoKTspIHsKKyAg
ICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLmFwcGVuZChDYWxsRWRnZShsaXN0Lmxh
c3QoKS5rZXksIGxpc3QubGFzdCgpLmNvdW50KSk7CisgICAgICAgIGxpc3QucmVtb3ZlTGFzdCgp
OworICAgIH0KKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBsaXN0LnNpemUoKTsgaS0tOykK
KyAgICAgICAgbV9udW1DYWxsc1RvVW5rbm93bkNlbGwgKz0gbGlzdFtpXS5jb3VudDsKK30KKwor
dm9pZCBDYWxsRWRnZVByb2ZpbGU6OmZhZGVCeUhhbGYoKQoreworICAgIG1fbnVtQ2FsbHNUb1By
aW1hcnkgPj49IDE7CisgICAgbV9udW1DYWxsc1RvTm90Q2VsbCA+Pj0gMTsKKyAgICBtX251bUNh
bGxzVG9Vbmtub3duQ2VsbCA+Pj0gMTsKKyAgICBtX3RvdGFsQ291bnQgPj49IDE7CisgICAgCisg
ICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fb3Ro
ZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIG1fb3Ro
ZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXSA9IENhbGxFZGdlKAorICAgICAgICAgICAgICAgIG1f
b3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jYWxsZWUoKSwKKyAgICAgICAgICAgICAgICBt
X290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQoKSA+PiAxKTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgaWYgKG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVt
KSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiAqbV9vdGhlckNhbGxlZXMtPm1fdGVt
cG9yYXJ5U3BlY3RydW0pCisgICAgICAgICAgICAgICAgZW50cnkuY291bnQgPj49IDE7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK0NhbGxFZGdlTG9nOjpDYWxsRWRnZUxvZygpCisgICAgOiBtX3Nj
YWxlZExvZ0luZGV4KGxvZ1NpemUgKiBzaXplb2YoRW50cnkpKQoreworfQorCitDYWxsRWRnZUxv
Zzo6fkNhbGxFZGdlTG9nKCkgeyB9CisKKyNpZiBFTkFCTEUoSklUKQorCitleHRlcm4gIkMiIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2coQ2FsbEVkZ2VMb2cq
KSBXVEZfSU5URVJOQUw7CitleHRlcm4gIkMiIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
cm9jZXNzQ2FsbEVkZ2VMb2coQ2FsbEVkZ2VMb2cqIGxvZykKK3sKKyAgICBsb2ctPnByb2Nlc3NM
b2coKTsKK30KKwordm9pZCBDYWxsRWRnZUxvZzo6ZW1pdExvZ0NvZGUoQ0NhbGxIZWxwZXJzJiBq
aXQsIENhbGxFZGdlUHJvZmlsZSYgcHJvZmlsZSwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncykKK3sK
KyAgICBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50cyA9IDE7CisgICAgCisgICAgR1BS
UmVnIHNjcmF0Y2hHUFI7CisgICAgaWYgKCFjYWxsZWVSZWdzLnVzZXMoR1BSSW5mbzo6cmVnVDAp
KQorICAgICAgICBzY3JhdGNoR1BSID0gR1BSSW5mbzo6cmVnVDA7CisgICAgZWxzZSBpZiAoIWNh
bGxlZVJlZ3MudXNlcyhHUFJJbmZvOjpyZWdUMSkpCisgICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJ
bmZvOjpyZWdUMTsKKyAgICBlbHNlCisgICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJbmZvOjpyZWdU
MjsKKyAgICAKKyAgICBqaXQubG9hZDMyKCZtX3NjYWxlZExvZ0luZGV4LCBzY3JhdGNoR1BSKTsK
KyAgICAKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgb2sgPSBqaXQuYnJhbmNoVGVzdDMyKENDYWxs
SGVscGVyczo6Tm9uWmVybywgc2NyYXRjaEdQUik7CisgICAgCisgICAgQVNTRVJUKHN0YWNrQWxp
Z25tZW50UmVnaXN0ZXJzKCkgPj0gMSArIG51bWJlck9mQXJndW1lbnRzKTsKKyAgICAKKyAgICBq
aXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdGFja0FsaWdubWVudEJ5dGVz
KCkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAKKyAgICBqaXQu
c3RvcmVWYWx1ZShjYWxsZWVSZWdzLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJz
OjpzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgaml0LnNldHVw
QXJndW1lbnRzKGNhbGxlZVJlZ3MpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2cpLCBHUFJJbmZvOjpub25BcmdHUFIw
KTsKKyAgICBqaXQuY2FsbChzY3JhdGNoKTsKKyAgICBqaXQubG9hZFZhbHVlKENDYWxsSGVscGVy
czo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzaXplb2YoSlNW
YWx1ZSkpLCBjYWxsZWVSZWdzKTsKKyAgICAKKyAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihzdGFja0FsaWdubWVudEJ5dGVzKCkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKKyAgICAKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihsb2dTaXplICogc2l6ZW9mKEVudHJ5KSksIHNjcmF0Y2hHUFIpOworICAgIG9rLmxp
bmsoJmppdCk7CisKKyAgICBqaXQuc3ViMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2l6
ZW9mKEVudHJ5KSksIHNjcmF0Y2hHUFIpOworICAgIGppdC5zdG9yZTMyKHNjcmF0Y2hHUFIsICZt
X3NjYWxlZExvZ0luZGV4KTsKKyAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihtX2xvZyksIHNjcmF0Y2hHUFIpOworICAgIGppdC5zdG9yZVZhbHVlKGNhbGxlZVJlZ3Ms
IENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW50cnks
IG1fdmFsdWUpKSk7CisgICAgaml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cigmcHJvZmlsZSksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZG
U0VUT0YoRW50cnksIG1fcHJvZmlsZSkpKTsKK30KKwordm9pZCBDYWxsRWRnZUxvZzo6ZW1pdExv
Z0NvZGUoCisgICAgQ0NhbGxIZWxwZXJzJiBqaXQsIE93blB0cjxDYWxsRWRnZVByb2ZpbGU+JiBw
cm9maWxlUG9pbnRlciwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncykKK3sKKyAgICBwcm9maWxlUG9p
bnRlci5jcmVhdGVUcmFuc2FjdGlvbmFsbHkoKTsKKyAgICBlbWl0TG9nQ29kZShqaXQsICpwcm9m
aWxlUG9pbnRlciwgY2FsbGVlUmVncyk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCit2
b2lkIENhbGxFZGdlTG9nOjpwcm9jZXNzTG9nKCkKK3sKKyAgICBDb25jdXJyZW50SklUTG9ja2Vy
IGxvY2tlcihtX2xvY2spOworICAgIAorICAgIEFTU0VSVCghKG1fc2NhbGVkTG9nSW5kZXggJSBz
aXplb2YoRW50cnkpKSk7CisgICAgCisgICAgQ2FsbEVkZ2VQcm9maWxlVmVjdG9yIG1lcmdlQmFj
a0xvZzsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3NjYWxlZExvZ0luZGV4IC8gc2l6
ZW9mKEVudHJ5KTsgaSA8IGxvZ1NpemU7ICsraSkKKyAgICAgICAgbV9sb2dbaV0ubV9wcm9maWxl
LT5hZGQobV9sb2dbaV0ubV92YWx1ZSwgbWVyZ2VCYWNrTG9nKTsKKyAgICAKKyAgICBtX3NjYWxl
ZExvZ0luZGV4ID0gbG9nU2l6ZSAqIHNpemVvZihFbnRyeSk7CisgICAgCisgICAgZm9yICh1bnNp
Z25lZCBpID0gbWVyZ2VCYWNrTG9nLnNpemUoKTsgaS0tOykKKyAgICAgICAgbWVyZ2VCYWNrTG9n
W2ldLT5tZXJnZUJhY2soKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDYWxsRWRnZVByb2ZpbGVfaAorI2Rl
ZmluZSBDYWxsRWRnZVByb2ZpbGVfaAorCisjaW5jbHVkZSAiQ2FsbEVkZ2UuaCIKKyNpbmNsdWRl
ICJDYWxsVmFyaWFudC5oIgorI2luY2x1ZGUgIkNvbmN1cnJlbnRKSVRMb2NrLmgiCisjaW5jbHVk
ZSAiSlNDZWxsLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCit0eXBlZGVmIHVpbnQxNl90IENhbGxF
ZGdlQ291bnRUeXBlOworCitjbGFzcyBDYWxsRWRnZVByb2ZpbGU7Cit0eXBlZGVmIFZlY3RvcjxD
YWxsRWRnZVByb2ZpbGUqLCAxMD4gQ2FsbEVkZ2VQcm9maWxlVmVjdG9yOworCitjbGFzcyBDYWxs
RWRnZVByb2ZpbGUgeworcHVibGljOgorICAgIENhbGxFZGdlUHJvZmlsZShDb2RlQmxvY2sqIGNv
ZGVCbG9jayk7CisgICAgCisgICAgdm9pZCBhZGQoSlNWYWx1ZSwgQ2FsbEVkZ2VQcm9maWxlVmVj
dG9yJiBtZXJnZUJhY2tMb2cpOworICAgIAorICAgIHVuc2lnbmVkIG51bUNhbGxzVG9Ob3RDZWxs
KCkgY29uc3QgeyByZXR1cm4gbV9udW1DYWxsc1RvTm90Q2VsbDsgfQorICAgIHVuc2lnbmVkIG51
bUNhbGxzVG9Vbmtub3duQ2VsbCgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQ2FsbHNUb1Vua25vd25D
ZWxsOyB9CisgICAgdW5zaWduZWQgbnVtQ2FsbHNUb0tub3duQ2VsbHMoKSBjb25zdDsKKyAgICAK
KyAgICAvLyBDYWxsIHdoaWxlIGhvbGRpbmcgdGhlIG93bmluZyBDb2RlQmxvY2sncyBsb2NrLgor
ICAgIENhbGxFZGdlTGlzdGUgY2FsbEVkZ2VzKCkgY29uc3Q7CisgICAgCisgICAgdm9pZCB2aXNp
dFdlYWsoKTsKKyAgICAKK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heEtu
b3duQ2FsbGVlcyA9IDU7CisgICAgCisgICAgYm9vbCB3b3J0aERlc3BlY2lmeWluZygpOworICAg
IHZvaWQgYWRkU2xvdyhDYWxsVmFyaWFudCwgQ2FsbEVkZ2VQcm9maWxlVmVjdG9yJiBtZXJnZUJh
Y2tMb2cpOworICAgIHZvaWQgbWVyZ2VCYWNrKCk7CisgICAgdm9pZCBmYWRlQnlIYWxmKCk7Cisg
ICAgCisgICAgLy8gSXQncyBjaGVhcGVyIHRvIGxldCB0aGlzIGhhdmUgaXRzIG93biBsb2NrLiBJ
dCBuZWVkcyB0byBiZSBhYmxlIHRvIGZpbmQgd2hpY2ggbG9jayB0bworICAgIC8vIGxvY2suIE5v
cm1hbGx5IGl0IHdvdWxkIGxvY2sgdGhlIG93bmluZyBDb2RlQmxvY2sncyBsb2NrLCBidXQgdGhh
dCB3b3VsZCByZXF1aXJlIGEKKyAgICAvLyBwb2ludGVyLXdpZHRoIHdvcmQgdG8gcG9pbnQgYXQg
dGhlIENvZGVCbG9jay4gSGF2aW5nIHRoZSBieXRlLXNpemVkIGxvY2sgaGVyZSBpcworICAgIC8v
IGNoZWFwZXIuIEhvd2V2ZXIsIHRoaXMgbWVhbnMgdGhhdCB0aGUgcmVsYXRpb25zaGlwIHdpdGgg
dGhlIENvZGVCbG9jayBsb2NrIGlzOgorICAgIC8vIGFjcXVpcmUgdGhlIENvZGVCbG9jayBsb2Nr
IGJlZm9yZSB0aGlzIG9uZS4KKyAgICBDb25jdXJyZW50SklUTG9jayBtX2xvY2s7CisgICAgCisg
ICAgYm9vbCBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQ7CisgICAgCisgICAgQ2FsbEVkZ2VDb3Vu
dFR5cGUgbV9udW1DYWxsc1RvUHJpbWFyeTsKKyAgICBDYWxsRWRnZUNvdW50VHlwZSBtX251bUNh
bGxzVG9Ob3RDZWxsOworICAgIENhbGxFZGdlQ291bnRUeXBlIG1fbnVtQ2FsbHNUb1Vua293bkNl
bGw7CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbV90b3RhbENvdW50OworICAgIENhbGxWYXJpYW50
IG1fcHJpbWFyeUNhbGxlZTsKKyAgICAKKyAgICB0eXBlZGVmIFNwZWN0cnVtPENhbGxWYXJpYW50
LCBDYWxsRWRnZUNvdW50VHlwZT4gQ2FsbFNwZWN0cnVtOworICAgIAorICAgIHN0cnVjdCBTZWNv
bmRhcnkgeworICAgICAgICBWZWN0b3I8Q2FsbEVkZ2U+IG1fcHJvY2Vzc2VkOyAvLyBQcm9jZXNz
ZWQgYnV0IG5vdCBuZWNlc3NhcmlseSBzb3J0ZWQuCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxD
YWxsU3BlY3RydW0+IG1fdGVtcG9yYXJ5U3BlY3RydW07CisgICAgfTsKKyAgICAKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2Vjb25kYXJ5PiBtX290aGVyQ2FsbGVlczsKK307CisKK2NsYXNzIENhbGxF
ZGdlTG9nIHsKK3B1YmxpYzoKKyAgICBDYWxsRWRnZUxvZygpOworICAgIH5DYWxsRWRnZUxvZygp
OworCisjaWYgRU5BQkxFKEpJVCkgICAgCisgICAgdm9pZCBlbWl0TG9nQ29kZShDQ2FsbEhlbHBl
cnMmLCBDYWxsRWRnZVByb2ZpbGUmLCBKU1ZhbHVlUmVncyBjYWxsZWVSZWdzKTsgLy8gQXNzdW1l
cyB0aGF0IHN0YWNrIGlzIGFsaWduZWQsIGFsbCB2b2xhdGlsZSByZWdpc3RlcnMgLSBvdGhlciB0
aGFuIGNhbGxlZUdQUiAtIGFyZSBjbG9iYmVyYWJsZSwgYW5kIHRoZSBwYXJhbWV0ZXIgc3BhY2Ug
aXMgaW4gdXNlLgorICAgIAorICAgIC8vIFNhbWUgYXMgYWJvdmUgYnV0IGNyZWF0ZXMgYSBDYWxs
RWRnZVByb2ZpbGUgaW5zdGFuY2UgaWYgb25lIGRpZCBub3QgYWxyZWFkeSBleGlzdC4gRG9lcwor
ICAgIC8vIHRoaXMgaW4gYSB0aHJlYWQtc2FmZSBtYW5uZXIgYnkgY2FsbGluZyBPd25QdHI6OmNy
ZWF0ZVRyYW5zYWN0aW9uYWxseS4KKyAgICB2b2lkIGVtaXRMb2dDb2RlKENDYWxsSGVsZXBycyYs
IE93blB0cjxDYWxsRWRnZVByb2ZpbGU+JiwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncyk7CisjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKKyAgICAKKyAgICB2b2lkIHByb2Nlc3NMb2coKTsKKyAgICAKK3By
aXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBsb2dTaXplID0gMTAwMDA7CisgICAgCisgICAgc3RydWN0IEVu
dHJ5IHsKKyAgICAgICAgSlNWYWx1ZSBtX3ZhbHVlOworICAgICAgICBDYWxsRWRnZVByb2ZpbGUq
IG1fcHJvZmlsZTsKKyAgICB9OworICAgIAorICAgIHVuc2lnbmVkIG1fc2NhbGVkTG9nSW5kZXg7
CisgICAgRW50cnkgbV9sb2dbbG9nU2l6ZV07Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIENhbGxFZGdlUHJvZmlsZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZUlubGluZXMuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGVJ
bmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENhbGxFZGdlUHJvZmlsZUlu
bGluZXNfaAorI2RlZmluZSBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzX2gKKworbmFtZXNwYWNlIEpT
QyB7CisKK2lubGluZSBDYWxsRWRnZVByb2ZpbGU6OkNhbGxFZGdlUHJvZmlsZSgpCisgICAgOiBt
X2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQoZmFsc2UpCisgICAgLCBtX251bUNhbGxzVG9QcmltYXJ5
KDApCisgICAgLCBtX251bUNhbGxzVG9Ob3RDZWxsKDApCisgICAgLCBtX251bUNhbGxzVG9EZWxl
dGVkQ2VsbCgwKQorICAgICwgbV90b3RhbENvdW50KDApCisgICAgLCBtX3ByaW1hcnlDYWxsZWUo
bnVsbHB0cikKK3sKK30KKworQUxXQVlTX0lOTElORSBDYWxsRWRnZVByb2ZpbGU6OmFkZChKU1Zh
bHVlIHZhbHVlLCBDYWxsRWRnZVByb2ZpbGVWZWN0b3ImIG1lcmdlQmFja0xvZykKK3sKKyAgICB1
bnNpZ25lZCBuZXdUb3RhbENvdW50ID0gbV90b3RhbENvdW50ICsgMTsKKyAgICBpZiAoVU5MSUtF
TFkoIW5ld1RvdGFsQ291bnQpKSB7CisgICAgICAgIGZhZGVCeUhhbGYoKTsgLy8gVGFja2xlIG92
ZXJmbG93cyBieSBkaXZpZGluZyBhbGwgY291bnRzIGJ5IHR3by4KKyAgICAgICAgbmV3VG90YWxD
b3VudCA9IG1fdG90YWxDb3VudCArIDE7CisgICAgfQorICAgIEFTU0VSVChuZXdUb3RhbENvdW50
KTsKKyAgICBtX3RvdGFsQ291bnQgPSBuZXdUb3RhbENvdW50OworICAgIAorICAgIGlmIChVTkxJ
S0VZKCF2YWx1ZS5pc0NlbGwoKSkpIHsKKyAgICAgICAgbV9udW1DYWxsc1RvTm90Q2VsbCsrOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ2FsbFZhcmlhbnQgY2FsbGVlID0gQ2FsbFZh
cmlhbnQodmFsdWUuYXNDZWxsKCkpOworICAgIAorICAgIGlmIChtX2Nsb3N1cmVzQXJlRGVzcGVj
aWZpZWQpCisgICAgICAgIGNhbGxlZSA9IGNhbGxlZS5kZXNwZWNpZmllZENsb3N1cmUoKTsKKyAg
ICAgICAgCisgICAgaWYgKFVOTElLRUxZKCFtX3ByaW1hcnlDYWxsZWUpKSB7CisgICAgICAgIG1f
cHJpbWFyeUNhbGxlZSA9IGNhbGxlZTsKKyAgICAgICAgbV9udW1DYWxsc1RvUHJpbWFyeSA9IDE7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAorICAgIGlmIChMSUtFTFkobV9wcmlt
YXJ5Q2FsbGVlID09IGNhbGxlZSkpIHsKKyAgICAgICAgbV9udW1DYWxsc1RvUHJpbWFyeSsrOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBpZiAoVU5MSUtFTFkoIW1fb3Ro
ZXJDYWxsZWVzKSkgeworICAgICAgICBhZGRTbG93KGNhbGxlZSwgbWVyZ2VCYWNrTG9nKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAgQ2FsbFNwZWN0cnVtKiBzZWNvbmRh
cnkgPSBtX290aGVyQ2FsbGVlcy0+bV9zZWNvbmRhcnkuZ2V0KCk7CisgICAgaWYgKCFzZWNvbmRh
cnkpIHsKKyAgICAgICAgYWRkU2xvdyhjYWxsZWUsIG1lcmdlQmFja0xvZyk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgICAgIAorICAgIHNlY29uZGFyeS0+YWRkKGNhbGxlZSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ2FsbEVkZ2VQcm9maWxlSW5saW5lc19o
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0lu
Zm8uY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsMTEgQEAgdm9p
ZCBDYWxsTGlua0luZm86OnZpc2l0V2VhayhSZXBhdGNoQnVmZgogICAgIH0KICAgICBpZiAoISFs
YXN0U2VlbkNhbGxlZSAmJiAhSGVhcDo6aXNNYXJrZWQobGFzdFNlZW5DYWxsZWUuZ2V0KCkpKQog
ICAgICAgICBsYXN0U2VlbkNhbGxlZS5jbGVhcigpOworICAgIAorICAgIGlmIChjYWxsRWRnZVBy
b2ZpbGUpIHsKKyAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CisgICAgICAgIGNhbGxFZGdl
UHJvZmlsZS0+dmlzaXRXZWFrKCk7CisgICAgfQogfQogCiBDYWxsTGlua0luZm8mIENhbGxMaW5r
SW5mbzo6ZHVtbXkoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxM
aW5rSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua0luZm8uaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaWZuZGVmIENhbGxMaW5rSW5mb19oCiAjZGVmaW5lIENhbGxMaW5rSW5mb19oCiAKKyNpbmNs
dWRlICJDYWxsRWRnZVByb2ZpbGUuaCIKICNpbmNsdWRlICJDbG9zdXJlQ2FsbFN0dWJSb3V0aW5l
LmgiCiAjaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0
aW9uS2luZC5oIgpAQCAtMzMsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKKyNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTg4LDYgKzkwLDcgQEAgc3RydWN0IENhbGxMaW5rSW5mbyA6IHB1Ymxp
YyBCYXNpY1Jhd1NlbgogICAgIHVuc2lnbmVkIGNhbGxlZUdQUiA6IDg7CiAgICAgdW5zaWduZWQg
c2xvd1BhdGhDb3VudDsKICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW47CisgICAgT3duUHRyPENh
bGxFZGdlUHJvZmlsZT4gY2FsbEVkZ2VQcm9maWxlOwogCiAgICAgYm9vbCBpc0xpbmtlZCgpIHsg
cmV0dXJuIHN0dWIgfHwgY2FsbGVlOyB9CiAgICAgdm9pZCB1bmxpbmsoUmVwYXRjaEJ1ZmZlciYp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtT
dGF0dXMuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw0OCArMzgsMTUg
QEAgbmFtZXNwYWNlIEpTQyB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAK
IENhbGxMaW5rU3RhdHVzOjpDYWxsTGlua1N0YXR1cyhKU1ZhbHVlIHZhbHVlKQotICAgIDogbV9j
YWxsVGFyZ2V0KHZhbHVlKQotICAgICwgbV9leGVjdXRhYmxlKDApCi0gICAgLCBtX2NvdWxkVGFr
ZVNsb3dQYXRoKGZhbHNlKQorICAgIDogbV9jb3VsZFRha2VTbG93UGF0aChmYWxzZSkKICAgICAs
IG1faXNQcm92ZWQoZmFsc2UpCiB7Ci0gICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkp
CisgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkpIHsKKyAgICAgICAgbV9jb3VsZFRh
a2VTbG93UGF0aCA9IHRydWU7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgCi0gICAgaWYg
KCF2YWx1ZS5hc0NlbGwoKS0+aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkKLSAgICAgICAg
cmV0dXJuOwotICAgIAotICAgIG1fZXhlY3V0YWJsZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4odmFs
dWUuYXNDZWxsKCkpLT5leGVjdXRhYmxlKCk7Ci19Ci0KLUpTRnVuY3Rpb24qIENhbGxMaW5rU3Rh
dHVzOjpmdW5jdGlvbigpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2NhbGxUYXJnZXQgfHwgIW1fY2Fs
bFRhcmdldC5pc0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgaWYgKCFtX2Nh
bGxUYXJnZXQuYXNDZWxsKCktPmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpCi0gICAgICAg
IHJldHVybiAwOwotICAgIAotICAgIHJldHVybiBqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2FsbFRh
cmdldC5hc0NlbGwoKSk7Ci19Ci0KLUludGVybmFsRnVuY3Rpb24qIENhbGxMaW5rU3RhdHVzOjpp
bnRlcm5hbEZ1bmN0aW9uKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fY2FsbFRhcmdldCB8fCAhbV9j
YWxsVGFyZ2V0LmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBpZiAoIW1f
Y2FsbFRhcmdldC5hc0NlbGwoKS0+aW5oZXJpdHMoSW50ZXJuYWxGdW5jdGlvbjo6aW5mbygpKSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgcmV0dXJuIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0
aW9uKj4obV9jYWxsVGFyZ2V0LmFzQ2VsbCgpKTsKLX0KLQotSW50cmluc2ljIENhbGxMaW5rU3Rh
dHVzOjppbnRyaW5zaWNGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKSBjb25zdAotewot
ICAgIGlmICghbV9leGVjdXRhYmxlKQotICAgICAgICByZXR1cm4gTm9JbnRyaW5zaWM7Ci0gICAg
Ci0gICAgcmV0dXJuIG1fZXhlY3V0YWJsZS0+aW50cmluc2ljRm9yKGtpbmQpOworICAgIG1fZWRn
ZXMuYXBwZW5kKENhbGxFZGdlKHZhbHVlLmFzQ2VsbCgpLCAxKSk7CiB9CiAKIENhbGxMaW5rU3Rh
dHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KGNvbnN0IENvbmN1cnJlbnRKSVRM
b2NrZXImIGxvY2tlciwgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29k
ZUluZGV4KQpAQCAtODcsNyArNTQsNyBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6
Y29tcHV0ZUZyCiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9Q
QVJBTShieXRlY29kZUluZGV4KTsKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAocHJvZmls
ZWRCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNv
ZGVJbmRleCwgQmFkRnVuY3Rpb24pKSkgeworICAgIGlmIChwcm9maWxlZEJsb2NrLT5oYXNFeGl0
U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDZWxs
KSkpIHsKICAgICAgICAgLy8gV2UgY291bGQgZm9yY2UgdGhpcyB0byBiZSBhIGNsb3N1cmUgY2Fs
bCwgYnV0IGluc3RlYWQgd2UnbGwganVzdCBhc3N1bWUgdGhhdCBpdAogICAgICAgICAvLyB0YWtl
cyBzbG93IHBhdGguCiAgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7CkBAIC0xMzksMTAg
KzEwNiwxMCBAQCBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRhIENhbGxMaW5rU3RhCiAgICAg
CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgZXhpdFNpdGVEYXRhLm1fdGFrZXNTbG93UGF0aCA9
Ci0gICAgICAgIHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVu
dEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENhY2hlLCBleGl0aW5nSklUVHlwZSkpCisgICAg
ICAgIHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRT
aXRlKGJ5dGVjb2RlSW5kZXgsIEJhZFR5cGUsIGV4aXRpbmdKSVRUeXBlKSkKICAgICAgICAgfHwg
cHJvZmlsZWRCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUo
Ynl0ZWNvZGVJbmRleCwgQmFkRXhlY3V0YWJsZSwgZXhpdGluZ0pJVFR5cGUpKTsKICAgICBleGl0
U2l0ZURhdGEubV9iYWRGdW5jdGlvbiA9Ci0gICAgICAgIHByb2ZpbGVkQmxvY2stPmhhc0V4aXRT
aXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZEZ1bmN0
aW9uLCBleGl0aW5nSklUVHlwZSkpOworICAgICAgICBwcm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0
ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDZWxsLCBl
eGl0aW5nSklUVHlwZSkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obG9ja2VyKTsKICAgICBV
TlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CkBAIC0xNTYsNiArMTIzLDE4IEBAIENhbGxMaW5r
U3RhdHVzOjpFeGl0U2l0ZURhdGEgQ2FsbExpbmtTdGEKICNpZiBFTkFCTEUoSklUKQogQ2FsbExp
bmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoY29uc3QgQ29uY3VycmVudEpJVExv
Y2tlciYsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQogeworICAgIC8vIEFsd2F5cyB0cnVz
dCB0aGUgY2FsbCBlZGdlIHByb2ZpbGUgb3ZlciBhbnl0aGluZyBlbHNlIHNpbmNlIHRoaXMgaGFz
IHByZWNpc2UgY291bnRzLgorICAgIC8vIEl0IGNhbiBtYWtlIHRoZSBiZXN0IHBvc3NpYmxlIGRl
Y2lzaW9uIGJlY2F1c2UgaXQgbmV2ZXIgImZvcmdldHMiIHdoYXQgaGFwcGVuZWQgZm9yIGFueQor
ICAgIC8vIGNhbGwsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBmYWRpbmcgb3V0IHRoZSBjb3VudHMg
b2Ygb2xkIGNhbGxzIChmb3IgZXhhbXBsZSBpZiB0aGUKKyAgICAvLyBjb3VudGVyIHR5cGUgaXMg
MTYtYml0IHRoZW4gY2FsbHMgdGhhdCBoYXBwZW5lZCBtb3JlIHRoYW4gMl4xNiBjYWxscyBhZ28g
YXJlIGdpdmVuIGhhbGYKKyAgICAvLyB3ZWlnaHQsIGFuZCB0aGlzIGNvbXBvdW5kcyBmb3IgZXZl
cnkgMl4xNSBbc2ljXSBjYWxscyBhZnRlciB0aGF0KS4gVGhlIGNvbWJpbmF0aW9uIG9mCisgICAg
Ly8gaGlnaCBmaWRlbGl0eSBmb3IgcmVjZW50IGNhbGxzIGFuZCBmYWRpbmcgZm9yIG9sZGVyIGNh
bGxzIG1ha2VzIHRoaXMgdGhlIG1vc3QgdXNlZnVsCisgICAgLy8gbWVjaGFtaXNtIG9mIGNob29z
aW5nIGhvdyB0byBvcHRpbWl6ZSBmdXR1cmUgY2FsbHMuCisgICAgQ2FsbEVkZ2VQcm9maWxlKiBl
ZGdlUHJvZmlsZSA9IGNhbGxMaW5rSW5mby5jYWxsRWRnZVByb2ZpbGUuZ2V0KCk7CisgICAgV1RG
Ojpsb2FkTG9hZEZlbmNlKCk7CisgICAgaWYgKGVkZ2VQcm9maWxlKQorICAgICAgICByZXR1cm4g
Y29tcHV0ZUZyb21DYWxsRWRnZVByb2ZpbGUoZWRnZVByb2ZpbGUpOworICAgIAogICAgIC8vIE5v
dGUgdGhhdCBkZXNwaXRlIHJlcXVpcmluZyB0aGF0IHRoZSBsb2NrZXIgaXMgaGVsZCwgdGhpcyBj
b2RlIGlzIHJhY3kgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gdGhlIENhbGxMaW5rSW5mbzogaXQg
bWF5IGdldCBjbGVhcmVkIHdoaWxlIHRoaXMgY29kZSBydW5zISBUaGlzIGlzIGJlY2F1c2UKICAg
ICAvLyBDYWxsTGlua0luZm86OnVubGluaygpIG1heSBiZSBjYWxsZWQgZnJvbSBhIGRpZmZlcmVu
dCBDb2RlQmxvY2sgdGhhbiB0aGUgb25lIHRoYXQgb3ducwpAQCAtMTc3LDcgKzE1Niw3IEBAIENh
bGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICAgICAKICAgICBKU0Z1bmN0
aW9uKiB0YXJnZXQgPSBjYWxsTGlua0luZm8ubGFzdFNlZW5DYWxsZWUuZ2V0KCk7CiAgICAgaWYg
KCF0YXJnZXQpCi0gICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygpOworICAgICAgICByZXR1
cm4gdGFrZXNTbG93UGF0aCgpOwogICAgIAogICAgIGlmIChjYWxsTGlua0luZm8uaGFzU2VlbkNs
b3N1cmUpCiAgICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyh0YXJnZXQtPmV4ZWN1dGFibGUo
KSk7CkBAIC0xODUsMTUgKzE2NCwzMSBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6
Y29tcHV0ZUZvCiAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKHRhcmdldCk7CiB9CiAKLUNhbGxM
aW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAotICAgIGNvbnN0IENvbmN1cnJl
bnRKSVRMb2NrZXImIGxvY2tlciwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIEV4aXRTaXRl
RGF0YSBleGl0U2l0ZURhdGEpCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czpjb21wdXRl
RnJvbUNhbGxFZGdlUHJvZmlsZShDYWxsRWRnZVByb2ZpbGUqIGVkZ2VQcm9maWxlKQogewotICAg
IGlmIChleGl0U2l0ZURhdGEubV90YWtlc1Nsb3dQYXRoKQorICAgIC8vIFRvIGRvIGFueXRoaW5n
IG1lYW5pbmdmdWwsIHdlIHJlcXVpcmUgdGhhdCB0aGUgbWFqb3JpdHkgb2YgY2FsbHMgYXJlIHRv
IHNvbWV0aGluZyB3ZQorICAgIC8vIGtub3cgaG93IHRvIGhhbmRsZS4KKyAgICB1bnNpZ25lZCBu
dW1DYWxsc1RvS25vd24gPSBlZGdlUHJvZmlsZS0+bnVtQ2FsbHNUb0tub3duRWRnZXMoKTsKKyAg
ICB1bnNpZ25lZCBudW1DYWxsc1RvVW5rbm93biA9IGVkZ2VQcm9maWxlLT5udW1DYWxsc1RvTm90
Q2VsbCgpICsgZWRnZVByb2ZpbGUtPm51bUNhbGxzVG9Vbmtub3duQ2VsbCgpOworICAgIGlmIChu
dW1DYWxsc1RvS25vd24gPD0gbnVtQ2FsbHNUb1Vua25vd24pCiAgICAgICAgIHJldHVybiB0YWtl
c1Nsb3dQYXRoKCk7CiAgICAgCisgICAgQ2FsbExpbmtTdGF0dXMgcmVzdWx0OworICAgIHJlc3Vs
dC5tX2VkZ2VzID0gY2FsbEVkZ2VzLT5jYWxsRWRnZXMoKTsKKyAgICByZXN1bHQubV9jb3VsZFRh
a2VTbG93UGF0aCA9ICEhbnVtQ2FsbHNUb1Vua25vd247CisgICAgcmVzdWx0Lm1fY2FuVHJ1c3RD
b3VudHMgPSB0cnVlOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0NhbGxMaW5rU3Rh
dHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAorICAgIGNvbnN0IENvbmN1cnJlbnRKSVRM
b2NrZXImIGxvY2tlciwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIEV4aXRTaXRlRGF0YSBl
eGl0U2l0ZURhdGEpCit7CiAgICAgQ2FsbExpbmtTdGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZvcihs
b2NrZXIsIGNhbGxMaW5rSW5mbyk7CiAgICAgaWYgKGV4aXRTaXRlRGF0YS5tX2JhZEZ1bmN0aW9u
KQogICAgICAgICByZXN1bHQubWFrZUNsb3N1cmVDYWxsKCk7CisgICAgaWYgKGV4aXRTaXRlRGF0
YS5tX3Rha2VzU2xvd1BhdGgpCisgICAgICAgIHJlc3VsdC5tX2NvdWxkVGFrZVNsb3dQYXRoID0g
dHJ1ZTsKICAgICAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjU2LDYgKzI1MSwzMiBAQCBD
YWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvCiAgICAgcmV0dXJuIGNvbXB1
dGVGb3IocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBiYXNlbGluZU1h
cCk7CiB9CiAKK2Jvb2wgQ2FsbExpbmtTdGF0dXM6OmlzQ2xvc3VyZUNhbGwoKSBjb25zdAorewor
ICAgIGZvciAodW5zaWduZWQgaSA9IG1fZWRnZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIGlm
IChtX2VkZ2VzW2ldLmlzQ2xvc3VyZUNhbGwoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQ2FsbExpbmtTdGF0dXM6Om1ha2VD
bG9zdXJlQ2FsbCgpCit7CisgICAgQVNTRVJUKCFtX2lzUHJvdmVkKTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSBtX2VkZ2VzLnNpemUoKTsgaS0tOykKKyAgICAgICAgbV9lZGdlc1tpXSA9IG1fZWRn
ZXNbaV0uZGVzcGVjaWZpZWRDbG9zdXJlKCk7CisgICAgCisgICAgaWYgKCFBU1NFUlRfRElTQUJM
RUQpIHsKKyAgICAgICAgLy8gRG9pbmcgdGhpcyBzaG91bGQgbm90IGhhdmUgY3JlYXRlZCBkdXBs
aWNhdGVzLCBiZWNhdXNlIHRoZSBDYWxsRWRnZVByb2ZpbGUKKyAgICAgICAgLy8gc2hvdWxkIGRl
c3BlY2lmeSBjbG9zdXJlcyBpZiBkb2luZyBzbyB3b3VsZCByZWR1Y2UgdGhlIG51bWJlciBvZiBr
bm93biBjYWxsZWVzLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9lZGdlcy5z
aXplKCk7ICsraSkgeworICAgICAgICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFudCA9IG1fZWRnZXNb
aV0uY2FsbGVlKCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSBpICsgMTsgaiA8IG1f
ZWRnZXMuc2l6ZSgpOyArK2opCisgICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQgIT0gbV9l
ZGdlc1tqXS5jYWxsZWUoKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgQ2FsbExpbmtT
dGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBpZiAoIWlzU2V0KCkp
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0
YXR1cy5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsOSArNDYsOSBAQCBzdHJ1
Y3QgQ2FsbExpbmtJbmZvOwogY2xhc3MgQ2FsbExpbmtTdGF0dXMgewogcHVibGljOgogICAgIENh
bGxMaW5rU3RhdHVzKCkKLSAgICAgICAgOiBtX2V4ZWN1dGFibGUoMCkKLSAgICAgICAgLCBtX2Nv
dWxkVGFrZVNsb3dQYXRoKGZhbHNlKQorICAgICAgICA6IG1fY291bGRUYWtlU2xvd1BhdGgoZmFs
c2UpCiAgICAgICAgICwgbV9pc1Byb3ZlZChmYWxzZSkKKyAgICAgICAgLCBtX2NhblRydXN0Q291
bnRzKGZhbHNlKQogICAgIHsKICAgICB9CiAgICAgCkBAIC02MSwxMCArNjEsMTEgQEAgcHVibGlj
OgogICAgIAogICAgIGV4cGxpY2l0IENhbGxMaW5rU3RhdHVzKEpTVmFsdWUpOwogICAgIAotICAg
IENhbGxMaW5rU3RhdHVzKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKQotICAgICAgICA6IG1f
ZXhlY3V0YWJsZShleGVjdXRhYmxlKQorICAgIENhbGxMaW5rU3RhdHVzKENhbGxWYXJpYW50IHZh
cmlhbnQpCisgICAgICAgIDogbV9lZGdlcygxLCBDYWxsRWRnZShleGVjdXRhYmxlLCAxKSkKICAg
ICAgICAgLCBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQogICAgICAgICAsIG1faXNQcm92ZWQo
ZmFsc2UpCisgICAgICAgICwgbV9jYW5UcnVzdENvdW50cyhmYWxzZSkKICAgICB7CiAgICAgfQog
ICAgIApAQCAtMTA3LDM3ICsxMDgsMzYgQEAgcHVibGljOgogICAgIHN0YXRpYyBDYWxsTGlua1N0
YXR1cyBjb21wdXRlRm9yKAogICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBjb25zdCBD
YWxsTGlua0luZm9NYXAmLCBjb25zdCBDb250ZXh0TWFwJik7CiAgICAgCi0gICAgYm9vbCBpc1Nl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdldCB8fCBtX2V4ZWN1dGFibGUgfHwgbV9jb3Vs
ZFRha2VTbG93UGF0aDsgfQorICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxU
YXJnZXQgfHwgIW1fZXhlY3V0YWJsZS5pc0VtcHR5KCkgfHwgbV9jb3VsZFRha2VTbG93UGF0aDsg
fQogICAgIAogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7IH0K
ICAgICAKICAgICBib29sIGNvdWxkVGFrZVNsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9jb3Vs
ZFRha2VTbG93UGF0aDsgfQotICAgIGJvb2wgaXNDbG9zdXJlQ2FsbCgpIGNvbnN0IHsgcmV0dXJu
IG1fZXhlY3V0YWJsZSAmJiAhbV9jYWxsVGFyZ2V0OyB9CiAgICAgCi0gICAgSlNWYWx1ZSBjYWxs
VGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0OyB9Ci0gICAgSlNGdW5jdGlvbiog
ZnVuY3Rpb24oKSBjb25zdDsKLSAgICBJbnRlcm5hbEZ1bmN0aW9uKiBpbnRlcm5hbEZ1bmN0aW9u
KCkgY29uc3Q7Ci0gICAgSW50cmluc2ljIGludHJpbnNpY0ZvcihDb2RlU3BlY2lhbGl6YXRpb25L
aW5kKSBjb25zdDsKLSAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZXhlY3V0YWJsZTsgfQorICAgIENhbGxFZGdlTGlzdCBlZGdlcygpIGNvbnN0IHsgcmV0
dXJuIG1fZWRnZXM7IH0KKyAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9lZGdl
c3NpemUoKTsgfQorICAgIENhbGxFZGdlIGF0KHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIG1f
ZWRnZXNbaV07IH0KKyAgICBDYWxsRWRnZSBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIGNvbnN0IHsg
cmV0dXJuIGF0KGkpOyB9CiAgICAgYm9vbCBpc1Byb3ZlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNQ
cm92ZWQ7IH0KLSAgICBib29sIGNhbk9wdGltaXplKCkgY29uc3QgeyByZXR1cm4gKG1fY2FsbFRh
cmdldCB8fCBtX2V4ZWN1dGFibGUpICYmICFtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CisgICAgYm9v
bCBjYW5PcHRpbWl6ZSgpIGNvbnN0IHsgcmV0dXJuICFtX2VkZ2VzLmlzRW1wdHkoKTsgfQorICAg
IGJvb2wgY2FuVHJ1c3RDb3VudHMoKSBjb25zdCB7IHJldHVybiBtX2NhblRydXN0Q291bnRzOyB9
CisgICAgCisgICAgYm9vbCBpc0Nsb3N1cmVDYWxsKCkgY29uc3Q7IC8vIFJldHVybnMgdHJ1ZSBp
ZiBhbnkgY2FsbGVlIGlzIGEgY2xvc3VyZSBjYWxsLgogICAgIAogICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKLSAgICB2b2lkIG1ha2VDbG9zdXJlQ2Fs
bCgpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1faXNQcm92ZWQpOwotICAgICAgICAvLyBUdXJu
IHRoaXMgaW50byBhIGNsb3N1cmUgY2FsbC4KLSAgICAgICAgbV9jYWxsVGFyZ2V0ID0gSlNWYWx1
ZSgpOwotICAgIH0KKyAgICB2b2lkIG1ha2VDbG9zdXJlQ2FsbCgpOwogICAgIAogICAgIHN0YXRp
YyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRnJvbUxMSW50KGNvbnN0IENvbmN1cnJlbnRKSVRMb2Nr
ZXImLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKyNpZiBFTkFCTEUoSklU
KQorICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRnJvbUNhbGxFZGdlUHJvZmlsZShD
YWxsRWRnZVByb2ZpbGUqKTsKKyNlbmRpZgogICAgIAotICAgIEpTVmFsdWUgbV9jYWxsVGFyZ2V0
OwotICAgIEV4ZWN1dGFibGVCYXNlKiBtX2V4ZWN1dGFibGU7CisgICAgQ2FsbEVkZ2VMaXN0IG1f
ZWRnZXM7CiAgICAgYm9vbCBtX2NvdWxkVGFrZVNsb3dQYXRoOwogICAgIGJvb2wgbV9pc1Byb3Zl
ZDsKKyAgICBib29sIG1fY2FuVHJ1c3RDb3VudHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFy
aWFudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQ2FsbFZhcmlhbnQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgQ2FsbFZhcmlh
bnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBpZiAoSW50ZXJuYWxGdW5j
dGlvbiogaW50ZXJuYWxGdW5jdGlvbiA9IHRoaXMtPmludGVybmFsRnVuY3Rpb24oKSkgeworICAg
ICAgICBvdXQucHJpbnQoIkludGVybmFsRnVuY3Rpb246ICIsIEpTVmFsdWUoaW50ZXJuYWxGdW5j
dGlvbikpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChKU0Z1bmN0aW9u
KiBmdW5jdGlvbiA9IHRoaXMtPmZ1bmN0aW9uKCkpIHsKKyAgICAgICAgb3V0LnByaW50KCIoRnVu
Y3Rpb246ICIsIEpTVmFsdWUoZnVuY3Rpb24pLCAiOyBFeGVjdXRhYmxlOiAiLCAqZXhlY3V0YWJs
ZSgpLCAiKSIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIG91dC5wcmludCgi
RXhlY3V0YWJsZTogIiwgKmV4ZWN1dGFibGUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ2FsbFZhcmlhbnRfaAorI2RlZmlu
ZSBDYWxsVmFyaWFudF9oCisKKyNpbmNsdWRlICJKU0NlbGwuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIENhbGxWYXJpYW50IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBDYWxsVmFyaWFu
dChKU0NlbGwqIGNhbGxlZSA9IG51bGxwdHIpCisgICAgICAgIDogbV9jYWxsZWUoY2FsbGVlKQor
ICAgIHsKKyAgICB9CisgICAgCisgICAgQ2FsbFZhcmlhbnQoV1RGOjpIYXNoVGFibGVEZWxldGVk
VmFsdWVUeXBlKQorICAgICAgICA6IG1fY2FsbGVlKGRlbGV0ZWRUb2tlbigpKQorICAgIHsKKyAg
ICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7
IH0KKyAgICAKKyAgICAvLyBJZiB0aGlzIHZhcmlhbnQgcmVmZXJzIHRvIGEgZnVuY3Rpb24sIGNo
YW5nZSBpdCB0byByZWZlciB0byBpdHMgZXhlY3V0YWJsZS4KKyAgICBBTFdBWVNfSU5MSU5FIENh
bGxWYXJpYW50IGRlc3BlY2lmaWVkQ2xvc3VyZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAo
bV9jYWxsZWUtPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICAgICAgICAgIHJldHVybiBD
YWxsVmFyaWFudChqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2FsbGVlKS0+ZXhlY3V0YWJsZSgpKTsK
KyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAgICAKKyAgICBKU0NlbGwqIHJhd0NhbGxl
ZUNlbGwoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlZTsgfQorICAgIAorICAgIEludGVybmFsRnVu
Y3Rpb24qIGludGVybmFsRnVuY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGpz
RHluYW1pY0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KG1fY2FsbGVlKTsKKyAgICB9CisgICAgCisg
ICAgSlNGdW5jdGlvbiogZnVuY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGpz
RHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2FsbGVlKTsKKyAgICB9CisgICAgCisgICAgYm9v
bCBpc0Nsb3N1cmVDYWxsKCkgY29uc3QgeyByZXR1cm4gISFqc0R5bmFtaWNDYXN0PEV4ZWN1dGFi
bGVCYXNlKj4obV9jYWxsZWUpOyB9CisgICAgCisgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFi
bGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gdGhp
cy0+ZnVuY3Rpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbi0+ZXhlY3V0YWJsZSgp
OworICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxFeGVjdXRhYmxlQmFzZSo+KG1fY2FsbGVl
KTsKKyAgICB9CisgICAgCisgICAgSlNDZWxsKiBub25FeGVjdXRhYmxlQ2FsbGVlKCkgY29uc3QK
KyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpc0Nsb3N1cmVDYWxsKCkpOworICAgICAg
ICByZXR1cm4gbV9jYWxsZWU7CisgICAgfQorICAgIAorICAgIEludHJpbnNpYyBpbnRyaW5zaWNG
b3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYg
KEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gdGhpcy0+ZXhlY3V0YWJsZSgpKQorICAgICAg
ICAgICAgcmV0dXJuIGV4ZWN1dGFibGUtPmludHJpbnNpY0ZvcihraW5kKTsKKyAgICAgICAgcmV0
dXJuIE5vSW50cmluc2ljOworICAgIH0KKyAgICAKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1
bmN0aW9uRXhlY3V0YWJsZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4ganNEeW5hbWlj
Q2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKCkpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CisgICAgCisgICAgYm9vbCBpc0hh
c2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9jYWxs
ZWUgPT0gZGVsZXRlZFRva2VuKCk7CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBDYWxsVmFyaWFudCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9j
YWxsZWUgPT0gb3RoZXIubV9jYWxsZWU7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIGhhc2go
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6UHRySGFzaDxKU0NlbGwqPjo6aGFz
aChtX2NhbGxlZSk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBzdGF0aWMgSlNDZWxsKiBk
ZWxldGVkVG9rZW4oKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4oc3RhdGljX2Nhc3Q8
dWludHB0cl90PigxKSk7IH0KKyAgICAgICAgICAgICAgICAgICAKKyAgICBKU0NlbGwqIG1fY2Fs
bGVlOworfTsKKworc3RydWN0IENhbGxWYXJpYW50SGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVk
IGhhc2goY29uc3QgQ2FsbFZhcmlhbnQmIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQorICAg
IHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENhbGxWYXJpYW50JiBhLCBjb25zdCBDYWxsVmFyaWFu
dCYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29t
cGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKKwordHlwZWRlZiBWZWN0b3I8Q2FsbFZh
cmlhbnQsIDE+IENhbGxWYXJpYW50TGlzdDsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVz
cGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7Cit0
ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6OkNhbGxWYXJpYW50PiB7CisgICAgdHlw
ZWRlZiBKU0M6OkNhbGxWYXJpYW50SGFzaCBIYXNoOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IEhhc2hUcmFpdHM7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6
Q2FsbFZhcmlhbnQ+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6Q2FsbFZhcmlhbnQ+IHsg
fTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBDYWxsVmFyaWFudF9oCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5oCShyZXZpc2lvbiAx
NzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGVudW0gRXhpdEtp
bmQgOiB1aW50OF90IHsKICAgICBFeGl0S2luZFVuc2V0LAogICAgIEJhZFR5cGUsIC8vIFdlIGV4
aXRlZCBiZWNhdXNlIGEgdHlwZSBwcmVkaWN0aW9uIHdhcyB3cm9uZy4KLSAgICBCYWRGdW5jdGlv
biwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2UgbWFkZSBhbiBpbmNvcnJlY3QgYXNzdW1wdGlvbiBh
Ym91dCB3aGF0IGZ1bmN0aW9uIHdlIHdvdWxkIHNlZS4KKyAgICBCYWRDZWxsLCAvLyBXZSBleGl0
ZWQgYmVjYXVzZSB3ZSBtYWRlIGFuIGluY29ycmVjdCBhc3N1bXB0aW9uIGFib3V0IHdoYXQgY2Vs
bCB3ZSB3b3VsZCBzZWUuIFVzdWFsbHkgdXNlZCBmb3IgZnVuY3Rpb24gY2hlY2tzLgogICAgIEJh
ZEV4ZWN1dGFibGUsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIG1hZGUgYW4gaW5jb3JyZWN0IGFz
c3VtcHRpb24gYWJvdXQgd2hhdCBleGVjdXRhYmxlIHdlIHdvdWxkIHNlZS4KICAgICBCYWRDYWNo
ZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2UgYW4gaW5saW5lIGNhY2hlIHdhcyB3cm9uZy4KICAgICBC
YWRDb25zdGFudENhY2hlLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSBhIGNhY2hlIG9uIGEgd2VhayBj
b25zdGFudCAodXN1YWxseSBhIHByb3RvdHlwZSkgd2FzIHdyb25nLgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYwLDE0
ICsxNDYwLDYgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAg
ICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIAotICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOiB7Ci0gICAgICAgIC8vIEZJWE1FOiBX
ZSBjb3VsZCB0cmFjayBleGVjdXRhYmxlcyBpbiBBYnN0cmFjdFZhbHVlLCB3aGljaCB3b3VsZCBh
bGxvdyB1cyB0byBnZXQgcmlkIG9mIHRoZXNlIGNoZWNrcwotICAgICAgICAvLyBtb3JlIHRob3Jv
dWdobHkuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYyMDAKLSAg
ICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIGVsaW1pbmF0ZSB0aGVzZSBlbnRpcmVseSBpZiB3ZSBr
bm93IHRoZSBleGFjdCB2YWx1ZSB0aGF0IGZsb3dzIGludG8gdGhpcy4KLSAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjIwMQotICAgICAgICBicmVh
azsKLSAgICB9Ci0KICAgICBjYXNlIENoZWNrU3RydWN0dXJlOiB7CiAgICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgYmUgYWJsZSB0byBwcm9wYWdhdGUgdGhlIHN0cnVjdHVyZSBzZXRzIG9mIGNv
bnN0YW50cyAoaS5lLiBwcm90b3R5cGVzKS4KICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUg
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKQEAgLTE3MjcsMTYgKzE3MTksMjAgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgbV9zdGF0ZS5z
ZXRJc1ZhbGlkKGZhbHNlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgICAgICAKKyAgICBj
YXNlIEdldEV4ZWN1dGFibGU6CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjQ2Vs
bE90aGVyKTsKKyAgICAgICAgYnJlYWs7CiAgICAgCi0gICAgY2FzZSBDaGVja0Z1bmN0aW9uOiB7
CisgICAgY2FzZSBDaGVja0NlbGw6IHsKICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGZvck5vZGUo
bm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7Ci0gICAgICAgIGlmICh2YWx1ZSA9PSBub2RlLT5mdW5j
dGlvbigpLT52YWx1ZSgpKSB7CisgICAgICAgIGlmICh2YWx1ZSA9PSBub2RlLT5jZWxsT3BlcmFu
ZCgpLT52YWx1ZSgpKSB7CiAgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRy
dWUpOwogICAgICAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIAotICAgICAgICBmaWx0ZXJCeVZhbHVlKG5vZGUtPmNoaWxkMSgpLCAq
bm9kZS0+ZnVuY3Rpb24oKSk7CisgICAgICAgIGZpbHRlckJ5VmFsdWUobm9kZS0+Y2hpbGQxKCks
ICpub2RlLT5jZWxsT3BlcmFuZCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCShyZXZpc2lv
biAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiwxMyBAQCBzdHJ1Y3QgQmFzaWNCbG9jayA6IFJl
ZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0OwogICAgIAorICAgIHZvaWQgZGlkTGluaygpCisgICAgeworI2lmICFBU1NFUlRfRElT
QUJMRUQKKyAgICAgICAgaXNMaW5rZWQgPSB0cnVlOworI2VuZGlmCisgICAgfQorICAgIAogICAg
IC8vIFRoaXMgdmFsdWUgaXMgdXNlZCBpbnRlcm5hbGx5IGZvciBibG9jayBsaW5raW5nIGFuZCBP
U1IgZW50cnkuIEl0IGlzIG1vc3RseSBtZWFuaW5nbGVzcwogICAgIC8vIGZvciBvdGhlciBwdXJw
b3NlcyBkdWUgdG8gaW5saW5pbmcuCiAgICAgdW5zaWduZWQgYnl0ZWNvZGVCZWdpbjsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShy
ZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDE0ICsxNzgsMjAgQEAgcHJpdmF0ZToK
ICAgICAgICAgTm9kZSogY2FsbFRhcmdldCwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZz
ZXQsIENhbGxMaW5rU3RhdHVzKTsKICAgICB2b2lkIGhhbmRsZUNhbGwoaW50IHJlc3VsdCwgTm9k
ZVR5cGUgb3AsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6
ZSwgaW50IGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQpOwogICAgIHZv
aWQgaGFuZGxlQ2FsbChJbnN0cnVjdGlvbiogcGMsIE5vZGVUeXBlIG9wLCBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kKTsKLSAgICB2b2lkIGVtaXRGdW5jdGlvbkNoZWNrcyhjb25zdCBDYWxsTGlua1N0
YXR1cyYsIE5vZGUqIGNhbGxUYXJnZXQsIGludCByZWdpc3Rlck9mZnNldCwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCk7CisgICAgdm9pZCBlbWl0RnVuY3Rpb25DaGVja3MoQ2FsbFZhcmlhbnQsIE5v
ZGUqIGNhbGxUYXJnZXQsIGludCByZWdpc3Rlck9mZnNldCwgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCk7CisgICAgdm9pZCB1bmRvRnVuY3Rpb25DaGVja3MoQ2FsbFZhcmlhbnQpOwogICAgIHZvaWQg
ZW1pdEFyZ3VtZW50UGhhbnRvbXMoaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOworICAgIHVuc2lnbmVkIGlu
bGluaW5nQ29zdChDYWxsVmFyaWFudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kKTsgLy8gUmV0dXJuIFVJTlRfTUFYIGlmIGl0J3Mgbm90IGFu
IGlubGluaW5nIGNhbmRpZGF0ZS4gQnkgY29udmVudGlvbiwgaW50cmluc2ljcyBoYXZlIGEgY29z
dCBvZiAxLgogICAgIC8vIEhhbmRsZSBpbmxpbmluZy4gUmV0dXJuIHRydWUgaWYgaXQgc3VjY2Vl
ZGVkLCBmYWxzZSBpZiB3ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4KLSAgICBib29sIGhhbmRsZUlu
bGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgQ2Fs
bExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kKTsKKyAg
ICBib29sIGhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3Bl
cmFuZCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgTm9kZVR5cGUgY2Fs
bE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pOwor
ICAgIGVudW0gQ2FsbGVyTGlua2FiaWxpdHkgeyBDYWxsZXJEb2VzTm9ybWFsTGlua2luZywgQ2Fs
bGVyTGlua3NNYW51YWxseSB9OworICAgIGJvb2wgYXR0ZW1wdFRvSW5saW5lQ2FsbChOb2RlKiBj
YWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0
ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9m
ZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBDYWxsVGFpbExpbmthYmlsaXR5LCBTcGVjdWxh
dGVkVHlwZSBwcmVkaWN0aW9uLCB1bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlKTsKKyAgICB2b2lk
IGlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxs
VmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2luZCwgQ2FsbGVyTGlu
a2FiaWxpdHkpOworICAgIHZvaWQgY2FuY2VsTGlua2luZ0ZvckJsb2NrKElubGluZVN0YWNrRW50
cnkqLCBCYXNpY0Jsb2NrKik7IC8vIE9ubHkgd29ya3Mgd2hlbiB0aGUgZ2l2ZW4gYmxvY2sgaXMg
dGhlIGxhc3Qgb25lIHRvIGhhdmUgYmVlbiBhZGRlZCBmb3IgdGhhdCBpbmxpbmUgc3RhY2sgZW50
cnkuCiAgICAgLy8gSGFuZGxlIGludHJpbnNpYyBmdW5jdGlvbnMuIFJldHVybiB0cnVlIGlmIGl0
IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCiAgICAgYm9vbCBo
YW5kbGVJbnRyaW5zaWMoaW50IHJlc3VsdE9wZXJhbmQsIEludHJpbnNpYywgaW50IHJlZ2lzdGVy
T2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24pOwogICAgIGJvb2wgaGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKGludCByZXN1
bHRPcGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlKTsKLSAgICBib29sIGhhbmRs
ZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihpbnQgcmVzdWx0T3BlcmFuZCwgSW50ZXJuYWxGdW5j
dGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKKyAg
ICBib29sIGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihpbnQgcmVzdWx0T3BlcmFuZCwg
SW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICBOb2RlKiBoYW5kbGVQ
dXRCeU9mZnNldChOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNl
dCwgTm9kZSogdmFsdWUpOwogICAgIE5vZGUqIGhhbmRsZUdldEJ5T2Zmc2V0KFNwZWN1bGF0ZWRU
eXBlLCBOb2RlKiBiYXNlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmLCB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyLCBQcm9wZXJ0eU9mZnNldCwgTm9kZVR5cGUgb3AgPSBHZXRCeU9mZnNldCk7CiAgICAg
dm9pZCBoYW5kbGVHZXRCeUlkKApAQCAtNjM3LDYgKzY0MywxMyBAQCBwcml2YXRlOgogICAgICAg
ICAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CisgICAgCisgICAgdm9pZCByZW1vdmVM
YXN0Tm9kZUZyb21HcmFwaChOb2RlVHlwZSBleHBlY3RlZE5vZGVUeXBlKQorICAgIHsKKyAgICAg
ICAgTm9kZSogbm9kZSA9IG1fY3VycmVudEJsb2NrLT50YWtlTGFzdCgpOworICAgICAgICBSRUxF
QVNFX0FTU0VSVChub2RlLT5vcCgpID09IGV4cGVjdGVkTm9kZVR5cGUpOworICAgICAgICBtX2dy
YXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CisgICAgfQogCiAgICAgdm9pZCBhZGRWYXJBcmdD
aGlsZChOb2RlKiBjaGlsZCkKICAgICB7CkBAIC04NzEsOCArODg0LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgVmVjdG9yPFVubGlua2VkQmxvY2s+IG1fdW5saW5rZWRCbG9ja3M7CiAgICAgICAgIAog
ICAgICAgICAvLyBQb3RlbnRpYWwgYmxvY2sgbGlua2luZyB0YXJnZXRzLiBNdXN0IGJlIHNvcnRl
ZCBieSBieXRlY29kZUJlZ2luLCBhbmQKLSAgICAgICAgLy8gY2Fubm90IGhhdmUgdHdvIGJsb2Nr
cyB0aGF0IGhhdmUgdGhlIHNhbWUgYnl0ZWNvZGVCZWdpbi4gRm9yIHRoaXMgdmVyeQotICAgICAg
ICAvLyByZWFzb24sIHRoaXMgaXMgbm90IGVxdWl2YWxlbnQgdG8gCisgICAgICAgIC8vIGNhbm5v
dCBoYXZlIHR3byBibG9ja3MgdGhhdCBoYXZlIHRoZSBzYW1lIGJ5dGVjb2RlQmVnaW4uCiAgICAg
ICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gbV9ibG9ja0xpbmtpbmdUYXJnZXRzOwogICAgICAgICAK
ICAgICAgICAgLy8gSWYgdGhlIGNhbGxzaXRlJ3MgYmFzaWMgYmxvY2sgd2FzIHNwbGl0IGludG8g
dHdvLCB0aGVuIHRoaXMgd2lsbCBiZQpAQCAtMTAzNCwzNiArMTA0Niw3IEBAIHZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUNhbGwoCiAgICAgCiAgICAgdW5zaWduZWQgbmV4dE9mZnNldCA9IG1f
Y3VycmVudEluZGV4ICsgaW5zdHJ1Y3Rpb25TaXplOwogCi0gICAgaWYgKEludGVybmFsRnVuY3Rp
b24qIGZ1bmN0aW9uID0gY2FsbExpbmtTdGF0dXMuaW50ZXJuYWxGdW5jdGlvbigpKSB7Ci0gICAg
ICAgIGlmIChoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24ocmVzdWx0LCBmdW5jdGlvbiwg
cmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBwcmVkaWN0aW9uLCBz
cGVjaWFsaXphdGlvbktpbmQpKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIHBoYW50b21pbmcgaGFz
IHRvIGJlICphZnRlciogdGhlIGNvZGUgZm9yIHRoZSBpbnRyaW5zaWMsIHRvIHNpZ25pZnkgdGhh
dAotICAgICAgICAgICAgLy8gdGhlIGlucHV0cyBtdXN0IGJlIGtlcHQgYWxpdmUgd2hhdGV2ZXIg
ZXhpdHMgdGhlIGludHJpbnNpYyBtYXkgZG8uCi0gICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50
b20sIGNhbGxUYXJnZXQpOwotICAgICAgICAgICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0
ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBD
YW4gb25seSBoYW5kbGUgdGhpcyB1c2luZyB0aGUgZ2VuZXJpYyBjYWxsIGhhbmRsZXIuCi0gICAg
ICAgIGFkZENhbGwocmVzdWx0LCBvcCwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICAgICAgCi0gICAgSW50cmluc2ljIGludHJpbnNpYyA9IGNhbGxMaW5rU3RhdHVzLmlu
dHJpbnNpY0ZvcihzcGVjaWFsaXphdGlvbktpbmQpOwotCi0gICAgSlNGdW5jdGlvbioga25vd25G
dW5jdGlvbiA9IG51bGxwdHI7Ci0gICAgaWYgKGludHJpbnNpYyAhPSBOb0ludHJpbnNpYykgewot
ICAgICAgICBlbWl0RnVuY3Rpb25DaGVja3MoY2FsbExpbmtTdGF0dXMsIGNhbGxUYXJnZXQsIHJl
Z2lzdGVyT2Zmc2V0LCBzcGVjaWFsaXphdGlvbktpbmQpOwotICAgICAgICAgICAgCi0gICAgICAg
IGlmIChoYW5kbGVJbnRyaW5zaWMocmVzdWx0LCBpbnRyaW5zaWMsIHJlZ2lzdGVyT2Zmc2V0LCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbikpIHsKLSAgICAgICAgICAgIC8v
IFRoaXMgcGhhbnRvbWluZyBoYXMgdG8gYmUgKmFmdGVyKiB0aGUgY29kZSBmb3IgdGhlIGludHJp
bnNpYywgdG8gc2lnbmlmeSB0aGF0Ci0gICAgICAgICAgICAvLyB0aGUgaW5wdXRzIG11c3QgYmUg
a2VwdCBhbGl2ZSB3aGF0ZXZlciBleGl0cyB0aGUgaW50cmluc2ljIG1heSBkby4KLSAgICAgICAg
ICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldCk7Ci0gICAgICAgICAgICBlbWl0QXJn
dW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IHNwZWNpYWxpemF0aW9uS2luZCk7Ci0gICAgICAgICAgICBpZiAobV9ncmFwaC5jb21waWxhdGlv
bigpKQotICAgICAgICAgICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5l
ZENhbGwoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAo
aGFuZGxlSW5saW5pbmcoY2FsbFRhcmdldCwgcmVzdWx0LCBjYWxsTGlua1N0YXR1cywgcmVnaXN0
ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zmc2V0LCBraW5kKSkg
eworICAgIGlmIChoYW5kbGVJbmxpbmluZyhjYWxsVGFyZ2V0LCByZXN1bHQsIGNhbGxMaW5rU3Rh
dHVzLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG5leHRPZmZz
ZXQsIG9wLCBraW5kLCBwcmVkaWN0aW9uKSkgewogICAgICAgICBpZiAobV9ncmFwaC5jb21waWxh
dGlvbigpKQogICAgICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVk
Q2FsbCgpOwogICAgICAgICByZXR1cm47CkBAIC0xMDg1LDExICsxMDY4LDExIEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoCiAgICAgfQogICAgIE5vZGUqIGNhbGwgPSBhZGRDYWxs
KHJlc3VsdCwgb3AsIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdp
c3Rlck9mZnNldCwgcHJlZGljdGlvbik7CiAKLSAgICBpZiAoa25vd25GdW5jdGlvbikgCi0gICAg
ICAgIGNhbGwtPmdpdmVLbm93bkZ1bmN0aW9uKGtub3duRnVuY3Rpb24pOworICAgIGlmIChrbm93
bkZ1bmN0aW9uKQorICAgICAgICBjYWxsLT5zZXRDZWxsT3BlcmFuZChtX2dyYXBoLmZyZWV6ZShr
bm93bkZ1bmN0aW9uKSk7CiB9CiAKLXZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRGdW5jdGlvbkNo
ZWNrcyhjb25zdCBDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsIE5vZGUqIGNhbGxUYXJn
ZXQsIGludCByZWdpc3Rlck9mZnNldCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQordm9p
ZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdEZ1bmN0aW9uQ2hlY2tzKENhbGxWYXJpYW50IGNhbGxlZSwg
Tm9kZSogY2FsbFRhcmdldCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQpCiB7CiAgICAgTm9kZSogdGhpc0FyZ3VtZW50OwogICAgIGlmIChraW5kID09IENv
ZGVGb3JDYWxsKQpAQCAtMTA5Nyw1MCArMTA4MCw0MSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpl
bWl0RnVuY3Rpb25DaGVja3MoCiAgICAgZWxzZQogICAgICAgICB0aGlzQXJndW1lbnQgPSAwOwog
Ci0gICAgaWYgKGNhbGxMaW5rU3RhdHVzLmlzUHJvdmVkKCkpIHsKLSAgICAgICAgYWRkVG9HcmFw
aChQaGFudG9tLCBjYWxsVGFyZ2V0LCB0aGlzQXJndW1lbnQpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIAotICAgIEFTU0VSVChjYWxsTGlua1N0YXR1cy5jYW5PcHRpbWl6ZSgpKTsKLSAg
ICAKLSAgICBpZiAoSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsTGlua1N0YXR1cy5mdW5jdGlv
bigpKQotICAgICAgICBhZGRUb0dyYXBoKENoZWNrRnVuY3Rpb24sIE9wSW5mbyhtX2dyYXBoLmZy
ZWV6ZShmdW5jdGlvbikpLCBjYWxsVGFyZ2V0LCB0aGlzQXJndW1lbnQpOworICAgIGlmICghY2Fs
bGVlLmlzQ29zdXJlQ2FsbCgpKQorICAgICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZv
KG1fZ3JhcGguZnJlZXplKGNhbGxlZS5mdW5jdGlvbigpKSksIGNhbGxUYXJnZXQsIHRoaXNBcmd1
bWVudCk7CiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVChjYWxsTGlua1N0YXR1cy5leGVjdXRh
YmxlKCkpOwogICAgICAgICAKLSAgICAgICAgYWRkVG9HcmFwaChDaGVja0V4ZWN1dGFibGUsIE9w
SW5mbyhjYWxsTGlua1N0YXR1cy5leGVjdXRhYmxlKCkpLCBjYWxsVGFyZ2V0LCB0aGlzQXJndW1l
bnQpOworICAgICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKGNhbGxlZS5leGVjdXRh
YmxlKCkpLCBhZGRUb0dyYXBoKEdldEV4ZWN1dGFibGUsIGNhbGxUYXJnZXQpLCB0aGlzQXJndW1l
bnQpOwogICAgIH0KIH0KIAordm9pZCBCeXRlQ29kZVBhcnNlcjo6dW5kb0Z1bmN0aW9uQ2hlY2tz
KENhbGxWYXJpYW50IGNhbGxlZSkKK3sKKyAgICByZW1vdmVMYXN0Tm9kZUZyb21HcmFwaChDaGVj
a0NlbGwpOworICAgIGlmIChjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKQorICAgICAgICByZW1vdmVM
YXN0Tm9kZUZyb21HcmFwaChHZXRFeGVjdXRhYmxlKTsKK30KKwogdm9pZCBCeXRlQ29kZVBhcnNl
cjo6ZW1pdEFyZ3VtZW50UGhhbnRvbXMoaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICBm
b3IgKGludCBpID0ga2luZCA9PSBDb2RlRm9yQ2FsbCA/IDAgOiAxOyBpIDwgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXM7ICsraSkKICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBnZXQodmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSwgcmVnaXN0ZXJPZmZzZXQpKSk7CiB9CiAKLWJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQg
cmVzdWx0T3BlcmFuZCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBpbnQg
cmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQg
bmV4dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQpCit1bnNpZ25lZCBCeXRlQ29k
ZVBhcnNlcjo6aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50IGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogICAgIAotICAgIENvZGVTcGVjaWFsaXph
dGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXph
dGlvbktpbmRGb3Ioa2luZCk7Ci0gICAgCiAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFM
b2coIkNvbnNpZGVyaW5nIGlubGluaW5nICIsIGNhbGxMaW5rU3RhdHVzLCAiIGludG8gIiwgY3Vy
cmVudENvZGVPcmlnaW4oKSwgIlxuIik7CisgICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nIGlu
bGluaW5nICIsIGNhbGxlZSwgIiBpbnRvICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOwog
ICAgIAotICAgIC8vIEZpcnN0LCB0aGUgcmVhbGx5IHNpbXBsZSBjaGVja3M6IGRvIHdlIGhhdmUg
YW4gYWN0dWFsIEpTIGZ1bmN0aW9uPwotICAgIGlmICghY2FsbExpbmtTdGF0dXMuZXhlY3V0YWJs
ZSgpKSB7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY2FsbGVlLmZ1bmN0
aW9uRXhlY3V0YWJsZSgpOworICAgIGlmICghZXhlY3V0YWJsZSkgewogICAgICAgICBpZiAodmVy
Ym9zZSkKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgdGhlcmUgaXMg
bm8gZXhlY3V0YWJsZS5cbiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBk
YXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIHRoZXJlIGlzIG5vIGZ1bmN0aW9uIGV4ZWN1dGFi
bGUuIik7CisgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9Ci0gICAgaWYgKGNhbGxMaW5r
U3RhdHVzLmV4ZWN1dGFibGUoKS0+aXNIb3N0RnVuY3Rpb24oKSkgewotICAgICAgICBpZiAodmVy
Ym9zZSkKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgaXQncyBhIGhv
c3QgZnVuY3Rpb24uXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRh
YmxlKj4oY2FsbExpbmtTdGF0dXMuZXhlY3V0YWJsZSgpKTsKICAgICAKICAgICAvLyBEb2VzIHRo
ZSBudW1iZXIgb2YgYXJndW1lbnRzIHdlJ3JlIHBhc3NpbmcgbWF0Y2ggdGhlIGFyaXR5IG9mIHRo
ZSB0YXJnZXQ/IFdlIGN1cnJlbnRseQogICAgIC8vIGlubGluZSBvbmx5IGlmIHRoZSBudW1iZXIg
b2YgYXJndW1lbnRzIHBhc3NlZCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG51bWJl
cgpAQCAtMTE0OCw3ICsxMTIyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5p
bmcoTm9kZQogICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KGV4ZWN1dGFibGUtPnBhcmFtZXRlckNv
dW50KCkpICsgMSA+IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSB7CiAgICAgICAgIGlmICh2
ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSBvZiBhcml0
eSBtaXNtYXRjaC5cbiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBV
SU5UX01BWDsKICAgICB9CiAgICAgCiAgICAgLy8gRG8gd2UgaGF2ZSBhIGNvZGUgYmxvY2ssIGFu
ZCBkb2VzIHRoZSBjb2RlIGJsb2NrJ3Mgc2l6ZSBtYXRjaCB0aGUgaGV1cmlzdGljcy9yZXF1aXJl
bWVudHMgZm9yCkBAIC0xMTU3LDE4ICsxMTMxLDE4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUlubGluaW5nKE5vZGUKICAgICAvLyBpZiB3ZSBoYWQgYSBzdGF0aWMgcHJvb2Ygb2Ygd2hh
dCB3YXMgYmVpbmcgY2FsbGVkOyB0aGlzIG1pZ2h0IGhhcHBlbiBmb3IgZXhhbXBsZSBpZiB5b3Ug
Y2FsbCBhCiAgICAgLy8gZ2xvYmFsIGZ1bmN0aW9uLCB3aGVyZSB3YXRjaHBvaW50aW5nIGdpdmVz
IHVzIHN0YXRpYyBpbmZvcm1hdGlvbi4gT3ZlcmFsbCwgaXQncyBhIHJhcmUgY2FzZQogICAgIC8v
IGJlY2F1c2Ugd2UgZXhwZWN0IHRoYXQgYW55IGhvdCBjYWxsZWVzIHdvdWxkIGhhdmUgYWxyZWFk
eSBiZWVuIGNvbXBpbGVkLgotICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+
YmFzZWxpbmVDb2RlQmxvY2tGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmJhc2VsaW5lQ29kZUJsb2NrRm9yKGtpbmQpOwogICAg
IGlmICghY29kZUJsb2NrKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0
YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSBubyBjb2RlIGJsb2NrIGF2YWlsYWJsZS5cbiIpOwot
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CiAg
ICAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbCA9IGlubGluZUZ1bmN0aW9uRm9yQ2Fw
YWJpbGl0eUxldmVsKAotICAgICAgICBjb2RlQmxvY2ssIHNwZWNpYWxpemF0aW9uS2luZCwgY2Fs
bExpbmtTdGF0dXMuaXNDbG9zdXJlQ2FsbCgpKTsKKyAgICAgICAgY29kZUJsb2NrLCBraW5nLCBj
YWxsTGlua1N0YXR1cy5pc0Nsb3N1cmVDYWxsKCkpOwogICAgIGlmICghY2FuSW5saW5lKGNhcGFi
aWxpdHlMZXZlbCkpIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9n
KCIgICAgRmFpbGluZyBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpcyBub3QgaW5saW5lYWJsZS5cbiIp
OwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9
CiAgICAgCiAgICAgLy8gQ2hlY2sgaWYgdGhlIGNhbGxlciBpcyBhbHJlYWR5IHRvbyBsYXJnZS4g
V2UgZG8gdGhpcyBjaGVjayBoZXJlIGJlY2F1c2UgdGhhdCdzIGp1c3QKQEAgLTExNzgsNyArMTE1
Miw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAgICAg
Y29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNlOwogICAgICAgICBpZiAo
dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgdGhlIGNh
bGxlciBpcyB0b28gbGFyZ2UuXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBy
ZXR1cm4gVUlOVF9NQVg7CiAgICAgfQogICAgIAogICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBi
ZSBiZXR0ZXIgYXQgcHJlZGljdGluZyBob3cgbXVjaCBibG9hdCB3ZSB3aWxsIGludHJvZHVjZSBi
eSBpbmxpbmluZwpAQCAtMTE5Nyw3ICsxMTcxLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlSW5saW5pbmcoTm9kZQogICAgICAgICBpZiAoZGVwdGggPj0gT3B0aW9uczo6bWF4aW11bUlu
bGluaW5nRGVwdGgoKSkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSBkZXB0aCBleGNlZWRlZC5cbiIpOwotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoZW50cnktPmV4ZWN1dGFibGUoKSA9PSBleGVj
dXRhYmxlKSB7CkBAIC0xMjA1LDE5ICsxMTc5LDI2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUlubGluaW5nKE5vZGUKICAgICAgICAgICAgIGlmIChyZWN1cnNpb24gPj0gT3B0aW9uczo6
bWF4aW11bUlubGluaW5nUmVjdXJzaW9uKCkpIHsKICAgICAgICAgICAgICAgICBpZiAodmVyYm9z
ZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSByZWN1
cnNpb24gZGV0ZWN0ZWQuXG4iKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQogICAgIAogICAgIGlmICh2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKCIgICAgQ29tbWl0
dGluZyB0byBpbmxpbmluZy5cbiIpOworICAgICAgICBkYXRhTG9nKCIgICAgSW5saW5pbmcgc2hv
dWxkIGJlIHBvc3NpYmxlLlxuIik7CiAgICAgCi0gICAgLy8gTm93IHdlIGtub3cgd2l0aG91dCBh
IGRvdWJ0IHRoYXQgd2UgYXJlIGNvbW1pdHRlZCB0byBpbmxpbmluZy4gU28gYmVnaW4gdGhlIHBy
b2Nlc3MKLSAgICAvLyBieSBjaGVja2luZyB0aGUgY2FsbGVlIChpZiBuZWNlc3NhcnkpIGFuZCBt
YWtpbmcgc3VyZSB0aGF0IGFyZ3VtZW50cyBhbmQgdGhlIGNhbGxlZQotICAgIC8vIGFyZSBmbHVz
aGVkLgotICAgIGVtaXRGdW5jdGlvbkNoZWNrcyhjYWxsTGlua1N0YXR1cywgY2FsbFRhcmdldE5v
ZGUsIHJlZ2lzdGVyT2Zmc2V0LCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgIC8vIEl0IG1pZ2h0
IGJlIHBvc3NpYmxlIHRvIGlubGluZS4KKyAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlv
bkNvdW50KCk7Cit9CisKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2Fs
bFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyaWFudCBjYWxsZWUsIGludCBy
ZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBu
ZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgQ2FsbGVyTGlua2FiaWxpdHkg
Y2FsbGVyTGlua2FiaWxpdHkpCit7CisgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFs
aXphdGlvbktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5k
KTsKKyAgICAKKyAgICBBU1NFUlQoaW5saW5pbmdDb3N0KGNhbGxlZSwgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCkgIT0gVUlOVF9NQVgpOwogICAgIAorICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbGVlLmZ1bmN0aW9uRXhlY3V0YWJsZSgpLT5iYXNl
bGluZUNvZGVCbG9ja0ZvcihzcGVjaWFsaXphdGlvbktpbmQpOworCiAgICAgLy8gRklYTUU6IERv
bid0IGZsdXNoIGNvbnN0YW50cyEKICAgICAKICAgICBpbnQgaW5saW5lQ2FsbEZyYW1lU3RhcnQg
PSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVy
T2Zmc2V0KSkub2Zmc2V0KCkgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOwpAQCAtMTIz
Myw3ICsxMjE0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQog
ICAgICAgICByZXN1bHRSZWcgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQocmVzdWx0
UmVnKTsKICAgICAKICAgICBJbmxpbmVTdGFja0VudHJ5IGlubGluZVN0YWNrRW50cnkoCi0gICAg
ICAgIHRoaXMsIGNvZGVCbG9jaywgY29kZUJsb2NrLCBtX2dyYXBoLmxhc3RCbG9jaygpLCBjYWxs
TGlua1N0YXR1cy5mdW5jdGlvbigpLCByZXN1bHRSZWcsCisgICAgICAgIHRoaXMsIGNvZGVCbG9j
aywgY29kZUJsb2NrLCBtX2dyYXBoLmxhc3RCbG9jaygpLCBjYWxsZWUuZnVuY3Rpb24oKSwgcmVz
dWx0UmVnLAogICAgICAgICAoVmlydHVhbFJlZ2lzdGVyKWlubGluZUNhbGxGcmFtZVN0YXJ0LCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywga2luZCk7CiAgICAgCiAgICAgLy8gVGhpcyBpcyB3
aGVyZSB0aGUgYWN0dWFsIGlubGluaW5nIHJlYWxseSBoYXBwZW5zLgpAQCAtMTI0Nyw4ICsxMjI4
LDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgIAogICAg
IFJFTEVBU0VfQVNTRVJUKAogICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxG
cmFtZS0+aXNDbG9zdXJlQ2FsbAotICAgICAgICA9PSBjYWxsTGlua1N0YXR1cy5pc0Nsb3N1cmVD
YWxsKCkpOwotICAgIGlmIChjYWxsTGlua1N0YXR1cy5pc0Nsb3N1cmVDYWxsKCkpIHsKKyAgICAg
ICAgPT0gY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSk7CisgICAgaWYgKGNhbGxlZS5pc0Nsb3N1cmVD
YWxsKCkpIHsKICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBjYWxsZWVWYXJpYWJsZSA9CiAg
ICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkNhbGxlZSksIGNhbGxUYXJn
ZXROb2RlLCBJbW1lZGlhdGVOYWtlZFNldCktPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwogICAgICAg
ICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHNjb3BlVmFyaWFibGUgPQpAQCAtMTI3NiwyMCArMTI1Nyw4
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgQVNTRVJUKGlubGluZVN0YWNrRW50cnkubV9jYWxsc2l0ZUJsb2NrSGVh
ZC0+aXNMaW5rZWQpOwogICAgICAgICAKLSAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHRo
ZSBjYWxsc2l0ZSBibG9jayBoZWFkIGlzIG5vdCBvd25lZCBieSB0aGUgY2FsbGVyLgotICAgICAg
ICBpZiAoIWlubGluZVN0YWNrRW50cnkubV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MuaXNFbXB0
eSgpKSB7Ci0gICAgICAgICAgICAvLyBJdCdzIGRlZmluaXRlbHkgb3duZWQgYnkgdGhlIGNhbGxl
ciwgYmVjYXVzZSB0aGUgY2FsbGVyIGNyZWF0ZWQgbmV3IGJsb2Nrcy4KLSAgICAgICAgICAgIC8v
IEFzc2VydCB0aGF0IHRoaXMgYWxsIGFkZHMgdXAuCi0gICAgICAgICAgICBBU1NFUlQoaW5saW5l
U3RhY2tFbnRyeS5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9ibG9jayA9PSBp
bmxpbmVTdGFja0VudHJ5Lm1fY2FsbHNpdGVCbG9ja0hlYWQpOwotICAgICAgICAgICAgQVNTRVJU
KGlubGluZVN0YWNrRW50cnkubV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MubGFzdCgpLm1fbmVl
ZHNOb3JtYWxMaW5raW5nKTsKLSAgICAgICAgICAgIGlubGluZVN0YWNrRW50cnkubV9jYWxsZXIt
Pm1fdW5saW5rZWRCbG9ja3MubGFzdCgpLm1fbmVlZHNOb3JtYWxMaW5raW5nID0gZmFsc2U7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBJdCdzIGRlZmluaXRlbHkgbm90IG93bmVk
IGJ5IHRoZSBjYWxsZXIuIFRlbGwgdGhlIGNhbGxlciB0aGF0IGhlIGRvZXMgbm90Ci0gICAgICAg
ICAgICAvLyBuZWVkIHRvIGxpbmsgaGlzIGNhbGxzaXRlIGJsb2NrIGhlYWQsIGJlY2F1c2Ugd2Ug
ZGlkIGl0IGZvciBoaW0uCi0gICAgICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS5tX2Nh
bGxlci0+bV9jYWxsc2l0ZUJsb2NrSGVhZE5lZWRzTGlua2luZyk7Ci0gICAgICAgICAgICBBU1NF
UlQoaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+bV9jYWxsc2l0ZUJsb2NrSGVhZCA9PSBpbmxp
bmVTdGFja0VudHJ5Lm1fY2FsbHNpdGVCbG9ja0hlYWQpOwotICAgICAgICAgICAgaW5saW5lU3Rh
Y2tFbnRyeS5tX2NhbGxlci0+bV9jYWxsc2l0ZUJsb2NrSGVhZE5lZWRzTGlua2luZyA9IGZhbHNl
OwotICAgICAgICB9CisgICAgICAgIGlmIChjYWxsZXJMaW5rYWJpbGl0eSA9PSBDYWxsZXJEb2Vz
Tm9ybWFsTGlua2luZykKKyAgICAgICAgICAgIGNhbmNlbExpbmtpbmdGb3JCbG9jayhpbmxpbmVT
dGFja1RvcC5tX2NhbGxlciwgaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxzaXRlQmxvY2tIZWFkKTsK
ICAgICAgICAgCiAgICAgICAgIGxpbmtCbG9ja3MoaW5saW5lU3RhY2tFbnRyeS5tX3VubGlua2Vk
QmxvY2tzLCBpbmxpbmVTdGFja0VudHJ5Lm1fYmxvY2tMaW5raW5nVGFyZ2V0cyk7CiAgICAgfSBl
bHNlCkBAIC0xMzE3LDcgKzEyODYsNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxp
bmluZyhOb2RlCiAgICAgCiAgICAgLy8gSWYgd2UgZ2V0IHRvIHRoaXMgcG9pbnQgdGhlbiBhbGwg
YmxvY2tzIG11c3QgZW5kIGluIHNvbWUgc29ydCBvZiB0ZXJtaW5hbHMuCiAgICAgQVNTRVJUKGxh
c3RCbG9jay0+bGFzdCgpLT5pc1Rlcm1pbmFsKCkpOwotICAgIAogCiAgICAgLy8gTmVlZCB0byBj
cmVhdGUgYSBuZXcgYmFzaWMgYmxvY2sgZm9yIHRoZSBjb250aW51YXRpb24gYXQgdGhlIGNhbGxl
ci4KICAgICBSZWZQdHI8QmFzaWNCbG9jaz4gYmxvY2sgPSBhZG9wdFJlZihuZXcgQmFzaWNCbG9j
ayhuZXh0T2Zmc2V0LCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIFBOYU4pKTsKQEAgLTEz
MzMsMjAgKzEzMDEsMjI0IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5v
ZGUKICAgICAgICAgQVNTRVJUKCFub2RlLT50YXJnZXRCbG9jaygpKTsKICAgICAgICAgbm9kZS0+
dGFyZ2V0QmxvY2soKSA9IGJsb2NrLmdldCgpOwogICAgICAgICBpbmxpbmVTdGFja0VudHJ5Lm1f
dW5saW5rZWRCbG9ja3NbaV0ubV9uZWVkc0Vhcmx5UmV0dXJuTGlua2luZyA9IGZhbHNlOwotI2lm
ICFBU1NFUlRfRElTQUJMRUQKLSAgICAgICAgYmxvY2tUb0xpbmstPmlzTGlua2VkID0gdHJ1ZTsK
LSNlbmRpZgorICAgICAgICBibG9ja1RvTGluay0+ZGlkTGluaygpOwogICAgIH0KICAgICAKICAg
ICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrLmdldCgpOwogICAgIEFTU0VSVChtX2lubGluZVN0YWNr
VG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmlzRW1wdHkoKSB8fCBtX2lubGlu
ZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmxhc3QoKS0+Ynl0ZWNv
ZGVCZWdpbiA8IG5leHRPZmZzZXQpOwogICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5t
X3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLmdldCgpKSk7Ci0gICAg
bV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5hcHBlbmQo
YmxvY2suZ2V0KCkpOworICAgIGlmIChjYWxsZXJMaW5rYWJpbGl0eSA9PSBDYWxsZXJEb2VzTm9y
bWFsTGlua2luZykKKyAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tM
aW5raW5nVGFyZ2V0cy5hcHBlbmQoYmxvY2suZ2V0KCkpOwogICAgIG1fZ3JhcGguYXBwZW5kQmxv
Y2soYmxvY2spOwogICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKK30KKwordm9pZCBCeXRlQ29k
ZVBhcnNlcjo6Y2FuY2VsTGlua2luZ0ZvckJsb2NrKElubGluZVN0YWNrRW50cnkqIGlubGluZVN0
YWNrRW50cnksIEJhc2ljQmxvY2sqIGJsb2NrKQoreworICAgIC8vIEl0J3MgcG9zc2libGUgdGhh
dCB0aGUgY2FsbHNpdGUgYmxvY2sgaGVhZCBpcyBub3Qgb3duZWQgYnkgdGhlIGNhbGxlci4KKyAg
ICBpZiAoIWlubGluZVN0YWNrRW50cnktPm1fdW5saW5rZWRCbG9ja3MuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIC8vIEl0J3MgZGVmaW5pdGVseSBvd25lZCBieSB0aGUgY2FsbGVyLCBiZWNhdXNlIHRo
ZSBjYWxsZXIgY3JlYXRlZCBuZXcgYmxvY2tzLgorICAgICAgICAvLyBBc3NlcnQgdGhhdCB0aGlz
IGFsbCBhZGRzIHVwLgorICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS0+bV91bmxpbmtl
ZEJsb2Nrcy5sYXN0KCkubV9ibG9jayA9PSBibG9jayk7CisgICAgICAgIEFTU0VSVChpbmxpbmVT
dGFja0VudHJ5LT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX25lZWRzTm9ybWFsTGlua2luZyk7
CisgICAgICAgIGlubGluZVN0YWNrRW50cnktPm1fdW5saW5rZWRCbG9ja3MubGFzdCgpLm1fbmVl
ZHNOb3JtYWxMaW5raW5nID0gZmFsc2U7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gSXQncyBk
ZWZpbml0ZWx5IG5vdCBvd25lZCBieSB0aGUgY2FsbGVyLiBUZWxsIHRoZSBjYWxsZXIgdGhhdCBo
ZSBkb2VzIG5vdAorICAgICAgICAvLyBuZWVkIHRvIGxpbmsgaGlzIGNhbGxzaXRlIGJsb2NrIGhl
YWQsIGJlY2F1c2Ugd2UgZGlkIGl0IGZvciBoaW0uCisgICAgICAgIEFTU0VSVChpbmxpbmVTdGFj
a0VudHJ5LT5tX2NhbGxzaXRlQmxvY2tIZWFkTmVlZHNMaW5raW5nKTsKKyAgICAgICAgQVNTRVJU
KGlubGluZVN0YWNrRW50cnktPm1fY2FsbHNpdGVCbG9ja0hlYWQgPT0gYmxvY2spOworICAgICAg
ICBpbmxpbmVTdGFja0VudHJ5LT5tX2NhbGxzaXRlQmxvY2tIZWFkTmVlZHNMaW5raW5nID0gZmFs
c2U7CisgICAgfQorfQorCitib29sIEJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxs
KE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcmlhbnQgY2Fs
bGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
dW5zaWduZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIENhbGxlckxp
bmthYmlsaXR5IGNhbGxlckxpbmthYmlsaXR5LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCB1
bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlKQoreworICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQg
c3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXphdGlvbktpbmRG
b3Ioa2luZCk7CisgICAgCisgICAgaWYgKCFpbmxpbmluZ0JhbGFuY2UpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAKKyAgICBpZiAoSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxs
ZWUuaW50ZXJuYWxGdW5jdGlvbigpKSB7CisgICAgICAgIGlmIChoYW5kbGVDb25zdGFudEludGVy
bmFsRnVuY3Rpb24ocmVzdWx0T3BlcmFuZCwgZnVuY3Rpb24sIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kKSkgeworICAgICAgICAg
ICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0Tm9kZSk7CisgICAgICAgICAgICBlbWl0
QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgICAgICAgICBpbmxpbmluZ0JhbGFuY2UtLTsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgCisgICAgSW50cmluc2ljIGludHJpbnNpYyA9IGNhbGxlZS5pbnRyaW5z
aWNGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICBpZiAoaW50cmluc2ljICE9IE5vSW50cmlu
c2ljKSB7CisgICAgICAgIGlmIChoYW5kbGVJbnRyaW5zaWMocmVzdWx0T3BlcmFuZCwgaW50cmlu
c2ljLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHByZWRpY3Rp
b24pKSB7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXROb2RlKTsK
KyAgICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICAgICAgICAgIGlu
bGluaW5nQmFsYW5jZS0tOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBteUlubGluaW5n
Q29zdCA9IGlubGluaW5nQ29zdCgKKyAgICAgICAgY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVlKCks
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgIAor
ICAgIGlmIChteUlubGluaW5nQ29zdCA+IGlubGluaW5nQmFsYW5jZSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIAorICAgIGlubGluZUNhbGwoY2FsbFRhcmdldE5vZGUsIHJlc3VsdE9wZXJh
bmQsIGNhbGxMaW5rU3RhdHVzWzBdLmNhbGxlZSgpLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQsIGtpbmQsIGNhbGxlckxpbmthYmlsaXR5KTsK
KyAgICBpbmxpbmluZ0JhbGFuY2UgLT0gbXlJbmxpbmluZ0Nvc3Q7CisgICAgcmV0dXJuIHRydWU7
CisgICAgCit9CisKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUqIGNh
bGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNh
bGxMaW5rU3RhdHVzLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxs
RnJhbWU6OktpbmQga2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKK3sKKyAgICBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCA9IElubGluZUNhbGxGcmFtZTo6
c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOworICAgIAorICAgIGlmICghY2FsbExpbmtTdGF0
dXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgdW5zaWduZWQgaW5s
aW5pbmdCYWxhbmNlID0gT3B0aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRp
ZGF0ZUluc3RydWN0aW9uQ291bnQoKTsKKyAgICBpZiAoc3BlY2lhbGl6YXRpb25LaW5kID09IENv
ZGVGb3JDb25zdHJ1Y3QpCisgICAgICAgIGlubGluaW5nQmFsYW5jZSA9IHN0ZDo6bWluKGlubGlu
aW5nQmFsYW5jZSwgT3B0aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saW5lQ2Fu
ZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgpKTsKKyAgICBpZiAoY2FsbExpbmtTdGF0dXMuaXNDbG9z
dXJlQ2FsbCgpKQorICAgICAgICBpbmxpbmluZ0JhbGFuY2UgPSBzdGQ6Om1pbihpbmxpbmluZ0Jh
bGFuY2UsIE9wdGlvbnM6Om1heGltdW1GdW5jdGlvbkZvckNsb3N1cmVDYWxsSW5saW5lQ2FuZGlk
YXRlSW5zdHJ1Y3Rpb25Db3VudCgpKTsKKyAgICAKKyAgICAvLyBGaXJzdCBjaGVjayBpZiB3ZSBj
YW4gYXZvaWQgY3JlYXRpbmcgY29udHJvbCBmbG93LiBPdXIgaW5saW5lciBkb2VzIHNvbWUgQ0ZH
CisgICAgLy8gc2ltcGxpZmljYXRpb24gb24gdGhlIGZseSBhbmQgdGhpcyBoZWxwcyByZWR1Y2Ug
Y29tcGlsZSB0aW1lcywgYnV0IHdlIGNhbiBvbmx5IGxldmVyYWdlCisgICAgLy8gdGhpcyBpbiBj
YXNlcyB3aGVyZSB3ZSBkb24ndCBuZWVkIGNvbnRyb2wgZmxvdyBkaWFtb25kcyB0byBjaGVjayB0
aGUgY2FsbGVlLgorICAgIGlmICghY2FsbExpbmtTdGF0dXMuY291bGRUYWtlU2xvd1BhdGgoKSAm
JiBjYWxsTGlua1N0YXR1cy5zaXplKCkgPT0gMSkgeworICAgICAgICBpZiAoIWNhbGxMaW5rU3Rh
dHVzLmlzUHJvdmVkKCkpIHsKKyAgICAgICAgICAgIGVtaXRGdW5jdGlvbkNoZWNrcygKKyAgICAg
ICAgICAgICAgICBjYWxsTGlua1N0YXR1c1swXS5jYWxsZWUoKSwgY2FsbFRhcmdldE5vZGUsIHJl
Z2lzdGVyT2Zmc2V0LCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgICAgICB9CisgICAgICAgIGJv
b2wgcmVzdWx0ID0gYXR0ZW1wdFRvSW5saW5lQ2FsbCgKKyAgICAgICAgICAgIGNhbGxUYXJnZXRO
b2RlLCByZXN1bHRPcGVyYW5kLCBjYWxsTGlua1N0YXR1c1swXS5jYWxsZWUoKSwgcmVnaXN0ZXJP
ZmZzZXQsCisgICAgICAgICAgICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbmV4dE9mZnNl
dCwga2luZCwgQ2FsbGVyRG9lc05vcm1hbExpbmtpbmcsIHByZWRpY3Rpb24sCisgICAgICAgICAg
ICBpbmxpbmluZ0JhbGFuY2UpOworICAgICAgICBpZiAoIXJlc3VsdCAmJiAhY2FsbExpbmtTdGF0
dXMuaXNQcm92ZWQoKSkKKyAgICAgICAgICAgIHVuZG9GdW5jdGlvbkNoZWNrcyhjYWxsTGlua1N0
YXR1c1swXS5jYWxsZWUoKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAor
ICAgIC8vIFdlIG5lZWQgdG8gY3JlYXRlIHNvbWUga2luZCBvZiBzd2l0Y2ggb3ZlciBjYWxsZWUu
IEZvciBub3cgd2Ugb25seSBkbyB0aGlzIGlmIHdlIGJlbGlldmUgdGhhdAorICAgIC8vIHdlJ3Jl
IGluIHRoZSB0b3AgdGllci4KKyAgICBpZiAoIWlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpIHx8
ICFPcHRpb25zOjplbmFibGVQb2x5bW9ycGhpY0NhbGxJbmxpbmluZygpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgCisgICAgYm9vbCBhbGxBcmVDbG9zdXJlQ2FsbHMgPSB0cnVlOworICAg
IGJvb2wgYWxsQXJlRGlyZWN0Q2FsbHMgPSB0cnVlOworICAgIGZvciAodW5zaWduZWQgaSA9IGNh
bGxMaW5rU3RhdHVzLnNpemUoKTsgaS0tOykgeworICAgICAgICBpZiAoY2FsbExpbmtTdGF0dXNb
aV0uY2FsbGVlKCkuaXNDbG9zdXJlQ2FsbCgpKQorICAgICAgICAgICAgYWxsQXJlRGlyZWN0Q2Fs
bHMgPSBmYWxzZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYWxsQXJlQ2xvc3VyZUNhbGxz
ID0gZmFsc2U7CisgICAgfQorICAgIAorICAgIE5vZGUqIHRoaW5nVG9Td2l0Y2hPbjsKKyAgICBp
ZiAoYWxsQXJlRGlyZWN0Q2FsbHMpCisgICAgICAgIHRoaW5nVG9Td2l0Y2hPbiA9IGNhbGxUYXJn
ZXROb2RlOworICAgIGVsc2UgaWYgKGFsbEFyZUNsb3N1cmVDYWxscykKKyAgICAgICAgdGhpbmdU
b1N3aXRjaE9uID0gYWRkVG9HcmFwaChHZXRFeGVjdXRhYmxlLCB0aGluZ1RvU3dpdGNoT24pOwor
ICAgIGVsc2UgeworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gaGFuZGxl
IHRoaXMgY2FzZSwgYnV0IGl0J3MgdHJpY2t5IGFuZCB3ZSBkb24ndCBrbm93IG9mIGNhc2VzCisg
ICAgICAgIC8vIHdoZXJlIGl0IHdvdWxkIGJlIGJlbmVmaWNpYWwuIEFsc28sIENhbGxMaW5rU3Rh
dHVzIHdvdWxkIG1ha2UgYWxsIGNhbGxlZXMgYXBwZWFyIGxpa2UKKyAgICAgICAgLy8gY2xvc3Vy
ZSBjYWxscyBpZiBhbnkgY2FsbHMgd2VyZSBjbG9zdXJlIGNhbGxzIC0gZXhjZXB0IGZvciBjYWxs
cyB0byBpbnRlcm5hbCBmdW5jdGlvbnMuCisgICAgICAgIC8vIFNvIHRoaXMgd2lsbCBvbmx5IGFy
aXNlIGlmIHNvbWUgY2FsbGVlcyBhcmUgaW50ZXJuYWwgZnVuY3Rpb25zIGFuZCBvdGhlcnMgYXJl
IGNsb3N1cmVzLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTM2MDIwCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgLy8g
VGhpcyBtYWtlcyBtZSB3aXNoIHRoYXQgd2Ugd2VyZSBpbiBTU0EgYWxsIHRoZSB0aW1lLiBXZSBu
ZWVkIHRvIHBpY2sgYSB2YXJpYWJsZSBpbnRvIHdoaWNoIHRvCisgICAgLy8gc3RvcmUgdGhlIGNh
bGxlZSBzbyB0aGF0IGl0IHdpbGwgYmUgYWNjZXNzaWJsZSB0byBhbGwgb2YgdGhlIGJsb2NrcyB3
ZSdyZSBhYm91dCB0byBjcmVhdGUuIFdlCisgICAgLy8gZ2V0IGF3YXkgd2l0aCBkb2luZyBhbiBp
bW1lZGlhdGUtc2V0IGhlcmUgYmVjYXVzZSB3ZSB3b3VsZG4ndCBoYXZlIHBlcmZvcm1lZCBhbnkg
c2lkZSBlZmZlY3RzCisgICAgLy8geWV0LgorICAgIFZpcnR1YWxSZWdpc3RlciBjYWxsZWVSZWco
cmVnaXN0ZXJPZmZzZXQgKyBKU1N0YWNrOjpDYWxsZWUpOworICAgIHNldERpcmVjdChjYWxsZWVS
ZWcsIGNhbGxUYXJnZXROb2RlLCBJbW1lZGlhdGVTZXRXaXRoRmx1c2gpOworICAgIAorICAgIFN3
aXRjaERhdGEmIGRhdGEgPSAqbV9ncmFwaC5tX3N3aXRjaERhdGEuYWRkKCk7CisgICAgZGF0YS5r
aW5kID0gU3dpdGNoQ2VsbDsKKyAgICBhZGRUb0dyYXBoKFN3aXRjaCwgT3BJbmZvKCZkYXRhKSwg
dGhpbmdUb1N3aXRjaE9uKTsKKyAgICAKKyAgICBCYXNpY0Jsb2NrKiBvcmlnaW5CbG9jayA9IG1f
Y3VycmVudEJsb2NrOworICAgIG9yaWdpbkJsb2NrLT5kaWRMaW5rKCk7CisgICAgY2FuY2VsTGlu
a2luZ0ZvckJsb2NrKG1faW5saW5lU3RhY2tUb3AsIG9yaWdpbkJsb2NrKTsKKyAgICAKKyAgICAv
LyBFYWNoIGlubGluZWQgY2FsbGVlIHdpbGwgaGF2ZSBhIGxhbmRpbmcgYmxvY2sgdGhhdCBpdCBy
ZXR1cm5zIGF0LiBUaGV5IHNob3VsZCBhbGwgaGF2ZSBqdW1wcworICAgIC8vIHRvIHRoZSBjb250
aW51YXRpb24gYmxvY2ssIHdoaWNoIHdlIGNyZWF0ZSBsYXN0LgorICAgIFZlY3RvcjxCYXNpY0Js
b2NrKj4gbGFuZGluZ0Jsb2NrczsKKyAgICAKKyAgICAvLyBXZSBtYWtlIGZvcmNlIHRoaXMgdHJ1
ZSBpZiB3ZSBnaXZlIHVwIG9uIGlubGluaW5nIGFueSBvZiB0aGUgZWRnZXMuCisgICAgYm9vbCBj
b3VsZFRha2VTbG93UGF0aCA9IGNhbGxMaW5rU3RhdHVzLmNvdWxkVGFrZVNsb3dQYXRoKCk7Cisg
ICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxMaW5rU3RhdHVzLnNpemUoKTsg
KytpKSB7CisgICAgICAgIFJlZlB0cjxCYXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKG5ldyBC
YXNpY0Jsb2NrKFVJTlRfTUFYLCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIFBOYU4pKTsK
KyAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBibG9jay5nZXQoKTsKKyAgICAgICAgbV9ncmFwaC5h
cHBlbmQoYmxvY2spOworICAgICAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CisgICAgICAgIAor
ICAgICAgICBOb2RlKiBteUNhbGxUYXJnZXROb2RlID0gZ2V0RGlyZWN0KGNhbGxlZVJlZykKKyAg
ICAgICAgCisgICAgICAgIGJvb2wgaW5saW5pbmdSZXN1bHQgPSBhdHRlbXB0VG9JbmxpbmVDYWxs
KAorICAgICAgICAgICAgbXlDYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0T3BlcmFuZCwgY2FsbExpbmtT
dGF0dXNbaV0uY2FsbGVlKCksIHJlZ2lzdGVyT2Zmc2V0LAorICAgICAgICAgICAgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQsIGtpbmQsIENhbGxlckxpbmtzTWFudWFsbHks
IHByZWRpY3Rpb24sCisgICAgICAgICAgICBpbmxpbmluZ0JhbGFuY2UpOworICAgICAgICAKKyAg
ICAgICAgaWYgKCFpbmxpbmluZ1Jlc3VsdCkgeworICAgICAgICAgICAgLy8gVGhhdCBmYWlsZWQg
c28gd2UgbGV0IHRoZSBibG9jayBkaWUuIE5vdGhpbmcgaW50ZXJlc3Rpbmcgc2hvdWxkIGhhdmUg
YmVlbiBhZGRlZCB0bworICAgICAgICAgICAgLy8gdGhlIGJsb2NrLiBXZSBhbHNvIGdpdmUgdXAg
b24gaW5saW5pbmcgYW55IG9mIHRoZSAobGVzcyBmcmVxdWVudCkgY2FsbGVlcy4KKyAgICAgICAg
ICAgIEFTU0VSVChtX2N1cnJlbnRCbG9jayA9PSBibG9jay5nZXQoKSk7CisgICAgICAgICAgICBB
U1NFUlQobV9ncmFwaC5tX2Jsb2Nrcy5sYXN0KCkgPT0gYmxvY2spOworICAgICAgICAgICAgbV9n
cmFwaC5raWxsQmxvY2tBbmRJdHNDb250ZW50cyhibG9jay5nZXQoKSk7CisgICAgICAgICAgICBt
X2dyYXBoLm1fYmxvY2tzLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
Ly8gVGhlIGZhY3QgdGhhdCBpbmxpbmluZyBmYWlsZWQgbWVhbnMgd2UgbmVlZCBhIHNsb3cgcGF0
aC4KKyAgICAgICAgICAgIGNvdWxkVGFrZVNsb3dQYXRoID0gdHJ1ZTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBKU0NlbGwqIHRoaW5nVG9DYXNlT247
CisgICAgICAgIGlmIChhbGxBcmVEaXJlY3RDYWxscykKKyAgICAgICAgICAgIHRoaW5nVG9DYXNl
T24gPSBjYWxsTGlua1N0YXR1c1tpXS5jYWxsZWUoKS5ub25FeGVjdXRhYmxlQ2FsbGVlKCk7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKGFsbEFyZUNsb3N1cmVDYWxscyk7Cisg
ICAgICAgICAgICB0aGluZ1RvQ2FzZU9uID0gY2FsbExpbmtTdGF0dXNbaV0uY2FsbGVlKCkuZXhl
Y3V0YWJsZSgpOworICAgICAgICB9CisgICAgICAgIGRhdGEuY2FzZXMuYXBwZW5kKFN3aXRjaENh
c2UobV9ncmFwaC5mcmVlemUodGhpbmdUb0Nhc2VPbiksIGJsb2NrLmdldCgpKSk7CisgICAgICAg
IGFkZFRvR3JhcGgoSnVtcCk7CisgICAgICAgIG1fY3VycmVudEJsb2NrLT5kaWRMaW5rKCk7Cisg
ICAgICAgIGxhbmRpbmdCbG9ja3MuYXBwZW5kKG1fY3VycmVudEJsb2NrKTsKKyAgICB9CisgICAg
CisgICAgUmVmUHRyPEJhc2ljQmxvY2s+IHNsb3dQYXRoQmxvY2sgPSBhZG9wdFJlZigKKyAgICAg
ICAgbmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2Fscywg
UE5hTikpOworICAgIG1fZ3JhcGgubV9ibG9ja3MuYXBwZW5kKHNsb3dQYXRoQmxvY2spOworICAg
IHNsb3dQYXRoQmxvY2stPmRpZExpbmsoKTsKKyAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7Cisg
ICAgbV9jdXJyZW50QmxvY2sgPSBzbG93UGF0aEJsb2NrLmdldCgpOworICAgIGlmIChjb3VsZFRh
a2VTbG93UGF0aCkgeworICAgICAgICBOb2RlKiBteUNhbGxUYXJnZXROb2RlID0gZ2V0RGlyZWN0
KGNhbGxlZVJlZyk7CisgICAgICAgIGFkZENhbGwoCisgICAgICAgICAgICByZXN1bHRPcGVyYW5k
LCBjYWxsT3AsIG15Q2FsbFRhcmdldE5vZGUsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBy
ZWdpc3Rlck9mZnNldCwKKyAgICAgICAgICAgIHByZWRpY3Rpb24pOworICAgICAgICBhZGRUb0dy
YXBoKEp1bXApOworICAgICAgICBsYW5kaW5nQmxvY2tzLmFwcGVuZChtX2N1cnJlbnRCbG9jayk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgYWRkVG9HcmFwaChDaGVja0JhZENhbGwpOworICAgICAg
ICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAgICAgIGFkZFRvR3JhcGgoVW5yZWFjaGFibGUpOwor
ICAgIH0KKyAgICAKKyAgICBSZWZQdHI8QmFzaWNCbG9jaz4gY29udGludWF0aW9uQmxvY2sgPSBh
ZG9wdFJlZigKKyAgICAgICAgbmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIG1fbnVtQXJndW1lbnRz
LCBtX251bUxvY2FscywgUE5hTikpOworICAgIG1fZ3JhcGgubV9ibG9ja3MuYXBwZW5kKGNvbnRp
bnVhdGlvbkJsb2NrKTsKKyAgICBtX2lubGluZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmFw
cGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLmdldCgpKSk7CisgICAgcHJlcGFyZVRvUGFyc2VCbG9j
aygpOworICAgIG1fY3VycmVudEJsb2NrID0gY29udGludWF0aW9uQmxvY2suZ2V0KCk7CisgICAg
CisgICAgZm9yICh1bnNpZ25lZCBpID0gbGFuZGluZ0Jsb2Nrcy5zaXplKCk7IGktLTspCisgICAg
ICAgICpsYW5kaW5nQmxvY2tzW2ldLT5sYXN0KCktPnRhcmdldEJsb2NrKCkgPSBjb250aW51YXRp
b25CbG9jay5nZXQoKTsKICAgICAKLSAgICAvLyBBdCB0aGlzIHBvaW50IHdlIHJldHVybiBhbmQg
Y29udGludWUgdG8gZ2VuZXJhdGUgY29kZSBmb3IgdGhlIGNhbGxlciwgYnV0Ci0gICAgLy8gaW4g
dGhlIG5ldyBiYXNpYyBibG9jay4KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTY0NSw3ICsx
ODE3LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVHlwZWRBcnJheUNvbgogCiBib29s
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oCiAgICAgaW50
IHJlc3VsdE9wZXJhbmQsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgcmVnaXN0ZXJP
ZmZzZXQsCi0gICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWN0aW9uLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAgaW50IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAg
ICAgLy8gSWYgd2UgZXZlciBmaW5kIHRoYXQgd2UgaGF2ZSBhIGxvdCBvZiBpbnRlcm5hbCBmdW5j
dGlvbnMgdGhhdCB3ZSBzcGVjaWFsaXplIGZvciwKICAgICAvLyB0aGVuIHdlIHNob3VsZCBwcm9i
YWJseSBoYXZlIHNvbWUgc29ydCBvZiBoYXNodGFibGUgZGlzcGF0Y2gsIG9yIG1heWJlIGV2ZW4K
QEAgLTE2NTQsOCArMTgyNiw2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50
SW50ZXIKICAgICAvLyB3ZSBrbm93IGFib3V0IGlzIHNtYWxsIGVub3VnaCwgdGhhdCBoYXZpbmcg
anVzdCBhIGxpbmVhciBjYXNjYWRlIG9mIGlmIHN0YXRlbWVudHMKICAgICAvLyBpcyBnb29kIGVu
b3VnaC4KICAgICAKLSAgICBVTlVTRURfUEFSQU0ocHJlZGljdGlvbik7IC8vIFJlbW92ZSB0aGlz
IG9uY2Ugd2UgZG8gbW9yZSB0aGluZ3MuCi0gICAgCiAgICAgaWYgKGZ1bmN0aW9uLT5jbGFzc0lu
Zm8oKSA9PSBBcnJheUNvbnN0cnVjdG9yOjppbmZvKCkpIHsKICAgICAgICAgaWYgKGZ1bmN0aW9u
LT5nbG9iYWxPYmplY3QoKSAhPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjE1LDcgKzIzODUsNyBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAg
ICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJlZXplKGNhY2hlZEZ1bmN0aW9uKTsK
ICAgICAgICAgICAgICAgICBBU1NFUlQoY2FjaGVkRnVuY3Rpb24tPmluaGVyaXRzKEpTRnVuY3Rp
b246OmluZm8oKSkpOwogICAgICAgICAgICAgICAgIE5vZGUqIGFjdHVhbENhbGxlZSA9IGdldChW
aXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6Q2FsbGVlKSk7Ci0gICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChDaGVja0Z1bmN0aW9uLCBPcEluZm8oZnJvemVuKSwgYWN0dWFsQ2FsbGVlKTsKKyAgICAg
ICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKGZyb3plbiksIGFjdHVhbENh
bGxlZSk7CiAgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8oZnJvemVu
KSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2NhbGxl
ZSk7CkBAIC0yODk3LDcgKzMwNjcsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KHVuc2lnbmVkCiAgICAgICAgICAgICAvLyBhbHJlYWR5IGduYXJseSBlbm91Z2ggYXMgaXQgaXMu
CiAgICAgICAgICAgICBBU1NFUlQocG9pbnRlcklzRnVuY3Rpb24oY3VycmVudEluc3RydWN0aW9u
WzJdLnUuc3BlY2lhbFBvaW50ZXIpKTsKICAgICAgICAgICAgIGFkZFRvR3JhcGgoCi0gICAgICAg
ICAgICAgICAgQ2hlY2tGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICBDaGVja0NlbGwsCiAgICAg
ICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGguZnJlZXplKHN0YXRpY19jYXN0PEpTQ2VsbCo+KGFj
dHVhbFBvaW50ZXJGb3IoCiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1f
Y29kZUJsb2NrLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5zcGVjaWFsUG9pbnRlcikpKSksCiAg
ICAgICAgICAgICAgICAgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKSkpOwpAQCAtMzMyMiw5ICszNDkyLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
bGlua0Jsb2NrKEJhc2ljQmxvYwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgCi0jaWYgIUFT
U0VSVF9ESVNBQkxFRAotICAgIGJsb2NrLT5pc0xpbmtlZCA9IHRydWU7Ci0jZW5kaWYKKyAgICBi
bG9jay0+ZGlkTGluaygpOwogfQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2tzKFZl
Y3RvcjxVbmxpbmtlZEJsb2NrPiYgdW5saW5rZWRCbG9ja3MsIFZlY3RvcjxCYXNpY0Jsb2NrKj4m
IHBvc3NpYmxlVGFyZ2V0cykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BT
UmV0aHJlYWRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTAsOCArOTAsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAg
bm9kZS0+Y2hpbGRyZW4uc2V0Q2hpbGQxKEVkZ2UoKSk7CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKLSAgICAgICAgICAgICAgICAgICAg
aWYgKCFub2RlLT5jaGlsZDEoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5jaGls
ZDEoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVl
KG5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS0+b3Ao
KSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIFBoaToKICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBTZXRBcmd1bWVudDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDYgKzE0NCw3IEBAIHZvaWQg
Y2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIEZpYXRJbnQ1MjoK
ICAgICBjYXNlIE1ha2VSb3BlOgogICAgIGNhc2UgVmFsdWVUb0ludDMyOgorICAgIGNhc2UgR2V0
RXhlY3V0YWJsZToKICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICAgICAgCkBAIC0yMzksMTIgKzI0MCw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlLCBub2RlLT5hcml0
aE1vZGUoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIGNhc2UgQ2hlY2tGdW5j
dGlvbjoKLSAgICAgICAgZGVmKFB1cmVWYWx1ZShDaGVja0Z1bmN0aW9uLCBBZGphY2VuY3lMaXN0
KEFkamFjZW5jeUxpc3Q6OkZpeGVkLCBub2RlLT5jaGlsZDEoKSksIG5vZGUtPmZ1bmN0aW9uKCkp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToK
LSAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlLCBub2RlLT5leGVjdXRhYmxlKCkpKTsKKyAgICBj
YXNlIENoZWNrQ2VsbDoKKyAgICAgICAgZGVmKFB1cmVWYWx1ZShDaGVja0NlbGwsIEFkamFjZW5j
eUxpc3QoQWRqYWNlbmN5TGlzdDo6Rml4ZWQsIG5vZGUtPmNoaWxkMSgpKSwgbm9kZS0+ZnVuY3Rp
b24oKSkpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgQ29uc3RhbnRTdG9y
YWdlUG9pbnRlcjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODk4LDEzICs4OTgsMTMgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBDaGVj
a0V4ZWN1dGFibGU6IHsKKyAgICAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOiB7CiAgICAgICAgICAg
ICBmaXhFZGdlPEZ1bmN0aW9uVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6
Ci0gICAgICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAg
ICAgICAgIGNhc2UgQ2hlY2tIYXNJbnN0YW5jZToKICAgICAgICAgY2FzZSBDcmVhdGVUaGlzOgog
ICAgICAgICBjYXNlIEdldEJ1dHRlcmZseTogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3IEBAIEdyYXBo
OjpHcmFwaChWTSYgdm0sIFBsYW4mIHBsYW4sIExvbmdMaXYKICAgICAsIG1fZm9ybShMb2FkU3Rv
cmUpCiAgICAgLCBtX3VuaWZpY2F0aW9uU3RhdGUoTG9jYWxseVVuaWZpZWQpCiAgICAgLCBtX3Jl
ZkNvdW50U3RhdGUoRXZlcnl0aGluZ0lzTGl2ZSkKKyAgICAsIG1fc2hvdWxkUHJvZmlsZShmYWxz
ZSkKIHsKICAgICBBU1NFUlQobV9wcm9maWxlZEJsb2NrKTsKICAgICAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtNzYxLDYgKzc2MSw3
IEBAIHB1YmxpYzoKICAgICBHcmFwaEZvcm0gbV9mb3JtOwogICAgIFVuaWZpY2F0aW9uU3RhdGUg
bV91bmlmaWNhdGlvblN0YXRlOwogICAgIFJlZkNvdW50U3RhdGUgbV9yZWZDb3VudFN0YXRlOwor
ICAgIGJvb2wgbV9zaG91bGRQcm9maWxlOwogcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGhhbmRs
ZVN1Y2Nlc3NvcihWZWN0b3I8QmFzaWNCbG9jayosIDE2PiYgd29ya2xpc3QsIEJhc2ljQmxvY2sq
LCBCYXNpY0Jsb2NrKiBzdWNjZXNzb3IpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsNyArMTYwLDggQEAgc3RydWN0IFN3aXRjaENh
c2UgewogZW51bSBTd2l0Y2hLaW5kIHsKICAgICBTd2l0Y2hJbW0sCiAgICAgU3dpdGNoQ2hhciwK
LSAgICBTd2l0Y2hTdHJpbmcKKyAgICBTd2l0Y2hTdHJpbmcsCisgICAgU3dpdGNoQ2VsbAogfTsK
IAogc3RydWN0IFN3aXRjaERhdGEgewpAQCAtMTA0NCw5ICsxMDQ1LDExIEBAIHN0cnVjdCBOb2Rl
IHsKICAgICAgICAgbV9vcEluZm8yID0gcHJlZGljdGlvbjsKICAgICB9CiAgICAgCi0gICAgYm9v
bCBjYW5CZUtub3duRnVuY3Rpb24oKQorICAgIGJvb2wgaGFzQ2VsbE9wZXJhbmQoKQogICAgIHsK
ICAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVX
YXRjaHBvaW50OgorICAgICAgICBjYXNlIENoZWNrQ2VsbDoKICAgICAgICAgY2FzZSBOYXRpdmVD
b25zdHJ1Y3Q6CiAgICAgICAgIGNhc2UgTmF0aXZlQ2FsbDoKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtMTA1NSw1NCArMTA1OCwxNiBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBib29sIGhhc0tub3duRnVuY3Rpb24oKQorICAgIEZyb3plblZhbHVlKiBjZWxs
T3BlcmFuZCgpCiAgICAgewotICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKLSAgICAgICAgY2FzZSBO
YXRpdmVDb25zdHJ1Y3Q6Ci0gICAgICAgIGNhc2UgTmF0aXZlQ2FsbDoKLSAgICAgICAgICAgIHJl
dHVybiAoYm9vbCltX29wSW5mbzsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBKU0Z1bmN0aW9uKiBrbm93bkZ1
bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjYW5CZUtub3duRnVuY3Rpb24oKSk7Ci0g
ICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNGdW5jdGlvbio+KG1fb3BJbmZvKTsKLSAgICB9
Ci0KLSAgICB2b2lkIGdpdmVLbm93bkZ1bmN0aW9uKEpTRnVuY3Rpb24qIGNhbGxEYXRhKSAKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChjYW5CZUtub3duRnVuY3Rpb24oKSk7Ci0gICAgICAgIG1fb3BJ
bmZvID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oY2FsbERhdGEpOwotICAgIH0KLQotICAgIGJv
b2wgaGFzRnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgc3dpdGNoIChvcCgpKSB7Ci0gICAgICAg
IGNhc2UgQ2hlY2tGdW5jdGlvbjoKLSAgICAgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNo
cG9pbnQ6Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEZyb3plblZhbHVl
KiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBBU1NFUlQoaGFzRnVuY3Rpb24oKSk7CisgICAg
ICAgIEFTU0VSVChoYXNDZWxsT3BlcmFuZCgpKTsKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8RnJvemVuVmFsdWUqPihtX29wSW5mbyk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaGFz
RXhlY3V0YWJsZSgpCisgICAgdm9pZCBzZXRDZWxsT3BlcmFuZChGcm96ZW5WYWx1ZSogdmFsdWUp
CiAgICAgewotICAgICAgICByZXR1cm4gb3AoKSA9PSBDaGVja0V4ZWN1dGFibGU7Ci0gICAgfQot
ICAgIAotICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBqc0Nhc3Q8RXhlY3V0YWJsZUJhc2UqPihyZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KG1f
b3BJbmZvKSk7CisgICAgICAgIEFTU0VSVChoYXNDZWxsT3BlcmFuZCgpKTsKKyAgICAgICAgbV9v
cEluZm8gPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSk7CiAgICAgfQogICAgIAogICAg
IGJvb2wgaGFzVmFyaWFibGVXYXRjaHBvaW50U2V0KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDcgKzE1Myw3
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhQdXRCeUlkRmx1
c2gsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29y
bGQpIFwKICAgICBtYWNybyhQdXRCeUlkRGlyZWN0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNs
b2JiZXJzV29ybGQpIFwKICAgICBtYWNybyhDaGVja1N0cnVjdHVyZSwgTm9kZU11c3RHZW5lcmF0
ZSkgXAotICAgIG1hY3JvKENoZWNrRXhlY3V0YWJsZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAg
IG1hY3JvKEdldEV4ZWN1dGFibGUsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFB1dFN0cnVj
dHVyZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEFsbG9jYXRlUHJvcGVydHlTdG9y
YWdlLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdFN0b3JhZ2UpIFwKICAgICBtYWNybyhS
ZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdFN0
b3JhZ2UpIFwKQEAgLTE4Niw3ICsxODYsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAgICAgbWFjcm8oVmFyaWFibGVXYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAg
ICAgbWFjcm8oVmFySW5qZWN0aW9uV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKEZ1bmN0aW9uUmVlbnRyeVdhdGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKLSAg
ICBtYWNybyhDaGVja0Z1bmN0aW9uLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oQ2hl
Y2tDZWxsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oQ2hlY2tCYWRDZWxsLCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50LCBO
b2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tJbkJvdW5kcywgTm9kZU11c3RHZW5l
cmF0ZSkgXAogICAgIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRv
bUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcAkocmV2aXNpb24g
MTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tQ2Fub25pY2Fs
aXphdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsOCArOTIsMTAgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4ucmVtb3ZlRWRnZShpLS0p
OwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKQorICAgICAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvQ2hlY2soKTsKICAgICAgICAg
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21SZW1v
dmFsUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UGhhbnRvbVJlbW92YWxQaGFzZS5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyNSw2ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3Iu
ZnJlZShub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAg
LTE0Miw2ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2Vk
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFu
Z2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgICAgICAgICB9CkBAIC0xNDksOCArMTUxLDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNhc2UgSGFyZFBoYW50
b206IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjg5LDYgKzY4OSwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBu
b2RlCiAKICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG5vZGUtPm9yaWdpbi5zZW1hbnRp
Yyk7CiAgICAgCisgICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFk
ZENhbGxMaW5rSW5mbygpOworCisgICAgaWYgKG1faml0LmdyYXBoKCkubV9zaG91bGRQcm9maWxl
ICYmICFtX3N0YXRlLmZvck5vZGUoY2FsbGVlRWRnZSkubV92YWx1ZSkgeworICAgICAgICBtX2pp
dC52bSgpLmNhbGxFZGdlTG9nLT5lbWl0TG9nQ29kZSgKKyAgICAgICAgICAgIG1faml0LCBjYWxs
TGlua0luZm8tPmNhbGxFZGdlUHJvZmlsZSwgY2FsbGVlLmpzVmFsdWVSZWdzKCkpOworICAgIH0K
KyAgICAKICAgICBzbG93UGF0aC5hcHBlbmQoYnJhbmNoTm90Q2VsbChjYWxsZWUuanNWYWx1ZVJl
Z3MoKSkpOwogICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hQdHJXaXRoUGF0Y2goTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBjYWxsZWVQYXlsb2FkR1BSLCB0YXJnZXRUb0NoZWNrKSk7
CiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjYWxsZWVQYXlsb2Fk
R1BSLCBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9zY29wZSkpLCByZXN1bHRQYXlsb2Fk
R1BSKTsKQEAgLTcxMyw3ICs3MjAsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChO
b2RlKiBub2RlCiAgICAgICAgIG1faml0Lm1vdmUoY2FsbGVlUGF5bG9hZEdQUiwgR1BSSW5mbzo6
cmVnVDApOwogICAgICAgICBtX2ppdC5tb3ZlKGNhbGxlZVRhZ0dQUiwgR1BSSW5mbzo6cmVnVDEp
OwogICAgIH0KLSAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRk
Q2FsbExpbmtJbmZvKCk7CiAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihpbmZvKSwgR1BSSW5mbzo6cmVnVDIpOwogICAgIEpJVENvbXBpbGVyOjpDYWxsIHNsb3dD
YWxsID0gbV9qaXQubmVhckNhbGwoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02MjYsNyArNjI2LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1p
c2NTdHJpY3RFcQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQog
ewotCiAgICAgYm9vbCBpc0NhbGwgPSBub2RlLT5vcCgpID09IENhbGw7CiAgICAgaWYgKCFpc0Nh
bGwpCiAgICAgICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+b3AoKSA9
PSBDb25zdHJ1Y3QpOwpAQCAtNjcwLDYgKzY2OSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpl
bWl0Q2FsbChOb2RlKiBub2RlCiAKICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgCisgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8g
PSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7CisgICAgCisgICAgaWYgKG1f
aml0LmdyYXBoKCkubV9zaG91bGRQcm9maWxlICYmICFtX3N0YXRlLmZvck5vZGUoY2FsbGVlRWRn
ZSkubV92YWx1ZSkKKyAgICAgICAgbV9qaXQudm0oKS5jYWxsRWRnZUxvZy0+ZW1pdExvZ0NvZGUo
bV9qaXQsIGNhbGxMaW5rSW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBjYWxsZWVHUFIpOworCiAgICAg
c2xvd1BhdGggPSBtX2ppdC5icmFuY2hQdHJXaXRoUGF0Y2goTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCBjYWxsZWVHUFIsIHRhcmdldFRvQ2hlY2ssIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKDApKTsKIAogICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2Fs
bGVlR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9zY29wZSkpLCByZXN1bHRHUFIp
OwpAQCAtNjgyLDcgKzY4Niw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUq
IG5vZGUKICAgICBzbG93UGF0aC5saW5rKCZtX2ppdCk7CiAgICAgCiAgICAgbV9qaXQubW92ZShj
YWxsZWVHUFIsIEdQUkluZm86OnJlZ1QwKTsgLy8gQ2FsbGVlIG5lZWRzIHRvIGJlIGluIHJlZ1Qw
Ci0gICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRk
Q2FsbExpbmtJbmZvKCk7CiAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpyZWdUMik7IC8vIExpbmsgaW5mbyBuZWVkcyB0
byBiZSBpbiByZWdUMgogICAgIEpJVENvbXBpbGVyOjpDYWxsIHNsb3dDYWxsID0gbV9qaXQubmVh
ckNhbGwoKTsKICAgICAKQEAgLTM3ODQsMTggKzM3ODcsMjYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgobm9k
ZSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKLSAgICBjYXNlIENoZWNrRnVuY3Rpb246IHsK
LSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZEZ1bmN0aW9uLCBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChmdW5jdGlvbi5ncHIoKSksIG5vZGUtPmNoaWxkMSgpLCBtX2ppdC5icmFu
Y2hXZWFrUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgZnVuY3Rpb24uZ3ByKCksIG5vZGUtPmZ1
bmN0aW9uKCktPnZhbHVlKCkuYXNDZWxsKCkpKTsKKyAgICBjYXNlIENoZWNrQ2VsbDogeworICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBjZWxsKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRDZWxsLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2Vs
bChjZWxsLmdwcigpKSwgbm9kZS0+Y2hpbGQxKCksIG1faml0LmJyYW5jaFdlYWtQdHIoSklUQ29t
cGlsZXI6Ok5vdEVxdWFsLCBjZWxsLmdwcigpLCBub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgp
LmFzQ2VsbCgpKSk7CiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgICAgIAotICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOiB7CisgICAgY2FzZSBDaGVj
a0JhZENlbGw6IHsKKyAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oQmFkQ2Vs
bCwgSlNWYWx1ZVJlZ3MoKSwgMCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCisg
ICAgY2FzZSBHZXRFeGVjdXRhYmxlOiB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZ1
bmN0aW9uKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgc3BlY3VsYXRlQ2VsbFR5cGUo
bm9kZS0+Y2hpbGQxKCksIGZ1bmN0aW9uLmdwcigpLCBTcGVjRnVuY3Rpb24sIEpTRnVuY3Rpb25U
eXBlKTsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRFeGVjdXRhYmxlLCBKU1ZhbHVlU291
cmNlOjp1bmJveGVkQ2VsbChmdW5jdGlvbi5ncHIoKSksIG5vZGUtPmNoaWxkMSgpLCBtX2ppdC5i
cmFuY2hXZWFrUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3Mo
ZnVuY3Rpb24uZ3ByKCksIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwgbm9kZS0+
ZXhlY3V0YWJsZSgpKSk7Ci0gICAgICAgIG5vUmVzdWx0KG5vZGUpOworICAgICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBmdW5jdGlvbik7CisgICAgICAgIEdQUlJlZyBmdW5j
dGlvbkdQUiA9IGZ1bmN0aW9uLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVz
dWx0LmdwcigpOworICAgICAgICBzcGVjdWxhdGVDZWxsVHlwZShub2RlLT5jaGlsZDEoKSwgZnVu
Y3Rpb25HUFIsIFNwZWNGdW5jdGlvbiwgSlNGdW5jdGlvblR5cGUpOworICAgICAgICBtX2ppdC5s
b2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uR1BSLCBKU0Z1bmN0aW9uOjpvZmZz
ZXRPZkV4ZWN1dGFibGUoKSksIHJlc3VsdEdQUik7CisgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVj
dGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjEsNiArNjEsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghT3B0aW9uczo6ZW5hYmxlT1NSRW50
cnlUb0ZUTCgpKQogICAgICAgICAgICAgbGV2ZWwgPSBGVEw6OkNhbkNvbXBpbGU7CiAgICAgICAg
IAorICAgICAgICBtX2dyYXBoLm1fc2hvdWxkUHJvZmlsZSA9IHRydWU7CisgICAgICAgIAogICAg
ICAgICBJbnNlcnRpb25TZXQgaW5zZXJ0aW9uU2V0KG1fZ3JhcGgpOwogICAgICAgICBmb3IgKEJs
b2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTsp
IHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0lu
ZGV4KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
aAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsMjEgQEAgcHVibGljOgogI2Vu
ZGlmCiAgICAgfQogICAgIAorICAgIHZvaWQgbG9hZFZhbHVlKEFkZHJlc3MgYWRkcmVzcywgSlNW
YWx1ZVJlZ3MgcmVncykKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbG9hZDY0
KGFkZHJlc3MsIHJlZ3MuZ3ByKCkpOworI2Vsc2UKKyAgICAgICAgaWYgKGFkZHJlc3MuYmFzZSA9
PSByZWdzLnBheWxvYWRHUFIoKSkgeworICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9m
ZnNldChUYWdPZmZzZXQpLCByZWdzLnRhZ0dQUigpKTsKKyAgICAgICAgICAgIGxvYWQzMihhZGRy
ZXNzLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCksIHJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoUGF5bG9h
ZE9mZnNldCksIHJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNz
LndpdGhPZmZzZXQoVGFnT2Zmc2V0KSwgcmVncy50YWdHUFIoKSk7CisgICAgICAgIH0KKyNlbmRp
ZgorICAgIH0KKyAgICAKICAgICB2b2lkIG1vdmVUcnVzdGVkVmFsdWUoSlNWYWx1ZSB2YWx1ZSwg
SlNWYWx1ZVJlZ3MgcmVncykKICAgICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAkocmV2aXNpb24gMTcyMTc3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMTY2Niw2ICsxNjY2LDE1IEBAIHB1YmxpYzoKICAgICAgICAgbW92ZShhcmc0LCBHUFJJbmZv
Ojphcmd1bWVudEdQUjMpOwogICAgIH0KICNlbmRpZgorICAgIAorICAgIHZvaWQgc2V0dXBBcmd1
bWVudHMoSlNWYWx1ZVJlZ3MgYXJnMSkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAg
ICAgc2V0dXBBcmd1bWVudHMoYXJnMS5ncHIoKSk7CisjZWxzZQorICAgICAgICBzZXR1cEFyZ3Vt
ZW50cyhhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSk7CisjZW5kaWYKKyAgICB9CiAK
ICAgICB2b2lkIHNldHVwUmVzdWx0cyhHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QikKICAgICB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAkocmV2aXNpb24gMTcyMTc3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAg
LTYwLDYgKzYwLDggQEAgcHVibGljOgogICAgIEdQUlJlZyB0YWdHUFIoKSBjb25zdCB7IHJldHVy
biBJbnZhbGlkR1BSUmVnOyB9CiAgICAgR1BSUmVnIHBheWxvYWRHUFIoKSBjb25zdCB7IHJldHVy
biBtX2dwcjsgfQogICAgIAorICAgIGJvb2wgdXNlcyhHUFJSZWcgZ3ByKSBjb25zdCB7IHJldHVy
biBtX2dwciA9PSBncHI7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByOwogfTsK
QEAgLTE2OSw2ICsxNzEsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0YWdHUFIoKTsKICAg
ICB9CiAKKyAgICBib29sIHVzZXMoR1BSUmVnIGdwcikgY29uc3QgeyByZXR1cm4gbV90YWdHUFIg
PT0gZ3ByIHx8IG1fcGF5bG9hZEdQUiA9PSBncHI7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgaW50
OF90IG1fdGFnR1BSOwogICAgIGludDhfdCBtX3BheWxvYWRHUFI7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMwMCw2ICszMDAsMTMgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bj
b2RlSQogICAgIHN0b3JlMzIocmVnVDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpT
U3RhY2s6OkNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXls
b2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAgICAgc3RvcmUzMihyZWdU
MSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgSlNTdGFjazo6Q2FsbGVlICogc3RhdGlj
X2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFRhZ09mZnNldCAtIHNpemVvZihDYWxsZXJG
cmFtZUFuZFBDKSkpOwogCisgICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFk
ZENhbGxMaW5rSW5mbygpOworCisgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkgeworICAg
ICAgICBtX3ZtLT5jYWxsRWRnZUxvZy0+ZW1pdExvZ0NvZGUoCisgICAgICAgICAgICAqdGhpcywg
aW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApKTsKKyAgICB9
CisKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbF9ldmFsKSB7CiAgICAgICAgIGNvbXBpbGVD
YWxsRXZhbChpbnN0cnVjdGlvbik7CiAgICAgICAgIHJldHVybjsKQEAgLTMxMyw3ICszMjAsNiBA
QCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgYWRkU2xvd0Nh
c2Uoc2xvd0Nhc2UpOwogCiAgICAgQVNTRVJUKG1fY2FsbENvbXBpbGF0aW9uSW5mby5zaXplKCkg
PT0gY2FsbExpbmtJbmZvSW5kZXgpOwotICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1fY29kZUJs
b2NrLT5hZGRDYWxsTGlua0luZm8oKTsKICAgICBpbmZvLT5jYWxsVHlwZSA9IENhbGxMaW5rSW5m
bzo6Y2FsbFR5cGVGb3Iob3Bjb2RlSUQpOwogICAgIGluZm8tPmNvZGVPcmlnaW4gPSBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVPZmZzZXQpOwogICAgIGluZm8tPmNhbGxlZUdQUiA9IHJlZ1QwOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTIsNiArMjEyLDExIEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29k
ZUkKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSwgcmVnVDApOyAvLyByZWdUMCBo
b2xkcyBjYWxsZWUuCiAKICAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJl
Z2lzdGVyLCBKU1N0YWNrOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rl
cikpIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CisgICAgCisgICAgQ2FsbExpbmtJbmZv
KiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5mbygpOworCisgICAgaWYgKHNob3Vs
ZEVtaXRQcm9maWxpbmcoKSkKKyAgICAgICAgbV92bS0+Y2FsbEVkZ2VMb2ctPmVtaXRMb2dDb2Rl
KCp0aGlzLCBpbmZvLT5jYWxsRWRnZVByb2ZpbGUsIHJlZ1QwKTsKIAogICAgIGlmIChvcGNvZGVJ
RCA9PSBvcF9jYWxsX2V2YWwpIHsKICAgICAgICAgY29tcGlsZUNhbGxFdmFsKGluc3RydWN0aW9u
KTsKQEAgLTIyMyw3ICsyMjgsNiBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBv
cGNvZGVJCiAgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2UpOwogCiAgICAgQVNTRVJUKG1fY2FsbENv
bXBpbGF0aW9uSW5mby5zaXplKCkgPT0gY2FsbExpbmtJbmZvSW5kZXgpOwotICAgIENhbGxMaW5r
SW5mbyogaW5mbyA9IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsKICAgICBpbmZvLT5j
YWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3Iob3Bjb2RlSUQpOwogICAgIGluZm8t
PmNvZGVPcmlnaW4gPSBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpOwogICAgIGluZm8tPmNh
bGxlZUdQUiA9IHJlZ1QwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0lubGluZXMuaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAvLyBJ
biBmYWN0LCBpdCBjYW4gbWFrZSBhIGxvdCBvZiBzZW5zZTogb3V0c2lkZSBvZiBKU0MsIHRoaXMg
ZmlsZSBiZWNvbWVzIGEga2luZCBvZiB1bWJyZWxsYQogLy8gaGVhZGVyIHRoYXQgcHVsbHMgaW4g
bW9zdCAoYWxsPykgb2YgdGhlIGludGVyZXN0aW5nIHRoaW5ncyBpbiBKU0MuCiAKKyNpbmNsdWRl
ICJDYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lSW5saW5lcy5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJHQ0luY29taW5nUmVm
Q291bnRlZElubGluZXMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2
aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29y
a2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzOwogICAgIGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxl
czsKKyAgICBjbGFzcyBDYWxsRWRnZUxvZzsKICAgICBjbGFzcyBDb2RlQmxvY2s7CiAgICAgY2xh
c3MgQ29kZUNhY2hlOwogICAgIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwpAQCAtMjMyLDYgKzIz
Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBPd25Q
dHI8REZHOjpMb25nTGl2ZWRTdGF0ZT4gZGZnU3RhdGU7CiAjZW5kaWYgLy8gRU5BQkxFKERGR19K
SVQpCisgICAgICAgIAorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbEVkZ2VMb2c+IGNhbGxF
ZGdlTG9nOwogCiAgICAgICAgIFZNVHlwZSB2bVR5cGU7CiAgICAgICAgIENsaWVudERhdGEqIGNs
aWVudERhdGE7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL25ldy1h
cnJheS10aGVuLWV4aXQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9uZXctYXJyYXktdGhlbi1leGl0LmpzCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9uZXctYXJyYXktdGhlbi1leGl0LmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKK2Z1bmN0aW9uIGZvbyhmKSB7CisgICAgcmV0dXJu
IG5ldyBmKCk7Cit9CisKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAw
MDA7ICsraSkKKyAgICBmb28oQXJyYXkpOworCit2YXIgZGlkQ2FsbCA9IGZhbHNlOworZm9vKGZ1
bmN0aW9uKCkgeyBkaWRDYWxsID0gdHJ1ZTsgfSk7CisKK2lmICghZGlkQ2FsbCkKKyAgICB0aHJv
dyAiRXJyb3I6IGRpZG4ndCBjYWxsIG15IGZ1bmN0aW9uLiI7CkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9Pd25QdHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Pd25QdHIuaAkocmV2aXNp
b24gMTcyMTc3KQorKysgU291cmNlL1dURi93dGYvT3duUHRyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTcyLDYgKzcyLDE0IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVPiBPd25QdHImIG9wZXJhdG9yPShPd25QdHI8VT4mJik7CiAKICAgICAgICAgdm9pZCBzd2Fw
KE93blB0ciYgbykgeyBzdGQ6OnN3YXAobV9wdHIsIG8ubV9wdHIpOyB9CisgICAgICAgIAorICAg
ICAgICAvLyBDb25zdHJ1Y3QgYW4gb2JqZWN0IHRvIHN0b3JlIGludG8gdGhpcyBPd25QdHIsIGJ1
dCBvbmx5IHNvIGxvbmcgYXMgdGhpcyBPd25QdHIKKyAgICAgICAgLy8gZG9lc24ndCBhbHJlYWR5
IHBvaW50IHRvIGFuIG9iamVjdC4gVGhpcyB3aWxsIGVuc3VyZSB0aGF0IGFmdGVyIHlvdSBjYWxs
IHRoaXMsCisgICAgICAgIC8vIHRoZSBPd25QdHIgd2lsbCBwb2ludCB0byBhbiBpbnN0YW5jZSBv
ZiBULiBUaGlzIGluc3RhbmNlIG1heSBvciBtYXkgbm90IGhhdmUgYmVlbgorICAgICAgICAvLyBj
cmVhdGVkIGJ5IHRoaXMgY2FsbC4gTW9yZW92ZXIsIHRoaXMgY2FsbCB1c2VzIGFuIG9wcG9ydHVu
aXN0aWMgdHJhbnNhY3Rpb24sIGluCisgICAgICAgIC8vIHRoYXQgd2UgbWF5IGNyZWF0ZSBhbiBp
bnN0YW5jZSBvZiBUIGFuZCB0aGVuIGltbWVkaWF0ZWx5IHRocm93IGl0IGF3YXkuCisgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgICAgIHZvaWQgY3JlYXRlVHJhbnNhY3Rp
b25hbGx5KEFyZ3MuLi4gYXJncyk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBleHBsaWNpdCBP
d25QdHIoUHRyVHlwZSBwdHIpIDogbV9wdHIocHRyKSB7IH0KQEAgLTE4Niw2ICsxOTQsMjggQEAg
bmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJldHVybiBwLmdldCgpOwogICAgIH0KIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IGlubGluZSBPd25Q
dHI8VD46OmNyZWF0ZVRyYW5zYWN0aW9uYWxseShBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAg
ICBpZiAobV9wdHIpIHsKKyAgICAgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBUKiBuZXdPYmplY3Qg
PSBuZXcgVChhcmdzLi4uKTsKKyAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKKyNpZiBF
TkFCTEUoQ09NUEFSRV9BTkRfU1dBUCkKKyAgICAgICAgZG8geworICAgICAgICAgICAgaWYgKG1f
cHRyKSB7CisgICAgICAgICAgICAgICAgZGVsZXRlIG5ld09iamVjdDsKKyAgICAgICAgICAgICAg
ICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisgICAgICAgIH0gd2hpbGUgKCFXVEY6OndlYWtDb21wYXJlQW5kU3dhcCgmbV9wdHIs
IG51bGxwdHIsIG5ld09iamVjdCkpOworI2Vsc2UKKyAgICAgICAgbV9wdHIgPSBuZXdPYmplY3Q7
CisjZW5kaWYKKyAgICB9CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6Ok93blB0
cjsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvU3BlY3RydW0uaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL1dURi93dGYv
U3BlY3RydW0uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMjIgKzMyLDMxIEBACiAKIG5hbWVzcGFjZSBX
VEYgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgQ291bnRlclR5cGUgPSB1bnNpZ25lZD4KIGNsYXNzIFNwZWN0cnVtIHsKIHB1YmxpYzoKLSAg
ICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz46Oml0ZXJhdG9yIGl0
ZXJhdG9yOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCB1bnNpZ25lZCBsb25nPjo6
Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNo
TWFwPFQsIENvdW50ZXJUeXBlPjo6aXRlcmF0b3IgaXRlcmF0b3I7CisgICAgdHlwZWRlZiB0eXBl
bmFtZSBIYXNoTWFwPFQsIENPdW50ZXJUeXBlPjo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0
b3I7CiAgICAgCiAgICAgU3BlY3RydW0oKSB7IH0KICAgICAKLSAgICB2b2lkIGFkZChjb25zdCBU
JiBrZXksIHVuc2lnbmVkIGxvbmcgY291bnQgPSAxKQorICAgIHZvaWQgYWRkKGNvbnN0IFQmIGtl
eSwgQ291bnRlclR5cGUgY291bnQgPSAxKQogICAgIHsKLSAgICAgICAgdHlwZW5hbWUgSGFzaE1h
cDxULCB1bnNpZ25lZCBsb25nPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGNv
dW50KTsKKyAgICAgICAgaWYgKCFjb3VudCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
dHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46OkFkZFJlc3VsdCByZXN1bHQgPSBtX21h
cC5hZGQoa2V5LCBjb3VudCk7CiAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAg
ICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlICs9IGNvdW50OwogICAgIH0KICAgICAKLSAg
ICB1bnNpZ25lZCBsb25nIGdldChjb25zdCBUJiBrZXkpIGNvbnN0CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVT4KKyAgICB2b2lkIGFkZEFsbChjb25zdCBTcGVjdHJ1bTxULCBVPiYgb3RoZXJTcGVj
dHJ1bSkKKyAgICB7CisgICAgICAgIGZvciAoYXV0byBlbnRyeSA6IG90aGVyU3BlY3RydW0pCisg
ICAgICAgICAgICBhZGQoZW50cnkua2V5LCBlbnRyeS5jb3VudCk7CisgICAgfQorICAgIAorICAg
IENvdW50ZXJUeXBlIGdldChjb25zdCBUJiBrZXkpIGNvbnN0CiAgICAgewogICAgICAgICBjb25z
dF9pdGVyYXRvciBpdGVyID0gbV9tYXAuZmluZChrZXkpOwogICAgICAgICBpZiAoaXRlciA9PSBt
X21hcC5lbmQoKSkKQEAgLTYzLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBLZXlBbmRD
b3VudCB7CiAgICAgICAgIEtleUFuZENvdW50KCkgeyB9CiAgICAgICAgIAotICAgICAgICBLZXlB
bmRDb3VudChjb25zdCBUJiBrZXksIHVuc2lnbmVkIGxvbmcgY291bnQpCisgICAgICAgIEtleUFu
ZENvdW50KGNvbnN0IFQmIGtleSwgQ291bnRlclR5cGUgY291bnQpCiAgICAgICAgICAgICA6IGtl
eShrZXkpCiAgICAgICAgICAgICAsIGNvdW50KGNvdW50KQogICAgICAgICB7CkBAIC04MCw3ICs4
OSw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIFQga2V5OwotICAgICAgICB1bnNp
Z25lZCBsb25nIGNvdW50OworICAgICAgICBDb3VudGVyVHlwZSBjb3VudDsKICAgICB9OwogICAg
IAogICAgIC8vIFJldHVybnMgYSBsaXN0IG9yZGVyZWQgZnJvbSBsb3dlc3QtY291bnQgdG8gaGln
aGVzdC1jb3VudC4KQEAgLTk0LDggKzEwMywxOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBs
aXN0OwogICAgIH0KICAgICAKKyAgICB2b2lkIGNsZWFyKCkgeyBtX21hcC5jbGVhcigpOyB9Cisg
ICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICB2b2lkIHJlbW92ZUlmKGNv
bnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgeworICAgICAgICBtX21hcC5yZW1vdmVJZihbZnVu
Y3Rvcl0gKEhhc2hNYXA8VCwgQ291bnRlclR5cGU+OjpLZXlWYWx1ZVBhaXJUeXBlJiBwYWlyKSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0b3IoS2V5QW5kQ291bnQocGFpci5rZXksIHBh
aXIudmFsdWUpKTsKKyAgICAgICAgICAgIH0pOworICAgIH0KKyAgICAKIHByaXZhdGU6Ci0gICAg
SGFzaE1hcDxULCB1bnNpZ25lZCBsb25nPiBtX21hcDsKKyAgICBIYXNoTWFwPFQsIENvdW50ZXJU
eXBlPiBtX21hcDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdURgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236730</attachid>
            <date>2014-08-17 11:30:46 -0700</date>
            <delta_ts>2014-08-17 17:11:03 -0700</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>132681</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzIxNzcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjY1LDYgKzI2NSwxMyBAQAogCQkwRjNCM0EyODE1NDRD
OTk3MDAzRUQwRkYgLyogREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjNBMjUxNTQ0Qzk5MTAwM0VEMEZG
IC8qIERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjNCM0EyQjE1NDc1MDAwMDAzRUQwRkYgLyogREZH
VmFsaWRhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYzQjNBMjkxNTQ3NEZGNDAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmNwcCAqLzsgfTsKIAkJ
MEYzQjNBMkMxNTQ3NTAwMjAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCM0EyQTE1NDc0RkY0MDAzRUQwRkYg
LyogREZHVmFsaWRhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRjNCN0UyNjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTIwMTlBMTFCODAw
MEQ5QkM1NiAvKiBDYWxsRWRnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGM0I3RTI3MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2Zp
bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
QjdFMjExOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAgKi87IH07CisJCTBG
M0I3RTI4MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTIyMTlBMTFCODAwMEQ5QkM1
NiAvKiBDYWxsRWRnZVByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRjNCN0UyOTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9m
aWxlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYzQjdFMjMxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZUlubGluZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjNCN0Uy
QTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMjQxOUExMUI4MDAwRDlCQzU2IC8qIENh
bGxWYXJpYW50LmNwcCAqLzsgfTsKKwkJMEYzQjdFMkIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxW
YXJpYW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjNCN0UyNTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjNCN0UyRDE5QTEyQUFFMDBEOUJD
NTYgLyogQ2FsbEVkZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYzQjdFMkMxOUExMkFBRTAwRDlCQzU2IC8qIENhbGxFZGdlLmNwcCAqLzsgfTsK
IAkJMEYzRDBCQkMxOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRDBCQkEx
OTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suY3BwICovOyB9OwogCQkw
RjNEMEJCRDE5NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRDBCQkIxOTRBNDE0
MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQyNkE0ODE0NjBDQkIzMDAxMzFGOEYg
LyogVmFsdWVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0MjZBNDUxNDYwQ0JBQjAwMTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODI3LDggKzgz
NCw4IEBACiAJCTFDQUE5QTIzMThGNEEyMjAwMDBBMzY5RCAvKiBKU0dsb2JhbE9iamVjdFByb2Zp
bGVyQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDQUE5QTIxMThGNEEyMjAwMDBBMzY5RCAvKiBKU0dsb2JhbE9iamVjdFByb2ZpbGVyQWdlbnQu
aCAqLzsgfTsKIAkJMjYwMEI1QTYxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2MDBCNUE0
MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5jcHAgKi87IH07CiAJCTI2MDBCNUE3
MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjYwMEI1QTUxNTJCQUFBNzAwOTFFRTVGIC8qIEpT
U3RyaW5nSm9pbmVyLmggKi87IH07Ci0gCQkyQTA1QUJENTE5NjFERjI0MDAzNDE3NTAgLyogSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJBMDVBQkQzMTk2MURGMjQwMDM0MTc1MCAvKiBKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IuY3BwICovOyB9OwotIAkJMkEwNUFCRDYxOTYxREYyNDAwMzQxNzUwIC8qIEpT
UHJvcGVydHlOYW1lRW51bWVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkEwNUFCRDQxOTYxREYyNDAwMzQxNzUwIC8qIEpTUHJvcGVydHlOYW1l
RW51bWVyYXRvci5oICovOyB9OworCQkyQTA1QUJENTE5NjFERjI0MDAzNDE3NTAgLyogSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJBMDVBQkQzMTk2MURGMjQwMDM0MTc1MCAvKiBKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3IuY3BwICovOyB9OworCQkyQTA1QUJENjE5NjFERjI0MDAzNDE3NTAgLyogSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyQTA1QUJENDE5NjFERjI0MDAzNDE3NTAgLyogSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yLmggKi87IH07CiAJCTJBMTExMjQ1MTkyRkNFNzkwMDVFRTE4RCAvKiBDdXN0b21HZXR0
ZXJTZXR0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkExMTEyNDMxOTJGQ0U3OTAwNUVFMThEIC8qIEN1c3RvbUdldHRlclNldHRlci5jcHAgKi87
IH07CiAJCTJBMTExMjQ2MTkyRkNFNzkwMDVFRTE4RCAvKiBDdXN0b21HZXR0ZXJTZXR0ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBMTExMjQ0MTky
RkNFNzkwMDVFRTE4RCAvKiBDdXN0b21HZXR0ZXJTZXR0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyQTI4MjVEMDE4MzQxRjJEMDA4N0ZCQTkg
LyogRGVsYXllZFJlbGVhc2VTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkEyODI1Q0YxODM0MUYyRDAwODdGQkE5IC8qIERlbGF5ZWRSZWxlYXNl
U2NvcGUuaCAqLzsgfTsKQEAgLTg2MywxMCArODcwLDEwIEBACiAJCTQxMzU5Q0YzMEZERDg5QUQw
MDIwNjE4MCAvKiBEYXRlQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRDIxMjAyMjkwQUQ0MzEwQzAwRUQ3OUI2IC8qIERhdGVDb252ZXJz
aW9uLmggKi87IH07CiAJCTQ0NDNBRTMzMTZFMTg4RDkwMDc2RjExMCAvKiBGb3VuZGF0aW9uLmZy
YW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxRjBFQjYxMDVDODZDNkIwMEU2REYxQiAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayAqLzsgfTsK
IAkJNDUxNTM5QjkxMkRDOTk0NTAwRUY3QUM0IC8qIFlhcnIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1MTUzOUI4MTJEQzk5NDUwMEVGN0FDNCAvKiBZ
YXJyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLSAJ
CTUyQjMxMEZCMTk3NEFFNjEwMDgwODU3QyAvKiBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQjMxMEZBMTk3
NEFFNjEwMDgwODU3QyAvKiBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotIAkJNTJCMzEwRkQxOTc0QUU4NzAw
ODA4NTdDIC8qIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIzMTBGQzE5NzRBRTg3MDA4MDg1N0MgLyog
RnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcCAqLzsgfTsKLSAJCTUyQjMxMEZGMTk3NUI0MjQw
MDgwODU3QyAvKiBUeXBlTG9jYXRpb25DYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIzMTBGRTE5NzVCNDI0MDA4MDg1N0MgLyogVHlwZUxv
Y2F0aW9uQ2FjaGUuY3BwICovOyB9OwotIAkJNTJCMzExMDExOTc1QjQ2NzAwODA4NTdDIC8qIFR5
cGVMb2NhdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MkIzMTEwMDE5NzVCNDY3MDA4MDg1N0MgLyogVHlwZUxvY2F0aW9uQ2FjaGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MkIzMTBG
QjE5NzRBRTYxMDA4MDg1N0MgLyogRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIzMTBGQTE5NzRBRTYxMDA4
MDg1N0MgLyogRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTJCMzEwRkQxOTc0QUU4NzAwODA4NTdDIC8q
IEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIzMTBGQzE5NzRBRTg3MDA4MDg1N0MgLyogRnVuY3Rpb25I
YXNFeGVjdXRlZENhY2hlLmNwcCAqLzsgfTsKKwkJNTJCMzEwRkYxOTc1QjQyNDAwODA4NTdDIC8q
IFR5cGVMb2NhdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUyQjMxMEZFMTk3NUI0MjQwMDgwODU3QyAvKiBUeXBlTG9jYXRpb25DYWNo
ZS5jcHAgKi87IH07CisJCTUyQjMxMTAxMTk3NUI0NjcwMDgwODU3QyAvKiBUeXBlTG9jYXRpb25D
YWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJC
MzExMDAxOTc1QjQ2NzAwODA4NTdDIC8qIFR5cGVMb2NhdGlvbkNhY2hlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTUxMDUwMjYxOEVCODI3NTAw
MDAxRjNFIC8qIEpTQ2FsbGJhY2tGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0MEY4OEYwQTUwOEIxMDAwMDVGMDYxIC8qIEpTQ2FsbGJh
Y2tGdW5jdGlvbi5oICovOyB9OwogCQk1NTJFQTcwQzE5MDg3MDQ4MDBBNjZGMkYgLyogSlNEYXRh
Vmlld1Byb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjJCNjZCRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmlld1Byb3RvdHlwZS5j
cHAgKi87IH07CiAJCTU1NDA3NTcyMThEQTU4QUQwMEVGRjdGMiAvKiBBcmdMaXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Y2MDUxMjBFMjAzRUY4
MDBCOUE2NEQgLyogQXJnTGlzdC5oICovOyB9OwpAQCAtMjQzMiwxMyArMjQzOSw3IEBACiAJCTBG
MkQ0REU0MTk4MzJEOTEwMDdENEIxOSAvKiBUeXBlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVT
ZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDRERTUxOTgzMkRBQzAwN0Q0
QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBUb1RoaXNTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJE
NERFNjE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFRvVGhpc1N0YXR1cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotIAkJMEY3QjM2NUYxOTdDNTI1QzAwRUQxRERDIC8qIERGR1BoYW50b21DYW5vbmljYWxpemF0
aW9uUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHUGhh
bnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHUGhhbnRvbUNhbm9u
aWNhbGl6YXRpb25QaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0gCQkwRjdC
MzY2MDE5N0M1MjVDMDBFRDFEREMgLyogREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQaGFudG9tQ2Fub25pY2FsaXph
dGlvblBoYXNlLmg7IHBhdGggPSBkZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJENERFNzE5ODMyREFDMDA3RDRCMTkg
LyogVHlwZUxvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVM
b2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotIAkJNTJCMzEwRkExOTc0QUU2
MTAwODA4NTdDIC8qIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
dW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLSAJ
CTUyQjMxMEZDMTk3NEFFODcwMDgwODU3QyAvKiBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLSAJCTUyQjMxMEZFMTk3NUI0MjQwMDgwODU3QyAvKiBUeXBl
TG9jYXRpb25DYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUeXBlTG9jYXRpb25DYWNoZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0gCQk1MkIzMTEwMDE5NzVCNDY3MDA4MDg1
N0MgLyogVHlwZUxvY2F0aW9uQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZUxvY2F0aW9uQ2Fj
aGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRkM3NzAxNkUxMkY2RjAwMzhE
OTc2IC8qIERGR0RDRVBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERGR0RDRVBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdEQ0VQaGFzZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkZDNzcxMTZFMTJGNkYwMDM4RDk3NiAvKiBERkdEQ0VQ
aGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdEQ0VQaGFzZS5oOyBw
YXRoID0gZGZnL0RGR0RDRVBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
MkZDQ0YyMThBNjAwNzAwMDFBMjdGOCAvKiBERkdHcmFwaFNhZmVwb2ludC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdHcmFwaFNhZmVwb2ludC5jcHA7IHBhdGgg
PSBkZmcvREZHR3JhcGhTYWZlcG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjQ2OCw2ICsyNDY5LDEzIEBACiAJCTBGM0IzQTI1MTU0NEM5OTEwMDNFRDBGRiAvKiBERkdD
RkdTaW1wbGlmaWNhdGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdDRkdTaW1wbGlmaWNh
dGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0IzQTI5MTU0NzRG
RjQwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBERkdWYWxpZGF0ZS5jcHA7IHBhdGggPSBkZmcvREZHVmFsaWRhdGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNCM0EyQTE1NDc0RkY0MDAzRUQwRkYgLyog
REZHVmFsaWRhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVmFsaWRh
dGUuaDsgcGF0aCA9IGRmZy9ERkdWYWxpZGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjNCN0UyMDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbEVkZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEYzQjdFMjExOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsRWRnZVByb2ZpbGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyMjE5QTExQjgwMDBEOUJDNTYgLyog
Q2FsbEVkZ2VQcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxF
ZGdlUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyMzE5QTEx
QjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGM0I3RTI0MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsVmFyaWFudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGM0I3RTI1MTlBMTFCODAwMEQ5QkM1NiAv
KiBDYWxsVmFyaWFudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsVmFy
aWFudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyQzE5QTEyQUFFMDBE
OUJDNTYgLyogQ2FsbEVkZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ2FsbEVkZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNEMEJCQTE5
NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb25zdGFudFN0cnVjdHVyZUNoZWNrLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzRDBCQkIxOTRBNDE0MzAwRkM5Q0Y5IC8qIENv
bnN0YW50U3RydWN0dXJlQ2hlY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yNTc1LDYgKzI1ODMsOCBAQAogCQkwRjc2NkQzNzE1QUU0QTFBMDA4RjM2M0Ug
LyogU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzcwMDhFMTQwMkZERDYwMDc4RUIzOSAvKiBTYW1wbGlu
Z0NvdW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2FtcGxpbmdDb3Vu
dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzcwMDkxMTQwMkZGMjgwMDc4
RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2FtcGxpbmdDb3VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY3QjM2NUYxOTdDNTI1QzAwRUQxRERDIC8qIERGR1BoYW50b21DYW5vbmljYWxpemF0aW9u
UGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHUGhhbnRv
bUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHUGhhbnRvbUNhbm9uaWNh
bGl6YXRpb25QaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0IzNjYw
MTk3QzUyNUMwMEVEMUREQyAvKiBERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1BoYW50b21DYW5vbmljYWxpemF0aW9u
UGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBC
eVZhbEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnlWYWxJbmZvLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAv
KiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJv
ZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Q
cm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTk0LDggKzMwMDQsOCBA
QAogCQkxQ0FBOUEyMTE4RjRBMjIwMDAwQTM2OUQgLyogSlNHbG9iYWxPYmplY3RQcm9maWxlckFn
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0UHJv
ZmlsZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNjAwQjVBNDE1MkJB
QUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNTdHJpbmdKb2luZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyNjAwQjVBNTE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdKb2luZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLSAJCTJBMDVBQkQzMTk2MURGMjQwMDM0MTc1MCAvKiBKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLSAJCTJBMDVBQkQ0MTk2MURGMjQwMDM0MTc1MCAvKiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBMDVBQkQzMTk2MURGMjQw
MDM0MTc1MCAvKiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkEwNUFCRDQxOTYxREYyNDAwMzQxNzUwIC8qIEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkExMTEyNDMxOTJGQ0U3OTAwNUVFMThEIC8qIEN1c3RvbUdldHRlclNldHRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdXN0b21HZXR0ZXJTZXR0ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQTExMTI0NDE5MkZDRTc5MDA1RUUxOEQgLyog
Q3VzdG9tR2V0dGVyU2V0dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN1
c3RvbUdldHRlclNldHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQTI4MjVD
RjE4MzQxRjJEMDA4N0ZCQTkgLyogRGVsYXllZFJlbGVhc2VTY29wZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEZWxheWVkUmVsZWFzZVNjb3BlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0zMDMzLDYgKzMwNDMsMTAgQEAKIAkJNDVFMTJEODgwNkE0OUIwRjAw
RTlERjg0IC8qIGpzYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBqc2MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0
aCA9IDQ7IH07CiAJCTUxRjBFQjYxMDVDODZDNkIwMEU2REYxQiAvKiBGb3VuZGF0aW9uLmZyYW1l
d29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdy
YXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gRm91bmRhdGlvbi5mcmFtZXdvcms7IHBhdGggPSAvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yazsgc291cmNlVHJlZSA9
ICI8YWJzb2x1dGU+IjsgfTsKIAkJNTFGMEVDMDcwNUM4NkM5QTAwRTZERjFCIC8qIGxpYm9iamMu
ZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAi
Y29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYm9iamMuZHlsaWI7IHBhdGggPSAvdXNy
L2xpYi9saWJvYmpjLmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OworCQk1MkIz
MTBGQTE5NzRBRTYxMDA4MDg1N0MgLyogRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MkIzMTBGQzE5NzRBRTg3MDA4MDg1N0MgLyogRnVuY3Rpb25IYXNFeGVjdXRl
ZENhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyQjMxMEZFMTk3NUI0MjQwMDgwODU3
QyAvKiBUeXBlTG9jYXRpb25DYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUeXBlTG9jYXRp
b25DYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyQjMxMTAwMTk3NUI0
NjcwMDgwODU3QyAvKiBUeXBlTG9jYXRpb25DYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlTG9j
YXRpb25DYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTQwNzU4NDE4RjRB
Mzc1MDA2MDJBNUQgLyogQ29tcGlsZVJ1bnRpbWVUb0xMVk1JUi54Y2NvbmZpZyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQueGNjb25maWc7IHBhdGggPSBDb21waWxlUnVudGltZVRvTExWTUlSLnhjY29uZmlnOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTQwN0FDODE4REE1OEFEMDBFRkY3RjIgLyog
bGliQ29tcGlsZVJ1bnRpbWVUb0xMVk1JUi5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGgg
PSBsaWJDb21waWxlUnVudGltZVRvTExWTUlSLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCTVENTM3MjZEMEUxQzU0NkIwMDIxRTU0OSAvKiBUcmFjaW5nLmQgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gVHJhY2luZy5kOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNDk4Nyw4ICs1MDAxLDggQEAKIAkJCQkwRjJCNjZEQjE3QjZCNUFCMDBBN0FFM0YgLyogVHlw
ZWRBcnJheXMuaCAqLywKIAkJCQkwRjJCNjZEQzE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJh
eVR5cGUuY3BwICovLAogCQkJCTBGMkI2NkREMTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5
VHlwZS5oICovLAotIAkJCQk1MkIzMTEwMDE5NzVCNDY3MDA4MDg1N0MgLyogVHlwZUxvY2F0aW9u
Q2FjaGUuaCAqLywKLSAJCQkJNTJCMzEwRkUxOTc1QjQyNDAwODA4NTdDIC8qIFR5cGVMb2NhdGlv
bkNhY2hlLmNwcCAqLywKKwkJCQk1MkIzMTEwMDE5NzVCNDY3MDA4MDg1N0MgLyogVHlwZUxvY2F0
aW9uQ2FjaGUuaCAqLywKKwkJCQk1MkIzMTBGRTE5NzVCNDI0MDA4MDg1N0MgLyogVHlwZUxvY2F0
aW9uQ2FjaGUuY3BwICovLAogCQkJCTBGMkQ0REUzMTk4MzJEOTEwMDdENEIxOSAvKiBUeXBlU2V0
LmNwcCAqLywKIAkJCQkwRjJENERFNDE5ODMyRDkxMDA3RDRCMTkgLyogVHlwZVNldC5oICovLAog
CQkJCUE3QThBRjMyMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50MTZBcnJheS5oICovLApAQCAtNTQy
OSwxMSArNTQ0MywxOCBAQAogCQkJCTBGNjY2RUJFMTgzNTY2RjkwMEQwMTdGMSAvKiBCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggKi8sCiAJCQkJMEY4ODVFMTAxODQ5QTNCRTAwRjFF
M0ZBIC8qIEJ5dGVjb2RlVXNlRGVmLmggKi8sCiAJCQkJMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1
IC8qIEJ5VmFsSW5mby5oICovLAorCQkJCTBGM0I3RTJDMTlBMTJBQUUwMEQ5QkM1NiAvKiBDYWxs
RWRnZS5jcHAgKi8sCisJCQkJMEYzQjdFMjAxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlLmgg
Ki8sCisJCQkJMEYzQjdFMjExOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAg
Ki8sCisJCQkJMEYzQjdFMjIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5oICov
LAorCQkJCTBGM0I3RTIzMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGVJbmxpbmVz
LmggKi8sCiAJCQkJMEYwQjgzQUUxNEJDRjcxNDAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5jcHAg
Ki8sCiAJCQkJMEYwQjgzQUYxNEJDRjcxNDAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5oICovLAog
CQkJCTBGOTMzMjkzMTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5jcHAgKi8sCiAJ
CQkJMEY5MzMyOTQxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmggKi8sCiAJCQkJ
MEYwQjgzQjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zm
c2V0LmggKi8sCisJCQkJMEYzQjdFMjQxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmNw
cCAqLywKKwkJCQkwRjNCN0UyNTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuaCAqLywK
IAkJCQk5NjlBMDc5MDBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmNwcCAqLywKIAkJCQk5
NjlBMDc5MTBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmggKi8sCiAJCQkJMEY4Rjk0M0Qx
NjY3NjMyRDAwRDYxOTcxIC8qIENvZGVCbG9ja0hhc2guY3BwICovLApAQCAtNTUyNSw3ICs1NTQ2
LDYgQEAKIAkJCQkwRjQyNkE0NjE0NjBDQkFCMDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmgg
Ki8sCiAJCQkJMEY5MTlEMjIxNTg1M0NERTAwNEE0RTdEIC8qIFdhdGNocG9pbnQuY3BwICovLAog
CQkJCTBGOTE5RDIzMTU4NTNDREUwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmggKi8sCi0JCQkJNTJE
QUQzOEUxOTVBMTY0RTAwRjMwNDY0IC8qIFR5cGVMb2NhdGlvbi5oICovLAogCQkJKTsKIAkJCXBh
dGggPSBieXRlY29kZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC01OTgzLDcgKzYw
MDMsNyBAQAogCQkJCTBGNkIxQ0I5MTg2MTI0NEMwMDg0NUQ5NyAvKiBBcml0eUNoZWNrTW9kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBMDA5QzExODMxQTI2RTAwQ0Y4NzExIC8qIEFSTTY0QXNz
ZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1RTcgLyog
QVJNQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKLSAJCQkJMkFEMkVERkIxOTc5OUUzODAwNEQ2
NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkFEMkVERkIxOTc5
OUUzODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3
QjgzQUMwRTZEQjhDOTAwNDc3NUE0IC8qIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyQTExMTI0NjE5MkZDRTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVy
U2V0dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MDMyMDE4QkZGQkUxMDA1QTA4MTEgLyog
SW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtNjEzNCw2ICs2MTU0LDcgQEAKIAkJ
CQkwRkZGQzk1QTE0RUY5MEE5MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMkZDNzczMTZFMTJGNzQwMDM4RDk3NiAvKiBERkdEQ0VQaGFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY4RjJCOUExNzJGMDUwMTAwN0RCREE1IC8qIERGR0Rlc2lyZWRJZGVudGlm
aWVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYzQjdFMjgxOUExMUI4MDAwRDlCQzU2IC8qIENh
bGxFZGdlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJDMEY3Q0UxN0JCRkM1QjAwNDY0
RkU0IC8qIERGR0Rlc2lyZWRUcmFuc2l0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFODUz
NEMxNzIzQ0RBNTAwQjYxOEY1IC8qIERGR0Rlc2lyZWRXYXRjaHBvaW50cy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQzI5ODFGRDkxN0JBRUU0QjAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXZWFrUmVmZXJl
bmNlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC02NDA0LDYgKzY0MjUsNyBAQAogCQkJCTBGNzY2RDMx
MTVBQTgxMTIwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY3NjZEMkMxNUE4Q0MzQTAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lU2V0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNEM1MjQyQjBGNTM1NUU5MDBCQTNEMDQgLyogSklUU3R1YnMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGM0I3RTJCMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkVGNjgzNUUxNzQzNDNDQzAwQTMyRTI1IC8qIEpJVFN0dWJzQVJN
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUY2ODM1RjE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1
YnNBUk12Ny5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVGNjgzNjExNzQzNDNDQzAwQTMyRTI1IC8q
IEpJVFN0dWJzWDg2LmggaW4gSGVhZGVycyAqLywKQEAgLTY0MTUsNiArNjQzNyw3IEBACiAJCQkJ
QTc2RjU0QTMxM0IyOEFBQjAwRUYyQkNFIC8qIEpJVFdyaXRlQmFycmllci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxOEM0MTYwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQWN0aXZhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODQwNDgwMTMxMDIxQTFEOTAwOEU3RjAxIC8qIEpTQVBJVmFsdWVXcmFw
cGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjNCN0UyOTE5QTExQjgwMDBEOUJDNTYgLyogQ2Fs
bEVkZ2VQcm9maWxlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJDRjM5QzIxNkUxNUE4
MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc2
MTQwRDIxODI5ODJDQjAwNzUwNjI0IC8qIEpTQXJndW1lbnRzSXRlcmF0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDNDE3MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0FycmF5LmggaW4gSGVhZGVy
cyAqLywKQEAgLTY2NjIsNyArNjY4NSw3IEBACiAJCQkJQTc4NUY2QkMxOEM1NTNGRTAwRjEwNjI2
IC8qIFNwaWxsUmVnaXN0ZXJzTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NTUwRTE2
RjVDRDAwQjM0NDYwIC8qIFByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0Yz
OUMxNUVEOEU0NjAwRjE2N0IyIC8qIFByb3BlcnR5U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCi0g
CQkJCTBGNkZDNzUxMTk2MTEwQTgwMEUxRDAyRCAvKiBDb21wbGV4R2V0U3RhdHVzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjZGQzc1MTE5NjExMEE4MDBFMUQwMkQgLyogQ29tcGxleEdldFN0YXR1
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxMkRFMTAxOTc5RDVGRDAwMDZGRjRFIC8qIEV4Y2Vw
dGlvbkZ1enouaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDU2MEUxNkY1Q0QwMEIzNDQ2MCAv
KiBQcm90ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc0QzMzQjE2QUEyRDk1MDA2MkYwMUQg
LyogUHJvdG90eXBlTWFwLmggaW4gSGVhZGVycyAqLywKQEAgLTY3MjksNiArNjc1Miw3IEBACiAJ
CQkJRTQ5REMxNkMxMkVGMjk0RTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUU0OURDMTZEMTJFRjI5NTMwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRl
ckNhY2hlSXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUUxNUVEOEU0NjAwRjE2N0Iy
IC8qIFNwYXJzZUFycmF5VmFsdWVNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGM0I3RTI2MTlB
MTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTczODY1NTQx
MTg2OTdCNDAwNTQwMjc5IC8qIFNwZWNpYWxpemVkVGh1bmtKSVQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNTU0MUIyMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZEODJFNTQxNDFEQUVFRTAwMTc5Qzk0IC8qIFNwZWN1bGF0ZWRUeXBlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTc4NTUsNiArNzg3OSw3IEBACiAJCQkJMEYyMzVCRDUxNzE3OEUx
QzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudEZvck9wZXJhbmQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEYyMzVCRDgxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRUaHVua0dlbmVyYXRvci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJEQTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhp
dFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGM0I3RTI3MTlBMTFCODAwMEQ5QkM1NiAv
KiBDYWxsRWRnZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdGMjk5NkIxN0EwQkI2
NzAwMTA0MTdBIC8qIEZUTEZhaWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEOEEzMTkxN0Q1
MUYyMjAwQ0EyQzQwIC8qIEZUTEZvck9TUkVudHJ5SklUQ29kZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjI1RjFBRjE4MTYzNUYzMDA1MjJGMzkgLyogRlRMSW5saW5lQ2FjaGVTaXplLmNwcCBp
biBTb3VyY2VzICovLApAQCAtODA0MSw2ICs4MDY2LDcgQEAKIAkJCQkwRjQ2ODBEMjE0QkJEMTY1
MDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzhCMDExMTdD
RjA3ODAwMEIxNDREMyAvKiBMTEludEVudHJ5cG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEY0NjgwQTgxNEJBN0ZBQjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRjNCN0UyRDE5QTEyQUFFMDBEOUJDNTYgLyogQ2FsbEVkZ2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50U2xvd1BhdGhz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMEI4MzlDMTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTElu
dFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkNFRkFDRDE4MDVFNzU1MDA0NzJDRTQg
LyogTExWTUFQSS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTgyMDEsNiArODIyNyw3IEBACiAJCQkJ
MTRFODRGQTAxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkE0RUM5MEIxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkM4MTUwQjE0MDQzQzBFMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVy
U3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjNCN0UyQTE5QTExQjgwMDBEOUJDNTYg
LyogQ2FsbFZhcmlhbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdFNUFCM0ExNzk5RTRCMjAw
RDI4MzNEIC8qIFg4NkRpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjNDNkQ5
QzE1MjExMTFBMDA1ODVFNEUgLyogWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODY3MDRCODQxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJJbnRlcnByZXRlci5jcHAg
aW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
RWRnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxFZGdlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsRWRnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQ2FsbEVkZ2UuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgQ2FsbEVk
Z2U6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoIjwiLCBt
X2NhbGxlZSwgIiwgY291bnQ6ICIsIG1fY291bnQsICI+Iik7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDYWxsRWRnZV9oCisjZGVmaW5lIENhbGxF
ZGdlX2gKKworI2luY2x1ZGUgIkNhbGxWYXJpYW50LmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0
eXBlZGVmIHVpbnQxNl90IENhbGxFZGdlQ291bnRUeXBlOworCitjbGFzcyBDYWxsRWRnZSB7Citw
dWJsaWM6CisgICAgQ2FsbEVkZ2UoKTsKKyAgICBDYWxsRWRnZShDYWxsVmFyaWFudCBjYWxsZWUs
IENhbGxFZGdlQ291bnRUeXBlIGNvdW50KTsKKyAgICAKKyAgICBib29sIG9wZXJhdG9yISgpIGNv
bnN0IHsgcmV0dXJuICFtX2NhbGxlZTsgfQorICAgIAorICAgIENhbGxWYXJpYW50IGNhbGxlZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FsbGVlOyB9CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgY291bnQo
KSBjb25zdCB7IHJldHVybiBtX2NvdW50OyB9CisgICAgCisgICAgQ2FsbEVkZ2UgZGVzcGVjaWZp
ZWRDbG9zdXJlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBDYWxsRWRnZShtX2NhbGxl
ZS5kZXNwZWNpZmllZENsb3N1cmUoKSwgbV9jb3VudCk7CisgICAgfQorICAgIAorICAgIHZvaWQg
ZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIAorcHVibGljOgorICAgIENhbGxWYXJpYW50
IG1fY2FsbGVlOworICAgIENhbGxFZGdlQ291bnRUeXBlIG1fY291bnQ7Cit9OworCitpbmxpbmUg
Q2FsbEVkZ2U6OkNhbGxFZGdlKENhbGxWYXJpYW50IGNhbGxlZSwgQ2FsbEVkZ2VDb3VudFR5cGUg
Y291bnQpCisgICAgOiBtX2NhbGxlZShjYWxsZWUpCisgICAgLCBtX2NvdW50KGNvdW50KQorewor
fQorCitpbmxpbmUgQ2FsbEVkZ2U6OkNhbGxFZGdlKCkKKyAgICA6IENhbGxFZGdlKENhbGxWYXJp
YW50KCksIDApCit7Cit9CisKK3R5cGVkZWYgVmVjdG9yPENhbGxFZGdlLCAxPiBDYWxsRWRnZUxp
c3Q7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ2FsbEVkZ2VfaAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxl
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
RWRnZVByb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzI0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJDYWxsRWRnZVByb2ZpbGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1Zl
Y3RvcjxDYWxsRWRnZT4gQ2FsbEVkZ2VQcm9maWxlOjpjYWxsRWRnZXMoKSBjb25zdAoreworICAg
IENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCisgICAgQ2FsbEVkZ2VM
aXN0IHJlc3VsdDsKKyAgICAKKyAgICBDYWxsVmFyaWFudCBwcmltYXJ5Q2FsbGVlID0gbV9wcmlt
YXJ5Q2FsbGVlOworICAgIGZsb2F0IG51bUNhbGxzVG9QcmltYXJ5ID0gbV9udW1DYWxsc1RvUHJp
bWFyeTsKKyAgICAvLyBEZWZlbmQgYWdhaW5zdCByYWNlcy4gVGhlc2UgZmllbGRzIGFyZSBtb2Rp
ZmllZCBieSB0aGUgbG9nIHByb2Nlc3NvciB3aXRob3V0IGxvY2tpbmcuCisgICAgaWYgKCEhcHJp
bWFyeUNhbGxlZSAmJiBudW1DYWxsc1RvUHJpbWFyeSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZChD
YWxsRWRnZShwcmltYXJ5Q2FsbGVlLCBudW1DYWxsc1RvUHJpbWFyeSkpOworICAgIAorICAgIGlm
IChtX290aGVyQ2FsbGVlcykgeworICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBpZiB0aGUgcHJp
bWFyeSB0aHJlYWQgaGFkIGp1c3QgY3JlYXRlZCBhIG1fb3RoZXJDYWxsZXMgd2hpbGUgbG9nCisg
ICAgICAgIC8vIHByb2Nlc3NpbmcsIHdlIHNlZSBhIGNvbnNpc3RlbnRseSBjcmVhdGVkIG9uZS4g
VGhlIGxvY2sgYmVpbmcgaGVsZCBpcyBpbnN1ZmZpY2llbnQgZm9yCisgICAgICAgIC8vIHRoaXMs
IHNpbmNlIHRoZSBsb2cgcHJvY2Vzc29yIHdpbGwgb25seSBncmFiIHRoZSBsb2NrIHdoZW4gbWVy
Z2luZyB0aGUgc2Vjb25kYXJ5CisgICAgICAgIC8vIHNwZWN0cnVtIGludG8gdGhlIHByaW1hcnkg
b25lIGJ1dCBtYXkgc3RpbGwgY3JlYXRlIHRoZSBkYXRhIHN0cnVjdHVyZSB3aXRob3V0IGhvbGRp
bmcKKyAgICAgICAgLy8gbG9ja3MuCisgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOworICAg
ICAgICBmb3IgKENhbGxFZGdlIGVudHJ5IDogbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkKQor
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChlbnRyeSk7CisgICAgfQorICAgIAorICAgIHN0ZDo6
c29ydChyZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpLCBbXSAoY29uc3QgQ2FsbEVkZ2UmIGEs
IGNvbnN0IENhbGxFZGdlJiBiKSAtPiBib29sIHsKKyAgICAgICAgICAgIHJldHVybiBhLmNvdW50
KCkgPiBiLmNvdW50KCk7CisgICAgICAgIH0pOworICAgIAorICAgIGlmIChyZXN1bHQuc2l6ZSgp
ID49IDIpCisgICAgICAgIEFTU0VSVChyZXN1bHRbMF0uY291bnQoKSA+IHJlc3VsdC5sYXN0KCku
Y291bnQoKSk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworZmxvYXQgQ2FsbEVkZ2VQ
cm9maWxlOjpudW1DYWxsc1RvS25vd25DZWxscygpIGNvbnN0Cit7CisgICAgdW5zaWduZWQgcmVz
dWx0ID0gMDsKKyAgICBmb3IgKENhbGxFZGdlIGVkZ2UgOiBjYWxsRWRnZXMoKSkKKyAgICAgICAg
cmVzdWx0ICs9IGVkZ2UuY291bnQoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMg
Ym9vbCB3b3J0aERlc3BlY2lmeWluZyhjb25zdCBDYWxsVmFyaWFudCYgdmFyaWFudCkKK3sKKyAg
ICByZXR1cm4gIUhlYXA6OmlzTWFya2VkKHZhcmlhbnQucmF3Q2FsbGVlQ2VsbCgpKQorICAgICAg
ICAmJiBIZWFwOjppc01hcmtlZCh2YXJpYW50LmRlc3BlY2lmaWVkQ2xvc3VyZSgpLnJhd0NhbGxl
ZUNlbGwoKSk7Cit9CisKK2Jvb2wgQ2FsbEVkZ2VQcm9maWxlOjp3b3J0aERlc3BlY2lmeWluZygp
Cit7CisgICAgaWYgKG1fY2xvc3VyZXNBcmVEZXNwZWNpZmllZCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIAorICAgIGlmICghIW1fcHJpbWFyeUNhbGxlZSAmJiAhd29ydGhEZXNwZWNpZnlp
bmcobV9wcmltYXJ5Q2FsbGVlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlm
IChtX290aGVyQ2FsbGVlcykgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX290aGVyQ2Fs
bGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBpZiAoIXdvcnRo
RGVzcGVjaWZ5aW5nKG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jYWxsZWUoKSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIAorICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIENhbGxFZGdlUHJvZmlsZTo6dmlzaXRXZWFrKCkKK3sK
KyAgICBpZiAoIW1fcHJpbWFyeUNhbGxlZSAmJiAhbV9vdGhlckNhbGxlZXMpCisgICAgICAgIHJl
dHVybjsKKyAgICAKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAg
IAorICAgIC8vIFNlZSBpZiBhbnl0aGluZyBpcyBkZWFkIGFuZCBpZiB0aGF0IGNhbiBiZSByZWN0
aWZpZWQgYnkgZGVzcGVjaWZ5aW5nLgorICAgIGlmICh3b3J0aERlc3BlY2lmeWluZygpKSB7Cisg
ICAgICAgIENhbGxTcGVjdHJ1bSBuZXdTcGVjdHJ1bTsKKyAgICAgICAgCisgICAgICAgIGlmICgh
IW1fcHJpbWFyeUNhbGxlZSkKKyAgICAgICAgICAgIG5ld1NwZWN0cnVtLmFkZChtX3ByaW1hcnlD
YWxsZWUuZGVzcGVjaWZpZWRDbG9zdXJlKCksIG1fbnVtQ2FsbHNUb1ByaW1hcnkpOworICAgICAg
ICAKKyAgICAgICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpLS07KSB7CisgICAg
ICAgICAgICAgICAgbmV3U3BlY3RydW0uYWRkKAorICAgICAgICAgICAgICAgICAgICBtX290aGVy
Q2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCkuZGVzcGVjaWZpZWRDbG9zdXJlKCksCisg
ICAgICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jb3VudCgp
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IAorICAgICAgICBWZWN0b3I8Q2FsbFNwZWN0cnVtOjpLZXlBbmRDb3VudD4gbGlzdCA9IG5ld1Nw
ZWN0cnVtLmJ1aWxkTGlzdCgpOworICAgICAgICBBU1NFUlQobGlzdC5zaXplKCkpOworICAgICAg
ICBtX3ByaW1hcnlDYWxsZWUgPSBsaXN0Lmxhc3QoKS5rZXk7CisgICAgICAgIG1fbnVtQ2FsbHNU
b1ByaW1hcnkgPSBsaXN0Lmxhc3QoKS5jb3VudDsKKyAgICAgICAgCisgICAgICAgIEFTU0VSVCgh
IW1fb3RoZXJDYWxsZWVzID09IChsaXN0LnNpemUoKSA+PSAyKSk7CisgICAgICAgIGlmIChtX290
aGVyQ2FsbGVlcykgeworICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLmNs
ZWFyKCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBsaXN0LnNpemUoKSAtIDE7IGkt
LTspCisgICAgICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLmFwcGVuZChD
YWxsRWRnZShsaXN0W2ldLmtleSwgbGlzdFtpXS5jb3VudCkpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQgPSB0cnVlOworICAgICAgICAKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoISFtX3ByaW1hcnlDYWxsZWUgJiYg
IUhlYXA6OmlzTWFya2VkKG1fcHJpbWFyeUNhbGxlZS5yYXdDYWxsZWVDZWxsKCkpKSB7CisgICAg
ICAgIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxsICs9IG1fbnVtQ2FsbHNUb1ByaW1hcnk7CisgICAg
ICAgIAorICAgICAgICBtX3ByaW1hcnlDYWxsZWUgPSBudWxscHRyOworICAgICAgICBtX251bUNh
bGxzVG9QcmltYXJ5ID0gMDsKKyAgICB9CisgICAgCisgICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX290aGVyQ2FsbGVlcy0+bV9wcm9j
ZXNzZWQuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChIZWFwOjppc01hcmtlZChtX290
aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCkucmF3Q2FsbGVlQ2VsbCgpKSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbV9udW1D
YWxsc1RvVW5rbm93bkNlbGwgKz0gbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNvdW50
KCk7CisgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaS0tXSA9IG1fb3Ro
ZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5sYXN0KCk7CisgICAgICAgICAgICBtX290aGVyQ2FsbGVl
cy0+bV9wcm9jZXNzZWQucmVtb3ZlTGFzdCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICAvLyBPbmx5IGV4aXN0cyB3aGlsZSB3ZSBhcmUgcHJvY2Vzc2luZyB0aGUgbG9nLgorICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghbV9vdGhlckNhbGxlZXMtPm1fc2Vjb25kYXJ5KTsKKyAgICB9Cit9
CisKK3ZvaWQgQ2FsbEVkZ2VQcm9maWxlOjphZGRTbG93KENhbGxWYXJpYW50IGNhbGxlZSwgQ2Fs
bEVkZ2VQcm9maWxlVmVjdG9yJiBtZXJnZUJhY2tMb2cpCit7CisgICAgLy8gVGhpcyBleGlzdHMg
dG8gaGFuZGxlIGNhc2VzIHdoZXJlIHRoZSBzcGVjdHJ1bSB3YXNuJ3QgY3JlYXRlZCB5ZXQsIG9y
IHdlJ3JlIHN0b3JpbmcgdG8gYQorICAgIC8vIHBhcnRpY3VsYXIgc3BlY3RydW0gZm9yIHRoZSBm
aXJzdCB0aW1lIGR1cmluZyBhIGxvZyBwcm9jZXNzaW5nIGl0ZXJhdGlvbi4KKyAgICAKKyAgICBp
ZiAoIW1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgIG1fb3RoZXJDYWxsZWVzID0gc3RkOjptYWtl
X3VucWl1ZTxTZWNvbmRhcnk+KCk7CisgICAgICAgIC8vIElmIGEgY29tcGlsZXIgdGhyZWFkIG5v
dGljZXMgdGhlIG1fb3RoZXJDYWxsZWVzIGJlaW5nIG5vbi1udWxsLCB3ZSB3YW50IHRvIG1ha2Ug
c3VyZQorICAgICAgICAvLyB0aGF0IGl0IHNlZXMgYSBmdWxseSBjcmVhdGVkIG9uZS4KKyAgICAg
ICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKKyAgICB9CisgICAgCisgICAgaWYgKCFtX290aGVy
Q2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSkgeworICAgICAgICBtX290aGVyQ2FsbGVlcy0+
bV90ZW1wb3JhcnlTcGVjdHJ1bSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbFNwZWN0cnVtPigpOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6
ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVj
dHJ1bS0+YWRkKAorICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtp
XS5jYWxsZWUoKSwKKyAgICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRb
aV0uY291bnQoKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFRoaXMgbWVhbnMg
dGhhdCB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHdlJ3JlIHNlZWluZyB0aGlzIHByb2ZpbGUgZHVy
aW5nIHRoaXMgbG9nCisgICAgICAgIC8vIHByb2Nlc3NpbmcgaXRlcmF0aW9uLgorICAgICAgICBt
ZXJnZUJhY2tMb2cuYXBwZW5kKHRoaXMpOworICAgIH0KKyAgICAKKyAgICBtX290aGVyQ2FsbGVl
cy0+bV9zZWNvbmRhcnktPmFkZChjYWxsZWUpOworfQorCit2b2lkIENhbGxFZGdlUHJvZmlsZTo6
bWVyZ2VCYWNrKCkKK3sKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOwor
ICAgIAorICAgIEFTU0VSVChtX290aGVyQ2FsbGVlcyk7CisgICAgQVNTRVJUKG1fb3RoZXJDYWxs
ZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtKTsKKyAgICAKKyAgICBpZiAoISFtX3ByaW1hcnlDYWxs
ZWUpCisgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5hZGQobV9w
cmltYXJ5Q2FsbGVlLCBtX251bUNhbGxzVG9QcmltYXJ5KTsKKyAgICAKKyAgICBpZiAoIW1fY2xv
c3VyZXNBcmVEZXNwZWNpZmllZCkgeworICAgICAgICBDYWxsU3BlY3RydW0gbmV3U3BlY3RydW07
CisgICAgICAgIGZvciAoYXV0byBlbnRyeSA6ICptX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlT
cGVjdHJ1bSkKKyAgICAgICAgICAgIG5ld1NwZWN0cnVtLmFkZChlbnRyeS5rZXkuZGVzcGVjaWZp
ZWRDbG9zdXJlKCksIGVudHJ5LmNvdW50KTsKKyAgICAgICAgCisgICAgICAgIGlmIChuZXdTcGVj
dHJ1bS5zaXplKCkgPCBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+c2l6ZSgp
KQorICAgICAgICAgICAgKm1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtID0gbmV3
U3BlY3RydW07CisgICAgICAgIAorICAgICAgICBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQgPSB0
cnVlOworICAgIH0KKyAgICAKKyAgICBWZWN0b3I8Q2FsbFNwZWN0cnVtOjpLZXlBbmRDb3VudD4g
bGlzdCA9IG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5idWlsZExpc3QoKTsK
KyAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSA9IG51bGxwdHI7CisgICAg
CisgICAgbV9wcmltYXJ5Q2FsbGVlID0gbGlzdC5sYXN0KCkua2V5OworICAgIG1fbnVtQ2FsbHNU
b1ByaW1hcnkgPSBsaXN0Lmxhc3QoKS5jb3VudDsKKyAgICBsaXN0LnJlbW92ZUxhc3QoKTsKKyAg
ICAKKyAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuY2xlYXIoKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGNvdW50ID0gbWF4S25vd25DYWxsZWVzOyBjb3VudC0tICYmICFsaXN0LmlzRW1wdHko
KTspIHsKKyAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLmFwcGVuZChDYWxsRWRn
ZShsaXN0Lmxhc3QoKS5rZXksIGxpc3QubGFzdCgpLmNvdW50KSk7CisgICAgICAgIGxpc3QucmVt
b3ZlTGFzdCgpOworICAgIH0KKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBsaXN0LnNpemUo
KTsgaS0tOykKKyAgICAgICAgbV9udW1DYWxsc1RvVW5rbm93bkNlbGwgKz0gbGlzdFtpXS5jb3Vu
dDsKK30KKwordm9pZCBDYWxsRWRnZVByb2ZpbGU6OmZhZGVCeUhhbGYoKQoreworICAgIG1fbnVt
Q2FsbHNUb1ByaW1hcnkgPj49IDE7CisgICAgbV9udW1DYWxsc1RvTm90Q2VsbCA+Pj0gMTsKKyAg
ICBtX251bUNhbGxzVG9Vbmtub3duQ2VsbCA+Pj0gMTsKKyAgICBtX3RvdGFsQ291bnQgPj49IDE7
CisgICAgCisgICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5zaXplKCk7IGktLTspIHsKKyAgICAgICAg
ICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXSA9IENhbGxFZGdlKAorICAgICAgICAg
ICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jYWxsZWUoKSwKKyAgICAgICAg
ICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQoKSA+PiAxKTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFy
eVNwZWN0cnVtKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiAqbV9vdGhlckNhbGxl
ZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0pCisgICAgICAgICAgICAgICAgZW50cnkuY291bnQgPj49
IDE7CisgICAgICAgIH0KKyAgICB9Cit9CisKK0NhbGxFZGdlTG9nOjpDYWxsRWRnZUxvZygpCisg
ICAgOiBtX3NjYWxlZExvZ0luZGV4KGxvZ1NpemUgKiBzaXplb2YoRW50cnkpKQoreworfQorCitD
YWxsRWRnZUxvZzo6fkNhbGxFZGdlTG9nKCkgeyB9CisKKyNpZiBFTkFCTEUoSklUKQorCitleHRl
cm4gIkMiIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2coQ2Fs
bEVkZ2VMb2cqKSBXVEZfSU5URVJOQUw7CitleHRlcm4gIkMiIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2coQ2FsbEVkZ2VMb2cqIGxvZykKK3sKKyAgICBsb2ct
PnByb2Nlc3NMb2coKTsKK30KKwordm9pZCBDYWxsRWRnZUxvZzo6ZW1pdExvZ0NvZGUoQ0NhbGxI
ZWxwZXJzJiBqaXQsIENhbGxFZGdlUHJvZmlsZSYgcHJvZmlsZSwgSlNWYWx1ZVJlZ3MgY2FsbGVl
UmVncykKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50cyA9IDE7CisgICAg
CisgICAgR1BSUmVnIHNjcmF0Y2hHUFI7CisgICAgaWYgKCFjYWxsZWVSZWdzLnVzZXMoR1BSSW5m
bzo6cmVnVDApKQorICAgICAgICBzY3JhdGNoR1BSID0gR1BSSW5mbzo6cmVnVDA7CisgICAgZWxz
ZSBpZiAoIWNhbGxlZVJlZ3MudXNlcyhHUFJJbmZvOjpyZWdUMSkpCisgICAgICAgIHNjcmF0Y2hH
UFIgPSBHUFJJbmZvOjpyZWdUMTsKKyAgICBlbHNlCisgICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJ
bmZvOjpyZWdUMjsKKyAgICAKKyAgICBqaXQubG9hZDMyKCZtX3NjYWxlZExvZ0luZGV4LCBzY3Jh
dGNoR1BSKTsKKyAgICAKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgb2sgPSBqaXQuYnJhbmNoVGVz
dDMyKENDYWxsSGVscGVyczo6Tm9uWmVybywgc2NyYXRjaEdQUik7CisgICAgCisgICAgQVNTRVJU
KHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkgPj0gMSArIG51bWJlck9mQXJndW1lbnRzKTsKKyAg
ICAKKyAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdGFja0FsaWdu
bWVudEJ5dGVzKCkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAK
KyAgICBqaXQuc3RvcmVWYWx1ZShjYWxsZWVSZWdzLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0Nh
bGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAg
aml0LnNldHVwQXJndW1lbnRzKGNhbGxlZVJlZ3MpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2cpLCBHUFJJbmZvOjpu
b25BcmdHUFIwKTsKKyAgICBqaXQuY2FsbChzY3JhdGNoKTsKKyAgICBqaXQubG9hZFZhbHVlKEND
YWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBz
aXplb2YoSlNWYWx1ZSkpLCBjYWxsZWVSZWdzKTsKKyAgICAKKyAgICBqaXQuYWRkUHRyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihzdGFja0FsaWdubWVudEJ5dGVzKCkpLCBDQ2FsbEhlbHBl
cnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihsb2dTaXplICogc2l6ZW9mKEVudHJ5KSksIHNjcmF0Y2hHUFIpOwor
ICAgIG9rLmxpbmsoJmppdCk7CisKKyAgICBqaXQuc3ViMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoc2l6ZW9mKEVudHJ5KSksIHNjcmF0Y2hHUFIpOworICAgIGppdC5zdG9yZTMyKHNjcmF0
Y2hHUFIsICZtX3NjYWxlZExvZ0luZGV4KTsKKyAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihtX2xvZyksIHNjcmF0Y2hHUFIpOworICAgIGppdC5zdG9yZVZhbHVlKGNh
bGxlZVJlZ3MsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZGU0VU
T0YoRW50cnksIG1fdmFsdWUpKSk7CisgICAgaml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cigmcHJvZmlsZSksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBP
QkpFQ1RfT0ZGU0VUT0YoRW50cnksIG1fcHJvZmlsZSkpKTsKK30KKwordm9pZCBDYWxsRWRnZUxv
Zzo6ZW1pdExvZ0NvZGUoCisgICAgQ0NhbGxIZWxwZXJzJiBqaXQsIE93blB0cjxDYWxsRWRnZVBy
b2ZpbGU+JiBwcm9maWxlUG9pbnRlciwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncykKK3sKKyAgICBw
cm9maWxlUG9pbnRlci5jcmVhdGVUcmFuc2FjdGlvbmFsbHkoKTsKKyAgICBlbWl0TG9nQ29kZShq
aXQsICpwcm9maWxlUG9pbnRlciwgY2FsbGVlUmVncyk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUo
SklUKQorCit2b2lkIENhbGxFZGdlTG9nOjpwcm9jZXNzTG9nKCkKK3sKKyAgICBDb25jdXJyZW50
SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIAorICAgIEFTU0VSVCghKG1fc2NhbGVkTG9n
SW5kZXggJSBzaXplb2YoRW50cnkpKSk7CisgICAgCisgICAgQ2FsbEVkZ2VQcm9maWxlVmVjdG9y
IG1lcmdlQmFja0xvZzsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3NjYWxlZExvZ0lu
ZGV4IC8gc2l6ZW9mKEVudHJ5KTsgaSA8IGxvZ1NpemU7ICsraSkKKyAgICAgICAgbV9sb2dbaV0u
bV9wcm9maWxlLT5hZGQobV9sb2dbaV0ubV92YWx1ZSwgbWVyZ2VCYWNrTG9nKTsKKyAgICAKKyAg
ICBtX3NjYWxlZExvZ0luZGV4ID0gbG9nU2l6ZSAqIHNpemVvZihFbnRyeSk7CisgICAgCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gbWVyZ2VCYWNrTG9nLnNpemUoKTsgaS0tOykKKyAgICAgICAgbWVy
Z2VCYWNrTG9nW2ldLT5tZXJnZUJhY2soKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxl
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVk
Z2VQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDYWxsRWRnZVByb2Zp
bGVfaAorI2RlZmluZSBDYWxsRWRnZVByb2ZpbGVfaAorCisjaW5jbHVkZSAiQ2FsbEVkZ2UuaCIK
KyNpbmNsdWRlICJDYWxsVmFyaWFudC5oIgorI2luY2x1ZGUgIkNvbmN1cnJlbnRKSVRMb2NrLmgi
CisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgQ0NhbGxIZWxwZXJzOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworCitjbGFzcyBDYWxsRWRnZVByb2ZpbGU7Cit0eXBlZGVmIFZlY3RvcjxDYWxsRWRnZVBy
b2ZpbGUqLCAxMD4gQ2FsbEVkZ2VQcm9maWxlVmVjdG9yOworCitjbGFzcyBDYWxsRWRnZVByb2Zp
bGUgeworcHVibGljOgorICAgIENhbGxFZGdlUHJvZmlsZSgpOworICAgIAorICAgIHZvaWQgYWRk
KEpTVmFsdWUsIENhbGxFZGdlUHJvZmlsZVZlY3RvciYgbWVyZ2VCYWNrTG9nKTsKKyAgICAKKyAg
ICB1bnNpZ25lZCBudW1DYWxsc1RvTm90Q2VsbCgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQ2FsbHNU
b05vdENlbGw7IH0KKyAgICB1bnNpZ25lZCBudW1DYWxsc1RvVW5rbm93bkNlbGwoKSBjb25zdCB7
IHJldHVybiBtX251bUNhbGxzVG9Vbmtub3duQ2VsbDsgfQorICAgIHVuc2lnbmVkIG51bUNhbGxz
VG9Lbm93bkNlbGxzKCkgY29uc3Q7CisgICAgCisgICAgLy8gQ2FsbCB3aGlsZSBob2xkaW5nIHRo
ZSBvd25pbmcgQ29kZUJsb2NrJ3MgbG9jay4KKyAgICBDYWxsRWRnZUxpc3QgY2FsbEVkZ2VzKCkg
Y29uc3Q7CisgICAgCisgICAgdm9pZCB2aXNpdFdlYWsoKTsKKyAgICAKK3ByaXZhdGU6CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heEtub3duQ2FsbGVlcyA9IDU7CisgICAgCisgICAgYm9v
bCB3b3J0aERlc3BlY2lmeWluZygpOworICAgIHZvaWQgYWRkU2xvdyhDYWxsVmFyaWFudCwgQ2Fs
bEVkZ2VQcm9maWxlVmVjdG9yJiBtZXJnZUJhY2tMb2cpOworICAgIHZvaWQgbWVyZ2VCYWNrKCk7
CisgICAgdm9pZCBmYWRlQnlIYWxmKCk7CisgICAgCisgICAgLy8gSXQncyBjaGVhcGVyIHRvIGxl
dCB0aGlzIGhhdmUgaXRzIG93biBsb2NrLiBJdCBuZWVkcyB0byBiZSBhYmxlIHRvIGZpbmQgd2hp
Y2ggbG9jayB0bworICAgIC8vIGxvY2suIE5vcm1hbGx5IGl0IHdvdWxkIGxvY2sgdGhlIG93bmlu
ZyBDb2RlQmxvY2sncyBsb2NrLCBidXQgdGhhdCB3b3VsZCByZXF1aXJlIGEKKyAgICAvLyBwb2lu
dGVyLXdpZHRoIHdvcmQgdG8gcG9pbnQgYXQgdGhlIENvZGVCbG9jay4gSGF2aW5nIHRoZSBieXRl
LXNpemVkIGxvY2sgaGVyZSBpcworICAgIC8vIGNoZWFwZXIuIEhvd2V2ZXIsIHRoaXMgbWVhbnMg
dGhhdCB0aGUgcmVsYXRpb25zaGlwIHdpdGggdGhlIENvZGVCbG9jayBsb2NrIGlzOgorICAgIC8v
IGFjcXVpcmUgdGhlIENvZGVCbG9jayBsb2NrIGJlZm9yZSB0aGlzIG9uZS4KKyAgICBDb25jdXJy
ZW50SklUTG9jayBtX2xvY2s7CisgICAgCisgICAgYm9vbCBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZp
ZWQ7CisgICAgCisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbV9udW1DYWxsc1RvUHJpbWFyeTsKKyAg
ICBDYWxsRWRnZUNvdW50VHlwZSBtX251bUNhbGxzVG9Ob3RDZWxsOworICAgIENhbGxFZGdlQ291
bnRUeXBlIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxsOworICAgIENhbGxFZGdlQ291bnRUeXBlIG1f
dG90YWxDb3VudDsKKyAgICBDYWxsVmFyaWFudCBtX3ByaW1hcnlDYWxsZWU7CisgICAgCisgICAg
dHlwZWRlZiBTcGVjdHJ1bTxDYWxsVmFyaWFudCwgQ2FsbEVkZ2VDb3VudFR5cGU+IENhbGxTcGVj
dHJ1bTsKKyAgICAKKyAgICBzdHJ1Y3QgU2Vjb25kYXJ5IHsKKyAgICAgICAgVmVjdG9yPENhbGxF
ZGdlPiBtX3Byb2Nlc3NlZDsgLy8gUHJvY2Vzc2VkIGJ1dCBub3QgbmVjZXNzYXJpbHkgc29ydGVk
LgorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbFNwZWN0cnVtPiBtX3RlbXBvcmFyeVNwZWN0
cnVtOworICAgIH07CisgICAgCisgICAgc3RkOjp1bmlxdWVfcHRyPFNlY29uZGFyeT4gbV9vdGhl
ckNhbGxlZXM7Cit9OworCitjbGFzcyBDYWxsRWRnZUxvZyB7CitwdWJsaWM6CisgICAgQ2FsbEVk
Z2VMb2coKTsKKyAgICB+Q2FsbEVkZ2VMb2coKTsKKworI2lmIEVOQUJMRShKSVQpICAgIAorICAg
IHZvaWQgZW1pdExvZ0NvZGUoQ0NhbGxIZWxwZXJzJiwgQ2FsbEVkZ2VQcm9maWxlJiwgSlNWYWx1
ZVJlZ3MgY2FsbGVlUmVncyk7IC8vIEFzc3VtZXMgdGhhdCBzdGFjayBpcyBhbGlnbmVkLCBhbGwg
dm9sYXRpbGUgcmVnaXN0ZXJzIC0gb3RoZXIgdGhhbiBjYWxsZWVHUFIgLSBhcmUgY2xvYmJlcmFi
bGUsIGFuZCB0aGUgcGFyYW1ldGVyIHNwYWNlIGlzIGluIHVzZS4KKyAgICAKKyAgICAvLyBTYW1l
IGFzIGFib3ZlIGJ1dCBjcmVhdGVzIGEgQ2FsbEVkZ2VQcm9maWxlIGluc3RhbmNlIGlmIG9uZSBk
aWQgbm90IGFscmVhZHkgZXhpc3QuIERvZXMKKyAgICAvLyB0aGlzIGluIGEgdGhyZWFkLXNhZmUg
bWFubmVyIGJ5IGNhbGxpbmcgT3duUHRyOjpjcmVhdGVUcmFuc2FjdGlvbmFsbHkuCisgICAgdm9p
ZCBlbWl0TG9nQ29kZShDQ2FsbEhlbHBlcnMmLCBPd25QdHI8Q2FsbEVkZ2VQcm9maWxlPiYsIEpT
VmFsdWVSZWdzIGNhbGxlZVJlZ3MpOworI2VuZGlmIC8vIEVOQUJMRShKSVQpCisgICAgCisgICAg
dm9pZCBwcm9jZXNzTG9nKCk7CisgICAgCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9nU2l6ZSA9
IDEwMDAwOworICAgIAorICAgIHN0cnVjdCBFbnRyeSB7CisgICAgICAgIEpTVmFsdWUgbV92YWx1
ZTsKKyAgICAgICAgQ2FsbEVkZ2VQcm9maWxlKiBtX3Byb2ZpbGU7CisgICAgfTsKKyAgICAKKyAg
ICB1bnNpZ25lZCBtX3NjYWxlZExvZ0luZGV4OworICAgIEVudHJ5IG1fbG9nW2xvZ1NpemVdOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDYWxsRWRnZVByb2ZpbGVfaAor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlSW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
RWRnZVByb2ZpbGVJbmxpbmVzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzX2gKKyNkZWZpbmUgQ2FsbEVkZ2VQcm9m
aWxlSW5saW5lc19oCisKKyNpbmNsdWRlICJDYWxsRWRnZVByb2ZpbGUuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2lubGluZSBDYWxsRWRnZVByb2ZpbGU6OkNhbGxFZGdlUHJvZmlsZSgpCisgICAg
OiBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQoZmFsc2UpCisgICAgLCBtX251bUNhbGxzVG9Qcmlt
YXJ5KDApCisgICAgLCBtX251bUNhbGxzVG9Ob3RDZWxsKDApCisgICAgLCBtX251bUNhbGxzVG9V
bmtub3duQ2VsbCgwKQorICAgICwgbV90b3RhbENvdW50KDApCisgICAgLCBtX3ByaW1hcnlDYWxs
ZWUobnVsbHB0cikKK3sKK30KKworQUxXQVlTX0lOTElORSB2b2lkIENhbGxFZGdlUHJvZmlsZTo6
YWRkKEpTVmFsdWUgdmFsdWUsIENhbGxFZGdlUHJvZmlsZVZlY3RvciYgbWVyZ2VCYWNrTG9nKQor
eworICAgIHVuc2lnbmVkIG5ld1RvdGFsQ291bnQgPSBtX3RvdGFsQ291bnQgKyAxOworICAgIGlm
IChVTkxJS0VMWSghbmV3VG90YWxDb3VudCkpIHsKKyAgICAgICAgZmFkZUJ5SGFsZigpOyAvLyBU
YWNrbGUgb3ZlcmZsb3dzIGJ5IGRpdmlkaW5nIGFsbCBjb3VudHMgYnkgdHdvLgorICAgICAgICBu
ZXdUb3RhbENvdW50ID0gbV90b3RhbENvdW50ICsgMTsKKyAgICB9CisgICAgQVNTRVJUKG5ld1Rv
dGFsQ291bnQpOworICAgIG1fdG90YWxDb3VudCA9IG5ld1RvdGFsQ291bnQ7CisgICAgCisgICAg
aWYgKFVOTElLRUxZKCF2YWx1ZS5pc0NlbGwoKSkpIHsKKyAgICAgICAgbV9udW1DYWxsc1RvTm90
Q2VsbCsrOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ2FsbFZhcmlhbnQgY2FsbGVl
ID0gQ2FsbFZhcmlhbnQodmFsdWUuYXNDZWxsKCkpOworICAgIAorICAgIGlmIChtX2Nsb3N1cmVz
QXJlRGVzcGVjaWZpZWQpCisgICAgICAgIGNhbGxlZSA9IGNhbGxlZS5kZXNwZWNpZmllZENsb3N1
cmUoKTsKKyAgICAgICAgCisgICAgaWYgKFVOTElLRUxZKCFtX3ByaW1hcnlDYWxsZWUpKSB7Cisg
ICAgICAgIG1fcHJpbWFyeUNhbGxlZSA9IGNhbGxlZTsKKyAgICAgICAgbV9udW1DYWxsc1RvUHJp
bWFyeSA9IDE7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAorICAgIGlmIChMSUtF
TFkobV9wcmltYXJ5Q2FsbGVlID09IGNhbGxlZSkpIHsKKyAgICAgICAgbV9udW1DYWxsc1RvUHJp
bWFyeSsrOworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBpZiAoVU5MSUtF
TFkoIW1fb3RoZXJDYWxsZWVzKSkgeworICAgICAgICBhZGRTbG93KGNhbGxlZSwgbWVyZ2VCYWNr
TG9nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAgQ2FsbFNwZWN0cnVt
KiBzZWNvbmRhcnkgPSBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS5nZXQoKTsK
KyAgICBpZiAoIXNlY29uZGFyeSkgeworICAgICAgICBhZGRTbG93KGNhbGxlZSwgbWVyZ2VCYWNr
TG9nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAgc2Vjb25kYXJ5LT5h
ZGQoY2FsbGVlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDYWxsRWRn
ZVByb2ZpbGVJbmxpbmVzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rSW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
Myw2ICs4MywxMSBAQCB2b2lkIENhbGxMaW5rSW5mbzo6dmlzaXRXZWFrKFJlcGF0Y2hCdWZmCiAg
ICAgfQogICAgIGlmICghIWxhc3RTZWVuQ2FsbGVlICYmICFIZWFwOjppc01hcmtlZChsYXN0U2Vl
bkNhbGxlZS5nZXQoKSkpCiAgICAgICAgIGxhc3RTZWVuQ2FsbGVlLmNsZWFyKCk7CisgICAgCisg
ICAgaWYgKGNhbGxFZGdlUHJvZmlsZSkgeworICAgICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsK
KyAgICAgICAgY2FsbEVkZ2VQcm9maWxlLT52aXNpdFdlYWsoKTsKKyAgICB9CiB9CiAKIENhbGxM
aW5rSW5mbyYgQ2FsbExpbmtJbmZvOjpkdW1teSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgQ2FsbExpbmtJbmZvX2gKICNkZWZpbmUgQ2FsbExp
bmtJbmZvX2gKIAorI2luY2x1ZGUgIkNhbGxFZGdlUHJvZmlsZS5oIgogI2luY2x1ZGUgIkNsb3N1
cmVDYWxsU3R1YlJvdXRpbmUuaCIKICNpbmNsdWRlICJDb2RlTG9jYXRpb24uaCIKICNpbmNsdWRl
ICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCkBAIC0zMyw2ICszNCw3IEBACiAjaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIldyaXRlQmFycmll
ci5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvU2VudGluZWxMaW5r
ZWRMaXN0Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtODgsNiArOTAsNyBAQCBzdHJ1Y3QgQ2Fs
bExpbmtJbmZvIDogcHVibGljIEJhc2ljUmF3U2VuCiAgICAgdW5zaWduZWQgY2FsbGVlR1BSIDog
ODsKICAgICB1bnNpZ25lZCBzbG93UGF0aENvdW50OwogICAgIENvZGVPcmlnaW4gY29kZU9yaWdp
bjsKKyAgICBPd25QdHI8Q2FsbEVkZ2VQcm9maWxlPiBjYWxsRWRnZVByb2ZpbGU7CiAKICAgICBi
b29sIGlzTGlua2VkKCkgeyByZXR1cm4gc3R1YiB8fCBjYWxsZWU7IH0KICAgICB2b2lkIHVubGlu
ayhSZXBhdGNoQnVmZmVyJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDU0ICszMiwyMiBAQAogI2luY2x1ZGUgIkxMSW50Q2FsbExpbmtJbmZvLmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KKyNpbmNs
dWRlIDx3dGYvTGlzdER1bXAuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKIHN0YXRpYyBjb25zdCBi
b29sIHZlcmJvc2UgPSBmYWxzZTsKIAogQ2FsbExpbmtTdGF0dXM6OkNhbGxMaW5rU3RhdHVzKEpT
VmFsdWUgdmFsdWUpCi0gICAgOiBtX2NhbGxUYXJnZXQodmFsdWUpCi0gICAgLCBtX2V4ZWN1dGFi
bGUoMCkKLSAgICAsIG1fY291bGRUYWtlU2xvd1BhdGgoZmFsc2UpCisgICAgOiBtX2NvdWxkVGFr
ZVNsb3dQYXRoKGZhbHNlKQogICAgICwgbV9pc1Byb3ZlZChmYWxzZSkKIHsKLSAgICBpZiAoIXZh
bHVlIHx8ICF2YWx1ZS5pc0NlbGwoKSkKKyAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS5pc0NlbGwo
KSkgeworICAgICAgICBtX2NvdWxkVGFrZVNsb3dQYXRoID0gdHJ1ZTsKICAgICAgICAgcmV0dXJu
OworICAgIH0KICAgICAKLSAgICBpZiAoIXZhbHVlLmFzQ2VsbCgpLT5pbmhlcml0cyhKU0Z1bmN0
aW9uOjppbmZvKCkpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9leGVjdXRhYmxlID0g
anNDYXN0PEpTRnVuY3Rpb24qPih2YWx1ZS5hc0NlbGwoKSktPmV4ZWN1dGFibGUoKTsKLX0KLQot
SlNGdW5jdGlvbiogQ2FsbExpbmtTdGF0dXM6OmZ1bmN0aW9uKCkgY29uc3QKLXsKLSAgICBpZiAo
IW1fY2FsbFRhcmdldCB8fCAhbV9jYWxsVGFyZ2V0LmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4g
MDsKLSAgICAKLSAgICBpZiAoIW1fY2FsbFRhcmdldC5hc0NlbGwoKS0+aW5oZXJpdHMoSlNGdW5j
dGlvbjo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgcmV0dXJuIGpzQ2Fz
dDxKU0Z1bmN0aW9uKj4obV9jYWxsVGFyZ2V0LmFzQ2VsbCgpKTsKLX0KLQotSW50ZXJuYWxGdW5j
dGlvbiogQ2FsbExpbmtTdGF0dXM6OmludGVybmFsRnVuY3Rpb24oKSBjb25zdAotewotICAgIGlm
ICghbV9jYWxsVGFyZ2V0IHx8ICFtX2NhbGxUYXJnZXQuaXNDZWxsKCkpCi0gICAgICAgIHJldHVy
biAwOwotICAgIAotICAgIGlmICghbV9jYWxsVGFyZ2V0LmFzQ2VsbCgpLT5pbmhlcml0cyhJbnRl
cm5hbEZ1bmN0aW9uOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICByZXR1
cm4ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihtX2NhbGxUYXJnZXQuYXNDZWxsKCkpOwotfQot
Ci1JbnRyaW5zaWMgQ2FsbExpbmtTdGF0dXM6OmludHJpbnNpY0ZvcihDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIGtpbmQpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2V4ZWN1dGFibGUpCi0gICAgICAgIHJl
dHVybiBOb0ludHJpbnNpYzsKLSAgICAKLSAgICByZXR1cm4gbV9leGVjdXRhYmxlLT5pbnRyaW5z
aWNGb3Ioa2luZCk7CisgICAgbV9lZGdlcy5hcHBlbmQoQ2FsbEVkZ2UoQ2FsbFZhcmlhbnQodmFs
dWUuYXNDZWxsKCkpLCAxKSk7CiB9CiAKIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpj
b21wdXRlRnJvbUxMSW50KGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgQ29kZUJs
b2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQpAQCAtODcsNyArNTUs
NyBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyCiAgICAgVU5VU0VE
X1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsK
ICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAocHJvZmlsZWRCbG9jay0+aGFzRXhpdFNpdGUo
bG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkRnVuY3Rpb24p
KSkgeworICAgIGlmIChwcm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJl
cXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDZWxsKSkpIHsKICAgICAgICAgLy8gV2Ug
Y291bGQgZm9yY2UgdGhpcyB0byBiZSBhIGNsb3N1cmUgY2FsbCwgYnV0IGluc3RlYWQgd2UnbGwg
anVzdCBhc3N1bWUgdGhhdCBpdAogICAgICAgICAvLyB0YWtlcyBzbG93IHBhdGguCiAgICAgICAg
IHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7CkBAIC0xMzksMTAgKzEwNywxMCBAQCBDYWxsTGlua1N0
YXR1czo6RXhpdFNpdGVEYXRhIENhbGxMaW5rU3RhCiAgICAgCiAjaWYgRU5BQkxFKERGR19KSVQp
CiAgICAgZXhpdFNpdGVEYXRhLm1fdGFrZXNTbG93UGF0aCA9Ci0gICAgICAgIHByb2ZpbGVkQmxv
Y2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5k
ZXgsIEJhZENhY2hlLCBleGl0aW5nSklUVHlwZSkpCisgICAgICAgIHByb2ZpbGVkQmxvY2stPmhh
c0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJh
ZFR5cGUsIGV4aXRpbmdKSVRUeXBlKSkKICAgICAgICAgfHwgcHJvZmlsZWRCbG9jay0+aGFzRXhp
dFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkRXhl
Y3V0YWJsZSwgZXhpdGluZ0pJVFR5cGUpKTsKICAgICBleGl0U2l0ZURhdGEubV9iYWRGdW5jdGlv
biA9Ci0gICAgICAgIHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVx
dWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZEZ1bmN0aW9uLCBleGl0aW5nSklUVHlwZSkp
OworICAgICAgICBwcm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVl
bnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDZWxsLCBleGl0aW5nSklUVHlwZSkpOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0obG9ja2VyKTsKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRC
bG9jayk7CkBAIC0xNTYsNiArMTI0LDE4IEBAIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEg
Q2FsbExpbmtTdGEKICNpZiBFTkFCTEUoSklUKQogQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVGb3IoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENhbGxMaW5rSW5mbyYg
Y2FsbExpbmtJbmZvKQogeworICAgIC8vIEFsd2F5cyB0cnVzdCB0aGUgY2FsbCBlZGdlIHByb2Zp
bGUgb3ZlciBhbnl0aGluZyBlbHNlIHNpbmNlIHRoaXMgaGFzIHByZWNpc2UgY291bnRzLgorICAg
IC8vIEl0IGNhbiBtYWtlIHRoZSBiZXN0IHBvc3NpYmxlIGRlY2lzaW9uIGJlY2F1c2UgaXQgbmV2
ZXIgImZvcmdldHMiIHdoYXQgaGFwcGVuZWQgZm9yIGFueQorICAgIC8vIGNhbGwsIHdpdGggdGhl
IGV4Y2VwdGlvbiBvZiBmYWRpbmcgb3V0IHRoZSBjb3VudHMgb2Ygb2xkIGNhbGxzIChmb3IgZXhh
bXBsZSBpZiB0aGUKKyAgICAvLyBjb3VudGVyIHR5cGUgaXMgMTYtYml0IHRoZW4gY2FsbHMgdGhh
dCBoYXBwZW5lZCBtb3JlIHRoYW4gMl4xNiBjYWxscyBhZ28gYXJlIGdpdmVuIGhhbGYKKyAgICAv
LyB3ZWlnaHQsIGFuZCB0aGlzIGNvbXBvdW5kcyBmb3IgZXZlcnkgMl4xNSBbc2ljXSBjYWxscyBh
ZnRlciB0aGF0KS4gVGhlIGNvbWJpbmF0aW9uIG9mCisgICAgLy8gaGlnaCBmaWRlbGl0eSBmb3Ig
cmVjZW50IGNhbGxzIGFuZCBmYWRpbmcgZm9yIG9sZGVyIGNhbGxzIG1ha2VzIHRoaXMgdGhlIG1v
c3QgdXNlZnVsCisgICAgLy8gbWVjaGFtaXNtIG9mIGNob29zaW5nIGhvdyB0byBvcHRpbWl6ZSBm
dXR1cmUgY2FsbHMuCisgICAgQ2FsbEVkZ2VQcm9maWxlKiBlZGdlUHJvZmlsZSA9IGNhbGxMaW5r
SW5mby5jYWxsRWRnZVByb2ZpbGUuZ2V0KCk7CisgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7Cisg
ICAgaWYgKGVkZ2VQcm9maWxlKQorICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21DYWxsRWRnZVBy
b2ZpbGUoZWRnZVByb2ZpbGUpOworICAgIAogICAgIC8vIE5vdGUgdGhhdCBkZXNwaXRlIHJlcXVp
cmluZyB0aGF0IHRoZSBsb2NrZXIgaXMgaGVsZCwgdGhpcyBjb2RlIGlzIHJhY3kgd2l0aCByZXNw
ZWN0CiAgICAgLy8gdG8gdGhlIENhbGxMaW5rSW5mbzogaXQgbWF5IGdldCBjbGVhcmVkIHdoaWxl
IHRoaXMgY29kZSBydW5zISBUaGlzIGlzIGJlY2F1c2UKICAgICAvLyBDYWxsTGlua0luZm86OnVu
bGluaygpIG1heSBiZSBjYWxsZWQgZnJvbSBhIGRpZmZlcmVudCBDb2RlQmxvY2sgdGhhbiB0aGUg
b25lIHRoYXQgb3ducwpAQCAtMTc3LDcgKzE1Nyw3IEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5r
U3RhdHVzOjpjb21wdXRlRm8KICAgICAKICAgICBKU0Z1bmN0aW9uKiB0YXJnZXQgPSBjYWxsTGlu
a0luZm8ubGFzdFNlZW5DYWxsZWUuZ2V0KCk7CiAgICAgaWYgKCF0YXJnZXQpCi0gICAgICAgIHJl
dHVybiBDYWxsTGlua1N0YXR1cygpOworICAgICAgICByZXR1cm4gdGFrZXNTbG93UGF0aCgpOwog
ICAgIAogICAgIGlmIChjYWxsTGlua0luZm8uaGFzU2VlbkNsb3N1cmUpCiAgICAgICAgIHJldHVy
biBDYWxsTGlua1N0YXR1cyh0YXJnZXQtPmV4ZWN1dGFibGUoKSk7CkBAIC0xODUsMTUgKzE2NSwz
MSBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvCiAgICAgcmV0dXJu
IENhbGxMaW5rU3RhdHVzKHRhcmdldCk7CiB9CiAKLUNhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3Rh
dHVzOjpjb21wdXRlRm9yKAotICAgIGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwg
Q2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIEV4aXRTaXRlRGF0YSBleGl0U2l0ZURhdGEpCitD
YWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21DYWxsRWRnZVByb2ZpbGUo
Q2FsbEVkZ2VQcm9maWxlKiBlZGdlUHJvZmlsZSkKIHsKLSAgICBpZiAoZXhpdFNpdGVEYXRhLm1f
dGFrZXNTbG93UGF0aCkKKyAgICAvLyBUbyBkbyBhbnl0aGluZyBtZWFuaW5nZnVsLCB3ZSByZXF1
aXJlIHRoYXQgdGhlIG1ham9yaXR5IG9mIGNhbGxzIGFyZSB0byBzb21ldGhpbmcgd2UKKyAgICAv
LyBrbm93IGhvdyB0byBoYW5kbGUuCisgICAgdW5zaWduZWQgbnVtQ2FsbHNUb0tub3duID0gZWRn
ZVByb2ZpbGUtPm51bUNhbGxzVG9Lbm93bkNlbGxzKCk7CisgICAgdW5zaWduZWQgbnVtQ2FsbHNU
b1Vua25vd24gPSBlZGdlUHJvZmlsZS0+bnVtQ2FsbHNUb05vdENlbGwoKSArIGVkZ2VQcm9maWxl
LT5udW1DYWxsc1RvVW5rbm93bkNlbGwoKTsKKyAgICBpZiAobnVtQ2FsbHNUb0tub3duIDw9IG51
bUNhbGxzVG9Vbmtub3duKQogICAgICAgICByZXR1cm4gdGFrZXNTbG93UGF0aCgpOwogICAgIAor
ICAgIENhbGxMaW5rU3RhdHVzIHJlc3VsdDsKKyAgICByZXN1bHQubV9lZGdlcyA9IGVkZ2VQcm9m
aWxlLT5jYWxsRWRnZXMoKTsKKyAgICByZXN1bHQubV9jb3VsZFRha2VTbG93UGF0aCA9ICEhbnVt
Q2FsbHNUb1Vua25vd247CisgICAgcmVzdWx0Lm1fY2FuVHJ1c3RDb3VudHMgPSB0cnVlOworICAg
IAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0NhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVz
Ojpjb21wdXRlRm9yKAorICAgIGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgQ2Fs
bExpbmtJbmZvJiBjYWxsTGlua0luZm8sIEV4aXRTaXRlRGF0YSBleGl0U2l0ZURhdGEpCit7CiAg
ICAgQ2FsbExpbmtTdGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZvcihsb2NrZXIsIGNhbGxMaW5rSW5m
byk7CiAgICAgaWYgKGV4aXRTaXRlRGF0YS5tX2JhZEZ1bmN0aW9uKQogICAgICAgICByZXN1bHQu
bWFrZUNsb3N1cmVDYWxsKCk7CisgICAgaWYgKGV4aXRTaXRlRGF0YS5tX3Rha2VzU2xvd1BhdGgp
CisgICAgICAgIHJlc3VsdC5tX2NvdWxkVGFrZVNsb3dQYXRoID0gdHJ1ZTsKICAgICAKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQpAQCAtMjU2LDYgKzI1MiwzMiBAQCBDYWxsTGlua1N0YXR1cyBDYWxs
TGlua1N0YXR1czo6Y29tcHV0ZUZvCiAgICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9j
aywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBiYXNlbGluZU1hcCk7CiB9CiAKK2Jvb2wgQ2Fs
bExpbmtTdGF0dXM6OmlzQ2xvc3VyZUNhbGwoKSBjb25zdAoreworICAgIGZvciAodW5zaWduZWQg
aSA9IG1fZWRnZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIGlmIChtX2VkZ2VzW2ldLmNhbGxl
ZSgpLmlzQ2xvc3VyZUNhbGwoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQ2FsbExpbmtTdGF0dXM6Om1ha2VDbG9zdXJlQ2Fs
bCgpCit7CisgICAgQVNTRVJUKCFtX2lzUHJvdmVkKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBt
X2VkZ2VzLnNpemUoKTsgaS0tOykKKyAgICAgICAgbV9lZGdlc1tpXSA9IG1fZWRnZXNbaV0uZGVz
cGVjaWZpZWRDbG9zdXJlKCk7CisgICAgCisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAg
ICAgICAgLy8gRG9pbmcgdGhpcyBzaG91bGQgbm90IGhhdmUgY3JlYXRlZCBkdXBsaWNhdGVzLCBi
ZWNhdXNlIHRoZSBDYWxsRWRnZVByb2ZpbGUKKyAgICAgICAgLy8gc2hvdWxkIGRlc3BlY2lmeSBj
bG9zdXJlcyBpZiBkb2luZyBzbyB3b3VsZCByZWR1Y2UgdGhlIG51bWJlciBvZiBrbm93biBjYWxs
ZWVzLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9lZGdlcy5zaXplKCk7ICsr
aSkgeworICAgICAgICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFudCA9IG1fZWRnZXNbaV0uY2FsbGVl
KCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSBpICsgMTsgaiA8IG1fZWRnZXMuc2l6
ZSgpOyArK2opCisgICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQgIT0gbV9lZGdlc1tqXS5j
YWxsZWUoKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgQ2FsbExpbmtTdGF0dXM6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBpZiAoIWlzU2V0KCkpIHsKQEAgLTI3
MSwxNCArMjkzLDcgQEAgdm9pZCBDYWxsTGlua1N0YXR1czo6ZHVtcChQcmludFN0cmVhbSYgbwog
ICAgIGlmIChtX2NvdWxkVGFrZVNsb3dQYXRoKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsICJD
b3VsZCBUYWtlIFNsb3cgUGF0aCIpOwogICAgIAotICAgIGlmIChtX2NhbGxUYXJnZXQpCi0gICAg
ICAgIG91dC5wcmludChjb21tYSwgIktub3duIHRhcmdldDogIiwgbV9jYWxsVGFyZ2V0KTsKLSAg
ICAKLSAgICBpZiAobV9leGVjdXRhYmxlKSB7Ci0gICAgICAgIG91dC5wcmludChjb21tYSwgIkV4
ZWN1dGFibGUvQ2FsbEhhc2g6ICIsIFJhd1BvaW50ZXIobV9leGVjdXRhYmxlKSk7Ci0gICAgICAg
IGlmICghaXNDb21waWxhdGlvblRocmVhZCgpKQotICAgICAgICAgICAgb3V0LnByaW50KCIvIiwg
bV9leGVjdXRhYmxlLT5oYXNoRm9yKENvZGVGb3JDYWxsKSk7Ci0gICAgfQorICAgIG91dC5wcmlu
dChsaXN0RHVtcChtX2VkZ2VzKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHJldmlz
aW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0
YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw5ICs0Niw5IEBAIHN0cnVjdCBDYWxsTGlua0lu
Zm87CiBjbGFzcyBDYWxsTGlua1N0YXR1cyB7CiBwdWJsaWM6CiAgICAgQ2FsbExpbmtTdGF0dXMo
KQotICAgICAgICA6IG1fZXhlY3V0YWJsZSgwKQotICAgICAgICAsIG1fY291bGRUYWtlU2xvd1Bh
dGgoZmFsc2UpCisgICAgICAgIDogbV9jb3VsZFRha2VTbG93UGF0aChmYWxzZSkKICAgICAgICAg
LCBtX2lzUHJvdmVkKGZhbHNlKQorICAgICAgICAsIG1fY2FuVHJ1c3RDb3VudHMoZmFsc2UpCiAg
ICAgewogICAgIH0KICAgICAKQEAgLTYxLDEwICs2MSwxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAg
ZXhwbGljaXQgQ2FsbExpbmtTdGF0dXMoSlNWYWx1ZSk7CiAgICAgCi0gICAgQ2FsbExpbmtTdGF0
dXMoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUpCi0gICAgICAgIDogbV9leGVjdXRhYmxlKGV4
ZWN1dGFibGUpCisgICAgQ2FsbExpbmtTdGF0dXMoQ2FsbFZhcmlhbnQgdmFyaWFudCkKKyAgICAg
ICAgOiBtX2VkZ2VzKDEsIENhbGxFZGdlKHZhcmlhbnQsIDEpKQogICAgICAgICAsIG1fY291bGRU
YWtlU2xvd1BhdGgoZmFsc2UpCiAgICAgICAgICwgbV9pc1Byb3ZlZChmYWxzZSkKKyAgICAgICAg
LCBtX2NhblRydXN0Q291bnRzKGZhbHNlKQogICAgIHsKICAgICB9CiAgICAgCkBAIC0xMDcsMzcg
KzEwOCwzNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3Io
CiAgICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIGNvbnN0IENhbGxMaW5rSW5mb01hcCYs
IGNvbnN0IENvbnRleHRNYXAmKTsKICAgICAKLSAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1
cm4gbV9jYWxsVGFyZ2V0IHx8IG1fZXhlY3V0YWJsZSB8fCBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9
CisgICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuICFtX2VkZ2VzLmlzRW1wdHkoKSB8fCBt
X2NvdWxkVGFrZVNsb3dQYXRoOyB9CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7
IHJldHVybiAhaXNTZXQoKTsgfQogICAgIAogICAgIGJvb2wgY291bGRUYWtlU2xvd1BhdGgoKSBj
b25zdCB7IHJldHVybiBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9Ci0gICAgYm9vbCBpc0Nsb3N1cmVD
YWxsKCkgY29uc3QgeyByZXR1cm4gbV9leGVjdXRhYmxlICYmICFtX2NhbGxUYXJnZXQ7IH0KICAg
ICAKLSAgICBKU1ZhbHVlIGNhbGxUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxUYXJnZXQ7
IH0KLSAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbigpIGNvbnN0OwotICAgIEludGVybmFsRnVuY3Rp
b24qIGludGVybmFsRnVuY3Rpb24oKSBjb25zdDsKLSAgICBJbnRyaW5zaWMgaW50cmluc2ljRm9y
KENvZGVTcGVjaWFsaXphdGlvbktpbmQpIGNvbnN0OwotICAgIEV4ZWN1dGFibGVCYXNlKiBleGVj
dXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9leGVjdXRhYmxlOyB9CisgICAgQ2FsbEVkZ2VMaXN0
IGVkZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9lZGdlczsgfQorICAgIHVuc2lnbmVkIHNpemUoKSBj
b25zdCB7IHJldHVybiBtX2VkZ2VzLnNpemUoKTsgfQorICAgIENhbGxFZGdlIGF0KHVuc2lnbmVk
IGkpIGNvbnN0IHsgcmV0dXJuIG1fZWRnZXNbaV07IH0KKyAgICBDYWxsRWRnZSBvcGVyYXRvcltd
KHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIGF0KGkpOyB9CiAgICAgYm9vbCBpc1Byb3ZlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNQcm92ZWQ7IH0KLSAgICBib29sIGNhbk9wdGltaXplKCkgY29u
c3QgeyByZXR1cm4gKG1fY2FsbFRhcmdldCB8fCBtX2V4ZWN1dGFibGUpICYmICFtX2NvdWxkVGFr
ZVNsb3dQYXRoOyB9CisgICAgYm9vbCBjYW5PcHRpbWl6ZSgpIGNvbnN0IHsgcmV0dXJuICFtX2Vk
Z2VzLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgY2FuVHJ1c3RDb3VudHMoKSBjb25zdCB7IHJldHVy
biBtX2NhblRydXN0Q291bnRzOyB9CisgICAgCisgICAgYm9vbCBpc0Nsb3N1cmVDYWxsKCkgY29u
c3Q7IC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgY2FsbGVlIGlzIGEgY2xvc3VyZSBjYWxsLgogICAg
IAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKLSAg
ICB2b2lkIG1ha2VDbG9zdXJlQ2FsbCgpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1faXNQcm92
ZWQpOwotICAgICAgICAvLyBUdXJuIHRoaXMgaW50byBhIGNsb3N1cmUgY2FsbC4KLSAgICAgICAg
bV9jYWxsVGFyZ2V0ID0gSlNWYWx1ZSgpOwotICAgIH0KKyAgICB2b2lkIG1ha2VDbG9zdXJlQ2Fs
bCgpOwogICAgIAogICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRnJvbUxMSW50KGNv
bnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4KTsKKyNpZiBFTkFCTEUoSklUKQorICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRl
RnJvbUNhbGxFZGdlUHJvZmlsZShDYWxsRWRnZVByb2ZpbGUqKTsKKyNlbmRpZgogICAgIAotICAg
IEpTVmFsdWUgbV9jYWxsVGFyZ2V0OwotICAgIEV4ZWN1dGFibGVCYXNlKiBtX2V4ZWN1dGFibGU7
CisgICAgQ2FsbEVkZ2VMaXN0IG1fZWRnZXM7CiAgICAgYm9vbCBtX2NvdWxkVGFrZVNsb3dQYXRo
OwogICAgIGJvb2wgbV9pc1Byb3ZlZDsKKyAgICBib29sIG1fY2FuVHJ1c3RDb3VudHM7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsVmFyaWFudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxWYXJpYW50LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2FsbFZhcmlhbnQuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK3ZvaWQgQ2FsbFZhcmlhbnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sK
KyAgICBpZiAoISp0aGlzKSB7CisgICAgICAgIG91dC5wcmludCgibnVsbCIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChJbnRlcm5hbEZ1bmN0aW9uKiBpbnRlcm5hbEZ1
bmN0aW9uID0gdGhpcy0+aW50ZXJuYWxGdW5jdGlvbigpKSB7CisgICAgICAgIG91dC5wcmludCgi
SW50ZXJuYWxGdW5jdGlvbjogIiwgSlNWYWx1ZShpbnRlcm5hbEZ1bmN0aW9uKSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gdGhp
cy0+ZnVuY3Rpb24oKSkgeworICAgICAgICBvdXQucHJpbnQoIihGdW5jdGlvbjogIiwgSlNWYWx1
ZShmdW5jdGlvbiksICI7IEV4ZWN1dGFibGU6ICIsICpleGVjdXRhYmxlKCksICIpIik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgb3V0LnByaW50KCJFeGVjdXRhYmxlOiAiLCAq
ZXhlY3V0YWJsZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBDYWxsVmFyaWFudF9oCisjZGVmaW5lIENhbGxWYXJpYW50X2gK
KworI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRl
ICJKU0Z1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBDYWxsVmFyaWFudCB7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgQ2FsbFZhcmlhbnQoSlNDZWxsKiBjYWxsZWUgPSBudWxs
cHRyKQorICAgICAgICA6IG1fY2FsbGVlKGNhbGxlZSkKKyAgICB7CisgICAgfQorICAgIAorICAg
IENhbGxWYXJpYW50KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgOiBt
X2NhbGxlZShkZWxldGVkVG9rZW4oKSkKKyAgICB7CisgICAgfQorICAgIAorICAgIGJvb2wgb3Bl
cmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fY2FsbGVlOyB9CisgICAgCisgICAgLy8gSWYgdGhp
cyB2YXJpYW50IHJlZmVycyB0byBhIGZ1bmN0aW9uLCBjaGFuZ2UgaXQgdG8gcmVmZXIgdG8gaXRz
IGV4ZWN1dGFibGUuCisgICAgQUxXQVlTX0lOTElORSBDYWxsVmFyaWFudCBkZXNwZWNpZmllZENs
b3N1cmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fY2FsbGVlLT50eXBlKCkgPT0gSlNG
dW5jdGlvblR5cGUpCisgICAgICAgICAgICByZXR1cm4gQ2FsbFZhcmlhbnQoanNDYXN0PEpTRnVu
Y3Rpb24qPihtX2NhbGxlZSktPmV4ZWN1dGFibGUoKSk7CisgICAgICAgIHJldHVybiAqdGhpczsK
KyAgICB9CisgICAgCisgICAgSlNDZWxsKiByYXdDYWxsZWVDZWxsKCkgY29uc3QgeyByZXR1cm4g
bV9jYWxsZWU7IH0KKyAgICAKKyAgICBJbnRlcm5hbEZ1bmN0aW9uKiBpbnRlcm5hbEZ1bmN0aW9u
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEludGVybmFsRnVu
Y3Rpb24qPihtX2NhbGxlZSk7CisgICAgfQorICAgIAorICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9u
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24q
PihtX2NhbGxlZSk7CisgICAgfQorICAgIAorICAgIGJvb2wgaXNDbG9zdXJlQ2FsbCgpIGNvbnN0
IHsgcmV0dXJuICEhanNEeW5hbWljQ2FzdDxFeGVjdXRhYmxlQmFzZSo+KG1fY2FsbGVlKTsgfQor
ICAgIAorICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIGlmIChKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IHRoaXMtPmZ1bmN0aW9uKCkpCisgICAgICAg
ICAgICByZXR1cm4gZnVuY3Rpb24tPmV4ZWN1dGFibGUoKTsKKyAgICAgICAgcmV0dXJuIGpzRHlu
YW1pY0Nhc3Q8RXhlY3V0YWJsZUJhc2UqPihtX2NhbGxlZSk7CisgICAgfQorICAgIAorICAgIEpT
Q2VsbCogbm9uRXhlY3V0YWJsZUNhbGxlZSgpIGNvbnN0CisgICAgeworICAgICAgICBSRUxFQVNF
X0FTU0VSVCghaXNDbG9zdXJlQ2FsbCgpKTsKKyAgICAgICAgcmV0dXJuIG1fY2FsbGVlOworICAg
IH0KKyAgICAKKyAgICBJbnRyaW5zaWMgaW50cmluc2ljRm9yKENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChFeGVjdXRhYmxlQmFzZSogZXhlY3V0
YWJsZSA9IHRoaXMtPmV4ZWN1dGFibGUoKSkKKyAgICAgICAgICAgIHJldHVybiBleGVjdXRhYmxl
LT5pbnRyaW5zaWNGb3Ioa2luZCk7CisgICAgICAgIHJldHVybiBOb0ludHJpbnNpYzsKKyAgICB9
CisgICAgCisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxl
Kj4oZXhlY3V0YWJsZSgpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0OworICAgIAorICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY2FsbGVlID09IGRlbGV0ZWRUb2tlbigpOwor
ICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVy
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY2FsbGVlID09IG90aGVyLm1fY2FsbGVl
OworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ2FsbFZhcmlhbnQmIG90
aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAg
IH0KKyAgICAKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBXVEY6OlB0ckhhc2g8SlNDZWxsKj46Omhhc2gobV9jYWxsZWUpOworICAgIH0KKyAgICAKK3By
aXZhdGU6CisgICAgc3RhdGljIEpTQ2VsbCogZGVsZXRlZFRva2VuKCkgeyByZXR1cm4gYml0d2lz
ZV9jYXN0PEpTQ2VsbCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpOyB9CisgICAgICAgICAg
ICAgICAgICAgCisgICAgSlNDZWxsKiBtX2NhbGxlZTsKK307CisKK3N0cnVjdCBDYWxsVmFyaWFu
dEhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IENhbGxWYXJpYW50JiBrZXkp
IHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBDYWxs
VmFyaWFudCYgYSwgY29uc3QgQ2FsbFZhcmlhbnQmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAg
IHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsK
K307CisKK3R5cGVkZWYgVmVjdG9yPENhbGxWYXJpYW50LCAxPiBDYWxsVmFyaWFudExpc3Q7CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8
SlNDOjpDYWxsVmFyaWFudD4geworICAgIHR5cGVkZWYgSlNDOjpDYWxsVmFyaWFudEhhc2ggSGFz
aDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRzOwordGVtcGxh
dGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6OkNhbGxWYXJpYW50PiA6IFNpbXBsZUNsYXNzSGFz
aFRyYWl0czxKU0M6OkNhbGxWYXJpYW50PiB7IH07CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisj
ZW5kaWYgLy8gQ2FsbFZhcmlhbnRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRXhpdEtpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRXhpdEtpbmQuaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V4aXRLaW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiBlbnVtIEV4aXRLaW5kIDogdWludDhfdCB7CiAgICAgRXhpdEtpbmRV
bnNldCwKICAgICBCYWRUeXBlLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSBhIHR5cGUgcHJlZGljdGlv
biB3YXMgd3JvbmcuCi0gICAgQmFkRnVuY3Rpb24sIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIG1h
ZGUgYW4gaW5jb3JyZWN0IGFzc3VtcHRpb24gYWJvdXQgd2hhdCBmdW5jdGlvbiB3ZSB3b3VsZCBz
ZWUuCisgICAgQmFkQ2VsbCwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2UgbWFkZSBhbiBpbmNvcnJl
Y3QgYXNzdW1wdGlvbiBhYm91dCB3aGF0IGNlbGwgd2Ugd291bGQgc2VlLiBVc3VhbGx5IHVzZWQg
Zm9yIGZ1bmN0aW9uIGNoZWNrcy4KICAgICBCYWRFeGVjdXRhYmxlLCAvLyBXZSBleGl0ZWQgYmVj
YXVzZSB3ZSBtYWRlIGFuIGluY29ycmVjdCBhc3N1bXB0aW9uIGFib3V0IHdoYXQgZXhlY3V0YWJs
ZSB3ZSB3b3VsZCBzZWUuCiAgICAgQmFkQ2FjaGUsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIGFuIGlu
bGluZSBjYWNoZSB3YXMgd3JvbmcuCiAgICAgQmFkQ29uc3RhbnRDYWNoZSwgLy8gV2UgZXhpdGVk
IGJlY2F1c2UgYSBjYWNoZSBvbiBhIHdlYWsgY29uc3RhbnQgKHVzdWFsbHkgYSBwcm90b3R5cGUp
IHdhcyB3cm9uZy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE3MjE3NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMTQ2MCwxNCArMTQ2MCw2IEBAIGJvb2wgQWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNw
ZWNJbnQzMik7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKLSAgICBjYXNlIENoZWNrRXhlY3V0
YWJsZTogewotICAgICAgICAvLyBGSVhNRTogV2UgY291bGQgdHJhY2sgZXhlY3V0YWJsZXMgaW4g
QWJzdHJhY3RWYWx1ZSwgd2hpY2ggd291bGQgYWxsb3cgdXMgdG8gZ2V0IHJpZCBvZiB0aGVzZSBj
aGVja3MKLSAgICAgICAgLy8gbW9yZSB0aG9yb3VnaGx5LiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MjAwCi0gICAgICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBlbGlt
aW5hdGUgdGhlc2UgZW50aXJlbHkgaWYgd2Uga25vdyB0aGUgZXhhY3QgdmFsdWUgdGhhdCBmbG93
cyBpbnRvIHRoaXMuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDYyMDEKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCiAgICAgY2FzZSBDaGVja1N0
cnVjdHVyZTogewogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gcHJvcGFn
YXRlIHRoZSBzdHJ1Y3R1cmUgc2V0cyBvZiBjb25zdGFudHMgKGkuZS4gcHJvdG90eXBlcykuCiAg
ICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CkBA
IC0xNzI3LDE2ICsxNzE5LDI4IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHkKICAgICAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgorICAgICAgICBK
U1ZhbHVlIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAg
aWYgKHZhbHVlKSB7CisgICAgICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzRHluYW1p
Y0Nhc3Q8SlNGdW5jdGlvbio+KHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChmdW5jdGlvbikgewor
ICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6ZShmdW5jdGlv
bi0+ZXhlY3V0YWJsZSgpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNDZWxsT3RoZXIp
OworICAgICAgICBicmVhazsKICAgICAKLSAgICBjYXNlIENoZWNrRnVuY3Rpb246IHsKKyAgICBj
YXNlIENoZWNrQ2VsbDogewogICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZm9yTm9kZShub2RlLT5j
aGlsZDEoKSkudmFsdWUoKTsKLSAgICAgICAgaWYgKHZhbHVlID09IG5vZGUtPmZ1bmN0aW9uKCkt
PnZhbHVlKCkpIHsKKyAgICAgICAgaWYgKHZhbHVlID09IG5vZGUtPmNlbGxPcGVyYW5kKCktPnZh
bHVlKCkpIHsKICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CiAg
ICAgICAgICAgICBBU1NFUlQodmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgCi0gICAgICAgIGZpbHRlckJ5VmFsdWUobm9kZS0+Y2hpbGQxKCksICpub2RlLT5m
dW5jdGlvbigpKTsKKyAgICAgICAgZmlsdGVyQnlWYWx1ZShub2RlLT5jaGlsZDEoKSwgKm5vZGUt
PmNlbGxPcGVyYW5kKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAtMTkw
Miw2ICsxOTA2LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQog
ICAgICAgICBicmVhazsKIAogICAgIGNhc2UgRm9yY2VPU1JFeGl0OgorICAgIGNhc2UgQ2hlY2tC
YWRDZWxsOgogICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwogICAgICAgICBicmVh
azsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxv
Y2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxv
Y2suaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
YXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw2ICsxMDYsMTMgQEAgc3RydWN0IEJh
c2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIAogICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdDsKICAgICAKKyAgICB2b2lkIGRpZExpbmsoKQorICAgIHsKKyNp
ZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIGlzTGlua2VkID0gdHJ1ZTsKKyNlbmRpZgorICAg
IH0KKyAgICAKICAgICAvLyBUaGlzIHZhbHVlIGlzIHVzZWQgaW50ZXJuYWxseSBmb3IgYmxvY2sg
bGlua2luZyBhbmQgT1NSIGVudHJ5LiBJdCBpcyBtb3N0bHkgbWVhbmluZ2xlc3MKICAgICAvLyBm
b3Igb3RoZXIgcHVycG9zZXMgZHVlIHRvIGlubGluaW5nLgogICAgIHVuc2lnbmVkIGJ5dGVjb2Rl
QmVnaW47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OCwxNCArMTc4LDIw
IEBAIHByaXZhdGU6CiAgICAgICAgIE5vZGUqIGNhbGxUYXJnZXQsIGludCBhcmdDb3VudCwgaW50
IHJlZ2lzdGVyT2Zmc2V0LCBDYWxsTGlua1N0YXR1cyk7CiAgICAgdm9pZCBoYW5kbGVDYWxsKGlu
dCByZXN1bHQsIE5vZGVUeXBlIG9wLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCB1bnNpZ25lZCBp
bnN0cnVjdGlvblNpemUsIGludCBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zm
c2V0KTsKICAgICB2b2lkIGhhbmRsZUNhbGwoSW5zdHJ1Y3Rpb24qIHBjLCBOb2RlVHlwZSBvcCwg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCk7Ci0gICAgdm9pZCBlbWl0RnVuY3Rpb25DaGVja3MoY29u
c3QgQ2FsbExpbmtTdGF0dXMmLCBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgcmVnaXN0ZXJPZmZzZXQs
IENvZGVTcGVjaWFsaXphdGlvbktpbmQpOworICAgIHZvaWQgZW1pdEZ1bmN0aW9uQ2hlY2tzKENh
bGxWYXJpYW50LCBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENvZGVTcGVj
aWFsaXphdGlvbktpbmQpOworICAgIHZvaWQgdW5kb0Z1bmN0aW9uQ2hlY2tzKENhbGxWYXJpYW50
KTsKICAgICB2b2lkIGVtaXRBcmd1bWVudFBoYW50b21zKGludCByZWdpc3Rlck9mZnNldCwgaW50
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKKyAg
ICB1bnNpZ25lZCBpbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQsIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7IC8vIFJldHVybiBVSU5UX01BWCBp
ZiBpdCdzIG5vdCBhbiBpbmxpbmluZyBjYW5kaWRhdGUuIEJ5IGNvbnZlbnRpb24sIGludHJpbnNp
Y3MgaGF2ZSBhIGNvc3Qgb2YgMS4KICAgICAvLyBIYW5kbGUgaW5saW5pbmcuIFJldHVybiB0cnVl
IGlmIGl0IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCi0gICAg
Ym9vbCBoYW5kbGVJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJh
bmQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFt
ZTo6S2luZCk7CisgICAgYm9vbCBoYW5kbGVJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwg
aW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQs
IE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBTcGVjdWxhdGVkVHlwZSBw
cmVkaWN0aW9uKTsKKyAgICBlbnVtIENhbGxlckxpbmthYmlsaXR5IHsgQ2FsbGVyRG9lc05vcm1h
bExpbmtpbmcsIENhbGxlckxpbmtzTWFudWFsbHkgfTsKKyAgICBib29sIGF0dGVtcHRUb0lubGlu
ZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyaWFu
dCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVu
c2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2luZCwgQ2FsbFRhaWxMaW5rYWJp
bGl0eSwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5j
ZSk7CisgICAgdm9pZCBpbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0
T3BlcmFuZCwgQ2FsbFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6Oktp
bmQsIENhbGxlckxpbmthYmlsaXR5KTsKKyAgICB2b2lkIGNhbmNlbExpbmtpbmdGb3JCbG9jayhJ
bmxpbmVTdGFja0VudHJ5KiwgQmFzaWNCbG9jayopOyAvLyBPbmx5IHdvcmtzIHdoZW4gdGhlIGdp
dmVuIGJsb2NrIGlzIHRoZSBsYXN0IG9uZSB0byBoYXZlIGJlZW4gYWRkZWQgZm9yIHRoYXQgaW5s
aW5lIHN0YWNrIGVudHJ5LgogICAgIC8vIEhhbmRsZSBpbnRyaW5zaWMgZnVuY3Rpb25zLiBSZXR1
cm4gdHJ1ZSBpZiBpdCBzdWNjZWVkZWQsIGZhbHNlIGlmIHdlIG5lZWQgdG8gcGxhbnQgYSBjYWxs
LgogICAgIGJvb2wgaGFuZGxlSW50cmluc2ljKGludCByZXN1bHRPcGVyYW5kLCBJbnRyaW5zaWMs
IGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVj
dWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKICAgICBib29sIGhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1
Y3RvcihpbnQgcmVzdWx0T3BlcmFuZCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9m
ZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBlZEFycmF5VHlwZSk7Ci0g
ICAgYm9vbCBoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oaW50IHJlc3VsdE9wZXJhbmQs
IEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCk7CisgICAgYm9vbCBoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oaW50IHJl
c3VsdE9wZXJhbmQsIEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7CiAgICAg
Tm9kZSogaGFuZGxlUHV0QnlPZmZzZXQoTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllciwg
UHJvcGVydHlPZmZzZXQsIE5vZGUqIHZhbHVlKTsKICAgICBOb2RlKiBoYW5kbGVHZXRCeU9mZnNl
dChTcGVjdWxhdGVkVHlwZSwgTm9kZSogYmFzZSwgY29uc3QgU3RydWN0dXJlU2V0JiwgdW5zaWdu
ZWQgaWRlbnRpZmllck51bWJlciwgUHJvcGVydHlPZmZzZXQsIE5vZGVUeXBlIG9wID0gR2V0QnlP
ZmZzZXQpOwogICAgIHZvaWQgaGFuZGxlR2V0QnlJZCgKQEAgLTYzNyw2ICs2NDMsMTMgQEAgcHJp
dmF0ZToKICAgICAgICAgCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQorICAgIAorICAg
IHZvaWQgcmVtb3ZlTGFzdE5vZGVGcm9tR3JhcGgoTm9kZVR5cGUgZXhwZWN0ZWROb2RlVHlwZSkK
KyAgICB7CisgICAgICAgIE5vZGUqIG5vZGUgPSBtX2N1cnJlbnRCbG9jay0+dGFrZUxhc3QoKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+b3AoKSA9PSBleHBlY3RlZE5vZGVUeXBlKTsK
KyAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOworICAgIH0KIAogICAgIHZv
aWQgYWRkVmFyQXJnQ2hpbGQoTm9kZSogY2hpbGQpCiAgICAgewpAQCAtODcxLDggKzg4NCw3IEBA
IHByaXZhdGU6CiAgICAgICAgIFZlY3RvcjxVbmxpbmtlZEJsb2NrPiBtX3VubGlua2VkQmxvY2tz
OwogICAgICAgICAKICAgICAgICAgLy8gUG90ZW50aWFsIGJsb2NrIGxpbmtpbmcgdGFyZ2V0cy4g
TXVzdCBiZSBzb3J0ZWQgYnkgYnl0ZWNvZGVCZWdpbiwgYW5kCi0gICAgICAgIC8vIGNhbm5vdCBo
YXZlIHR3byBibG9ja3MgdGhhdCBoYXZlIHRoZSBzYW1lIGJ5dGVjb2RlQmVnaW4uIEZvciB0aGlz
IHZlcnkKLSAgICAgICAgLy8gcmVhc29uLCB0aGlzIGlzIG5vdCBlcXVpdmFsZW50IHRvIAorICAg
ICAgICAvLyBjYW5ub3QgaGF2ZSB0d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRlY29k
ZUJlZ2luLgogICAgICAgICBWZWN0b3I8QmFzaWNCbG9jayo+IG1fYmxvY2tMaW5raW5nVGFyZ2V0
czsKICAgICAgICAgCiAgICAgICAgIC8vIElmIHRoZSBjYWxsc2l0ZSdzIGJhc2ljIGJsb2NrIHdh
cyBzcGxpdCBpbnRvIHR3bywgdGhlbiB0aGlzIHdpbGwgYmUKQEAgLTEwMzQsMzYgKzEwNDYsNyBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKAogICAgIAogICAgIHVuc2lnbmVkIG5l
eHRPZmZzZXQgPSBtX2N1cnJlbnRJbmRleCArIGluc3RydWN0aW9uU2l6ZTsKIAotICAgIGlmIChJ
bnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxMaW5rU3RhdHVzLmludGVybmFsRnVuY3Rp
b24oKSkgewotICAgICAgICBpZiAoaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKHJlc3Vs
dCwgZnVuY3Rpb24sIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
cHJlZGljdGlvbiwgc3BlY2lhbGl6YXRpb25LaW5kKSkgewotICAgICAgICAgICAgLy8gVGhpcyBw
aGFudG9taW5nIGhhcyB0byBiZSAqYWZ0ZXIqIHRoZSBjb2RlIGZvciB0aGUgaW50cmluc2ljLCB0
byBzaWduaWZ5IHRoYXQKLSAgICAgICAgICAgIC8vIHRoZSBpbnB1dHMgbXVzdCBiZSBrZXB0IGFs
aXZlIHdoYXRldmVyIGV4aXRzIHRoZSBpbnRyaW5zaWMgbWF5IGRvLgotICAgICAgICAgICAgYWRk
VG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0KTsKLSAgICAgICAgICAgIGVtaXRBcmd1bWVudFBo
YW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lh
bGl6YXRpb25LaW5kKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAK
LSAgICAgICAgLy8gQ2FuIG9ubHkgaGFuZGxlIHRoaXMgdXNpbmcgdGhlIGdlbmVyaWMgY2FsbCBo
YW5kbGVyLgotICAgICAgICBhZGRDYWxsKHJlc3VsdCwgb3AsIGNhbGxUYXJnZXQsIGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgICAgIAotICAgIEludHJpbnNpYyBpbnRyaW5zaWMgPSBjYWxs
TGlua1N0YXR1cy5pbnRyaW5zaWNGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKLQotICAgIEpTRnVu
Y3Rpb24qIGtub3duRnVuY3Rpb24gPSBudWxscHRyOwotICAgIGlmIChpbnRyaW5zaWMgIT0gTm9J
bnRyaW5zaWMpIHsKLSAgICAgICAgZW1pdEZ1bmN0aW9uQ2hlY2tzKGNhbGxMaW5rU3RhdHVzLCBj
YWxsVGFyZ2V0LCByZWdpc3Rlck9mZnNldCwgc3BlY2lhbGl6YXRpb25LaW5kKTsKLSAgICAgICAg
ICAgIAotICAgICAgICBpZiAoaGFuZGxlSW50cmluc2ljKHJlc3VsdCwgaW50cmluc2ljLCByZWdp
c3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHByZWRpY3Rpb24pKSB7Ci0g
ICAgICAgICAgICAvLyBUaGlzIHBoYW50b21pbmcgaGFzIHRvIGJlICphZnRlciogdGhlIGNvZGUg
Zm9yIHRoZSBpbnRyaW5zaWMsIHRvIHNpZ25pZnkgdGhhdAotICAgICAgICAgICAgLy8gdGhlIGlu
cHV0cyBtdXN0IGJlIGtlcHQgYWxpdmUgd2hhdGV2ZXIgZXhpdHMgdGhlIGludHJpbnNpYyBtYXkg
ZG8uCi0gICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXQpOwotICAgICAg
ICAgICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQpOwotICAgICAgICAgICAgaWYgKG1fZ3Jh
cGguY29tcGlsYXRpb24oKSkKLSAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCkt
Pm5vdGljZUlubGluZWRDYWxsKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICB9IGVsc2UgaWYgKGhhbmRsZUlubGluaW5nKGNhbGxUYXJnZXQsIHJlc3VsdCwgY2FsbExpbmtT
dGF0dXMsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbmV4dE9m
ZnNldCwga2luZCkpIHsKKyAgICBpZiAoaGFuZGxlSW5saW5pbmcoY2FsbFRhcmdldCwgcmVzdWx0
LCBjYWxsTGlua1N0YXR1cywgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBuZXh0T2Zmc2V0LCBvcCwga2luZCwgcHJlZGljdGlvbikpIHsKICAgICAgICAgaWYgKG1f
Z3JhcGguY29tcGlsYXRpb24oKSkKICAgICAgICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+
bm90aWNlSW5saW5lZENhbGwoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTA4NSwxMSArMTA2OCwx
MSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKAogICAgIH0KICAgICBOb2RlKiBj
YWxsID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwogCi0gICAgaWYgKGtub3duRnVu
Y3Rpb24pIAotICAgICAgICBjYWxsLT5naXZlS25vd25GdW5jdGlvbihrbm93bkZ1bmN0aW9uKTsK
KyAgICBpZiAoa25vd25GdW5jdGlvbikKKyAgICAgICAgY2FsbC0+c2V0Q2VsbE9wZXJhbmQobV9n
cmFwaC5mcmVlemUoa25vd25GdW5jdGlvbikpOwogfQogCi12b2lkIEJ5dGVDb2RlUGFyc2VyOjpl
bWl0RnVuY3Rpb25DaGVja3MoY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBO
b2RlKiBjYWxsVGFyZ2V0LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCkKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRGdW5jdGlvbkNoZWNrcyhDYWxsVmFy
aWFudCBjYWxsZWUsIE5vZGUqIGNhbGxUYXJnZXQsIGludCByZWdpc3Rlck9mZnNldCwgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIE5vZGUqIHRoaXNBcmd1bWVudDsKICAgICBp
ZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkKQEAgLTEwOTcsNTAgKzEwODAsNDEgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6ZW1pdEZ1bmN0aW9uQ2hlY2tzKAogICAgIGVsc2UKICAgICAgICAgdGhpc0Fy
Z3VtZW50ID0gMDsKIAotICAgIGlmIChjYWxsTGlua1N0YXR1cy5pc1Byb3ZlZCgpKSB7Ci0gICAg
ICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldCwgdGhpc0FyZ3VtZW50KTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBBU1NFUlQoY2FsbExpbmtTdGF0dXMuY2FuT3B0
aW1pemUoKSk7Ci0gICAgCi0gICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbExpbmtT
dGF0dXMuZnVuY3Rpb24oKSkKLSAgICAgICAgYWRkVG9HcmFwaChDaGVja0Z1bmN0aW9uLCBPcElu
Zm8obV9ncmFwaC5mcmVlemUoZnVuY3Rpb24pKSwgY2FsbFRhcmdldCwgdGhpc0FyZ3VtZW50KTsK
KyAgICBpZiAoIWNhbGxlZS5pc0Nvc3VyZUNhbGwoKSkKKyAgICAgICAgYWRkVG9HcmFwaChDaGVj
a0NlbGwsIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShjYWxsZWUuZnVuY3Rpb24oKSkpLCBjYWxsVGFy
Z2V0LCB0aGlzQXJndW1lbnQpOwogICAgIGVsc2UgewogICAgICAgICBBU1NFUlQoY2FsbExpbmtT
dGF0dXMuZXhlY3V0YWJsZSgpKTsKICAgICAgICAgCi0gICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tF
eGVjdXRhYmxlLCBPcEluZm8oY2FsbExpbmtTdGF0dXMuZXhlY3V0YWJsZSgpKSwgY2FsbFRhcmdl
dCwgdGhpc0FyZ3VtZW50KTsKKyAgICAgICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhj
YWxsZWUuZXhlY3V0YWJsZSgpKSwgYWRkVG9HcmFwaChHZXRFeGVjdXRhYmxlLCBjYWxsVGFyZ2V0
KSwgdGhpc0FyZ3VtZW50KTsKICAgICB9CiB9CiAKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OnVuZG9G
dW5jdGlvbkNoZWNrcyhDYWxsVmFyaWFudCBjYWxsZWUpCit7CisgICAgcmVtb3ZlTGFzdE5vZGVG
cm9tR3JhcGgoQ2hlY2tDZWxsKTsKKyAgICBpZiAoY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSkKKyAg
ICAgICAgcmVtb3ZlTGFzdE5vZGVGcm9tR3JhcGgoR2V0RXhlY3V0YWJsZSk7Cit9CisKIHZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OmVtaXRBcmd1bWVudFBoYW50b21zKGludCByZWdpc3Rlck9mZnNldCwg
aW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtp
bmQpCiB7CiAgICAgZm9yIChpbnQgaSA9IGtpbmQgPT0gQ29kZUZvckNhbGwgPyAwIDogMTsgaSA8
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOyArK2kpCiAgICAgICAgIGFkZFRvR3JhcGgoUGhh
bnRvbSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGksIHJlZ2lzdGVyT2Zmc2V0KSkp
OwogfQogCi1ib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlKiBjYWxsVGFy
Z2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlu
a1N0YXR1cywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kKQordW5z
aWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
KQogewogICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKICAgICAKLSAgICBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCA9IElubGluZUNhbGxGcmFt
ZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOwotICAgIAogICAgIGlmICh2ZXJib3NlKQot
ICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyBpbmxpbmluZyAiLCBjYWxsTGlua1N0YXR1cywg
IiBpbnRvICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOworICAgICAgICBkYXRhTG9nKCJD
b25zaWRlcmluZyBpbmxpbmluZyAiLCBjYWxsZWUsICIgaW50byAiLCBjdXJyZW50Q29kZU9yaWdp
bigpLCAiXG4iKTsKICAgICAKLSAgICAvLyBGaXJzdCwgdGhlIHJlYWxseSBzaW1wbGUgY2hlY2tz
OiBkbyB3ZSBoYXZlIGFuIGFjdHVhbCBKUyBmdW5jdGlvbj8KLSAgICBpZiAoIWNhbGxMaW5rU3Rh
dHVzLmV4ZWN1dGFibGUoKSkgeworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9
IGNhbGxlZS5mdW5jdGlvbkV4ZWN1dGFibGUoKTsKKyAgICBpZiAoIWV4ZWN1dGFibGUpIHsKICAg
ICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNh
dXNlIHRoZXJlIGlzIG5vIGV4ZWN1dGFibGUuXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSB0aGVyZSBpcyBubyBmdW5j
dGlvbiBleGVjdXRhYmxlLiIpOworICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQotICAg
IGlmIChjYWxsTGlua1N0YXR1cy5leGVjdXRhYmxlKCktPmlzSG9zdEZ1bmN0aW9uKCkpIHsKLSAg
ICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNh
dXNlIGl0J3MgYSBob3N0IGZ1bmN0aW9uLlxuIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0gICAgCi0gICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PEZ1
bmN0aW9uRXhlY3V0YWJsZSo+KGNhbGxMaW5rU3RhdHVzLmV4ZWN1dGFibGUoKSk7CiAgICAgCiAg
ICAgLy8gRG9lcyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyB3ZSdyZSBwYXNzaW5nIG1hdGNoIHRo
ZSBhcml0eSBvZiB0aGUgdGFyZ2V0PyBXZSBjdXJyZW50bHkKICAgICAvLyBpbmxpbmUgb25seSBp
ZiB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFs
IHRvIHRoZSBudW1iZXIKQEAgLTExNDgsNyArMTEyMiw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihleGVjdXRhYmxl
LT5wYXJhbWV0ZXJDb3VudCgpKSArIDEgPiBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykgewog
ICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJl
Y2F1c2Ugb2YgYXJpdHkgbWlzbWF0Y2guXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQogICAgIAogICAgIC8vIERvIHdlIGhhdmUgYSBj
b2RlIGJsb2NrLCBhbmQgZG9lcyB0aGUgY29kZSBibG9jaydzIHNpemUgbWF0Y2ggdGhlIGhldXJp
c3RpY3MvcmVxdWlyZW1lbnRzIGZvcgpAQCAtMTE1NywxOCArMTEzMSwxOCBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgLy8gaWYgd2UgaGFkIGEgc3RhdGlj
IHByb29mIG9mIHdoYXQgd2FzIGJlaW5nIGNhbGxlZDsgdGhpcyBtaWdodCBoYXBwZW4gZm9yIGV4
YW1wbGUgaWYgeW91IGNhbGwgYQogICAgIC8vIGdsb2JhbCBmdW5jdGlvbiwgd2hlcmUgd2F0Y2hw
b2ludGluZyBnaXZlcyB1cyBzdGF0aWMgaW5mb3JtYXRpb24uIE92ZXJhbGwsIGl0J3MgYSByYXJl
IGNhc2UKICAgICAvLyBiZWNhdXNlIHdlIGV4cGVjdCB0aGF0IGFueSBob3QgY2FsbGVlcyB3b3Vs
ZCBoYXZlIGFscmVhZHkgYmVlbiBjb21waWxlZC4KLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWN1dGFibGUtPmJhc2VsaW5lQ29kZUJsb2NrRm9yKHNwZWNpYWxpemF0aW9uS2luZCk7Cisg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5iYXNlbGluZUNvZGVCbG9ja0Zv
cihraW5kKTsKICAgICBpZiAoIWNvZGVCbG9jaykgewogICAgICAgICBpZiAodmVyYm9zZSkKICAg
ICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2Ugbm8gY29kZSBibG9jayBhdmFp
bGFibGUuXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gVUlOVF9N
QVg7CiAgICAgfQogICAgIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwgPSBpbmxpbmVG
dW5jdGlvbkZvckNhcGFiaWxpdHlMZXZlbCgKLSAgICAgICAgY29kZUJsb2NrLCBzcGVjaWFsaXph
dGlvbktpbmQsIGNhbGxMaW5rU3RhdHVzLmlzQ2xvc3VyZUNhbGwoKSk7CisgICAgICAgIGNvZGVC
bG9jaywga2luZywgY2FsbExpbmtTdGF0dXMuaXNDbG9zdXJlQ2FsbCgpKTsKICAgICBpZiAoIWNh
bklubGluZShjYXBhYmlsaXR5TGV2ZWwpKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAg
ICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSB0aGUgZnVuY3Rpb24gaXMgbm90IGlu
bGluZWFibGUuXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gVUlO
VF9NQVg7CiAgICAgfQogICAgIAogICAgIC8vIENoZWNrIGlmIHRoZSBjYWxsZXIgaXMgYWxyZWFk
eSB0b28gbGFyZ2UuIFdlIGRvIHRoaXMgY2hlY2sgaGVyZSBiZWNhdXNlIHRoYXQncyBqdXN0CkBA
IC0xMTc4LDcgKzExNTIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhO
b2RlCiAgICAgICAgIGNvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsK
ICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBi
ZWNhdXNlIHRoZSBjYWxsZXIgaXMgdG9vIGxhcmdlLlxuIik7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgIH0KICAgICAKICAgICAvLyBGSVhNRTog
dGhpcyBzaG91bGQgYmUgYmV0dGVyIGF0IHByZWRpY3RpbmcgaG93IG11Y2ggYmxvYXQgd2Ugd2ls
bCBpbnRyb2R1Y2UgYnkgaW5saW5pbmcKQEAgLTExOTcsNyArMTE3MSw3IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAgICAgaWYgKGRlcHRoID49IE9wdGlv
bnM6Om1heGltdW1JbmxpbmluZ0RlcHRoKCkpIHsKICAgICAgICAgICAgIGlmICh2ZXJib3NlKQog
ICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgZGVwdGggZXhjZWVk
ZWQuXG4iKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBV
SU5UX01BWDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGVudHJ5LT5leGVjdXRh
YmxlKCkgPT0gZXhlY3V0YWJsZSkgewpAQCAtMTIwNSwxOSArMTE3OSwyNiBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgICAgICAgICBpZiAocmVjdXJzaW9u
ID49IE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ1JlY3Vyc2lvbigpKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5n
IGJlY2F1c2UgcmVjdXJzaW9uIGRldGVjdGVkLlxuIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KICAgICAKICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgZGF0YUxv
ZygiICAgIENvbW1pdHRpbmcgdG8gaW5saW5pbmcuXG4iKTsKKyAgICAgICAgZGF0YUxvZygiICAg
IElubGluaW5nIHNob3VsZCBiZSBwb3NzaWJsZS5cbiIpOwogICAgIAotICAgIC8vIE5vdyB3ZSBr
bm93IHdpdGhvdXQgYSBkb3VidCB0aGF0IHdlIGFyZSBjb21taXR0ZWQgdG8gaW5saW5pbmcuIFNv
IGJlZ2luIHRoZSBwcm9jZXNzCi0gICAgLy8gYnkgY2hlY2tpbmcgdGhlIGNhbGxlZSAoaWYgbmVj
ZXNzYXJ5KSBhbmQgbWFraW5nIHN1cmUgdGhhdCBhcmd1bWVudHMgYW5kIHRoZSBjYWxsZWUKLSAg
ICAvLyBhcmUgZmx1c2hlZC4KLSAgICBlbWl0RnVuY3Rpb25DaGVja3MoY2FsbExpbmtTdGF0dXMs
IGNhbGxUYXJnZXROb2RlLCByZWdpc3Rlck9mZnNldCwgc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAg
ICAvLyBJdCBtaWdodCBiZSBwb3NzaWJsZSB0byBpbmxpbmUuCisgICAgcmV0dXJuIGNvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25Db3VudCgpOworfQorCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVD
YWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcmlhbnQg
Y2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgdW5zaWduZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIENhbGxl
ckxpbmthYmlsaXR5IGNhbGxlckxpbmthYmlsaXR5KQoreworICAgIENvZGVTcGVjaWFsaXphdGlv
bktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXphdGlv
bktpbmRGb3Ioa2luZCk7CisgICAgCisgICAgQVNTRVJUKGlubGluaW5nQ29zdChjYWxsZWUsIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQpICE9IFVJTlRfTUFY
KTsKICAgICAKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxlZS5mdW5jdGlvbkV4ZWN1
dGFibGUoKS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKKwogICAg
IC8vIEZJWE1FOiBEb24ndCBmbHVzaCBjb25zdGFudHMhCiAgICAgCiAgICAgaW50IGlubGluZUNh
bGxGcmFtZVN0YXJ0ID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKFZpcnR1YWxSZWdp
c3RlcihyZWdpc3Rlck9mZnNldCkpLm9mZnNldCgpICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVy
U2l6ZTsKQEAgLTEyMzMsNyArMTIxNCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
bGluaW5nKE5vZGUKICAgICAgICAgcmVzdWx0UmVnID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBP
cGVyYW5kKHJlc3VsdFJlZyk7CiAgICAgCiAgICAgSW5saW5lU3RhY2tFbnRyeSBpbmxpbmVTdGFj
a0VudHJ5KAotICAgICAgICB0aGlzLCBjb2RlQmxvY2ssIGNvZGVCbG9jaywgbV9ncmFwaC5sYXN0
QmxvY2soKSwgY2FsbExpbmtTdGF0dXMuZnVuY3Rpb24oKSwgcmVzdWx0UmVnLAorICAgICAgICB0
aGlzLCBjb2RlQmxvY2ssIGNvZGVCbG9jaywgbV9ncmFwaC5sYXN0QmxvY2soKSwgY2FsbGVlLmZ1
bmN0aW9uKCksIHJlc3VsdFJlZywKICAgICAgICAgKFZpcnR1YWxSZWdpc3RlcilpbmxpbmVDYWxs
RnJhbWVTdGFydCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGtpbmQpOwogICAgIAogICAg
IC8vIFRoaXMgaXMgd2hlcmUgdGhlIGFjdHVhbCBpbmxpbmluZyByZWFsbHkgaGFwcGVucy4KQEAg
LTEyNDcsOCArMTIyOCw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5v
ZGUKICAgICAKICAgICBSRUxFQVNFX0FTU0VSVCgKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+
bV9pbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwKLSAgICAgICAgPT0gY2FsbExpbmtTdGF0
dXMuaXNDbG9zdXJlQ2FsbCgpKTsKLSAgICBpZiAoY2FsbExpbmtTdGF0dXMuaXNDbG9zdXJlQ2Fs
bCgpKSB7CisgICAgICAgID09IGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpOworICAgIGlmIChjYWxs
ZWUuaXNDbG9zdXJlQ2FsbCgpKSB7CiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogY2FsbGVl
VmFyaWFibGUgPQogICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihKU1N0YWNrOjpDYWxs
ZWUpLCBjYWxsVGFyZ2V0Tm9kZSwgSW1tZWRpYXRlTmFrZWRTZXQpLT52YXJpYWJsZUFjY2Vzc0Rh
dGEoKTsKICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBzY29wZVZhcmlhYmxlID0KQEAgLTEy
NzYsMjAgKzEyNTcsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2Rl
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5Lm1fY2Fs
bHNpdGVCbG9ja0hlYWQtPmlzTGlua2VkKTsKICAgICAgICAgCi0gICAgICAgIC8vIEl0J3MgcG9z
c2libGUgdGhhdCB0aGUgY2FsbHNpdGUgYmxvY2sgaGVhZCBpcyBub3Qgb3duZWQgYnkgdGhlIGNh
bGxlci4KLSAgICAgICAgaWYgKCFpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLT5tX3VubGlua2Vk
QmxvY2tzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgLy8gSXQncyBkZWZpbml0ZWx5IG93bmVk
IGJ5IHRoZSBjYWxsZXIsIGJlY2F1c2UgdGhlIGNhbGxlciBjcmVhdGVkIG5ldyBibG9ja3MuCi0g
ICAgICAgICAgICAvLyBBc3NlcnQgdGhhdCB0aGlzIGFsbCBhZGRzIHVwLgotICAgICAgICAgICAg
QVNTRVJUKGlubGluZVN0YWNrRW50cnkubV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MubGFzdCgp
Lm1fYmxvY2sgPT0gaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxzaXRlQmxvY2tIZWFkKTsKLSAgICAg
ICAgICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tz
Lmxhc3QoKS5tX25lZWRzTm9ybWFsTGlua2luZyk7Ci0gICAgICAgICAgICBpbmxpbmVTdGFja0Vu
dHJ5Lm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX25lZWRzTm9ybWFsTGlua2lu
ZyA9IGZhbHNlOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gSXQncyBkZWZpbml0
ZWx5IG5vdCBvd25lZCBieSB0aGUgY2FsbGVyLiBUZWxsIHRoZSBjYWxsZXIgdGhhdCBoZSBkb2Vz
IG5vdAotICAgICAgICAgICAgLy8gbmVlZCB0byBsaW5rIGhpcyBjYWxsc2l0ZSBibG9jayBoZWFk
LCBiZWNhdXNlIHdlIGRpZCBpdCBmb3IgaGltLgotICAgICAgICAgICAgQVNTRVJUKGlubGluZVN0
YWNrRW50cnkubV9jYWxsZXItPm1fY2FsbHNpdGVCbG9ja0hlYWROZWVkc0xpbmtpbmcpOwotICAg
ICAgICAgICAgQVNTRVJUKGlubGluZVN0YWNrRW50cnkubV9jYWxsZXItPm1fY2FsbHNpdGVCbG9j
a0hlYWQgPT0gaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxzaXRlQmxvY2tIZWFkKTsKLSAgICAgICAg
ICAgIGlubGluZVN0YWNrRW50cnkubV9jYWxsZXItPm1fY2FsbHNpdGVCbG9ja0hlYWROZWVkc0xp
bmtpbmcgPSBmYWxzZTsKLSAgICAgICAgfQorICAgICAgICBpZiAoY2FsbGVyTGlua2FiaWxpdHkg
PT0gQ2FsbGVyRG9lc05vcm1hbExpbmtpbmcpCisgICAgICAgICAgICBjYW5jZWxMaW5raW5nRm9y
QmxvY2soaW5saW5lU3RhY2tUb3AubV9jYWxsZXIsIGlubGluZVN0YWNrRW50cnkubV9jYWxsc2l0
ZUJsb2NrSGVhZCk7CiAgICAgICAgIAogICAgICAgICBsaW5rQmxvY2tzKGlubGluZVN0YWNrRW50
cnkubV91bmxpbmtlZEJsb2NrcywgaW5saW5lU3RhY2tFbnRyeS5tX2Jsb2NrTGlua2luZ1Rhcmdl
dHMpOwogICAgIH0gZWxzZQpAQCAtMTMxNyw3ICsxMjg2LDYgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgIAogICAgIC8vIElmIHdlIGdldCB0byB0aGlzIHBv
aW50IHRoZW4gYWxsIGJsb2NrcyBtdXN0IGVuZCBpbiBzb21lIHNvcnQgb2YgdGVybWluYWxzLgog
ICAgIEFTU0VSVChsYXN0QmxvY2stPmxhc3QoKS0+aXNUZXJtaW5hbCgpKTsKLSAgICAKIAogICAg
IC8vIE5lZWQgdG8gY3JlYXRlIGEgbmV3IGJhc2ljIGJsb2NrIGZvciB0aGUgY29udGludWF0aW9u
IGF0IHRoZSBjYWxsZXIuCiAgICAgUmVmUHRyPEJhc2ljQmxvY2s+IGJsb2NrID0gYWRvcHRSZWYo
bmV3IEJhc2ljQmxvY2sobmV4dE9mZnNldCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCBQ
TmFOKSk7CkBAIC0xMzMzLDIwICsxMzAxLDIyNSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVJbmxpbmluZyhOb2RlCiAgICAgICAgIEFTU0VSVCghbm9kZS0+dGFyZ2V0QmxvY2soKSk7CiAg
ICAgICAgIG5vZGUtPnRhcmdldEJsb2NrKCkgPSBibG9jay5nZXQoKTsKICAgICAgICAgaW5saW5l
U3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzW2ldLm1fbmVlZHNFYXJseVJldHVybkxpbmtpbmcg
PSBmYWxzZTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgICAgIGJsb2NrVG9MaW5rLT5pc0xp
bmtlZCA9IHRydWU7Ci0jZW5kaWYKKyAgICAgICAgYmxvY2tUb0xpbmstPmRpZExpbmsoKTsKICAg
ICB9CiAgICAgCiAgICAgbV9jdXJyZW50QmxvY2sgPSBibG9jay5nZXQoKTsKICAgICBBU1NFUlQo
bV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5pc0VtcHR5
KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5s
YXN0KCktPmJ5dGVjb2RlQmVnaW4gPCBuZXh0T2Zmc2V0KTsKICAgICBtX2lubGluZVN0YWNrVG9w
LT5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5hcHBlbmQoVW5saW5rZWRCbG9jayhibG9jay5n
ZXQoKSkpOwotICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1Rh
cmdldHMuYXBwZW5kKGJsb2NrLmdldCgpKTsKKyAgICBpZiAoY2FsbGVyTGlua2FiaWxpdHkgPT0g
Q2FsbGVyRG9lc05vcm1hbExpbmtpbmcpCisgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2Fs
bGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuYXBwZW5kKGJsb2NrLmdldCgpKTsKICAgICBtX2dy
YXBoLmFwcGVuZEJsb2NrKGJsb2NrKTsKICAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7Cit9CisK
K3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OmNhbmNlbExpbmtpbmdGb3JCbG9jayhJbmxpbmVTdGFja0Vu
dHJ5KiBpbmxpbmVTdGFja0VudHJ5LCBCYXNpY0Jsb2NrKiBibG9jaykKK3sKKyAgICAvLyBJdCdz
IHBvc3NpYmxlIHRoYXQgdGhlIGNhbGxzaXRlIGJsb2NrIGhlYWQgaXMgbm90IG93bmVkIGJ5IHRo
ZSBjYWxsZXIuCisgICAgaWYgKCFpbmxpbmVTdGFja0VudHJ5LT5tX3VubGlua2VkQmxvY2tzLmlz
RW1wdHkoKSkgeworICAgICAgICAvLyBJdCdzIGRlZmluaXRlbHkgb3duZWQgYnkgdGhlIGNhbGxl
ciwgYmVjYXVzZSB0aGUgY2FsbGVyIGNyZWF0ZWQgbmV3IGJsb2Nrcy4KKyAgICAgICAgLy8gQXNz
ZXJ0IHRoYXQgdGhpcyBhbGwgYWRkcyB1cC4KKyAgICAgICAgQVNTRVJUKGlubGluZVN0YWNrRW50
cnktPm1fdW5saW5rZWRCbG9ja3MubGFzdCgpLm1fYmxvY2sgPT0gYmxvY2spOworICAgICAgICBB
U1NFUlQoaW5saW5lU3RhY2tFbnRyeS0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9uZWVkc05v
cm1hbExpbmtpbmcpOworICAgICAgICBpbmxpbmVTdGFja0VudHJ5LT5tX3VubGlua2VkQmxvY2tz
Lmxhc3QoKS5tX25lZWRzTm9ybWFsTGlua2luZyA9IGZhbHNlOworICAgIH0gZWxzZSB7CisgICAg
ICAgIC8vIEl0J3MgZGVmaW5pdGVseSBub3Qgb3duZWQgYnkgdGhlIGNhbGxlci4gVGVsbCB0aGUg
Y2FsbGVyIHRoYXQgaGUgZG9lcyBub3QKKyAgICAgICAgLy8gbmVlZCB0byBsaW5rIGhpcyBjYWxs
c2l0ZSBibG9jayBoZWFkLCBiZWNhdXNlIHdlIGRpZCBpdCBmb3IgaGltLgorICAgICAgICBBU1NF
UlQoaW5saW5lU3RhY2tFbnRyeS0+bV9jYWxsc2l0ZUJsb2NrSGVhZE5lZWRzTGlua2luZyk7Cisg
ICAgICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5LT5tX2NhbGxzaXRlQmxvY2tIZWFkID09IGJs
b2NrKTsKKyAgICAgICAgaW5saW5lU3RhY2tFbnRyeS0+bV9jYWxsc2l0ZUJsb2NrSGVhZE5lZWRz
TGlua2luZyA9IGZhbHNlOworICAgIH0KK30KKworYm9vbCBCeXRlQ29kZVBhcnNlcjo6YXR0ZW1w
dFRvSW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENh
bGxWYXJpYW50IGNhbGxlZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2luZCBr
aW5kLCBDYWxsZXJMaW5rYWJpbGl0eSBjYWxsZXJMaW5rYWJpbGl0eSwgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSkKK3sKKyAgICBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCA9IElubGluZUNhbGxGcmFtZTo6c3BlY2lh
bGl6YXRpb25LaW5kRm9yKGtpbmQpOworICAgIAorICAgIGlmICghaW5saW5pbmdCYWxhbmNlKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKEludGVybmFsRnVuY3Rpb24qIGZ1
bmN0aW9uID0gY2FsbGVlLmludGVybmFsRnVuY3Rpb24oKSkgeworICAgICAgICBpZiAoaGFuZGxl
Q29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKHJlc3VsdE9wZXJhbmQsIGZ1bmN0aW9uLCByZWdpc3Rl
ck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCkp
IHsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldE5vZGUpOworICAg
ICAgICAgICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgICAgICAgICAgaW5saW5p
bmdCYWxhbmNlLS07CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIEludHJpbnNpYyBpbnRyaW5zaWMgPSBj
YWxsZWUuaW50cmluc2ljRm9yKHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgaWYgKGludHJpbnNp
YyAhPSBOb0ludHJpbnNpYykgeworICAgICAgICBpZiAoaGFuZGxlSW50cmluc2ljKHJlc3VsdE9w
ZXJhbmQsIGludHJpbnNpYywgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBwcmVkaWN0aW9uKSkgeworICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxs
VGFyZ2V0Tm9kZSk7CisgICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9m
ZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7Cisg
ICAgICAgICAgICBpbmxpbmluZ0JhbGFuY2UtLTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgdW5zaWdu
ZWQgbXlJbmxpbmluZ0Nvc3QgPSBpbmxpbmluZ0Nvc3QoCisgICAgICAgIGNhbGxMaW5rU3RhdHVz
WzBdLmNhbGxlZSgpLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25L
aW5kKTsKKyAgICAKKyAgICBpZiAobXlJbmxpbmluZ0Nvc3QgPiBpbmxpbmluZ0JhbGFuY2UpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpbmxpbmVDYWxsKGNhbGxUYXJnZXROb2Rl
LCByZXN1bHRPcGVyYW5kLCBjYWxsTGlua1N0YXR1c1swXS5jYWxsZWUoKSwgcmVnaXN0ZXJPZmZz
ZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zmc2V0LCBraW5kLCBjYWxsZXJM
aW5rYWJpbGl0eSk7CisgICAgaW5saW5pbmdCYWxhbmNlIC09IG15SW5saW5pbmdDb3N0OworICAg
IHJldHVybiB0cnVlOworICAgIAorfQorCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxp
bmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IENhbGxM
aW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIE5vZGVUeXBlIGNhbGxP
cCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24p
Cit7CisgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQgPSBJbmxp
bmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5kKTsKKyAgICAKKyAgICBpZiAo
IWNhbGxMaW5rU3RhdHVzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAg
IHVuc2lnbmVkIGlubGluaW5nQmFsYW5jZSA9IE9wdGlvbnM6Om1heGltdW1GdW5jdGlvbkZvckNh
bGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCk7CisgICAgaWYgKHNwZWNpYWxpemF0
aW9uS2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KQorICAgICAgICBpbmxpbmluZ0JhbGFuY2UgPSBz
dGQ6Om1pbihpbmxpbmluZ0JhbGFuY2UsIE9wdGlvbnM6Om1heGltdW1GdW5jdGlvbkZvckNvbnN0
cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKSk7CisgICAgaWYgKGNhbGxMaW5r
U3RhdHVzLmlzQ2xvc3VyZUNhbGwoKSkKKyAgICAgICAgaW5saW5pbmdCYWxhbmNlID0gc3RkOjpt
aW4oaW5saW5pbmdCYWxhbmNlLCBPcHRpb25zOjptYXhpbXVtRnVuY3Rpb25Gb3JDbG9zdXJlQ2Fs
bElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKSk7CisgICAgCisgICAgLy8gRmlyc3Qg
Y2hlY2sgaWYgd2UgY2FuIGF2b2lkIGNyZWF0aW5nIGNvbnRyb2wgZmxvdy4gT3VyIGlubGluZXIg
ZG9lcyBzb21lIENGRworICAgIC8vIHNpbXBsaWZpY2F0aW9uIG9uIHRoZSBmbHkgYW5kIHRoaXMg
aGVscHMgcmVkdWNlIGNvbXBpbGUgdGltZXMsIGJ1dCB3ZSBjYW4gb25seSBsZXZlcmFnZQorICAg
IC8vIHRoaXMgaW4gY2FzZXMgd2hlcmUgd2UgZG9uJ3QgbmVlZCBjb250cm9sIGZsb3cgZGlhbW9u
ZHMgdG8gY2hlY2sgdGhlIGNhbGxlZS4KKyAgICBpZiAoIWNhbGxMaW5rU3RhdHVzLmNvdWxkVGFr
ZVNsb3dQYXRoKCkgJiYgY2FsbExpbmtTdGF0dXMuc2l6ZSgpID09IDEpIHsKKyAgICAgICAgaWYg
KCFjYWxsTGlua1N0YXR1cy5pc1Byb3ZlZCgpKSB7CisgICAgICAgICAgICBlbWl0RnVuY3Rpb25D
aGVja3MoCisgICAgICAgICAgICAgICAgY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVlKCksIGNhbGxU
YXJnZXROb2RlLCByZWdpc3Rlck9mZnNldCwgc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICAgICAg
fQorICAgICAgICBib29sIHJlc3VsdCA9IGF0dGVtcHRUb0lubGluZUNhbGwoCisgICAgICAgICAg
ICBjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0T3BlcmFuZCwgY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVl
KCksIHJlZ2lzdGVyT2Zmc2V0LAorICAgICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIG5leHRPZmZzZXQsIGtpbmQsIENhbGxlckRvZXNOb3JtYWxMaW5raW5nLCBwcmVkaWN0aW9u
LAorICAgICAgICAgICAgaW5saW5pbmdCYWxhbmNlKTsKKyAgICAgICAgaWYgKCFyZXN1bHQgJiYg
IWNhbGxMaW5rU3RhdHVzLmlzUHJvdmVkKCkpCisgICAgICAgICAgICB1bmRvRnVuY3Rpb25DaGVj
a3MoY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVlKCkpOworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKyAgICAKKyAgICAvLyBXZSBuZWVkIHRvIGNyZWF0ZSBzb21lIGtpbmQgb2Ygc3dpdGNo
IG92ZXIgY2FsbGVlLiBGb3Igbm93IHdlIG9ubHkgZG8gdGhpcyBpZiB3ZSBiZWxpZXZlIHRoYXQK
KyAgICAvLyB3ZSdyZSBpbiB0aGUgdG9wIHRpZXIuCisgICAgaWYgKCFpc0ZUTChtX2dyYXBoLm1f
cGxhbi5tb2RlKSB8fCAhT3B0aW9uczo6ZW5hYmxlUG9seW1vcnBoaWNDYWxsSW5saW5pbmcoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGJvb2wgYWxsQXJlQ2xvc3VyZUNhbGxz
ID0gdHJ1ZTsKKyAgICBib29sIGFsbEFyZURpcmVjdENhbGxzID0gdHJ1ZTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSBjYWxsTGlua1N0YXR1cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgaWYgKGNh
bGxMaW5rU3RhdHVzW2ldLmNhbGxlZSgpLmlzQ2xvc3VyZUNhbGwoKSkKKyAgICAgICAgICAgIGFs
bEFyZURpcmVjdENhbGxzID0gZmFsc2U7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFsbEFy
ZUNsb3N1cmVDYWxscyA9IGZhbHNlOworICAgIH0KKyAgICAKKyAgICBOb2RlKiB0aGluZ1RvU3dp
dGNoT247CisgICAgaWYgKGFsbEFyZURpcmVjdENhbGxzKQorICAgICAgICB0aGluZ1RvU3dpdGNo
T24gPSBjYWxsVGFyZ2V0Tm9kZTsKKyAgICBlbHNlIGlmIChhbGxBcmVDbG9zdXJlQ2FsbHMpCisg
ICAgICAgIHRoaW5nVG9Td2l0Y2hPbiA9IGFkZFRvR3JhcGgoR2V0RXhlY3V0YWJsZSwgdGhpbmdU
b1N3aXRjaE9uKTsKKyAgICBlbHNlIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBh
YmxlIHRvIGhhbmRsZSB0aGlzIGNhc2UsIGJ1dCBpdCdzIHRyaWNreSBhbmQgd2UgZG9uJ3Qga25v
dyBvZiBjYXNlcworICAgICAgICAvLyB3aGVyZSBpdCB3b3VsZCBiZSBiZW5lZmljaWFsLiBBbHNv
LCBDYWxsTGlua1N0YXR1cyB3b3VsZCBtYWtlIGFsbCBjYWxsZWVzIGFwcGVhciBsaWtlCisgICAg
ICAgIC8vIGNsb3N1cmUgY2FsbHMgaWYgYW55IGNhbGxzIHdlcmUgY2xvc3VyZSBjYWxscyAtIGV4
Y2VwdCBmb3IgY2FsbHMgdG8gaW50ZXJuYWwgZnVuY3Rpb25zLgorICAgICAgICAvLyBTbyB0aGlz
IHdpbGwgb25seSBhcmlzZSBpZiBzb21lIGNhbGxlZXMgYXJlIGludGVybmFsIGZ1bmN0aW9ucyBh
bmQgb3RoZXJzIGFyZSBjbG9zdXJlcy4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzNjAyMAorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIAorICAgIC8vIFRoaXMgbWFrZXMgbWUgd2lzaCB0aGF0IHdlIHdlcmUgaW4gU1NBIGFsbCB0
aGUgdGltZS4gV2UgbmVlZCB0byBwaWNrIGEgdmFyaWFibGUgaW50byB3aGljaCB0bworICAgIC8v
IHN0b3JlIHRoZSBjYWxsZWUgc28gdGhhdCBpdCB3aWxsIGJlIGFjY2Vzc2libGUgdG8gYWxsIG9m
IHRoZSBibG9ja3Mgd2UncmUgYWJvdXQgdG8gY3JlYXRlLiBXZQorICAgIC8vIGdldCBhd2F5IHdp
dGggZG9pbmcgYW4gaW1tZWRpYXRlLXNldCBoZXJlIGJlY2F1c2Ugd2Ugd291bGRuJ3QgaGF2ZSBw
ZXJmb3JtZWQgYW55IHNpZGUgZWZmZWN0cworICAgIC8vIHlldC4KKyAgICBWaXJ0dWFsUmVnaXN0
ZXIgY2FsbGVlUmVnKHJlZ2lzdGVyT2Zmc2V0ICsgSlNTdGFjazo6Q2FsbGVlKTsKKyAgICBzZXRE
aXJlY3QoY2FsbGVlUmVnLCBjYWxsVGFyZ2V0Tm9kZSwgSW1tZWRpYXRlU2V0V2l0aEZsdXNoKTsK
KyAgICAKKyAgICBTd2l0Y2hEYXRhJiBkYXRhID0gKm1fZ3JhcGgubV9zd2l0Y2hEYXRhLmFkZCgp
OworICAgIGRhdGEua2luZCA9IFN3aXRjaENlbGw7CisgICAgYWRkVG9HcmFwaChTd2l0Y2gsIE9w
SW5mbygmZGF0YSksIHRoaW5nVG9Td2l0Y2hPbik7CisgICAgCisgICAgQmFzaWNCbG9jayogb3Jp
Z2luQmxvY2sgPSBtX2N1cnJlbnRCbG9jazsKKyAgICBvcmlnaW5CbG9jay0+ZGlkTGluaygpOwor
ICAgIGNhbmNlbExpbmtpbmdGb3JCbG9jayhtX2lubGluZVN0YWNrVG9wLCBvcmlnaW5CbG9jayk7
CisgICAgCisgICAgLy8gRWFjaCBpbmxpbmVkIGNhbGxlZSB3aWxsIGhhdmUgYSBsYW5kaW5nIGJs
b2NrIHRoYXQgaXQgcmV0dXJucyBhdC4gVGhleSBzaG91bGQgYWxsIGhhdmUganVtcHMKKyAgICAv
LyB0byB0aGUgY29udGludWF0aW9uIGJsb2NrLCB3aGljaCB3ZSBjcmVhdGUgbGFzdC4KKyAgICBW
ZWN0b3I8QmFzaWNCbG9jayo+IGxhbmRpbmdCbG9ja3M7CisgICAgCisgICAgLy8gV2UgbWFrZSBm
b3JjZSB0aGlzIHRydWUgaWYgd2UgZ2l2ZSB1cCBvbiBpbmxpbmluZyBhbnkgb2YgdGhlIGVkZ2Vz
LgorICAgIGJvb2wgY291bGRUYWtlU2xvd1BhdGggPSBjYWxsTGlua1N0YXR1cy5jb3VsZFRha2VT
bG93UGF0aCgpOworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsTGlua1N0
YXR1cy5zaXplKCk7ICsraSkgeworICAgICAgICBSZWZQdHI8QmFzaWNCbG9jaz4gYmxvY2sgPSBh
ZG9wdFJlZihuZXcgQmFzaWNCbG9jayhVSU5UX01BWCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9j
YWxzLCBQTmFOKSk7CisgICAgICAgIG1fY3VycmVudEJsb2NrID0gYmxvY2suZ2V0KCk7CisgICAg
ICAgIG1fZ3JhcGguYXBwZW5kKGJsb2NrKTsKKyAgICAgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygp
OworICAgICAgICAKKyAgICAgICAgTm9kZSogbXlDYWxsVGFyZ2V0Tm9kZSA9IGdldERpcmVjdChj
YWxsZWVSZWcpCisgICAgICAgIAorICAgICAgICBib29sIGlubGluaW5nUmVzdWx0ID0gYXR0ZW1w
dFRvSW5saW5lQ2FsbCgKKyAgICAgICAgICAgIG15Q2FsbFRhcmdldE5vZGUsIHJlc3VsdE9wZXJh
bmQsIGNhbGxMaW5rU3RhdHVzW2ldLmNhbGxlZSgpLCByZWdpc3Rlck9mZnNldCwKKyAgICAgICAg
ICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zmc2V0LCBraW5kLCBDYWxsZXJM
aW5rc01hbnVhbGx5LCBwcmVkaWN0aW9uLAorICAgICAgICAgICAgaW5saW5pbmdCYWxhbmNlKTsK
KyAgICAgICAgCisgICAgICAgIGlmICghaW5saW5pbmdSZXN1bHQpIHsKKyAgICAgICAgICAgIC8v
IFRoYXQgZmFpbGVkIHNvIHdlIGxldCB0aGUgYmxvY2sgZGllLiBOb3RoaW5nIGludGVyZXN0aW5n
IHNob3VsZCBoYXZlIGJlZW4gYWRkZWQgdG8KKyAgICAgICAgICAgIC8vIHRoZSBibG9jay4gV2Ug
YWxzbyBnaXZlIHVwIG9uIGlubGluaW5nIGFueSBvZiB0aGUgKGxlc3MgZnJlcXVlbnQpIGNhbGxl
ZXMuCisgICAgICAgICAgICBBU1NFUlQobV9jdXJyZW50QmxvY2sgPT0gYmxvY2suZ2V0KCkpOwor
ICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9ibG9ja3MubGFzdCgpID09IGJsb2NrKTsKKyAg
ICAgICAgICAgIG1fZ3JhcGgua2lsbEJsb2NrQW5kSXRzQ29udGVudHMoYmxvY2suZ2V0KCkpOwor
ICAgICAgICAgICAgbV9ncmFwaC5tX2Jsb2Nrcy5yZW1vdmVMYXN0KCk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIC8vIFRoZSBmYWN0IHRoYXQgaW5saW5pbmcgZmFpbGVkIG1lYW5zIHdlIG5l
ZWQgYSBzbG93IHBhdGguCisgICAgICAgICAgICBjb3VsZFRha2VTbG93UGF0aCA9IHRydWU7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgSlNDZWxsKiB0
aGluZ1RvQ2FzZU9uOworICAgICAgICBpZiAoYWxsQXJlRGlyZWN0Q2FsbHMpCisgICAgICAgICAg
ICB0aGluZ1RvQ2FzZU9uID0gY2FsbExpbmtTdGF0dXNbaV0uY2FsbGVlKCkubm9uRXhlY3V0YWJs
ZUNhbGxlZSgpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChhbGxBcmVDbG9z
dXJlQ2FsbHMpOworICAgICAgICAgICAgdGhpbmdUb0Nhc2VPbiA9IGNhbGxMaW5rU3RhdHVzW2ld
LmNhbGxlZSgpLmV4ZWN1dGFibGUoKTsKKyAgICAgICAgfQorICAgICAgICBkYXRhLmNhc2VzLmFw
cGVuZChTd2l0Y2hDYXNlKG1fZ3JhcGguZnJlZXplKHRoaW5nVG9DYXNlT24pLCBibG9jay5nZXQo
KSkpOworICAgICAgICBhZGRUb0dyYXBoKEp1bXApOworICAgICAgICBtX2N1cnJlbnRCbG9jay0+
ZGlkTGluaygpOworICAgICAgICBsYW5kaW5nQmxvY2tzLmFwcGVuZChtX2N1cnJlbnRCbG9jayk7
CisgICAgfQorICAgIAorICAgIFJlZlB0cjxCYXNpY0Jsb2NrPiBzbG93UGF0aEJsb2NrID0gYWRv
cHRSZWYoCisgICAgICAgIG5ldyBCYXNpY0Jsb2NrKFVJTlRfTUFYLCBtX251bUFyZ3VtZW50cywg
bV9udW1Mb2NhbHMsIFBOYU4pKTsKKyAgICBkYXRhLmZhbGxUaHJvdWdoID0gc2xvd1BhdGhCbG9j
ay5nZXQoKTsKKyAgICBtX2dyYXBoLm1fYmxvY2tzLmFwcGVuZChzbG93UGF0aEJsb2NrKTsKKyAg
ICBzbG93UGF0aEJsb2NrLT5kaWRMaW5rKCk7CisgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOwor
ICAgIG1fY3VycmVudEJsb2NrID0gc2xvd1BhdGhCbG9jay5nZXQoKTsKKyAgICBpZiAoY291bGRU
YWtlU2xvd1BhdGgpIHsKKyAgICAgICAgTm9kZSogbXlDYWxsVGFyZ2V0Tm9kZSA9IGdldERpcmVj
dChjYWxsZWVSZWcpOworICAgICAgICBhZGRDYWxsKAorICAgICAgICAgICAgcmVzdWx0T3BlcmFu
ZCwgY2FsbE9wLCBteUNhbGxUYXJnZXROb2RlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
cmVnaXN0ZXJPZmZzZXQsCisgICAgICAgICAgICBwcmVkaWN0aW9uKTsKKyAgICAgICAgYWRkVG9H
cmFwaChKdW1wKTsKKyAgICAgICAgbGFuZGluZ0Jsb2Nrcy5hcHBlbmQobV9jdXJyZW50QmxvY2sp
OworICAgIH0gZWxzZSB7CisgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tCYWRDYWxsKTsKKyAgICAg
ICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICBhZGRUb0dyYXBoKFVucmVhY2hhYmxlKTsK
KyAgICB9CisgICAgCisgICAgUmVmUHRyPEJhc2ljQmxvY2s+IGNvbnRpbnVhdGlvbkJsb2NrID0g
YWRvcHRSZWYoCisgICAgICAgIG5ldyBCYXNpY0Jsb2NrKFVJTlRfTUFYLCBtX251bUFyZ3VtZW50
cywgbV9udW1Mb2NhbHMsIFBOYU4pKTsKKyAgICBtX2dyYXBoLm1fYmxvY2tzLmFwcGVuZChjb250
aW51YXRpb25CbG9jayk7CisgICAgbV9pbmxpbmVTdGFja1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5h
cHBlbmQoVW5saW5rZWRCbG9jayhibG9jay5nZXQoKSkpOworICAgIHByZXBhcmVUb1BhcnNlQmxv
Y2soKTsKKyAgICBtX2N1cnJlbnRCbG9jayA9IGNvbnRpbnVhdGlvbkJsb2NrLmdldCgpOworICAg
IAorICAgIGZvciAodW5zaWduZWQgaSA9IGxhbmRpbmdCbG9ja3Muc2l6ZSgpOyBpLS07KQorICAg
ICAgICAqbGFuZGluZ0Jsb2Nrc1tpXS0+bGFzdCgpLT50YXJnZXRCbG9jaygpID0gY29udGludWF0
aW9uQmxvY2suZ2V0KCk7CiAgICAgCi0gICAgLy8gQXQgdGhpcyBwb2ludCB3ZSByZXR1cm4gYW5k
IGNvbnRpbnVlIHRvIGdlbmVyYXRlIGNvZGUgZm9yIHRoZSBjYWxsZXIsIGJ1dAotICAgIC8vIGlu
IHRoZSBuZXcgYmFzaWMgYmxvY2suCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE2NDUsNyAr
MTgxOCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVR5cGVkQXJyYXlDb24KIAogYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKAogICAgIGlu
dCByZXN1bHRPcGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgaW50IHJlZ2lzdGVy
T2Zmc2V0LAotICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5
cGUgcHJlZGljdGlvbiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQorICAgIGludCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewog
ICAgIC8vIElmIHdlIGV2ZXIgZmluZCB0aGF0IHdlIGhhdmUgYSBsb3Qgb2YgaW50ZXJuYWwgZnVu
Y3Rpb25zIHRoYXQgd2Ugc3BlY2lhbGl6ZSBmb3IsCiAgICAgLy8gdGhlbiB3ZSBzaG91bGQgcHJv
YmFibHkgaGF2ZSBzb21lIHNvcnQgb2YgaGFzaHRhYmxlIGRpc3BhdGNoLCBvciBtYXliZSBldmVu
CkBAIC0xNjU0LDggKzE4MjcsNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFu
dEludGVyCiAgICAgLy8gd2Uga25vdyBhYm91dCBpcyBzbWFsbCBlbm91Z2gsIHRoYXQgaGF2aW5n
IGp1c3QgYSBsaW5lYXIgY2FzY2FkZSBvZiBpZiBzdGF0ZW1lbnRzCiAgICAgLy8gaXMgZ29vZCBl
bm91Z2guCiAgICAgCi0gICAgVU5VU0VEX1BBUkFNKHByZWRpY3Rpb24pOyAvLyBSZW1vdmUgdGhp
cyBvbmNlIHdlIGRvIG1vcmUgdGhpbmdzLgotICAgIAogICAgIGlmIChmdW5jdGlvbi0+Y2xhc3NJ
bmZvKCkgPT0gQXJyYXlDb25zdHJ1Y3Rvcjo6aW5mbygpKSB7CiAgICAgICAgIGlmIChmdW5jdGlv
bi0+Z2xvYmFsT2JqZWN0KCkgIT0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjIxNSw3ICsyMzg2LDcg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAg
ICAgIEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dyYXBoLmZyZWV6ZShjYWNoZWRGdW5jdGlvbik7
CiAgICAgICAgICAgICAgICAgQVNTRVJUKGNhY2hlZEZ1bmN0aW9uLT5pbmhlcml0cyhKU0Z1bmN0
aW9uOjppbmZvKCkpKTsKICAgICAgICAgICAgICAgICBOb2RlKiBhY3R1YWxDYWxsZWUgPSBnZXQo
VmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkNhbGxlZSkpOwotICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoQ2hlY2tGdW5jdGlvbiwgT3BJbmZvKGZyb3plbiksIGFjdHVhbENhbGxlZSk7CisgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhmcm96ZW4pLCBhY3R1YWxD
YWxsZWUpOwogICAgICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgoSlNDb25zdGFudCwgT3BJbmZvKGZyb3pl
bikpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9jYWxs
ZWUpOwpAQCAtMjg5Nyw3ICszMDY4LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZAogICAgICAgICAgICAgLy8gYWxyZWFkeSBnbmFybHkgZW5vdWdoIGFzIGl0IGlz
LgogICAgICAgICAgICAgQVNTRVJUKHBvaW50ZXJJc0Z1bmN0aW9uKGN1cnJlbnRJbnN0cnVjdGlv
blsyXS51LnNwZWNpYWxQb2ludGVyKSk7CiAgICAgICAgICAgICBhZGRUb0dyYXBoKAotICAgICAg
ICAgICAgICAgIENoZWNrRnVuY3Rpb24sCisgICAgICAgICAgICAgICAgQ2hlY2tDZWxsLAogICAg
ICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShzdGF0aWNfY2FzdDxKU0NlbGwqPihh
Y3R1YWxQb2ludGVyRm9yKAogICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X2NvZGVCbG9jaywgY3VycmVudEluc3RydWN0aW9uWzJdLnUuc3BlY2lhbFBvaW50ZXIpKSkpLAog
ICAgICAgICAgICAgICAgIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCkpKTsKQEAgLTMzMjIsOSArMzQ5Myw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OmxpbmtCbG9jayhCYXNpY0Jsb2MKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotI2lmICFB
U1NFUlRfRElTQUJMRUQKLSAgICBibG9jay0+aXNMaW5rZWQgPSB0cnVlOwotI2VuZGlmCisgICAg
YmxvY2stPmRpZExpbmsoKTsKIH0KIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrcyhW
ZWN0b3I8VW5saW5rZWRCbG9jaz4mIHVubGlua2VkQmxvY2tzLCBWZWN0b3I8QmFzaWNCbG9jayo+
JiBwb3NzaWJsZVRhcmdldHMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQ
U1JldGhyZWFkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTkwLDggKzkwLDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPmNoaWxkcmVuLnNldENoaWxkMShFZGdlKCkpOwogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b206Ci0gICAgICAgICAgICAgICAgICAg
IGlmICghbm9kZS0+Y2hpbGQxKCkpCisgICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS0+Y2hp
bGQxKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJl
ZShub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCktPm9w
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBQaGk6CiAgICAgICAgICAgICAgICAgICAg
IGNhc2UgU2V0QXJndW1lbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw2ICsxNDQsNyBAQCB2b2lk
IGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBGaWF0SW50NTI6
CiAgICAgY2FzZSBNYWtlUm9wZToKICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKKyAgICBjYXNlIEdl
dEV4ZWN1dGFibGU6CiAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSkpOwogICAgICAgICByZXR1
cm47CiAgICAgICAgIApAQCAtMjM5LDEyICsyNDAsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwgbm9kZS0+YXJp
dGhNb2RlKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBjYXNlIENoZWNrRnVu
Y3Rpb246Ci0gICAgICAgIGRlZihQdXJlVmFsdWUoQ2hlY2tGdW5jdGlvbiwgQWRqYWNlbmN5TGlz
dChBZGphY2VuY3lMaXN0OjpGaXhlZCwgbm9kZS0+Y2hpbGQxKCkpLCBub2RlLT5mdW5jdGlvbigp
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6
Ci0gICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwgbm9kZS0+ZXhlY3V0YWJsZSgpKSk7CisgICAg
Y2FzZSBDaGVja0NlbGw6CisgICAgICAgIGRlZihQdXJlVmFsdWUoQ2hlY2tDZWxsLCBBZGphY2Vu
Y3lMaXN0KEFkamFjZW5jeUxpc3Q6OkZpeGVkLCBub2RlLT5jaGlsZDEoKSksIG5vZGUtPmZ1bmN0
aW9uKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIENvbnN0YW50U3Rv
cmFnZVBvaW50ZXI6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3Bw
CShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDkgQEAgc3RhdGljIENvbXBpbGF0aW9u
UmVzdWx0IGNvbXBpbGVJbXBsKAogICAgICAgICB2bS5nZXRDVElTdHViKHZpcnR1YWxDb25zdHJ1
Y3RUaGF0UHJlc2VydmVzUmVnc1RodW5rR2VuZXJhdG9yKTsKICAgICB9CiAgICAgCisgICAgaWYg
KHZtLmNhbGxFZGdlTG9nKQorICAgICAgICB2bS5jYWxsRWRnZUxvZy0+cHJvY2Vzc0xvZygpOwor
ICAgIAogICAgIFJlZlB0cjxQbGFuPiBwbGFuID0gYWRvcHRSZWYoCiAgICAgICAgIG5ldyBQbGFu
KGNvZGVCbG9jaywgcHJvZmlsZWRERkdDb2RlQmxvY2ssIG1vZGUsIG9zckVudHJ5Qnl0ZWNvZGVJ
bmRleCwgbXVzdEhhbmRsZVZhbHVlcykpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
MzYsNiArNzM2LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+
Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKQogICAgICAgICAgICAgICAgICAgICBm
aXhFZGdlPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBTd2l0Y2hDZWxsOgorICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKQorICAgICAgICAgICAgICAgICAgICBm
aXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAvLyBlbHNl
IGl0J3MgZmluZSBmb3IgdGhpcyB0byBoYXZlIFVudHlwZWRVc2U7IHdlIHdpbGwgaGFuZGxlIHRo
aXMgYnkganVzdCBtYWtpbmcKKyAgICAgICAgICAgICAgICAvLyBub24tY2VsbHMgdGFrZSB0aGUg
ZGVmYXVsdCBjYXNlLgorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTg5OCwxMyArOTA0LDEzIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgQ2hlY2tFeGVj
dXRhYmxlOiB7CisgICAgICAgIGNhc2UgR2V0RXhlY3V0YWJsZTogewogICAgICAgICAgICAgZml4
RWRnZTxGdW5jdGlvblVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgotICAg
ICAgICBjYXNlIENoZWNrRnVuY3Rpb246CisgICAgICAgIGNhc2UgQ2hlY2tDZWxsOgogICAgICAg
ICBjYXNlIENoZWNrSGFzSW5zdGFuY2U6CiAgICAgICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICAg
ICAgY2FzZSBHZXRCdXR0ZXJmbHk6IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksNyBAQCBHcmFwaDo6R3Jh
cGgoVk0mIHZtLCBQbGFuJiBwbGFuLCBMb25nTGl2CiAgICAgLCBtX2Zvcm0oTG9hZFN0b3JlKQog
ICAgICwgbV91bmlmaWNhdGlvblN0YXRlKExvY2FsbHlVbmlmaWVkKQogICAgICwgbV9yZWZDb3Vu
dFN0YXRlKEV2ZXJ5dGhpbmdJc0xpdmUpCisgICAgLCBtX3Nob3VsZFByb2ZpbGUoZmFsc2UpCiB7
CiAgICAgQVNTRVJUKG1fcHJvZmlsZWRCbG9jayk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2MSw2ICs3NjEsNyBAQCBw
dWJsaWM6CiAgICAgR3JhcGhGb3JtIG1fZm9ybTsKICAgICBVbmlmaWNhdGlvblN0YXRlIG1fdW5p
ZmljYXRpb25TdGF0ZTsKICAgICBSZWZDb3VudFN0YXRlIG1fcmVmQ291bnRTdGF0ZTsKKyAgICBi
b29sIG1fc2hvdWxkUHJvZmlsZTsKIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBoYW5kbGVTdWNj
ZXNzb3IoVmVjdG9yPEJhc2ljQmxvY2sqLCAxNj4mIHdvcmtsaXN0LCBCYXNpY0Jsb2NrKiwgQmFz
aWNCbG9jayogc3VjY2Vzc29yKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
CShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMTYwLDcgKzE2MCw4IEBAIHN0cnVjdCBTd2l0Y2hDYXNlIHsK
IGVudW0gU3dpdGNoS2luZCB7CiAgICAgU3dpdGNoSW1tLAogICAgIFN3aXRjaENoYXIsCi0gICAg
U3dpdGNoU3RyaW5nCisgICAgU3dpdGNoU3RyaW5nLAorICAgIFN3aXRjaENlbGwKIH07CiAKIHN0
cnVjdCBTd2l0Y2hEYXRhIHsKQEAgLTEwNDQsOSArMTA0NSwxMSBAQCBzdHJ1Y3QgTm9kZSB7CiAg
ICAgICAgIG1fb3BJbmZvMiA9IHByZWRpY3Rpb247CiAgICAgfQogICAgIAotICAgIGJvb2wgY2Fu
QmVLbm93bkZ1bmN0aW9uKCkKKyAgICBib29sIGhhc0NlbGxPcGVyYW5kKCkKICAgICB7CiAgICAg
ICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hw
b2ludDoKKyAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgICAgIGNhc2UgTmF0aXZlQ29uc3Ry
dWN0OgogICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTEwNTUsNTQgKzEwNTgsMTYgQEAgc3RydWN0IE5vZGUgewogICAgICAgICB9CiAgICAgfQog
Ci0gICAgYm9vbCBoYXNLbm93bkZ1bmN0aW9uKCkKKyAgICBGcm96ZW5WYWx1ZSogY2VsbE9wZXJh
bmQoKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChvcCgpKSB7Ci0gICAgICAgIGNhc2UgTmF0aXZl
Q29uc3RydWN0OgotICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6Ci0gICAgICAgICAgICByZXR1cm4g
KGJvb2wpbV9vcEluZm87Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgSlNGdW5jdGlvbioga25vd25GdW5jdGlv
bigpCi0gICAgewotICAgICAgICBBU1NFUlQoY2FuQmVLbm93bkZ1bmN0aW9uKCkpOwotICAgICAg
ICByZXR1cm4gYml0d2lzZV9jYXN0PEpTRnVuY3Rpb24qPihtX29wSW5mbyk7Ci0gICAgfQotCi0g
ICAgdm9pZCBnaXZlS25vd25GdW5jdGlvbihKU0Z1bmN0aW9uKiBjYWxsRGF0YSkgCi0gICAgewot
ICAgICAgICBBU1NFUlQoY2FuQmVLbm93bkZ1bmN0aW9uKCkpOwotICAgICAgICBtX29wSW5mbyA9
IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGNhbGxEYXRhKTsKLSAgICB9Ci0KLSAgICBib29sIGhh
c0Z1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAob3AoKSkgewotICAgICAgICBjYXNl
IENoZWNrRnVuY3Rpb246Ci0gICAgICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50
OgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBGcm96ZW5WYWx1ZSogZnVu
Y3Rpb24oKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGhhc0Z1bmN0aW9uKCkpOworICAgICAgICBB
U1NFUlQoaGFzQ2VsbE9wZXJhbmQoKSk7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PEZyb3plblZhbHVlKj4obV9vcEluZm8pOwogICAgIH0KICAgICAKLSAgICBib29sIGhhc0V4ZWN1
dGFibGUoKQorICAgIHZvaWQgc2V0Q2VsbE9wZXJhbmQoRnJvemVuVmFsdWUqIHZhbHVlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ2hlY2tFeGVjdXRhYmxlOwotICAgIH0KLSAgICAK
LSAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSgpCi0gICAgewotICAgICAgICByZXR1cm4g
anNDYXN0PEV4ZWN1dGFibGVCYXNlKj4ocmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPihtX29wSW5m
bykpOworICAgICAgICBBU1NFUlQoaGFzQ2VsbE9wZXJhbmQoKSk7CisgICAgICAgIG1fb3BJbmZv
ID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4odmFsdWUpOwogICAgIH0KICAgICAKICAgICBib29s
IGhhc1ZhcmlhYmxlV2F0Y2hwb2ludFNldCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oUHV0QnlJZEZsdXNoLCBO
b2RlTXVzdEdlbmVyYXRlIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKSBc
CiAgICAgbWFjcm8oUHV0QnlJZERpcmVjdCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVy
c1dvcmxkKSBcCiAgICAgbWFjcm8oQ2hlY2tTdHJ1Y3R1cmUsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
LSAgICBtYWNybyhDaGVja0V4ZWN1dGFibGUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNy
byhHZXRFeGVjdXRhYmxlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhQdXRTdHJ1Y3R1cmUs
IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSwg
Tm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRTdG9yYWdlKSBcCiAgICAgbWFjcm8oUmVhbGxv
Y2F0ZVByb3BlcnR5U3RvcmFnZSwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRTdG9yYWdl
KSBcCkBAIC0xODYsNyArMTg2LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
ICAgIG1hY3JvKFZhcmlhYmxlV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1h
Y3JvKFZhckluamVjdGlvbldhdGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhGdW5jdGlvblJlZW50cnlXYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCi0gICAgbWFj
cm8oQ2hlY2tGdW5jdGlvbiwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKENoZWNrQ2Vs
bCwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKENoZWNrQmFkQ2VsbCwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAogICAgIG1hY3JvKEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludCwgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrSW5Cb3VuZHMsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21DYW5v
bmljYWxpemF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE3MjE3
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDggKzkyLDEwIEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnJlbW92ZUVkZ2UoaS0tKTsKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0NoZWNrKCk7CiAgICAgICAgICAgICAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50
b21SZW1vdmFsUGhhc2UuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1BoYW50b21SZW1vdmFsUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjUsNiArMTI1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0
eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUo
bm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0xNDIs
NiArMTQzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkcmVuLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5t
X2FsbG9jYXRvci5mcmVlKG5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9
IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAg
ICAgICAgfQpAQCAtMTQ5LDggKzE1MSwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNlIEhhcmRQaGFudG9tOiB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpCisgICAg
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4
OSw2ICs2ODksMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQog
CiAgICAgbV9qaXQuZW1pdFN0b3JlQ29kZU9yaWdpbihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwog
ICAgIAorICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRDYWxs
TGlua0luZm8oKTsKKworICAgIGlmIChtX2ppdC5ncmFwaCgpLm1fc2hvdWxkUHJvZmlsZSAmJiAh
bV9zdGF0ZS5mb3JOb2RlKGNhbGxlZUVkZ2UpLm1fdmFsdWUpIHsKKyAgICAgICAgbV9qaXQudm0o
KS5jYWxsRWRnZUxvZy0+ZW1pdExvZ0NvZGUoCisgICAgICAgICAgICBtX2ppdCwgY2FsbExpbmtJ
bmZvLT5jYWxsRWRnZVByb2ZpbGUsIGNhbGxlZS5qc1ZhbHVlUmVncygpKTsKKyAgICB9CisgICAg
CiAgICAgc2xvd1BhdGguYXBwZW5kKGJyYW5jaE5vdENlbGwoY2FsbGVlLmpzVmFsdWVSZWdzKCkp
KTsKICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoUHRyV2l0aFBhdGNoKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgY2FsbGVlUGF5bG9hZEdQUiwgdGFyZ2V0VG9DaGVjaykpOwogICAg
IG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2FsbGVlUGF5bG9hZEdQUiwg
T0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rpb24sIG1fc2NvcGUpKSwgcmVzdWx0UGF5bG9hZEdQUik7
CkBAIC03MTMsNyArNzIwLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSog
bm9kZQogICAgICAgICBtX2ppdC5tb3ZlKGNhbGxlZVBheWxvYWRHUFIsIEdQUkluZm86OnJlZ1Qw
KTsKICAgICAgICAgbV9qaXQubW92ZShjYWxsZWVUYWdHUFIsIEdQUkluZm86OnJlZ1QxKTsKICAg
ICB9Ci0gICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZENhbGxM
aW5rSW5mbygpOwogICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
aW5mbyksIEdQUkluZm86OnJlZ1QyKTsKICAgICBKSVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9
IG1faml0Lm5lYXJDYWxsKCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjI2LDcgKzYyNiw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNaXNjU3Ry
aWN0RXEKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKIHsKLQog
ICAgIGJvb2wgaXNDYWxsID0gbm9kZS0+b3AoKSA9PSBDYWxsOwogICAgIGlmICghaXNDYWxsKQog
ICAgICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPm9wKCkgPT0gQ29u
c3RydWN0KTsKQEAgLTY3MCw2ICs2NjksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENh
bGwoTm9kZSogbm9kZQogCiAgICAgbV9qaXQuZW1pdFN0b3JlQ29kZU9yaWdpbihub2RlLT5vcmln
aW4uc2VtYW50aWMpOwogICAgIAorICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gbV9q
aXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbygpOworICAgIAorICAgIGlmIChtX2ppdC5n
cmFwaCgpLm1fc2hvdWxkUHJvZmlsZSAmJiAhbV9zdGF0ZS5mb3JOb2RlKGNhbGxlZUVkZ2UpLm1f
dmFsdWUpCisgICAgICAgIG1faml0LnZtKCkuY2FsbEVkZ2VMb2ctPmVtaXRMb2dDb2RlKG1faml0
LCBjYWxsTGlua0luZm8tPmNhbGxFZGdlUHJvZmlsZSwgY2FsbGVlR1BSKTsKKwogICAgIHNsb3dQ
YXRoID0gbV9qaXQuYnJhbmNoUHRyV2l0aFBhdGNoKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
Y2FsbGVlR1BSLCB0YXJnZXRUb0NoZWNrLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigw
KSk7CiAKICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNhbGxlZUdQ
UiwgT0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rpb24sIG1fc2NvcGUpKSwgcmVzdWx0R1BSKTsKQEAg
LTY4Miw3ICs2ODYsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2Rl
CiAgICAgc2xvd1BhdGgubGluaygmbV9qaXQpOwogICAgIAogICAgIG1faml0Lm1vdmUoY2FsbGVl
R1BSLCBHUFJJbmZvOjpyZWdUMCk7IC8vIENhbGxlZSBuZWVkcyB0byBiZSBpbiByZWdUMAotICAg
IENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZENhbGxM
aW5rSW5mbygpOwogICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
Y2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6cmVnVDIpOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8gYmUg
aW4gcmVnVDIKICAgICBKSVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9IG1faml0Lm5lYXJDYWxs
KCk7CiAgICAgCkBAIC0zNzg0LDE4ICszNzg3LDIxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUdldEFycmF5TGVuZ3RoKG5vZGUpOwog
ICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgY2FzZSBDaGVja0Z1bmN0aW9uOiB7Ci0gICAg
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZ1bmN0aW9uKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRGdW5jdGlvbiwgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwoZnVuY3Rpb24uZ3ByKCkpLCBub2RlLT5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoV2Vh
a1B0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGZ1bmN0aW9uLmdwcigpLCBub2RlLT5mdW5jdGlv
bigpLT52YWx1ZSgpLmFzQ2VsbCgpKSk7CisgICAgY2FzZSBDaGVja0NlbGw6IHsKKyAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2VsbCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkQ2VsbCwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2Vs
bC5ncHIoKSksIG5vZGUtPmNoaWxkMSgpLCBtX2ppdC5icmFuY2hXZWFrUHRyKEpJVENvbXBpbGVy
OjpOb3RFcXVhbCwgY2VsbC5ncHIoKSwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5hc0Nl
bGwoKSkpOwogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgICAgICAKLSAgICBjYXNlIENoZWNrRXhlY3V0YWJsZTogeworICAgIGNhc2UgR2V0RXhlY3V0
YWJsZTogewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmdW5jdGlvbih0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7Ci0gICAgICAgIHNwZWN1bGF0ZUNlbGxUeXBlKG5vZGUtPmNoaWxkMSgpLCBm
dW5jdGlvbi5ncHIoKSwgU3BlY0Z1bmN0aW9uLCBKU0Z1bmN0aW9uVHlwZSk7Ci0gICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soQmFkRXhlY3V0YWJsZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
ZnVuY3Rpb24uZ3ByKCkpLCBub2RlLT5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoV2Vha1B0cihKSVRD
b21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBK
U0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIG5vZGUtPmV4ZWN1dGFibGUoKSkpOwot
ICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlz
LCBSZXVzZSwgZnVuY3Rpb24pOworICAgICAgICBHUFJSZWcgZnVuY3Rpb25HUFIgPSBmdW5jdGlv
bi5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAg
ICAgc3BlY3VsYXRlQ2VsbFR5cGUobm9kZS0+Y2hpbGQxKCksIGZ1bmN0aW9uR1BSLCBTcGVjRnVu
Y3Rpb24sIEpTRnVuY3Rpb25UeXBlKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxl
cjo6QWRkcmVzcyhmdW5jdGlvbkdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkp
LCByZXN1bHRHUFIpOworICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC00OTkwLDcgKzQ5OTYsOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zm
c2V0OgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKICAgICBjYXNlIEZpYXRJbnQ1MjoKLSAg
ICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJVbmV4cGVjdGVkIEZUTCBub2Rl
Iik7CisgICAgY2FzZSBDaGVja0JhZENlbGw6CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFw
aCgpLCBub2RlLCAiVW5leHBlY3RlZCBub2RlIik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJV
cENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02MSw2ICs2MSw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFPcHRpb25zOjpl
bmFibGVPU1JFbnRyeVRvRlRMKCkpCiAgICAgICAgICAgICBsZXZlbCA9IEZUTDo6Q2FuQ29tcGls
ZTsKICAgICAgICAgCisgICAgICAgIG1fZ3JhcGgubV9zaG91bGRQcm9maWxlID0gdHJ1ZTsKKyAg
ICAgICAgCiAgICAgICAgIEluc2VydGlvblNldCBpbnNlcnRpb25TZXQobV9ncmFwaCk7CiAgICAg
ICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxv
Y2tJbmRleC0tOykgewogICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJs
b2NrKGJsb2NrSW5kZXgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0
LDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2Ug
UHV0Q2xvc3VyZVZhcjoKICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50OgogICAgIGNhc2UgU3Ry
aW5nQ2hhckF0OgotICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKKyAgICBjYXNlIENoZWNrQ2VsbDoK
KyAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAg
Y2FzZSBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0
eVN0b3JhZ2U6CkBAIC0xMjYsNyArMTI3LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5D
b21waWxlKE5vZGUqIAogICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNl
IENoZWNrOgogICAgIGNhc2UgQ291bnRFeGVjdXRpb246Ci0gICAgY2FzZSBDaGVja0V4ZWN1dGFi
bGU6CisgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgogICAgIGNhc2UgR2V0U2NvcGU6CiAgICAgY2Fz
ZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBDaGVja0FyZ3VtZW50c05v
dENyZWF0ZWQ6CkBAIC0zMjYsNiArMzI3LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5D
b21waWxlKE5vZGUqIAogICAgICAgICBzd2l0Y2ggKG5vZGUtPnN3aXRjaERhdGEoKS0+a2luZCkg
ewogICAgICAgICBjYXNlIFN3aXRjaEltbToKICAgICAgICAgY2FzZSBTd2l0Y2hDaGFyOgorICAg
ICAgICBjYXNlIFN3aXRjaENlbGw6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIHJldHVybiBDYW5ub3RDb21waWxlOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE3MjE3
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NjgsMTEgKzQ2OCwxNCBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IENoZWNrU3RydWN0dXJlOgogICAgICAgICAgICAgY29tcGlsZUNoZWNrU3RydWN0dXJlKCk7CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOgotICAgICAgICAg
ICAgY29tcGlsZUNoZWNrRnVuY3Rpb24oKTsKKyAgICAgICAgY2FzZSBDaGVja0NlbGw6CisgICAg
ICAgICAgICBjb21waWxlQ2hlY2tDZWxsKCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBDaGVja0V4ZWN1dGFibGU6Ci0gICAgICAgICAgICBjb21waWxlQ2hlY2tFeGVjdXRhYmxl
KCk7CisgICAgICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgorICAgICAgICAgICAgY29tcGlsZUNoZWNr
QmFkQ2VsbCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0RXhlY3V0YWJs
ZToKKyAgICAgICAgICAgIGNvbXBpbGVHZXRFeGVjdXRhYmxlKCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgICAgICAgICAgY29tcGls
ZUFycmF5aWZ5VG9TdHJ1Y3R1cmUoKTsKQEAgLTE3NDMsMjYgKzE3NDYsMjUgQEAgcHJpdmF0ZToK
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAgICAgfQog
ICAgIAotICAgIHZvaWQgY29tcGlsZUNoZWNrRnVuY3Rpb24oKQorICAgIHZvaWQgY29tcGlsZUNo
ZWNrQ2VsbCgpCiAgICAgewogICAgICAgICBMVmFsdWUgY2VsbCA9IGxvd0NlbGwobV9ub2RlLT5j
aGlsZDEoKSk7CiAgICAgICAgIAogICAgICAgICBzcGVjdWxhdGUoCi0gICAgICAgICAgICBCYWRG
dW5jdGlvbiwganNWYWx1ZVZhbHVlKGNlbGwpLCBtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSwKLSAg
ICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKGNlbGwsIHdlYWtQb2ludGVyKG1fbm9kZS0+ZnVuY3Rp
b24oKS0+dmFsdWUoKS5hc0NlbGwoKSkpKTsKKyAgICAgICAgICAgIEJhZENlbGwsIGpzVmFsdWVW
YWx1ZShjZWxsKSwgbV9ub2RlLT5jaGlsZDEoKS5ub2RlKCksCisgICAgICAgICAgICBtX291dC5u
b3RFcXVhbChjZWxsLCB3ZWFrUG9pbnRlcihtX25vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCku
YXNDZWxsKCkpKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgY29tcGlsZUNoZWNrQmFkQ2VsbCgp
CisgICAgeworICAgICAgICB0ZXJtaW5hdGUoQmFkQ2VsbCk7CiAgICAgfQogICAgIAotICAgIHZv
aWQgY29tcGlsZUNoZWNrRXhlY3V0YWJsZSgpCisgICAgdm9pZCBjb21waWxlR2V0RXhlY3V0YWJs
ZSgpCiAgICAgewogICAgICAgICBMVmFsdWUgY2VsbCA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSk7Ci0gICAgICAgIAogICAgICAgICBzcGVjdWxhdGVGdW5jdGlvbihtX25vZGUtPmNoaWxkMSgp
LCBjZWxsKTsKLSAgICAgICAgCi0gICAgICAgIHNwZWN1bGF0ZSgKLSAgICAgICAgICAgIEJhZEV4
ZWN1dGFibGUsIGpzVmFsdWVWYWx1ZShjZWxsKSwgbV9ub2RlLT5jaGlsZDEoKS5ub2RlKCksCi0g
ICAgICAgICAgICBtX291dC5ub3RFcXVhbCgKLSAgICAgICAgICAgICAgICBtX291dC5sb2FkUHRy
KGNlbGwsIG1faGVhcHMuSlNGdW5jdGlvbl9leGVjdXRhYmxlKSwKLSAgICAgICAgICAgICAgICB3
ZWFrUG9pbnRlcihtX25vZGUtPmV4ZWN1dGFibGUoKSkpKTsKKyAgICAgICAgc2V0SlNWYWx1ZSht
X291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNGdW5jdGlvbl9leGVjdXRhYmxlKSk7CiAgICAg
fQogICAgIAogICAgIHZvaWQgY29tcGlsZUFycmF5aWZ5VG9TdHJ1Y3R1cmUoKQpAQCAtMzkxOCwx
MCArMzkyMCwzNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICBjYXNlIFN3aXRjaFN0cmluZzoKKyAgICAgICAgY2FzZSBTd2l0Y2hT
dHJpbmc6IHsKICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJVbmltcGxl
bWVudGVkIik7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgU3dpdGNoQ2VsbCB7CisgICAgICAgICAg
ICBMVmFsdWUgY2VsbDsKKyAgICAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQ2VsbFVzZTogeworICAgICAgICAgICAgICAgIGNl
bGwgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBVbnR5cGVk
VXNlOiB7CisgICAgICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBjZWxsQ2FzZSA9IEZUTF9O
RVdfQkxPQ0sobV9vdXQsICgiU3dpdGNoL1N3aXRjaENlbGwgY2VsbCBjYXNlIikpOworICAgICAg
ICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0NlbGwodmFsdWUpLCB1bnN1cmUoY2VsbENhc2UpLCB1
bnN1cmUobG93QmxvY2soZGF0YS0+ZmFsbFRocm91Z2gpKSk7CisgICAgICAgICAgICAgICAgbV9v
dXQuYXBwZW5kVG8oY2VsbENhc2UpOworICAgICAgICAgICAgICAgIGNlbGwgPSB2YWx1ZTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1f
bm9kZSwgIkJhZCB1c2Uga2luZCIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgYnVpbGRTd2l0Y2gobV9ub2RlLT5zd2l0
Y2hEYXRhKCksIG1fb3V0LmludFB0ciwgY2VsbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0gfQogICAgICAgICAKICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkJh
ZCBzd2l0Y2gga2luZCIpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTg0LDYgKzk4NCwxMSBAQCB2b2lkIEhlYXA6OmNvbGxl
Y3QoSGVhcE9wZXJhdGlvbiBjb2xsZWN0CiAgICAgICAgIHZtKCktPmhpZ2hGaWRlbGl0eUxvZygp
LT5wcm9jZXNzSGlnaEZpZGVsaXR5TG9nKCJHQyIpOwogICAgIH0KICAgICAKKyAgICBpZiAodm0o
KS0+Y2FsbEVkZ2VMb2cpIHsKKyAgICAgICAgRGVmZXJHQ0ZvckFXaGlsZSBhd2hpbGUoKnRoaXMp
OworICAgICAgICB2bSgpLT5jYWxsRWRnZUxvZy0+cHJvY2Vzc0xvZygpOworICAgIH0KKyAgICAK
ICAgICBSRUxFQVNFX0FTU0VSVCghbV9kZWZlcnJhbERlcHRoKTsKICAgICBBU1NFUlQodm0oKS0+
Y3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0o
KS0+YXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFi
bGUoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmgJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4LDYgKzg4LDIxIEBAIHB1YmxpYzoKICNl
bmRpZgogICAgIH0KICAgICAKKyAgICB2b2lkIGxvYWRWYWx1ZShBZGRyZXNzIGFkZHJlc3MsIEpT
VmFsdWVSZWdzIHJlZ3MpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGxvYWQ2
NChhZGRyZXNzLCByZWdzLmdwcigpKTsKKyNlbHNlCisgICAgICAgIGlmIChhZGRyZXNzLmJhc2Ug
PT0gcmVncy5wYXlsb2FkR1BSKCkpIHsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhP
ZmZzZXQoVGFnT2Zmc2V0KSwgcmVncy50YWdHUFIoKSk7CisgICAgICAgICAgICBsb2FkMzIoYWRk
cmVzcy53aXRoT2Zmc2V0KFBheWxvYWRPZmZzZXQpLCByZWdzLnBheWxvYWRHUFIoKSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2FkMzIoYWRkcmVzcy53aXRoT2Zmc2V0KFBheWxv
YWRPZmZzZXQpLCByZWdzLnBheWxvYWRHUFIoKSk7CisgICAgICAgICAgICBsb2FkMzIoYWRkcmVz
cy53aXRoT2Zmc2V0KFRhZ09mZnNldCksIHJlZ3MudGFnR1BSKCkpOworICAgICAgICB9CisjZW5k
aWYKKyAgICB9CisgICAgCiAgICAgdm9pZCBtb3ZlVHJ1c3RlZFZhbHVlKEpTVmFsdWUgdmFsdWUs
IEpTVmFsdWVSZWdzIHJlZ3MpCiAgICAgewogI2lmIFVTRShKU1ZBTFVFNjQpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgJKHJldmlzaW9uIDE3MjE3NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE2NjYsNiArMTY2NiwxNSBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoYXJnNCwgR1BSSW5m
bzo6YXJndW1lbnRHUFIzKTsKICAgICB9CiAjZW5kaWYKKyAgICAKKyAgICB2b2lkIHNldHVwQXJn
dW1lbnRzKEpTVmFsdWVSZWdzIGFyZzEpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAg
ICAgIHNldHVwQXJndW1lbnRzKGFyZzEuZ3ByKCkpOworI2Vsc2UKKyAgICAgICAgc2V0dXBBcmd1
bWVudHMoYXJnMS5wYXlsb2FkR1BSKCksIGFyZzEudGFnR1BSKCkpOworI2VuZGlmCisgICAgfQog
CiAgICAgdm9pZCBzZXR1cFJlc3VsdHMoR1BSUmVnIGRlc3RBLCBHUFJSZWcgZGVzdEIpCiAgICAg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgJKHJldmlzaW9uIDE3MjE3NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCSh3b3JraW5nIGNvcHkpCkBA
IC02MCw2ICs2MCw4IEBAIHB1YmxpYzoKICAgICBHUFJSZWcgdGFnR1BSKCkgY29uc3QgeyByZXR1
cm4gSW52YWxpZEdQUlJlZzsgfQogICAgIEdQUlJlZyBwYXlsb2FkR1BSKCkgY29uc3QgeyByZXR1
cm4gbV9ncHI7IH0KICAgICAKKyAgICBib29sIHVzZXMoR1BSUmVnIGdwcikgY29uc3QgeyByZXR1
cm4gbV9ncHIgPT0gZ3ByOyB9CisgICAgCiBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwcjsKIH07
CkBAIC0xNjksNiArMTcxLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdGFnR1BSKCk7CiAg
ICAgfQogCisgICAgYm9vbCB1c2VzKEdQUlJlZyBncHIpIGNvbnN0IHsgcmV0dXJuIG1fdGFnR1BS
ID09IGdwciB8fCBtX3BheWxvYWRHUFIgPT0gZ3ByOyB9CisgICAgCiBwcml2YXRlOgogICAgIGlu
dDhfdCBtX3RhZ0dQUjsKICAgICBpbnQ4X3QgbV9wYXlsb2FkR1BSOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMDAsNiArMzAwLDEzIEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9w
Y29kZUkKICAgICBzdG9yZTMyKHJlZ1QwLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBK
U1N0YWNrOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5
bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogICAgIHN0b3JlMzIocmVn
VDEsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpTU3RhY2s6OkNhbGxlZSAqIHN0YXRp
Y19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBUYWdPZmZzZXQgLSBzaXplb2YoQ2FsbGVy
RnJhbWVBbmRQQykpKTsKIAorICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1fY29kZUJsb2NrLT5h
ZGRDYWxsTGlua0luZm8oKTsKKworICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKKyAg
ICAgICAgbV92bS0+Y2FsbEVkZ2VMb2ctPmVtaXRMb2dDb2RlKAorICAgICAgICAgICAgKnRoaXMs
IGluZm8tPmNhbGxFZGdlUHJvZmlsZSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7CisgICAg
fQorCiAgICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCkgewogICAgICAgICBjb21waWxl
Q2FsbEV2YWwoaW5zdHJ1Y3Rpb24pOwogICAgICAgICByZXR1cm47CkBAIC0zMTMsNyArMzIwLDYg
QEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIGFkZFNsb3dD
YXNlKHNsb3dDYXNlKTsKIAogICAgIEFTU0VSVChtX2NhbGxDb21waWxhdGlvbkluZm8uc2l6ZSgp
ID09IGNhbGxMaW5rSW5mb0luZGV4KTsKLSAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2NvZGVC
bG9jay0+YWRkQ2FsbExpbmtJbmZvKCk7CiAgICAgaW5mby0+Y2FsbFR5cGUgPSBDYWxsTGlua0lu
Zm86OmNhbGxUeXBlRm9yKG9wY29kZUlEKTsKICAgICBpbmZvLT5jb2RlT3JpZ2luID0gQ29kZU9y
aWdpbihtX2J5dGVjb2RlT2Zmc2V0KTsKICAgICBpbmZvLT5jYWxsZWVHUFIgPSByZWdUMDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAkocmV2aXNpb24gMTcyMTc3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjEyLDYgKzIxMiwxMSBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNv
ZGVJCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjYWxsZWUsIHJlZ1QwKTsgLy8gcmVnVDAg
aG9sZHMgY2FsbGVlLgogCiAgICAgc3RvcmU2NChyZWdUMCwgQWRkcmVzcyhzdGFja1BvaW50ZXJS
ZWdpc3RlciwgSlNTdGFjazo6Q2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0
ZXIpKSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOworICAgIAorICAgIENhbGxMaW5rSW5m
byogaW5mbyA9IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsKKworICAgIGlmIChzaG91
bGRFbWl0UHJvZmlsaW5nKCkpCisgICAgICAgIG1fdm0tPmNhbGxFZGdlTG9nLT5lbWl0TG9nQ29k
ZSgqdGhpcywgaW5mby0+Y2FsbEVkZ2VQcm9maWxlLCByZWdUMCk7CiAKICAgICBpZiAob3Bjb2Rl
SUQgPT0gb3BfY2FsbF9ldmFsKSB7CiAgICAgICAgIGNvbXBpbGVDYWxsRXZhbChpbnN0cnVjdGlv
bik7CkBAIC0yMjMsNyArMjI4LDYgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQg
b3Bjb2RlSQogICAgIGFkZFNsb3dDYXNlKHNsb3dDYXNlKTsKIAogICAgIEFTU0VSVChtX2NhbGxD
b21waWxhdGlvbkluZm8uc2l6ZSgpID09IGNhbGxMaW5rSW5mb0luZGV4KTsKLSAgICBDYWxsTGlu
a0luZm8qIGluZm8gPSBtX2NvZGVCbG9jay0+YWRkQ2FsbExpbmtJbmZvKCk7CiAgICAgaW5mby0+
Y2FsbFR5cGUgPSBDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKG9wY29kZUlEKTsKICAgICBpbmZv
LT5jb2RlT3JpZ2luID0gQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KTsKICAgICBpbmZvLT5j
YWxsZWVHUFIgPSByZWdUMDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NJbmxpbmVzLmgJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogLy8g
SW4gZmFjdCwgaXQgY2FuIG1ha2UgYSBsb3Qgb2Ygc2Vuc2U6IG91dHNpZGUgb2YgSlNDLCB0aGlz
IGZpbGUgYmVjb21lcyBhIGtpbmQgb2YgdW1icmVsbGEKIC8vIGhlYWRlciB0aGF0IHB1bGxzIGlu
IG1vc3QgKGFsbD8pIG9mIHRoZSBpbnRlcmVzdGluZyB0aGluZ3MgaW4gSlNDLgogCisjaW5jbHVk
ZSAiQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZUlubGluZXMu
aCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiR0NJbmNvbWluZ1Jl
ZkNvdW50ZWRJbmxpbmVzLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJl
dmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdv
cmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBBcml0eUNoZWNrRmFpbFJldHVyblRodW5rczsKICAgICBjbGFzcyBCdWlsdGluRXhlY3V0YWJs
ZXM7CisgICAgY2xhc3MgQ2FsbEVkZ2VMb2c7CiAgICAgY2xhc3MgQ29kZUJsb2NrOwogICAgIGNs
YXNzIENvZGVDYWNoZTsKICAgICBjbGFzcyBDb21tb25JZGVudGlmaWVyczsKQEAgLTIzMiw2ICsy
MzMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgT3du
UHRyPERGRzo6TG9uZ0xpdmVkU3RhdGU+IGRmZ1N0YXRlOwogI2VuZGlmIC8vIEVOQUJMRShERkdf
SklUKQorICAgICAgICAKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxFZGdlTG9nPiBjYWxs
RWRnZUxvZzsKIAogICAgICAgICBWTVR5cGUgdm1UeXBlOwogICAgICAgICBDbGllbnREYXRhKiBj
bGllbnREYXRhOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9uZXct
YXJyYXktdGhlbi1leGl0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvbmV3LWFycmF5LXRoZW4tZXhpdC5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbmV3LWFycmF5LXRoZW4tZXhpdC5qcwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACitmdW5jdGlvbiBmb28oZikgeworICAgIHJldHVy
biBuZXcgZigpOworfQorCitub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDAwOyArK2kpCisgICAgZm9vKEFycmF5KTsKKwordmFyIGRpZENhbGwgPSBmYWxzZTsKK2Zvbyhm
dW5jdGlvbigpIHsgZGlkQ2FsbCA9IHRydWU7IH0pOworCitpZiAoIWRpZENhbGwpCisgICAgdGhy
b3cgIkVycm9yOiBkaWRuJ3QgY2FsbCBteSBmdW5jdGlvbi4iOwpJbmRleDogU291cmNlL1dURi93
dGYvT3duUHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvT3duUHRyLmgJKHJldmlz
aW9uIDE3MjE3NykKKysrIFNvdXJjZS9XVEYvd3RmL093blB0ci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAo
QykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjIsNiArMjIsNyBAQAogI2Rl
ZmluZSBXVEZfT3duUHRyX2gKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVk
ZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRl
IDx3dGYvT3duUHRyQ29tbW9uLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgpAQCAtNzIsNiArNzMs
MTQgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IE93blB0
ciYgb3BlcmF0b3I9KE93blB0cjxVPiYmKTsKIAogICAgICAgICB2b2lkIHN3YXAoT3duUHRyJiBv
KSB7IHN0ZDo6c3dhcChtX3B0ciwgby5tX3B0cik7IH0KKyAgICAgICAgCisgICAgICAgIC8vIENv
bnN0cnVjdCBhbiBvYmplY3QgdG8gc3RvcmUgaW50byB0aGlzIE93blB0ciwgYnV0IG9ubHkgc28g
bG9uZyBhcyB0aGlzIE93blB0cgorICAgICAgICAvLyBkb2Vzbid0IGFscmVhZHkgcG9pbnQgdG8g
YW4gb2JqZWN0LiBUaGlzIHdpbGwgZW5zdXJlIHRoYXQgYWZ0ZXIgeW91IGNhbGwgdGhpcywKKyAg
ICAgICAgLy8gdGhlIE93blB0ciB3aWxsIHBvaW50IHRvIGFuIGluc3RhbmNlIG9mIFQuIFRoaXMg
aW5zdGFuY2UgbWF5IG9yIG1heSBub3QgaGF2ZSBiZWVuCisgICAgICAgIC8vIGNyZWF0ZWQgYnkg
dGhpcyBjYWxsLiBNb3Jlb3ZlciwgdGhpcyBjYWxsIHVzZXMgYW4gb3Bwb3J0dW5pc3RpYyB0cmFu
c2FjdGlvbiwgaW4KKyAgICAgICAgLy8gdGhhdCB3ZSBtYXkgY3JlYXRlIGFuIGluc3RhbmNlIG9m
IFQgYW5kIHRoZW4gaW1tZWRpYXRlbHkgdGhyb3cgaXQgYXdheS4KKyAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUuLi4gQXJncz4KKyAgICAgICAgdm9pZCBjcmVhdGVUcmFuc2FjdGlvbmFsbHkoQXJn
cy4uLiBhcmdzKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IE93blB0cihQdHJU
eXBlIHB0cikgOiBtX3B0cihwdHIpIHsgfQpAQCAtMTg2LDYgKzE5NSwyOCBAQCBuYW1lc3BhY2Ug
V1RGIHsKICAgICAgICAgcmV0dXJuIHAuZ2V0KCk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gaW5saW5lIHZvaWQgT3duUHRyPFQ+
OjpjcmVhdGVUcmFuc2FjdGlvbmFsbHkoQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgaWYg
KG1fcHRyKSB7CisgICAgICAgICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgVCogbmV3T2JqZWN0ID0gbmV3
IFQoYXJncy4uLik7CisgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CisjaWYgRU5BQkxF
KENPTVBBUkVfQU5EX1NXQVApCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGlmIChtX3B0cikg
eworICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdPYmplY3Q7CisgICAgICAgICAgICAgICAgV1RG
Ojpsb2FkTG9hZEZlbmNlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICB9IHdoaWxlICghV1RGOjp3ZWFrQ29tcGFyZUFuZFN3YXAoJm1fcHRyLCBudWxs
cHRyLCBuZXdPYmplY3QpKTsKKyNlbHNlCisgICAgICAgIG1fcHRyID0gbmV3T2JqZWN0OworI2Vu
ZGlmCisgICAgfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpPd25QdHI7Cklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL1NwZWN0cnVtLmgJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9XVEYvd3RmL1NwZWN0
cnVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDIyICszMiwzMSBAQAogCiBuYW1lc3BhY2UgV1RGIHsK
IAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIENv
dW50ZXJUeXBlID0gdW5zaWduZWQ+CiBjbGFzcyBTcGVjdHJ1bSB7CiBwdWJsaWM6Ci0gICAgdHlw
ZWRlZiB0eXBlbmFtZSBIYXNoTWFwPFQsIHVuc2lnbmVkIGxvbmc+OjppdGVyYXRvciBpdGVyYXRv
cjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz46OmNvbnN0
X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOworICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxU
LCBDb3VudGVyVHlwZT46Oml0ZXJhdG9yIGl0ZXJhdG9yOworICAgIHR5cGVkZWYgdHlwZW5hbWUg
SGFzaE1hcDxULCBDb3VudGVyVHlwZT46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwog
ICAgIAogICAgIFNwZWN0cnVtKCkgeyB9CiAgICAgCi0gICAgdm9pZCBhZGQoY29uc3QgVCYga2V5
LCB1bnNpZ25lZCBsb25nIGNvdW50ID0gMSkKKyAgICB2b2lkIGFkZChjb25zdCBUJiBrZXksIENv
dW50ZXJUeXBlIGNvdW50ID0gMSkKICAgICB7Ci0gICAgICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwg
dW5zaWduZWQgbG9uZz46OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBjb3VudCk7
CisgICAgICAgIGlmICghY291bnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHR5cGVu
YW1lIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRk
KGtleSwgY291bnQpOwogICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAg
ICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSArPSBjb3VudDsKICAgICB9CiAgICAgCi0gICAgdW5z
aWduZWQgbG9uZyBnZXQoY29uc3QgVCYga2V5KSBjb25zdAorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+CisgICAgdm9pZCBhZGRBbGwoY29uc3QgU3BlY3RydW08VCwgVT4mIG90aGVyU3BlY3RydW0p
CisgICAgeworICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBvdGhlclNwZWN0cnVtKQorICAgICAg
ICAgICAgYWRkKGVudHJ5LmtleSwgZW50cnkuY291bnQpOworICAgIH0KKyAgICAKKyAgICBDb3Vu
dGVyVHlwZSBnZXQoY29uc3QgVCYga2V5KSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3RfaXRl
cmF0b3IgaXRlciA9IG1fbWFwLmZpbmQoa2V5KTsKICAgICAgICAgaWYgKGl0ZXIgPT0gbV9tYXAu
ZW5kKCkpCkBAIC02Myw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgS2V5QW5kQ291bnQg
ewogICAgICAgICBLZXlBbmRDb3VudCgpIHsgfQogICAgICAgICAKLSAgICAgICAgS2V5QW5kQ291
bnQoY29uc3QgVCYga2V5LCB1bnNpZ25lZCBsb25nIGNvdW50KQorICAgICAgICBLZXlBbmRDb3Vu
dChjb25zdCBUJiBrZXksIENvdW50ZXJUeXBlIGNvdW50KQogICAgICAgICAgICAgOiBrZXkoa2V5
KQogICAgICAgICAgICAgLCBjb3VudChjb3VudCkKICAgICAgICAgewpAQCAtODAsNyArODksNyBA
QCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBUIGtleTsKLSAgICAgICAgdW5zaWduZWQg
bG9uZyBjb3VudDsKKyAgICAgICAgQ291bnRlclR5cGUgY291bnQ7CiAgICAgfTsKICAgICAKICAg
ICAvLyBSZXR1cm5zIGEgbGlzdCBvcmRlcmVkIGZyb20gbG93ZXN0LWNvdW50IHRvIGhpZ2hlc3Qt
Y291bnQuCkBAIC05NCw4ICsxMDMsMTggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbGlzdDsK
ICAgICB9CiAgICAgCisgICAgdm9pZCBjbGVhcigpIHsgbV9tYXAuY2xlYXIoKTsgfQorICAgIAor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgdm9pZCByZW1vdmVJZihjb25zdCBG
dW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAgICAgICAgbV9tYXAucmVtb3ZlSWYoW2Z1bmN0b3Jd
ICh0eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6S2V5VmFsdWVQYWlyVHlwZSYgcGFp
cikgeworICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdG9yKEtleUFuZENvdW50KHBhaXIua2V5
LCBwYWlyLnZhbHVlKSk7CisgICAgICAgICAgICB9KTsKKyAgICB9CisgICAgCiBwcml2YXRlOgot
ICAgIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz4gbV9tYXA7CisgICAgSGFzaE1hcDxULCBDb3Vu
dGVyVHlwZT4gbV9tYXA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236738</attachid>
            <date>2014-08-17 17:11:03 -0700</date>
            <delta_ts>2014-08-17 19:28:10 -0700</delta_ts>
            <desc>even more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>146614</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzIxNzcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjY1LDYgKzI2NSwxMyBAQAogCQkwRjNCM0EyODE1NDRD
OTk3MDAzRUQwRkYgLyogREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjNBMjUxNTQ0Qzk5MTAwM0VEMEZG
IC8qIERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjNCM0EyQjE1NDc1MDAwMDAzRUQwRkYgLyogREZH
VmFsaWRhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYzQjNBMjkxNTQ3NEZGNDAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmNwcCAqLzsgfTsKIAkJ
MEYzQjNBMkMxNTQ3NTAwMjAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCM0EyQTE1NDc0RkY0MDAzRUQwRkYg
LyogREZHVmFsaWRhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRjNCN0UyNjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTIwMTlBMTFCODAw
MEQ5QkM1NiAvKiBDYWxsRWRnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGM0I3RTI3MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2Zp
bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
QjdFMjExOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAgKi87IH07CisJCTBG
M0I3RTI4MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTIyMTlBMTFCODAwMEQ5QkM1
NiAvKiBDYWxsRWRnZVByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRjNCN0UyOTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9m
aWxlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYzQjdFMjMxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZUlubGluZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjNCN0Uy
QTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMjQxOUExMUI4MDAwRDlCQzU2IC8qIENh
bGxWYXJpYW50LmNwcCAqLzsgfTsKKwkJMEYzQjdFMkIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxW
YXJpYW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjNCN0UyNTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjNCN0UyRDE5QTEyQUFFMDBEOUJD
NTYgLyogQ2FsbEVkZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYzQjdFMkMxOUExMkFBRTAwRDlCQzU2IC8qIENhbGxFZGdlLmNwcCAqLzsgfTsK
IAkJMEYzRDBCQkMxOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRDBCQkEx
OTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suY3BwICovOyB9OwogCQkw
RjNEMEJCRDE5NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRDBCQkIxOTRBNDE0
MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQyNkE0ODE0NjBDQkIzMDAxMzFGOEYg
LyogVmFsdWVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0MjZBNDUxNDYwQ0JBQjAwMTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODI3LDggKzgz
NCw4IEBACiAJCTFDQUE5QTIzMThGNEEyMjAwMDBBMzY5RCAvKiBKU0dsb2JhbE9iamVjdFByb2Zp
bGVyQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDQUE5QTIxMThGNEEyMjAwMDBBMzY5RCAvKiBKU0dsb2JhbE9iamVjdFByb2ZpbGVyQWdlbnQu
aCAqLzsgfTsKIAkJMjYwMEI1QTYxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2MDBCNUE0
MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5jcHAgKi87IH07CiAJCTI2MDBCNUE3
MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjYwMEI1QTUxNTJCQUFBNzAwOTFFRTVGIC8qIEpT
U3RyaW5nSm9pbmVyLmggKi87IH07Ci0gCQkyQTA1QUJENTE5NjFERjI0MDAzNDE3NTAgLyogSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJBMDVBQkQzMTk2MURGMjQwMDM0MTc1MCAvKiBKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IuY3BwICovOyB9OwotIAkJMkEwNUFCRDYxOTYxREYyNDAwMzQxNzUwIC8qIEpT
UHJvcGVydHlOYW1lRW51bWVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkEwNUFCRDQxOTYxREYyNDAwMzQxNzUwIC8qIEpTUHJvcGVydHlOYW1l
RW51bWVyYXRvci5oICovOyB9OworCQkyQTA1QUJENTE5NjFERjI0MDAzNDE3NTAgLyogSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJBMDVBQkQzMTk2MURGMjQwMDM0MTc1MCAvKiBKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3IuY3BwICovOyB9OworCQkyQTA1QUJENjE5NjFERjI0MDAzNDE3NTAgLyogSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyQTA1QUJENDE5NjFERjI0MDAzNDE3NTAgLyogSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yLmggKi87IH07CiAJCTJBMTExMjQ1MTkyRkNFNzkwMDVFRTE4RCAvKiBDdXN0b21HZXR0
ZXJTZXR0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkExMTEyNDMxOTJGQ0U3OTAwNUVFMThEIC8qIEN1c3RvbUdldHRlclNldHRlci5jcHAgKi87
IH07CiAJCTJBMTExMjQ2MTkyRkNFNzkwMDVFRTE4RCAvKiBDdXN0b21HZXR0ZXJTZXR0ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBMTExMjQ0MTky
RkNFNzkwMDVFRTE4RCAvKiBDdXN0b21HZXR0ZXJTZXR0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyQTI4MjVEMDE4MzQxRjJEMDA4N0ZCQTkg
LyogRGVsYXllZFJlbGVhc2VTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkEyODI1Q0YxODM0MUYyRDAwODdGQkE5IC8qIERlbGF5ZWRSZWxlYXNl
U2NvcGUuaCAqLzsgfTsKQEAgLTg2MywxMCArODcwLDEwIEBACiAJCTQxMzU5Q0YzMEZERDg5QUQw
MDIwNjE4MCAvKiBEYXRlQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRDIxMjAyMjkwQUQ0MzEwQzAwRUQ3OUI2IC8qIERhdGVDb252ZXJz
aW9uLmggKi87IH07CiAJCTQ0NDNBRTMzMTZFMTg4RDkwMDc2RjExMCAvKiBGb3VuZGF0aW9uLmZy
YW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxRjBFQjYxMDVDODZDNkIwMEU2REYxQiAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayAqLzsgfTsK
IAkJNDUxNTM5QjkxMkRDOTk0NTAwRUY3QUM0IC8qIFlhcnIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1MTUzOUI4MTJEQzk5NDUwMEVGN0FDNCAvKiBZ
YXJyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLSAJ
CTUyQjMxMEZCMTk3NEFFNjEwMDgwODU3QyAvKiBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQjMxMEZBMTk3
NEFFNjEwMDgwODU3QyAvKiBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotIAkJNTJCMzEwRkQxOTc0QUU4NzAw
ODA4NTdDIC8qIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIzMTBGQzE5NzRBRTg3MDA4MDg1N0MgLyog
RnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcCAqLzsgfTsKLSAJCTUyQjMxMEZGMTk3NUI0MjQw
MDgwODU3QyAvKiBUeXBlTG9jYXRpb25DYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIzMTBGRTE5NzVCNDI0MDA4MDg1N0MgLyogVHlwZUxv
Y2F0aW9uQ2FjaGUuY3BwICovOyB9OwotIAkJNTJCMzExMDExOTc1QjQ2NzAwODA4NTdDIC8qIFR5
cGVMb2NhdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MkIzMTEwMDE5NzVCNDY3MDA4MDg1N0MgLyogVHlwZUxvY2F0aW9uQ2FjaGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MkIzMTBG
QjE5NzRBRTYxMDA4MDg1N0MgLyogRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIzMTBGQTE5NzRBRTYxMDA4
MDg1N0MgLyogRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTJCMzEwRkQxOTc0QUU4NzAwODA4NTdDIC8q
IEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIzMTBGQzE5NzRBRTg3MDA4MDg1N0MgLyogRnVuY3Rpb25I
YXNFeGVjdXRlZENhY2hlLmNwcCAqLzsgfTsKKwkJNTJCMzEwRkYxOTc1QjQyNDAwODA4NTdDIC8q
IFR5cGVMb2NhdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUyQjMxMEZFMTk3NUI0MjQwMDgwODU3QyAvKiBUeXBlTG9jYXRpb25DYWNo
ZS5jcHAgKi87IH07CisJCTUyQjMxMTAxMTk3NUI0NjcwMDgwODU3QyAvKiBUeXBlTG9jYXRpb25D
YWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJC
MzExMDAxOTc1QjQ2NzAwODA4NTdDIC8qIFR5cGVMb2NhdGlvbkNhY2hlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTUxMDUwMjYxOEVCODI3NTAw
MDAxRjNFIC8qIEpTQ2FsbGJhY2tGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0MEY4OEYwQTUwOEIxMDAwMDVGMDYxIC8qIEpTQ2FsbGJh
Y2tGdW5jdGlvbi5oICovOyB9OwogCQk1NTJFQTcwQzE5MDg3MDQ4MDBBNjZGMkYgLyogSlNEYXRh
Vmlld1Byb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjJCNjZCRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmlld1Byb3RvdHlwZS5j
cHAgKi87IH07CiAJCTU1NDA3NTcyMThEQTU4QUQwMEVGRjdGMiAvKiBBcmdMaXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Y2MDUxMjBFMjAzRUY4
MDBCOUE2NEQgLyogQXJnTGlzdC5oICovOyB9OwpAQCAtMjQzMiwxMyArMjQzOSw3IEBACiAJCTBG
MkQ0REU0MTk4MzJEOTEwMDdENEIxOSAvKiBUeXBlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVT
ZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDRERTUxOTgzMkRBQzAwN0Q0
QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBUb1RoaXNTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJE
NERFNjE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFRvVGhpc1N0YXR1cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotIAkJMEY3QjM2NUYxOTdDNTI1QzAwRUQxRERDIC8qIERGR1BoYW50b21DYW5vbmljYWxpemF0
aW9uUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHUGhh
bnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHUGhhbnRvbUNhbm9u
aWNhbGl6YXRpb25QaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0gCQkwRjdC
MzY2MDE5N0M1MjVDMDBFRDFEREMgLyogREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQaGFudG9tQ2Fub25pY2FsaXph
dGlvblBoYXNlLmg7IHBhdGggPSBkZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJENERFNzE5ODMyREFDMDA3RDRCMTkg
LyogVHlwZUxvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVM
b2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotIAkJNTJCMzEwRkExOTc0QUU2
MTAwODA4NTdDIC8qIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
dW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLSAJ
CTUyQjMxMEZDMTk3NEFFODcwMDgwODU3QyAvKiBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLSAJCTUyQjMxMEZFMTk3NUI0MjQwMDgwODU3QyAvKiBUeXBl
TG9jYXRpb25DYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUeXBlTG9jYXRpb25DYWNoZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0gCQk1MkIzMTEwMDE5NzVCNDY3MDA4MDg1
N0MgLyogVHlwZUxvY2F0aW9uQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZUxvY2F0aW9uQ2Fj
aGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRkM3NzAxNkUxMkY2RjAwMzhE
OTc2IC8qIERGR0RDRVBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERGR0RDRVBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdEQ0VQaGFzZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkZDNzcxMTZFMTJGNkYwMDM4RDk3NiAvKiBERkdEQ0VQ
aGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdEQ0VQaGFzZS5oOyBw
YXRoID0gZGZnL0RGR0RDRVBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
MkZDQ0YyMThBNjAwNzAwMDFBMjdGOCAvKiBERkdHcmFwaFNhZmVwb2ludC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdHcmFwaFNhZmVwb2ludC5jcHA7IHBhdGgg
PSBkZmcvREZHR3JhcGhTYWZlcG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjQ2OCw2ICsyNDY5LDEzIEBACiAJCTBGM0IzQTI1MTU0NEM5OTEwMDNFRDBGRiAvKiBERkdD
RkdTaW1wbGlmaWNhdGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdDRkdTaW1wbGlmaWNh
dGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0IzQTI5MTU0NzRG
RjQwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBERkdWYWxpZGF0ZS5jcHA7IHBhdGggPSBkZmcvREZHVmFsaWRhdGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNCM0EyQTE1NDc0RkY0MDAzRUQwRkYgLyog
REZHVmFsaWRhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVmFsaWRh
dGUuaDsgcGF0aCA9IGRmZy9ERkdWYWxpZGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjNCN0UyMDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbEVkZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEYzQjdFMjExOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsRWRnZVByb2ZpbGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyMjE5QTExQjgwMDBEOUJDNTYgLyog
Q2FsbEVkZ2VQcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxF
ZGdlUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyMzE5QTEx
QjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGM0I3RTI0MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsVmFyaWFudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGM0I3RTI1MTlBMTFCODAwMEQ5QkM1NiAv
KiBDYWxsVmFyaWFudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsVmFy
aWFudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyQzE5QTEyQUFFMDBE
OUJDNTYgLyogQ2FsbEVkZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ2FsbEVkZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNEMEJCQTE5
NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb25zdGFudFN0cnVjdHVyZUNoZWNrLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzRDBCQkIxOTRBNDE0MzAwRkM5Q0Y5IC8qIENv
bnN0YW50U3RydWN0dXJlQ2hlY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yNTc1LDYgKzI1ODMsOCBAQAogCQkwRjc2NkQzNzE1QUU0QTFBMDA4RjM2M0Ug
LyogU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzcwMDhFMTQwMkZERDYwMDc4RUIzOSAvKiBTYW1wbGlu
Z0NvdW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2FtcGxpbmdDb3Vu
dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzcwMDkxMTQwMkZGMjgwMDc4
RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2FtcGxpbmdDb3VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY3QjM2NUYxOTdDNTI1QzAwRUQxRERDIC8qIERGR1BoYW50b21DYW5vbmljYWxpemF0aW9u
UGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHUGhhbnRv
bUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHUGhhbnRvbUNhbm9uaWNh
bGl6YXRpb25QaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0IzNjYw
MTk3QzUyNUMwMEVEMUREQyAvKiBERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1BoYW50b21DYW5vbmljYWxpemF0aW9u
UGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBC
eVZhbEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnlWYWxJbmZvLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAv
KiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJv
ZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Q
cm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTk0LDggKzMwMDQsOCBA
QAogCQkxQ0FBOUEyMTE4RjRBMjIwMDAwQTM2OUQgLyogSlNHbG9iYWxPYmplY3RQcm9maWxlckFn
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0UHJv
ZmlsZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNjAwQjVBNDE1MkJB
QUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNTdHJpbmdKb2luZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyNjAwQjVBNTE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdKb2luZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLSAJCTJBMDVBQkQzMTk2MURGMjQwMDM0MTc1MCAvKiBKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLSAJCTJBMDVBQkQ0MTk2MURGMjQwMDM0MTc1MCAvKiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBMDVBQkQzMTk2MURGMjQw
MDM0MTc1MCAvKiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkEwNUFCRDQxOTYxREYyNDAwMzQxNzUwIC8qIEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkExMTEyNDMxOTJGQ0U3OTAwNUVFMThEIC8qIEN1c3RvbUdldHRlclNldHRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdXN0b21HZXR0ZXJTZXR0ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQTExMTI0NDE5MkZDRTc5MDA1RUUxOEQgLyog
Q3VzdG9tR2V0dGVyU2V0dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN1
c3RvbUdldHRlclNldHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQTI4MjVD
RjE4MzQxRjJEMDA4N0ZCQTkgLyogRGVsYXllZFJlbGVhc2VTY29wZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEZWxheWVkUmVsZWFzZVNjb3BlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0zMDMzLDYgKzMwNDMsMTAgQEAKIAkJNDVFMTJEODgwNkE0OUIwRjAw
RTlERjg0IC8qIGpzYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBqc2MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0
aCA9IDQ7IH07CiAJCTUxRjBFQjYxMDVDODZDNkIwMEU2REYxQiAvKiBGb3VuZGF0aW9uLmZyYW1l
d29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdy
YXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gRm91bmRhdGlvbi5mcmFtZXdvcms7IHBhdGggPSAvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yazsgc291cmNlVHJlZSA9
ICI8YWJzb2x1dGU+IjsgfTsKIAkJNTFGMEVDMDcwNUM4NkM5QTAwRTZERjFCIC8qIGxpYm9iamMu
ZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAi
Y29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYm9iamMuZHlsaWI7IHBhdGggPSAvdXNy
L2xpYi9saWJvYmpjLmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OworCQk1MkIz
MTBGQTE5NzRBRTYxMDA4MDg1N0MgLyogRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MkIzMTBGQzE5NzRBRTg3MDA4MDg1N0MgLyogRnVuY3Rpb25IYXNFeGVjdXRl
ZENhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyQjMxMEZFMTk3NUI0MjQwMDgwODU3
QyAvKiBUeXBlTG9jYXRpb25DYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUeXBlTG9jYXRp
b25DYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyQjMxMTAwMTk3NUI0
NjcwMDgwODU3QyAvKiBUeXBlTG9jYXRpb25DYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlTG9j
YXRpb25DYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTQwNzU4NDE4RjRB
Mzc1MDA2MDJBNUQgLyogQ29tcGlsZVJ1bnRpbWVUb0xMVk1JUi54Y2NvbmZpZyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQueGNjb25maWc7IHBhdGggPSBDb21waWxlUnVudGltZVRvTExWTUlSLnhjY29uZmlnOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTQwN0FDODE4REE1OEFEMDBFRkY3RjIgLyog
bGliQ29tcGlsZVJ1bnRpbWVUb0xMVk1JUi5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGgg
PSBsaWJDb21waWxlUnVudGltZVRvTExWTUlSLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCTVENTM3MjZEMEUxQzU0NkIwMDIxRTU0OSAvKiBUcmFjaW5nLmQgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gVHJhY2luZy5kOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNDk4Nyw4ICs1MDAxLDggQEAKIAkJCQkwRjJCNjZEQjE3QjZCNUFCMDBBN0FFM0YgLyogVHlw
ZWRBcnJheXMuaCAqLywKIAkJCQkwRjJCNjZEQzE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJh
eVR5cGUuY3BwICovLAogCQkJCTBGMkI2NkREMTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5
VHlwZS5oICovLAotIAkJCQk1MkIzMTEwMDE5NzVCNDY3MDA4MDg1N0MgLyogVHlwZUxvY2F0aW9u
Q2FjaGUuaCAqLywKLSAJCQkJNTJCMzEwRkUxOTc1QjQyNDAwODA4NTdDIC8qIFR5cGVMb2NhdGlv
bkNhY2hlLmNwcCAqLywKKwkJCQk1MkIzMTEwMDE5NzVCNDY3MDA4MDg1N0MgLyogVHlwZUxvY2F0
aW9uQ2FjaGUuaCAqLywKKwkJCQk1MkIzMTBGRTE5NzVCNDI0MDA4MDg1N0MgLyogVHlwZUxvY2F0
aW9uQ2FjaGUuY3BwICovLAogCQkJCTBGMkQ0REUzMTk4MzJEOTEwMDdENEIxOSAvKiBUeXBlU2V0
LmNwcCAqLywKIAkJCQkwRjJENERFNDE5ODMyRDkxMDA3RDRCMTkgLyogVHlwZVNldC5oICovLAog
CQkJCUE3QThBRjMyMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50MTZBcnJheS5oICovLApAQCAtNTQy
OSwxMSArNTQ0MywxOCBAQAogCQkJCTBGNjY2RUJFMTgzNTY2RjkwMEQwMTdGMSAvKiBCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggKi8sCiAJCQkJMEY4ODVFMTAxODQ5QTNCRTAwRjFF
M0ZBIC8qIEJ5dGVjb2RlVXNlRGVmLmggKi8sCiAJCQkJMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1
IC8qIEJ5VmFsSW5mby5oICovLAorCQkJCTBGM0I3RTJDMTlBMTJBQUUwMEQ5QkM1NiAvKiBDYWxs
RWRnZS5jcHAgKi8sCisJCQkJMEYzQjdFMjAxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlLmgg
Ki8sCisJCQkJMEYzQjdFMjExOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAg
Ki8sCisJCQkJMEYzQjdFMjIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5oICov
LAorCQkJCTBGM0I3RTIzMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGVJbmxpbmVz
LmggKi8sCiAJCQkJMEYwQjgzQUUxNEJDRjcxNDAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5jcHAg
Ki8sCiAJCQkJMEYwQjgzQUYxNEJDRjcxNDAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5oICovLAog
CQkJCTBGOTMzMjkzMTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5jcHAgKi8sCiAJ
CQkJMEY5MzMyOTQxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmggKi8sCiAJCQkJ
MEYwQjgzQjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zm
c2V0LmggKi8sCisJCQkJMEYzQjdFMjQxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmNw
cCAqLywKKwkJCQkwRjNCN0UyNTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuaCAqLywK
IAkJCQk5NjlBMDc5MDBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmNwcCAqLywKIAkJCQk5
NjlBMDc5MTBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmggKi8sCiAJCQkJMEY4Rjk0M0Qx
NjY3NjMyRDAwRDYxOTcxIC8qIENvZGVCbG9ja0hhc2guY3BwICovLApAQCAtNTUyNSw3ICs1NTQ2
LDYgQEAKIAkJCQkwRjQyNkE0NjE0NjBDQkFCMDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmgg
Ki8sCiAJCQkJMEY5MTlEMjIxNTg1M0NERTAwNEE0RTdEIC8qIFdhdGNocG9pbnQuY3BwICovLAog
CQkJCTBGOTE5RDIzMTU4NTNDREUwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmggKi8sCi0JCQkJNTJE
QUQzOEUxOTVBMTY0RTAwRjMwNDY0IC8qIFR5cGVMb2NhdGlvbi5oICovLAogCQkJKTsKIAkJCXBh
dGggPSBieXRlY29kZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC01OTgzLDcgKzYw
MDMsNyBAQAogCQkJCTBGNkIxQ0I5MTg2MTI0NEMwMDg0NUQ5NyAvKiBBcml0eUNoZWNrTW9kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBMDA5QzExODMxQTI2RTAwQ0Y4NzExIC8qIEFSTTY0QXNz
ZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1RTcgLyog
QVJNQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKLSAJCQkJMkFEMkVERkIxOTc5OUUzODAwNEQ2
NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkFEMkVERkIxOTc5
OUUzODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3
QjgzQUMwRTZEQjhDOTAwNDc3NUE0IC8qIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyQTExMTI0NjE5MkZDRTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVy
U2V0dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MDMyMDE4QkZGQkUxMDA1QTA4MTEgLyog
SW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtNjEzNCw2ICs2MTU0LDcgQEAKIAkJ
CQkwRkZGQzk1QTE0RUY5MEE5MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMkZDNzczMTZFMTJGNzQwMDM4RDk3NiAvKiBERkdEQ0VQaGFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY4RjJCOUExNzJGMDUwMTAwN0RCREE1IC8qIERGR0Rlc2lyZWRJZGVudGlm
aWVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYzQjdFMjgxOUExMUI4MDAwRDlCQzU2IC8qIENh
bGxFZGdlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJDMEY3Q0UxN0JCRkM1QjAwNDY0
RkU0IC8qIERGR0Rlc2lyZWRUcmFuc2l0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFODUz
NEMxNzIzQ0RBNTAwQjYxOEY1IC8qIERGR0Rlc2lyZWRXYXRjaHBvaW50cy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQzI5ODFGRDkxN0JBRUU0QjAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXZWFrUmVmZXJl
bmNlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC02NDA0LDYgKzY0MjUsNyBAQAogCQkJCTBGNzY2RDMx
MTVBQTgxMTIwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY3NjZEMkMxNUE4Q0MzQTAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lU2V0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNEM1MjQyQjBGNTM1NUU5MDBCQTNEMDQgLyogSklUU3R1YnMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGM0I3RTJCMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkVGNjgzNUUxNzQzNDNDQzAwQTMyRTI1IC8qIEpJVFN0dWJzQVJN
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUY2ODM1RjE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1
YnNBUk12Ny5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVGNjgzNjExNzQzNDNDQzAwQTMyRTI1IC8q
IEpJVFN0dWJzWDg2LmggaW4gSGVhZGVycyAqLywKQEAgLTY0MTUsNiArNjQzNyw3IEBACiAJCQkJ
QTc2RjU0QTMxM0IyOEFBQjAwRUYyQkNFIC8qIEpJVFdyaXRlQmFycmllci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxOEM0MTYwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQWN0aXZhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODQwNDgwMTMxMDIxQTFEOTAwOEU3RjAxIC8qIEpTQVBJVmFsdWVXcmFw
cGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjNCN0UyOTE5QTExQjgwMDBEOUJDNTYgLyogQ2Fs
bEVkZ2VQcm9maWxlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJDRjM5QzIxNkUxNUE4
MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc2
MTQwRDIxODI5ODJDQjAwNzUwNjI0IC8qIEpTQXJndW1lbnRzSXRlcmF0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDNDE3MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0FycmF5LmggaW4gSGVhZGVy
cyAqLywKQEAgLTY2NjIsNyArNjY4NSw3IEBACiAJCQkJQTc4NUY2QkMxOEM1NTNGRTAwRjEwNjI2
IC8qIFNwaWxsUmVnaXN0ZXJzTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NTUwRTE2
RjVDRDAwQjM0NDYwIC8qIFByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0Yz
OUMxNUVEOEU0NjAwRjE2N0IyIC8qIFByb3BlcnR5U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCi0g
CQkJCTBGNkZDNzUxMTk2MTEwQTgwMEUxRDAyRCAvKiBDb21wbGV4R2V0U3RhdHVzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjZGQzc1MTE5NjExMEE4MDBFMUQwMkQgLyogQ29tcGxleEdldFN0YXR1
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxMkRFMTAxOTc5RDVGRDAwMDZGRjRFIC8qIEV4Y2Vw
dGlvbkZ1enouaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDU2MEUxNkY1Q0QwMEIzNDQ2MCAv
KiBQcm90ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc0QzMzQjE2QUEyRDk1MDA2MkYwMUQg
LyogUHJvdG90eXBlTWFwLmggaW4gSGVhZGVycyAqLywKQEAgLTY3MjksNiArNjc1Miw3IEBACiAJ
CQkJRTQ5REMxNkMxMkVGMjk0RTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUU0OURDMTZEMTJFRjI5NTMwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRl
ckNhY2hlSXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUUxNUVEOEU0NjAwRjE2N0Iy
IC8qIFNwYXJzZUFycmF5VmFsdWVNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGM0I3RTI2MTlB
MTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTczODY1NTQx
MTg2OTdCNDAwNTQwMjc5IC8qIFNwZWNpYWxpemVkVGh1bmtKSVQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNTU0MUIyMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZEODJFNTQxNDFEQUVFRTAwMTc5Qzk0IC8qIFNwZWN1bGF0ZWRUeXBlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTc4NTUsNiArNzg3OSw3IEBACiAJCQkJMEYyMzVCRDUxNzE3OEUx
QzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudEZvck9wZXJhbmQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEYyMzVCRDgxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRUaHVua0dlbmVyYXRvci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJEQTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhp
dFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGM0I3RTI3MTlBMTFCODAwMEQ5QkM1NiAv
KiBDYWxsRWRnZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdGMjk5NkIxN0EwQkI2
NzAwMTA0MTdBIC8qIEZUTEZhaWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEOEEzMTkxN0Q1
MUYyMjAwQ0EyQzQwIC8qIEZUTEZvck9TUkVudHJ5SklUQ29kZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjI1RjFBRjE4MTYzNUYzMDA1MjJGMzkgLyogRlRMSW5saW5lQ2FjaGVTaXplLmNwcCBp
biBTb3VyY2VzICovLApAQCAtODA0MSw2ICs4MDY2LDcgQEAKIAkJCQkwRjQ2ODBEMjE0QkJEMTY1
MDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzhCMDExMTdD
RjA3ODAwMEIxNDREMyAvKiBMTEludEVudHJ5cG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEY0NjgwQTgxNEJBN0ZBQjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRjNCN0UyRDE5QTEyQUFFMDBEOUJDNTYgLyogQ2FsbEVkZ2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50U2xvd1BhdGhz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMEI4MzlDMTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTElu
dFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkNFRkFDRDE4MDVFNzU1MDA0NzJDRTQg
LyogTExWTUFQSS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTgyMDEsNiArODIyNyw3IEBACiAJCQkJ
MTRFODRGQTAxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkE0RUM5MEIxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkM4MTUwQjE0MDQzQzBFMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVy
U3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjNCN0UyQTE5QTExQjgwMDBEOUJDNTYg
LyogQ2FsbFZhcmlhbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdFNUFCM0ExNzk5RTRCMjAw
RDI4MzNEIC8qIFg4NkRpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjNDNkQ5
QzE1MjExMTFBMDA1ODVFNEUgLyogWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODY3MDRCODQxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJJbnRlcnByZXRlci5jcHAg
aW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
RWRnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxFZGdlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsRWRnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQ2FsbEVkZ2UuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgQ2FsbEVk
Z2U6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoIjwiLCBt
X2NhbGxlZSwgIiwgY291bnQ6ICIsIG1fY291bnQsICI+Iik7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDYWxsRWRnZV9oCisjZGVmaW5lIENhbGxF
ZGdlX2gKKworI2luY2x1ZGUgIkNhbGxWYXJpYW50LmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0
eXBlZGVmIHVpbnQxNl90IENhbGxFZGdlQ291bnRUeXBlOworCitjbGFzcyBDYWxsRWRnZSB7Citw
dWJsaWM6CisgICAgQ2FsbEVkZ2UoKTsKKyAgICBDYWxsRWRnZShDYWxsVmFyaWFudCBjYWxsZWUs
IENhbGxFZGdlQ291bnRUeXBlIGNvdW50KTsKKyAgICAKKyAgICBib29sIG9wZXJhdG9yISgpIGNv
bnN0IHsgcmV0dXJuICFtX2NhbGxlZTsgfQorICAgIAorICAgIENhbGxWYXJpYW50IGNhbGxlZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FsbGVlOyB9CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgY291bnQo
KSBjb25zdCB7IHJldHVybiBtX2NvdW50OyB9CisgICAgCisgICAgQ2FsbEVkZ2UgZGVzcGVjaWZp
ZWRDbG9zdXJlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBDYWxsRWRnZShtX2NhbGxl
ZS5kZXNwZWNpZmllZENsb3N1cmUoKSwgbV9jb3VudCk7CisgICAgfQorICAgIAorICAgIHZvaWQg
ZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIAorcHVibGljOgorICAgIENhbGxWYXJpYW50
IG1fY2FsbGVlOworICAgIENhbGxFZGdlQ291bnRUeXBlIG1fY291bnQ7Cit9OworCitpbmxpbmUg
Q2FsbEVkZ2U6OkNhbGxFZGdlKENhbGxWYXJpYW50IGNhbGxlZSwgQ2FsbEVkZ2VDb3VudFR5cGUg
Y291bnQpCisgICAgOiBtX2NhbGxlZShjYWxsZWUpCisgICAgLCBtX2NvdW50KGNvdW50KQorewor
fQorCitpbmxpbmUgQ2FsbEVkZ2U6OkNhbGxFZGdlKCkKKyAgICA6IENhbGxFZGdlKENhbGxWYXJp
YW50KCksIDApCit7Cit9CisKK3R5cGVkZWYgVmVjdG9yPENhbGxFZGdlLCAxPiBDYWxsRWRnZUxp
c3Q7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ2FsbEVkZ2VfaAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxl
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
RWRnZVByb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzI3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJDYWxsRWRnZVByb2ZpbGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1Zl
Y3RvcjxDYWxsRWRnZT4gQ2FsbEVkZ2VQcm9maWxlOjpjYWxsRWRnZXMoKSBjb25zdAoreworICAg
IENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCisgICAgQ2FsbEVkZ2VM
aXN0IHJlc3VsdDsKKyAgICAKKyAgICBDYWxsVmFyaWFudCBwcmltYXJ5Q2FsbGVlID0gbV9wcmlt
YXJ5Q2FsbGVlOworICAgIGZsb2F0IG51bUNhbGxzVG9QcmltYXJ5ID0gbV9udW1DYWxsc1RvUHJp
bWFyeTsKKyAgICAvLyBEZWZlbmQgYWdhaW5zdCByYWNlcy4gVGhlc2UgZmllbGRzIGFyZSBtb2Rp
ZmllZCBieSB0aGUgbG9nIHByb2Nlc3NvciB3aXRob3V0IGxvY2tpbmcuCisgICAgaWYgKCEhcHJp
bWFyeUNhbGxlZSAmJiBudW1DYWxsc1RvUHJpbWFyeSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZChD
YWxsRWRnZShwcmltYXJ5Q2FsbGVlLCBudW1DYWxsc1RvUHJpbWFyeSkpOworICAgIAorICAgIGlm
IChtX290aGVyQ2FsbGVlcykgeworICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBpZiB0aGUgcHJp
bWFyeSB0aHJlYWQgaGFkIGp1c3QgY3JlYXRlZCBhIG1fb3RoZXJDYWxsZXMgd2hpbGUgbG9nCisg
ICAgICAgIC8vIHByb2Nlc3NpbmcsIHdlIHNlZSBhIGNvbnNpc3RlbnRseSBjcmVhdGVkIG9uZS4g
VGhlIGxvY2sgYmVpbmcgaGVsZCBpcyBpbnN1ZmZpY2llbnQgZm9yCisgICAgICAgIC8vIHRoaXMs
IHNpbmNlIHRoZSBsb2cgcHJvY2Vzc29yIHdpbGwgb25seSBncmFiIHRoZSBsb2NrIHdoZW4gbWVy
Z2luZyB0aGUgc2Vjb25kYXJ5CisgICAgICAgIC8vIHNwZWN0cnVtIGludG8gdGhlIHByaW1hcnkg
b25lIGJ1dCBtYXkgc3RpbGwgY3JlYXRlIHRoZSBkYXRhIHN0cnVjdHVyZSB3aXRob3V0IGhvbGRp
bmcKKyAgICAgICAgLy8gbG9ja3MuCisgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOworICAg
ICAgICBmb3IgKENhbGxFZGdlIGVudHJ5IDogbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkKQor
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChlbnRyeSk7CisgICAgfQorICAgIAorICAgIHN0ZDo6
c29ydChyZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpLCBbXSAoY29uc3QgQ2FsbEVkZ2UmIGEs
IGNvbnN0IENhbGxFZGdlJiBiKSAtPiBib29sIHsKKyAgICAgICAgICAgIHJldHVybiBhLmNvdW50
KCkgPiBiLmNvdW50KCk7CisgICAgICAgIH0pOworICAgIAorICAgIGlmIChyZXN1bHQuc2l6ZSgp
ID49IDIpCisgICAgICAgIEFTU0VSVChyZXN1bHRbMF0uY291bnQoKSA+IHJlc3VsdC5sYXN0KCku
Y291bnQoKSk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQ2FsbEVkZ2VDb3VudFR5
cGUgQ2FsbEVkZ2VQcm9maWxlOjpudW1DYWxsc1RvS25vd25DZWxscygpIGNvbnN0Cit7CisgICAg
Q2FsbEVkZ2VDb3VudFR5cGUgcmVzdWx0ID0gMDsKKyAgICBmb3IgKENhbGxFZGdlIGVkZ2UgOiBj
YWxsRWRnZXMoKSkKKyAgICAgICAgcmVzdWx0ICs9IGVkZ2UuY291bnQoKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitzdGF0aWMgYm9vbCB3b3J0aERlc3BlY2lmeWluZyhjb25zdCBDYWxsVmFy
aWFudCYgdmFyaWFudCkKK3sKKyAgICByZXR1cm4gIUhlYXA6OmlzTWFya2VkKHZhcmlhbnQucmF3
Q2FsbGVlQ2VsbCgpKQorICAgICAgICAmJiBIZWFwOjppc01hcmtlZCh2YXJpYW50LmRlc3BlY2lm
aWVkQ2xvc3VyZSgpLnJhd0NhbGxlZUNlbGwoKSk7Cit9CisKK2Jvb2wgQ2FsbEVkZ2VQcm9maWxl
Ojp3b3J0aERlc3BlY2lmeWluZygpCit7CisgICAgaWYgKG1fY2xvc3VyZXNBcmVEZXNwZWNpZmll
ZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghIW1fcHJpbWFyeUNhbGxl
ZSAmJiAhd29ydGhEZXNwZWNpZnlpbmcobV9wcmltYXJ5Q2FsbGVlKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIAorICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpLS07KSB7Cisg
ICAgICAgICAgICBpZiAoIXdvcnRoRGVzcGVjaWZ5aW5nKG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nl
c3NlZFtpXS5jYWxsZWUoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgfQorICAgIAorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIENhbGxFZGdlUHJv
ZmlsZTo6dmlzaXRXZWFrKCkKK3sKKyAgICBpZiAoIW1fcHJpbWFyeUNhbGxlZSAmJiAhbV9vdGhl
ckNhbGxlZXMpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBDb25jdXJyZW50SklUTG9ja2Vy
IGxvY2tlcihtX2xvY2spOworICAgIAorICAgIC8vIFNlZSBpZiBhbnl0aGluZyBpcyBkZWFkIGFu
ZCBpZiB0aGF0IGNhbiBiZSByZWN0aWZpZWQgYnkgZGVzcGVjaWZ5aW5nLgorICAgIGlmICh3b3J0
aERlc3BlY2lmeWluZygpKSB7CisgICAgICAgIENhbGxTcGVjdHJ1bSBuZXdTcGVjdHJ1bTsKKyAg
ICAgICAgCisgICAgICAgIGlmICghIW1fcHJpbWFyeUNhbGxlZSkKKyAgICAgICAgICAgIG5ld1Nw
ZWN0cnVtLmFkZChtX3ByaW1hcnlDYWxsZWUuZGVzcGVjaWZpZWRDbG9zdXJlKCksIG1fbnVtQ2Fs
bHNUb1ByaW1hcnkpOworICAgICAgICAKKyAgICAgICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7Cisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQu
c2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICAgICAgbmV3U3BlY3RydW0uYWRkKAorICAgICAg
ICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCkuZGVz
cGVjaWZpZWRDbG9zdXJlKCksCisgICAgICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5t
X3Byb2Nlc3NlZFtpXS5jb3VudCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBWZWN0b3I8Q2FsbFNwZWN0cnVtOjpLZXlB
bmRDb3VudD4gbGlzdCA9IG5ld1NwZWN0cnVtLmJ1aWxkTGlzdCgpOworICAgICAgICBBU1NFUlQo
bGlzdC5zaXplKCkpOworICAgICAgICBtX3ByaW1hcnlDYWxsZWUgPSBsaXN0Lmxhc3QoKS5rZXk7
CisgICAgICAgIG1fbnVtQ2FsbHNUb1ByaW1hcnkgPSBsaXN0Lmxhc3QoKS5jb3VudDsKKyAgICAg
ICAgCisgICAgICAgIEFTU0VSVCghIW1fb3RoZXJDYWxsZWVzID09IChsaXN0LnNpemUoKSA+PSAy
KSk7CisgICAgICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICAgICAgbV9vdGhlckNh
bGxlZXMtPm1fcHJvY2Vzc2VkLmNsZWFyKCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBsaXN0LnNpemUoKSAtIDE7IGktLTspCisgICAgICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMt
Pm1fcHJvY2Vzc2VkLmFwcGVuZChDYWxsRWRnZShsaXN0W2ldLmtleSwgbGlzdFtpXS5jb3VudCkp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQg
PSB0cnVlOworICAgICAgICAKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAo
ISFtX3ByaW1hcnlDYWxsZWUgJiYgIUhlYXA6OmlzTWFya2VkKG1fcHJpbWFyeUNhbGxlZS5yYXdD
YWxsZWVDZWxsKCkpKSB7CisgICAgICAgIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxsICs9IG1fbnVt
Q2FsbHNUb1ByaW1hcnk7CisgICAgICAgIAorICAgICAgICBtX3ByaW1hcnlDYWxsZWUgPSBudWxs
cHRyOworICAgICAgICBtX251bUNhbGxzVG9QcmltYXJ5ID0gMDsKKyAgICB9CisgICAgCisgICAg
aWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIGlm
IChIZWFwOjppc01hcmtlZChtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCku
cmF3Q2FsbGVlQ2VsbCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgbV9udW1DYWxsc1RvVW5rbm93bkNlbGwgKz0gbV9vdGhlckNhbGxlZXMt
Pm1fcHJvY2Vzc2VkW2ldLmNvdW50KCk7CisgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9w
cm9jZXNzZWRbaS0tXSA9IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5sYXN0KCk7CisgICAg
ICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQucmVtb3ZlTGFzdCgpOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICAvLyBPbmx5IGV4aXN0cyB3aGlsZSB3ZSBhcmUgcHJvY2Vz
c2luZyB0aGUgbG9nLgorICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9vdGhlckNhbGxlZXMtPm1f
c2Vjb25kYXJ5KTsKKyAgICB9Cit9CisKK3ZvaWQgQ2FsbEVkZ2VQcm9maWxlOjphZGRTbG93KENh
bGxWYXJpYW50IGNhbGxlZSwgQ2FsbEVkZ2VQcm9maWxlVmVjdG9yJiBtZXJnZUJhY2tMb2cpCit7
CisgICAgLy8gVGhpcyBleGlzdHMgdG8gaGFuZGxlIGNhc2VzIHdoZXJlIHRoZSBzcGVjdHJ1bSB3
YXNuJ3QgY3JlYXRlZCB5ZXQsIG9yIHdlJ3JlIHN0b3JpbmcgdG8gYQorICAgIC8vIHBhcnRpY3Vs
YXIgc3BlY3RydW0gZm9yIHRoZSBmaXJzdCB0aW1lIGR1cmluZyBhIGxvZyBwcm9jZXNzaW5nIGl0
ZXJhdGlvbi4KKyAgICAKKyAgICBpZiAoIW1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgIG1fb3Ro
ZXJDYWxsZWVzID0gc3RkOjptYWtlX3VucWl1ZTxTZWNvbmRhcnk+KCk7CisgICAgICAgIC8vIElm
IGEgY29tcGlsZXIgdGhyZWFkIG5vdGljZXMgdGhlIG1fb3RoZXJDYWxsZWVzIGJlaW5nIG5vbi1u
dWxsLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZQorICAgICAgICAvLyB0aGF0IGl0IHNlZXMgYSBmdWxs
eSBjcmVhdGVkIG9uZS4KKyAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKKyAgICB9Cisg
ICAgCisgICAgaWYgKCFtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSkgeworICAg
ICAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSA9IHN0ZDo6bWFrZV91bmlx
dWU8Q2FsbFNwZWN0cnVtPigpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX290aGVyQ2Fs
bGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBtX290aGVyQ2Fs
bGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+YWRkKAorICAgICAgICAgICAgICAgIG1fb3RoZXJD
YWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jYWxsZWUoKSwKKyAgICAgICAgICAgICAgICBtX290aGVy
Q2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQoKSk7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHdlJ3JlIHNl
ZWluZyB0aGlzIHByb2ZpbGUgZHVyaW5nIHRoaXMgbG9nCisgICAgICAgIC8vIHByb2Nlc3Npbmcg
aXRlcmF0aW9uLgorICAgICAgICBtZXJnZUJhY2tMb2cuYXBwZW5kKHRoaXMpOworICAgIH0KKyAg
ICAKKyAgICBtX290aGVyQ2FsbGVlcy0+bV9zZWNvbmRhcnktPmFkZChjYWxsZWUpOworfQorCit2
b2lkIENhbGxFZGdlUHJvZmlsZTo6bWVyZ2VCYWNrKCkKK3sKKyAgICBDb25jdXJyZW50SklUTG9j
a2VyIGxvY2tlcihtX2xvY2spOworICAgIAorICAgIEFTU0VSVChtX290aGVyQ2FsbGVlcyk7Cisg
ICAgQVNTRVJUKG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtKTsKKyAgICAKKyAg
ICBpZiAoISFtX3ByaW1hcnlDYWxsZWUpCisgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBv
cmFyeVNwZWN0cnVtLT5hZGQobV9wcmltYXJ5Q2FsbGVlLCBtX251bUNhbGxzVG9QcmltYXJ5KTsK
KyAgICAKKyAgICBpZiAoIW1fY2xvc3VyZXNBcmVEZXNwZWNpZmllZCkgeworICAgICAgICBDYWxs
U3BlY3RydW0gbmV3U3BlY3RydW07CisgICAgICAgIGZvciAoYXV0byBlbnRyeSA6ICptX290aGVy
Q2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSkKKyAgICAgICAgICAgIG5ld1NwZWN0cnVtLmFk
ZChlbnRyeS5rZXkuZGVzcGVjaWZpZWRDbG9zdXJlKCksIGVudHJ5LmNvdW50KTsKKyAgICAgICAg
CisgICAgICAgIGlmIChuZXdTcGVjdHJ1bS5zaXplKCkgPCBtX290aGVyQ2FsbGVlcy0+bV90ZW1w
b3JhcnlTcGVjdHJ1bS0+c2l6ZSgpKQorICAgICAgICAgICAgKm1fb3RoZXJDYWxsZWVzLT5tX3Rl
bXBvcmFyeVNwZWN0cnVtID0gbmV3U3BlY3RydW07CisgICAgICAgIAorICAgICAgICBtX2Nsb3N1
cmVzQXJlRGVzcGVjaWZpZWQgPSB0cnVlOworICAgIH0KKyAgICAKKyAgICBWZWN0b3I8Q2FsbFNw
ZWN0cnVtOjpLZXlBbmRDb3VudD4gbGlzdCA9IG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNw
ZWN0cnVtLT5idWlsZExpc3QoKTsKKyAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVj
dHJ1bSA9IG51bGxwdHI7CisgICAgCisgICAgbV9wcmltYXJ5Q2FsbGVlID0gbGlzdC5sYXN0KCku
a2V5OworICAgIG1fbnVtQ2FsbHNUb1ByaW1hcnkgPSBsaXN0Lmxhc3QoKS5jb3VudDsKKyAgICBs
aXN0LnJlbW92ZUxhc3QoKTsKKyAgICAKKyAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQu
Y2xlYXIoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGNvdW50ID0gbWF4S25vd25DYWxsZWVzOyBjb3Vu
dC0tICYmICFsaXN0LmlzRW1wdHkoKTspIHsKKyAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJv
Y2Vzc2VkLmFwcGVuZChDYWxsRWRnZShsaXN0Lmxhc3QoKS5rZXksIGxpc3QubGFzdCgpLmNvdW50
KSk7CisgICAgICAgIGxpc3QucmVtb3ZlTGFzdCgpOworICAgIH0KKyAgICAKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSBsaXN0LnNpemUoKTsgaS0tOykKKyAgICAgICAgbV9udW1DYWxsc1RvVW5rbm93
bkNlbGwgKz0gbGlzdFtpXS5jb3VudDsKK30KKwordm9pZCBDYWxsRWRnZVByb2ZpbGU6OmZhZGVC
eUhhbGYoKQoreworICAgIG1fbnVtQ2FsbHNUb1ByaW1hcnkgPj49IDE7CisgICAgbV9udW1DYWxs
c1RvTm90Q2VsbCA+Pj0gMTsKKyAgICBtX251bUNhbGxzVG9Vbmtub3duQ2VsbCA+Pj0gMTsKKyAg
ICBtX3RvdGFsQ291bnQgPj49IDE7CisgICAgCisgICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5zaXpl
KCk7IGktLTspIHsKKyAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXSA9
IENhbGxFZGdlKAorICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtp
XS5jYWxsZWUoKSwKKyAgICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRb
aV0uY291bnQoKSA+PiAxKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKG1fb3Ro
ZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8g
ZW50cnkgOiAqbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0pCisgICAgICAgICAg
ICAgICAgZW50cnkuY291bnQgPj49IDE7CisgICAgICAgIH0KKyAgICB9Cit9CisKK0NhbGxFZGdl
TG9nOjpDYWxsRWRnZUxvZygpCisgICAgOiBtX3NjYWxlZExvZ0luZGV4KGxvZ1NpemUgKiBzaXpl
b2YoRW50cnkpKQoreworfQorCitDYWxsRWRnZUxvZzo6fkNhbGxFZGdlTG9nKCkgeyB9CisKKyNp
ZiBFTkFCTEUoSklUKQorCitleHRlcm4gIkMiIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
cm9jZXNzQ2FsbEVkZ2VMb2coQ2FsbEVkZ2VMb2cqKSBXVEZfSU5URVJOQUw7CitleHRlcm4gIkMi
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2coQ2FsbEVkZ2VM
b2cqIGxvZykKK3sKKyAgICBsb2ctPnByb2Nlc3NMb2coKTsKK30KKwordm9pZCBDYWxsRWRnZUxv
Zzo6ZW1pdExvZ0NvZGUoQ0NhbGxIZWxwZXJzJiBqaXQsIENhbGxFZGdlUHJvZmlsZSYgcHJvZmls
ZSwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncykKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBudW1iZXJP
ZkFyZ3VtZW50cyA9IDE7CisgICAgCisgICAgR1BSUmVnIHNjcmF0Y2hHUFI7CisgICAgaWYgKCFj
YWxsZWVSZWdzLnVzZXMoR1BSSW5mbzo6cmVnVDApKQorICAgICAgICBzY3JhdGNoR1BSID0gR1BS
SW5mbzo6cmVnVDA7CisgICAgZWxzZSBpZiAoIWNhbGxlZVJlZ3MudXNlcyhHUFJJbmZvOjpyZWdU
MSkpCisgICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJbmZvOjpyZWdUMTsKKyAgICBlbHNlCisgICAg
ICAgIHNjcmF0Y2hHUFIgPSBHUFJJbmZvOjpyZWdUMjsKKyAgICAKKyAgICBqaXQubG9hZDMyKCZt
X3NjYWxlZExvZ0luZGV4LCBzY3JhdGNoR1BSKTsKKyAgICAKKyAgICBDQ2FsbEhlbHBlcnM6Okp1
bXAgb2sgPSBqaXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6Tm9uWmVybywgc2NyYXRjaEdQ
Uik7CisgICAgCisgICAgQVNTRVJUKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkgPj0gMSArIG51
bWJlck9mQXJndW1lbnRzKTsKKyAgICAKKyAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihzdGFja0FsaWdubWVudEJ5dGVzKCkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9p
bnRlclJlZ2lzdGVyKTsKKyAgICAKKyAgICBqaXQuc3RvcmVWYWx1ZShjYWxsZWVSZWdzLCBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2l6
ZW9mKEpTVmFsdWUpKSk7CisgICAgaml0LnNldHVwQXJndW1lbnRzKGNhbGxlZVJlZ3MpOworICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihvcGVyYXRpb25Qcm9jZXNzQ2Fs
bEVkZ2VMb2cpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICBqaXQuY2FsbChzY3JhdGNoKTsK
KyAgICBqaXQubG9hZFZhbHVlKENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0
YWNrUG9pbnRlclJlZ2lzdGVyLCBzaXplb2YoSlNWYWx1ZSkpLCBjYWxsZWVSZWdzKTsKKyAgICAK
KyAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdGFja0FsaWdubWVu
dEJ5dGVzKCkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAKKyAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihsb2dTaXplICogc2l6ZW9mKEVu
dHJ5KSksIHNjcmF0Y2hHUFIpOworICAgIG9rLmxpbmsoJmppdCk7CisKKyAgICBqaXQuc3ViMzIo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2l6ZW9mKEVudHJ5KSksIHNjcmF0Y2hHUFIpOwor
ICAgIGppdC5zdG9yZTMyKHNjcmF0Y2hHUFIsICZtX3NjYWxlZExvZ0luZGV4KTsKKyAgICBqaXQu
YWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX2xvZyksIHNjcmF0Y2hHUFIpOwor
ICAgIGppdC5zdG9yZVZhbHVlKGNhbGxlZVJlZ3MsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3Jh
dGNoR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW50cnksIG1fdmFsdWUpKSk7CisgICAgaml0LnN0b3Jl
UHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmcHJvZmlsZSksIENDYWxsSGVscGVyczo6
QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW50cnksIG1fcHJvZmlsZSkpKTsK
K30KKwordm9pZCBDYWxsRWRnZUxvZzo6ZW1pdExvZ0NvZGUoCisgICAgQ0NhbGxIZWxwZXJzJiBq
aXQsIE93blB0cjxDYWxsRWRnZVByb2ZpbGU+JiBwcm9maWxlUG9pbnRlciwgSlNWYWx1ZVJlZ3Mg
Y2FsbGVlUmVncykKK3sKKyAgICBpZiAoIU9wdGlvbnM6OmVuYWJsZUNhbGxFZGdlUHJvZmlsaW5n
KCkgfHwgIU9wdGlvbnM6OnVzZUZUTEpJVCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAg
cHJvZmlsZVBvaW50ZXIuY3JlYXRlVHJhbnNhY3Rpb25hbGx5KCk7CisgICAgZW1pdExvZ0NvZGUo
aml0LCAqcHJvZmlsZVBvaW50ZXIsIGNhbGxlZVJlZ3MpOworfQorCisjZW5kaWYgLy8gRU5BQkxF
KEpJVCkKKwordm9pZCBDYWxsRWRnZUxvZzo6cHJvY2Vzc0xvZygpCit7CisgICAgQ29uY3VycmVu
dEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAKKyAgICBBU1NFUlQoIShtX3NjYWxlZExv
Z0luZGV4ICUgc2l6ZW9mKEVudHJ5KSkpOworICAgIAorICAgIENhbGxFZGdlUHJvZmlsZVZlY3Rv
ciBtZXJnZUJhY2tMb2c7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9zY2FsZWRMb2dJ
bmRleCAvIHNpemVvZihFbnRyeSk7IGkgPCBsb2dTaXplOyArK2kpCisgICAgICAgIG1fbG9nW2ld
Lm1fcHJvZmlsZS0+YWRkKG1fbG9nW2ldLm1fdmFsdWUsIG1lcmdlQmFja0xvZyk7CisgICAgCisg
ICAgbV9zY2FsZWRMb2dJbmRleCA9IGxvZ1NpemUgKiBzaXplb2YoRW50cnkpOworICAgIAorICAg
IGZvciAodW5zaWduZWQgaSA9IG1lcmdlQmFja0xvZy5zaXplKCk7IGktLTspCisgICAgICAgIG1l
cmdlQmFja0xvZ1tpXS0+bWVyZ2VCYWNrKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmls
ZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxF
ZGdlUHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ2FsbEVkZ2VQcm9m
aWxlX2gKKyNkZWZpbmUgQ2FsbEVkZ2VQcm9maWxlX2gKKworI2luY2x1ZGUgIkNhbGxFZGdlLmgi
CisjaW5jbHVkZSAiQ2FsbFZhcmlhbnQuaCIKKyNpbmNsdWRlICJDb25jdXJyZW50SklUTG9jay5o
IgorI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIENDYWxsSGVscGVyczsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKKworY2xhc3MgQ2FsbEVkZ2VQcm9maWxlOwordHlwZWRlZiBWZWN0b3I8Q2FsbEVkZ2VQ
cm9maWxlKiwgMTA+IENhbGxFZGdlUHJvZmlsZVZlY3RvcjsKKworY2xhc3MgQ2FsbEVkZ2VQcm9m
aWxlIHsKK3B1YmxpYzoKKyAgICBDYWxsRWRnZVByb2ZpbGUoKTsKKyAgICAKKyAgICB2b2lkIGFk
ZChKU1ZhbHVlLCBDYWxsRWRnZVByb2ZpbGVWZWN0b3ImIG1lcmdlQmFja0xvZyk7CisgICAgCisg
ICAgQ2FsbEVkZ2VDb3VudFR5cGUgbnVtQ2FsbHNUb05vdENlbGwoKSBjb25zdCB7IHJldHVybiBt
X251bUNhbGxzVG9Ob3RDZWxsOyB9CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbnVtQ2FsbHNUb1Vu
a25vd25DZWxsKCkgY29uc3QgeyByZXR1cm4gbV9udW1DYWxsc1RvVW5rbm93bkNlbGw7IH0KKyAg
ICBDYWxsRWRnZUNvdW50VHlwZSBudW1DYWxsc1RvS25vd25DZWxscygpIGNvbnN0OworICAgIAor
ICAgIC8vIENhbGwgd2hpbGUgaG9sZGluZyB0aGUgb3duaW5nIENvZGVCbG9jaydzIGxvY2suCisg
ICAgQ2FsbEVkZ2VMaXN0IGNhbGxFZGdlcygpIGNvbnN0OworICAgIAorICAgIHZvaWQgdmlzaXRX
ZWFrKCk7CisgICAgCitwcml2YXRlOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhLbm93
bkNhbGxlZXMgPSA1OworICAgIAorICAgIGJvb2wgd29ydGhEZXNwZWNpZnlpbmcoKTsKKyAgICB2
b2lkIGFkZFNsb3coQ2FsbFZhcmlhbnQsIENhbGxFZGdlUHJvZmlsZVZlY3RvciYgbWVyZ2VCYWNr
TG9nKTsKKyAgICB2b2lkIG1lcmdlQmFjaygpOworICAgIHZvaWQgZmFkZUJ5SGFsZigpOworICAg
IAorICAgIC8vIEl0J3MgY2hlYXBlciB0byBsZXQgdGhpcyBoYXZlIGl0cyBvd24gbG9jay4gSXQg
bmVlZHMgdG8gYmUgYWJsZSB0byBmaW5kIHdoaWNoIGxvY2sgdG8KKyAgICAvLyBsb2NrLiBOb3Jt
YWxseSBpdCB3b3VsZCBsb2NrIHRoZSBvd25pbmcgQ29kZUJsb2NrJ3MgbG9jaywgYnV0IHRoYXQg
d291bGQgcmVxdWlyZSBhCisgICAgLy8gcG9pbnRlci13aWR0aCB3b3JkIHRvIHBvaW50IGF0IHRo
ZSBDb2RlQmxvY2suIEhhdmluZyB0aGUgYnl0ZS1zaXplZCBsb2NrIGhlcmUgaXMKKyAgICAvLyBj
aGVhcGVyLiBIb3dldmVyLCB0aGlzIG1lYW5zIHRoYXQgdGhlIHJlbGF0aW9uc2hpcCB3aXRoIHRo
ZSBDb2RlQmxvY2sgbG9jayBpczoKKyAgICAvLyBhY3F1aXJlIHRoZSBDb2RlQmxvY2sgbG9jayBi
ZWZvcmUgdGhpcyBvbmUuCisgICAgQ29uY3VycmVudEpJVExvY2sgbV9sb2NrOworICAgIAorICAg
IGJvb2wgbV9jbG9zdXJlc0FyZURlc3BlY2lmaWVkOworICAgIAorICAgIENhbGxFZGdlQ291bnRU
eXBlIG1fbnVtQ2FsbHNUb1ByaW1hcnk7CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbV9udW1DYWxs
c1RvTm90Q2VsbDsKKyAgICBDYWxsRWRnZUNvdW50VHlwZSBtX251bUNhbGxzVG9Vbmtub3duQ2Vs
bDsKKyAgICBDYWxsRWRnZUNvdW50VHlwZSBtX3RvdGFsQ291bnQ7CisgICAgQ2FsbFZhcmlhbnQg
bV9wcmltYXJ5Q2FsbGVlOworICAgIAorICAgIHR5cGVkZWYgU3BlY3RydW08Q2FsbFZhcmlhbnQs
IENhbGxFZGdlQ291bnRUeXBlPiBDYWxsU3BlY3RydW07CisgICAgCisgICAgc3RydWN0IFNlY29u
ZGFyeSB7CisgICAgICAgIFZlY3RvcjxDYWxsRWRnZT4gbV9wcm9jZXNzZWQ7IC8vIFByb2Nlc3Nl
ZCBidXQgbm90IG5lY2Vzc2FyaWx5IHNvcnRlZC4KKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENh
bGxTcGVjdHJ1bT4gbV90ZW1wb3JhcnlTcGVjdHJ1bTsKKyAgICB9OworICAgIAorICAgIHN0ZDo6
dW5pcXVlX3B0cjxTZWNvbmRhcnk+IG1fb3RoZXJDYWxsZWVzOworfTsKKworY2xhc3MgQ2FsbEVk
Z2VMb2cgeworcHVibGljOgorICAgIENhbGxFZGdlTG9nKCk7CisgICAgfkNhbGxFZGdlTG9nKCk7
CisKKyNpZiBFTkFCTEUoSklUKSAgICAKKyAgICB2b2lkIGVtaXRMb2dDb2RlKENDYWxsSGVscGVy
cyYsIENhbGxFZGdlUHJvZmlsZSYsIEpTVmFsdWVSZWdzIGNhbGxlZVJlZ3MpOyAvLyBBc3N1bWVz
IHRoYXQgc3RhY2sgaXMgYWxpZ25lZCwgYWxsIHZvbGF0aWxlIHJlZ2lzdGVycyAtIG90aGVyIHRo
YW4gY2FsbGVlR1BSIC0gYXJlIGNsb2JiZXJhYmxlLCBhbmQgdGhlIHBhcmFtZXRlciBzcGFjZSBp
cyBpbiB1c2UuCisgICAgCisgICAgLy8gU2FtZSBhcyBhYm92ZSBidXQgY3JlYXRlcyBhIENhbGxF
ZGdlUHJvZmlsZSBpbnN0YW5jZSBpZiBvbmUgZGlkIG5vdCBhbHJlYWR5IGV4aXN0LiBEb2VzCisg
ICAgLy8gdGhpcyBpbiBhIHRocmVhZC1zYWZlIG1hbm5lciBieSBjYWxsaW5nIE93blB0cjo6Y3Jl
YXRlVHJhbnNhY3Rpb25hbGx5LgorICAgIHZvaWQgZW1pdExvZ0NvZGUoQ0NhbGxIZWxwZXJzJiwg
T3duUHRyPENhbGxFZGdlUHJvZmlsZT4mLCBKU1ZhbHVlUmVncyBjYWxsZWVSZWdzKTsKKyNlbmRp
ZiAvLyBFTkFCTEUoSklUKQorICAgIAorICAgIHZvaWQgcHJvY2Vzc0xvZygpOworICAgIAorcHJp
dmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGxvZ1NpemUgPSAxMDAwMDsKKyAgICAKKyAgICBzdHJ1Y3QgRW50
cnkgeworICAgICAgICBKU1ZhbHVlIG1fdmFsdWU7CisgICAgICAgIENhbGxFZGdlUHJvZmlsZSog
bV9wcm9maWxlOworICAgIH07CisgICAgCisgICAgdW5zaWduZWQgbV9zY2FsZWRMb2dJbmRleDsK
KyAgICBFbnRyeSBtX2xvZ1tsb2dTaXplXTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gQ2FsbEVkZ2VQcm9maWxlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZUlu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ2FsbEVkZ2VQcm9maWxlSW5s
aW5lc19oCisjZGVmaW5lIENhbGxFZGdlUHJvZmlsZUlubGluZXNfaAorCisjaW5jbHVkZSAiQ2Fs
bEVkZ2VQcm9maWxlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitpbmxpbmUgQ2FsbEVkZ2VQcm9m
aWxlOjpDYWxsRWRnZVByb2ZpbGUoKQorICAgIDogbV9jbG9zdXJlc0FyZURlc3BlY2lmaWVkKGZh
bHNlKQorICAgICwgbV9udW1DYWxsc1RvUHJpbWFyeSgwKQorICAgICwgbV9udW1DYWxsc1RvTm90
Q2VsbCgwKQorICAgICwgbV9udW1DYWxsc1RvVW5rbm93bkNlbGwoMCkKKyAgICAsIG1fdG90YWxD
b3VudCgwKQorICAgICwgbV9wcmltYXJ5Q2FsbGVlKG51bGxwdHIpCit7Cit9CisKK0FMV0FZU19J
TkxJTkUgdm9pZCBDYWxsRWRnZVByb2ZpbGU6OmFkZChKU1ZhbHVlIHZhbHVlLCBDYWxsRWRnZVBy
b2ZpbGVWZWN0b3ImIG1lcmdlQmFja0xvZykKK3sKKyAgICB1bnNpZ25lZCBuZXdUb3RhbENvdW50
ID0gbV90b3RhbENvdW50ICsgMTsKKyAgICBpZiAoVU5MSUtFTFkoIW5ld1RvdGFsQ291bnQpKSB7
CisgICAgICAgIGZhZGVCeUhhbGYoKTsgLy8gVGFja2xlIG92ZXJmbG93cyBieSBkaXZpZGluZyBh
bGwgY291bnRzIGJ5IHR3by4KKyAgICAgICAgbmV3VG90YWxDb3VudCA9IG1fdG90YWxDb3VudCAr
IDE7CisgICAgfQorICAgIEFTU0VSVChuZXdUb3RhbENvdW50KTsKKyAgICBtX3RvdGFsQ291bnQg
PSBuZXdUb3RhbENvdW50OworICAgIAorICAgIGlmIChVTkxJS0VMWSghdmFsdWUuaXNDZWxsKCkp
KSB7CisgICAgICAgIG1fbnVtQ2FsbHNUb05vdENlbGwrKzsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIENhbGxWYXJpYW50IGNhbGxlZSA9IENhbGxWYXJpYW50KHZhbHVlLmFzQ2VsbCgp
KTsKKyAgICAKKyAgICBpZiAobV9jbG9zdXJlc0FyZURlc3BlY2lmaWVkKQorICAgICAgICBjYWxs
ZWUgPSBjYWxsZWUuZGVzcGVjaWZpZWRDbG9zdXJlKCk7CisgICAgICAgIAorICAgIGlmIChVTkxJ
S0VMWSghbV9wcmltYXJ5Q2FsbGVlKSkgeworICAgICAgICBtX3ByaW1hcnlDYWxsZWUgPSBjYWxs
ZWU7CisgICAgICAgIG1fbnVtQ2FsbHNUb1ByaW1hcnkgPSAxOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgICAgICAKKyAgICBpZiAoTElLRUxZKG1fcHJpbWFyeUNhbGxlZSA9PSBjYWxsZWUp
KSB7CisgICAgICAgIG1fbnVtQ2FsbHNUb1ByaW1hcnkrKzsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICAgICAgCisgICAgaWYgKFVOTElLRUxZKCFtX290aGVyQ2FsbGVlcykpIHsKKyAgICAg
ICAgYWRkU2xvdyhjYWxsZWUsIG1lcmdlQmFja0xvZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgICAgIAorICAgIENhbGxTcGVjdHJ1bSogc2Vjb25kYXJ5ID0gbV9vdGhlckNhbGxlZXMt
Pm1fdGVtcG9yYXJ5U3BlY3RydW0uZ2V0KCk7CisgICAgaWYgKCFzZWNvbmRhcnkpIHsKKyAgICAg
ICAgYWRkU2xvdyhjYWxsZWUsIG1lcmdlQmFja0xvZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgICAgIAorICAgIHNlY29uZGFyeS0+YWRkKGNhbGxlZSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCisjZW5kaWYgLy8gQ2FsbEVkZ2VQcm9maWxlSW5saW5lc19oCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCShyZXZp
c2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJ
bmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsMTEgQEAgdm9pZCBDYWxsTGlua0lu
Zm86OnZpc2l0V2VhayhSZXBhdGNoQnVmZgogICAgIH0KICAgICBpZiAoISFsYXN0U2VlbkNhbGxl
ZSAmJiAhSGVhcDo6aXNNYXJrZWQobGFzdFNlZW5DYWxsZWUuZ2V0KCkpKQogICAgICAgICBsYXN0
U2VlbkNhbGxlZS5jbGVhcigpOworICAgIAorICAgIGlmIChjYWxsRWRnZVByb2ZpbGUpIHsKKyAg
ICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CisgICAgICAgIGNhbGxFZGdlUHJvZmlsZS0+dmlz
aXRXZWFrKCk7CisgICAgfQogfQogCiBDYWxsTGlua0luZm8mIENhbGxMaW5rSW5mbzo6ZHVtbXko
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8u
aAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIENh
bGxMaW5rSW5mb19oCiAjZGVmaW5lIENhbGxMaW5rSW5mb19oCiAKKyNpbmNsdWRlICJDYWxsRWRn
ZVByb2ZpbGUuaCIKICNpbmNsdWRlICJDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmgiCiAjaW5jbHVk
ZSAiQ29kZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgpA
QCAtMzMsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJPcGNv
ZGUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
QEAgLTg4LDYgKzkwLDcgQEAgc3RydWN0IENhbGxMaW5rSW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1Nl
bgogICAgIHVuc2lnbmVkIGNhbGxlZUdQUiA6IDg7CiAgICAgdW5zaWduZWQgc2xvd1BhdGhDb3Vu
dDsKICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW47CisgICAgT3duUHRyPENhbGxFZGdlUHJvZmls
ZT4gY2FsbEVkZ2VQcm9maWxlOwogCiAgICAgYm9vbCBpc0xpbmtlZCgpIHsgcmV0dXJuIHN0dWIg
fHwgY2FsbGVlOyB9CiAgICAgdm9pZCB1bmxpbmsoUmVwYXRjaEJ1ZmZlciYpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCShy
ZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw1NCArMzIsMjIgQEAKICNpbmNsdWRl
ICJMTEludENhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRl
IDx3dGYvQ29tbWFQcmludGVyLmg+CisjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewogCiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKIENhbGxM
aW5rU3RhdHVzOjpDYWxsTGlua1N0YXR1cyhKU1ZhbHVlIHZhbHVlKQotICAgIDogbV9jYWxsVGFy
Z2V0KHZhbHVlKQotICAgICwgbV9leGVjdXRhYmxlKDApCi0gICAgLCBtX2NvdWxkVGFrZVNsb3dQ
YXRoKGZhbHNlKQorICAgIDogbV9jb3VsZFRha2VTbG93UGF0aChmYWxzZSkKICAgICAsIG1faXNQ
cm92ZWQoZmFsc2UpCiB7Ci0gICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkpCisgICAg
aWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkpIHsKKyAgICAgICAgbV9jb3VsZFRha2VTbG93
UGF0aCA9IHRydWU7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgCi0gICAgaWYgKCF2YWx1
ZS5hc0NlbGwoKS0+aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIAotICAgIG1fZXhlY3V0YWJsZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4odmFsdWUuYXND
ZWxsKCkpLT5leGVjdXRhYmxlKCk7Ci19Ci0KLUpTRnVuY3Rpb24qIENhbGxMaW5rU3RhdHVzOjpm
dW5jdGlvbigpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2NhbGxUYXJnZXQgfHwgIW1fY2FsbFRhcmdl
dC5pc0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgaWYgKCFtX2NhbGxUYXJn
ZXQuYXNDZWxsKCktPmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpCi0gICAgICAgIHJldHVy
biAwOwotICAgIAotICAgIHJldHVybiBqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2FsbFRhcmdldC5h
c0NlbGwoKSk7Ci19Ci0KLUludGVybmFsRnVuY3Rpb24qIENhbGxMaW5rU3RhdHVzOjppbnRlcm5h
bEZ1bmN0aW9uKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fY2FsbFRhcmdldCB8fCAhbV9jYWxsVGFy
Z2V0LmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBpZiAoIW1fY2FsbFRh
cmdldC5hc0NlbGwoKS0+aW5oZXJpdHMoSW50ZXJuYWxGdW5jdGlvbjo6aW5mbygpKSkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgcmV0dXJuIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4o
bV9jYWxsVGFyZ2V0LmFzQ2VsbCgpKTsKLX0KLQotSW50cmluc2ljIENhbGxMaW5rU3RhdHVzOjpp
bnRyaW5zaWNGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKSBjb25zdAotewotICAgIGlm
ICghbV9leGVjdXRhYmxlKQotICAgICAgICByZXR1cm4gTm9JbnRyaW5zaWM7Ci0gICAgCi0gICAg
cmV0dXJuIG1fZXhlY3V0YWJsZS0+aW50cmluc2ljRm9yKGtpbmQpOworICAgIG1fZWRnZXMuYXBw
ZW5kKENhbGxFZGdlKENhbGxWYXJpYW50KHZhbHVlLmFzQ2VsbCgpKSwgMSkpOwogfQogCiBDYWxs
TGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludChjb25zdCBDb25jdXJy
ZW50SklUTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQg
Ynl0ZWNvZGVJbmRleCkKQEAgLTg3LDcgKzU1LDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtT
dGF0dXM6OmNvbXB1dGVGcgogICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBV
TlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAjaWYgRU5BQkxFKERGR19KSVQpCi0gICAgaWYg
KHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRl
KGJ5dGVjb2RlSW5kZXgsIEJhZEZ1bmN0aW9uKSkpIHsKKyAgICBpZiAocHJvZmlsZWRCbG9jay0+
aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwg
QmFkQ2VsbCkpKSB7CiAgICAgICAgIC8vIFdlIGNvdWxkIGZvcmNlIHRoaXMgdG8gYmUgYSBjbG9z
dXJlIGNhbGwsIGJ1dCBpbnN0ZWFkIHdlJ2xsIGp1c3QgYXNzdW1lIHRoYXQgaXQKICAgICAgICAg
Ly8gdGFrZXMgc2xvdyBwYXRoLgogICAgICAgICByZXR1cm4gdGFrZXNTbG93UGF0aCgpOwpAQCAt
MTM5LDEwICsxMDcsMTAgQEAgQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBDYWxsTGlua1N0
YQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIGV4aXRTaXRlRGF0YS5tX3Rha2VzU2xv
d1BhdGggPQotICAgICAgICBwcm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6
RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDYWNoZSwgZXhpdGluZ0pJVFR5cGUp
KQorICAgICAgICBwcm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVl
bnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRUeXBlLCBleGl0aW5nSklUVHlwZSkpCiAgICAg
ICAgIHx8IHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4
aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZEV4ZWN1dGFibGUsIGV4aXRpbmdKSVRUeXBlKSk7CiAg
ICAgZXhpdFNpdGVEYXRhLm1fYmFkRnVuY3Rpb24gPQotICAgICAgICBwcm9maWxlZEJsb2NrLT5o
YXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBC
YWRGdW5jdGlvbiwgZXhpdGluZ0pJVFR5cGUpKTsKKyAgICAgICAgcHJvZmlsZWRCbG9jay0+aGFz
RXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFk
Q2VsbCwgZXhpdGluZ0pJVFR5cGUpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGxvY2tlcik7
CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwpAQCAtMTU2LDYgKzEyNCwxOCBAQCBD
YWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRhIENhbGxMaW5rU3RhCiAjaWYgRU5BQkxFKEpJVCkK
IENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKGNvbnN0IENvbmN1cnJl
bnRKSVRMb2NrZXImLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykKIHsKKyAgICAvLyBBbHdh
eXMgdHJ1c3QgdGhlIGNhbGwgZWRnZSBwcm9maWxlIG92ZXIgYW55dGhpbmcgZWxzZSBzaW5jZSB0
aGlzIGhhcyBwcmVjaXNlIGNvdW50cy4KKyAgICAvLyBJdCBjYW4gbWFrZSB0aGUgYmVzdCBwb3Nz
aWJsZSBkZWNpc2lvbiBiZWNhdXNlIGl0IG5ldmVyICJmb3JnZXRzIiB3aGF0IGhhcHBlbmVkIGZv
ciBhbnkKKyAgICAvLyBjYWxsLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgZmFkaW5nIG91dCB0aGUg
Y291bnRzIG9mIG9sZCBjYWxscyAoZm9yIGV4YW1wbGUgaWYgdGhlCisgICAgLy8gY291bnRlciB0
eXBlIGlzIDE2LWJpdCB0aGVuIGNhbGxzIHRoYXQgaGFwcGVuZWQgbW9yZSB0aGFuIDJeMTYgY2Fs
bHMgYWdvIGFyZSBnaXZlbiBoYWxmCisgICAgLy8gd2VpZ2h0LCBhbmQgdGhpcyBjb21wb3VuZHMg
Zm9yIGV2ZXJ5IDJeMTUgW3NpY10gY2FsbHMgYWZ0ZXIgdGhhdCkuIFRoZSBjb21iaW5hdGlvbiBv
ZgorICAgIC8vIGhpZ2ggZmlkZWxpdHkgZm9yIHJlY2VudCBjYWxscyBhbmQgZmFkaW5nIGZvciBv
bGRlciBjYWxscyBtYWtlcyB0aGlzIHRoZSBtb3N0IHVzZWZ1bAorICAgIC8vIG1lY2hhbWlzbSBv
ZiBjaG9vc2luZyBob3cgdG8gb3B0aW1pemUgZnV0dXJlIGNhbGxzLgorICAgIENhbGxFZGdlUHJv
ZmlsZSogZWRnZVByb2ZpbGUgPSBjYWxsTGlua0luZm8uY2FsbEVkZ2VQcm9maWxlLmdldCgpOwor
ICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOworICAgIGlmIChlZGdlUHJvZmlsZSkKKyAgICAgICAg
cmV0dXJuIGNvbXB1dGVGcm9tQ2FsbEVkZ2VQcm9maWxlKGVkZ2VQcm9maWxlKTsKKyAgICAKICAg
ICAvLyBOb3RlIHRoYXQgZGVzcGl0ZSByZXF1aXJpbmcgdGhhdCB0aGUgbG9ja2VyIGlzIGhlbGQs
IHRoaXMgY29kZSBpcyByYWN5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHRoZSBDYWxsTGlua0lu
Zm86IGl0IG1heSBnZXQgY2xlYXJlZCB3aGlsZSB0aGlzIGNvZGUgcnVucyEgVGhpcyBpcyBiZWNh
dXNlCiAgICAgLy8gQ2FsbExpbmtJbmZvOjp1bmxpbmsoKSBtYXkgYmUgY2FsbGVkIGZyb20gYSBk
aWZmZXJlbnQgQ29kZUJsb2NrIHRoYW4gdGhlIG9uZSB0aGF0IG93bnMKQEAgLTE3Nyw3ICsxNTcs
NyBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvCiAgICAgCiAgICAg
SlNGdW5jdGlvbiogdGFyZ2V0ID0gY2FsbExpbmtJbmZvLmxhc3RTZWVuQ2FsbGVlLmdldCgpOwog
ICAgIGlmICghdGFyZ2V0KQotICAgICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoKTsKKyAgICAg
ICAgcmV0dXJuIHRha2VzU2xvd1BhdGgoKTsKICAgICAKICAgICBpZiAoY2FsbExpbmtJbmZvLmhh
c1NlZW5DbG9zdXJlKQogICAgICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXModGFyZ2V0LT5leGVj
dXRhYmxlKCkpOwpAQCAtMTg1LDE1ICsxNjUsMzEgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtT
dGF0dXM6OmNvbXB1dGVGbwogICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyh0YXJnZXQpOwogfQog
Ci1DYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKLSAgICBjb25zdCBD
b25jdXJyZW50SklUTG9ja2VyJiBsb2NrZXIsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBF
eGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhKQorQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6
OmNvbXB1dGVGcm9tQ2FsbEVkZ2VQcm9maWxlKENhbGxFZGdlUHJvZmlsZSogZWRnZVByb2ZpbGUp
CiB7Ci0gICAgaWYgKGV4aXRTaXRlRGF0YS5tX3Rha2VzU2xvd1BhdGgpCisgICAgLy8gVG8gZG8g
YW55dGhpbmcgbWVhbmluZ2Z1bCwgd2UgcmVxdWlyZSB0aGF0IHRoZSBtYWpvcml0eSBvZiBjYWxs
cyBhcmUgdG8gc29tZXRoaW5nIHdlCisgICAgLy8ga25vdyBob3cgdG8gaGFuZGxlLgorICAgIHVu
c2lnbmVkIG51bUNhbGxzVG9Lbm93biA9IGVkZ2VQcm9maWxlLT5udW1DYWxsc1RvS25vd25DZWxs
cygpOworICAgIHVuc2lnbmVkIG51bUNhbGxzVG9Vbmtub3duID0gZWRnZVByb2ZpbGUtPm51bUNh
bGxzVG9Ob3RDZWxsKCkgKyBlZGdlUHJvZmlsZS0+bnVtQ2FsbHNUb1Vua25vd25DZWxsKCk7Cisg
ICAgaWYgKG51bUNhbGxzVG9Lbm93biA8PSBudW1DYWxsc1RvVW5rbm93bikKICAgICAgICAgcmV0
dXJuIHRha2VzU2xvd1BhdGgoKTsKICAgICAKKyAgICBDYWxsTGlua1N0YXR1cyByZXN1bHQ7Cisg
ICAgcmVzdWx0Lm1fZWRnZXMgPSBlZGdlUHJvZmlsZS0+Y2FsbEVkZ2VzKCk7CisgICAgcmVzdWx0
Lm1fY291bGRUYWtlU2xvd1BhdGggPSAhIW51bUNhbGxzVG9Vbmtub3duOworICAgIHJlc3VsdC5t
X2NhblRydXN0Q291bnRzID0gdHJ1ZTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitD
YWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKKyAgICBjb25zdCBDb25j
dXJyZW50SklUTG9ja2VyJiBsb2NrZXIsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBFeGl0
U2l0ZURhdGEgZXhpdFNpdGVEYXRhKQorewogICAgIENhbGxMaW5rU3RhdHVzIHJlc3VsdCA9IGNv
bXB1dGVGb3IobG9ja2VyLCBjYWxsTGlua0luZm8pOwogICAgIGlmIChleGl0U2l0ZURhdGEubV9i
YWRGdW5jdGlvbikKICAgICAgICAgcmVzdWx0Lm1ha2VDbG9zdXJlQ2FsbCgpOworICAgIGlmIChl
eGl0U2l0ZURhdGEubV90YWtlc1Nsb3dQYXRoKQorICAgICAgICByZXN1bHQubV9jb3VsZFRha2VT
bG93UGF0aCA9IHRydWU7CiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTI1Niw2ICsy
NTIsMzIgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGbwogICAgIHJl
dHVybiBjb21wdXRlRm9yKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwg
YmFzZWxpbmVNYXApOwogfQogCitib29sIENhbGxMaW5rU3RhdHVzOjppc0Nsb3N1cmVDYWxsKCkg
Y29uc3QKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2VkZ2VzLnNpemUoKTsgaS0tOykgewor
ICAgICAgICBpZiAobV9lZGdlc1tpXS5jYWxsZWUoKS5pc0Nsb3N1cmVDYWxsKCkpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIENh
bGxMaW5rU3RhdHVzOjptYWtlQ2xvc3VyZUNhbGwoKQoreworICAgIEFTU0VSVCghbV9pc1Byb3Zl
ZCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9lZGdlcy5zaXplKCk7IGktLTspCisgICAgICAg
IG1fZWRnZXNbaV0gPSBtX2VkZ2VzW2ldLmRlc3BlY2lmaWVkQ2xvc3VyZSgpOworICAgIAorICAg
IGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIC8vIERvaW5nIHRoaXMgc2hvdWxkIG5v
dCBoYXZlIGNyZWF0ZWQgZHVwbGljYXRlcywgYmVjYXVzZSB0aGUgQ2FsbEVkZ2VQcm9maWxlCisg
ICAgICAgIC8vIHNob3VsZCBkZXNwZWNpZnkgY2xvc3VyZXMgaWYgZG9pbmcgc28gd291bGQgcmVk
dWNlIHRoZSBudW1iZXIgb2Yga25vd24gY2FsbGVlcy4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fZWRnZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIENhbGxWYXJpYW50
IHZhcmlhbnQgPSBtX2VkZ2VzW2ldLmNhbGxlZSgpOworICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBqID0gaSArIDE7IGogPCBtX2VkZ2VzLnNpemUoKTsgKytqKQorICAgICAgICAgICAgICAgIEFT
U0VSVCh2YXJpYW50ICE9IG1fZWRnZXNbal0uY2FsbGVlKCkpOworICAgICAgICB9CisgICAgfQor
fQorCiB2b2lkIENhbGxMaW5rU3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7
CiAgICAgaWYgKCFpc1NldCgpKSB7CkBAIC0yNzEsMTQgKzI5Myw3IEBAIHZvaWQgQ2FsbExpbmtT
dGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG8KICAgICBpZiAobV9jb3VsZFRha2VTbG93UGF0aCkK
ICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiQ291bGQgVGFrZSBTbG93IFBhdGgiKTsKICAgICAK
LSAgICBpZiAobV9jYWxsVGFyZ2V0KQotICAgICAgICBvdXQucHJpbnQoY29tbWEsICJLbm93biB0
YXJnZXQ6ICIsIG1fY2FsbFRhcmdldCk7Ci0gICAgCi0gICAgaWYgKG1fZXhlY3V0YWJsZSkgewot
ICAgICAgICBvdXQucHJpbnQoY29tbWEsICJFeGVjdXRhYmxlL0NhbGxIYXNoOiAiLCBSYXdQb2lu
dGVyKG1fZXhlY3V0YWJsZSkpOwotICAgICAgICBpZiAoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSkK
LSAgICAgICAgICAgIG91dC5wcmludCgiLyIsIG1fZXhlY3V0YWJsZS0+aGFzaEZvcihDb2RlRm9y
Q2FsbCkpOwotICAgIH0KKyAgICBvdXQucHJpbnQobGlzdER1bXAobV9lZGdlcykpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua1N0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DYWxsTGlua1N0YXR1cy5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDYs
OSArNDYsOSBAQCBzdHJ1Y3QgQ2FsbExpbmtJbmZvOwogY2xhc3MgQ2FsbExpbmtTdGF0dXMgewog
cHVibGljOgogICAgIENhbGxMaW5rU3RhdHVzKCkKLSAgICAgICAgOiBtX2V4ZWN1dGFibGUoMCkK
LSAgICAgICAgLCBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQorICAgICAgICA6IG1fY291bGRU
YWtlU2xvd1BhdGgoZmFsc2UpCiAgICAgICAgICwgbV9pc1Byb3ZlZChmYWxzZSkKKyAgICAgICAg
LCBtX2NhblRydXN0Q291bnRzKGZhbHNlKQogICAgIHsKICAgICB9CiAgICAgCkBAIC02MSwxMCAr
NjEsMTEgQEAgcHVibGljOgogICAgIAogICAgIGV4cGxpY2l0IENhbGxMaW5rU3RhdHVzKEpTVmFs
dWUpOwogICAgIAotICAgIENhbGxMaW5rU3RhdHVzKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxl
KQotICAgICAgICA6IG1fZXhlY3V0YWJsZShleGVjdXRhYmxlKQorICAgIENhbGxMaW5rU3RhdHVz
KENhbGxWYXJpYW50IHZhcmlhbnQpCisgICAgICAgIDogbV9lZGdlcygxLCBDYWxsRWRnZSh2YXJp
YW50LCAxKSkKICAgICAgICAgLCBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQogICAgICAgICAs
IG1faXNQcm92ZWQoZmFsc2UpCisgICAgICAgICwgbV9jYW5UcnVzdENvdW50cyhmYWxzZSkKICAg
ICB7CiAgICAgfQogICAgIApAQCAtMTA3LDM3ICsxMDgsMzYgQEAgcHVibGljOgogICAgIHN0YXRp
YyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKAogICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3Jp
Z2luLCBjb25zdCBDYWxsTGlua0luZm9NYXAmLCBjb25zdCBDb250ZXh0TWFwJik7CiAgICAgCi0g
ICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdldCB8fCBtX2V4ZWN1dGFi
bGUgfHwgbV9jb3VsZFRha2VTbG93UGF0aDsgfQorICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJl
dHVybiAhbV9lZGdlcy5pc0VtcHR5KCkgfHwgbV9jb3VsZFRha2VTbG93UGF0aDsgfQogICAgIAog
ICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7IH0KICAgICAKICAg
ICBib29sIGNvdWxkVGFrZVNsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9jb3VsZFRha2VTbG93
UGF0aDsgfQotICAgIGJvb2wgaXNDbG9zdXJlQ2FsbCgpIGNvbnN0IHsgcmV0dXJuIG1fZXhlY3V0
YWJsZSAmJiAhbV9jYWxsVGFyZ2V0OyB9CiAgICAgCi0gICAgSlNWYWx1ZSBjYWxsVGFyZ2V0KCkg
Y29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0OyB9Ci0gICAgSlNGdW5jdGlvbiogZnVuY3Rpb24o
KSBjb25zdDsKLSAgICBJbnRlcm5hbEZ1bmN0aW9uKiBpbnRlcm5hbEZ1bmN0aW9uKCkgY29uc3Q7
Ci0gICAgSW50cmluc2ljIGludHJpbnNpY0ZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kKSBjb25z
dDsKLSAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXhl
Y3V0YWJsZTsgfQorICAgIENhbGxFZGdlTGlzdCBlZGdlcygpIGNvbnN0IHsgcmV0dXJuIG1fZWRn
ZXM7IH0KKyAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9lZGdlcy5zaXplKCk7
IH0KKyAgICBDYWxsRWRnZSBhdCh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBtX2VkZ2VzW2ld
OyB9CisgICAgQ2FsbEVkZ2Ugb3BlcmF0b3JbXSh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBh
dChpKTsgfQogICAgIGJvb2wgaXNQcm92ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzUHJvdmVkOyB9
Ci0gICAgYm9vbCBjYW5PcHRpbWl6ZSgpIGNvbnN0IHsgcmV0dXJuIChtX2NhbGxUYXJnZXQgfHwg
bV9leGVjdXRhYmxlKSAmJiAhbV9jb3VsZFRha2VTbG93UGF0aDsgfQorICAgIGJvb2wgY2FuT3B0
aW1pemUoKSBjb25zdCB7IHJldHVybiAhbV9lZGdlcy5pc0VtcHR5KCk7IH0KKyAgICBib29sIGNh
blRydXN0Q291bnRzKCkgY29uc3QgeyByZXR1cm4gbV9jYW5UcnVzdENvdW50czsgfQorICAgIAor
ICAgIGJvb2wgaXNDbG9zdXJlQ2FsbCgpIGNvbnN0OyAvLyBSZXR1cm5zIHRydWUgaWYgYW55IGNh
bGxlZSBpcyBhIGNsb3N1cmUgY2FsbC4KICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
KSBjb25zdDsKICAgICAKIHByaXZhdGU6Ci0gICAgdm9pZCBtYWtlQ2xvc3VyZUNhbGwoKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKCFtX2lzUHJvdmVkKTsKLSAgICAgICAgLy8gVHVybiB0aGlzIGlu
dG8gYSBjbG9zdXJlIGNhbGwuCi0gICAgICAgIG1fY2FsbFRhcmdldCA9IEpTVmFsdWUoKTsKLSAg
ICB9CisgICAgdm9pZCBtYWtlQ2xvc3VyZUNhbGwoKTsKICAgICAKICAgICBzdGF0aWMgQ2FsbExp
bmtTdGF0dXMgY29tcHV0ZUZyb21MTEludChjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgQ29k
ZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBz
dGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZyb21DYWxsRWRnZVByb2ZpbGUoQ2FsbEVkZ2VQ
cm9maWxlKik7CisjZW5kaWYKICAgICAKLSAgICBKU1ZhbHVlIG1fY2FsbFRhcmdldDsKLSAgICBF
eGVjdXRhYmxlQmFzZSogbV9leGVjdXRhYmxlOworICAgIENhbGxFZGdlTGlzdCBtX2VkZ2VzOwog
ICAgIGJvb2wgbV9jb3VsZFRha2VTbG93UGF0aDsKICAgICBib29sIG1faXNQcm92ZWQ7CisgICAg
Ym9vbCBtX2NhblRydXN0Q291bnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNh
bGxWYXJpYW50LmgiCisKK25hbWVzcGFjZSBKU0MgeworCit2b2lkIENhbGxWYXJpYW50OjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgaWYgKCEqdGhpcykgeworICAgICAgICBv
dXQucHJpbnQoIm51bGwiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAo
SW50ZXJuYWxGdW5jdGlvbiogaW50ZXJuYWxGdW5jdGlvbiA9IHRoaXMtPmludGVybmFsRnVuY3Rp
b24oKSkgeworICAgICAgICBvdXQucHJpbnQoIkludGVybmFsRnVuY3Rpb246ICIsIEpTVmFsdWUo
aW50ZXJuYWxGdW5jdGlvbikpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlm
IChKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IHRoaXMtPmZ1bmN0aW9uKCkpIHsKKyAgICAgICAgb3V0
LnByaW50KCIoRnVuY3Rpb246ICIsIEpTVmFsdWUoZnVuY3Rpb24pLCAiOyBFeGVjdXRhYmxlOiAi
LCAqZXhlY3V0YWJsZSgpLCAiKSIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAg
IG91dC5wcmludCgiRXhlY3V0YWJsZTogIiwgKmV4ZWN1dGFibGUoKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZh
cmlhbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bFZhcmlhbnQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsVmFyaWFudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQ3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ2FsbFZhcmlh
bnRfaAorI2RlZmluZSBDYWxsVmFyaWFudF9oCisKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisj
aW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgQ2FsbFZhcmlhbnQgeworcHVibGljOgorICAgIGV4cGxpY2l0IENhbGxW
YXJpYW50KEpTQ2VsbCogY2FsbGVlID0gbnVsbHB0cikKKyAgICAgICAgOiBtX2NhbGxlZShjYWxs
ZWUpCisgICAgeworICAgIH0KKyAgICAKKyAgICBDYWxsVmFyaWFudChXVEY6Okhhc2hUYWJsZURl
bGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIDogbV9jYWxsZWUoZGVsZXRlZFRva2VuKCkpCisgICAg
eworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX2Nh
bGxlZTsgfQorICAgIAorICAgIC8vIElmIHRoaXMgdmFyaWFudCByZWZlcnMgdG8gYSBmdW5jdGlv
biwgY2hhbmdlIGl0IHRvIHJlZmVyIHRvIGl0cyBleGVjdXRhYmxlLgorICAgIEFMV0FZU19JTkxJ
TkUgQ2FsbFZhcmlhbnQgZGVzcGVjaWZpZWRDbG9zdXJlKCkgY29uc3QKKyAgICB7CisgICAgICAg
IGlmIChtX2NhbGxlZS0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKQorICAgICAgICAgICAgcmV0
dXJuIENhbGxWYXJpYW50KGpzQ2FzdDxKU0Z1bmN0aW9uKj4obV9jYWxsZWUpLT5leGVjdXRhYmxl
KCkpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorICAgIAorICAgIEpTQ2VsbCogcmF3
Q2FsbGVlQ2VsbCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGVlOyB9CisgICAgCisgICAgSW50ZXJu
YWxGdW5jdGlvbiogaW50ZXJuYWxGdW5jdGlvbigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4ganNEeW5hbWljQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4obV9jYWxsZWUpOworICAgIH0KKyAg
ICAKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4obV9jYWxsZWUpOworICAgIH0KKyAgICAKKyAg
ICBib29sIGlzQ2xvc3VyZUNhbGwoKSBjb25zdCB7IHJldHVybiAhIWpzRHluYW1pY0Nhc3Q8RXhl
Y3V0YWJsZUJhc2UqPihtX2NhbGxlZSk7IH0KKyAgICAKKyAgICBFeGVjdXRhYmxlQmFzZSogZXhl
Y3V0YWJsZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoSlNGdW5jdGlvbiogZnVuY3Rpb24g
PSB0aGlzLT5mdW5jdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uLT5leGVjdXRh
YmxlKCk7CisgICAgICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEV4ZWN1dGFibGVCYXNlKj4obV9j
YWxsZWUpOworICAgIH0KKyAgICAKKyAgICBKU0NlbGwqIG5vbkV4ZWN1dGFibGVDYWxsZWUoKSBj
b25zdAorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWlzQ2xvc3VyZUNhbGwoKSk7Cisg
ICAgICAgIHJldHVybiBtX2NhbGxlZTsKKyAgICB9CisgICAgCisgICAgSW50cmluc2ljIGludHJp
bnNpY0ZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpIGNvbnN0CisgICAgeworICAgICAg
ICBpZiAoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSB0aGlzLT5leGVjdXRhYmxlKCkpCisg
ICAgICAgICAgICByZXR1cm4gZXhlY3V0YWJsZS0+aW50cmluc2ljRm9yKGtpbmQpOworICAgICAg
ICByZXR1cm4gTm9JbnRyaW5zaWM7CisgICAgfQorICAgIAorICAgIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZnVuY3Rpb25FeGVjdXRhYmxlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBqc0R5
bmFtaWNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUoKSk7CisgICAgfQorICAg
IAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKKyAgICAKKyAgICBib29s
IGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2NhbGxlZSA9PSBkZWxldGVkVG9rZW4oKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2NhbGxlZSA9PSBvdGhlci5tX2NhbGxlZTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgaGFzaCgp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gV1RGOjpQdHJIYXNoPEpTQ2VsbCo+OjpoYXNo
KG1fY2FsbGVlKTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIHN0YXRpYyBKU0NlbGwqIGRl
bGV0ZWRUb2tlbigpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU0NlbGwqPihzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KDEpKTsgfQorICAgICAgICAgICAgICAgICAgIAorICAgIEpTQ2VsbCogbV9jYWxs
ZWU7Cit9OworCitzdHJ1Y3QgQ2FsbFZhcmlhbnRIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQg
aGFzaChjb25zdCBDYWxsVmFyaWFudCYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAg
c3RhdGljIGJvb2wgZXF1YWwoY29uc3QgQ2FsbFZhcmlhbnQmIGEsIGNvbnN0IENhbGxWYXJpYW50
JiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21w
YXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Cit9OworCit0eXBlZGVmIFZlY3RvcjxDYWxsVmFy
aWFudCwgMT4gQ2FsbFZhcmlhbnRMaXN0OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNw
YWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKK3Rl
bXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEpTQzo6Q2FsbFZhcmlhbnQ+IHsKKyAgICB0eXBl
ZGVmIEpTQzo6Q2FsbFZhcmlhbnRIYXNoIEhhc2g7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgSGFzaFRyYWl0czsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpD
YWxsVmFyaWFudD4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8SlNDOjpDYWxsVmFyaWFudD4geyB9
OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIENhbGxWYXJpYW50X2gKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmgJKHJldmlzaW9uIDE3
MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogZW51bSBFeGl0S2lu
ZCA6IHVpbnQ4X3QgewogICAgIEV4aXRLaW5kVW5zZXQsCiAgICAgQmFkVHlwZSwgLy8gV2UgZXhp
dGVkIGJlY2F1c2UgYSB0eXBlIHByZWRpY3Rpb24gd2FzIHdyb25nLgotICAgIEJhZEZ1bmN0aW9u
LCAvLyBXZSBleGl0ZWQgYmVjYXVzZSB3ZSBtYWRlIGFuIGluY29ycmVjdCBhc3N1bXB0aW9uIGFi
b3V0IHdoYXQgZnVuY3Rpb24gd2Ugd291bGQgc2VlLgorICAgIEJhZENlbGwsIC8vIFdlIGV4aXRl
ZCBiZWNhdXNlIHdlIG1hZGUgYW4gaW5jb3JyZWN0IGFzc3VtcHRpb24gYWJvdXQgd2hhdCBjZWxs
IHdlIHdvdWxkIHNlZS4gVXN1YWxseSB1c2VkIGZvciBmdW5jdGlvbiBjaGVja3MuCiAgICAgQmFk
RXhlY3V0YWJsZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2UgbWFkZSBhbiBpbmNvcnJlY3QgYXNz
dW1wdGlvbiBhYm91dCB3aGF0IGV4ZWN1dGFibGUgd2Ugd291bGQgc2VlLgogICAgIEJhZENhY2hl
LCAvLyBXZSBleGl0ZWQgYmVjYXVzZSBhbiBpbmxpbmUgY2FjaGUgd2FzIHdyb25nLgogICAgIEJh
ZENvbnN0YW50Q2FjaGUsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIGEgY2FjaGUgb24gYSB3ZWFrIGNv
bnN0YW50ICh1c3VhbGx5IGEgcHJvdG90eXBlKSB3YXMgd3JvbmcuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NjAsMTQg
KzE0NjAsNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAg
ICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAgICAgICBicmVhazsKICAg
ICAgICAgCi0gICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6IHsKLSAgICAgICAgLy8gRklYTUU6IFdl
IGNvdWxkIHRyYWNrIGV4ZWN1dGFibGVzIGluIEFic3RyYWN0VmFsdWUsIHdoaWNoIHdvdWxkIGFs
bG93IHVzIHRvIGdldCByaWQgb2YgdGhlc2UgY2hlY2tzCi0gICAgICAgIC8vIG1vcmUgdGhvcm91
Z2hseS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjIwMAotICAg
ICAgICAvLyBGSVhNRTogV2UgY291bGQgZWxpbWluYXRlIHRoZXNlIGVudGlyZWx5IGlmIHdlIGtu
b3cgdGhlIGV4YWN0IHZhbHVlIHRoYXQgZmxvd3MgaW50byB0aGlzLgotICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MjAxCi0gICAgICAgIGJyZWFr
OwotICAgIH0KLQogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6IHsKICAgICAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBiZSBhYmxlIHRvIHByb3BhZ2F0ZSB0aGUgc3RydWN0dXJlIHNldHMgb2YgY29u
c3RhbnRzIChpLmUuIHByb3RvdHlwZXMpLgogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9
IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTcyNywxNiArMTcxOSwyOSBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBtX3N0YXRlLnNl
dElzVmFsaWQoZmFsc2UpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgICAgIAorICAgIGNh
c2UgR2V0RXhlY3V0YWJsZTogeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKHZhbHVlKSB7CisgICAgICAgICAgICBK
U0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZhbHVlKTsK
KyAgICAgICAgICAgIGlmIChmdW5jdGlvbikgeworICAgICAgICAgICAgICAgIHNldENvbnN0YW50
KG5vZGUsICptX2dyYXBoLmZyZWV6ZShmdW5jdGlvbi0+ZXhlY3V0YWJsZSgpKSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZm9yTm9k
ZShub2RlKS5zZXRUeXBlKFNwZWNDZWxsT3RoZXIpOworICAgICAgICBicmVhazsKKyAgICB9CiAg
ICAgCi0gICAgY2FzZSBDaGVja0Z1bmN0aW9uOiB7CisgICAgY2FzZSBDaGVja0NlbGw6IHsKICAg
ICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7Ci0g
ICAgICAgIGlmICh2YWx1ZSA9PSBub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpKSB7CisgICAgICAg
IGlmICh2YWx1ZSA9PSBub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpKSB7CiAgICAgICAgICAg
ICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOwogICAgICAgICAgICAgQVNTRVJUKHZh
bHVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBm
aWx0ZXJCeVZhbHVlKG5vZGUtPmNoaWxkMSgpLCAqbm9kZS0+ZnVuY3Rpb24oKSk7CisgICAgICAg
IGZpbHRlckJ5VmFsdWUobm9kZS0+Y2hpbGQxKCksICpub2RlLT5jZWxsT3BlcmFuZCgpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKQEAgLTE5MDIsNiArMTkwNyw3IEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAKICAg
ICBjYXNlIEZvcmNlT1NSRXhpdDoKKyAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICAgICAgbV9z
dGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1By
b3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zODksNiArMzg5LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgLy8gdGhlbiAt
MCBhbmQgMCBhcmUgdHJlYXRlZCB0aGUgc2FtZS4KICAgICAgICAgICAgICAgICBub2RlLT5jaGls
ZDEoKS0+bWVyZ2VGbGFncyhOb2RlQnl0ZWNvZGVVc2VzQXNOdW1iZXIgfCBOb2RlQnl0ZWNvZGVV
c2VzQXNPdGhlcik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFN3
aXRjaENlbGw6CisgICAgICAgICAgICAgICAgLy8gVGhlcmUgaXMgY3VycmVudGx5IG5vIHBvaW50
IHRvIGJlaW5nIGNsZXZlciBoZXJlIHNpbmNlIHRoaXMgaXMgdXNlZCBmb3Igc3dpdGNoaW5nCisg
ICAgICAgICAgICAgICAgLy8gb24gb2JqZWN0cy4KKyAgICAgICAgICAgICAgICBtZXJnZURlZmF1
bHRGbGFncyhub2RlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Jhc2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Jhc2ljQmxvY2suaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcg
QEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIE5vZGUqJiBv
cGVyYXRvcltdKHNpemVfdCBpKSB7IHJldHVybiBhdChpKTsgfQogICAgIE5vZGUqIG9wZXJhdG9y
W10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIGF0KGkpOyB9CiAgICAgTm9kZSogbGFzdCgpIGNv
bnN0IHsgcmV0dXJuIGF0KHNpemUoKSAtIDEpOyB9CisgICAgTm9kZSogdGFrZUxhc3QoKSB7IHJl
dHVybiBtX25vZGVzLnRha2VMYXN0KCk7IH0KICAgICB2b2lkIHJlc2l6ZShzaXplX3Qgc2l6ZSkg
eyBtX25vZGVzLnJlc2l6ZShzaXplKTsgfQogICAgIHZvaWQgZ3JvdyhzaXplX3Qgc2l6ZSkgeyBt
X25vZGVzLmdyb3coc2l6ZSk7IH0KICAgICAKQEAgLTEwNiw2ICsxMDcsMTMgQEAgc3RydWN0IEJh
c2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIAogICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdDsKICAgICAKKyAgICB2b2lkIGRpZExpbmsoKQorICAgIHsKKyNp
ZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIGlzTGlua2VkID0gdHJ1ZTsKKyNlbmRpZgorICAg
IH0KKyAgICAKICAgICAvLyBUaGlzIHZhbHVlIGlzIHVzZWQgaW50ZXJuYWxseSBmb3IgYmxvY2sg
bGlua2luZyBhbmQgT1NSIGVudHJ5LiBJdCBpcyBtb3N0bHkgbWVhbmluZ2xlc3MKICAgICAvLyBm
b3Igb3RoZXIgcHVycG9zZXMgZHVlIHRvIGlubGluaW5nLgogICAgIHVuc2lnbmVkIGJ5dGVjb2Rl
QmVnaW47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OCwxNCArMTc4LDIw
IEBAIHByaXZhdGU6CiAgICAgICAgIE5vZGUqIGNhbGxUYXJnZXQsIGludCBhcmdDb3VudCwgaW50
IHJlZ2lzdGVyT2Zmc2V0LCBDYWxsTGlua1N0YXR1cyk7CiAgICAgdm9pZCBoYW5kbGVDYWxsKGlu
dCByZXN1bHQsIE5vZGVUeXBlIG9wLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCB1bnNpZ25lZCBp
bnN0cnVjdGlvblNpemUsIGludCBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zm
c2V0KTsKICAgICB2b2lkIGhhbmRsZUNhbGwoSW5zdHJ1Y3Rpb24qIHBjLCBOb2RlVHlwZSBvcCwg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCk7Ci0gICAgdm9pZCBlbWl0RnVuY3Rpb25DaGVja3MoY29u
c3QgQ2FsbExpbmtTdGF0dXMmLCBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgcmVnaXN0ZXJPZmZzZXQs
IENvZGVTcGVjaWFsaXphdGlvbktpbmQpOworICAgIHZvaWQgZW1pdEZ1bmN0aW9uQ2hlY2tzKENh
bGxWYXJpYW50LCBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENvZGVTcGVj
aWFsaXphdGlvbktpbmQpOworICAgIHZvaWQgdW5kb0Z1bmN0aW9uQ2hlY2tzKENhbGxWYXJpYW50
KTsKICAgICB2b2lkIGVtaXRBcmd1bWVudFBoYW50b21zKGludCByZWdpc3Rlck9mZnNldCwgaW50
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKKyAg
ICB1bnNpZ25lZCBpbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQsIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7IC8vIFJldHVybiBVSU5UX01BWCBp
ZiBpdCdzIG5vdCBhbiBpbmxpbmluZyBjYW5kaWRhdGUuIEJ5IGNvbnZlbnRpb24sIGludHJpbnNp
Y3MgaGF2ZSBhIGNvc3Qgb2YgMS4KICAgICAvLyBIYW5kbGUgaW5saW5pbmcuIFJldHVybiB0cnVl
IGlmIGl0IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCi0gICAg
Ym9vbCBoYW5kbGVJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJh
bmQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFt
ZTo6S2luZCk7CisgICAgYm9vbCBoYW5kbGVJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwg
aW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQs
IE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBTcGVjdWxhdGVkVHlwZSBw
cmVkaWN0aW9uKTsKKyAgICBlbnVtIENhbGxlckxpbmthYmlsaXR5IHsgQ2FsbGVyRG9lc05vcm1h
bExpbmtpbmcsIENhbGxlckxpbmtzTWFudWFsbHkgfTsKKyAgICBib29sIGF0dGVtcHRUb0lubGlu
ZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyaWFu
dCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVu
c2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2luZCwgQ2FsbGVyTGlua2FiaWxp
dHksIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxpbmluZ0JhbGFuY2Up
OworICAgIHZvaWQgaW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9w
ZXJhbmQsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5k
LCBDYWxsZXJMaW5rYWJpbGl0eSk7CisgICAgdm9pZCBjYW5jZWxMaW5raW5nRm9yQmxvY2soSW5s
aW5lU3RhY2tFbnRyeSosIEJhc2ljQmxvY2sqKTsgLy8gT25seSB3b3JrcyB3aGVuIHRoZSBnaXZl
biBibG9jayBpcyB0aGUgbGFzdCBvbmUgdG8gaGF2ZSBiZWVuIGFkZGVkIGZvciB0aGF0IGlubGlu
ZSBzdGFjayBlbnRyeS4KICAgICAvLyBIYW5kbGUgaW50cmluc2ljIGZ1bmN0aW9ucy4gUmV0dXJu
IHRydWUgaWYgaXQgc3VjY2VlZGVkLCBmYWxzZSBpZiB3ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4K
ICAgICBib29sIGhhbmRsZUludHJpbnNpYyhpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluc2ljLCBp
bnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljdGlvbik7CiAgICAgYm9vbCBoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0
b3IoaW50IHJlc3VsdE9wZXJhbmQsIEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZz
ZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgVHlwZWRBcnJheVR5cGUpOwotICAg
IGJvb2wgaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKGludCByZXN1bHRPcGVyYW5kLCBJ
bnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIENvZGVTcGVjaWFsaXphdGlv
bktpbmQpOworICAgIGJvb2wgaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKGludCByZXN1
bHRPcGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwogICAgIE5v
ZGUqIGhhbmRsZVB1dEJ5T2Zmc2V0KE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXIsIFBy
b3BlcnR5T2Zmc2V0LCBOb2RlKiB2YWx1ZSk7CiAgICAgTm9kZSogaGFuZGxlR2V0QnlPZmZzZXQo
U3BlY3VsYXRlZFR5cGUsIE5vZGUqIGJhc2UsIGNvbnN0IFN0cnVjdHVyZVNldCYsIHVuc2lnbmVk
IGlkZW50aWZpZXJOdW1iZXIsIFByb3BlcnR5T2Zmc2V0LCBOb2RlVHlwZSBvcCA9IEdldEJ5T2Zm
c2V0KTsKICAgICB2b2lkIGhhbmRsZUdldEJ5SWQoCkBAIC02MzcsNiArNjQzLDEzIEBAIHByaXZh
dGU6CiAgICAgICAgIAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKyAgICAKKyAgICB2
b2lkIHJlbW92ZUxhc3ROb2RlRnJvbUdyYXBoKE5vZGVUeXBlIGV4cGVjdGVkTm9kZVR5cGUpCisg
ICAgeworICAgICAgICBOb2RlKiBub2RlID0gbV9jdXJyZW50QmxvY2stPnRha2VMYXN0KCk7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPm9wKCkgPT0gZXhwZWN0ZWROb2RlVHlwZSk7Cisg
ICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKKyAgICB9CiAKICAgICB2b2lk
IGFkZFZhckFyZ0NoaWxkKE5vZGUqIGNoaWxkKQogICAgIHsKQEAgLTY0NSw3ICs2NTgsNyBAQCBw
cml2YXRlOgogICAgIH0KICAgICAKICAgICBOb2RlKiBhZGRDYWxsV2l0aG91dFNldHRpbmdSZXN1
bHQoCi0gICAgICAgIE5vZGVUeXBlIG9wLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50
IHJlZ2lzdGVyT2Zmc2V0LAorICAgICAgICBOb2RlVHlwZSBvcCwgT3BJbmZvIG9wSW5mbywgTm9k
ZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCwKICAgICAgICAgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbikKICAgICB7CiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGNh
bGxlZSk7CkBAIC02NTcsMTUgKzY3MCwxNSBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKGludCBp
ID0gMCArIGR1bW15VGhpc0FyZ3VtZW50OyBpIDwgYXJnQ291bnQ7ICsraSkKICAgICAgICAgICAg
IGFkZFZhckFyZ0NoaWxkKGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpLCByZWdpc3Rl
ck9mZnNldCkpKTsKIAotICAgICAgICByZXR1cm4gYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIG9w
LCBPcEluZm8oMCksIE9wSW5mbyhwcmVkaWN0aW9uKSk7CisgICAgICAgIHJldHVybiBhZGRUb0dy
YXBoKE5vZGU6OlZhckFyZywgb3AsIG9wSW5mbywgT3BJbmZvKHByZWRpY3Rpb24pKTsKICAgICB9
CiAgICAgCiAgICAgTm9kZSogYWRkQ2FsbCgKLSAgICAgICAgaW50IHJlc3VsdCwgTm9kZVR5cGUg
b3AsIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAg
ICAgIGludCByZXN1bHQsIE5vZGVUeXBlIG9wLCBPcEluZm8gb3BJbmZvLCBOb2RlKiBjYWxsZWUs
IGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAogICAgICAgICBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWN0aW9uKQogICAgIHsKICAgICAgICAgTm9kZSogY2FsbCA9IGFkZENhbGxXaXRob3V0
U2V0dGluZ1Jlc3VsdCgKLSAgICAgICAgICAgIG9wLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rl
ck9mZnNldCwgcHJlZGljdGlvbik7CisgICAgICAgICAgICBvcCwgb3BJbmZvLCBjYWxsZWUsIGFy
Z0NvdW50LCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CiAgICAgICAgIFZpcnR1YWxSZWdp
c3RlciByZXN1bHRSZWcocmVzdWx0KTsKICAgICAgICAgaWYgKHJlc3VsdFJlZy5pc1ZhbGlkKCkp
CiAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdCksIGNhbGwpOwpAQCAtODcx
LDggKzg4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIFZlY3RvcjxVbmxpbmtlZEJsb2NrPiBtX3Vu
bGlua2VkQmxvY2tzOwogICAgICAgICAKICAgICAgICAgLy8gUG90ZW50aWFsIGJsb2NrIGxpbmtp
bmcgdGFyZ2V0cy4gTXVzdCBiZSBzb3J0ZWQgYnkgYnl0ZWNvZGVCZWdpbiwgYW5kCi0gICAgICAg
IC8vIGNhbm5vdCBoYXZlIHR3byBibG9ja3MgdGhhdCBoYXZlIHRoZSBzYW1lIGJ5dGVjb2RlQmVn
aW4uIEZvciB0aGlzIHZlcnkKLSAgICAgICAgLy8gcmVhc29uLCB0aGlzIGlzIG5vdCBlcXVpdmFs
ZW50IHRvIAorICAgICAgICAvLyBjYW5ub3QgaGF2ZSB0d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUg
c2FtZSBieXRlY29kZUJlZ2luLgogICAgICAgICBWZWN0b3I8QmFzaWNCbG9jayo+IG1fYmxvY2tM
aW5raW5nVGFyZ2V0czsKICAgICAgICAgCiAgICAgICAgIC8vIElmIHRoZSBjYWxsc2l0ZSdzIGJh
c2ljIGJsb2NrIHdhcyBzcGxpdCBpbnRvIHR3bywgdGhlbiB0aGlzIHdpbGwgYmUKQEAgLTEwMjgs
NTMgKzEwNDAsMjcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCgKICAgICAgICAg
Ly8gT2RkbHksIHRoaXMgY29uZmxhdGVzIGNhbGxzIHRoYXQgaGF2ZW4ndCBleGVjdXRlZCB3aXRo
IGNhbGxzIHRoYXQgYmVoYXZlZCBzdWZmaWNpZW50bHkgcG9seW1vcnBoaWNhbGx5CiAgICAgICAg
IC8vIHRoYXQgd2UgY2Fubm90IG9wdGltaXplIHRoZW0uCiAgICAgICAgIAotICAgICAgICBhZGRD
YWxsKHJlc3VsdCwgb3AsIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBy
ZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CisgICAgICAgIGFkZENhbGwocmVzdWx0LCBvcCwg
T3BJbmZvKCksIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rl
ck9mZnNldCwgcHJlZGljdGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAg
dW5zaWduZWQgbmV4dE9mZnNldCA9IG1fY3VycmVudEluZGV4ICsgaW5zdHJ1Y3Rpb25TaXplOwor
ICAgIAorICAgIE9wSW5mbyBjYWxsT3BJbmZvOwogCi0gICAgaWYgKEludGVybmFsRnVuY3Rpb24q
IGZ1bmN0aW9uID0gY2FsbExpbmtTdGF0dXMuaW50ZXJuYWxGdW5jdGlvbigpKSB7Ci0gICAgICAg
IGlmIChoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24ocmVzdWx0LCBmdW5jdGlvbiwgcmVn
aXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBwcmVkaWN0aW9uLCBzcGVj
aWFsaXphdGlvbktpbmQpKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIHBoYW50b21pbmcgaGFzIHRv
IGJlICphZnRlciogdGhlIGNvZGUgZm9yIHRoZSBpbnRyaW5zaWMsIHRvIHNpZ25pZnkgdGhhdAot
ICAgICAgICAgICAgLy8gdGhlIGlucHV0cyBtdXN0IGJlIGtlcHQgYWxpdmUgd2hhdGV2ZXIgZXhp
dHMgdGhlIGludHJpbnNpYyBtYXkgZG8uCi0gICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20s
IGNhbGxUYXJnZXQpOwotICAgICAgICAgICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJP
ZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBDYW4g
b25seSBoYW5kbGUgdGhpcyB1c2luZyB0aGUgZ2VuZXJpYyBjYWxsIGhhbmRsZXIuCi0gICAgICAg
IGFkZENhbGwocmVzdWx0LCBvcCwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICAgICAgCi0gICAgSW50cmluc2ljIGludHJpbnNpYyA9IGNhbGxMaW5rU3RhdHVzLmludHJp
bnNpY0ZvcihzcGVjaWFsaXphdGlvbktpbmQpOwotCi0gICAgSlNGdW5jdGlvbioga25vd25GdW5j
dGlvbiA9IG51bGxwdHI7Ci0gICAgaWYgKGludHJpbnNpYyAhPSBOb0ludHJpbnNpYykgewotICAg
ICAgICBlbWl0RnVuY3Rpb25DaGVja3MoY2FsbExpbmtTdGF0dXMsIGNhbGxUYXJnZXQsIHJlZ2lz
dGVyT2Zmc2V0LCBzcGVjaWFsaXphdGlvbktpbmQpOwotICAgICAgICAgICAgCi0gICAgICAgIGlm
IChoYW5kbGVJbnRyaW5zaWMocmVzdWx0LCBpbnRyaW5zaWMsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbikpIHsKLSAgICAgICAgICAgIC8vIFRo
aXMgcGhhbnRvbWluZyBoYXMgdG8gYmUgKmFmdGVyKiB0aGUgY29kZSBmb3IgdGhlIGludHJpbnNp
YywgdG8gc2lnbmlmeSB0aGF0Ci0gICAgICAgICAgICAvLyB0aGUgaW5wdXRzIG11c3QgYmUga2Vw
dCBhbGl2ZSB3aGF0ZXZlciBleGl0cyB0aGUgaW50cmluc2ljIG1heSBkby4KLSAgICAgICAgICAg
IGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldCk7Ci0gICAgICAgICAgICBlbWl0QXJndW1l
bnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNw
ZWNpYWxpemF0aW9uS2luZCk7Ci0gICAgICAgICAgICBpZiAobV9ncmFwaC5jb21waWxhdGlvbigp
KQotICAgICAgICAgICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZENh
bGwoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoaGFu
ZGxlSW5saW5pbmcoY2FsbFRhcmdldCwgcmVzdWx0LCBjYWxsTGlua1N0YXR1cywgcmVnaXN0ZXJP
ZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zmc2V0LCBraW5kKSkgewor
ICAgIGlmIChoYW5kbGVJbmxpbmluZyhjYWxsVGFyZ2V0LCByZXN1bHQsIGNhbGxMaW5rU3RhdHVz
LCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQs
IG9wLCBraW5kLCBwcmVkaWN0aW9uKSkgewogICAgICAgICBpZiAobV9ncmFwaC5jb21waWxhdGlv
bigpKQogICAgICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkQ2Fs
bCgpOwogICAgICAgICByZXR1cm47CiAjaWYgRU5BQkxFKEZUTF9OQVRJVkVfQ0FMTF9JTkxJTklO
RykKLSAgICB9IGVsc2UgaWYgKGlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpICYmIE9wdGlvbnM6
Om9wdGltaXplTmF0aXZlQ2FsbHMoKSkgewotICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9
IGNhbGxMaW5rU3RhdHVzLmZ1bmN0aW9uKCk7CisgICAgfSBlbHNlIGlmIChpc0ZUTChtX2dyYXBo
Lm1fcGxhbi5tb2RlKSAmJiBPcHRpb25zOjpvcHRpbWl6ZU5hdGl2ZUNhbGxzKCkgJiYgY2FsbExp
bmtTdGF0dXMuc2l6ZSgpID09IDEgJiYgIWNhbGxMaW5rU3RhdHVzLmNvdWxkVGFrZVNsb3dQYXRo
KCkpIHsKKyAgICAgICAgQ2FsbFZhcmlhbnQgY2FsbGVlID0gY2FsbExpbmtTdGF0dXNbMF0uY2Fs
bGVlKCk7CisgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLmZ1bmN0aW9uKCk7
CiAgICAgICAgIGlmIChmdW5jdGlvbiAmJiBmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSkgewot
ICAgICAgICAgICAgZW1pdEZ1bmN0aW9uQ2hlY2tzKGNhbGxMaW5rU3RhdHVzLCBjYWxsVGFyZ2V0
LCByZWdpc3Rlck9mZnNldCwgc3BlY2lhbGl6YXRpb25LaW5kKTsKLSAgICAgICAgICAgIGtub3du
RnVuY3Rpb24gPSBmdW5jdGlvbjsKKyAgICAgICAgICAgIGVtaXRGdW5jdGlvbkNoZWNrcyhjYWxs
ZWUsIGNhbGxUYXJnZXQsIHJlZ2lzdGVyT2Zmc2V0LCBzcGVjaWFsaXphdGlvbktpbmQpOworICAg
ICAgICAgICAgY2FsbE9wSW5mbyA9IE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShmdW5jdGlvbikpOwog
Ci0gICAgICAgICAgICBpZiAob3AgPT0gQ2FsbCkgCisgICAgICAgICAgICBpZiAob3AgPT0gQ2Fs
bCkKICAgICAgICAgICAgICAgICBvcCA9IE5hdGl2ZUNhbGw7CiAgICAgICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgICAgICBBU1NFUlQob3AgPT0gQ29uc3RydWN0KTsKQEAgLTEwODMsMTMgKzEw
NjksMTEgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCgKICAgICAgICAgfQogI2Vu
ZGlmCiAgICAgfQotICAgIE5vZGUqIGNhbGwgPSBhZGRDYWxsKHJlc3VsdCwgb3AsIGNhbGxUYXJn
ZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlv
bik7Ci0KLSAgICBpZiAoa25vd25GdW5jdGlvbikgCi0gICAgICAgIGNhbGwtPmdpdmVLbm93bkZ1
bmN0aW9uKGtub3duRnVuY3Rpb24pOworICAgIAorICAgIGFkZENhbGwocmVzdWx0LCBvcCwgY2Fs
bE9wSW5mbywgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVy
T2Zmc2V0LCBwcmVkaWN0aW9uKTsKIH0KIAotdm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdEZ1bmN0
aW9uQ2hlY2tzKGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgTm9kZSogY2Fs
bFRhcmdldCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQp
Cit2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0RnVuY3Rpb25DaGVja3MoQ2FsbFZhcmlhbnQgY2Fs
bGVlLCBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCkKIHsKICAgICBOb2RlKiB0aGlzQXJndW1lbnQ7CiAgICAgaWYgKGtpbmQg
PT0gQ29kZUZvckNhbGwpCkBAIC0xMDk3LDUwICsxMDgxLDQwIEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmVtaXRGdW5jdGlvbkNoZWNrcygKICAgICBlbHNlCiAgICAgICAgIHRoaXNBcmd1bWVudCA9
IDA7CiAKLSAgICBpZiAoY2FsbExpbmtTdGF0dXMuaXNQcm92ZWQoKSkgewotICAgICAgICBhZGRU
b0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXQsIHRoaXNBcmd1bWVudCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgCi0gICAgQVNTRVJUKGNhbGxMaW5rU3RhdHVzLmNhbk9wdGltaXplKCkp
OwotICAgIAotICAgIGlmIChKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxMaW5rU3RhdHVzLmZ1
bmN0aW9uKCkpCi0gICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tGdW5jdGlvbiwgT3BJbmZvKG1fZ3Jh
cGguZnJlZXplKGZ1bmN0aW9uKSksIGNhbGxUYXJnZXQsIHRoaXNBcmd1bWVudCk7CisgICAgaWYg
KCFjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKQorICAgICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwg
T3BJbmZvKG1fZ3JhcGguZnJlZXplKGNhbGxlZS5mdW5jdGlvbigpKSksIGNhbGxUYXJnZXQsIHRo
aXNBcmd1bWVudCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChjYWxsTGlua1N0YXR1cy5l
eGVjdXRhYmxlKCkpOwotICAgICAgICAKLSAgICAgICAgYWRkVG9HcmFwaChDaGVja0V4ZWN1dGFi
bGUsIE9wSW5mbyhjYWxsTGlua1N0YXR1cy5leGVjdXRhYmxlKCkpLCBjYWxsVGFyZ2V0LCB0aGlz
QXJndW1lbnQpOworICAgICAgICBBU1NFUlQoY2FsbGVlLmV4ZWN1dGFibGUoKSk7CisgICAgICAg
IGFkZFRvR3JhcGgoQ2hlY2tDZWxsLCBPcEluZm8oY2FsbGVlLmV4ZWN1dGFibGUoKSksIGFkZFRv
R3JhcGgoR2V0RXhlY3V0YWJsZSwgY2FsbFRhcmdldCksIHRoaXNBcmd1bWVudCk7CiAgICAgfQog
fQogCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjp1bmRvRnVuY3Rpb25DaGVja3MoQ2FsbFZhcmlhbnQg
Y2FsbGVlKQoreworICAgIHJlbW92ZUxhc3ROb2RlRnJvbUdyYXBoKENoZWNrQ2VsbCk7CisgICAg
aWYgKGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpCisgICAgICAgIHJlbW92ZUxhc3ROb2RlRnJvbUdy
YXBoKEdldEV4ZWN1dGFibGUpOworfQorCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0QXJndW1l
bnRQaGFudG9tcyhpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIGZvciAoaW50IGkgPSBr
aW5kID09IENvZGVGb3JDYWxsID8gMCA6IDE7IGkgPCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
czsgKytpKQogICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGdldCh2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChpLCByZWdpc3Rlck9mZnNldCkpKTsKIH0KIAotYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5k
LCBjb25zdCBDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsIGludCByZWdpc3Rlck9mZnNl
dCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBJ
bmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCkKK3Vuc2lnbmVkIEJ5dGVDb2RlUGFyc2VyOjppbmxp
bmluZ0Nvc3QoQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICBzdGF0aWMgY29uc3QgYm9v
bCB2ZXJib3NlID0gZmFsc2U7CiAgICAgCi0gICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVj
aWFsaXphdGlvbktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihr
aW5kKTsKLSAgICAKICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZygiQ29uc2lkZXJp
bmcgaW5saW5pbmcgIiwgY2FsbExpbmtTdGF0dXMsICIgaW50byAiLCBjdXJyZW50Q29kZU9yaWdp
bigpLCAiXG4iKTsKKyAgICAgICAgZGF0YUxvZygiQ29uc2lkZXJpbmcgaW5saW5pbmcgIiwgY2Fs
bGVlLCAiIGludG8gIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAgICAgCi0gICAgLy8g
Rmlyc3QsIHRoZSByZWFsbHkgc2ltcGxlIGNoZWNrczogZG8gd2UgaGF2ZSBhbiBhY3R1YWwgSlMg
ZnVuY3Rpb24/Ci0gICAgaWYgKCFjYWxsTGlua1N0YXR1cy5leGVjdXRhYmxlKCkpIHsKKyAgICBG
dW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjYWxsZWUuZnVuY3Rpb25FeGVjdXRhYmxl
KCk7CisgICAgaWYgKCFleGVjdXRhYmxlKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAg
ICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSB0aGVyZSBpcyBubyBleGVjdXRhYmxl
LlxuIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICBG
YWlsaW5nIGJlY2F1c2UgdGhlcmUgaXMgbm8gZnVuY3Rpb24gZXhlY3V0YWJsZS4iKTsKKyAgICAg
ICAgcmV0dXJuIFVJTlRfTUFYOwogICAgIH0KLSAgICBpZiAoY2FsbExpbmtTdGF0dXMuZXhlY3V0
YWJsZSgpLT5pc0hvc3RGdW5jdGlvbigpKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQotICAgICAg
ICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSBpdCdzIGEgaG9zdCBmdW5jdGlvbi5c
biIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAotICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihjYWxsTGlu
a1N0YXR1cy5leGVjdXRhYmxlKCkpOwogICAgIAogICAgIC8vIERvZXMgdGhlIG51bWJlciBvZiBh
cmd1bWVudHMgd2UncmUgcGFzc2luZyBtYXRjaCB0aGUgYXJpdHkgb2YgdGhlIHRhcmdldD8gV2Ug
Y3VycmVudGx5CiAgICAgLy8gaW5saW5lIG9ubHkgaWYgdGhlIG51bWJlciBvZiBhcmd1bWVudHMg
cGFzc2VkIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbnVtYmVyCkBAIC0xMTQ4LDcg
KzExMjIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAg
aWYgKHN0YXRpY19jYXN0PGludD4oZXhlY3V0YWJsZS0+cGFyYW1ldGVyQ291bnQoKSkgKyAxID4g
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIG9mIGFyaXR5IG1pc21hdGNoLlxu
Iik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAg
IH0KICAgICAKICAgICAvLyBEbyB3ZSBoYXZlIGEgY29kZSBibG9jaywgYW5kIGRvZXMgdGhlIGNv
ZGUgYmxvY2sncyBzaXplIG1hdGNoIHRoZSBoZXVyaXN0aWNzL3JlcXVpcmVtZW50cyBmb3IKQEAg
LTExNTcsMTggKzExMzEsMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmco
Tm9kZQogICAgIC8vIGlmIHdlIGhhZCBhIHN0YXRpYyBwcm9vZiBvZiB3aGF0IHdhcyBiZWluZyBj
YWxsZWQ7IHRoaXMgbWlnaHQgaGFwcGVuIGZvciBleGFtcGxlIGlmIHlvdSBjYWxsIGEKICAgICAv
LyBnbG9iYWwgZnVuY3Rpb24sIHdoZXJlIHdhdGNocG9pbnRpbmcgZ2l2ZXMgdXMgc3RhdGljIGlu
Zm9ybWF0aW9uLiBPdmVyYWxsLCBpdCdzIGEgcmFyZSBjYXNlCiAgICAgLy8gYmVjYXVzZSB3ZSBl
eHBlY3QgdGhhdCBhbnkgaG90IGNhbGxlZXMgd291bGQgaGF2ZSBhbHJlYWR5IGJlZW4gY29tcGls
ZWQuCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5iYXNlbGluZUNvZGVC
bG9ja0ZvcihzcGVjaWFsaXphdGlvbktpbmQpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
ZXhlY3V0YWJsZS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Ioa2luZCk7CiAgICAgaWYgKCFjb2RlQmxv
Y2spIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFp
bGluZyBiZWNhdXNlIG5vIGNvZGUgYmxvY2sgYXZhaWxhYmxlLlxuIik7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgIH0KICAgICBDYXBhYmlsaXR5
TGV2ZWwgY2FwYWJpbGl0eUxldmVsID0gaW5saW5lRnVuY3Rpb25Gb3JDYXBhYmlsaXR5TGV2ZWwo
Ci0gICAgICAgIGNvZGVCbG9jaywgc3BlY2lhbGl6YXRpb25LaW5kLCBjYWxsTGlua1N0YXR1cy5p
c0Nsb3N1cmVDYWxsKCkpOworICAgICAgICBjb2RlQmxvY2ssIGtpbmQsIGNhbGxlZS5pc0Nsb3N1
cmVDYWxsKCkpOwogICAgIGlmICghY2FuSW5saW5lKGNhcGFiaWxpdHlMZXZlbCkpIHsKICAgICAg
ICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNl
IHRoZSBmdW5jdGlvbiBpcyBub3QgaW5saW5lYWJsZS5cbiIpOwotICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CiAgICAgCiAgICAgLy8gQ2hlY2sg
aWYgdGhlIGNhbGxlciBpcyBhbHJlYWR5IHRvbyBsYXJnZS4gV2UgZG8gdGhpcyBjaGVjayBoZXJl
IGJlY2F1c2UgdGhhdCdzIGp1c3QKQEAgLTExNzgsNyArMTE1Miw3IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAgICAgY29kZUJsb2NrLT5tX3Nob3VsZEFs
d2F5c0JlSW5saW5lZCA9IGZhbHNlOwogICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAg
IGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgdGhlIGNhbGxlciBpcyB0b28gbGFyZ2UuXG4i
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAg
fQogICAgIAogICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBiZXR0ZXIgYXQgcHJlZGljdGlu
ZyBob3cgbXVjaCBibG9hdCB3ZSB3aWxsIGludHJvZHVjZSBieSBpbmxpbmluZwpAQCAtMTE5Nyw3
ICsxMTcxLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAg
ICAgICBpZiAoZGVwdGggPj0gT3B0aW9uczo6bWF4aW11bUlubGluaW5nRGVwdGgoKSkgewogICAg
ICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxp
bmcgYmVjYXVzZSBkZXB0aCBleGNlZWRlZC5cbiIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICBpZiAoZW50cnktPmV4ZWN1dGFibGUoKSA9PSBleGVjdXRhYmxlKSB7CkBAIC0xMjA1LDE5
ICsxMTc5LDI2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAg
ICAgICAgICAgIGlmIChyZWN1cnNpb24gPj0gT3B0aW9uczo6bWF4aW11bUlubGluaW5nUmVjdXJz
aW9uKCkpIHsKICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSByZWN1cnNpb24gZGV0ZWN0ZWQuXG4iKTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIFVJ
TlRfTUFYOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIAogICAgIGlmICh2
ZXJib3NlKQotICAgICAgICBkYXRhTG9nKCIgICAgQ29tbWl0dGluZyB0byBpbmxpbmluZy5cbiIp
OworICAgICAgICBkYXRhTG9nKCIgICAgSW5saW5pbmcgc2hvdWxkIGJlIHBvc3NpYmxlLlxuIik7
CisgICAgCisgICAgLy8gSXQgbWlnaHQgYmUgcG9zc2libGUgdG8gaW5saW5lLgorICAgIHJldHVy
biBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKTsKK30KKwordm9pZCBCeXRlQ29kZVBhcnNl
cjo6aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENh
bGxWYXJpYW50IGNhbGxlZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2luZCBr
aW5kLCBDYWxsZXJMaW5rYWJpbGl0eSBjYWxsZXJMaW5rYWJpbGl0eSkKK3sKKyAgICBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCA9IElubGluZUNhbGxGcmFtZTo6c3Bl
Y2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOwogICAgIAotICAgIC8vIE5vdyB3ZSBrbm93IHdpdGhv
dXQgYSBkb3VidCB0aGF0IHdlIGFyZSBjb21taXR0ZWQgdG8gaW5saW5pbmcuIFNvIGJlZ2luIHRo
ZSBwcm9jZXNzCi0gICAgLy8gYnkgY2hlY2tpbmcgdGhlIGNhbGxlZSAoaWYgbmVjZXNzYXJ5KSBh
bmQgbWFraW5nIHN1cmUgdGhhdCBhcmd1bWVudHMgYW5kIHRoZSBjYWxsZWUKLSAgICAvLyBhcmUg
Zmx1c2hlZC4KLSAgICBlbWl0RnVuY3Rpb25DaGVja3MoY2FsbExpbmtTdGF0dXMsIGNhbGxUYXJn
ZXROb2RlLCByZWdpc3Rlck9mZnNldCwgc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICBBU1NFUlQo
aW5saW5pbmdDb3N0KGNhbGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxp
emF0aW9uS2luZCkgIT0gVUlOVF9NQVgpOwogICAgIAorICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gY2FsbGVlLmZ1bmN0aW9uRXhlY3V0YWJsZSgpLT5iYXNlbGluZUNvZGVCbG9ja0ZvcihzcGVj
aWFsaXphdGlvbktpbmQpOworCiAgICAgLy8gRklYTUU6IERvbid0IGZsdXNoIGNvbnN0YW50cyEK
ICAgICAKICAgICBpbnQgaW5saW5lQ2FsbEZyYW1lU3RhcnQgPSBtX2lubGluZVN0YWNrVG9wLT5y
ZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0KSkub2Zmc2V0KCkgKyBK
U1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOwpAQCAtMTIzMyw3ICsxMjE0LDcgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgICAgICByZXN1bHRSZWcgPSBt
X2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQocmVzdWx0UmVnKTsKICAgICAKICAgICBJbmxp
bmVTdGFja0VudHJ5IGlubGluZVN0YWNrRW50cnkoCi0gICAgICAgIHRoaXMsIGNvZGVCbG9jaywg
Y29kZUJsb2NrLCBtX2dyYXBoLmxhc3RCbG9jaygpLCBjYWxsTGlua1N0YXR1cy5mdW5jdGlvbigp
LCByZXN1bHRSZWcsCisgICAgICAgIHRoaXMsIGNvZGVCbG9jaywgY29kZUJsb2NrLCBtX2dyYXBo
Lmxhc3RCbG9jaygpLCBjYWxsZWUuZnVuY3Rpb24oKSwgcmVzdWx0UmVnLAogICAgICAgICAoVmly
dHVhbFJlZ2lzdGVyKWlubGluZUNhbGxGcmFtZVN0YXJ0LCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywga2luZCk7CiAgICAgCiAgICAgLy8gVGhpcyBpcyB3aGVyZSB0aGUgYWN0dWFsIGlubGlu
aW5nIHJlYWxseSBoYXBwZW5zLgpAQCAtMTI0Nyw4ICsxMjI4LDggQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgIAogICAgIFJFTEVBU0VfQVNTRVJUKAogICAg
ICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbAot
ICAgICAgICA9PSBjYWxsTGlua1N0YXR1cy5pc0Nsb3N1cmVDYWxsKCkpOwotICAgIGlmIChjYWxs
TGlua1N0YXR1cy5pc0Nsb3N1cmVDYWxsKCkpIHsKKyAgICAgICAgPT0gY2FsbGVlLmlzQ2xvc3Vy
ZUNhbGwoKSk7CisgICAgaWYgKGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpIHsKICAgICAgICAgVmFy
aWFibGVBY2Nlc3NEYXRhKiBjYWxsZWVWYXJpYWJsZSA9CiAgICAgICAgICAgICBzZXQoVmlydHVh
bFJlZ2lzdGVyKEpTU3RhY2s6OkNhbGxlZSksIGNhbGxUYXJnZXROb2RlLCBJbW1lZGlhdGVOYWtl
ZFNldCktPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwogICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEq
IHNjb3BlVmFyaWFibGUgPQpAQCAtMTI3NiwyMCArMTI1Nyw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAgICAgZWxzZQogICAgICAgICAgICAgQVNTRVJU
KGlubGluZVN0YWNrRW50cnkubV9jYWxsc2l0ZUJsb2NrSGVhZC0+aXNMaW5rZWQpOwogICAgICAg
ICAKLSAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHRoZSBjYWxsc2l0ZSBibG9jayBoZWFk
IGlzIG5vdCBvd25lZCBieSB0aGUgY2FsbGVyLgotICAgICAgICBpZiAoIWlubGluZVN0YWNrRW50
cnkubV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAv
LyBJdCdzIGRlZmluaXRlbHkgb3duZWQgYnkgdGhlIGNhbGxlciwgYmVjYXVzZSB0aGUgY2FsbGVy
IGNyZWF0ZWQgbmV3IGJsb2Nrcy4KLSAgICAgICAgICAgIC8vIEFzc2VydCB0aGF0IHRoaXMgYWxs
IGFkZHMgdXAuCi0gICAgICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+
bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9ibG9jayA9PSBpbmxpbmVTdGFja0VudHJ5Lm1fY2Fs
bHNpdGVCbG9ja0hlYWQpOwotICAgICAgICAgICAgQVNTRVJUKGlubGluZVN0YWNrRW50cnkubV9j
YWxsZXItPm1fdW5saW5rZWRCbG9ja3MubGFzdCgpLm1fbmVlZHNOb3JtYWxMaW5raW5nKTsKLSAg
ICAgICAgICAgIGlubGluZVN0YWNrRW50cnkubV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MubGFz
dCgpLm1fbmVlZHNOb3JtYWxMaW5raW5nID0gZmFsc2U7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAvLyBJdCdzIGRlZmluaXRlbHkgbm90IG93bmVkIGJ5IHRoZSBjYWxsZXIuIFRlbGwg
dGhlIGNhbGxlciB0aGF0IGhlIGRvZXMgbm90Ci0gICAgICAgICAgICAvLyBuZWVkIHRvIGxpbmsg
aGlzIGNhbGxzaXRlIGJsb2NrIGhlYWQsIGJlY2F1c2Ugd2UgZGlkIGl0IGZvciBoaW0uCi0gICAg
ICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+bV9jYWxsc2l0ZUJsb2Nr
SGVhZE5lZWRzTGlua2luZyk7Ci0gICAgICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS5t
X2NhbGxlci0+bV9jYWxsc2l0ZUJsb2NrSGVhZCA9PSBpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbHNp
dGVCbG9ja0hlYWQpOwotICAgICAgICAgICAgaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+bV9j
YWxsc2l0ZUJsb2NrSGVhZE5lZWRzTGlua2luZyA9IGZhbHNlOwotICAgICAgICB9CisgICAgICAg
IGlmIChjYWxsZXJMaW5rYWJpbGl0eSA9PSBDYWxsZXJEb2VzTm9ybWFsTGlua2luZykKKyAgICAg
ICAgICAgIGNhbmNlbExpbmtpbmdGb3JCbG9jayhpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLCBp
bmxpbmVTdGFja0VudHJ5Lm1fY2FsbHNpdGVCbG9ja0hlYWQpOwogICAgICAgICAKICAgICAgICAg
bGlua0Jsb2NrcyhpbmxpbmVTdGFja0VudHJ5Lm1fdW5saW5rZWRCbG9ja3MsIGlubGluZVN0YWNr
RW50cnkubV9ibG9ja0xpbmtpbmdUYXJnZXRzKTsKICAgICB9IGVsc2UKQEAgLTEzMTIsMTIgKzEy
ODEsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICBtX2N1cnJlbnRCbG9jayA9IG1fZ3JhcGgubGFzdEJsb2Nr
KCk7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAog
ICAgIC8vIElmIHdlIGdldCB0byB0aGlzIHBvaW50IHRoZW4gYWxsIGJsb2NrcyBtdXN0IGVuZCBp
biBzb21lIHNvcnQgb2YgdGVybWluYWxzLgogICAgIEFTU0VSVChsYXN0QmxvY2stPmxhc3QoKS0+
aXNUZXJtaW5hbCgpKTsKLSAgICAKIAogICAgIC8vIE5lZWQgdG8gY3JlYXRlIGEgbmV3IGJhc2lj
IGJsb2NrIGZvciB0aGUgY29udGludWF0aW9uIGF0IHRoZSBjYWxsZXIuCiAgICAgUmVmUHRyPEJh
c2ljQmxvY2s+IGJsb2NrID0gYWRvcHRSZWYobmV3IEJhc2ljQmxvY2sobmV4dE9mZnNldCwgbV9u
dW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCBQTmFOKSk7CkBAIC0xMzMzLDIwICsxMzAxLDIzMCBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgICAgIEFTU0VS
VCghbm9kZS0+dGFyZ2V0QmxvY2soKSk7CiAgICAgICAgIG5vZGUtPnRhcmdldEJsb2NrKCkgPSBi
bG9jay5nZXQoKTsKICAgICAgICAgaW5saW5lU3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzW2ld
Lm1fbmVlZHNFYXJseVJldHVybkxpbmtpbmcgPSBmYWxzZTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVE
Ci0gICAgICAgIGJsb2NrVG9MaW5rLT5pc0xpbmtlZCA9IHRydWU7Ci0jZW5kaWYKKyAgICAgICAg
YmxvY2tUb0xpbmstPmRpZExpbmsoKTsKICAgICB9CiAgICAgCiAgICAgbV9jdXJyZW50QmxvY2sg
PSBibG9jay5nZXQoKTsKICAgICBBU1NFUlQobV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1f
YmxvY2tMaW5raW5nVGFyZ2V0cy5pc0VtcHR5KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxs
ZXItPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5sYXN0KCktPmJ5dGVjb2RlQmVnaW4gPCBuZXh0T2Zm
c2V0KTsKICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5h
cHBlbmQoVW5saW5rZWRCbG9jayhibG9jay5nZXQoKSkpOwotICAgIG1faW5saW5lU3RhY2tUb3At
Pm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuYXBwZW5kKGJsb2NrLmdldCgpKTsKKyAg
ICBpZiAoY2FsbGVyTGlua2FiaWxpdHkgPT0gQ2FsbGVyRG9lc05vcm1hbExpbmtpbmcpCisgICAg
ICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuYXBw
ZW5kKGJsb2NrLmdldCgpKTsKICAgICBtX2dyYXBoLmFwcGVuZEJsb2NrKGJsb2NrKTsKICAgICBw
cmVwYXJlVG9QYXJzZUJsb2NrKCk7Cit9CisKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OmNhbmNlbExp
bmtpbmdGb3JCbG9jayhJbmxpbmVTdGFja0VudHJ5KiBpbmxpbmVTdGFja0VudHJ5LCBCYXNpY0Js
b2NrKiBibG9jaykKK3sKKyAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGNhbGxzaXRlIGJs
b2NrIGhlYWQgaXMgbm90IG93bmVkIGJ5IHRoZSBjYWxsZXIuCisgICAgaWYgKCFpbmxpbmVTdGFj
a0VudHJ5LT5tX3VubGlua2VkQmxvY2tzLmlzRW1wdHkoKSkgeworICAgICAgICAvLyBJdCdzIGRl
ZmluaXRlbHkgb3duZWQgYnkgdGhlIGNhbGxlciwgYmVjYXVzZSB0aGUgY2FsbGVyIGNyZWF0ZWQg
bmV3IGJsb2Nrcy4KKyAgICAgICAgLy8gQXNzZXJ0IHRoYXQgdGhpcyBhbGwgYWRkcyB1cC4KKyAg
ICAgICAgQVNTRVJUKGlubGluZVN0YWNrRW50cnktPm1fdW5saW5rZWRCbG9ja3MubGFzdCgpLm1f
YmxvY2sgPT0gYmxvY2spOworICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS0+bV91bmxp
bmtlZEJsb2Nrcy5sYXN0KCkubV9uZWVkc05vcm1hbExpbmtpbmcpOworICAgICAgICBpbmxpbmVT
dGFja0VudHJ5LT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX25lZWRzTm9ybWFsTGlua2luZyA9
IGZhbHNlOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEl0J3MgZGVmaW5pdGVseSBub3Qgb3du
ZWQgYnkgdGhlIGNhbGxlci4gVGVsbCB0aGUgY2FsbGVyIHRoYXQgaGUgZG9lcyBub3QKKyAgICAg
ICAgLy8gbmVlZCB0byBsaW5rIGhpcyBjYWxsc2l0ZSBibG9jayBoZWFkLCBiZWNhdXNlIHdlIGRp
ZCBpdCBmb3IgaGltLgorICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS0+bV9jYWxsc2l0
ZUJsb2NrSGVhZE5lZWRzTGlua2luZyk7CisgICAgICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5
LT5tX2NhbGxzaXRlQmxvY2tIZWFkID09IGJsb2NrKTsKKyAgICAgICAgaW5saW5lU3RhY2tFbnRy
eS0+bV9jYWxsc2l0ZUJsb2NrSGVhZE5lZWRzTGlua2luZyA9IGZhbHNlOworICAgIH0KK30KKwor
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRvSW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0
Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENhbGxWYXJpYW50IGNhbGxlZSwgaW50IHJlZ2lzdGVy
T2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZz
ZXQsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBDYWxsZXJMaW5rYWJpbGl0eSBjYWxsZXJM
aW5rYWJpbGl0eSwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5n
QmFsYW5jZSkKK3sKKyAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2lu
ZCA9IElubGluZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOworICAgIAor
ICAgIGlmICghaW5saW5pbmdCYWxhbmNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisg
ICAgaWYgKEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLmludGVybmFsRnVuY3Rp
b24oKSkgeworICAgICAgICBpZiAoaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKHJlc3Vs
dE9wZXJhbmQsIGZ1bmN0aW9uLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCkpIHsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhh
bnRvbSwgY2FsbFRhcmdldE5vZGUpOworICAgICAgICAgICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMo
cmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlv
bktpbmQpOworICAgICAgICAgICAgaW5saW5pbmdCYWxhbmNlLS07CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAor
ICAgIEludHJpbnNpYyBpbnRyaW5zaWMgPSBjYWxsZWUuaW50cmluc2ljRm9yKHNwZWNpYWxpemF0
aW9uS2luZCk7CisgICAgaWYgKGludHJpbnNpYyAhPSBOb0ludHJpbnNpYykgeworICAgICAgICBp
ZiAoaGFuZGxlSW50cmluc2ljKHJlc3VsdE9wZXJhbmQsIGludHJpbnNpYywgcmVnaXN0ZXJPZmZz
ZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBwcmVkaWN0aW9uKSkgeworICAgICAgICAg
ICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0Tm9kZSk7CisgICAgICAgICAgICBlbWl0
QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgICAgICAgICBpbmxpbmluZ0JhbGFuY2UtLTsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgbXlJbmxpbmluZ0Nvc3QgPSBpbmxpbmluZ0Nv
c3QoY2FsbGVlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5k
KTsKKyAgICBpZiAobXlJbmxpbmluZ0Nvc3QgPiBpbmxpbmluZ0JhbGFuY2UpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAKKyAgICBpbmxpbmVDYWxsKGNhbGxUYXJnZXROb2RlLCByZXN1bHRP
cGVyYW5kLCBjYWxsZWUsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgbmV4dE9mZnNldCwga2luZCwgY2FsbGVyTGlua2FiaWxpdHkpOworICAgIGlubGluaW5nQmFs
YW5jZSAtPSBteUlubGluaW5nQ29zdDsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgICAKK30KKworYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIGlu
dCByZXN1bHRPcGVyYW5kLCBjb25zdCBDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsIGlu
dCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25l
ZCBuZXh0T2Zmc2V0LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5k
LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQoreworICAgIENvZGVTcGVjaWFsaXphdGlvbktp
bmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXphdGlvbktp
bmRGb3Ioa2luZCk7CisgICAgCisgICAgaWYgKCFjYWxsTGlua1N0YXR1cy5zaXplKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICB1bnNpZ25lZCBpbmxpbmluZ0JhbGFuY2UgPSBP
cHRpb25zOjptYXhpbXVtRnVuY3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25D
b3VudCgpOworICAgIGlmIChzcGVjaWFsaXphdGlvbktpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCkK
KyAgICAgICAgaW5saW5pbmdCYWxhbmNlID0gc3RkOjptaW4oaW5saW5pbmdCYWxhbmNlLCBPcHRp
b25zOjptYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlv
bkNvdW50KCkpOworICAgIGlmIChjYWxsTGlua1N0YXR1cy5pc0Nsb3N1cmVDYWxsKCkpCisgICAg
ICAgIGlubGluaW5nQmFsYW5jZSA9IHN0ZDo6bWluKGlubGluaW5nQmFsYW5jZSwgT3B0aW9uczo6
bWF4aW11bUZ1bmN0aW9uRm9yQ2xvc3VyZUNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNv
dW50KCkpOworICAgIAorICAgIC8vIEZpcnN0IGNoZWNrIGlmIHdlIGNhbiBhdm9pZCBjcmVhdGlu
ZyBjb250cm9sIGZsb3cuIE91ciBpbmxpbmVyIGRvZXMgc29tZSBDRkcKKyAgICAvLyBzaW1wbGlm
aWNhdGlvbiBvbiB0aGUgZmx5IGFuZCB0aGlzIGhlbHBzIHJlZHVjZSBjb21waWxlIHRpbWVzLCBi
dXQgd2UgY2FuIG9ubHkgbGV2ZXJhZ2UKKyAgICAvLyB0aGlzIGluIGNhc2VzIHdoZXJlIHdlIGRv
bid0IG5lZWQgY29udHJvbCBmbG93IGRpYW1vbmRzIHRvIGNoZWNrIHRoZSBjYWxsZWUuCisgICAg
aWYgKCFjYWxsTGlua1N0YXR1cy5jb3VsZFRha2VTbG93UGF0aCgpICYmIGNhbGxMaW5rU3RhdHVz
LnNpemUoKSA9PSAxKSB7CisgICAgICAgIGlmICghY2FsbExpbmtTdGF0dXMuaXNQcm92ZWQoKSkg
eworICAgICAgICAgICAgZW1pdEZ1bmN0aW9uQ2hlY2tzKAorICAgICAgICAgICAgICAgIGNhbGxM
aW5rU3RhdHVzWzBdLmNhbGxlZSgpLCBjYWxsVGFyZ2V0Tm9kZSwgcmVnaXN0ZXJPZmZzZXQsIHNw
ZWNpYWxpemF0aW9uS2luZCk7CisgICAgICAgIH0KKyAgICAgICAgYm9vbCByZXN1bHQgPSBhdHRl
bXB0VG9JbmxpbmVDYWxsKAorICAgICAgICAgICAgY2FsbFRhcmdldE5vZGUsIHJlc3VsdE9wZXJh
bmQsIGNhbGxMaW5rU3RhdHVzWzBdLmNhbGxlZSgpLCByZWdpc3Rlck9mZnNldCwKKyAgICAgICAg
ICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zmc2V0LCBraW5kLCBDYWxsZXJE
b2VzTm9ybWFsTGlua2luZywgcHJlZGljdGlvbiwKKyAgICAgICAgICAgIGlubGluaW5nQmFsYW5j
ZSk7CisgICAgICAgIGlmICghcmVzdWx0ICYmICFjYWxsTGlua1N0YXR1cy5pc1Byb3ZlZCgpKQor
ICAgICAgICAgICAgdW5kb0Z1bmN0aW9uQ2hlY2tzKGNhbGxMaW5rU3RhdHVzWzBdLmNhbGxlZSgp
KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgLy8gV2UgbmVlZCB0
byBjcmVhdGUgc29tZSBraW5kIG9mIHN3aXRjaCBvdmVyIGNhbGxlZS4gRm9yIG5vdyB3ZSBvbmx5
IGRvIHRoaXMgaWYgd2UgYmVsaWV2ZSB0aGF0CisgICAgLy8gd2UncmUgaW4gdGhlIHRvcCB0aWVy
LiBXZSBoYXZlIHR3byByZWFzb25zIGZvciB0aGlzOiBmaXJzdCwgaXQgcHJvdmlkZXMgdXMgYW4g
b3Bwb3J0dW5pdHkgdG8KKyAgICAvLyBkbyBtb3JlIGRldGFpbGVkIHBvbHl2YXJpYW50L3BvbHlt
b3JwaGljIHByb2ZpbGluZzsgYW5kIHNlY29uZCwgaXQgcmVkdWNlcyBjb21waWxlIHRpbWVzIGlu
CisgICAgLy8gdGhlIERGRy4gQW5kIGJ5IHBvbHl2YXJpYW50IHByb2ZpbGluZyB3ZSBtZWFuIHBv
bHl2YXJpYW50IHByb2ZpbGluZyBvZiAqdGhpcyogY2FsbC4gTm90ZSB0aGF0CisgICAgLy8gd2Ug
Y291bGQgaW1wcm92ZSB0aGF0IGFzcGVjdCBvZiB0aGlzIGJ5IGRvaW5nIHBvbHltb3JwaGljIGlu
bGluaW5nIGJ1dCBoYXZpbmcgdGhlIHByb2ZpbGluZworICAgIC8vIGFsc28uIEN1cnJlbnRseSB3
ZSBvcHQgYWdhaW5zdCB0aGlzLCBidXQgaXQgY291bGQgYmUgaW50ZXJlc3RpbmcuIFRoYXQgd291
bGQgcmVxdWlyZSBoYXZpbmcgYQorICAgIC8vIHNlcGFyYXRlIG5vZGUgZm9yIGNhbGwgZWRnZSBw
cm9maWxpbmcuCisgICAgLy8gRklYTUU6IEludHJvZHVjZSB0aGUgbm90aW9uIG9mIGEgc2VwYXJh
dGUgY2FsbCBlZGdlIHByb2ZpbGluZyBub2RlLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYwMzMKKyAgICBpZiAoIWlzRlRMKG1fZ3JhcGgubV9wbGFu
Lm1vZGUpIHx8ICFPcHRpb25zOjplbmFibGVQb2x5bW9ycGhpY0NhbGxJbmxpbmluZygpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgYm9vbCBhbGxBcmVDbG9zdXJlQ2FsbHMgPSB0
cnVlOworICAgIGJvb2wgYWxsQXJlRGlyZWN0Q2FsbHMgPSB0cnVlOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IGNhbGxMaW5rU3RhdHVzLnNpemUoKTsgaS0tOykgeworICAgICAgICBpZiAoY2FsbExp
bmtTdGF0dXNbaV0uY2FsbGVlKCkuaXNDbG9zdXJlQ2FsbCgpKQorICAgICAgICAgICAgYWxsQXJl
RGlyZWN0Q2FsbHMgPSBmYWxzZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYWxsQXJlQ2xv
c3VyZUNhbGxzID0gZmFsc2U7CisgICAgfQorICAgIAorICAgIE5vZGUqIHRoaW5nVG9Td2l0Y2hP
bjsKKyAgICBpZiAoYWxsQXJlRGlyZWN0Q2FsbHMpCisgICAgICAgIHRoaW5nVG9Td2l0Y2hPbiA9
IGNhbGxUYXJnZXROb2RlOworICAgIGVsc2UgaWYgKGFsbEFyZUNsb3N1cmVDYWxscykKKyAgICAg
ICAgdGhpbmdUb1N3aXRjaE9uID0gYWRkVG9HcmFwaChHZXRFeGVjdXRhYmxlLCBjYWxsVGFyZ2V0
Tm9kZSk7CisgICAgZWxzZSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0
byBoYW5kbGUgdGhpcyBjYXNlLCBidXQgaXQncyB0cmlja3kgYW5kIHdlIGRvbid0IGtub3cgb2Yg
Y2FzZXMKKyAgICAgICAgLy8gd2hlcmUgaXQgd291bGQgYmUgYmVuZWZpY2lhbC4gQWxzbywgQ2Fs
bExpbmtTdGF0dXMgd291bGQgbWFrZSBhbGwgY2FsbGVlcyBhcHBlYXIgbGlrZQorICAgICAgICAv
LyBjbG9zdXJlIGNhbGxzIGlmIGFueSBjYWxscyB3ZXJlIGNsb3N1cmUgY2FsbHMgLSBleGNlcHQg
Zm9yIGNhbGxzIHRvIGludGVybmFsIGZ1bmN0aW9ucy4KKyAgICAgICAgLy8gU28gdGhpcyB3aWxs
IG9ubHkgYXJpc2UgaWYgc29tZSBjYWxsZWVzIGFyZSBpbnRlcm5hbCBmdW5jdGlvbnMgYW5kIG90
aGVycyBhcmUgY2xvc3VyZXMuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzYwMjAKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAK
KyAgICAvLyBUaGlzIG1ha2VzIG1lIHdpc2ggdGhhdCB3ZSB3ZXJlIGluIFNTQSBhbGwgdGhlIHRp
bWUuIFdlIG5lZWQgdG8gcGljayBhIHZhcmlhYmxlIGludG8gd2hpY2ggdG8KKyAgICAvLyBzdG9y
ZSB0aGUgY2FsbGVlIHNvIHRoYXQgaXQgd2lsbCBiZSBhY2Nlc3NpYmxlIHRvIGFsbCBvZiB0aGUg
YmxvY2tzIHdlJ3JlIGFib3V0IHRvIGNyZWF0ZS4gV2UKKyAgICAvLyBnZXQgYXdheSB3aXRoIGRv
aW5nIGFuIGltbWVkaWF0ZS1zZXQgaGVyZSBiZWNhdXNlIHdlIHdvdWxkbid0IGhhdmUgcGVyZm9y
bWVkIGFueSBzaWRlIGVmZmVjdHMKKyAgICAvLyB5ZXQuCisgICAgVmlydHVhbFJlZ2lzdGVyIGNh
bGxlZVJlZyhyZWdpc3Rlck9mZnNldCArIEpTU3RhY2s6OkNhbGxlZSk7CisgICAgc2V0RGlyZWN0
KGNhbGxlZVJlZywgY2FsbFRhcmdldE5vZGUsIEltbWVkaWF0ZVNldFdpdGhGbHVzaCk7CisgICAg
CisgICAgU3dpdGNoRGF0YSYgZGF0YSA9ICptX2dyYXBoLm1fc3dpdGNoRGF0YS5hZGQoKTsKKyAg
ICBkYXRhLmtpbmQgPSBTd2l0Y2hDZWxsOworICAgIGFkZFRvR3JhcGgoU3dpdGNoLCBPcEluZm8o
JmRhdGEpLCB0aGluZ1RvU3dpdGNoT24pOworICAgIAorICAgIEJhc2ljQmxvY2sqIG9yaWdpbkJs
b2NrID0gbV9jdXJyZW50QmxvY2s7CisgICAgb3JpZ2luQmxvY2stPmRpZExpbmsoKTsKKyAgICBj
YW5jZWxMaW5raW5nRm9yQmxvY2sobV9pbmxpbmVTdGFja1RvcCwgb3JpZ2luQmxvY2spOworICAg
IAorICAgIC8vIEVhY2ggaW5saW5lZCBjYWxsZWUgd2lsbCBoYXZlIGEgbGFuZGluZyBibG9jayB0
aGF0IGl0IHJldHVybnMgYXQuIFRoZXkgc2hvdWxkIGFsbCBoYXZlIGp1bXBzCisgICAgLy8gdG8g
dGhlIGNvbnRpbnVhdGlvbiBibG9jaywgd2hpY2ggd2UgY3JlYXRlIGxhc3QuCisgICAgVmVjdG9y
PEJhc2ljQmxvY2sqPiBsYW5kaW5nQmxvY2tzOworICAgIAorICAgIC8vIFdlIG1ha2UgZm9yY2Ug
dGhpcyB0cnVlIGlmIHdlIGdpdmUgdXAgb24gaW5saW5pbmcgYW55IG9mIHRoZSBlZGdlcy4KKyAg
ICBib29sIGNvdWxkVGFrZVNsb3dQYXRoID0gY2FsbExpbmtTdGF0dXMuY291bGRUYWtlU2xvd1Bh
dGgoKTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbExpbmtTdGF0dXMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgUmVmUHRyPEJhc2ljQmxvY2s+IGJsb2NrID0gYWRvcHRS
ZWYobmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2Fscywg
UE5hTikpOworICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrLmdldCgpOworICAgICAgICBt
X2dyYXBoLm1fYmxvY2tzLmFwcGVuZChibG9jayk7CisgICAgICAgIHByZXBhcmVUb1BhcnNlQmxv
Y2soKTsKKyAgICAgICAgCisgICAgICAgIE5vZGUqIG15Q2FsbFRhcmdldE5vZGUgPSBnZXREaXJl
Y3QoY2FsbGVlUmVnKTsKKyAgICAgICAgCisgICAgICAgIGJvb2wgaW5saW5pbmdSZXN1bHQgPSBh
dHRlbXB0VG9JbmxpbmVDYWxsKAorICAgICAgICAgICAgbXlDYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0
T3BlcmFuZCwgY2FsbExpbmtTdGF0dXNbaV0uY2FsbGVlKCksIHJlZ2lzdGVyT2Zmc2V0LAorICAg
ICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQsIGtpbmQsIENh
bGxlckxpbmtzTWFudWFsbHksIHByZWRpY3Rpb24sCisgICAgICAgICAgICBpbmxpbmluZ0JhbGFu
Y2UpOworICAgICAgICAKKyAgICAgICAgaWYgKCFpbmxpbmluZ1Jlc3VsdCkgeworICAgICAgICAg
ICAgLy8gVGhhdCBmYWlsZWQgc28gd2UgbGV0IHRoZSBibG9jayBkaWUuIE5vdGhpbmcgaW50ZXJl
c3Rpbmcgc2hvdWxkIGhhdmUgYmVlbiBhZGRlZCB0bworICAgICAgICAgICAgLy8gdGhlIGJsb2Nr
LiBXZSBhbHNvIGdpdmUgdXAgb24gaW5saW5pbmcgYW55IG9mIHRoZSAobGVzcyBmcmVxdWVudCkg
Y2FsbGVlcy4KKyAgICAgICAgICAgIEFTU0VSVChtX2N1cnJlbnRCbG9jayA9PSBibG9jay5nZXQo
KSk7CisgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2Jsb2Nrcy5sYXN0KCkgPT0gYmxvY2sp
OworICAgICAgICAgICAgbV9ncmFwaC5raWxsQmxvY2tBbmRJdHNDb250ZW50cyhibG9jay5nZXQo
KSk7CisgICAgICAgICAgICBtX2dyYXBoLm1fYmxvY2tzLnJlbW92ZUxhc3QoKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgLy8gVGhlIGZhY3QgdGhhdCBpbmxpbmluZyBmYWlsZWQgbWVhbnMg
d2UgbmVlZCBhIHNsb3cgcGF0aC4KKyAgICAgICAgICAgIGNvdWxkVGFrZVNsb3dQYXRoID0gdHJ1
ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBKU0Nl
bGwqIHRoaW5nVG9DYXNlT247CisgICAgICAgIGlmIChhbGxBcmVEaXJlY3RDYWxscykKKyAgICAg
ICAgICAgIHRoaW5nVG9DYXNlT24gPSBjYWxsTGlua1N0YXR1c1tpXS5jYWxsZWUoKS5ub25FeGVj
dXRhYmxlQ2FsbGVlKCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKGFsbEFy
ZUNsb3N1cmVDYWxscyk7CisgICAgICAgICAgICB0aGluZ1RvQ2FzZU9uID0gY2FsbExpbmtTdGF0
dXNbaV0uY2FsbGVlKCkuZXhlY3V0YWJsZSgpOworICAgICAgICB9CisgICAgICAgIGRhdGEuY2Fz
ZXMuYXBwZW5kKFN3aXRjaENhc2UobV9ncmFwaC5mcmVlemUodGhpbmdUb0Nhc2VPbiksIGJsb2Nr
LmdldCgpKSk7CisgICAgICAgIGFkZFRvR3JhcGgoSnVtcCk7CisgICAgICAgIG1fY3VycmVudEJs
b2NrLT5kaWRMaW5rKCk7CisgICAgICAgIGxhbmRpbmdCbG9ja3MuYXBwZW5kKG1fY3VycmVudEJs
b2NrKTsKKyAgICB9CisgICAgCisgICAgUmVmUHRyPEJhc2ljQmxvY2s+IHNsb3dQYXRoQmxvY2sg
PSBhZG9wdFJlZigKKyAgICAgICAgbmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIG1fbnVtQXJndW1l
bnRzLCBtX251bUxvY2FscywgUE5hTikpOworICAgIGRhdGEuZmFsbFRocm91Z2ggPSBCcmFuY2hU
YXJnZXQoc2xvd1BhdGhCbG9jay5nZXQoKSk7CisgICAgbV9ncmFwaC5tX2Jsb2Nrcy5hcHBlbmQo
c2xvd1BhdGhCbG9jayk7CisgICAgc2xvd1BhdGhCbG9jay0+ZGlkTGluaygpOworICAgIHByZXBh
cmVUb1BhcnNlQmxvY2soKTsKKyAgICBtX2N1cnJlbnRCbG9jayA9IHNsb3dQYXRoQmxvY2suZ2V0
KCk7CisgICAgaWYgKGNvdWxkVGFrZVNsb3dQYXRoKSB7CisgICAgICAgIE5vZGUqIG15Q2FsbFRh
cmdldE5vZGUgPSBnZXREaXJlY3QoY2FsbGVlUmVnKTsKKyAgICAgICAgYWRkQ2FsbCgKKyAgICAg
ICAgICAgIHJlc3VsdE9wZXJhbmQsIGNhbGxPcCwgT3BJbmZvKCksIG15Q2FsbFRhcmdldE5vZGUs
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAorICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXQs
IHByZWRpY3Rpb24pOworICAgICAgICBhZGRUb0dyYXBoKEp1bXApOworICAgICAgICBsYW5kaW5n
QmxvY2tzLmFwcGVuZChtX2N1cnJlbnRCbG9jayk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYWRk
VG9HcmFwaChDaGVja0JhZENlbGwpOworICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CisgICAg
ICAgIGFkZFRvR3JhcGgoVW5yZWFjaGFibGUpOworICAgIH0KKyAgICAKKyAgICBSZWZQdHI8QmFz
aWNCbG9jaz4gY29udGludWF0aW9uQmxvY2sgPSBhZG9wdFJlZigKKyAgICAgICAgbmV3IEJhc2lj
QmxvY2soVUlOVF9NQVgsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgUE5hTikpOworICAg
IG1fZ3JhcGgubV9ibG9ja3MuYXBwZW5kKGNvbnRpbnVhdGlvbkJsb2NrKTsKKyAgICBtX2lubGlu
ZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGNvbnRpbnVh
dGlvbkJsb2NrLmdldCgpKSk7CisgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOworICAgIG1fY3Vy
cmVudEJsb2NrID0gY29udGludWF0aW9uQmxvY2suZ2V0KCk7CisgICAgCisgICAgZm9yICh1bnNp
Z25lZCBpID0gbGFuZGluZ0Jsb2Nrcy5zaXplKCk7IGktLTspCisgICAgICAgIGxhbmRpbmdCbG9j
a3NbaV0tPmxhc3QoKS0+dGFyZ2V0QmxvY2soKSA9IGNvbnRpbnVhdGlvbkJsb2NrLmdldCgpOwog
ICAgIAotICAgIC8vIEF0IHRoaXMgcG9pbnQgd2UgcmV0dXJuIGFuZCBjb250aW51ZSB0byBnZW5l
cmF0ZSBjb2RlIGZvciB0aGUgY2FsbGVyLCBidXQKLSAgICAvLyBpbiB0aGUgbmV3IGJhc2ljIGJs
b2NrLgogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xNjQ1LDcgKzE4MjMsNyBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5Q29uCiAKIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbigKICAgICBpbnQgcmVzdWx0T3BlcmFuZCwg
SW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24sIGludCByZWdpc3Rlck9mZnNldCwKLSAgICBpbnQg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKKyAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICAvLyBJZiB3ZSBldmVy
IGZpbmQgdGhhdCB3ZSBoYXZlIGEgbG90IG9mIGludGVybmFsIGZ1bmN0aW9ucyB0aGF0IHdlIHNw
ZWNpYWxpemUgZm9yLAogICAgIC8vIHRoZW4gd2Ugc2hvdWxkIHByb2JhYmx5IGhhdmUgc29tZSBz
b3J0IG9mIGhhc2h0YWJsZSBkaXNwYXRjaCwgb3IgbWF5YmUgZXZlbgpAQCAtMTY1NCw4ICsxODMy
LDYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRlcgogICAgIC8vIHdl
IGtub3cgYWJvdXQgaXMgc21hbGwgZW5vdWdoLCB0aGF0IGhhdmluZyBqdXN0IGEgbGluZWFyIGNh
c2NhZGUgb2YgaWYgc3RhdGVtZW50cwogICAgIC8vIGlzIGdvb2QgZW5vdWdoLgogICAgIAotICAg
IFVOVVNFRF9QQVJBTShwcmVkaWN0aW9uKTsgLy8gUmVtb3ZlIHRoaXMgb25jZSB3ZSBkbyBtb3Jl
IHRoaW5ncy4KLSAgICAKICAgICBpZiAoZnVuY3Rpb24tPmNsYXNzSW5mbygpID09IEFycmF5Q29u
c3RydWN0b3I6OmluZm8oKSkgewogICAgICAgICBpZiAoZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgp
ICE9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIyMDksMTMgKzIzODUsMTMgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgSlNDZWxsKiBjYWNoZWRG
dW5jdGlvbiA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LmpzQ2VsbC5nZXQoKTsKICAgICAgICAg
ICAgIGlmICghY2FjaGVkRnVuY3Rpb24gCiAgICAgICAgICAgICAgICAgfHwgbV9pbmxpbmVTdGFj
a1RvcC0+bV9wcm9maWxlZEJsb2NrLT5jb3VsZFRha2VTbG93Q2FzZShtX2N1cnJlbnRJbmRleCkK
LSAgICAgICAgICAgICAgICB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4
aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRGdW5jdGlvbikpIHsKKyAgICAgICAgICAgICAgICB8
fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudElu
ZGV4LCBCYWRDZWxsKSkgewogICAgICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGdldChWaXJ0dWFsUmVnaXN0ZXIoSlNTdGFj
azo6Q2FsbGVlKSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBGcm96
ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemUoY2FjaGVkRnVuY3Rpb24pOwogICAgICAg
ICAgICAgICAgIEFTU0VSVChjYWNoZWRGdW5jdGlvbi0+aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5m
bygpKSk7CiAgICAgICAgICAgICAgICAgTm9kZSogYWN0dWFsQ2FsbGVlID0gZ2V0KFZpcnR1YWxS
ZWdpc3RlcihKU1N0YWNrOjpDYWxsZWUpKTsKLSAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENo
ZWNrRnVuY3Rpb24sIE9wSW5mbyhmcm96ZW4pLCBhY3R1YWxDYWxsZWUpOworICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoQ2hlY2tDZWxsLCBPcEluZm8oZnJvemVuKSwgYWN0dWFsQ2FsbGVlKTsK
ICAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhmcm96ZW4pKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfY2FsbGVlKTsKQEAg
LTI4OTcsNyArMzA3Myw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQKICAgICAgICAgICAgIC8vIGFscmVhZHkgZ25hcmx5IGVub3VnaCBhcyBpdCBpcy4KICAgICAg
ICAgICAgIEFTU0VSVChwb2ludGVySXNGdW5jdGlvbihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5z
cGVjaWFsUG9pbnRlcikpOwogICAgICAgICAgICAgYWRkVG9HcmFwaCgKLSAgICAgICAgICAgICAg
ICBDaGVja0Z1bmN0aW9uLAorICAgICAgICAgICAgICAgIENoZWNrQ2VsbCwKICAgICAgICAgICAg
ICAgICBPcEluZm8obV9ncmFwaC5mcmVlemUoc3RhdGljX2Nhc3Q8SlNDZWxsKj4oYWN0dWFsUG9p
bnRlckZvcigKICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxv
Y2ssIGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnNwZWNpYWxQb2ludGVyKSkpKSwKICAgICAgICAg
ICAgICAgICBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpKSk7CkBAIC0zMzIyLDkgKzM0OTgsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxv
Y2soQmFzaWNCbG9jCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKLSNpZiAhQVNTRVJUX0RJ
U0FCTEVECi0gICAgYmxvY2stPmlzTGlua2VkID0gdHJ1ZTsKLSNlbmRpZgorICAgIGJsb2NrLT5k
aWRMaW5rKCk7CiB9CiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmxpbmtCbG9ja3MoVmVjdG9yPFVu
bGlua2VkQmxvY2s+JiB1bmxpbmtlZEJsb2NrcywgVmVjdG9yPEJhc2ljQmxvY2sqPiYgcG9zc2li
bGVUYXJnZXRzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVh
ZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05MCw4ICs5MCwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBub2RlLT5j
aGlsZHJlbi5zZXRDaGlsZDEoRWRnZSgpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOgotICAgICAgICAgICAgICAgICAgICBpZiAoIW5v
ZGUtPmNoaWxkMSgpKQorICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmNoaWxkMSgpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLT5vcCgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgUGhpOgogICAgICAgICAgICAgICAgICAgICBjYXNlIFNl
dEFyZ3VtZW50OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmgJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNiArMTQ0LDcgQEAgdm9pZCBjbG9iYmVy
aXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgRmlhdEludDUyOgogICAgIGNh
c2UgTWFrZVJvcGU6CiAgICAgY2FzZSBWYWx1ZVRvSW50MzI6CisgICAgY2FzZSBHZXRFeGVjdXRh
YmxlOgogICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUpKTsKICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAKQEAgLTIzOSwxMiArMjQwLDggQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZQogICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUsIG5vZGUtPmFyaXRoTW9kZSgp
KSk7CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgY2FzZSBDaGVja0Z1bmN0aW9uOgot
ICAgICAgICBkZWYoUHVyZVZhbHVlKENoZWNrRnVuY3Rpb24sIEFkamFjZW5jeUxpc3QoQWRqYWNl
bmN5TGlzdDo6Rml4ZWQsIG5vZGUtPmNoaWxkMSgpKSwgbm9kZS0+ZnVuY3Rpb24oKSkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgICAgIAotICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOgotICAgICAg
ICBkZWYoUHVyZVZhbHVlKG5vZGUsIG5vZGUtPmV4ZWN1dGFibGUoKSkpOworICAgIGNhc2UgQ2hl
Y2tDZWxsOgorICAgICAgICBkZWYoUHVyZVZhbHVlKENoZWNrQ2VsbCwgQWRqYWNlbmN5TGlzdChB
ZGphY2VuY3lMaXN0OjpGaXhlZCwgbm9kZS0+Y2hpbGQxKCkpLCBub2RlLT5jZWxsT3BlcmFuZCgp
KSk7CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQ
b2ludGVyOgpAQCAtMjYzLDYgKzI2MCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUKICAgICBjYXNlIFN3aXRjaDoKICAgICBjYXNlIFRocm93OgogICAgIGNhc2Ug
Rm9yY2VPU1JFeGl0OgorICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgIGNhc2UgUmV0dXJuOgog
ICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5n
UGhhc2UuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDggKzE0
Miw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlIENoZWNrRnVuY3Rpb246IHsKLSAgICAg
ICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpICE9
IG5vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkpCisgICAgICAgICAgICBjYXNlIENoZWNrQ2VsbDog
eworICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZh
bHVlKCkgIT0gbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKSkKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOwogICAg
ICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBA
IGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEJ5SWRG
bHVzaDoKICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToK
LSAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToKKyAgICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAg
Y2FzZSBHZXRCdXR0ZXJmbHk6CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgR2V0U2Nv
cGU6CkBAIC0xMDUsNyArMTA1LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlKQogICAgIGNhc2UgUHV0R2xvYmFsVmFyOgogICAgIGNhc2UgVmFyaWFibGVXYXRjaHBvaW50
OgogICAgIGNhc2UgVmFySW5qZWN0aW9uV2F0Y2hwb2ludDoKLSAgICBjYXNlIENoZWNrRnVuY3Rp
b246CisgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNo
cG9pbnQ6CiAgICAgY2FzZSBSZWdFeHBFeGVjOgogICAgIGNhc2UgUmVnRXhwVGVzdDoKQEAgLTE5
Niw2ICsxOTYsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAg
Y2FzZSBHZXREaXJlY3RQbmFtZToKICAgICBjYXNlIEZpYXRJbnQ1MjoKICAgICBjYXNlIEJvb2xl
YW5Ub051bWJlcjoKKyAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEcml2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRHJpdmVyLmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSw5IEBA
IHN0YXRpYyBDb21waWxhdGlvblJlc3VsdCBjb21waWxlSW1wbCgKICAgICAgICAgdm0uZ2V0Q1RJ
U3R1Yih2aXJ0dWFsQ29uc3RydWN0VGhhdFByZXNlcnZlc1JlZ3NUaHVua0dlbmVyYXRvcik7CiAg
ICAgfQogICAgIAorICAgIGlmICh2bS5jYWxsRWRnZUxvZykKKyAgICAgICAgdm0uY2FsbEVkZ2VM
b2ctPnByb2Nlc3NMb2coKTsKKyAgICAKICAgICBSZWZQdHI8UGxhbj4gcGxhbiA9IGFkb3B0UmVm
KAogICAgICAgICBuZXcgUGxhbihjb2RlQmxvY2ssIHByb2ZpbGVkREZHQ29kZUJsb2NrLCBtb2Rl
LCBvc3JFbnRyeUJ5dGVjb2RlSW5kZXgsIG11c3RIYW5kbGVWYWx1ZXMpKTsKICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24g
MTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzM2LDYgKzczNiwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkKICAg
ICAgICAgICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU3dpdGNoQ2VsbDoKKyAgICAg
ICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUNlbGwoKSkKKyAg
ICAgICAgICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICAgICAgLy8gZWxzZSBpdCdzIGZpbmUgZm9yIHRoaXMgdG8gaGF2ZSBVbnR5cGVkVXNl
OyB3ZSB3aWxsIGhhbmRsZSB0aGlzIGJ5IGp1c3QgbWFraW5nCisgICAgICAgICAgICAgICAgLy8g
bm9uLWNlbGxzIHRha2UgdGhlIGRlZmF1bHQgY2FzZS4KKyAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC04OTgsMTMg
KzkwNCwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAg
ICAgICBjYXNlIENoZWNrRXhlY3V0YWJsZTogeworICAgICAgICBjYXNlIEdldEV4ZWN1dGFibGU6
IHsKICAgICAgICAgICAgIGZpeEVkZ2U8RnVuY3Rpb25Vc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBD
aGVja1N0cnVjdHVyZToKLSAgICAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOgorICAgICAgICBjYXNl
IENoZWNrQ2VsbDoKICAgICAgICAgY2FzZSBDaGVja0hhc0luc3RhbmNlOgogICAgICAgICBjYXNl
IENyZWF0ZVRoaXM6CiAgICAgICAgIGNhc2UgR2V0QnV0dGVyZmx5OiB7CkBAIC0xMTUwLDYgKzEx
NTYsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFRocm93UmVmZXJlbmNlRXJyb3I6CiAgICAg
ICAgIGNhc2UgQ291bnRFeGVjdXRpb246CiAgICAgICAgIGNhc2UgRm9yY2VPU1JFeGl0OgorICAg
ICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICAgICAgY2FzZSBDaGVja1dhdGNoZG9nVGltZXI6
CiAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5
TG9jYWw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNp
b24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAgR3JhcGg6OkdyYXBoKFZNJiB2bSwgUGxhbiYg
cGxhbiwgTG9uZ0xpdgogICAgICwgbV9mb3JtKExvYWRTdG9yZSkKICAgICAsIG1fdW5pZmljYXRp
b25TdGF0ZShMb2NhbGx5VW5pZmllZCkKICAgICAsIG1fcmVmQ291bnRTdGF0ZShFdmVyeXRoaW5n
SXNMaXZlKQorICAgICwgbV9zaG91bGRQcm9maWxlKGZhbHNlKQogewogICAgIEFTU0VSVChtX3By
b2ZpbGVkQmxvY2spOwogICAgIApAQCAtMjIyLDI0ICsyMjMsMTkgQEAgdm9pZCBHcmFwaDo6ZHVt
cChQcmludFN0cmVhbSYgb3V0LCBjb25zdAogICAgICAgICBvdXQucHJpbnQoY29tbWEsIGluQ29u
dGV4dCgqbm9kZS0+c3RydWN0dXJlKCksIGNvbnRleHQpKTsKICAgICBpZiAobm9kZS0+aGFzVHJh
bnNpdGlvbigpKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsIHBvaW50ZXJEdW1wSW5Db250ZXh0
KG5vZGUtPnRyYW5zaXRpb24oKSwgY29udGV4dCkpOwotICAgIGlmIChub2RlLT5oYXNGdW5jdGlv
bigpKSB7Ci0gICAgICAgIG91dC5wcmludChjb21tYSwgImZ1bmN0aW9uKCIsIHBvaW50ZXJEdW1w
KG5vZGUtPmZ1bmN0aW9uKCkpLCAiLCAiKTsKLSAgICAgICAgaWYgKG5vZGUtPmZ1bmN0aW9uKCkt
PnZhbHVlKCkuaXNDZWxsKCkKLSAgICAgICAgICAgICYmIG5vZGUtPmZ1bmN0aW9uKCktPnZhbHVl
KCkuYXNDZWxsKCktPmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpIHsKLSAgICAgICAgICAg
IEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihub2RlLT5mdW5jdGlv
bigpLT52YWx1ZSgpLmFzQ2VsbCgpKTsKLSAgICAgICAgICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0
RnVuY3Rpb24oKSkKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQoIjxob3N0IGZ1bmN0aW9uPiIp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG91dC5wcmludChGdW5jdGlvbkV4
ZWN1dGFibGVEdW1wKGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKSkpOwotICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgIG91dC5wcmludCgiPG5vdCBKU0Z1bmN0aW9uPiIpOwotICAgICAgICBvdXQu
cHJpbnQoIikiKTsKLSAgICB9Ci0gICAgaWYgKG5vZGUtPmhhc0V4ZWN1dGFibGUoKSkgewotICAg
ICAgICBpZiAobm9kZS0+ZXhlY3V0YWJsZSgpLT5pbmhlcml0cyhGdW5jdGlvbkV4ZWN1dGFibGU6
OmluZm8oKSkpCi0gICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJleGVjdXRhYmxlKCIsIEZ1
bmN0aW9uRXhlY3V0YWJsZUR1bXAoanNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG5vZGUtPmV4
ZWN1dGFibGUoKSkpLCAiKSIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBvdXQucHJpbnQo
Y29tbWEsICJleGVjdXRhYmxlKG5vdCBmdW5jdGlvbjogIiwgUmF3UG9pbnRlcihub2RlLT5leGVj
dXRhYmxlKCkpLCAiKSIpOworICAgIGlmIChub2RlLT5oYXNDZWxsT3BlcmFuZCgpKSB7CisgICAg
ICAgIG91dC5wcmludChjb21tYSwgcG9pbnRlckR1bXAobm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFs
dWUoKS5hc0NlbGwoKSkpOworICAgICAgICBpZiAobm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUo
KS5pc0NlbGwoKSkgeworICAgICAgICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFudChub2RlLT5jZWxs
T3BlcmFuZCgpLT52YWx1ZSgpLmFzQ2VsbCgpKTsKKyAgICAgICAgICAgIGlmIChFeGVjdXRhYmxl
QmFzZSogZXhlY3V0YWJsZSA9IHZhcmlhbnQuZXhlY3V0YWJsZSgpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgICAgICAgICAgICAg
IG91dC5wcmludChjb21tYSwgIjxob3N0IGZ1bmN0aW9uPiIpOworICAgICAgICAgICAgICAgIGVs
c2UgaWYgKEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0ganNEeW5hbWlj
Q2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKSkKKyAgICAgICAgICAgICAgICAg
ICAgb3V0LnByaW50KGNvbW1hLCBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wKGZ1bmN0aW9uRXhlY3V0
YWJsZSkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgb3V0LnBy
aW50KGNvbW1hLCAiPG5vbi1mdW5jdGlvbiBleGVjdXRhYmxlPiIpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CiAgICAgfQogICAgIGlmIChub2RlLT5oYXNGdW5jdGlvbkRlY2xJbmRleCgpKSB7
CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG1fY29kZUJsb2NrLT5m
dW5jdGlvbkRlY2wobm9kZS0+ZnVuY3Rpb25EZWNsSW5kZXgoKSk7CkBAIC05ODUsMTAgKzk4MSw2
IEBAIHZvaWQgR3JhcGg6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHYKICAgICAgICAgICAg
IE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAgICAgICBjYXNlIENoZWNrRXhlY3V0
YWJsZToKLSAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlQ
b2ludGVyKG5vZGUtPmV4ZWN1dGFibGUoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IG5vZGUtPnN0cnVjdHVyZVNldCgpLnNpemUoKTsgaS0t
OykKICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFJlYWRPbmx5
UG9pbnRlcihub2RlLT5zdHJ1Y3R1cmVTZXQoKVtpXSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2MSw2ICs3NjEsNyBAQCBwdWJs
aWM6CiAgICAgR3JhcGhGb3JtIG1fZm9ybTsKICAgICBVbmlmaWNhdGlvblN0YXRlIG1fdW5pZmlj
YXRpb25TdGF0ZTsKICAgICBSZWZDb3VudFN0YXRlIG1fcmVmQ291bnRTdGF0ZTsKKyAgICBib29s
IG1fc2hvdWxkUHJvZmlsZTsKIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBoYW5kbGVTdWNjZXNz
b3IoVmVjdG9yPEJhc2ljQmxvY2sqLCAxNj4mIHdvcmtsaXN0LCBCYXNpY0Jsb2NrKiwgQmFzaWNC
bG9jayogc3VjY2Vzc29yKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNw
cAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMyw5IEBAIHZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYgb3V0LCBTd2kKICAgICBjYXNlIFN3aXRjaFN0cmluZzoKICAgICAgICAg
b3V0LnByaW50KCJTd2l0Y2hTdHJpbmciKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU3dp
dGNoQ2VsbDoKKyAgICAgICAgb3V0LnByaW50KCJTd2l0Y2hDZWxsIik7CisgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTYwLDcgKzE2
MCw4IEBAIHN0cnVjdCBTd2l0Y2hDYXNlIHsKIGVudW0gU3dpdGNoS2luZCB7CiAgICAgU3dpdGNo
SW1tLAogICAgIFN3aXRjaENoYXIsCi0gICAgU3dpdGNoU3RyaW5nCisgICAgU3dpdGNoU3RyaW5n
LAorICAgIFN3aXRjaENlbGwKIH07CiAKIHN0cnVjdCBTd2l0Y2hEYXRhIHsKQEAgLTE4NSw2ICsx
ODYsNyBAQCBzdHJ1Y3QgU3dpdGNoRGF0YSB7CiAvLyBkaXN0aW5ndWlzaGVzIGFuIGltbWVkaWF0
ZSB2YWx1ZSAodHlwaWNhbGx5IGFuIGluZGV4IGludG8gYSBDb2RlQmxvY2sgZGF0YSBzdHJ1Y3R1
cmUgLSAKIC8vIGEgY29uc3RhbnQgaW5kZXgsIGFyZ3VtZW50LCBvciBpZGVudGlmaWVyKSBmcm9t
IGEgTm9kZSouCiBzdHJ1Y3QgT3BJbmZvIHsKKyAgICBPcEluZm8oKSA6IG1fdmFsdWUoMCkgeyB9
CiAgICAgZXhwbGljaXQgT3BJbmZvKGludDMyX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2Fz
dDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKHVpbnQzMl90IHZh
bHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkpIHsgfQogI2lmIE9T
KERBUldJTikgfHwgVVNFKEpTVkFMVUU2NCkKQEAgLTEwNDQsOSArMTA0NiwxMSBAQCBzdHJ1Y3Qg
Tm9kZSB7CiAgICAgICAgIG1fb3BJbmZvMiA9IHByZWRpY3Rpb247CiAgICAgfQogICAgIAotICAg
IGJvb2wgY2FuQmVLbm93bkZ1bmN0aW9uKCkKKyAgICBib29sIGhhc0NlbGxPcGVyYW5kKCkKICAg
ICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIEFsbG9jYXRpb25Qcm9m
aWxlV2F0Y2hwb2ludDoKKyAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgICAgIGNhc2UgTmF0
aXZlQ29uc3RydWN0OgogICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTEwNTUsNTQgKzEwNTksMTYgQEAgc3RydWN0IE5vZGUgewogICAgICAgICB9
CiAgICAgfQogCi0gICAgYm9vbCBoYXNLbm93bkZ1bmN0aW9uKCkKKyAgICBGcm96ZW5WYWx1ZSog
Y2VsbE9wZXJhbmQoKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChvcCgpKSB7Ci0gICAgICAgIGNh
c2UgTmF0aXZlQ29uc3RydWN0OgotICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6Ci0gICAgICAgICAg
ICByZXR1cm4gKGJvb2wpbV9vcEluZm87Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgSlNGdW5jdGlvbioga25v
d25GdW5jdGlvbigpCi0gICAgewotICAgICAgICBBU1NFUlQoY2FuQmVLbm93bkZ1bmN0aW9uKCkp
OwotICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEpTRnVuY3Rpb24qPihtX29wSW5mbyk7Ci0g
ICAgfQotCi0gICAgdm9pZCBnaXZlS25vd25GdW5jdGlvbihKU0Z1bmN0aW9uKiBjYWxsRGF0YSkg
Ci0gICAgewotICAgICAgICBBU1NFUlQoY2FuQmVLbm93bkZ1bmN0aW9uKCkpOwotICAgICAgICBt
X29wSW5mbyA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGNhbGxEYXRhKTsKLSAgICB9Ci0KLSAg
ICBib29sIGhhc0Z1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAob3AoKSkgewotICAg
ICAgICBjYXNlIENoZWNrRnVuY3Rpb246Ci0gICAgICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVX
YXRjaHBvaW50OgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBGcm96ZW5W
YWx1ZSogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGhhc0Z1bmN0aW9uKCkpOwor
ICAgICAgICBBU1NFUlQoaGFzQ2VsbE9wZXJhbmQoKSk7CiAgICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PEZyb3plblZhbHVlKj4obV9vcEluZm8pOwogICAgIH0KICAgICAKLSAgICBib29s
IGhhc0V4ZWN1dGFibGUoKQorICAgIHZvaWQgc2V0Q2VsbE9wZXJhbmQoRnJvemVuVmFsdWUqIHZh
bHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ2hlY2tFeGVjdXRhYmxlOwotICAg
IH0KLSAgICAKLSAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSgpCi0gICAgewotICAgICAg
ICByZXR1cm4ganNDYXN0PEV4ZWN1dGFibGVCYXNlKj4ocmVpbnRlcnByZXRfY2FzdDxKU0NlbGwq
PihtX29wSW5mbykpOworICAgICAgICBBU1NFUlQoaGFzQ2VsbE9wZXJhbmQoKSk7CisgICAgICAg
IG1fb3BJbmZvID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4odmFsdWUpOwogICAgIH0KICAgICAK
ICAgICBib29sIGhhc1ZhcmlhYmxlV2F0Y2hwb2ludFNldCgpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw3ICsx
NTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oUHV0QnlJ
ZEZsdXNoLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVy
c1dvcmxkKSBcCiAgICAgbWFjcm8oUHV0QnlJZERpcmVjdCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5v
ZGVDbG9iYmVyc1dvcmxkKSBcCiAgICAgbWFjcm8oQ2hlY2tTdHJ1Y3R1cmUsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKLSAgICBtYWNybyhDaGVja0V4ZWN1dGFibGUsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
KyAgICBtYWNybyhHZXRFeGVjdXRhYmxlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhQdXRT
dHJ1Y3R1cmUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhBbGxvY2F0ZVByb3BlcnR5
U3RvcmFnZSwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRTdG9yYWdlKSBcCiAgICAgbWFj
cm8oUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1
bHRTdG9yYWdlKSBcCkBAIC0xODYsNyArMTg2LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewogICAgIG1hY3JvKFZhcmlhYmxlV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkg
XAogICAgIG1hY3JvKFZhckluamVjdGlvbldhdGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
ICAgICBtYWNybyhGdW5jdGlvblJlZW50cnlXYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBc
Ci0gICAgbWFjcm8oQ2hlY2tGdW5jdGlvbiwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3Jv
KENoZWNrQ2VsbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKENoZWNrQmFkQ2VsbCwg
Tm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2lu
dCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrSW5Cb3VuZHMsIE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Bo
YW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAJKHJldmlz
aW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbUNhbm9u
aWNhbGl6YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDggKzkyLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnJlbW92ZUVkZ2Uo
aS0tKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0NoZWNrKCk7CiAgICAg
ICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9t
UmVtb3ZhbFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1BoYW50b21SZW1vdmFsUGhhc2UuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21SZW1vdmFsUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjUsNiArMTI1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRy
ZW4uaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2Nh
dG9yLmZyZWUobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICB9
CkBAIC0xNDIsNiArMTQzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgY2hh
bmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgICAgICAgICAgfQpAQCAtMTQ5LDggKzE1MSwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNlIEhhcmRQ
aGFudG9tOiB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5
KCkpCisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTcyMTc3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw3ICsxOTYsOCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIEdl
dEdldHRlclNldHRlckJ5T2Zmc2V0OiB7CisgICAgICAgIGNhc2UgR2V0R2V0dGVyU2V0dGVyQnlP
ZmZzZXQ6CisgICAgICAgIGNhc2UgR2V0RXhlY3V0YWJsZTogewogICAgICAgICAgICAgY2hhbmdl
ZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNDZWxsT3RoZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KQEAgLTY0Myw4ICs2NDQsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEZvcmNl
T1NSRXhpdDoKICAgICAgICAgY2FzZSBTZXRBcmd1bWVudDoKICAgICAgICAgY2FzZSBDaGVja1N0
cnVjdHVyZToKLSAgICAgICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6Ci0gICAgICAgIGNhc2UgQ2hl
Y2tGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBDaGVja0NlbGw6CisgICAgICAgIGNhc2UgQ2hlY2tC
YWRDZWxsOgogICAgICAgICBjYXNlIFB1dFN0cnVjdHVyZToKICAgICAgICAgY2FzZSBUZWFyT2Zm
QWN0aXZhdGlvbjoKICAgICAgICAgY2FzZSBUZWFyT2ZmQXJndW1lbnRzOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDE3MjE3
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0
U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgUHV0QnlJZEZsdXNoOgogICAgIGNhc2UgUHV0QnlJZERp
cmVjdDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgotICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxl
OgorICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNlIEdldEJ1dHRlcmZseToKICAgICBj
YXNlIENoZWNrQXJyYXk6CiAgICAgY2FzZSBBcnJheWlmeToKQEAgLTE3NSw3ICsxNzUsOCBAQCBi
b29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBQdXRHbG9i
YWxWYXI6CiAgICAgY2FzZSBWYXJpYWJsZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBWYXJJbmplY3Rp
b25XYXRjaHBvaW50OgotICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKKyAgICBjYXNlIENoZWNrQ2Vs
bDoKKyAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0
Y2hwb2ludDoKICAgICBjYXNlIFJlZ0V4cEV4ZWM6CiAgICAgY2FzZSBSZWdFeHBUZXN0OgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODksNiArNjg5
LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKIAogICAgIG1f
aml0LmVtaXRTdG9yZUNvZGVPcmlnaW4obm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAKKyAg
ICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZv
KCk7CisKKyAgICBpZiAobV9qaXQuZ3JhcGgoKS5tX3Nob3VsZFByb2ZpbGUgJiYgIW1fc3RhdGUu
Zm9yTm9kZShjYWxsZWVFZGdlKS5tX3ZhbHVlKSB7CisgICAgICAgIG1faml0LnZtKCkuY2FsbEVk
Z2VMb2ctPmVtaXRMb2dDb2RlKAorICAgICAgICAgICAgbV9qaXQsIGNhbGxMaW5rSW5mby0+Y2Fs
bEVkZ2VQcm9maWxlLCBjYWxsZWUuanNWYWx1ZVJlZ3MoKSk7CisgICAgfQorICAgIAogICAgIHNs
b3dQYXRoLmFwcGVuZChicmFuY2hOb3RDZWxsKGNhbGxlZS5qc1ZhbHVlUmVncygpKSk7CiAgICAg
c2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFB0cldpdGhQYXRjaChNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIGNhbGxlZVBheWxvYWRHUFIsIHRhcmdldFRvQ2hlY2spKTsKICAgICBtX2ppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNhbGxlZVBheWxvYWRHUFIsIE9CSkVDVF9P
RkZTRVRPRihKU0Z1bmN0aW9uLCBtX3Njb3BlKSksIHJlc3VsdFBheWxvYWRHUFIpOwpAQCAtNzEz
LDcgKzcyMCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAg
ICAgICAgbV9qaXQubW92ZShjYWxsZWVQYXlsb2FkR1BSLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAg
ICAgIG1faml0Lm1vdmUoY2FsbGVlVGFnR1BSLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgfQotICAg
IENhbGxMaW5rSW5mbyogaW5mbyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8o
KTsKICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGluZm8pLCBH
UFJJbmZvOjpyZWdUMik7CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgc2xvd0NhbGwgPSBtX2ppdC5u
ZWFyQ2FsbCgpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYy
Niw3ICs2MjYsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWlzY1N0cmljdEVxCiAK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiB7Ci0KICAgICBib29s
IGlzQ2FsbCA9IG5vZGUtPm9wKCkgPT0gQ2FsbDsKICAgICBpZiAoIWlzQ2FsbCkKICAgICAgICAg
REZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5vcCgpID09IENvbnN0cnVjdCk7
CkBAIC02NzAsNiArNjY5LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUq
IG5vZGUKIAogICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4obm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKICAgICAKKyAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IG1faml0LmNvZGVC
bG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKKyAgICAKKyAgICBpZiAobV9qaXQuZ3JhcGgoKS5t
X3Nob3VsZFByb2ZpbGUgJiYgIW1fc3RhdGUuZm9yTm9kZShjYWxsZWVFZGdlKS5tX3ZhbHVlKQor
ICAgICAgICBtX2ppdC52bSgpLmNhbGxFZGdlTG9nLT5lbWl0TG9nQ29kZShtX2ppdCwgY2FsbExp
bmtJbmZvLT5jYWxsRWRnZVByb2ZpbGUsIGNhbGxlZUdQUik7CisKICAgICBzbG93UGF0aCA9IG1f
aml0LmJyYW5jaFB0cldpdGhQYXRjaChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxlZUdQ
UiwgdGFyZ2V0VG9DaGVjaywgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoMCkpOwogCiAg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjYWxsZWVHUFIsIE9CSkVD
VF9PRkZTRVRPRihKU0Z1bmN0aW9uLCBtX3Njb3BlKSksIHJlc3VsdEdQUik7CkBAIC02ODIsNyAr
Njg2LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgIHNs
b3dQYXRoLmxpbmsoJm1faml0KTsKICAgICAKICAgICBtX2ppdC5tb3ZlKGNhbGxlZUdQUiwgR1BS
SW5mbzo6cmVnVDApOyAvLyBDYWxsZWUgbmVlZHMgdG8gYmUgaW4gcmVnVDAKLSAgICBDYWxsTGlu
a0luZm8qIGNhbGxMaW5rSW5mbyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8o
KTsKICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5r
SW5mbyksIEdQUkluZm86OnJlZ1QyKTsgLy8gTGluayBpbmZvIG5lZWRzIHRvIGJlIGluIHJlZ1Qy
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgc2xvd0NhbGwgPSBtX2ppdC5uZWFyQ2FsbCgpOwogICAg
IApAQCAtMzc4NCwxOCArMzc4NywyMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aChub2RlKTsKICAgICAgICAg
YnJlYWs7CiAgICAgICAgIAotICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjogewotICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBmdW5jdGlvbih0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkRnVuY3Rpb24sIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KGZ1bmN0aW9uLmdwcigpKSwgbm9kZS0+Y2hpbGQxKCksIG1faml0LmJyYW5jaFdlYWtQdHIoSklU
Q29tcGlsZXI6Ok5vdEVxdWFsLCBmdW5jdGlvbi5ncHIoKSwgbm9kZS0+ZnVuY3Rpb24oKS0+dmFs
dWUoKS5hc0NlbGwoKSkpOworICAgIGNhc2UgQ2hlY2tDZWxsOiB7CisgICAgICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIGNlbGwodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEJhZENlbGwsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGNlbGwuZ3ByKCkp
LCBub2RlLT5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6Tm90RXF1
YWwsIGNlbGwuZ3ByKCksIG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuYXNDZWxsKCkpKTsK
ICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAg
Ci0gICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6IHsKKyAgICBjYXNlIEdldEV4ZWN1dGFibGU6IHsK
ICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwotICAgICAgICBzcGVjdWxhdGVDZWxsVHlwZShub2RlLT5jaGlsZDEoKSwgZnVuY3Rpb24u
Z3ByKCksIFNwZWNGdW5jdGlvbiwgSlNGdW5jdGlvblR5cGUpOwotICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZEV4ZWN1dGFibGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGZ1bmN0aW9u
LmdwcigpKSwgbm9kZS0+Y2hpbGQxKCksIG1faml0LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6
Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhmdW5jdGlvbi5ncHIoKSwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCBub2RlLT5leGVjdXRhYmxlKCkpKTsKLSAgICAgICAg
bm9SZXN1bHQobm9kZSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2Us
IGZ1bmN0aW9uKTsKKyAgICAgICAgR1BSUmVnIGZ1bmN0aW9uR1BSID0gZnVuY3Rpb24uZ3ByKCk7
CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIHNwZWN1
bGF0ZUNlbGxUeXBlKG5vZGUtPmNoaWxkMSgpLCBmdW5jdGlvbkdQUiwgU3BlY0Z1bmN0aW9uLCBK
U0Z1bmN0aW9uVHlwZSk7CisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJl
c3MoZnVuY3Rpb25HUFIsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwgcmVzdWx0
R1BSKTsKKyAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgICAgIApAQCAtNDk5MCw3ICs0OTk2LDggQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAg
ICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CiAgICAgY2FzZSBGaWF0SW50NTI6Ci0gICAgICAgIERG
R19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiVW5leHBlY3RlZCBGVEwgbm9kZSIpOworICAg
IGNhc2UgQ2hlY2tCYWRDZWxsOgorICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9k
ZSwgIlVuZXhwZWN0ZWQgbm9kZSIpOwogICAgICAgICBicmVhazsKICAgICB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0lu
amVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjEsNiArNjEsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghT3B0aW9uczo6ZW5hYmxlT1NS
RW50cnlUb0ZUTCgpKQogICAgICAgICAgICAgbGV2ZWwgPSBGVEw6OkNhbkNvbXBpbGU7CiAgICAg
ICAgIAorICAgICAgICBtX2dyYXBoLm1fc2hvdWxkUHJvZmlsZSA9IHRydWU7CisgICAgICAgIAog
ICAgICAgICBJbnNlcnRpb25TZXQgaW5zZXJ0aW9uU2V0KG1fZ3JhcGgpOwogICAgICAgICBmb3Ig
KEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgt
LTspIHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9j
a0luZGV4KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hhYmxlU3Ry
dWN0dXJlV2F0Y2hpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdXYXRjaGFibGVTdHJ1Y3R1cmVXYXRjaGluZ1BoYXNlLmNwcAkocmV2aXNpb24g
MTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXYXRjaGFibGVTdHJ1Y3R1
cmVXYXRjaGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsMTAgKzYyLDYgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAg
ICAgICAgICAgICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOgotICAgICAgICAgICAgICAgICAgICB0
cnlXYXRjaChub2RlLT5leGVjdXRhYmxlKCktPnN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY2FzZSBDaGVj
a1N0cnVjdHVyZToKICAgICAgICAgICAgICAgICAgICAgdHJ5V2F0Y2gobm9kZS0+c3RydWN0dXJl
U2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTA0LDcgKzEwNCw4IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGls
ZShOb2RlKiAKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CiAgICAgY2FzZSBJbnZhbGlkYXRpb25Q
b2ludDoKICAgICBjYXNlIFN0cmluZ0NoYXJBdDoKLSAgICBjYXNlIENoZWNrRnVuY3Rpb246Cisg
ICAgY2FzZSBDaGVja0NlbGw6CisgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgY2FzZSBTdHJp
bmdDaGFyQ29kZUF0OgogICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2Fz
ZSBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgpAQCAtMTI2LDcgKzEyNyw3IEBAIGlubGluZSBD
YXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIENvbnN0YW50U3RvcmFn
ZVBvaW50ZXI6CiAgICAgY2FzZSBDaGVjazoKICAgICBjYXNlIENvdW50RXhlY3V0aW9uOgotICAg
IGNhc2UgQ2hlY2tFeGVjdXRhYmxlOgorICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNl
IEdldFNjb3BlOgogICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OgogICAgIGNh
c2UgQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkOgpAQCAtMzI2LDYgKzMyNyw3IEBAIGlubGluZSBD
YXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICAgICAgc3dpdGNoIChub2RlLT5z
d2l0Y2hEYXRhKCktPmtpbmQpIHsKICAgICAgICAgY2FzZSBTd2l0Y2hJbW06CiAgICAgICAgIGNh
c2UgU3dpdGNoQ2hhcjoKKyAgICAgICAgY2FzZSBTd2l0Y2hDZWxsOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0u
Y3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDY4LDExICs0NjgsMTQgQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICAgICAgICAgIGNvbXBpbGVD
aGVja1N0cnVjdHVyZSgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2hlY2tG
dW5jdGlvbjoKLSAgICAgICAgICAgIGNvbXBpbGVDaGVja0Z1bmN0aW9uKCk7CisgICAgICAgIGNh
c2UgQ2hlY2tDZWxsOgorICAgICAgICAgICAgY29tcGlsZUNoZWNrQ2VsbCgpOwogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOgotICAgICAgICAgICAgY29t
cGlsZUNoZWNrRXhlY3V0YWJsZSgpOworICAgICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKKyAgICAg
ICAgICAgIGNvbXBpbGVDaGVja0JhZENlbGwoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEdldEV4ZWN1dGFibGU6CisgICAgICAgICAgICBjb21waWxlR2V0RXhlY3V0YWJsZSgp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToK
ICAgICAgICAgICAgIGNvbXBpbGVBcnJheWlmeVRvU3RydWN0dXJlKCk7CkBAIC0xNzQzLDI2ICsx
NzQ2LDI1IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwg
bGFzdE5leHQpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGNvbXBpbGVDaGVja0Z1bmN0aW9uKCkK
KyAgICB2b2lkIGNvbXBpbGVDaGVja0NlbGwoKQogICAgIHsKICAgICAgICAgTFZhbHVlIGNlbGwg
PSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAKICAgICAgICAgc3BlY3VsYXRl
KAotICAgICAgICAgICAgQmFkRnVuY3Rpb24sIGpzVmFsdWVWYWx1ZShjZWxsKSwgbV9ub2RlLT5j
aGlsZDEoKS5ub2RlKCksCi0gICAgICAgICAgICBtX291dC5ub3RFcXVhbChjZWxsLCB3ZWFrUG9p
bnRlcihtX25vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkuYXNDZWxsKCkpKSk7CisgICAgICAgICAg
ICBCYWRDZWxsLCBqc1ZhbHVlVmFsdWUoY2VsbCksIG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpLAor
ICAgICAgICAgICAgbV9vdXQubm90RXF1YWwoY2VsbCwgd2Vha1BvaW50ZXIobV9ub2RlLT5jZWxs
T3BlcmFuZCgpLT52YWx1ZSgpLmFzQ2VsbCgpKSkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNv
bXBpbGVDaGVja0JhZENlbGwoKQorICAgIHsKKyAgICAgICAgdGVybWluYXRlKEJhZENlbGwpOwog
ICAgIH0KICAgICAKLSAgICB2b2lkIGNvbXBpbGVDaGVja0V4ZWN1dGFibGUoKQorICAgIHZvaWQg
Y29tcGlsZUdldEV4ZWN1dGFibGUoKQogICAgIHsKICAgICAgICAgTFZhbHVlIGNlbGwgPSBsb3dD
ZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAKICAgICAgICAgc3BlY3VsYXRlRnVuY3Rp
b24obV9ub2RlLT5jaGlsZDEoKSwgY2VsbCk7Ci0gICAgICAgIAotICAgICAgICBzcGVjdWxhdGUo
Ci0gICAgICAgICAgICBCYWRFeGVjdXRhYmxlLCBqc1ZhbHVlVmFsdWUoY2VsbCksIG1fbm9kZS0+
Y2hpbGQxKCkubm9kZSgpLAotICAgICAgICAgICAgbV9vdXQubm90RXF1YWwoCi0gICAgICAgICAg
ICAgICAgbV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTRnVuY3Rpb25fZXhlY3V0YWJsZSks
Ci0gICAgICAgICAgICAgICAgd2Vha1BvaW50ZXIobV9ub2RlLT5leGVjdXRhYmxlKCkpKSk7Cisg
ICAgICAgIHNldEpTVmFsdWUobV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTRnVuY3Rpb25f
ZXhlY3V0YWJsZSkpOwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVBcnJheWlmeVRvU3Ry
dWN0dXJlKCkKQEAgLTM5MTgsMTAgKzM5MjAsMzYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgY2FzZSBTd2l0Y2hTdHJpbmc6Cisg
ICAgICAgIGNhc2UgU3dpdGNoU3RyaW5nOiB7CiAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFw
aCwgbV9ub2RlLCAiVW5pbXBsZW1lbnRlZCIpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIFN3aXRj
aENlbGwgeworICAgICAgICAgICAgTFZhbHVlIGNlbGw7CisgICAgICAgICAgICBzd2l0Y2ggKG1f
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgICAgICAgICBjYXNlIENlbGxVc2U6IHsK
KyAgICAgICAgICAgICAgICBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICAgICAgICAgIExWYWx1ZSB2YWx1ZSA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgY2VsbENhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIlN3aXRjaC9Td2l0Y2hDZWxsIGNl
bGwgY2FzZSIpKTsKKyAgICAgICAgICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKHZhbHVlKSwg
dW5zdXJlKGNlbGxDYXNlKSwgdW5zdXJlKGxvd0Jsb2NrKGRhdGEtPmZhbGxUaHJvdWdoKSkpOwor
ICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNlbGxDYXNlKTsKKyAgICAgICAgICAgICAg
ICBjZWxsID0gdmFsdWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIERG
R19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJCYWQgdXNlIGtpbmQiKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGJ1aWxk
U3dpdGNoKG1fbm9kZS0+c3dpdGNoRGF0YSgpLCBtX291dC5pbnRQdHIsIGNlbGwpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9IH0KICAgICAgICAgCiAgICAgICAgIERGR19DUkFTSCht
X2dyYXBoLCBtX25vZGUsICJCYWQgc3dpdGNoIGtpbmQiKTsKICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4NCw2ICs5ODQsMTEg
QEAgdm9pZCBIZWFwOjpjb2xsZWN0KEhlYXBPcGVyYXRpb24gY29sbGVjdAogICAgICAgICB2bSgp
LT5oaWdoRmlkZWxpdHlMb2coKS0+cHJvY2Vzc0hpZ2hGaWRlbGl0eUxvZygiR0MiKTsKICAgICB9
CiAgICAgCisgICAgaWYgKHZtKCktPmNhbGxFZGdlTG9nKSB7CisgICAgICAgIERlZmVyR0NGb3JB
V2hpbGUgYXdoaWxlKCp0aGlzKTsKKyAgICAgICAgdm0oKS0+Y2FsbEVkZ2VMb2ctPnByb2Nlc3NM
b2coKTsKKyAgICB9CisgICAgCiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fZGVmZXJyYWxEZXB0aCk7
CiAgICAgQVNTRVJUKHZtKCktPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwogICAg
IFJFTEVBU0VfQVNTRVJUKHZtKCktPmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0
YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCw2ICs4
OCwyMSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAgICAgCisgICAgdm9pZCBsb2FkVmFsdWUo
QWRkcmVzcyBhZGRyZXNzLCBKU1ZhbHVlUmVncyByZWdzKQorICAgIHsKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgICAgICBsb2FkNjQoYWRkcmVzcywgcmVncy5ncHIoKSk7CisjZWxzZQorICAgICAg
ICBpZiAoYWRkcmVzcy5iYXNlID09IHJlZ3MucGF5bG9hZEdQUigpKSB7CisgICAgICAgICAgICBs
b2FkMzIoYWRkcmVzcy53aXRoT2Zmc2V0KFRhZ09mZnNldCksIHJlZ3MudGFnR1BSKCkpOworICAg
ICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldChQYXlsb2FkT2Zmc2V0KSwgcmVncy5w
YXlsb2FkR1BSKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9hZDMyKGFkZHJl
c3Mud2l0aE9mZnNldChQYXlsb2FkT2Zmc2V0KSwgcmVncy5wYXlsb2FkR1BSKCkpOworICAgICAg
ICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldChUYWdPZmZzZXQpLCByZWdzLnRhZ0dQUigp
KTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorICAgIAogICAgIHZvaWQgbW92ZVRydXN0ZWRW
YWx1ZShKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlUmVncyByZWdzKQogICAgIHsKICNpZiBVU0UoSlNW
QUxVRTY0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCShy
ZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVy
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjY2LDYgKzE2NjYsMTUgQEAgcHVibGljOgogICAgICAg
ICBtb3ZlKGFyZzQsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CiAgICAgfQogI2VuZGlmCisgICAg
CisgICAgdm9pZCBzZXR1cEFyZ3VtZW50cyhKU1ZhbHVlUmVncyBhcmcxKQorICAgIHsKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgICAgICBzZXR1cEFyZ3VtZW50cyhhcmcxLmdwcigpKTsKKyNlbHNl
CisgICAgICAgIHNldHVwQXJndW1lbnRzKGFyZzEucGF5bG9hZEdQUigpLCBhcmcxLnRhZ0dQUigp
KTsKKyNlbmRpZgorICAgIH0KIAogICAgIHZvaWQgc2V0dXBSZXN1bHRzKEdQUlJlZyBkZXN0QSwg
R1BSUmVnIGRlc3RCKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BS
SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5o
CShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8u
aAkod29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsOCBAQCBwdWJsaWM6CiAgICAgR1BSUmVnIHRh
Z0dQUigpIGNvbnN0IHsgcmV0dXJuIEludmFsaWRHUFJSZWc7IH0KICAgICBHUFJSZWcgcGF5bG9h
ZEdQUigpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByOyB9CiAgICAgCisgICAgYm9vbCB1c2VzKEdQUlJl
ZyBncHIpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByID09IGdwcjsgfQorICAgIAogcHJpdmF0ZToKICAg
ICBHUFJSZWcgbV9ncHI7CiB9OwpAQCAtMTY5LDYgKzE3MSw4IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIHRhZ0dQUigpOwogICAgIH0KIAorICAgIGJvb2wgdXNlcyhHUFJSZWcgZ3ByKSBjb25z
dCB7IHJldHVybiBtX3RhZ0dQUiA9PSBncHIgfHwgbV9wYXlsb2FkR1BSID09IGdwcjsgfQorICAg
IAogcHJpdmF0ZToKICAgICBpbnQ4X3QgbV90YWdHUFI7CiAgICAgaW50OF90IG1fcGF5bG9hZEdQ
UjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHJl
dmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAwLDYgKzMwMCwxMyBAQCB2b2lkIEpJVDo6Y29tcGls
ZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgc3RvcmUzMihyZWdUMCwgQWRkcmVzcyhzdGFj
a1BvaW50ZXJSZWdpc3RlciwgSlNTdGFjazo6Q2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXpl
b2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykp
KTsKICAgICBzdG9yZTMyKHJlZ1QxLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBKU1N0
YWNrOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgVGFnT2Zm
c2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAKKyAgICBDYWxsTGlua0luZm8qIGlu
Zm8gPSBtX2NvZGVCbG9jay0+YWRkQ2FsbExpbmtJbmZvKCk7CisKKyAgICBpZiAoc2hvdWxkRW1p
dFByb2ZpbGluZygpKSB7CisgICAgICAgIG1fdm0tPmNhbGxFZGdlTG9nLT5lbWl0TG9nQ29kZSgK
KyAgICAgICAgICAgICp0aGlzLCBpbmZvLT5jYWxsRWRnZVByb2ZpbGUsIEpTVmFsdWVSZWdzKHJl
Z1QxLCByZWdUMCkpOworICAgIH0KKwogICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsX2V2YWwp
IHsKICAgICAgICAgY29tcGlsZUNhbGxFdmFsKGluc3RydWN0aW9uKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMzEzLDcgKzMyMCw2IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9w
Y29kZUkKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZSk7CiAKICAgICBBU1NFUlQobV9jYWxsQ29t
cGlsYXRpb25JbmZvLnNpemUoKSA9PSBjYWxsTGlua0luZm9JbmRleCk7Ci0gICAgQ2FsbExpbmtJ
bmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5mbygpOwogICAgIGluZm8tPmNh
bGxUeXBlID0gQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJRCk7CiAgICAgaW5mby0+
Y29kZU9yaWdpbiA9IENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCk7CiAgICAgaW5mby0+Y2Fs
bGVlR1BSID0gcmVnVDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJ
KHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMiw2ICsyMTIsMTEgQEAgdm9pZCBKSVQ6OmNvbXBpbGVP
cENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVl
LCByZWdUMCk7IC8vIHJlZ1QwIGhvbGRzIGNhbGxlZS4KIAogICAgIHN0b3JlNjQocmVnVDAsIEFk
ZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpTU3RhY2s6OkNhbGxlZSAqIHN0YXRpY19jYXN0
PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKyAg
ICAKKyAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2NvZGVCbG9jay0+YWRkQ2FsbExpbmtJbmZv
KCk7CisKKyAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZygpKQorICAgICAgICBtX3ZtLT5jYWxs
RWRnZUxvZy0+ZW1pdExvZ0NvZGUoKnRoaXMsIGluZm8tPmNhbGxFZGdlUHJvZmlsZSwgcmVnVDAp
OwogCiAgICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCkgewogICAgICAgICBjb21waWxl
Q2FsbEV2YWwoaW5zdHJ1Y3Rpb24pOwpAQCAtMjIzLDcgKzIyOCw2IEBAIHZvaWQgSklUOjpjb21w
aWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZSk7CiAK
ICAgICBBU1NFUlQobV9jYWxsQ29tcGlsYXRpb25JbmZvLnNpemUoKSA9PSBjYWxsTGlua0luZm9J
bmRleCk7Ci0gICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5r
SW5mbygpOwogICAgIGluZm8tPmNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihv
cGNvZGVJRCk7CiAgICAgaW5mby0+Y29kZU9yaWdpbiA9IENvZGVPcmlnaW4obV9ieXRlY29kZU9m
ZnNldCk7CiAgICAgaW5mby0+Y2FsbGVlR1BSID0gcmVnVDA7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSW5saW5lcy5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDYgKzM3LDcgQEAKIC8vIEluIGZhY3QsIGl0IGNhbiBtYWtlIGEgbG90IG9mIHNlbnNlOiBv
dXRzaWRlIG9mIEpTQywgdGhpcyBmaWxlIGJlY29tZXMgYSBraW5kIG9mIHVtYnJlbGxhCiAvLyBo
ZWFkZXIgdGhhdCBwdWxscyBpbiBtb3N0IChhbGw/KSBvZiB0aGUgaW50ZXJlc3RpbmcgdGhpbmdz
IGluIEpTQy4KIAorI2luY2x1ZGUgIkNhbGxFZGdlUHJvZmlsZUlubGluZXMuaCIKICNpbmNsdWRl
ICJDYWxsRnJhbWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2lu
Y2x1ZGUgIkdDSW5jb21pbmdSZWZDb3VudGVkSW5saW5lcy5oIgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsNiAr
MTY3LDggQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAgdihib29sLCBl
bmFibGVBY2Nlc3NJbmxpbmluZywgdHJ1ZSkgXAogICAgIHYoYm9vbCwgZW5hYmxlUG9seXZhcmlh
bnREZXZpcnR1YWxpemF0aW9uLCB0cnVlKSBcCiAgICAgdihib29sLCBlbmFibGVQb2x5bW9ycGhp
Y0FjY2Vzc0lubGluaW5nLCB0cnVlKSBcCisgICAgdihib29sLCBlbmFibGVQb2x5bW9ycGhpY0Nh
bGxJbmxpbmluZywgdHJ1ZSkgXAorICAgIHYoYm9vbCwgZW5hYmxlQ2FsbEVkZ2VQcm9maWxpbmcs
IHRydWUpIFwKICAgICB2KGJvb2wsIG9wdGltaXplTmF0aXZlQ2FsbHMsIGZhbHNlKSBcCiAgICAg
XAogICAgIHYoYm9vbCwgZW5hYmxlQ29uY3VycmVudEpJVCwgdHJ1ZSkgXApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3M7CiAg
ICAgY2xhc3MgQnVpbHRpbkV4ZWN1dGFibGVzOworICAgIGNsYXNzIENhbGxFZGdlTG9nOwogICAg
IGNsYXNzIENvZGVCbG9jazsKICAgICBjbGFzcyBDb2RlQ2FjaGU7CiAgICAgY2xhc3MgQ29tbW9u
SWRlbnRpZmllcnM7CkBAIC0yMzIsNiArMjMzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAjaWYgRU5B
QkxFKERGR19KSVQpCiAgICAgICAgIE93blB0cjxERkc6OkxvbmdMaXZlZFN0YXRlPiBkZmdTdGF0
ZTsKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKyAgICAgICAgCisgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxDYWxsRWRnZUxvZz4gY2FsbEVkZ2VMb2c7CiAKICAgICAgICAgVk1UeXBlIHZtVHlw
ZTsKICAgICAgICAgQ2xpZW50RGF0YSogY2xpZW50RGF0YTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvbmV3LWFycmF5LXRoZW4tZXhpdC5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL25ldy1hcnJheS10aGVuLWV4aXQu
anMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL25l
dy1hcnJheS10aGVuLWV4aXQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorZnVu
Y3Rpb24gZm9vKGYpIHsKKyAgICByZXR1cm4gbmV3IGYoKTsKK30KKworbm9JbmxpbmUoZm9vKTsK
KworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKQorICAgIGZvbyhBcnJheSk7CisKK3Zh
ciBkaWRDYWxsID0gZmFsc2U7Citmb28oZnVuY3Rpb24oKSB7IGRpZENhbGwgPSB0cnVlOyB9KTsK
KworaWYgKCFkaWRDYWxsKQorICAgIHRocm93ICJFcnJvcjogZGlkbid0IGNhbGwgbXkgZnVuY3Rp
b24uIjsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL093blB0ci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL093blB0ci5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvV1RGL3d0Zi9P
d25QdHIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgQ29weXJpZ2h0
IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTIyLDYgKzIyLDcgQEAKICNkZWZpbmUgV1RGX093blB0cl9oCiAKICNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ckNvbW1vbi5oPgogI2luY2x1ZGUg
PGFsZ29yaXRobT4KQEAgLTcyLDYgKzczLDE0IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBPd25QdHImIG9wZXJhdG9yPShPd25QdHI8VT4mJik7CiAKICAg
ICAgICAgdm9pZCBzd2FwKE93blB0ciYgbykgeyBzdGQ6OnN3YXAobV9wdHIsIG8ubV9wdHIpOyB9
CisgICAgICAgIAorICAgICAgICAvLyBDb25zdHJ1Y3QgYW4gb2JqZWN0IHRvIHN0b3JlIGludG8g
dGhpcyBPd25QdHIsIGJ1dCBvbmx5IHNvIGxvbmcgYXMgdGhpcyBPd25QdHIKKyAgICAgICAgLy8g
ZG9lc24ndCBhbHJlYWR5IHBvaW50IHRvIGFuIG9iamVjdC4gVGhpcyB3aWxsIGVuc3VyZSB0aGF0
IGFmdGVyIHlvdSBjYWxsIHRoaXMsCisgICAgICAgIC8vIHRoZSBPd25QdHIgd2lsbCBwb2ludCB0
byBhbiBpbnN0YW5jZSBvZiBULiBUaGlzIGluc3RhbmNlIG1heSBvciBtYXkgbm90IGhhdmUgYmVl
bgorICAgICAgICAvLyBjcmVhdGVkIGJ5IHRoaXMgY2FsbC4gTW9yZW92ZXIsIHRoaXMgY2FsbCB1
c2VzIGFuIG9wcG9ydHVuaXN0aWMgdHJhbnNhY3Rpb24sIGluCisgICAgICAgIC8vIHRoYXQgd2Ug
bWF5IGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiBUIGFuZCB0aGVuIGltbWVkaWF0ZWx5IHRocm93IGl0
IGF3YXkuCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgICAgIHZvaWQg
Y3JlYXRlVHJhbnNhY3Rpb25hbGx5KEFyZ3MuLi4gYXJncyk7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICBleHBsaWNpdCBPd25QdHIoUHRyVHlwZSBwdHIpIDogbV9wdHIocHRyKSB7IH0KQEAgLTE4
Niw2ICsxOTUsMjggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJldHVybiBwLmdldCgpOwog
ICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFy
Z3M+IGlubGluZSB2b2lkIE93blB0cjxUPjo6Y3JlYXRlVHJhbnNhY3Rpb25hbGx5KEFyZ3MuLi4g
YXJncykKKyAgICB7CisgICAgICAgIGlmIChtX3B0cikgeworICAgICAgICAgICAgV1RGOjpsb2Fk
TG9hZEZlbmNlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIFQqIG5ld09iamVjdCA9IG5ldyBUKGFyZ3MuLi4pOworICAgICAgICBXVEY6OnN0b3Jl
U3RvcmVGZW5jZSgpOworI2lmIEVOQUJMRShDT01QQVJFX0FORF9TV0FQKQorICAgICAgICBkbyB7
CisgICAgICAgICAgICBpZiAobV9wdHIpIHsKKyAgICAgICAgICAgICAgICBkZWxldGUgbmV3T2Jq
ZWN0OworICAgICAgICAgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSB3aGlsZSAoIVdURjo6d2Vha0Nv
bXBhcmVBbmRTd2FwKCZtX3B0ciwgbnVsbHB0ciwgbmV3T2JqZWN0KSk7CisjZWxzZQorICAgICAg
ICBtX3B0ciA9IG5ld09iamVjdDsKKyNlbmRpZgorICAgIH0KKwogfSAvLyBuYW1lc3BhY2UgV1RG
CiAKIHVzaW5nIFdURjo6T3duUHRyOwpJbmRleDogU291cmNlL1dURi93dGYvU3BlY3RydW0uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCShyZXZpc2lvbiAxNzIxNzcp
CisrKyBTb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwyMiArMzIs
MzEgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDb3VudGVyVHlwZSA9IHVuc2lnbmVkPgogY2xhc3MgU3Bl
Y3RydW0gewogcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCB1bnNpZ25l
ZCBsb25nPjo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFw
PFQsIHVuc2lnbmVkIGxvbmc+Ojpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKKyAgICB0
eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+OjppdGVyYXRvciBpdGVyYXRv
cjsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+Ojpjb25zdF9p
dGVyYXRvciBjb25zdF9pdGVyYXRvcjsKICAgICAKICAgICBTcGVjdHJ1bSgpIHsgfQogICAgIAot
ICAgIHZvaWQgYWRkKGNvbnN0IFQmIGtleSwgdW5zaWduZWQgbG9uZyBjb3VudCA9IDEpCisgICAg
dm9pZCBhZGQoY29uc3QgVCYga2V5LCBDb3VudGVyVHlwZSBjb3VudCA9IDEpCiAgICAgewotICAg
ICAgICB0eXBlbmFtZSBIYXNoTWFwPFQsIHVuc2lnbmVkIGxvbmc+OjpBZGRSZXN1bHQgcmVzdWx0
ID0gbV9tYXAuYWRkKGtleSwgY291bnQpOworICAgICAgICBpZiAoIWNvdW50KQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB0eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6QWRk
UmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGNvdW50KTsKICAgICAgICAgaWYgKCFyZXN1
bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgKz0gY291
bnQ7CiAgICAgfQogICAgIAotICAgIHVuc2lnbmVkIGxvbmcgZ2V0KGNvbnN0IFQmIGtleSkgY29u
c3QKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIHZvaWQgYWRkQWxsKGNvbnN0IFNwZWN0
cnVtPFQsIFU+JiBvdGhlclNwZWN0cnVtKQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvIGVudHJ5
IDogb3RoZXJTcGVjdHJ1bSkKKyAgICAgICAgICAgIGFkZChlbnRyeS5rZXksIGVudHJ5LmNvdW50
KTsKKyAgICB9CisgICAgCisgICAgQ291bnRlclR5cGUgZ2V0KGNvbnN0IFQmIGtleSkgY29uc3QK
ICAgICB7CiAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX21hcC5maW5kKGtleSk7CiAg
ICAgICAgIGlmIChpdGVyID09IG1fbWFwLmVuZCgpKQpAQCAtNjMsNyArNzIsNyBAQCBwdWJsaWM6
CiAgICAgc3RydWN0IEtleUFuZENvdW50IHsKICAgICAgICAgS2V5QW5kQ291bnQoKSB7IH0KICAg
ICAgICAgCi0gICAgICAgIEtleUFuZENvdW50KGNvbnN0IFQmIGtleSwgdW5zaWduZWQgbG9uZyBj
b3VudCkKKyAgICAgICAgS2V5QW5kQ291bnQoY29uc3QgVCYga2V5LCBDb3VudGVyVHlwZSBjb3Vu
dCkKICAgICAgICAgICAgIDoga2V5KGtleSkKICAgICAgICAgICAgICwgY291bnQoY291bnQpCiAg
ICAgICAgIHsKQEAgLTgwLDcgKzg5LDcgQEAgcHVibGljOgogICAgICAgICB9CiAKICAgICAgICAg
VCBrZXk7Ci0gICAgICAgIHVuc2lnbmVkIGxvbmcgY291bnQ7CisgICAgICAgIENvdW50ZXJUeXBl
IGNvdW50OwogICAgIH07CiAgICAgCiAgICAgLy8gUmV0dXJucyBhIGxpc3Qgb3JkZXJlZCBmcm9t
IGxvd2VzdC1jb3VudCB0byBoaWdoZXN0LWNvdW50LgpAQCAtOTQsOCArMTAzLDE4IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgfQogICAgIAorICAgIHZvaWQgY2xlYXIoKSB7
IG1fbWFwLmNsZWFyKCk7IH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgor
ICAgIHZvaWQgcmVtb3ZlSWYoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB7CisgICAgICAg
IG1fbWFwLnJlbW92ZUlmKFtmdW5jdG9yXSAodHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlw
ZT46OktleVZhbHVlUGFpclR5cGUmIHBhaXIpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVu
Y3RvcihLZXlBbmRDb3VudChwYWlyLmtleSwgcGFpci52YWx1ZSkpOworICAgICAgICAgICAgfSk7
CisgICAgfQorICAgIAogcHJpdmF0ZToKLSAgICBIYXNoTWFwPFQsIHVuc2lnbmVkIGxvbmc+IG1f
bWFwOworICAgIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+IG1fbWFwOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV1RGCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236739</attachid>
            <date>2014-08-17 19:28:10 -0700</date>
            <delta_ts>2014-08-18 21:02:06 -0700</delta_ts>
            <desc>it compiles!</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>151620</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzIxNzcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjY1LDYgKzI2NSwxMyBAQAogCQkwRjNCM0EyODE1NDRD
OTk3MDAzRUQwRkYgLyogREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjNBMjUxNTQ0Qzk5MTAwM0VEMEZG
IC8qIERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjNCM0EyQjE1NDc1MDAwMDAzRUQwRkYgLyogREZH
VmFsaWRhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYzQjNBMjkxNTQ3NEZGNDAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmNwcCAqLzsgfTsKIAkJ
MEYzQjNBMkMxNTQ3NTAwMjAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCM0EyQTE1NDc0RkY0MDAzRUQwRkYg
LyogREZHVmFsaWRhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRjNCN0UyNjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTIwMTlBMTFCODAw
MEQ5QkM1NiAvKiBDYWxsRWRnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGM0I3RTI3MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2Zp
bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
QjdFMjExOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAgKi87IH07CisJCTBG
M0I3RTI4MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTIyMTlBMTFCODAwMEQ5QkM1
NiAvKiBDYWxsRWRnZVByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRjNCN0UyOTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9m
aWxlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYzQjdFMjMxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZUlubGluZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjNCN0Uy
QTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMjQxOUExMUI4MDAwRDlCQzU2IC8qIENh
bGxWYXJpYW50LmNwcCAqLzsgfTsKKwkJMEYzQjdFMkIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxW
YXJpYW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjNCN0UyNTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjNCN0UyRDE5QTEyQUFFMDBEOUJD
NTYgLyogQ2FsbEVkZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYzQjdFMkMxOUExMkFBRTAwRDlCQzU2IC8qIENhbGxFZGdlLmNwcCAqLzsgfTsK
IAkJMEYzRDBCQkMxOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRDBCQkEx
OTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suY3BwICovOyB9OwogCQkw
RjNEMEJCRDE5NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRDBCQkIxOTRBNDE0
MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQyNkE0ODE0NjBDQkIzMDAxMzFGOEYg
LyogVmFsdWVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0MjZBNDUxNDYwQ0JBQjAwMTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODI3LDggKzgz
NCw4IEBACiAJCTFDQUE5QTIzMThGNEEyMjAwMDBBMzY5RCAvKiBKU0dsb2JhbE9iamVjdFByb2Zp
bGVyQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDQUE5QTIxMThGNEEyMjAwMDBBMzY5RCAvKiBKU0dsb2JhbE9iamVjdFByb2ZpbGVyQWdlbnQu
aCAqLzsgfTsKIAkJMjYwMEI1QTYxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2MDBCNUE0
MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5jcHAgKi87IH07CiAJCTI2MDBCNUE3
MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjYwMEI1QTUxNTJCQUFBNzAwOTFFRTVGIC8qIEpT
U3RyaW5nSm9pbmVyLmggKi87IH07Ci0gCQkyQTA1QUJENTE5NjFERjI0MDAzNDE3NTAgLyogSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJBMDVBQkQzMTk2MURGMjQwMDM0MTc1MCAvKiBKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IuY3BwICovOyB9OwotIAkJMkEwNUFCRDYxOTYxREYyNDAwMzQxNzUwIC8qIEpT
UHJvcGVydHlOYW1lRW51bWVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkEwNUFCRDQxOTYxREYyNDAwMzQxNzUwIC8qIEpTUHJvcGVydHlOYW1l
RW51bWVyYXRvci5oICovOyB9OworCQkyQTA1QUJENTE5NjFERjI0MDAzNDE3NTAgLyogSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJBMDVBQkQzMTk2MURGMjQwMDM0MTc1MCAvKiBKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3IuY3BwICovOyB9OworCQkyQTA1QUJENjE5NjFERjI0MDAzNDE3NTAgLyogSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyQTA1QUJENDE5NjFERjI0MDAzNDE3NTAgLyogSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yLmggKi87IH07CiAJCTJBMTExMjQ1MTkyRkNFNzkwMDVFRTE4RCAvKiBDdXN0b21HZXR0
ZXJTZXR0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkExMTEyNDMxOTJGQ0U3OTAwNUVFMThEIC8qIEN1c3RvbUdldHRlclNldHRlci5jcHAgKi87
IH07CiAJCTJBMTExMjQ2MTkyRkNFNzkwMDVFRTE4RCAvKiBDdXN0b21HZXR0ZXJTZXR0ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBMTExMjQ0MTky
RkNFNzkwMDVFRTE4RCAvKiBDdXN0b21HZXR0ZXJTZXR0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyQTI4MjVEMDE4MzQxRjJEMDA4N0ZCQTkg
LyogRGVsYXllZFJlbGVhc2VTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkEyODI1Q0YxODM0MUYyRDAwODdGQkE5IC8qIERlbGF5ZWRSZWxlYXNl
U2NvcGUuaCAqLzsgfTsKQEAgLTg2MywxMCArODcwLDEwIEBACiAJCTQxMzU5Q0YzMEZERDg5QUQw
MDIwNjE4MCAvKiBEYXRlQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRDIxMjAyMjkwQUQ0MzEwQzAwRUQ3OUI2IC8qIERhdGVDb252ZXJz
aW9uLmggKi87IH07CiAJCTQ0NDNBRTMzMTZFMTg4RDkwMDc2RjExMCAvKiBGb3VuZGF0aW9uLmZy
YW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxRjBFQjYxMDVDODZDNkIwMEU2REYxQiAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayAqLzsgfTsK
IAkJNDUxNTM5QjkxMkRDOTk0NTAwRUY3QUM0IC8qIFlhcnIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1MTUzOUI4MTJEQzk5NDUwMEVGN0FDNCAvKiBZ
YXJyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLSAJ
CTUyQjMxMEZCMTk3NEFFNjEwMDgwODU3QyAvKiBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQjMxMEZBMTk3
NEFFNjEwMDgwODU3QyAvKiBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotIAkJNTJCMzEwRkQxOTc0QUU4NzAw
ODA4NTdDIC8qIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIzMTBGQzE5NzRBRTg3MDA4MDg1N0MgLyog
RnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcCAqLzsgfTsKLSAJCTUyQjMxMEZGMTk3NUI0MjQw
MDgwODU3QyAvKiBUeXBlTG9jYXRpb25DYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIzMTBGRTE5NzVCNDI0MDA4MDg1N0MgLyogVHlwZUxv
Y2F0aW9uQ2FjaGUuY3BwICovOyB9OwotIAkJNTJCMzExMDExOTc1QjQ2NzAwODA4NTdDIC8qIFR5
cGVMb2NhdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MkIzMTEwMDE5NzVCNDY3MDA4MDg1N0MgLyogVHlwZUxvY2F0aW9uQ2FjaGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MkIzMTBG
QjE5NzRBRTYxMDA4MDg1N0MgLyogRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIzMTBGQTE5NzRBRTYxMDA4
MDg1N0MgLyogRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTJCMzEwRkQxOTc0QUU4NzAwODA4NTdDIC8q
IEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIzMTBGQzE5NzRBRTg3MDA4MDg1N0MgLyogRnVuY3Rpb25I
YXNFeGVjdXRlZENhY2hlLmNwcCAqLzsgfTsKKwkJNTJCMzEwRkYxOTc1QjQyNDAwODA4NTdDIC8q
IFR5cGVMb2NhdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUyQjMxMEZFMTk3NUI0MjQwMDgwODU3QyAvKiBUeXBlTG9jYXRpb25DYWNo
ZS5jcHAgKi87IH07CisJCTUyQjMxMTAxMTk3NUI0NjcwMDgwODU3QyAvKiBUeXBlTG9jYXRpb25D
YWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJC
MzExMDAxOTc1QjQ2NzAwODA4NTdDIC8qIFR5cGVMb2NhdGlvbkNhY2hlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTUxMDUwMjYxOEVCODI3NTAw
MDAxRjNFIC8qIEpTQ2FsbGJhY2tGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0MEY4OEYwQTUwOEIxMDAwMDVGMDYxIC8qIEpTQ2FsbGJh
Y2tGdW5jdGlvbi5oICovOyB9OwogCQk1NTJFQTcwQzE5MDg3MDQ4MDBBNjZGMkYgLyogSlNEYXRh
Vmlld1Byb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjJCNjZCRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmlld1Byb3RvdHlwZS5j
cHAgKi87IH07CiAJCTU1NDA3NTcyMThEQTU4QUQwMEVGRjdGMiAvKiBBcmdMaXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Y2MDUxMjBFMjAzRUY4
MDBCOUE2NEQgLyogQXJnTGlzdC5oICovOyB9OwpAQCAtMjQzMiwxMyArMjQzOSw3IEBACiAJCTBG
MkQ0REU0MTk4MzJEOTEwMDdENEIxOSAvKiBUeXBlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVT
ZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDRERTUxOTgzMkRBQzAwN0Q0
QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBUb1RoaXNTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJE
NERFNjE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFRvVGhpc1N0YXR1cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotIAkJMEY3QjM2NUYxOTdDNTI1QzAwRUQxRERDIC8qIERGR1BoYW50b21DYW5vbmljYWxpemF0
aW9uUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHUGhh
bnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHUGhhbnRvbUNhbm9u
aWNhbGl6YXRpb25QaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0gCQkwRjdC
MzY2MDE5N0M1MjVDMDBFRDFEREMgLyogREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQaGFudG9tQ2Fub25pY2FsaXph
dGlvblBoYXNlLmg7IHBhdGggPSBkZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJENERFNzE5ODMyREFDMDA3RDRCMTkg
LyogVHlwZUxvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVM
b2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotIAkJNTJCMzEwRkExOTc0QUU2
MTAwODA4NTdDIC8qIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
dW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLSAJ
CTUyQjMxMEZDMTk3NEFFODcwMDgwODU3QyAvKiBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLSAJCTUyQjMxMEZFMTk3NUI0MjQwMDgwODU3QyAvKiBUeXBl
TG9jYXRpb25DYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUeXBlTG9jYXRpb25DYWNoZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0gCQk1MkIzMTEwMDE5NzVCNDY3MDA4MDg1
N0MgLyogVHlwZUxvY2F0aW9uQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZUxvY2F0aW9uQ2Fj
aGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRkM3NzAxNkUxMkY2RjAwMzhE
OTc2IC8qIERGR0RDRVBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERGR0RDRVBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdEQ0VQaGFzZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkZDNzcxMTZFMTJGNkYwMDM4RDk3NiAvKiBERkdEQ0VQ
aGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdEQ0VQaGFzZS5oOyBw
YXRoID0gZGZnL0RGR0RDRVBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
MkZDQ0YyMThBNjAwNzAwMDFBMjdGOCAvKiBERkdHcmFwaFNhZmVwb2ludC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdHcmFwaFNhZmVwb2ludC5jcHA7IHBhdGgg
PSBkZmcvREZHR3JhcGhTYWZlcG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjQ2OCw2ICsyNDY5LDEzIEBACiAJCTBGM0IzQTI1MTU0NEM5OTEwMDNFRDBGRiAvKiBERkdD
RkdTaW1wbGlmaWNhdGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdDRkdTaW1wbGlmaWNh
dGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0IzQTI5MTU0NzRG
RjQwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBERkdWYWxpZGF0ZS5jcHA7IHBhdGggPSBkZmcvREZHVmFsaWRhdGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNCM0EyQTE1NDc0RkY0MDAzRUQwRkYgLyog
REZHVmFsaWRhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVmFsaWRh
dGUuaDsgcGF0aCA9IGRmZy9ERkdWYWxpZGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjNCN0UyMDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbEVkZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEYzQjdFMjExOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsRWRnZVByb2ZpbGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyMjE5QTExQjgwMDBEOUJDNTYgLyog
Q2FsbEVkZ2VQcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxF
ZGdlUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyMzE5QTEx
QjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGM0I3RTI0MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsVmFyaWFudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGM0I3RTI1MTlBMTFCODAwMEQ5QkM1NiAv
KiBDYWxsVmFyaWFudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsVmFy
aWFudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyQzE5QTEyQUFFMDBE
OUJDNTYgLyogQ2FsbEVkZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ2FsbEVkZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNEMEJCQTE5
NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb25zdGFudFN0cnVjdHVyZUNoZWNrLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzRDBCQkIxOTRBNDE0MzAwRkM5Q0Y5IC8qIENv
bnN0YW50U3RydWN0dXJlQ2hlY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yNTc1LDYgKzI1ODMsOCBAQAogCQkwRjc2NkQzNzE1QUU0QTFBMDA4RjM2M0Ug
LyogU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzcwMDhFMTQwMkZERDYwMDc4RUIzOSAvKiBTYW1wbGlu
Z0NvdW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2FtcGxpbmdDb3Vu
dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzcwMDkxMTQwMkZGMjgwMDc4
RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2FtcGxpbmdDb3VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY3QjM2NUYxOTdDNTI1QzAwRUQxRERDIC8qIERGR1BoYW50b21DYW5vbmljYWxpemF0aW9u
UGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHUGhhbnRv
bUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHUGhhbnRvbUNhbm9uaWNh
bGl6YXRpb25QaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0IzNjYw
MTk3QzUyNUMwMEVEMUREQyAvKiBERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1BoYW50b21DYW5vbmljYWxpemF0aW9u
UGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBC
eVZhbEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnlWYWxJbmZvLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAv
KiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJv
ZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Q
cm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTk0LDggKzMwMDQsOCBA
QAogCQkxQ0FBOUEyMTE4RjRBMjIwMDAwQTM2OUQgLyogSlNHbG9iYWxPYmplY3RQcm9maWxlckFn
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0UHJv
ZmlsZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNjAwQjVBNDE1MkJB
QUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNTdHJpbmdKb2luZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyNjAwQjVBNTE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdKb2luZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLSAJCTJBMDVBQkQzMTk2MURGMjQwMDM0MTc1MCAvKiBKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLSAJCTJBMDVBQkQ0MTk2MURGMjQwMDM0MTc1MCAvKiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBMDVBQkQzMTk2MURGMjQw
MDM0MTc1MCAvKiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkEwNUFCRDQxOTYxREYyNDAwMzQxNzUwIC8qIEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkExMTEyNDMxOTJGQ0U3OTAwNUVFMThEIC8qIEN1c3RvbUdldHRlclNldHRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdXN0b21HZXR0ZXJTZXR0ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQTExMTI0NDE5MkZDRTc5MDA1RUUxOEQgLyog
Q3VzdG9tR2V0dGVyU2V0dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN1
c3RvbUdldHRlclNldHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQTI4MjVD
RjE4MzQxRjJEMDA4N0ZCQTkgLyogRGVsYXllZFJlbGVhc2VTY29wZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEZWxheWVkUmVsZWFzZVNjb3BlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0zMDMzLDYgKzMwNDMsMTAgQEAKIAkJNDVFMTJEODgwNkE0OUIwRjAw
RTlERjg0IC8qIGpzYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBqc2MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0
aCA9IDQ7IH07CiAJCTUxRjBFQjYxMDVDODZDNkIwMEU2REYxQiAvKiBGb3VuZGF0aW9uLmZyYW1l
d29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdy
YXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gRm91bmRhdGlvbi5mcmFtZXdvcms7IHBhdGggPSAvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yazsgc291cmNlVHJlZSA9
ICI8YWJzb2x1dGU+IjsgfTsKIAkJNTFGMEVDMDcwNUM4NkM5QTAwRTZERjFCIC8qIGxpYm9iamMu
ZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAi
Y29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYm9iamMuZHlsaWI7IHBhdGggPSAvdXNy
L2xpYi9saWJvYmpjLmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OworCQk1MkIz
MTBGQTE5NzRBRTYxMDA4MDg1N0MgLyogRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MkIzMTBGQzE5NzRBRTg3MDA4MDg1N0MgLyogRnVuY3Rpb25IYXNFeGVjdXRl
ZENhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyQjMxMEZFMTk3NUI0MjQwMDgwODU3
QyAvKiBUeXBlTG9jYXRpb25DYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUeXBlTG9jYXRp
b25DYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyQjMxMTAwMTk3NUI0
NjcwMDgwODU3QyAvKiBUeXBlTG9jYXRpb25DYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlTG9j
YXRpb25DYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTQwNzU4NDE4RjRB
Mzc1MDA2MDJBNUQgLyogQ29tcGlsZVJ1bnRpbWVUb0xMVk1JUi54Y2NvbmZpZyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQueGNjb25maWc7IHBhdGggPSBDb21waWxlUnVudGltZVRvTExWTUlSLnhjY29uZmlnOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTQwN0FDODE4REE1OEFEMDBFRkY3RjIgLyog
bGliQ29tcGlsZVJ1bnRpbWVUb0xMVk1JUi5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGgg
PSBsaWJDb21waWxlUnVudGltZVRvTExWTUlSLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCTVENTM3MjZEMEUxQzU0NkIwMDIxRTU0OSAvKiBUcmFjaW5nLmQgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gVHJhY2luZy5kOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNDk4Nyw4ICs1MDAxLDggQEAKIAkJCQkwRjJCNjZEQjE3QjZCNUFCMDBBN0FFM0YgLyogVHlw
ZWRBcnJheXMuaCAqLywKIAkJCQkwRjJCNjZEQzE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJh
eVR5cGUuY3BwICovLAogCQkJCTBGMkI2NkREMTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5
VHlwZS5oICovLAotIAkJCQk1MkIzMTEwMDE5NzVCNDY3MDA4MDg1N0MgLyogVHlwZUxvY2F0aW9u
Q2FjaGUuaCAqLywKLSAJCQkJNTJCMzEwRkUxOTc1QjQyNDAwODA4NTdDIC8qIFR5cGVMb2NhdGlv
bkNhY2hlLmNwcCAqLywKKwkJCQk1MkIzMTEwMDE5NzVCNDY3MDA4MDg1N0MgLyogVHlwZUxvY2F0
aW9uQ2FjaGUuaCAqLywKKwkJCQk1MkIzMTBGRTE5NzVCNDI0MDA4MDg1N0MgLyogVHlwZUxvY2F0
aW9uQ2FjaGUuY3BwICovLAogCQkJCTBGMkQ0REUzMTk4MzJEOTEwMDdENEIxOSAvKiBUeXBlU2V0
LmNwcCAqLywKIAkJCQkwRjJENERFNDE5ODMyRDkxMDA3RDRCMTkgLyogVHlwZVNldC5oICovLAog
CQkJCUE3QThBRjMyMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50MTZBcnJheS5oICovLApAQCAtNTQy
OSwxMSArNTQ0MywxOCBAQAogCQkJCTBGNjY2RUJFMTgzNTY2RjkwMEQwMTdGMSAvKiBCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggKi8sCiAJCQkJMEY4ODVFMTAxODQ5QTNCRTAwRjFF
M0ZBIC8qIEJ5dGVjb2RlVXNlRGVmLmggKi8sCiAJCQkJMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1
IC8qIEJ5VmFsSW5mby5oICovLAorCQkJCTBGM0I3RTJDMTlBMTJBQUUwMEQ5QkM1NiAvKiBDYWxs
RWRnZS5jcHAgKi8sCisJCQkJMEYzQjdFMjAxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlLmgg
Ki8sCisJCQkJMEYzQjdFMjExOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAg
Ki8sCisJCQkJMEYzQjdFMjIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5oICov
LAorCQkJCTBGM0I3RTIzMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGVJbmxpbmVz
LmggKi8sCiAJCQkJMEYwQjgzQUUxNEJDRjcxNDAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5jcHAg
Ki8sCiAJCQkJMEYwQjgzQUYxNEJDRjcxNDAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5oICovLAog
CQkJCTBGOTMzMjkzMTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5jcHAgKi8sCiAJ
CQkJMEY5MzMyOTQxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmggKi8sCiAJCQkJ
MEYwQjgzQjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zm
c2V0LmggKi8sCisJCQkJMEYzQjdFMjQxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmNw
cCAqLywKKwkJCQkwRjNCN0UyNTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuaCAqLywK
IAkJCQk5NjlBMDc5MDBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmNwcCAqLywKIAkJCQk5
NjlBMDc5MTBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmggKi8sCiAJCQkJMEY4Rjk0M0Qx
NjY3NjMyRDAwRDYxOTcxIC8qIENvZGVCbG9ja0hhc2guY3BwICovLApAQCAtNTUyNSw3ICs1NTQ2
LDYgQEAKIAkJCQkwRjQyNkE0NjE0NjBDQkFCMDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmgg
Ki8sCiAJCQkJMEY5MTlEMjIxNTg1M0NERTAwNEE0RTdEIC8qIFdhdGNocG9pbnQuY3BwICovLAog
CQkJCTBGOTE5RDIzMTU4NTNDREUwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmggKi8sCi0JCQkJNTJE
QUQzOEUxOTVBMTY0RTAwRjMwNDY0IC8qIFR5cGVMb2NhdGlvbi5oICovLAogCQkJKTsKIAkJCXBh
dGggPSBieXRlY29kZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC01OTgzLDcgKzYw
MDMsNyBAQAogCQkJCTBGNkIxQ0I5MTg2MTI0NEMwMDg0NUQ5NyAvKiBBcml0eUNoZWNrTW9kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBMDA5QzExODMxQTI2RTAwQ0Y4NzExIC8qIEFSTTY0QXNz
ZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1RTcgLyog
QVJNQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKLSAJCQkJMkFEMkVERkIxOTc5OUUzODAwNEQ2
NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkFEMkVERkIxOTc5
OUUzODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3
QjgzQUMwRTZEQjhDOTAwNDc3NUE0IC8qIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyQTExMTI0NjE5MkZDRTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVy
U2V0dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MDMyMDE4QkZGQkUxMDA1QTA4MTEgLyog
SW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtNjEzNCw2ICs2MTU0LDcgQEAKIAkJ
CQkwRkZGQzk1QTE0RUY5MEE5MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMkZDNzczMTZFMTJGNzQwMDM4RDk3NiAvKiBERkdEQ0VQaGFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY4RjJCOUExNzJGMDUwMTAwN0RCREE1IC8qIERGR0Rlc2lyZWRJZGVudGlm
aWVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYzQjdFMjgxOUExMUI4MDAwRDlCQzU2IC8qIENh
bGxFZGdlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJDMEY3Q0UxN0JCRkM1QjAwNDY0
RkU0IC8qIERGR0Rlc2lyZWRUcmFuc2l0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFODUz
NEMxNzIzQ0RBNTAwQjYxOEY1IC8qIERGR0Rlc2lyZWRXYXRjaHBvaW50cy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQzI5ODFGRDkxN0JBRUU0QjAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXZWFrUmVmZXJl
bmNlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC02NDA0LDYgKzY0MjUsNyBAQAogCQkJCTBGNzY2RDMx
MTVBQTgxMTIwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY3NjZEMkMxNUE4Q0MzQTAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lU2V0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNEM1MjQyQjBGNTM1NUU5MDBCQTNEMDQgLyogSklUU3R1YnMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGM0I3RTJCMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkVGNjgzNUUxNzQzNDNDQzAwQTMyRTI1IC8qIEpJVFN0dWJzQVJN
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUY2ODM1RjE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1
YnNBUk12Ny5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVGNjgzNjExNzQzNDNDQzAwQTMyRTI1IC8q
IEpJVFN0dWJzWDg2LmggaW4gSGVhZGVycyAqLywKQEAgLTY0MTUsNiArNjQzNyw3IEBACiAJCQkJ
QTc2RjU0QTMxM0IyOEFBQjAwRUYyQkNFIC8qIEpJVFdyaXRlQmFycmllci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxOEM0MTYwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQWN0aXZhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODQwNDgwMTMxMDIxQTFEOTAwOEU3RjAxIC8qIEpTQVBJVmFsdWVXcmFw
cGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjNCN0UyOTE5QTExQjgwMDBEOUJDNTYgLyogQ2Fs
bEVkZ2VQcm9maWxlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJDRjM5QzIxNkUxNUE4
MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc2
MTQwRDIxODI5ODJDQjAwNzUwNjI0IC8qIEpTQXJndW1lbnRzSXRlcmF0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDNDE3MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0FycmF5LmggaW4gSGVhZGVy
cyAqLywKQEAgLTY2NjIsNyArNjY4NSw3IEBACiAJCQkJQTc4NUY2QkMxOEM1NTNGRTAwRjEwNjI2
IC8qIFNwaWxsUmVnaXN0ZXJzTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NTUwRTE2
RjVDRDAwQjM0NDYwIC8qIFByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0Yz
OUMxNUVEOEU0NjAwRjE2N0IyIC8qIFByb3BlcnR5U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCi0g
CQkJCTBGNkZDNzUxMTk2MTEwQTgwMEUxRDAyRCAvKiBDb21wbGV4R2V0U3RhdHVzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjZGQzc1MTE5NjExMEE4MDBFMUQwMkQgLyogQ29tcGxleEdldFN0YXR1
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxMkRFMTAxOTc5RDVGRDAwMDZGRjRFIC8qIEV4Y2Vw
dGlvbkZ1enouaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDU2MEUxNkY1Q0QwMEIzNDQ2MCAv
KiBQcm90ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc0QzMzQjE2QUEyRDk1MDA2MkYwMUQg
LyogUHJvdG90eXBlTWFwLmggaW4gSGVhZGVycyAqLywKQEAgLTY3MjksNiArNjc1Miw3IEBACiAJ
CQkJRTQ5REMxNkMxMkVGMjk0RTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUU0OURDMTZEMTJFRjI5NTMwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRl
ckNhY2hlSXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUUxNUVEOEU0NjAwRjE2N0Iy
IC8qIFNwYXJzZUFycmF5VmFsdWVNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGM0I3RTI2MTlB
MTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTczODY1NTQx
MTg2OTdCNDAwNTQwMjc5IC8qIFNwZWNpYWxpemVkVGh1bmtKSVQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNTU0MUIyMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZEODJFNTQxNDFEQUVFRTAwMTc5Qzk0IC8qIFNwZWN1bGF0ZWRUeXBlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTc4NTUsNiArNzg3OSw3IEBACiAJCQkJMEYyMzVCRDUxNzE3OEUx
QzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudEZvck9wZXJhbmQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEYyMzVCRDgxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRUaHVua0dlbmVyYXRvci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJEQTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhp
dFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGM0I3RTI3MTlBMTFCODAwMEQ5QkM1NiAv
KiBDYWxsRWRnZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdGMjk5NkIxN0EwQkI2
NzAwMTA0MTdBIC8qIEZUTEZhaWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEOEEzMTkxN0Q1
MUYyMjAwQ0EyQzQwIC8qIEZUTEZvck9TUkVudHJ5SklUQ29kZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjI1RjFBRjE4MTYzNUYzMDA1MjJGMzkgLyogRlRMSW5saW5lQ2FjaGVTaXplLmNwcCBp
biBTb3VyY2VzICovLApAQCAtODA0MSw2ICs4MDY2LDcgQEAKIAkJCQkwRjQ2ODBEMjE0QkJEMTY1
MDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzhCMDExMTdD
RjA3ODAwMEIxNDREMyAvKiBMTEludEVudHJ5cG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEY0NjgwQTgxNEJBN0ZBQjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRjNCN0UyRDE5QTEyQUFFMDBEOUJDNTYgLyogQ2FsbEVkZ2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50U2xvd1BhdGhz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMEI4MzlDMTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTElu
dFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkNFRkFDRDE4MDVFNzU1MDA0NzJDRTQg
LyogTExWTUFQSS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTgyMDEsNiArODIyNyw3IEBACiAJCQkJ
MTRFODRGQTAxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkE0RUM5MEIxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkM4MTUwQjE0MDQzQzBFMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVy
U3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjNCN0UyQTE5QTExQjgwMDBEOUJDNTYg
LyogQ2FsbFZhcmlhbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdFNUFCM0ExNzk5RTRCMjAw
RDI4MzNEIC8qIFg4NkRpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjNDNkQ5
QzE1MjExMTFBMDA1ODVFNEUgLyogWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODY3MDRCODQxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJJbnRlcnByZXRlci5jcHAg
aW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
RWRnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxFZGdlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsRWRnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQ2FsbEVkZ2UuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgQ2FsbEVk
Z2U6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoIjwiLCBt
X2NhbGxlZSwgIiwgY291bnQ6ICIsIG1fY291bnQsICI+Iik7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDYWxsRWRnZV9oCisjZGVmaW5lIENhbGxF
ZGdlX2gKKworI2luY2x1ZGUgIkNhbGxWYXJpYW50LmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0
eXBlZGVmIHVpbnQxNl90IENhbGxFZGdlQ291bnRUeXBlOworCitjbGFzcyBDYWxsRWRnZSB7Citw
dWJsaWM6CisgICAgQ2FsbEVkZ2UoKTsKKyAgICBDYWxsRWRnZShDYWxsVmFyaWFudCBjYWxsZWUs
IENhbGxFZGdlQ291bnRUeXBlIGNvdW50KTsKKyAgICAKKyAgICBib29sIG9wZXJhdG9yISgpIGNv
bnN0IHsgcmV0dXJuICFtX2NhbGxlZTsgfQorICAgIAorICAgIENhbGxWYXJpYW50IGNhbGxlZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FsbGVlOyB9CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgY291bnQo
KSBjb25zdCB7IHJldHVybiBtX2NvdW50OyB9CisgICAgCisgICAgQ2FsbEVkZ2UgZGVzcGVjaWZp
ZWRDbG9zdXJlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBDYWxsRWRnZShtX2NhbGxl
ZS5kZXNwZWNpZmllZENsb3N1cmUoKSwgbV9jb3VudCk7CisgICAgfQorICAgIAorICAgIHZvaWQg
ZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIAorcHVibGljOgorICAgIENhbGxWYXJpYW50
IG1fY2FsbGVlOworICAgIENhbGxFZGdlQ291bnRUeXBlIG1fY291bnQ7Cit9OworCitpbmxpbmUg
Q2FsbEVkZ2U6OkNhbGxFZGdlKENhbGxWYXJpYW50IGNhbGxlZSwgQ2FsbEVkZ2VDb3VudFR5cGUg
Y291bnQpCisgICAgOiBtX2NhbGxlZShjYWxsZWUpCisgICAgLCBtX2NvdW50KGNvdW50KQorewor
fQorCitpbmxpbmUgQ2FsbEVkZ2U6OkNhbGxFZGdlKCkKKyAgICA6IENhbGxFZGdlKENhbGxWYXJp
YW50KCksIDApCit7Cit9CisKK3R5cGVkZWYgVmVjdG9yPENhbGxFZGdlLCAxPiBDYWxsRWRnZUxp
c3Q7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ2FsbEVkZ2VfaAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxl
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
RWRnZVByb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzI5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJDYWxsRWRnZVByb2ZpbGUuaCIKKworI2luY2x1ZGUgIkNDYWxsSGVscGVy
cy5oIgorI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitDYWxsRWRnZUxpc3QgQ2FsbEVkZ2VQcm9maWxlOjpjYWxs
RWRnZXMoKSBjb25zdAoreworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7
CisgICAgCisgICAgQ2FsbEVkZ2VMaXN0IHJlc3VsdDsKKyAgICAKKyAgICBDYWxsVmFyaWFudCBw
cmltYXJ5Q2FsbGVlID0gbV9wcmltYXJ5Q2FsbGVlOworICAgIGZsb2F0IG51bUNhbGxzVG9Qcmlt
YXJ5ID0gbV9udW1DYWxsc1RvUHJpbWFyeTsKKyAgICAvLyBEZWZlbmQgYWdhaW5zdCByYWNlcy4g
VGhlc2UgZmllbGRzIGFyZSBtb2RpZmllZCBieSB0aGUgbG9nIHByb2Nlc3NvciB3aXRob3V0IGxv
Y2tpbmcuCisgICAgaWYgKCEhcHJpbWFyeUNhbGxlZSAmJiBudW1DYWxsc1RvUHJpbWFyeSkKKyAg
ICAgICAgcmVzdWx0LmFwcGVuZChDYWxsRWRnZShwcmltYXJ5Q2FsbGVlLCBudW1DYWxsc1RvUHJp
bWFyeSkpOworICAgIAorICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICAvLyBNYWtl
IHN1cmUgdGhhdCBpZiB0aGUgcHJpbWFyeSB0aHJlYWQgaGFkIGp1c3QgY3JlYXRlZCBhIG1fb3Ro
ZXJDYWxsZXMgd2hpbGUgbG9nCisgICAgICAgIC8vIHByb2Nlc3NpbmcsIHdlIHNlZSBhIGNvbnNp
c3RlbnRseSBjcmVhdGVkIG9uZS4gVGhlIGxvY2sgYmVpbmcgaGVsZCBpcyBpbnN1ZmZpY2llbnQg
Zm9yCisgICAgICAgIC8vIHRoaXMsIHNpbmNlIHRoZSBsb2cgcHJvY2Vzc29yIHdpbGwgb25seSBn
cmFiIHRoZSBsb2NrIHdoZW4gbWVyZ2luZyB0aGUgc2Vjb25kYXJ5CisgICAgICAgIC8vIHNwZWN0
cnVtIGludG8gdGhlIHByaW1hcnkgb25lIGJ1dCBtYXkgc3RpbGwgY3JlYXRlIHRoZSBkYXRhIHN0
cnVjdHVyZSB3aXRob3V0IGhvbGRpbmcKKyAgICAgICAgLy8gbG9ja3MuCisgICAgICAgIFdURjo6
bG9hZExvYWRGZW5jZSgpOworICAgICAgICBmb3IgKENhbGxFZGdlIGVudHJ5IDogbV9vdGhlckNh
bGxlZXMtPm1fcHJvY2Vzc2VkKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChlbnRyeSk7Cisg
ICAgfQorICAgIAorICAgIHN0ZDo6c29ydChyZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpLCBb
XSAoY29uc3QgQ2FsbEVkZ2UmIGEsIGNvbnN0IENhbGxFZGdlJiBiKSAtPiBib29sIHsKKyAgICAg
ICAgICAgIHJldHVybiBhLmNvdW50KCkgPiBiLmNvdW50KCk7CisgICAgICAgIH0pOworICAgIAor
ICAgIGlmIChyZXN1bHQuc2l6ZSgpID49IDIpCisgICAgICAgIEFTU0VSVChyZXN1bHRbMF0uY291
bnQoKSA+IHJlc3VsdC5sYXN0KCkuY291bnQoKSk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworQ2FsbEVkZ2VDb3VudFR5cGUgQ2FsbEVkZ2VQcm9maWxlOjpudW1DYWxsc1RvS25vd25D
ZWxscygpIGNvbnN0Cit7CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgcmVzdWx0ID0gMDsKKyAgICBm
b3IgKENhbGxFZGdlIGVkZ2UgOiBjYWxsRWRnZXMoKSkKKyAgICAgICAgcmVzdWx0ICs9IGVkZ2Uu
Y291bnQoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgYm9vbCB3b3J0aERlc3Bl
Y2lmeWluZyhjb25zdCBDYWxsVmFyaWFudCYgdmFyaWFudCkKK3sKKyAgICByZXR1cm4gIUhlYXA6
OmlzTWFya2VkKHZhcmlhbnQucmF3Q2FsbGVlQ2VsbCgpKQorICAgICAgICAmJiBIZWFwOjppc01h
cmtlZCh2YXJpYW50LmRlc3BlY2lmaWVkQ2xvc3VyZSgpLnJhd0NhbGxlZUNlbGwoKSk7Cit9CisK
K2Jvb2wgQ2FsbEVkZ2VQcm9maWxlOjp3b3J0aERlc3BlY2lmeWluZygpCit7CisgICAgaWYgKG1f
Y2xvc3VyZXNBcmVEZXNwZWNpZmllZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAg
IGlmICghIW1fcHJpbWFyeUNhbGxlZSAmJiAhSlNDOjp3b3J0aERlc3BlY2lmeWluZyhtX3ByaW1h
cnlDYWxsZWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKG1fb3RoZXJD
YWxsZWVzKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fb3RoZXJDYWxsZWVzLT5tX3By
b2Nlc3NlZC5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIGlmICghSlNDOjp3b3J0aERlc3Bl
Y2lmeWluZyhtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCkpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwordm9pZCBDYWxsRWRnZVByb2ZpbGU6OnZpc2l0V2VhaygpCit7CisgICAg
aWYgKCFtX3ByaW1hcnlDYWxsZWUgJiYgIW1fb3RoZXJDYWxsZWVzKQorICAgICAgICByZXR1cm47
CisgICAgCisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAKKyAg
ICAvLyBTZWUgaWYgYW55dGhpbmcgaXMgZGVhZCBhbmQgaWYgdGhhdCBjYW4gYmUgcmVjdGlmaWVk
IGJ5IGRlc3BlY2lmeWluZy4KKyAgICBpZiAod29ydGhEZXNwZWNpZnlpbmcoKSkgeworICAgICAg
ICBDYWxsU3BlY3RydW0gbmV3U3BlY3RydW07CisgICAgICAgIAorICAgICAgICBpZiAoISFtX3By
aW1hcnlDYWxsZWUpCisgICAgICAgICAgICBuZXdTcGVjdHJ1bS5hZGQobV9wcmltYXJ5Q2FsbGVl
LmRlc3BlY2lmaWVkQ2xvc3VyZSgpLCBtX251bUNhbGxzVG9QcmltYXJ5KTsKKyAgICAgICAgCisg
ICAgICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLnNpemUoKTsgaS0tOykgeworICAgICAgICAg
ICAgICAgIG5ld1NwZWN0cnVtLmFkZCgKKyAgICAgICAgICAgICAgICAgICAgbV9vdGhlckNhbGxl
ZXMtPm1fcHJvY2Vzc2VkW2ldLmNhbGxlZSgpLmRlc3BlY2lmaWVkQ2xvc3VyZSgpLAorICAgICAg
ICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQoKSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgVmVjdG9yPENhbGxTcGVjdHJ1bTo6S2V5QW5kQ291bnQ+IGxpc3QgPSBuZXdTcGVjdHJ1
bS5idWlsZExpc3QoKTsKKyAgICAgICAgQVNTRVJUKGxpc3Quc2l6ZSgpKTsKKyAgICAgICAgbV9w
cmltYXJ5Q2FsbGVlID0gbGlzdC5sYXN0KCkua2V5OworICAgICAgICBtX251bUNhbGxzVG9Qcmlt
YXJ5ID0gbGlzdC5sYXN0KCkuY291bnQ7CisgICAgICAgIAorICAgICAgICBBU1NFUlQoISFtX290
aGVyQ2FsbGVlcyA9PSAobGlzdC5zaXplKCkgPj0gMikpOworICAgICAgICBpZiAobV9vdGhlckNh
bGxlZXMpIHsKKyAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5jbGVhcigp
OworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbGlzdC5zaXplKCkgLSAxOyBpLS07KQor
ICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5hcHBlbmQoQ2FsbEVk
Z2UobGlzdFtpXS5rZXksIGxpc3RbaV0uY291bnQpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgbV9jbG9zdXJlc0FyZURlc3BlY2lmaWVkID0gdHJ1ZTsKKyAgICAgICAgCisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKCEhbV9wcmltYXJ5Q2FsbGVlICYmICFIZWFw
Ojppc01hcmtlZChtX3ByaW1hcnlDYWxsZWUucmF3Q2FsbGVlQ2VsbCgpKSkgeworICAgICAgICBt
X251bUNhbGxzVG9Vbmtub3duQ2VsbCArPSBtX251bUNhbGxzVG9QcmltYXJ5OworICAgICAgICAK
KyAgICAgICAgbV9wcmltYXJ5Q2FsbGVlID0gQ2FsbFZhcmlhbnQoKTsKKyAgICAgICAgbV9udW1D
YWxsc1RvUHJpbWFyeSA9IDA7CisgICAgfQorICAgIAorICAgIGlmIChtX290aGVyQ2FsbGVlcykg
eworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9vdGhlckNhbGxlZXMtPm1fcHJv
Y2Vzc2VkLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQobV9v
dGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNhbGxlZSgpLnJhd0NhbGxlZUNlbGwoKSkpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fbnVt
Q2FsbHNUb1Vua25vd25DZWxsICs9IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jb3Vu
dCgpOworICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ktLV0gPSBtX290
aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQubGFzdCgpOworICAgICAgICAgICAgbV9vdGhlckNhbGxl
ZXMtPm1fcHJvY2Vzc2VkLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgLy8gT25seSBleGlzdHMgd2hpbGUgd2UgYXJlIHByb2Nlc3NpbmcgdGhlIGxvZy4KKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoIW1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtKTsK
KyAgICB9Cit9CisKK3ZvaWQgQ2FsbEVkZ2VQcm9maWxlOjphZGRTbG93KENhbGxWYXJpYW50IGNh
bGxlZSwgQ2FsbEVkZ2VQcm9maWxlVmVjdG9yJiBtZXJnZUJhY2tMb2cpCit7CisgICAgLy8gVGhp
cyBleGlzdHMgdG8gaGFuZGxlIGNhc2VzIHdoZXJlIHRoZSBzcGVjdHJ1bSB3YXNuJ3QgY3JlYXRl
ZCB5ZXQsIG9yIHdlJ3JlIHN0b3JpbmcgdG8gYQorICAgIC8vIHBhcnRpY3VsYXIgc3BlY3RydW0g
Zm9yIHRoZSBmaXJzdCB0aW1lIGR1cmluZyBhIGxvZyBwcm9jZXNzaW5nIGl0ZXJhdGlvbi4KKyAg
ICAKKyAgICBpZiAoIW1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgIG1fb3RoZXJDYWxsZWVzID0g
c3RkOjptYWtlX3VuaXF1ZTxTZWNvbmRhcnk+KCk7CisgICAgICAgIC8vIElmIGEgY29tcGlsZXIg
dGhyZWFkIG5vdGljZXMgdGhlIG1fb3RoZXJDYWxsZWVzIGJlaW5nIG5vbi1udWxsLCB3ZSB3YW50
IHRvIG1ha2Ugc3VyZQorICAgICAgICAvLyB0aGF0IGl0IHNlZXMgYSBmdWxseSBjcmVhdGVkIG9u
ZS4KKyAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKKyAgICB9CisgICAgCisgICAgaWYg
KCFtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSkgeworICAgICAgICBtX290aGVy
Q2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbFNwZWN0
cnVtPigpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9j
ZXNzZWQuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1w
b3JhcnlTcGVjdHJ1bS0+YWRkKAorICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3By
b2Nlc3NlZFtpXS5jYWxsZWUoKSwKKyAgICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9w
cm9jZXNzZWRbaV0uY291bnQoKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFRo
aXMgbWVhbnMgdGhhdCB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHdlJ3JlIHNlZWluZyB0aGlzIHBy
b2ZpbGUgZHVyaW5nIHRoaXMgbG9nCisgICAgICAgIC8vIHByb2Nlc3NpbmcgaXRlcmF0aW9uLgor
ICAgICAgICBtZXJnZUJhY2tMb2cuYXBwZW5kKHRoaXMpOworICAgIH0KKyAgICAKKyAgICBtX290
aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+YWRkKGNhbGxlZSk7Cit9CisKK3ZvaWQg
Q2FsbEVkZ2VQcm9maWxlOjptZXJnZUJhY2soKQoreworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIg
bG9ja2VyKG1fbG9jayk7CisgICAgCisgICAgQVNTRVJUKG1fb3RoZXJDYWxsZWVzKTsKKyAgICBB
U1NFUlQobV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0pOworICAgIAorICAgIGlm
ICghIW1fcHJpbWFyeUNhbGxlZSkKKyAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5
U3BlY3RydW0tPmFkZChtX3ByaW1hcnlDYWxsZWUsIG1fbnVtQ2FsbHNUb1ByaW1hcnkpOworICAg
IAorICAgIGlmICghbV9jbG9zdXJlc0FyZURlc3BlY2lmaWVkKSB7CisgICAgICAgIENhbGxTcGVj
dHJ1bSBuZXdTcGVjdHJ1bTsKKyAgICAgICAgZm9yIChhdXRvIGVudHJ5IDogKm1fb3RoZXJDYWxs
ZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtKQorICAgICAgICAgICAgbmV3U3BlY3RydW0uYWRkKGVu
dHJ5LmtleS5kZXNwZWNpZmllZENsb3N1cmUoKSwgZW50cnkudmFsdWUpOworICAgICAgICAKKyAg
ICAgICAgaWYgKG5ld1NwZWN0cnVtLnNpemUoKSA8IG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFy
eVNwZWN0cnVtLT5zaXplKCkpCisgICAgICAgICAgICAqbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9y
YXJ5U3BlY3RydW0gPSBuZXdTcGVjdHJ1bTsKKyAgICAgICAgCisgICAgICAgIG1fY2xvc3VyZXNB
cmVEZXNwZWNpZmllZCA9IHRydWU7CisgICAgfQorICAgIAorICAgIFZlY3RvcjxDYWxsU3BlY3Ry
dW06OktleUFuZENvdW50PiBsaXN0ID0gbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3Ry
dW0tPmJ1aWxkTGlzdCgpOworICAgIG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVt
ID0gbnVsbHB0cjsKKyAgICAKKyAgICBtX3ByaW1hcnlDYWxsZWUgPSBsaXN0Lmxhc3QoKS5rZXk7
CisgICAgbV9udW1DYWxsc1RvUHJpbWFyeSA9IGxpc3QubGFzdCgpLmNvdW50OworICAgIGxpc3Qu
cmVtb3ZlTGFzdCgpOworICAgIAorICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5jbGVh
cigpOworICAgIGZvciAodW5zaWduZWQgY291bnQgPSBtYXhLbm93bkNhbGxlZXM7IGNvdW50LS0g
JiYgIWxpc3QuaXNFbXB0eSgpOykgeworICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNz
ZWQuYXBwZW5kKENhbGxFZGdlKGxpc3QubGFzdCgpLmtleSwgbGlzdC5sYXN0KCkuY291bnQpKTsK
KyAgICAgICAgbGlzdC5yZW1vdmVMYXN0KCk7CisgICAgfQorICAgIAorICAgIGZvciAodW5zaWdu
ZWQgaSA9IGxpc3Quc2l6ZSgpOyBpLS07KQorICAgICAgICBtX251bUNhbGxzVG9Vbmtub3duQ2Vs
bCArPSBsaXN0W2ldLmNvdW50OworfQorCit2b2lkIENhbGxFZGdlUHJvZmlsZTo6ZmFkZUJ5SGFs
ZigpCit7CisgICAgbV9udW1DYWxsc1RvUHJpbWFyeSA+Pj0gMTsKKyAgICBtX251bUNhbGxzVG9O
b3RDZWxsID4+PSAxOworICAgIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxsID4+PSAxOworICAgIG1f
dG90YWxDb3VudCA+Pj0gMTsKKyAgICAKKyAgICBpZiAobV9vdGhlckNhbGxlZXMpIHsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLnNpemUoKTsg
aS0tOykgeworICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldID0gQ2Fs
bEVkZ2UoCisgICAgICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNh
bGxlZSgpLAorICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5j
b3VudCgpID4+IDEpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAobV9vdGhlckNh
bGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0pIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBlbnRy
eSA6ICptX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSkKKyAgICAgICAgICAgICAg
ICBlbnRyeS52YWx1ZSA+Pj0gMTsKKyAgICAgICAgfQorICAgIH0KK30KKworQ2FsbEVkZ2VMb2c6
OkNhbGxFZGdlTG9nKCkKKyAgICA6IG1fc2NhbGVkTG9nSW5kZXgobG9nU2l6ZSAqIHNpemVvZihF
bnRyeSkpCit7Cit9CisKK0NhbGxFZGdlTG9nOjp+Q2FsbEVkZ2VMb2coKSB7IH0KKworI2lmIEVO
QUJMRShKSVQpCisKK2V4dGVybiAiQyIgSklUX09QRVJBVElPTiB2b2lkIG9wZXJhdGlvblByb2Nl
c3NDYWxsRWRnZUxvZyhDYWxsRWRnZUxvZyopIFdURl9JTlRFUk5BTDsKK2V4dGVybiAiQyIgSklU
X09QRVJBVElPTiB2b2lkIG9wZXJhdGlvblByb2Nlc3NDYWxsRWRnZUxvZyhDYWxsRWRnZUxvZyog
bG9nKQoreworICAgIGxvZy0+cHJvY2Vzc0xvZygpOworfQorCit2b2lkIENhbGxFZGdlTG9nOjpl
bWl0TG9nQ29kZShDQ2FsbEhlbHBlcnMmIGppdCwgQ2FsbEVkZ2VQcm9maWxlJiBwcm9maWxlLCBK
U1ZhbHVlUmVncyBjYWxsZWVSZWdzKQoreworICAgIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQXJn
dW1lbnRzID0gMTsKKyAgICAKKyAgICBHUFJSZWcgc2NyYXRjaEdQUjsKKyAgICBpZiAoIWNhbGxl
ZVJlZ3MudXNlcyhHUFJJbmZvOjpyZWdUMCkpCisgICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJbmZv
OjpyZWdUMDsKKyAgICBlbHNlIGlmICghY2FsbGVlUmVncy51c2VzKEdQUkluZm86OnJlZ1QxKSkK
KyAgICAgICAgc2NyYXRjaEdQUiA9IEdQUkluZm86OnJlZ1QxOworICAgIGVsc2UKKyAgICAgICAg
c2NyYXRjaEdQUiA9IEdQUkluZm86OnJlZ1QyOworICAgIAorICAgIGppdC5sb2FkMzIoJm1fc2Nh
bGVkTG9nSW5kZXgsIHNjcmF0Y2hHUFIpOworICAgIAorICAgIENDYWxsSGVscGVyczo6SnVtcCBv
ayA9IGppdC5icmFuY2hUZXN0MzIoQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBzY3JhdGNoR1BSKTsK
KyAgICAKKyAgICBBU1NFUlQoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSA+PSAxICsgbnVtYmVy
T2ZBcmd1bWVudHMpOworICAgIAorICAgIGppdC5zdWJQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoc3RhY2tBbGlnbm1lbnRCeXRlcygpKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJS
ZWdpc3Rlcik7CisgICAgCisgICAgaml0LnN0b3JlVmFsdWUoY2FsbGVlUmVncywgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIHNpemVvZihK
U1ZhbHVlKSkpOworICAgIGppdC5zZXR1cEFyZ3VtZW50cyhjYWxsZWVSZWdzKTsKKyAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihvcGVy
YXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2cpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgaml0
LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgaml0LmxvYWRWYWx1ZShDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2l6ZW9mKEpT
VmFsdWUpKSwgY2FsbGVlUmVncyk7CisgICAgCisgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihzdGFja0FsaWdubWVudEJ5dGVzKCkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKKyAgICAKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihsb2dTaXplICogc2l6ZW9mKEVudHJ5KSksIHNjcmF0Y2hHUFIpOworICAgIG9rLmxp
bmsoJmppdCk7CisKKyAgICBqaXQuc3ViMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2l6
ZW9mKEVudHJ5KSksIHNjcmF0Y2hHUFIpOworICAgIGppdC5zdG9yZTMyKHNjcmF0Y2hHUFIsICZt
X3NjYWxlZExvZ0luZGV4KTsKKyAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihtX2xvZyksIHNjcmF0Y2hHUFIpOworICAgIGppdC5zdG9yZVZhbHVlKGNhbGxlZVJlZ3Ms
IENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW50cnks
IG1fdmFsdWUpKSk7CisgICAgaml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cigmcHJvZmlsZSksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZG
U0VUT0YoRW50cnksIG1fcHJvZmlsZSkpKTsKK30KKwordm9pZCBDYWxsRWRnZUxvZzo6ZW1pdExv
Z0NvZGUoCisgICAgQ0NhbGxIZWxwZXJzJiBqaXQsIE93blB0cjxDYWxsRWRnZVByb2ZpbGU+JiBw
cm9maWxlUG9pbnRlciwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncykKK3sKKyAgICBpZiAoIU9wdGlv
bnM6OmVuYWJsZUNhbGxFZGdlUHJvZmlsaW5nKCkgfHwgIU9wdGlvbnM6OnVzZUZUTEpJVCgpKQor
ICAgICAgICByZXR1cm47CisgICAgCisgICAgcHJvZmlsZVBvaW50ZXIuY3JlYXRlVHJhbnNhY3Rp
b25hbGx5KCk7CisgICAgZW1pdExvZ0NvZGUoaml0LCAqcHJvZmlsZVBvaW50ZXIsIGNhbGxlZVJl
Z3MpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKwordm9pZCBDYWxsRWRnZUxvZzo6cHJv
Y2Vzc0xvZygpCit7CisgICAgQVNTRVJUKCEobV9zY2FsZWRMb2dJbmRleCAlIHNpemVvZihFbnRy
eSkpKTsKKyAgICAKKyAgICBDYWxsRWRnZVByb2ZpbGVWZWN0b3IgbWVyZ2VCYWNrTG9nOworICAg
IAorICAgIGZvciAodW5zaWduZWQgaSA9IG1fc2NhbGVkTG9nSW5kZXggLyBzaXplb2YoRW50cnkp
OyBpIDwgbG9nU2l6ZTsgKytpKQorICAgICAgICBtX2xvZ1tpXS5tX3Byb2ZpbGUtPmFkZChtX2xv
Z1tpXS5tX3ZhbHVlLCBtZXJnZUJhY2tMb2cpOworICAgIAorICAgIG1fc2NhbGVkTG9nSW5kZXgg
PSBsb2dTaXplICogc2l6ZW9mKEVudHJ5KTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBt
ZXJnZUJhY2tMb2cuc2l6ZSgpOyBpLS07KQorICAgICAgICBtZXJnZUJhY2tMb2dbaV0tPm1lcmdl
QmFjaygpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDEyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIENhbGxFZGdlUHJvZmlsZV9oCisjZGVmaW5lIENhbGxF
ZGdlUHJvZmlsZV9oCisKKyNpbmNsdWRlICJDYWxsRWRnZS5oIgorI2luY2x1ZGUgIkNhbGxWYXJp
YW50LmgiCisjaW5jbHVkZSAiQ29uY3VycmVudEpJVExvY2suaCIKKyNpbmNsdWRlICJKU0NlbGwu
aCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBD
Q2FsbEhlbHBlcnM7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKK2NsYXNzIENhbGxF
ZGdlTG9nOworY2xhc3MgQ2FsbEVkZ2VQcm9maWxlOwordHlwZWRlZiBWZWN0b3I8Q2FsbEVkZ2VQ
cm9maWxlKiwgMTA+IENhbGxFZGdlUHJvZmlsZVZlY3RvcjsKKworY2xhc3MgQ2FsbEVkZ2VQcm9m
aWxlIHsKK3B1YmxpYzoKKyAgICBDYWxsRWRnZVByb2ZpbGUoKTsKKyAgICAKKyAgICBDYWxsRWRn
ZUNvdW50VHlwZSBudW1DYWxsc1RvTm90Q2VsbCgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQ2FsbHNU
b05vdENlbGw7IH0KKyAgICBDYWxsRWRnZUNvdW50VHlwZSBudW1DYWxsc1RvVW5rbm93bkNlbGwo
KSBjb25zdCB7IHJldHVybiBtX251bUNhbGxzVG9Vbmtub3duQ2VsbDsgfQorICAgIENhbGxFZGdl
Q291bnRUeXBlIG51bUNhbGxzVG9Lbm93bkNlbGxzKCkgY29uc3Q7CisgICAgCisgICAgLy8gQ2Fs
bCB3aGlsZSBob2xkaW5nIHRoZSBvd25pbmcgQ29kZUJsb2NrJ3MgbG9jay4KKyAgICBDYWxsRWRn
ZUxpc3QgY2FsbEVkZ2VzKCkgY29uc3Q7CisgICAgCisgICAgdm9pZCB2aXNpdFdlYWsoKTsKKyAg
ICAKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIENhbGxFZGdlTG9nOworICAgIAorICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhLbm93bkNhbGxlZXMgPSA1OworICAgIAorICAgIHZvaWQg
YWRkKEpTVmFsdWUsIENhbGxFZGdlUHJvZmlsZVZlY3RvciYgbWVyZ2VCYWNrTG9nKTsKKyAgICAK
KyAgICBib29sIHdvcnRoRGVzcGVjaWZ5aW5nKCk7CisgICAgdm9pZCBhZGRTbG93KENhbGxWYXJp
YW50LCBDYWxsRWRnZVByb2ZpbGVWZWN0b3ImIG1lcmdlQmFja0xvZyk7CisgICAgdm9pZCBtZXJn
ZUJhY2soKTsKKyAgICB2b2lkIGZhZGVCeUhhbGYoKTsKKyAgICAKKyAgICAvLyBJdCdzIGNoZWFw
ZXIgdG8gbGV0IHRoaXMgaGF2ZSBpdHMgb3duIGxvY2suIEl0IG5lZWRzIHRvIGJlIGFibGUgdG8g
ZmluZCB3aGljaCBsb2NrIHRvCisgICAgLy8gbG9jay4gTm9ybWFsbHkgaXQgd291bGQgbG9jayB0
aGUgb3duaW5nIENvZGVCbG9jaydzIGxvY2ssIGJ1dCB0aGF0IHdvdWxkIHJlcXVpcmUgYQorICAg
IC8vIHBvaW50ZXItd2lkdGggd29yZCB0byBwb2ludCBhdCB0aGUgQ29kZUJsb2NrLiBIYXZpbmcg
dGhlIGJ5dGUtc2l6ZWQgbG9jayBoZXJlIGlzCisgICAgLy8gY2hlYXBlci4gSG93ZXZlciwgdGhp
cyBtZWFucyB0aGF0IHRoZSByZWxhdGlvbnNoaXAgd2l0aCB0aGUgQ29kZUJsb2NrIGxvY2sgaXM6
CisgICAgLy8gYWNxdWlyZSB0aGUgQ29kZUJsb2NrIGxvY2sgYmVmb3JlIHRoaXMgb25lLgorICAg
IG11dGFibGUgQ29uY3VycmVudEpJVExvY2sgbV9sb2NrOworICAgIAorICAgIGJvb2wgbV9jbG9z
dXJlc0FyZURlc3BlY2lmaWVkOworICAgIAorICAgIENhbGxFZGdlQ291bnRUeXBlIG1fbnVtQ2Fs
bHNUb1ByaW1hcnk7CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbV9udW1DYWxsc1RvTm90Q2VsbDsK
KyAgICBDYWxsRWRnZUNvdW50VHlwZSBtX251bUNhbGxzVG9Vbmtub3duQ2VsbDsKKyAgICBDYWxs
RWRnZUNvdW50VHlwZSBtX3RvdGFsQ291bnQ7CisgICAgQ2FsbFZhcmlhbnQgbV9wcmltYXJ5Q2Fs
bGVlOworICAgIAorICAgIHR5cGVkZWYgU3BlY3RydW08Q2FsbFZhcmlhbnQsIENhbGxFZGdlQ291
bnRUeXBlPiBDYWxsU3BlY3RydW07CisgICAgCisgICAgc3RydWN0IFNlY29uZGFyeSB7CisgICAg
ICAgIFZlY3RvcjxDYWxsRWRnZT4gbV9wcm9jZXNzZWQ7IC8vIFByb2Nlc3NlZCBidXQgbm90IG5l
Y2Vzc2FyaWx5IHNvcnRlZC4KKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxTcGVjdHJ1bT4g
bV90ZW1wb3JhcnlTcGVjdHJ1bTsKKyAgICB9OworICAgIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxT
ZWNvbmRhcnk+IG1fb3RoZXJDYWxsZWVzOworfTsKKworY2xhc3MgQ2FsbEVkZ2VMb2cgeworcHVi
bGljOgorICAgIENhbGxFZGdlTG9nKCk7CisgICAgfkNhbGxFZGdlTG9nKCk7CisKKyNpZiBFTkFC
TEUoSklUKSAgICAKKyAgICB2b2lkIGVtaXRMb2dDb2RlKENDYWxsSGVscGVycyYsIENhbGxFZGdl
UHJvZmlsZSYsIEpTVmFsdWVSZWdzIGNhbGxlZVJlZ3MpOyAvLyBBc3N1bWVzIHRoYXQgc3RhY2sg
aXMgYWxpZ25lZCwgYWxsIHZvbGF0aWxlIHJlZ2lzdGVycyAtIG90aGVyIHRoYW4gY2FsbGVlR1BS
IC0gYXJlIGNsb2JiZXJhYmxlLCBhbmQgdGhlIHBhcmFtZXRlciBzcGFjZSBpcyBpbiB1c2UuCisg
ICAgCisgICAgLy8gU2FtZSBhcyBhYm92ZSBidXQgY3JlYXRlcyBhIENhbGxFZGdlUHJvZmlsZSBp
bnN0YW5jZSBpZiBvbmUgZGlkIG5vdCBhbHJlYWR5IGV4aXN0LiBEb2VzCisgICAgLy8gdGhpcyBp
biBhIHRocmVhZC1zYWZlIG1hbm5lciBieSBjYWxsaW5nIE93blB0cjo6Y3JlYXRlVHJhbnNhY3Rp
b25hbGx5LgorICAgIHZvaWQgZW1pdExvZ0NvZGUoQ0NhbGxIZWxwZXJzJiwgT3duUHRyPENhbGxF
ZGdlUHJvZmlsZT4mLCBKU1ZhbHVlUmVncyBjYWxsZWVSZWdzKTsKKyNlbmRpZiAvLyBFTkFCTEUo
SklUKQorICAgIAorICAgIHZvaWQgcHJvY2Vzc0xvZygpOworICAgIAorcHJpdmF0ZToKKyAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGxvZ1NpemUgPSAxMDAwMDsKKyAgICAKKyAgICBzdHJ1Y3QgRW50cnkgeworICAgICAg
ICBKU1ZhbHVlIG1fdmFsdWU7CisgICAgICAgIENhbGxFZGdlUHJvZmlsZSogbV9wcm9maWxlOwor
ICAgIH07CisgICAgCisgICAgdW5zaWduZWQgbV9zY2FsZWRMb2dJbmRleDsKKyAgICBFbnRyeSBt
X2xvZ1tsb2dTaXplXTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ2Fs
bEVkZ2VQcm9maWxlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxFZGdlUHJvZmlsZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZUlubGluZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ2FsbEVkZ2VQcm9maWxlSW5saW5lc19oCisjZGVm
aW5lIENhbGxFZGdlUHJvZmlsZUlubGluZXNfaAorCisjaW5jbHVkZSAiQ2FsbEVkZ2VQcm9maWxl
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitpbmxpbmUgQ2FsbEVkZ2VQcm9maWxlOjpDYWxsRWRn
ZVByb2ZpbGUoKQorICAgIDogbV9jbG9zdXJlc0FyZURlc3BlY2lmaWVkKGZhbHNlKQorICAgICwg
bV9udW1DYWxsc1RvUHJpbWFyeSgwKQorICAgICwgbV9udW1DYWxsc1RvTm90Q2VsbCgwKQorICAg
ICwgbV9udW1DYWxsc1RvVW5rbm93bkNlbGwoMCkKKyAgICAsIG1fdG90YWxDb3VudCgwKQorICAg
ICwgbV9wcmltYXJ5Q2FsbGVlKG51bGxwdHIpCit7Cit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCBD
YWxsRWRnZVByb2ZpbGU6OmFkZChKU1ZhbHVlIHZhbHVlLCBDYWxsRWRnZVByb2ZpbGVWZWN0b3Im
IG1lcmdlQmFja0xvZykKK3sKKyAgICB1bnNpZ25lZCBuZXdUb3RhbENvdW50ID0gbV90b3RhbENv
dW50ICsgMTsKKyAgICBpZiAoVU5MSUtFTFkoIW5ld1RvdGFsQ291bnQpKSB7CisgICAgICAgIGZh
ZGVCeUhhbGYoKTsgLy8gVGFja2xlIG92ZXJmbG93cyBieSBkaXZpZGluZyBhbGwgY291bnRzIGJ5
IHR3by4KKyAgICAgICAgbmV3VG90YWxDb3VudCA9IG1fdG90YWxDb3VudCArIDE7CisgICAgfQor
ICAgIEFTU0VSVChuZXdUb3RhbENvdW50KTsKKyAgICBtX3RvdGFsQ291bnQgPSBuZXdUb3RhbENv
dW50OworICAgIAorICAgIGlmIChVTkxJS0VMWSghdmFsdWUuaXNDZWxsKCkpKSB7CisgICAgICAg
IG1fbnVtQ2FsbHNUb05vdENlbGwrKzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIENh
bGxWYXJpYW50IGNhbGxlZSA9IENhbGxWYXJpYW50KHZhbHVlLmFzQ2VsbCgpKTsKKyAgICAKKyAg
ICBpZiAobV9jbG9zdXJlc0FyZURlc3BlY2lmaWVkKQorICAgICAgICBjYWxsZWUgPSBjYWxsZWUu
ZGVzcGVjaWZpZWRDbG9zdXJlKCk7CisgICAgICAgIAorICAgIGlmIChVTkxJS0VMWSghbV9wcmlt
YXJ5Q2FsbGVlKSkgeworICAgICAgICBtX3ByaW1hcnlDYWxsZWUgPSBjYWxsZWU7CisgICAgICAg
IG1fbnVtQ2FsbHNUb1ByaW1hcnkgPSAxOworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAg
ICAKKyAgICBpZiAoTElLRUxZKG1fcHJpbWFyeUNhbGxlZSA9PSBjYWxsZWUpKSB7CisgICAgICAg
IG1fbnVtQ2FsbHNUb1ByaW1hcnkrKzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAg
CisgICAgaWYgKFVOTElLRUxZKCFtX290aGVyQ2FsbGVlcykpIHsKKyAgICAgICAgYWRkU2xvdyhj
YWxsZWUsIG1lcmdlQmFja0xvZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAor
ICAgIENhbGxTcGVjdHJ1bSogc2Vjb25kYXJ5ID0gbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5
U3BlY3RydW0uZ2V0KCk7CisgICAgaWYgKCFzZWNvbmRhcnkpIHsKKyAgICAgICAgYWRkU2xvdyhj
YWxsZWUsIG1lcmdlQmFja0xvZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAor
ICAgIHNlY29uZGFyeS0+YWRkKGNhbGxlZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gQ2FsbEVkZ2VQcm9maWxlSW5saW5lc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCShyZXZpc2lvbiAxNzIxNzcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODMsNiArODMsMTEgQEAgdm9pZCBDYWxsTGlua0luZm86OnZpc2l0V2Vh
ayhSZXBhdGNoQnVmZgogICAgIH0KICAgICBpZiAoISFsYXN0U2VlbkNhbGxlZSAmJiAhSGVhcDo6
aXNNYXJrZWQobGFzdFNlZW5DYWxsZWUuZ2V0KCkpKQogICAgICAgICBsYXN0U2VlbkNhbGxlZS5j
bGVhcigpOworICAgIAorICAgIGlmIChjYWxsRWRnZVByb2ZpbGUpIHsKKyAgICAgICAgV1RGOjps
b2FkTG9hZEZlbmNlKCk7CisgICAgICAgIGNhbGxFZGdlUHJvZmlsZS0+dmlzaXRXZWFrKCk7Cisg
ICAgfQogfQogCiBDYWxsTGlua0luZm8mIENhbGxMaW5rSW5mbzo6ZHVtbXkoKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAkocmV2aXNpb24g
MTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIENhbGxMaW5rSW5mb19o
CiAjZGVmaW5lIENhbGxMaW5rSW5mb19oCiAKKyNpbmNsdWRlICJDYWxsRWRnZVByb2ZpbGUuaCIK
ICNpbmNsdWRlICJDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmgiCiAjaW5jbHVkZSAiQ29kZUxvY2F0
aW9uLmgiCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgpAQCAtMzMsNiArMzQs
NyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNs
dWRlICJXcml0ZUJhcnJpZXIuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTg4LDYgKzkw
LDcgQEAgc3RydWN0IENhbGxMaW5rSW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1NlbgogICAgIHVuc2ln
bmVkIGNhbGxlZUdQUiA6IDg7CiAgICAgdW5zaWduZWQgc2xvd1BhdGhDb3VudDsKICAgICBDb2Rl
T3JpZ2luIGNvZGVPcmlnaW47CisgICAgT3duUHRyPENhbGxFZGdlUHJvZmlsZT4gY2FsbEVkZ2VQ
cm9maWxlOwogCiAgICAgYm9vbCBpc0xpbmtlZCgpIHsgcmV0dXJuIHN0dWIgfHwgY2FsbGVlOyB9
CiAgICAgdm9pZCB1bmxpbmsoUmVwYXRjaEJ1ZmZlciYpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZpc2lvbiAxNzIx
NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw1NCArMzIsMjIgQEAKICNpbmNsdWRlICJMTEludENhbGxM
aW5rSW5mby5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvQ29tbWFQ
cmludGVyLmg+CisjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CiAKIG5hbWVzcGFjZSBKU0Mgewog
CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKIENhbGxMaW5rU3RhdHVzOjpD
YWxsTGlua1N0YXR1cyhKU1ZhbHVlIHZhbHVlKQotICAgIDogbV9jYWxsVGFyZ2V0KHZhbHVlKQot
ICAgICwgbV9leGVjdXRhYmxlKDApCi0gICAgLCBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQor
ICAgIDogbV9jb3VsZFRha2VTbG93UGF0aChmYWxzZSkKICAgICAsIG1faXNQcm92ZWQoZmFsc2Up
CiB7Ci0gICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkpCisgICAgaWYgKCF2YWx1ZSB8
fCAhdmFsdWUuaXNDZWxsKCkpIHsKKyAgICAgICAgbV9jb3VsZFRha2VTbG93UGF0aCA9IHRydWU7
CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgCi0gICAgaWYgKCF2YWx1ZS5hc0NlbGwoKS0+
aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAg
IG1fZXhlY3V0YWJsZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4odmFsdWUuYXNDZWxsKCkpLT5leGVj
dXRhYmxlKCk7Ci19Ci0KLUpTRnVuY3Rpb24qIENhbGxMaW5rU3RhdHVzOjpmdW5jdGlvbigpIGNv
bnN0Ci17Ci0gICAgaWYgKCFtX2NhbGxUYXJnZXQgfHwgIW1fY2FsbFRhcmdldC5pc0NlbGwoKSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgaWYgKCFtX2NhbGxUYXJnZXQuYXNDZWxsKCkt
PmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpCi0gICAgICAgIHJldHVybiAwOwotICAgIAot
ICAgIHJldHVybiBqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2FsbFRhcmdldC5hc0NlbGwoKSk7Ci19
Ci0KLUludGVybmFsRnVuY3Rpb24qIENhbGxMaW5rU3RhdHVzOjppbnRlcm5hbEZ1bmN0aW9uKCkg
Y29uc3QKLXsKLSAgICBpZiAoIW1fY2FsbFRhcmdldCB8fCAhbV9jYWxsVGFyZ2V0LmlzQ2VsbCgp
KQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBpZiAoIW1fY2FsbFRhcmdldC5hc0NlbGwo
KS0+aW5oZXJpdHMoSW50ZXJuYWxGdW5jdGlvbjo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgCi0gICAgcmV0dXJuIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4obV9jYWxsVGFyZ2V0
LmFzQ2VsbCgpKTsKLX0KLQotSW50cmluc2ljIENhbGxMaW5rU3RhdHVzOjppbnRyaW5zaWNGb3Io
Q29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKSBjb25zdAotewotICAgIGlmICghbV9leGVjdXRh
YmxlKQotICAgICAgICByZXR1cm4gTm9JbnRyaW5zaWM7Ci0gICAgCi0gICAgcmV0dXJuIG1fZXhl
Y3V0YWJsZS0+aW50cmluc2ljRm9yKGtpbmQpOworICAgIG1fZWRnZXMuYXBwZW5kKENhbGxFZGdl
KENhbGxWYXJpYW50KHZhbHVlLmFzQ2VsbCgpKSwgMSkpOwogfQogCiBDYWxsTGlua1N0YXR1cyBD
YWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludChjb25zdCBDb25jdXJyZW50SklUTG9ja2Vy
JiBsb2NrZXIsIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRl
eCkKQEAgLTg3LDcgKzU1LDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVGcgogICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURfUEFSQU0o
Ynl0ZWNvZGVJbmRleCk7CiAjaWYgRU5BQkxFKERGR19KSVQpCi0gICAgaWYgKHByb2ZpbGVkQmxv
Y2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5k
ZXgsIEJhZEZ1bmN0aW9uKSkpIHsKKyAgICBpZiAocHJvZmlsZWRCbG9jay0+aGFzRXhpdFNpdGUo
bG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkQ2VsbCkpKSB7
CiAgICAgICAgIC8vIFdlIGNvdWxkIGZvcmNlIHRoaXMgdG8gYmUgYSBjbG9zdXJlIGNhbGwsIGJ1
dCBpbnN0ZWFkIHdlJ2xsIGp1c3QgYXNzdW1lIHRoYXQgaXQKICAgICAgICAgLy8gdGFrZXMgc2xv
dyBwYXRoLgogICAgICAgICByZXR1cm4gdGFrZXNTbG93UGF0aCgpOwpAQCAtMTM5LDEwICsxMDcs
MTAgQEAgQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBDYWxsTGlua1N0YQogICAgIAogI2lm
IEVOQUJMRShERkdfSklUKQogICAgIGV4aXRTaXRlRGF0YS5tX3Rha2VzU2xvd1BhdGggPQotICAg
ICAgICBwcm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0
U2l0ZShieXRlY29kZUluZGV4LCBCYWRDYWNoZSwgZXhpdGluZ0pJVFR5cGUpKQorICAgICAgICBw
cm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShi
eXRlY29kZUluZGV4LCBCYWRUeXBlLCBleGl0aW5nSklUVHlwZSkpCiAgICAgICAgIHx8IHByb2Zp
bGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVj
b2RlSW5kZXgsIEJhZEV4ZWN1dGFibGUsIGV4aXRpbmdKSVRUeXBlKSk7CiAgICAgZXhpdFNpdGVE
YXRhLm1fYmFkRnVuY3Rpb24gPQotICAgICAgICBwcm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0ZShs
b2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRGdW5jdGlvbiwg
ZXhpdGluZ0pJVFR5cGUpKTsKKyAgICAgICAgcHJvZmlsZWRCbG9jay0+aGFzRXhpdFNpdGUobG9j
a2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkQ2VsbCwgZXhpdGlu
Z0pJVFR5cGUpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGxvY2tlcik7CiAgICAgVU5VU0VE
X1BBUkFNKHByb2ZpbGVkQmxvY2spOwpAQCAtMTU2LDYgKzEyNCwxOCBAQCBDYWxsTGlua1N0YXR1
czo6RXhpdFNpdGVEYXRhIENhbGxMaW5rU3RhCiAjaWYgRU5BQkxFKEpJVCkKIENhbGxMaW5rU3Rh
dHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXIm
LCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykKIHsKKyAgICAvLyBBbHdheXMgdHJ1c3QgdGhl
IGNhbGwgZWRnZSBwcm9maWxlIG92ZXIgYW55dGhpbmcgZWxzZSBzaW5jZSB0aGlzIGhhcyBwcmVj
aXNlIGNvdW50cy4KKyAgICAvLyBJdCBjYW4gbWFrZSB0aGUgYmVzdCBwb3NzaWJsZSBkZWNpc2lv
biBiZWNhdXNlIGl0IG5ldmVyICJmb3JnZXRzIiB3aGF0IGhhcHBlbmVkIGZvciBhbnkKKyAgICAv
LyBjYWxsLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgZmFkaW5nIG91dCB0aGUgY291bnRzIG9mIG9s
ZCBjYWxscyAoZm9yIGV4YW1wbGUgaWYgdGhlCisgICAgLy8gY291bnRlciB0eXBlIGlzIDE2LWJp
dCB0aGVuIGNhbGxzIHRoYXQgaGFwcGVuZWQgbW9yZSB0aGFuIDJeMTYgY2FsbHMgYWdvIGFyZSBn
aXZlbiBoYWxmCisgICAgLy8gd2VpZ2h0LCBhbmQgdGhpcyBjb21wb3VuZHMgZm9yIGV2ZXJ5IDJe
MTUgW3NpY10gY2FsbHMgYWZ0ZXIgdGhhdCkuIFRoZSBjb21iaW5hdGlvbiBvZgorICAgIC8vIGhp
Z2ggZmlkZWxpdHkgZm9yIHJlY2VudCBjYWxscyBhbmQgZmFkaW5nIGZvciBvbGRlciBjYWxscyBt
YWtlcyB0aGlzIHRoZSBtb3N0IHVzZWZ1bAorICAgIC8vIG1lY2hhbWlzbSBvZiBjaG9vc2luZyBo
b3cgdG8gb3B0aW1pemUgZnV0dXJlIGNhbGxzLgorICAgIENhbGxFZGdlUHJvZmlsZSogZWRnZVBy
b2ZpbGUgPSBjYWxsTGlua0luZm8uY2FsbEVkZ2VQcm9maWxlLmdldCgpOworICAgIFdURjo6bG9h
ZExvYWRGZW5jZSgpOworICAgIGlmIChlZGdlUHJvZmlsZSkKKyAgICAgICAgcmV0dXJuIGNvbXB1
dGVGcm9tQ2FsbEVkZ2VQcm9maWxlKGVkZ2VQcm9maWxlKTsKKyAgICAKICAgICAvLyBOb3RlIHRo
YXQgZGVzcGl0ZSByZXF1aXJpbmcgdGhhdCB0aGUgbG9ja2VyIGlzIGhlbGQsIHRoaXMgY29kZSBp
cyByYWN5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHRoZSBDYWxsTGlua0luZm86IGl0IG1heSBn
ZXQgY2xlYXJlZCB3aGlsZSB0aGlzIGNvZGUgcnVucyEgVGhpcyBpcyBiZWNhdXNlCiAgICAgLy8g
Q2FsbExpbmtJbmZvOjp1bmxpbmsoKSBtYXkgYmUgY2FsbGVkIGZyb20gYSBkaWZmZXJlbnQgQ29k
ZUJsb2NrIHRoYW4gdGhlIG9uZSB0aGF0IG93bnMKQEAgLTE3Nyw3ICsxNTcsNyBAQCBDYWxsTGlu
a1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvCiAgICAgCiAgICAgSlNGdW5jdGlvbiog
dGFyZ2V0ID0gY2FsbExpbmtJbmZvLmxhc3RTZWVuQ2FsbGVlLmdldCgpOwogICAgIGlmICghdGFy
Z2V0KQotICAgICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoKTsKKyAgICAgICAgcmV0dXJuIHRh
a2VzU2xvd1BhdGgoKTsKICAgICAKICAgICBpZiAoY2FsbExpbmtJbmZvLmhhc1NlZW5DbG9zdXJl
KQogICAgICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXModGFyZ2V0LT5leGVjdXRhYmxlKCkpOwpA
QCAtMTg1LDE1ICsxNjUsMzEgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVGbwogICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyh0YXJnZXQpOwogfQogCi1DYWxsTGlua1N0
YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKLSAgICBjb25zdCBDb25jdXJyZW50SklU
TG9ja2VyJiBsb2NrZXIsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBFeGl0U2l0ZURhdGEg
ZXhpdFNpdGVEYXRhKQorQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9t
Q2FsbEVkZ2VQcm9maWxlKENhbGxFZGdlUHJvZmlsZSogZWRnZVByb2ZpbGUpCiB7Ci0gICAgaWYg
KGV4aXRTaXRlRGF0YS5tX3Rha2VzU2xvd1BhdGgpCisgICAgLy8gVG8gZG8gYW55dGhpbmcgbWVh
bmluZ2Z1bCwgd2UgcmVxdWlyZSB0aGF0IHRoZSBtYWpvcml0eSBvZiBjYWxscyBhcmUgdG8gc29t
ZXRoaW5nIHdlCisgICAgLy8ga25vdyBob3cgdG8gaGFuZGxlLgorICAgIHVuc2lnbmVkIG51bUNh
bGxzVG9Lbm93biA9IGVkZ2VQcm9maWxlLT5udW1DYWxsc1RvS25vd25DZWxscygpOworICAgIHVu
c2lnbmVkIG51bUNhbGxzVG9Vbmtub3duID0gZWRnZVByb2ZpbGUtPm51bUNhbGxzVG9Ob3RDZWxs
KCkgKyBlZGdlUHJvZmlsZS0+bnVtQ2FsbHNUb1Vua25vd25DZWxsKCk7CisgICAgaWYgKG51bUNh
bGxzVG9Lbm93biA8PSBudW1DYWxsc1RvVW5rbm93bikKICAgICAgICAgcmV0dXJuIHRha2VzU2xv
d1BhdGgoKTsKICAgICAKKyAgICBDYWxsTGlua1N0YXR1cyByZXN1bHQ7CisgICAgcmVzdWx0Lm1f
ZWRnZXMgPSBlZGdlUHJvZmlsZS0+Y2FsbEVkZ2VzKCk7CisgICAgcmVzdWx0Lm1fY291bGRUYWtl
U2xvd1BhdGggPSAhIW51bUNhbGxzVG9Vbmtub3duOworICAgIHJlc3VsdC5tX2NhblRydXN0Q291
bnRzID0gdHJ1ZTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitDYWxsTGlua1N0YXR1
cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKKyAgICBjb25zdCBDb25jdXJyZW50SklUTG9j
a2VyJiBsb2NrZXIsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBFeGl0U2l0ZURhdGEgZXhp
dFNpdGVEYXRhKQorewogICAgIENhbGxMaW5rU3RhdHVzIHJlc3VsdCA9IGNvbXB1dGVGb3IobG9j
a2VyLCBjYWxsTGlua0luZm8pOwogICAgIGlmIChleGl0U2l0ZURhdGEubV9iYWRGdW5jdGlvbikK
ICAgICAgICAgcmVzdWx0Lm1ha2VDbG9zdXJlQ2FsbCgpOworICAgIGlmIChleGl0U2l0ZURhdGEu
bV90YWtlc1Nsb3dQYXRoKQorICAgICAgICByZXN1bHQubV9jb3VsZFRha2VTbG93UGF0aCA9IHRy
dWU7CiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTI1Niw2ICsyNTIsMzIgQEAgQ2Fs
bExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGbwogICAgIHJldHVybiBjb21wdXRl
Rm9yKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgYmFzZWxpbmVNYXAp
OwogfQogCitib29sIENhbGxMaW5rU3RhdHVzOjppc0Nsb3N1cmVDYWxsKCkgY29uc3QKK3sKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBtX2VkZ2VzLnNpemUoKTsgaS0tOykgeworICAgICAgICBpZiAo
bV9lZGdlc1tpXS5jYWxsZWUoKS5pc0Nsb3N1cmVDYWxsKCkpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIENhbGxMaW5rU3RhdHVz
OjptYWtlQ2xvc3VyZUNhbGwoKQoreworICAgIEFTU0VSVCghbV9pc1Byb3ZlZCk7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gbV9lZGdlcy5zaXplKCk7IGktLTspCisgICAgICAgIG1fZWRnZXNbaV0g
PSBtX2VkZ2VzW2ldLmRlc3BlY2lmaWVkQ2xvc3VyZSgpOworICAgIAorICAgIGlmICghQVNTRVJU
X0RJU0FCTEVEKSB7CisgICAgICAgIC8vIERvaW5nIHRoaXMgc2hvdWxkIG5vdCBoYXZlIGNyZWF0
ZWQgZHVwbGljYXRlcywgYmVjYXVzZSB0aGUgQ2FsbEVkZ2VQcm9maWxlCisgICAgICAgIC8vIHNo
b3VsZCBkZXNwZWNpZnkgY2xvc3VyZXMgaWYgZG9pbmcgc28gd291bGQgcmVkdWNlIHRoZSBudW1i
ZXIgb2Yga25vd24gY2FsbGVlcy4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
ZWRnZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIENhbGxWYXJpYW50IHZhcmlhbnQgPSBt
X2VkZ2VzW2ldLmNhbGxlZSgpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gaSArIDE7
IGogPCBtX2VkZ2VzLnNpemUoKTsgKytqKQorICAgICAgICAgICAgICAgIEFTU0VSVCh2YXJpYW50
ICE9IG1fZWRnZXNbal0uY2FsbGVlKCkpOworICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIENh
bGxMaW5rU3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgaWYgKCFp
c1NldCgpKSB7CkBAIC0yNzEsMTQgKzI5Myw3IEBAIHZvaWQgQ2FsbExpbmtTdGF0dXM6OmR1bXAo
UHJpbnRTdHJlYW0mIG8KICAgICBpZiAobV9jb3VsZFRha2VTbG93UGF0aCkKICAgICAgICAgb3V0
LnByaW50KGNvbW1hLCAiQ291bGQgVGFrZSBTbG93IFBhdGgiKTsKICAgICAKLSAgICBpZiAobV9j
YWxsVGFyZ2V0KQotICAgICAgICBvdXQucHJpbnQoY29tbWEsICJLbm93biB0YXJnZXQ6ICIsIG1f
Y2FsbFRhcmdldCk7Ci0gICAgCi0gICAgaWYgKG1fZXhlY3V0YWJsZSkgewotICAgICAgICBvdXQu
cHJpbnQoY29tbWEsICJFeGVjdXRhYmxlL0NhbGxIYXNoOiAiLCBSYXdQb2ludGVyKG1fZXhlY3V0
YWJsZSkpOwotICAgICAgICBpZiAoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSkKLSAgICAgICAgICAg
IG91dC5wcmludCgiLyIsIG1fZXhlY3V0YWJsZS0+aGFzaEZvcihDb2RlRm9yQ2FsbCkpOwotICAg
IH0KKyAgICBvdXQucHJpbnQobGlzdER1bXAobV9lZGdlcykpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlu
a1N0YXR1cy5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsOSArNDYsOSBAQCBz
dHJ1Y3QgQ2FsbExpbmtJbmZvOwogY2xhc3MgQ2FsbExpbmtTdGF0dXMgewogcHVibGljOgogICAg
IENhbGxMaW5rU3RhdHVzKCkKLSAgICAgICAgOiBtX2V4ZWN1dGFibGUoMCkKLSAgICAgICAgLCBt
X2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQorICAgICAgICA6IG1fY291bGRUYWtlU2xvd1BhdGgo
ZmFsc2UpCiAgICAgICAgICwgbV9pc1Byb3ZlZChmYWxzZSkKKyAgICAgICAgLCBtX2NhblRydXN0
Q291bnRzKGZhbHNlKQogICAgIHsKICAgICB9CiAgICAgCkBAIC02MSwxMCArNjEsMTEgQEAgcHVi
bGljOgogICAgIAogICAgIGV4cGxpY2l0IENhbGxMaW5rU3RhdHVzKEpTVmFsdWUpOwogICAgIAot
ICAgIENhbGxMaW5rU3RhdHVzKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKQotICAgICAgICA6
IG1fZXhlY3V0YWJsZShleGVjdXRhYmxlKQorICAgIENhbGxMaW5rU3RhdHVzKENhbGxWYXJpYW50
IHZhcmlhbnQpCisgICAgICAgIDogbV9lZGdlcygxLCBDYWxsRWRnZSh2YXJpYW50LCAxKSkKICAg
ICAgICAgLCBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQogICAgICAgICAsIG1faXNQcm92ZWQo
ZmFsc2UpCisgICAgICAgICwgbV9jYW5UcnVzdENvdW50cyhmYWxzZSkKICAgICB7CiAgICAgfQog
ICAgIApAQCAtMTA3LDM3ICsxMDgsMzYgQEAgcHVibGljOgogICAgIHN0YXRpYyBDYWxsTGlua1N0
YXR1cyBjb21wdXRlRm9yKAogICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBjb25zdCBD
YWxsTGlua0luZm9NYXAmLCBjb25zdCBDb250ZXh0TWFwJik7CiAgICAgCi0gICAgYm9vbCBpc1Nl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdldCB8fCBtX2V4ZWN1dGFibGUgfHwgbV9jb3Vs
ZFRha2VTbG93UGF0aDsgfQorICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiAhbV9lZGdl
cy5pc0VtcHR5KCkgfHwgbV9jb3VsZFRha2VTbG93UGF0aDsgfQogICAgIAogICAgIGJvb2wgb3Bl
cmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7IH0KICAgICAKICAgICBib29sIGNvdWxk
VGFrZVNsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9jb3VsZFRha2VTbG93UGF0aDsgfQotICAg
IGJvb2wgaXNDbG9zdXJlQ2FsbCgpIGNvbnN0IHsgcmV0dXJuIG1fZXhlY3V0YWJsZSAmJiAhbV9j
YWxsVGFyZ2V0OyB9CiAgICAgCi0gICAgSlNWYWx1ZSBjYWxsVGFyZ2V0KCkgY29uc3QgeyByZXR1
cm4gbV9jYWxsVGFyZ2V0OyB9Ci0gICAgSlNGdW5jdGlvbiogZnVuY3Rpb24oKSBjb25zdDsKLSAg
ICBJbnRlcm5hbEZ1bmN0aW9uKiBpbnRlcm5hbEZ1bmN0aW9uKCkgY29uc3Q7Ci0gICAgSW50cmlu
c2ljIGludHJpbnNpY0ZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kKSBjb25zdDsKLSAgICBFeGVj
dXRhYmxlQmFzZSogZXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXhlY3V0YWJsZTsgfQor
ICAgIENhbGxFZGdlTGlzdCBlZGdlcygpIGNvbnN0IHsgcmV0dXJuIG1fZWRnZXM7IH0KKyAgICB1
bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9lZGdlcy5zaXplKCk7IH0KKyAgICBDYWxs
RWRnZSBhdCh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBtX2VkZ2VzW2ldOyB9CisgICAgQ2Fs
bEVkZ2Ugb3BlcmF0b3JbXSh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBhdChpKTsgfQogICAg
IGJvb2wgaXNQcm92ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzUHJvdmVkOyB9Ci0gICAgYm9vbCBj
YW5PcHRpbWl6ZSgpIGNvbnN0IHsgcmV0dXJuIChtX2NhbGxUYXJnZXQgfHwgbV9leGVjdXRhYmxl
KSAmJiAhbV9jb3VsZFRha2VTbG93UGF0aDsgfQorICAgIGJvb2wgY2FuT3B0aW1pemUoKSBjb25z
dCB7IHJldHVybiAhbV9lZGdlcy5pc0VtcHR5KCk7IH0KKyAgICBib29sIGNhblRydXN0Q291bnRz
KCkgY29uc3QgeyByZXR1cm4gbV9jYW5UcnVzdENvdW50czsgfQorICAgIAorICAgIGJvb2wgaXND
bG9zdXJlQ2FsbCgpIGNvbnN0OyAvLyBSZXR1cm5zIHRydWUgaWYgYW55IGNhbGxlZSBpcyBhIGNs
b3N1cmUgY2FsbC4KICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAg
ICAKIHByaXZhdGU6Ci0gICAgdm9pZCBtYWtlQ2xvc3VyZUNhbGwoKQotICAgIHsKLSAgICAgICAg
QVNTRVJUKCFtX2lzUHJvdmVkKTsKLSAgICAgICAgLy8gVHVybiB0aGlzIGludG8gYSBjbG9zdXJl
IGNhbGwuCi0gICAgICAgIG1fY2FsbFRhcmdldCA9IEpTVmFsdWUoKTsKLSAgICB9CisgICAgdm9p
ZCBtYWtlQ2xvc3VyZUNhbGwoKTsKICAgICAKICAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29t
cHV0ZUZyb21MTEludChjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgQ29kZUJsb2NrKiwgdW5z
aWduZWQgYnl0ZWNvZGVJbmRleCk7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBzdGF0aWMgQ2FsbExp
bmtTdGF0dXMgY29tcHV0ZUZyb21DYWxsRWRnZVByb2ZpbGUoQ2FsbEVkZ2VQcm9maWxlKik7Cisj
ZW5kaWYKICAgICAKLSAgICBKU1ZhbHVlIG1fY2FsbFRhcmdldDsKLSAgICBFeGVjdXRhYmxlQmFz
ZSogbV9leGVjdXRhYmxlOworICAgIENhbGxFZGdlTGlzdCBtX2VkZ2VzOwogICAgIGJvb2wgbV9j
b3VsZFRha2VTbG93UGF0aDsKICAgICBib29sIG1faXNQcm92ZWQ7CisgICAgYm9vbCBtX2NhblRy
dXN0Q291bnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNhbGxWYXJpYW50Lmgi
CisKK25hbWVzcGFjZSBKU0MgeworCit2b2lkIENhbGxWYXJpYW50OjpkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0Cit7CisgICAgaWYgKCEqdGhpcykgeworICAgICAgICBvdXQucHJpbnQoIm51
bGwiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoSW50ZXJuYWxGdW5j
dGlvbiogaW50ZXJuYWxGdW5jdGlvbiA9IHRoaXMtPmludGVybmFsRnVuY3Rpb24oKSkgeworICAg
ICAgICBvdXQucHJpbnQoIkludGVybmFsRnVuY3Rpb246ICIsIEpTVmFsdWUoaW50ZXJuYWxGdW5j
dGlvbikpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChKU0Z1bmN0aW9u
KiBmdW5jdGlvbiA9IHRoaXMtPmZ1bmN0aW9uKCkpIHsKKyAgICAgICAgb3V0LnByaW50KCIoRnVu
Y3Rpb246ICIsIEpTVmFsdWUoZnVuY3Rpb24pLCAiOyBFeGVjdXRhYmxlOiAiLCAqZXhlY3V0YWJs
ZSgpLCAiKSIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIG91dC5wcmludCgi
RXhlY3V0YWJsZTogIiwgKmV4ZWN1dGFibGUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTY3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ2FsbFZhcmlhbnRfaAorI2RlZmlu
ZSBDYWxsVmFyaWFudF9oCisKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSlND
ZWxsLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgQ2FsbFZhcmlhbnQgeworcHVibGljOgorICAgIGV4cGxpY2l0IENhbGxWYXJpYW50KEpTQ2Vs
bCogY2FsbGVlID0gbnVsbHB0cikKKyAgICAgICAgOiBtX2NhbGxlZShjYWxsZWUpCisgICAgewor
ICAgIH0KKyAgICAKKyAgICBDYWxsVmFyaWFudChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5
cGUpCisgICAgICAgIDogbV9jYWxsZWUoZGVsZXRlZFRva2VuKCkpCisgICAgeworICAgIH0KKyAg
ICAKKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX2NhbGxlZTsgfQorICAg
IAorICAgIC8vIElmIHRoaXMgdmFyaWFudCByZWZlcnMgdG8gYSBmdW5jdGlvbiwgY2hhbmdlIGl0
IHRvIHJlZmVyIHRvIGl0cyBleGVjdXRhYmxlLgorICAgIEFMV0FZU19JTkxJTkUgQ2FsbFZhcmlh
bnQgZGVzcGVjaWZpZWRDbG9zdXJlKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2NhbGxl
ZS0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKQorICAgICAgICAgICAgcmV0dXJuIENhbGxWYXJp
YW50KGpzQ2FzdDxKU0Z1bmN0aW9uKj4obV9jYWxsZWUpLT5leGVjdXRhYmxlKCkpOworICAgICAg
ICByZXR1cm4gKnRoaXM7CisgICAgfQorICAgIAorICAgIEpTQ2VsbCogcmF3Q2FsbGVlQ2VsbCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FsbGVlOyB9CisgICAgCisgICAgSW50ZXJuYWxGdW5jdGlvbiog
aW50ZXJuYWxGdW5jdGlvbigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4ganNEeW5hbWlj
Q2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4obV9jYWxsZWUpOworICAgIH0KKyAgICAKKyAgICBKU0Z1
bmN0aW9uKiBmdW5jdGlvbigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4ganNEeW5hbWlj
Q2FzdDxKU0Z1bmN0aW9uKj4obV9jYWxsZWUpOworICAgIH0KKyAgICAKKyAgICBib29sIGlzQ2xv
c3VyZUNhbGwoKSBjb25zdCB7IHJldHVybiAhIWpzRHluYW1pY0Nhc3Q8RXhlY3V0YWJsZUJhc2Uq
PihtX2NhbGxlZSk7IH0KKyAgICAKKyAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSgpIGNv
bnN0CisgICAgeworICAgICAgICBpZiAoSlNGdW5jdGlvbiogZnVuY3Rpb24gPSB0aGlzLT5mdW5j
dGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uLT5leGVjdXRhYmxlKCk7CisgICAg
ICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEV4ZWN1dGFibGVCYXNlKj4obV9jYWxsZWUpOworICAg
IH0KKyAgICAKKyAgICBKU0NlbGwqIG5vbkV4ZWN1dGFibGVDYWxsZWUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWlzQ2xvc3VyZUNhbGwoKSk7CisgICAgICAgIHJldHVy
biBtX2NhbGxlZTsKKyAgICB9CisgICAgCisgICAgSW50cmluc2ljIGludHJpbnNpY0ZvcihDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoRXhlY3V0
YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSB0aGlzLT5leGVjdXRhYmxlKCkpCisgICAgICAgICAgICBy
ZXR1cm4gZXhlY3V0YWJsZS0+aW50cmluc2ljRm9yKGtpbmQpOworICAgICAgICByZXR1cm4gTm9J
bnRyaW5zaWM7CisgICAgfQorICAgIAorICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25F
eGVjdXRhYmxlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEZ1
bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUoKSk7CisgICAgfQorICAgIAorICAgIHZvaWQg
ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKKyAgICAKKyAgICBib29sIGlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NhbGxlZSA9PSBk
ZWxldGVkVG9rZW4oKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENh
bGxWYXJpYW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NhbGxlZSA9
PSBvdGhlci5tX2NhbGxlZTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgQ2FsbFZh
cmlhbnQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY2FsbGVlIDwgb3Ro
ZXIubV9jYWxsZWU7CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IENhbGxW
YXJpYW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBvdGhlciA8ICp0aGlz
OworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgQ2FsbFZhcmlhbnQmIG90
aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPCBvdGhlcik7CisgICAg
fQorICAgIAorICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBDYWxsVmFyaWFudCYgb3RoZXIpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gb3RoZXIgPD0gKnRoaXM7CisgICAgfQorICAgIAor
ICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6UHRy
SGFzaDxKU0NlbGwqPjo6aGFzaChtX2NhbGxlZSk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAg
ICBzdGF0aWMgSlNDZWxsKiBkZWxldGVkVG9rZW4oKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlND
ZWxsKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSk7IH0KKyAgICAgICAgICAgICAgICAgICAK
KyAgICBKU0NlbGwqIG1fY2FsbGVlOworfTsKKworc3RydWN0IENhbGxWYXJpYW50SGFzaCB7Cisg
ICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgQ2FsbFZhcmlhbnQmIGtleSkgeyByZXR1cm4g
a2V5Lmhhc2goKTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENhbGxWYXJpYW50JiBh
LCBjb25zdCBDYWxsVmFyaWFudCYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNv
bnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKKwordHlw
ZWRlZiBWZWN0b3I8Q2FsbFZhcmlhbnQsIDE+IENhbGxWYXJpYW50TGlzdDsKKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1
Y3QgRGVmYXVsdEhhc2g7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6OkNhbGxW
YXJpYW50PiB7CisgICAgdHlwZWRlZiBKU0M6OkNhbGxWYXJpYW50SGFzaCBIYXNoOworfTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM7Cit0ZW1wbGF0ZTw+IHN0cnVj
dCBIYXNoVHJhaXRzPEpTQzo6Q2FsbFZhcmlhbnQ+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpT
Qzo6Q2FsbFZhcmlhbnQ+IHsgfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBD
YWxsVmFyaWFudF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0
S2luZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4
aXRLaW5kLmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0V4aXRLaW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsOCArMzgsOCBAQCBjb25z
dCBjaGFyKiBleGl0S2luZFRvU3RyaW5nKEV4aXRLaW5kIGtpCiAgICAgICAgIHJldHVybiAiVW5z
ZXQiOwogICAgIGNhc2UgQmFkVHlwZToKICAgICAgICAgcmV0dXJuICJCYWRUeXBlIjsKLSAgICBj
YXNlIEJhZEZ1bmN0aW9uOgotICAgICAgICByZXR1cm4gIkJhZEZ1bmN0aW9uIjsKKyAgICBjYXNl
IEJhZENlbGw6CisgICAgICAgIHJldHVybiAiQmFkQ2VsbCI7CiAgICAgY2FzZSBCYWRFeGVjdXRh
YmxlOgogICAgICAgICByZXR1cm4gIkJhZEV4ZWN1dGFibGUiOwogICAgIGNhc2UgQmFkQ2FjaGU6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAkocmV2aXNp
b24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBlbnVtIEV4
aXRLaW5kIDogdWludDhfdCB7CiAgICAgRXhpdEtpbmRVbnNldCwKICAgICBCYWRUeXBlLCAvLyBX
ZSBleGl0ZWQgYmVjYXVzZSBhIHR5cGUgcHJlZGljdGlvbiB3YXMgd3JvbmcuCi0gICAgQmFkRnVu
Y3Rpb24sIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIG1hZGUgYW4gaW5jb3JyZWN0IGFzc3VtcHRp
b24gYWJvdXQgd2hhdCBmdW5jdGlvbiB3ZSB3b3VsZCBzZWUuCisgICAgQmFkQ2VsbCwgLy8gV2Ug
ZXhpdGVkIGJlY2F1c2Ugd2UgbWFkZSBhbiBpbmNvcnJlY3QgYXNzdW1wdGlvbiBhYm91dCB3aGF0
IGNlbGwgd2Ugd291bGQgc2VlLiBVc3VhbGx5IHVzZWQgZm9yIGZ1bmN0aW9uIGNoZWNrcy4KICAg
ICBCYWRFeGVjdXRhYmxlLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSB3ZSBtYWRlIGFuIGluY29ycmVj
dCBhc3N1bXB0aW9uIGFib3V0IHdoYXQgZXhlY3V0YWJsZSB3ZSB3b3VsZCBzZWUuCiAgICAgQmFk
Q2FjaGUsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIGFuIGlubGluZSBjYWNoZSB3YXMgd3JvbmcuCiAg
ICAgQmFkQ29uc3RhbnRDYWNoZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2UgYSBjYWNoZSBvbiBhIHdl
YWsgY29uc3RhbnQgKHVzdWFsbHkgYSBwcm90b3R5cGUpIHdhcyB3cm9uZy4KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ2
MCwxNCArMTQ2MCw2IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkK
ICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CiAgICAgICAgIGJyZWFr
OwogICAgICAgICAKLSAgICBjYXNlIENoZWNrRXhlY3V0YWJsZTogewotICAgICAgICAvLyBGSVhN
RTogV2UgY291bGQgdHJhY2sgZXhlY3V0YWJsZXMgaW4gQWJzdHJhY3RWYWx1ZSwgd2hpY2ggd291
bGQgYWxsb3cgdXMgdG8gZ2V0IHJpZCBvZiB0aGVzZSBjaGVja3MKLSAgICAgICAgLy8gbW9yZSB0
aG9yb3VnaGx5LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MjAw
Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBlbGltaW5hdGUgdGhlc2UgZW50aXJlbHkgaWYg
d2Uga25vdyB0aGUgZXhhY3QgdmFsdWUgdGhhdCBmbG93cyBpbnRvIHRoaXMuCi0gICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYyMDEKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotCiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZTogewogICAgICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gcHJvcGFnYXRlIHRoZSBzdHJ1Y3R1cmUgc2V0cyBv
ZiBjb25zdGFudHMgKGkuZS4gcHJvdG90eXBlcykuCiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZh
bHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CkBAIC0xNzI3LDE2ICsxNzE5LDI5IEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIG1fc3Rh
dGUuc2V0SXNWYWxpZChmYWxzZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICAgICAgCisg
ICAgY2FzZSBHZXRFeGVjdXRhYmxlOiB7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBmb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICBpZiAodmFsdWUpIHsKKyAgICAgICAg
ICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odmFs
dWUpOworICAgICAgICAgICAgaWYgKGZ1bmN0aW9uKSB7CisgICAgICAgICAgICAgICAgc2V0Q29u
c3RhbnQobm9kZSwgKm1fZ3JhcGguZnJlZXplKGZ1bmN0aW9uLT5leGVjdXRhYmxlKCkpKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBm
b3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0NlbGxPdGhlcik7CisgICAgICAgIGJyZWFrOworICAg
IH0KICAgICAKLSAgICBjYXNlIENoZWNrRnVuY3Rpb246IHsKKyAgICBjYXNlIENoZWNrQ2VsbDog
ewogICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUo
KTsKLSAgICAgICAgaWYgKHZhbHVlID09IG5vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkpIHsKKyAg
ICAgICAgaWYgKHZhbHVlID09IG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkpIHsKICAgICAg
ICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CiAgICAgICAgICAgICBBU1NF
UlQodmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAg
ICAgIGZpbHRlckJ5VmFsdWUobm9kZS0+Y2hpbGQxKCksICpub2RlLT5mdW5jdGlvbigpKTsKKyAg
ICAgICAgZmlsdGVyQnlWYWx1ZShub2RlLT5jaGlsZDEoKSwgKm5vZGUtPmNlbGxPcGVyYW5kKCkp
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAtMTkwMiw2ICsxOTA3LDcgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsK
IAogICAgIGNhc2UgRm9yY2VPU1JFeGl0OgorICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgICAg
ICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwogICAgICAgICBicmVhazsKICAgICAgICAgCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dh
cmRzUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM4OSw2ICszODksMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAvLyB0
aGVuIC0wIGFuZCAwIGFyZSB0cmVhdGVkIHRoZSBzYW1lLgogICAgICAgICAgICAgICAgIG5vZGUt
PmNoaWxkMSgpLT5tZXJnZUZsYWdzKE5vZGVCeXRlY29kZVVzZXNBc051bWJlciB8IE5vZGVCeXRl
Y29kZVVzZXNBc090aGVyKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgU3dpdGNoQ2VsbDoKKyAgICAgICAgICAgICAgICAvLyBUaGVyZSBpcyBjdXJyZW50bHkgbm8g
cG9pbnQgdG8gYmVpbmcgY2xldmVyIGhlcmUgc2luY2UgdGhpcyBpcyB1c2VkIGZvciBzd2l0Y2hp
bmcKKyAgICAgICAgICAgICAgICAvLyBvbiBvYmplY3RzLgorICAgICAgICAgICAgICAgIG1lcmdl
RGVmYXVsdEZsYWdzKG5vZGUpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiAr
NjIsNyBAQCBzdHJ1Y3QgQmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgTm9k
ZSomIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsgcmV0dXJuIGF0KGkpOyB9CiAgICAgTm9kZSogb3Bl
cmF0b3JbXShzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0KICAgICBOb2RlKiBsYXN0
KCkgY29uc3QgeyByZXR1cm4gYXQoc2l6ZSgpIC0gMSk7IH0KKyAgICBOb2RlKiB0YWtlTGFzdCgp
IHsgcmV0dXJuIG1fbm9kZXMudGFrZUxhc3QoKTsgfQogICAgIHZvaWQgcmVzaXplKHNpemVfdCBz
aXplKSB7IG1fbm9kZXMucmVzaXplKHNpemUpOyB9CiAgICAgdm9pZCBncm93KHNpemVfdCBzaXpl
KSB7IG1fbm9kZXMuZ3JvdyhzaXplKTsgfQogICAgIApAQCAtMTA2LDYgKzEwNywxMyBAQCBzdHJ1
Y3QgQmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgCiAgICAgdm9pZCBkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwogICAgIAorICAgIHZvaWQgZGlkTGluaygpCisgICAg
eworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgaXNMaW5rZWQgPSB0cnVlOworI2VuZGlm
CisgICAgfQorICAgIAogICAgIC8vIFRoaXMgdmFsdWUgaXMgdXNlZCBpbnRlcm5hbGx5IGZvciBi
bG9jayBsaW5raW5nIGFuZCBPU1IgZW50cnkuIEl0IGlzIG1vc3RseSBtZWFuaW5nbGVzcwogICAg
IC8vIGZvciBvdGhlciBwdXJwb3NlcyBkdWUgdG8gaW5saW5pbmcuCiAgICAgdW5zaWduZWQgYnl0
ZWNvZGVCZWdpbjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDE0ICsx
NzgsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgTm9kZSogY2FsbFRhcmdldCwgaW50IGFyZ0NvdW50
LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENhbGxMaW5rU3RhdHVzKTsKICAgICB2b2lkIGhhbmRsZUNh
bGwoaW50IHJlc3VsdCwgTm9kZVR5cGUgb3AsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIHVuc2ln
bmVkIGluc3RydWN0aW9uU2l6ZSwgaW50IGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0
ZXJPZmZzZXQpOwogICAgIHZvaWQgaGFuZGxlQ2FsbChJbnN0cnVjdGlvbiogcGMsIE5vZGVUeXBl
IG9wLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKLSAgICB2b2lkIGVtaXRGdW5jdGlvbkNoZWNr
cyhjb25zdCBDYWxsTGlua1N0YXR1cyYsIE5vZGUqIGNhbGxUYXJnZXQsIGludCByZWdpc3Rlck9m
ZnNldCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgdm9pZCBlbWl0RnVuY3Rpb25DaGVj
a3MoQ2FsbFZhcmlhbnQsIE5vZGUqIGNhbGxUYXJnZXQsIGludCByZWdpc3Rlck9mZnNldCwgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgdm9pZCB1bmRvRnVuY3Rpb25DaGVja3MoQ2FsbFZh
cmlhbnQpOwogICAgIHZvaWQgZW1pdEFyZ3VtZW50UGhhbnRvbXMoaW50IHJlZ2lzdGVyT2Zmc2V0
LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQp
OworICAgIHVuc2lnbmVkIGlubGluaW5nQ29zdChDYWxsVmFyaWFudCwgaW50IGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsgLy8gUmV0dXJuIFVJTlRf
TUFYIGlmIGl0J3Mgbm90IGFuIGlubGluaW5nIGNhbmRpZGF0ZS4gQnkgY29udmVudGlvbiwgaW50
cmluc2ljcyBoYXZlIGEgY29zdCBvZiAxLgogICAgIC8vIEhhbmRsZSBpbmxpbmluZy4gUmV0dXJu
IHRydWUgaWYgaXQgc3VjY2VlZGVkLCBmYWxzZSBpZiB3ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4K
LSAgICBib29sIGhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0
T3BlcmFuZCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgSW5saW5lQ2Fs
bEZyYW1lOjpLaW5kKTsKKyAgICBib29sIGhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXRO
b2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0
ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9m
ZnNldCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRU
eXBlIHByZWRpY3Rpb24pOworICAgIGVudW0gQ2FsbGVyTGlua2FiaWxpdHkgeyBDYWxsZXJEb2Vz
Tm9ybWFsTGlua2luZywgQ2FsbGVyTGlua3NNYW51YWxseSB9OworICAgIGJvb2wgYXR0ZW1wdFRv
SW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENhbGxW
YXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgdW5zaWduZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBDYWxsZXJMaW5r
YWJpbGl0eSwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFs
YW5jZSk7CisgICAgdm9pZCBpbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVz
dWx0T3BlcmFuZCwgQ2FsbFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6
OktpbmQsIENhbGxlckxpbmthYmlsaXR5KTsKKyAgICB2b2lkIGNhbmNlbExpbmtpbmdGb3JCbG9j
ayhJbmxpbmVTdGFja0VudHJ5KiwgQmFzaWNCbG9jayopOyAvLyBPbmx5IHdvcmtzIHdoZW4gdGhl
IGdpdmVuIGJsb2NrIGlzIHRoZSBsYXN0IG9uZSB0byBoYXZlIGJlZW4gYWRkZWQgZm9yIHRoYXQg
aW5saW5lIHN0YWNrIGVudHJ5LgogICAgIC8vIEhhbmRsZSBpbnRyaW5zaWMgZnVuY3Rpb25zLiBS
ZXR1cm4gdHJ1ZSBpZiBpdCBzdWNjZWVkZWQsIGZhbHNlIGlmIHdlIG5lZWQgdG8gcGxhbnQgYSBj
YWxsLgogICAgIGJvb2wgaGFuZGxlSW50cmluc2ljKGludCByZXN1bHRPcGVyYW5kLCBJbnRyaW5z
aWMsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBT
cGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKICAgICBib29sIGhhbmRsZVR5cGVkQXJyYXlDb25z
dHJ1Y3RvcihpbnQgcmVzdWx0T3BlcmFuZCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rl
ck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBlZEFycmF5VHlwZSk7
Ci0gICAgYm9vbCBoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oaW50IHJlc3VsdE9wZXJh
bmQsIEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCk7CisgICAgYm9vbCBoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oaW50
IHJlc3VsdE9wZXJhbmQsIEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7CiAg
ICAgTm9kZSogaGFuZGxlUHV0QnlPZmZzZXQoTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmll
ciwgUHJvcGVydHlPZmZzZXQsIE5vZGUqIHZhbHVlKTsKICAgICBOb2RlKiBoYW5kbGVHZXRCeU9m
ZnNldChTcGVjdWxhdGVkVHlwZSwgTm9kZSogYmFzZSwgY29uc3QgU3RydWN0dXJlU2V0JiwgdW5z
aWduZWQgaWRlbnRpZmllck51bWJlciwgUHJvcGVydHlPZmZzZXQsIE5vZGVUeXBlIG9wID0gR2V0
QnlPZmZzZXQpOwogICAgIHZvaWQgaGFuZGxlR2V0QnlJZCgKQEAgLTYzNyw2ICs2NDMsMTMgQEAg
cHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQorICAgIAor
ICAgIHZvaWQgcmVtb3ZlTGFzdE5vZGVGcm9tR3JhcGgoTm9kZVR5cGUgZXhwZWN0ZWROb2RlVHlw
ZSkKKyAgICB7CisgICAgICAgIE5vZGUqIG5vZGUgPSBtX2N1cnJlbnRCbG9jay0+dGFrZUxhc3Qo
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+b3AoKSA9PSBleHBlY3RlZE5vZGVUeXBl
KTsKKyAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOworICAgIH0KIAogICAg
IHZvaWQgYWRkVmFyQXJnQ2hpbGQoTm9kZSogY2hpbGQpCiAgICAgewpAQCAtNjQ1LDcgKzY1OCw3
IEBAIHByaXZhdGU6CiAgICAgfQogICAgIAogICAgIE5vZGUqIGFkZENhbGxXaXRob3V0U2V0dGlu
Z1Jlc3VsdCgKLSAgICAgICAgTm9kZVR5cGUgb3AsIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50
LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgICAgIE5vZGVUeXBlIG9wLCBPcEluZm8gb3BJbmZv
LCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAogICAgICAg
ICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogICAgIHsKICAgICAgICAgYWRkVmFyQXJnQ2hp
bGQoY2FsbGVlKTsKQEAgLTY1NywxNSArNjcwLDE1IEBAIHByaXZhdGU6CiAgICAgICAgIGZvciAo
aW50IGkgPSAwICsgZHVtbXlUaGlzQXJndW1lbnQ7IGkgPCBhcmdDb3VudDsgKytpKQogICAgICAg
ICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGksIHJl
Z2lzdGVyT2Zmc2V0KSkpOwogCi0gICAgICAgIHJldHVybiBhZGRUb0dyYXBoKE5vZGU6OlZhckFy
Zywgb3AsIE9wSW5mbygwKSwgT3BJbmZvKHByZWRpY3Rpb24pKTsKKyAgICAgICAgcmV0dXJuIGFk
ZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBvcCwgb3BJbmZvLCBPcEluZm8ocHJlZGljdGlvbikpOwog
ICAgIH0KICAgICAKICAgICBOb2RlKiBhZGRDYWxsKAotICAgICAgICBpbnQgcmVzdWx0LCBOb2Rl
VHlwZSBvcCwgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCwK
KyAgICAgICAgaW50IHJlc3VsdCwgTm9kZVR5cGUgb3AsIE9wSW5mbyBvcEluZm8sIE5vZGUqIGNh
bGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAgICAgIFNwZWN1bGF0
ZWRUeXBlIHByZWRpY3Rpb24pCiAgICAgewogICAgICAgICBOb2RlKiBjYWxsID0gYWRkQ2FsbFdp
dGhvdXRTZXR0aW5nUmVzdWx0KAotICAgICAgICAgICAgb3AsIGNhbGxlZSwgYXJnQ291bnQsIHJl
Z2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKKyAgICAgICAgICAgIG9wLCBvcEluZm8sIGNhbGxl
ZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKICAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIHJlc3VsdFJlZyhyZXN1bHQpOwogICAgICAgICBpZiAocmVzdWx0UmVnLmlzVmFs
aWQoKSkKICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0KSwgY2FsbCk7CkBA
IC04NzEsOCArODg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgVmVjdG9yPFVubGlua2VkQmxvY2s+
IG1fdW5saW5rZWRCbG9ja3M7CiAgICAgICAgIAogICAgICAgICAvLyBQb3RlbnRpYWwgYmxvY2sg
bGlua2luZyB0YXJnZXRzLiBNdXN0IGJlIHNvcnRlZCBieSBieXRlY29kZUJlZ2luLCBhbmQKLSAg
ICAgICAgLy8gY2Fubm90IGhhdmUgdHdvIGJsb2NrcyB0aGF0IGhhdmUgdGhlIHNhbWUgYnl0ZWNv
ZGVCZWdpbi4gRm9yIHRoaXMgdmVyeQotICAgICAgICAvLyByZWFzb24sIHRoaXMgaXMgbm90IGVx
dWl2YWxlbnQgdG8gCisgICAgICAgIC8vIGNhbm5vdCBoYXZlIHR3byBibG9ja3MgdGhhdCBoYXZl
IHRoZSBzYW1lIGJ5dGVjb2RlQmVnaW4uCiAgICAgICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gbV9i
bG9ja0xpbmtpbmdUYXJnZXRzOwogICAgICAgICAKICAgICAgICAgLy8gSWYgdGhlIGNhbGxzaXRl
J3MgYmFzaWMgYmxvY2sgd2FzIHNwbGl0IGludG8gdHdvLCB0aGVuIHRoaXMgd2lsbCBiZQpAQCAt
MTAyOCw1MyArMTA0MCwyNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKAogICAg
ICAgICAvLyBPZGRseSwgdGhpcyBjb25mbGF0ZXMgY2FsbHMgdGhhdCBoYXZlbid0IGV4ZWN1dGVk
IHdpdGggY2FsbHMgdGhhdCBiZWhhdmVkIHN1ZmZpY2llbnRseSBwb2x5bW9ycGhpY2FsbHkKICAg
ICAgICAgLy8gdGhhdCB3ZSBjYW5ub3Qgb3B0aW1pemUgdGhlbS4KICAgICAgICAgCi0gICAgICAg
IGFkZENhbGwocmVzdWx0LCBvcCwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKKyAgICAgICAgYWRkQ2FsbChyZXN1bHQs
IG9wLCBPcEluZm8oKSwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJl
Z2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
ICAgICB1bnNpZ25lZCBuZXh0T2Zmc2V0ID0gbV9jdXJyZW50SW5kZXggKyBpbnN0cnVjdGlvblNp
emU7CisgICAgCisgICAgT3BJbmZvIGNhbGxPcEluZm87CiAKLSAgICBpZiAoSW50ZXJuYWxGdW5j
dGlvbiogZnVuY3Rpb24gPSBjYWxsTGlua1N0YXR1cy5pbnRlcm5hbEZ1bmN0aW9uKCkpIHsKLSAg
ICAgICAgaWYgKGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihyZXN1bHQsIGZ1bmN0aW9u
LCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHByZWRpY3Rpb24s
IHNwZWNpYWxpemF0aW9uS2luZCkpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgcGhhbnRvbWluZyBo
YXMgdG8gYmUgKmFmdGVyKiB0aGUgY29kZSBmb3IgdGhlIGludHJpbnNpYywgdG8gc2lnbmlmeSB0
aGF0Ci0gICAgICAgICAgICAvLyB0aGUgaW5wdXRzIG11c3QgYmUga2VwdCBhbGl2ZSB3aGF0ZXZl
ciBleGl0cyB0aGUgaW50cmluc2ljIG1heSBkby4KLSAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhh
bnRvbSwgY2FsbFRhcmdldCk7Ci0gICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdp
c3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2lu
ZCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8v
IENhbiBvbmx5IGhhbmRsZSB0aGlzIHVzaW5nIHRoZSBnZW5lcmljIGNhbGwgaGFuZGxlci4KLSAg
ICAgICAgYWRkQ2FsbChyZXN1bHQsIG9wLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgICAgICAKLSAgICBJbnRyaW5zaWMgaW50cmluc2ljID0gY2FsbExpbmtTdGF0dXMu
aW50cmluc2ljRm9yKHNwZWNpYWxpemF0aW9uS2luZCk7Ci0KLSAgICBKU0Z1bmN0aW9uKiBrbm93
bkZ1bmN0aW9uID0gbnVsbHB0cjsKLSAgICBpZiAoaW50cmluc2ljICE9IE5vSW50cmluc2ljKSB7
Ci0gICAgICAgIGVtaXRGdW5jdGlvbkNoZWNrcyhjYWxsTGlua1N0YXR1cywgY2FsbFRhcmdldCwg
cmVnaXN0ZXJPZmZzZXQsIHNwZWNpYWxpemF0aW9uS2luZCk7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgaWYgKGhhbmRsZUludHJpbnNpYyhyZXN1bHQsIGludHJpbnNpYywgcmVnaXN0ZXJPZmZzZXQs
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBwcmVkaWN0aW9uKSkgewotICAgICAgICAgICAg
Ly8gVGhpcyBwaGFudG9taW5nIGhhcyB0byBiZSAqYWZ0ZXIqIHRoZSBjb2RlIGZvciB0aGUgaW50
cmluc2ljLCB0byBzaWduaWZ5IHRoYXQKLSAgICAgICAgICAgIC8vIHRoZSBpbnB1dHMgbXVzdCBi
ZSBrZXB0IGFsaXZlIHdoYXRldmVyIGV4aXRzIHRoZSBpbnRyaW5zaWMgbWF5IGRvLgotICAgICAg
ICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0KTsKLSAgICAgICAgICAgIGVtaXRB
cmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgc3BlY2lhbGl6YXRpb25LaW5kKTsKLSAgICAgICAgICAgIGlmIChtX2dyYXBoLmNvbXBpbGF0
aW9uKCkpCi0gICAgICAgICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxp
bmVkQ2FsbCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlm
IChoYW5kbGVJbmxpbmluZyhjYWxsVGFyZ2V0LCByZXN1bHQsIGNhbGxMaW5rU3RhdHVzLCByZWdp
c3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQsIGtpbmQp
KSB7CisgICAgaWYgKGhhbmRsZUlubGluaW5nKGNhbGxUYXJnZXQsIHJlc3VsdCwgY2FsbExpbmtT
dGF0dXMsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbmV4dE9m
ZnNldCwgb3AsIGtpbmQsIHByZWRpY3Rpb24pKSB7CiAgICAgICAgIGlmIChtX2dyYXBoLmNvbXBp
bGF0aW9uKCkpCiAgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5vdGljZUlubGlu
ZWRDYWxsKCk7CiAgICAgICAgIHJldHVybjsKICNpZiBFTkFCTEUoRlRMX05BVElWRV9DQUxMX0lO
TElOSU5HKQotICAgIH0gZWxzZSBpZiAoaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkgJiYgT3B0
aW9uczo6b3B0aW1pemVOYXRpdmVDYWxscygpKSB7Ci0gICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0
aW9uID0gY2FsbExpbmtTdGF0dXMuZnVuY3Rpb24oKTsKKyAgICB9IGVsc2UgaWYgKGlzRlRMKG1f
Z3JhcGgubV9wbGFuLm1vZGUpICYmIE9wdGlvbnM6Om9wdGltaXplTmF0aXZlQ2FsbHMoKSAmJiBj
YWxsTGlua1N0YXR1cy5zaXplKCkgPT0gMSAmJiAhY2FsbExpbmtTdGF0dXMuY291bGRUYWtlU2xv
d1BhdGgoKSkgeworICAgICAgICBDYWxsVmFyaWFudCBjYWxsZWUgPSBjYWxsTGlua1N0YXR1c1sw
XS5jYWxsZWUoKTsKKyAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUuZnVuY3Rp
b24oKTsKICAgICAgICAgaWYgKGZ1bmN0aW9uICYmIGZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigp
KSB7Ci0gICAgICAgICAgICBlbWl0RnVuY3Rpb25DaGVja3MoY2FsbExpbmtTdGF0dXMsIGNhbGxU
YXJnZXQsIHJlZ2lzdGVyT2Zmc2V0LCBzcGVjaWFsaXphdGlvbktpbmQpOwotICAgICAgICAgICAg
a25vd25GdW5jdGlvbiA9IGZ1bmN0aW9uOworICAgICAgICAgICAgZW1pdEZ1bmN0aW9uQ2hlY2tz
KGNhbGxlZSwgY2FsbFRhcmdldCwgcmVnaXN0ZXJPZmZzZXQsIHNwZWNpYWxpemF0aW9uS2luZCk7
CisgICAgICAgICAgICBjYWxsT3BJbmZvID0gT3BJbmZvKG1fZ3JhcGguZnJlZXplKGZ1bmN0aW9u
KSk7CiAKLSAgICAgICAgICAgIGlmIChvcCA9PSBDYWxsKSAKKyAgICAgICAgICAgIGlmIChvcCA9
PSBDYWxsKQogICAgICAgICAgICAgICAgIG9wID0gTmF0aXZlQ2FsbDsKICAgICAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgICAgIEFTU0VSVChvcCA9PSBDb25zdHJ1Y3QpOwpAQCAtMTA4Mywx
MyArMTA2OSwxMSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKAogICAgICAgICB9
CiAjZW5kaWYKICAgICB9Ci0gICAgTm9kZSogY2FsbCA9IGFkZENhbGwocmVzdWx0LCBvcCwgY2Fs
bFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVk
aWN0aW9uKTsKLQotICAgIGlmIChrbm93bkZ1bmN0aW9uKSAKLSAgICAgICAgY2FsbC0+Z2l2ZUtu
b3duRnVuY3Rpb24oa25vd25GdW5jdGlvbik7CisgICAgCisgICAgYWRkQ2FsbChyZXN1bHQsIG9w
LCBjYWxsT3BJbmZvLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVn
aXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwogfQogCi12b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0
RnVuY3Rpb25DaGVja3MoY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBOb2Rl
KiBjYWxsVGFyZ2V0LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENvZGVTcGVjaWFsaXphdGlvbktpbmQg
a2luZCkKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRGdW5jdGlvbkNoZWNrcyhDYWxsVmFyaWFu
dCBjYWxsZWUsIE5vZGUqIGNhbGxUYXJnZXQsIGludCByZWdpc3Rlck9mZnNldCwgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kKQogewogICAgIE5vZGUqIHRoaXNBcmd1bWVudDsKICAgICBpZiAo
a2luZCA9PSBDb2RlRm9yQ2FsbCkKQEAgLTEwOTcsNTAgKzEwODEsNDAgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6ZW1pdEZ1bmN0aW9uQ2hlY2tzKAogICAgIGVsc2UKICAgICAgICAgdGhpc0FyZ3Vt
ZW50ID0gMDsKIAotICAgIGlmIChjYWxsTGlua1N0YXR1cy5pc1Byb3ZlZCgpKSB7Ci0gICAgICAg
IGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldCwgdGhpc0FyZ3VtZW50KTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBBU1NFUlQoY2FsbExpbmtTdGF0dXMuY2FuT3B0aW1p
emUoKSk7Ci0gICAgCi0gICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbExpbmtTdGF0
dXMuZnVuY3Rpb24oKSkKLSAgICAgICAgYWRkVG9HcmFwaChDaGVja0Z1bmN0aW9uLCBPcEluZm8o
bV9ncmFwaC5mcmVlemUoZnVuY3Rpb24pKSwgY2FsbFRhcmdldCwgdGhpc0FyZ3VtZW50KTsKKyAg
ICBpZiAoIWNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpCisgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tD
ZWxsLCBPcEluZm8obV9ncmFwaC5mcmVlemUoY2FsbGVlLmZ1bmN0aW9uKCkpKSwgY2FsbFRhcmdl
dCwgdGhpc0FyZ3VtZW50KTsKICAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKGNhbGxMaW5rU3Rh
dHVzLmV4ZWN1dGFibGUoKSk7Ci0gICAgICAgIAotICAgICAgICBhZGRUb0dyYXBoKENoZWNrRXhl
Y3V0YWJsZSwgT3BJbmZvKGNhbGxMaW5rU3RhdHVzLmV4ZWN1dGFibGUoKSksIGNhbGxUYXJnZXQs
IHRoaXNBcmd1bWVudCk7CisgICAgICAgIEFTU0VSVChjYWxsZWUuZXhlY3V0YWJsZSgpKTsKKyAg
ICAgICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhjYWxsZWUuZXhlY3V0YWJsZSgpKSwg
YWRkVG9HcmFwaChHZXRFeGVjdXRhYmxlLCBjYWxsVGFyZ2V0KSwgdGhpc0FyZ3VtZW50KTsKICAg
ICB9CiB9CiAKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OnVuZG9GdW5jdGlvbkNoZWNrcyhDYWxsVmFy
aWFudCBjYWxsZWUpCit7CisgICAgcmVtb3ZlTGFzdE5vZGVGcm9tR3JhcGgoQ2hlY2tDZWxsKTsK
KyAgICBpZiAoY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSkKKyAgICAgICAgcmVtb3ZlTGFzdE5vZGVG
cm9tR3JhcGgoR2V0RXhlY3V0YWJsZSk7Cit9CisKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRB
cmd1bWVudFBoYW50b21zKGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgZm9yIChpbnQg
aSA9IGtpbmQgPT0gQ29kZUZvckNhbGwgPyAwIDogMTsgaSA8IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzOyArK2kpCiAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgZ2V0KHZpcnR1YWxSZWdp
c3RlckZvckFyZ3VtZW50KGksIHJlZ2lzdGVyT2Zmc2V0KSkpOwogfQogCi1ib29sIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9w
ZXJhbmQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgaW50IHJlZ2lzdGVy
T2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZz
ZXQsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kKQordW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6
OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIHN0YXRpYyBjb25z
dCBib29sIHZlcmJvc2UgPSBmYWxzZTsKICAgICAKLSAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IHNwZWNpYWxpemF0aW9uS2luZCA9IElubGluZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5k
Rm9yKGtpbmQpOwotICAgIAogICAgIGlmICh2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKCJDb25z
aWRlcmluZyBpbmxpbmluZyAiLCBjYWxsTGlua1N0YXR1cywgIiBpbnRvICIsIGN1cnJlbnRDb2Rl
T3JpZ2luKCksICJcbiIpOworICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyBpbmxpbmluZyAi
LCBjYWxsZWUsICIgaW50byAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKICAgICAKLSAg
ICAvLyBGaXJzdCwgdGhlIHJlYWxseSBzaW1wbGUgY2hlY2tzOiBkbyB3ZSBoYXZlIGFuIGFjdHVh
bCBKUyBmdW5jdGlvbj8KLSAgICBpZiAoIWNhbGxMaW5rU3RhdHVzLmV4ZWN1dGFibGUoKSkgewor
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS5mdW5jdGlvbkV4ZWN1
dGFibGUoKTsKKyAgICBpZiAoIWV4ZWN1dGFibGUpIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCi0g
ICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIHRoZXJlIGlzIG5vIGV4ZWN1
dGFibGUuXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZGF0YUxvZygi
ICAgIEZhaWxpbmcgYmVjYXVzZSB0aGVyZSBpcyBubyBmdW5jdGlvbiBleGVjdXRhYmxlLiIpOwor
ICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQotICAgIGlmIChjYWxsTGlua1N0YXR1cy5l
eGVjdXRhYmxlKCktPmlzSG9zdEZ1bmN0aW9uKCkpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCi0g
ICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIGl0J3MgYSBob3N0IGZ1bmN0
aW9uLlxuIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNh
bGxMaW5rU3RhdHVzLmV4ZWN1dGFibGUoKSk7CiAgICAgCiAgICAgLy8gRG9lcyB0aGUgbnVtYmVy
IG9mIGFyZ3VtZW50cyB3ZSdyZSBwYXNzaW5nIG1hdGNoIHRoZSBhcml0eSBvZiB0aGUgdGFyZ2V0
PyBXZSBjdXJyZW50bHkKICAgICAvLyBpbmxpbmUgb25seSBpZiB0aGUgbnVtYmVyIG9mIGFyZ3Vt
ZW50cyBwYXNzZWQgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBudW1iZXIKQEAgLTEx
NDgsNyArMTEyMiw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUK
ICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihleGVjdXRhYmxlLT5wYXJhbWV0ZXJDb3VudCgpKSAr
IDEgPiBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykgewogICAgICAgICBpZiAodmVyYm9zZSkK
ICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2Ugb2YgYXJpdHkgbWlzbWF0
Y2guXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gVUlOVF9NQVg7
CiAgICAgfQogICAgIAogICAgIC8vIERvIHdlIGhhdmUgYSBjb2RlIGJsb2NrLCBhbmQgZG9lcyB0
aGUgY29kZSBibG9jaydzIHNpemUgbWF0Y2ggdGhlIGhldXJpc3RpY3MvcmVxdWlyZW1lbnRzIGZv
cgpAQCAtMTE1NywxOCArMTEzMSwxOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxp
bmluZyhOb2RlCiAgICAgLy8gaWYgd2UgaGFkIGEgc3RhdGljIHByb29mIG9mIHdoYXQgd2FzIGJl
aW5nIGNhbGxlZDsgdGhpcyBtaWdodCBoYXBwZW4gZm9yIGV4YW1wbGUgaWYgeW91IGNhbGwgYQog
ICAgIC8vIGdsb2JhbCBmdW5jdGlvbiwgd2hlcmUgd2F0Y2hwb2ludGluZyBnaXZlcyB1cyBzdGF0
aWMgaW5mb3JtYXRpb24uIE92ZXJhbGwsIGl0J3MgYSByYXJlIGNhc2UKICAgICAvLyBiZWNhdXNl
IHdlIGV4cGVjdCB0aGF0IGFueSBob3QgY2FsbGVlcyB3b3VsZCBoYXZlIGFscmVhZHkgYmVlbiBj
b21waWxlZC4KLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmJhc2VsaW5l
Q29kZUJsb2NrRm9yKHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBleGVjdXRhYmxlLT5iYXNlbGluZUNvZGVCbG9ja0ZvcihraW5kKTsKICAgICBpZiAoIWNv
ZGVCbG9jaykgewogICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAg
ICBGYWlsaW5nIGJlY2F1c2Ugbm8gY29kZSBibG9jayBhdmFpbGFibGUuXG4iKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQogICAgIENhcGFi
aWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwgPSBpbmxpbmVGdW5jdGlvbkZvckNhcGFiaWxpdHlM
ZXZlbCgKLSAgICAgICAgY29kZUJsb2NrLCBzcGVjaWFsaXphdGlvbktpbmQsIGNhbGxMaW5rU3Rh
dHVzLmlzQ2xvc3VyZUNhbGwoKSk7CisgICAgICAgIGNvZGVCbG9jaywga2luZCwgY2FsbGVlLmlz
Q2xvc3VyZUNhbGwoKSk7CiAgICAgaWYgKCFjYW5JbmxpbmUoY2FwYWJpbGl0eUxldmVsKSkgewog
ICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJl
Y2F1c2UgdGhlIGZ1bmN0aW9uIGlzIG5vdCBpbmxpbmVhYmxlLlxuIik7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgIH0KICAgICAKICAgICAvLyBD
aGVjayBpZiB0aGUgY2FsbGVyIGlzIGFscmVhZHkgdG9vIGxhcmdlLiBXZSBkbyB0aGlzIGNoZWNr
IGhlcmUgYmVjYXVzZSB0aGF0J3MganVzdApAQCAtMTE3OCw3ICsxMTUyLDcgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgICAgICBjb2RlQmxvY2stPm1fc2hv
dWxkQWx3YXlzQmVJbmxpbmVkID0gZmFsc2U7CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAg
ICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSB0aGUgY2FsbGVyIGlzIHRvbyBsYXJn
ZS5cbiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBVSU5UX01BWDsK
ICAgICB9CiAgICAgCiAgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIGJldHRlciBhdCBwcmVk
aWN0aW5nIGhvdyBtdWNoIGJsb2F0IHdlIHdpbGwgaW50cm9kdWNlIGJ5IGlubGluaW5nCkBAIC0x
MTk3LDcgKzExNzEsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2Rl
CiAgICAgICAgIGlmIChkZXB0aCA+PSBPcHRpb25zOjptYXhpbXVtSW5saW5pbmdEZXB0aCgpKSB7
CiAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAg
RmFpbGluZyBiZWNhdXNlIGRlcHRoIGV4Y2VlZGVkLlxuIik7Ci0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIGlmIChlbnRyeS0+ZXhlY3V0YWJsZSgpID09IGV4ZWN1dGFibGUpIHsKQEAgLTEy
MDUsMTkgKzExNzksMjYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9k
ZQogICAgICAgICAgICAgaWYgKHJlY3Vyc2lvbiA+PSBPcHRpb25zOjptYXhpbXVtSW5saW5pbmdS
ZWN1cnNpb24oKSkgewogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIHJlY3Vyc2lvbiBkZXRlY3RlZC5c
biIpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gVUlOVF9NQVg7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAg
aWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2coIiAgICBDb21taXR0aW5nIHRvIGlubGluaW5n
LlxuIik7CisgICAgICAgIGRhdGFMb2coIiAgICBJbmxpbmluZyBzaG91bGQgYmUgcG9zc2libGUu
XG4iKTsKKyAgICAKKyAgICAvLyBJdCBtaWdodCBiZSBwb3NzaWJsZSB0byBpbmxpbmUuCisgICAg
cmV0dXJuIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpOworfQorCit2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFu
ZCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpL
aW5kIGtpbmQsIENhbGxlckxpbmthYmlsaXR5IGNhbGxlckxpbmthYmlsaXR5KQoreworICAgIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1l
OjpzcGVjaWFsaXphdGlvbktpbmRGb3Ioa2luZCk7CiAgICAgCi0gICAgLy8gTm93IHdlIGtub3cg
d2l0aG91dCBhIGRvdWJ0IHRoYXQgd2UgYXJlIGNvbW1pdHRlZCB0byBpbmxpbmluZy4gU28gYmVn
aW4gdGhlIHByb2Nlc3MKLSAgICAvLyBieSBjaGVja2luZyB0aGUgY2FsbGVlIChpZiBuZWNlc3Nh
cnkpIGFuZCBtYWtpbmcgc3VyZSB0aGF0IGFyZ3VtZW50cyBhbmQgdGhlIGNhbGxlZQotICAgIC8v
IGFyZSBmbHVzaGVkLgotICAgIGVtaXRGdW5jdGlvbkNoZWNrcyhjYWxsTGlua1N0YXR1cywgY2Fs
bFRhcmdldE5vZGUsIHJlZ2lzdGVyT2Zmc2V0LCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgIEFT
U0VSVChpbmxpbmluZ0Nvc3QoY2FsbGVlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3Bl
Y2lhbGl6YXRpb25LaW5kKSAhPSBVSU5UX01BWCk7CiAgICAgCisgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBjYWxsZWUuZnVuY3Rpb25FeGVjdXRhYmxlKCktPmJhc2VsaW5lQ29kZUJsb2NrRm9y
KHNwZWNpYWxpemF0aW9uS2luZCk7CisKICAgICAvLyBGSVhNRTogRG9uJ3QgZmx1c2ggY29uc3Rh
bnRzIQogICAgIAogICAgIGludCBpbmxpbmVDYWxsRnJhbWVTdGFydCA9IG1faW5saW5lU3RhY2tU
b3AtPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXQpKS5vZmZzZXQo
KSArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7CkBAIC0xMjMzLDcgKzEyMTQsNyBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgICAgIHJlc3VsdFJl
ZyA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChyZXN1bHRSZWcpOwogICAgIAogICAg
IElubGluZVN0YWNrRW50cnkgaW5saW5lU3RhY2tFbnRyeSgKLSAgICAgICAgdGhpcywgY29kZUJs
b2NrLCBjb2RlQmxvY2ssIG1fZ3JhcGgubGFzdEJsb2NrKCksIGNhbGxMaW5rU3RhdHVzLmZ1bmN0
aW9uKCksIHJlc3VsdFJlZywKKyAgICAgICAgdGhpcywgY29kZUJsb2NrLCBjb2RlQmxvY2ssIG1f
Z3JhcGgubGFzdEJsb2NrKCksIGNhbGxlZS5mdW5jdGlvbigpLCByZXN1bHRSZWcsCiAgICAgICAg
IChWaXJ0dWFsUmVnaXN0ZXIpaW5saW5lQ2FsbEZyYW1lU3RhcnQsIGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBraW5kKTsKICAgICAKICAgICAvLyBUaGlzIGlzIHdoZXJlIHRoZSBhY3R1YWwg
aW5saW5pbmcgcmVhbGx5IGhhcHBlbnMuCkBAIC0xMjQ3LDggKzEyMjgsOCBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgCiAgICAgUkVMRUFTRV9BU1NFUlQo
CiAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVD
YWxsCi0gICAgICAgID09IGNhbGxMaW5rU3RhdHVzLmlzQ2xvc3VyZUNhbGwoKSk7Ci0gICAgaWYg
KGNhbGxMaW5rU3RhdHVzLmlzQ2xvc3VyZUNhbGwoKSkgeworICAgICAgICA9PSBjYWxsZWUuaXND
bG9zdXJlQ2FsbCgpKTsKKyAgICBpZiAoY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSkgewogICAgICAg
ICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGNhbGxlZVZhcmlhYmxlID0KICAgICAgICAgICAgIHNldChW
aXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6Q2FsbGVlKSwgY2FsbFRhcmdldE5vZGUsIEltbWVkaWF0
ZU5ha2VkU2V0KS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CiAgICAgICAgIFZhcmlhYmxlQWNjZXNz
RGF0YSogc2NvcGVWYXJpYWJsZSA9CkBAIC0xMjc2LDIwICsxMjU3LDggQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBB
U1NFUlQoaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxzaXRlQmxvY2tIZWFkLT5pc0xpbmtlZCk7CiAg
ICAgICAgIAotICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGNhbGxzaXRlIGJsb2Nr
IGhlYWQgaXMgbm90IG93bmVkIGJ5IHRoZSBjYWxsZXIuCi0gICAgICAgIGlmICghaW5saW5lU3Rh
Y2tFbnRyeS5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5pc0VtcHR5KCkpIHsKLSAgICAgICAg
ICAgIC8vIEl0J3MgZGVmaW5pdGVseSBvd25lZCBieSB0aGUgY2FsbGVyLCBiZWNhdXNlIHRoZSBj
YWxsZXIgY3JlYXRlZCBuZXcgYmxvY2tzLgotICAgICAgICAgICAgLy8gQXNzZXJ0IHRoYXQgdGhp
cyBhbGwgYWRkcyB1cC4KLSAgICAgICAgICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5Lm1fY2Fs
bGVyLT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX2Jsb2NrID09IGlubGluZVN0YWNrRW50cnku
bV9jYWxsc2l0ZUJsb2NrSGVhZCk7Ci0gICAgICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRy
eS5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9uZWVkc05vcm1hbExpbmtpbmcp
OwotICAgICAgICAgICAgaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nr
cy5sYXN0KCkubV9uZWVkc05vcm1hbExpbmtpbmcgPSBmYWxzZTsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIC8vIEl0J3MgZGVmaW5pdGVseSBub3Qgb3duZWQgYnkgdGhlIGNhbGxlci4g
VGVsbCB0aGUgY2FsbGVyIHRoYXQgaGUgZG9lcyBub3QKLSAgICAgICAgICAgIC8vIG5lZWQgdG8g
bGluayBoaXMgY2FsbHNpdGUgYmxvY2sgaGVhZCwgYmVjYXVzZSB3ZSBkaWQgaXQgZm9yIGhpbS4K
LSAgICAgICAgICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLT5tX2NhbGxzaXRl
QmxvY2tIZWFkTmVlZHNMaW5raW5nKTsKLSAgICAgICAgICAgIEFTU0VSVChpbmxpbmVTdGFja0Vu
dHJ5Lm1fY2FsbGVyLT5tX2NhbGxzaXRlQmxvY2tIZWFkID09IGlubGluZVN0YWNrRW50cnkubV9j
YWxsc2l0ZUJsb2NrSGVhZCk7Ci0gICAgICAgICAgICBpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVy
LT5tX2NhbGxzaXRlQmxvY2tIZWFkTmVlZHNMaW5raW5nID0gZmFsc2U7Ci0gICAgICAgIH0KKyAg
ICAgICAgaWYgKGNhbGxlckxpbmthYmlsaXR5ID09IENhbGxlckRvZXNOb3JtYWxMaW5raW5nKQor
ICAgICAgICAgICAgY2FuY2VsTGlua2luZ0ZvckJsb2NrKGlubGluZVN0YWNrRW50cnkubV9jYWxs
ZXIsIGlubGluZVN0YWNrRW50cnkubV9jYWxsc2l0ZUJsb2NrSGVhZCk7CiAgICAgICAgIAogICAg
ICAgICBsaW5rQmxvY2tzKGlubGluZVN0YWNrRW50cnkubV91bmxpbmtlZEJsb2NrcywgaW5saW5l
U3RhY2tFbnRyeS5tX2Jsb2NrTGlua2luZ1RhcmdldHMpOwogICAgIH0gZWxzZQpAQCAtMTMxMiwx
MiArMTI4MSwxMSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1fY3VycmVudEJsb2NrID0gbV9ncmFwaC5sYXN0
QmxvY2soKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgCiAgICAgLy8gSWYgd2UgZ2V0IHRvIHRoaXMgcG9pbnQgdGhlbiBhbGwgYmxvY2tzIG11c3Qg
ZW5kIGluIHNvbWUgc29ydCBvZiB0ZXJtaW5hbHMuCiAgICAgQVNTRVJUKGxhc3RCbG9jay0+bGFz
dCgpLT5pc1Rlcm1pbmFsKCkpOwotICAgIAogCiAgICAgLy8gTmVlZCB0byBjcmVhdGUgYSBuZXcg
YmFzaWMgYmxvY2sgZm9yIHRoZSBjb250aW51YXRpb24gYXQgdGhlIGNhbGxlci4KICAgICBSZWZQ
dHI8QmFzaWNCbG9jaz4gYmxvY2sgPSBhZG9wdFJlZihuZXcgQmFzaWNCbG9jayhuZXh0T2Zmc2V0
LCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIFBOYU4pKTsKQEAgLTEzMzMsMjAgKzEzMDEs
MjMwIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAgICAg
QVNTRVJUKCFub2RlLT50YXJnZXRCbG9jaygpKTsKICAgICAgICAgbm9kZS0+dGFyZ2V0QmxvY2so
KSA9IGJsb2NrLmdldCgpOwogICAgICAgICBpbmxpbmVTdGFja0VudHJ5Lm1fdW5saW5rZWRCbG9j
a3NbaV0ubV9uZWVkc0Vhcmx5UmV0dXJuTGlua2luZyA9IGZhbHNlOwotI2lmICFBU1NFUlRfRElT
QUJMRUQKLSAgICAgICAgYmxvY2tUb0xpbmstPmlzTGlua2VkID0gdHJ1ZTsKLSNlbmRpZgorICAg
ICAgICBibG9ja1RvTGluay0+ZGlkTGluaygpOwogICAgIH0KICAgICAKICAgICBtX2N1cnJlbnRC
bG9jayA9IGJsb2NrLmdldCgpOwogICAgIEFTU0VSVChtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxl
ci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmlzRW1wdHkoKSB8fCBtX2lubGluZVN0YWNrVG9wLT5t
X2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmxhc3QoKS0+Ynl0ZWNvZGVCZWdpbiA8IG5l
eHRPZmZzZXQpOwogICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX3VubGlua2VkQmxv
Y2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLmdldCgpKSk7Ci0gICAgbV9pbmxpbmVTdGFj
a1RvcC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5hcHBlbmQoYmxvY2suZ2V0KCkp
OworICAgIGlmIChjYWxsZXJMaW5rYWJpbGl0eSA9PSBDYWxsZXJEb2VzTm9ybWFsTGlua2luZykK
KyAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5nVGFyZ2V0
cy5hcHBlbmQoYmxvY2suZ2V0KCkpOwogICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soYmxvY2spOwog
ICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKK30KKwordm9pZCBCeXRlQ29kZVBhcnNlcjo6Y2Fu
Y2VsTGlua2luZ0ZvckJsb2NrKElubGluZVN0YWNrRW50cnkqIGlubGluZVN0YWNrRW50cnksIEJh
c2ljQmxvY2sqIGJsb2NrKQoreworICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB0aGUgY2FsbHNp
dGUgYmxvY2sgaGVhZCBpcyBub3Qgb3duZWQgYnkgdGhlIGNhbGxlci4KKyAgICBpZiAoIWlubGlu
ZVN0YWNrRW50cnktPm1fdW5saW5rZWRCbG9ja3MuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIEl0
J3MgZGVmaW5pdGVseSBvd25lZCBieSB0aGUgY2FsbGVyLCBiZWNhdXNlIHRoZSBjYWxsZXIgY3Jl
YXRlZCBuZXcgYmxvY2tzLgorICAgICAgICAvLyBBc3NlcnQgdGhhdCB0aGlzIGFsbCBhZGRzIHVw
LgorICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0
KCkubV9ibG9jayA9PSBibG9jayk7CisgICAgICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5LT5t
X3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX25lZWRzTm9ybWFsTGlua2luZyk7CisgICAgICAgIGlu
bGluZVN0YWNrRW50cnktPm1fdW5saW5rZWRCbG9ja3MubGFzdCgpLm1fbmVlZHNOb3JtYWxMaW5r
aW5nID0gZmFsc2U7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gSXQncyBkZWZpbml0ZWx5IG5v
dCBvd25lZCBieSB0aGUgY2FsbGVyLiBUZWxsIHRoZSBjYWxsZXIgdGhhdCBoZSBkb2VzIG5vdAor
ICAgICAgICAvLyBuZWVkIHRvIGxpbmsgaGlzIGNhbGxzaXRlIGJsb2NrIGhlYWQsIGJlY2F1c2Ug
d2UgZGlkIGl0IGZvciBoaW0uCisgICAgICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5LT5tX2Nh
bGxzaXRlQmxvY2tIZWFkTmVlZHNMaW5raW5nKTsKKyAgICAgICAgQVNTRVJUKGlubGluZVN0YWNr
RW50cnktPm1fY2FsbHNpdGVCbG9ja0hlYWQgPT0gYmxvY2spOworICAgICAgICBpbmxpbmVTdGFj
a0VudHJ5LT5tX2NhbGxzaXRlQmxvY2tIZWFkTmVlZHNMaW5raW5nID0gZmFsc2U7CisgICAgfQor
fQorCitib29sIEJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKE5vZGUqIGNhbGxU
YXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVn
aXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4
dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIENhbGxlckxpbmthYmlsaXR5IGNh
bGxlckxpbmthYmlsaXR5LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCB1bnNpZ25lZCYgaW5s
aW5pbmdCYWxhbmNlKQoreworICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRp
b25LaW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXphdGlvbktpbmRGb3Ioa2luZCk7Cisg
ICAgCisgICAgaWYgKCFpbmxpbmluZ0JhbGFuY2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICBpZiAoSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUuaW50ZXJuYWxG
dW5jdGlvbigpKSB7CisgICAgICAgIGlmIChoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24o
cmVzdWx0T3BlcmFuZCwgZnVuY3Rpb24sIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kKSkgeworICAgICAgICAgICAgYWRkVG9HcmFw
aChQaGFudG9tLCBjYWxsVGFyZ2V0Tm9kZSk7CisgICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFu
dG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxp
emF0aW9uS2luZCk7CisgICAgICAgICAgICBpbmxpbmluZ0JhbGFuY2UtLTsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgCisgICAgSW50cmluc2ljIGludHJpbnNpYyA9IGNhbGxlZS5pbnRyaW5zaWNGb3Ioc3BlY2lh
bGl6YXRpb25LaW5kKTsKKyAgICBpZiAoaW50cmluc2ljICE9IE5vSW50cmluc2ljKSB7CisgICAg
ICAgIGlmIChoYW5kbGVJbnRyaW5zaWMocmVzdWx0T3BlcmFuZCwgaW50cmluc2ljLCByZWdpc3Rl
ck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHByZWRpY3Rpb24pKSB7CisgICAg
ICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXROb2RlKTsKKyAgICAgICAgICAg
IGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICAgICAgICAgIGlubGluaW5nQmFsYW5j
ZS0tOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBteUlubGluaW5nQ29zdCA9IGlubGlu
aW5nQ29zdChjYWxsZWUsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlv
bktpbmQpOworICAgIGlmIChteUlubGluaW5nQ29zdCA+IGlubGluaW5nQmFsYW5jZSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlubGluZUNhbGwoY2FsbFRhcmdldE5vZGUsIHJl
c3VsdE9wZXJhbmQsIGNhbGxlZSwgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBuZXh0T2Zmc2V0LCBraW5kLCBjYWxsZXJMaW5rYWJpbGl0eSk7CisgICAgaW5saW5p
bmdCYWxhbmNlIC09IG15SW5saW5pbmdDb3N0OworICAgIHJldHVybiB0cnVlOworICAgIAorfQor
Citib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9k
ZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1
cywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVu
c2lnbmVkIG5leHRPZmZzZXQsIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5k
IGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCit7CisgICAgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0
aW9uS2luZEZvcihraW5kKTsKKyAgICAKKyAgICBpZiAoIWNhbGxMaW5rU3RhdHVzLnNpemUoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHVuc2lnbmVkIGlubGluaW5nQmFsYW5j
ZSA9IE9wdGlvbnM6Om1heGltdW1GdW5jdGlvbkZvckNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVj
dGlvbkNvdW50KCk7CisgICAgaWYgKHNwZWNpYWxpemF0aW9uS2luZCA9PSBDb2RlRm9yQ29uc3Ry
dWN0KQorICAgICAgICBpbmxpbmluZ0JhbGFuY2UgPSBzdGQ6Om1pbihpbmxpbmluZ0JhbGFuY2Us
IE9wdGlvbnM6Om1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGluZUNhbmRpZGF0ZUluc3Ry
dWN0aW9uQ291bnQoKSk7CisgICAgaWYgKGNhbGxMaW5rU3RhdHVzLmlzQ2xvc3VyZUNhbGwoKSkK
KyAgICAgICAgaW5saW5pbmdCYWxhbmNlID0gc3RkOjptaW4oaW5saW5pbmdCYWxhbmNlLCBPcHRp
b25zOjptYXhpbXVtRnVuY3Rpb25Gb3JDbG9zdXJlQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0
aW9uQ291bnQoKSk7CisgICAgCisgICAgLy8gRmlyc3QgY2hlY2sgaWYgd2UgY2FuIGF2b2lkIGNy
ZWF0aW5nIGNvbnRyb2wgZmxvdy4gT3VyIGlubGluZXIgZG9lcyBzb21lIENGRworICAgIC8vIHNp
bXBsaWZpY2F0aW9uIG9uIHRoZSBmbHkgYW5kIHRoaXMgaGVscHMgcmVkdWNlIGNvbXBpbGUgdGlt
ZXMsIGJ1dCB3ZSBjYW4gb25seSBsZXZlcmFnZQorICAgIC8vIHRoaXMgaW4gY2FzZXMgd2hlcmUg
d2UgZG9uJ3QgbmVlZCBjb250cm9sIGZsb3cgZGlhbW9uZHMgdG8gY2hlY2sgdGhlIGNhbGxlZS4K
KyAgICBpZiAoIWNhbGxMaW5rU3RhdHVzLmNvdWxkVGFrZVNsb3dQYXRoKCkgJiYgY2FsbExpbmtT
dGF0dXMuc2l6ZSgpID09IDEpIHsKKyAgICAgICAgaWYgKCFjYWxsTGlua1N0YXR1cy5pc1Byb3Zl
ZCgpKSB7CisgICAgICAgICAgICBlbWl0RnVuY3Rpb25DaGVja3MoCisgICAgICAgICAgICAgICAg
Y2FsbExpbmtTdGF0dXNbMF0uY2FsbGVlKCksIGNhbGxUYXJnZXROb2RlLCByZWdpc3Rlck9mZnNl
dCwgc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICAgICAgfQorICAgICAgICBib29sIHJlc3VsdCA9
IGF0dGVtcHRUb0lubGluZUNhbGwoCisgICAgICAgICAgICBjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0
T3BlcmFuZCwgY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVlKCksIHJlZ2lzdGVyT2Zmc2V0LAorICAg
ICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQsIGtpbmQsIENh
bGxlckRvZXNOb3JtYWxMaW5raW5nLCBwcmVkaWN0aW9uLAorICAgICAgICAgICAgaW5saW5pbmdC
YWxhbmNlKTsKKyAgICAgICAgaWYgKCFyZXN1bHQgJiYgIWNhbGxMaW5rU3RhdHVzLmlzUHJvdmVk
KCkpCisgICAgICAgICAgICB1bmRvRnVuY3Rpb25DaGVja3MoY2FsbExpbmtTdGF0dXNbMF0uY2Fs
bGVlKCkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICAvLyBXZSBu
ZWVkIHRvIGNyZWF0ZSBzb21lIGtpbmQgb2Ygc3dpdGNoIG92ZXIgY2FsbGVlLiBGb3Igbm93IHdl
IG9ubHkgZG8gdGhpcyBpZiB3ZSBiZWxpZXZlIHRoYXQKKyAgICAvLyB3ZSdyZSBpbiB0aGUgdG9w
IHRpZXIuIFdlIGhhdmUgdHdvIHJlYXNvbnMgZm9yIHRoaXM6IGZpcnN0LCBpdCBwcm92aWRlcyB1
cyBhbiBvcHBvcnR1bml0eSB0bworICAgIC8vIGRvIG1vcmUgZGV0YWlsZWQgcG9seXZhcmlhbnQv
cG9seW1vcnBoaWMgcHJvZmlsaW5nOyBhbmQgc2Vjb25kLCBpdCByZWR1Y2VzIGNvbXBpbGUgdGlt
ZXMgaW4KKyAgICAvLyB0aGUgREZHLiBBbmQgYnkgcG9seXZhcmlhbnQgcHJvZmlsaW5nIHdlIG1l
YW4gcG9seXZhcmlhbnQgcHJvZmlsaW5nIG9mICp0aGlzKiBjYWxsLiBOb3RlIHRoYXQKKyAgICAv
LyB3ZSBjb3VsZCBpbXByb3ZlIHRoYXQgYXNwZWN0IG9mIHRoaXMgYnkgZG9pbmcgcG9seW1vcnBo
aWMgaW5saW5pbmcgYnV0IGhhdmluZyB0aGUgcHJvZmlsaW5nCisgICAgLy8gYWxzby4gQ3VycmVu
dGx5IHdlIG9wdCBhZ2FpbnN0IHRoaXMsIGJ1dCBpdCBjb3VsZCBiZSBpbnRlcmVzdGluZy4gVGhh
dCB3b3VsZCByZXF1aXJlIGhhdmluZyBhCisgICAgLy8gc2VwYXJhdGUgbm9kZSBmb3IgY2FsbCBl
ZGdlIHByb2ZpbGluZy4KKyAgICAvLyBGSVhNRTogSW50cm9kdWNlIHRoZSBub3Rpb24gb2YgYSBz
ZXBhcmF0ZSBjYWxsIGVkZ2UgcHJvZmlsaW5nIG5vZGUuCisgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjAzMworICAgIGlmICghaXNGVEwobV9ncmFwaC5t
X3BsYW4ubW9kZSkgfHwgIU9wdGlvbnM6OmVuYWJsZVBvbHltb3JwaGljQ2FsbElubGluaW5nKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBib29sIGFsbEFyZUNsb3N1cmVDYWxs
cyA9IHRydWU7CisgICAgYm9vbCBhbGxBcmVEaXJlY3RDYWxscyA9IHRydWU7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gY2FsbExpbmtTdGF0dXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIGlmIChj
YWxsTGlua1N0YXR1c1tpXS5jYWxsZWUoKS5pc0Nsb3N1cmVDYWxsKCkpCisgICAgICAgICAgICBh
bGxBcmVEaXJlY3RDYWxscyA9IGZhbHNlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhbGxB
cmVDbG9zdXJlQ2FsbHMgPSBmYWxzZTsKKyAgICB9CisgICAgCisgICAgTm9kZSogdGhpbmdUb1N3
aXRjaE9uOworICAgIGlmIChhbGxBcmVEaXJlY3RDYWxscykKKyAgICAgICAgdGhpbmdUb1N3aXRj
aE9uID0gY2FsbFRhcmdldE5vZGU7CisgICAgZWxzZSBpZiAoYWxsQXJlQ2xvc3VyZUNhbGxzKQor
ICAgICAgICB0aGluZ1RvU3dpdGNoT24gPSBhZGRUb0dyYXBoKEdldEV4ZWN1dGFibGUsIGNhbGxU
YXJnZXROb2RlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBh
YmxlIHRvIGhhbmRsZSB0aGlzIGNhc2UsIGJ1dCBpdCdzIHRyaWNreSBhbmQgd2UgZG9uJ3Qga25v
dyBvZiBjYXNlcworICAgICAgICAvLyB3aGVyZSBpdCB3b3VsZCBiZSBiZW5lZmljaWFsLiBBbHNv
LCBDYWxsTGlua1N0YXR1cyB3b3VsZCBtYWtlIGFsbCBjYWxsZWVzIGFwcGVhciBsaWtlCisgICAg
ICAgIC8vIGNsb3N1cmUgY2FsbHMgaWYgYW55IGNhbGxzIHdlcmUgY2xvc3VyZSBjYWxscyAtIGV4
Y2VwdCBmb3IgY2FsbHMgdG8gaW50ZXJuYWwgZnVuY3Rpb25zLgorICAgICAgICAvLyBTbyB0aGlz
IHdpbGwgb25seSBhcmlzZSBpZiBzb21lIGNhbGxlZXMgYXJlIGludGVybmFsIGZ1bmN0aW9ucyBh
bmQgb3RoZXJzIGFyZSBjbG9zdXJlcy4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzNjAyMAorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIAorICAgIC8vIFRoaXMgbWFrZXMgbWUgd2lzaCB0aGF0IHdlIHdlcmUgaW4gU1NBIGFsbCB0
aGUgdGltZS4gV2UgbmVlZCB0byBwaWNrIGEgdmFyaWFibGUgaW50byB3aGljaCB0bworICAgIC8v
IHN0b3JlIHRoZSBjYWxsZWUgc28gdGhhdCBpdCB3aWxsIGJlIGFjY2Vzc2libGUgdG8gYWxsIG9m
IHRoZSBibG9ja3Mgd2UncmUgYWJvdXQgdG8gY3JlYXRlLiBXZQorICAgIC8vIGdldCBhd2F5IHdp
dGggZG9pbmcgYW4gaW1tZWRpYXRlLXNldCBoZXJlIGJlY2F1c2Ugd2Ugd291bGRuJ3QgaGF2ZSBw
ZXJmb3JtZWQgYW55IHNpZGUgZWZmZWN0cworICAgIC8vIHlldC4KKyAgICBWaXJ0dWFsUmVnaXN0
ZXIgY2FsbGVlUmVnKHJlZ2lzdGVyT2Zmc2V0ICsgSlNTdGFjazo6Q2FsbGVlKTsKKyAgICBzZXRE
aXJlY3QoY2FsbGVlUmVnLCBjYWxsVGFyZ2V0Tm9kZSwgSW1tZWRpYXRlU2V0V2l0aEZsdXNoKTsK
KyAgICAKKyAgICBTd2l0Y2hEYXRhJiBkYXRhID0gKm1fZ3JhcGgubV9zd2l0Y2hEYXRhLmFkZCgp
OworICAgIGRhdGEua2luZCA9IFN3aXRjaENlbGw7CisgICAgYWRkVG9HcmFwaChTd2l0Y2gsIE9w
SW5mbygmZGF0YSksIHRoaW5nVG9Td2l0Y2hPbik7CisgICAgCisgICAgQmFzaWNCbG9jayogb3Jp
Z2luQmxvY2sgPSBtX2N1cnJlbnRCbG9jazsKKyAgICBvcmlnaW5CbG9jay0+ZGlkTGluaygpOwor
ICAgIGNhbmNlbExpbmtpbmdGb3JCbG9jayhtX2lubGluZVN0YWNrVG9wLCBvcmlnaW5CbG9jayk7
CisgICAgCisgICAgLy8gRWFjaCBpbmxpbmVkIGNhbGxlZSB3aWxsIGhhdmUgYSBsYW5kaW5nIGJs
b2NrIHRoYXQgaXQgcmV0dXJucyBhdC4gVGhleSBzaG91bGQgYWxsIGhhdmUganVtcHMKKyAgICAv
LyB0byB0aGUgY29udGludWF0aW9uIGJsb2NrLCB3aGljaCB3ZSBjcmVhdGUgbGFzdC4KKyAgICBW
ZWN0b3I8QmFzaWNCbG9jayo+IGxhbmRpbmdCbG9ja3M7CisgICAgCisgICAgLy8gV2UgbWFrZSBm
b3JjZSB0aGlzIHRydWUgaWYgd2UgZ2l2ZSB1cCBvbiBpbmxpbmluZyBhbnkgb2YgdGhlIGVkZ2Vz
LgorICAgIGJvb2wgY291bGRUYWtlU2xvd1BhdGggPSBjYWxsTGlua1N0YXR1cy5jb3VsZFRha2VT
bG93UGF0aCgpOworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsTGlua1N0
YXR1cy5zaXplKCk7ICsraSkgeworICAgICAgICBSZWZQdHI8QmFzaWNCbG9jaz4gYmxvY2sgPSBh
ZG9wdFJlZihuZXcgQmFzaWNCbG9jayhVSU5UX01BWCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9j
YWxzLCBQTmFOKSk7CisgICAgICAgIG1fY3VycmVudEJsb2NrID0gYmxvY2suZ2V0KCk7CisgICAg
ICAgIG1fZ3JhcGgubV9ibG9ja3MuYXBwZW5kKGJsb2NrKTsKKyAgICAgICAgcHJlcGFyZVRvUGFy
c2VCbG9jaygpOworICAgICAgICAKKyAgICAgICAgTm9kZSogbXlDYWxsVGFyZ2V0Tm9kZSA9IGdl
dERpcmVjdChjYWxsZWVSZWcpOworICAgICAgICAKKyAgICAgICAgYm9vbCBpbmxpbmluZ1Jlc3Vs
dCA9IGF0dGVtcHRUb0lubGluZUNhbGwoCisgICAgICAgICAgICBteUNhbGxUYXJnZXROb2RlLCBy
ZXN1bHRPcGVyYW5kLCBjYWxsTGlua1N0YXR1c1tpXS5jYWxsZWUoKSwgcmVnaXN0ZXJPZmZzZXQs
CisgICAgICAgICAgICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbmV4dE9mZnNldCwga2lu
ZCwgQ2FsbGVyTGlua3NNYW51YWxseSwgcHJlZGljdGlvbiwKKyAgICAgICAgICAgIGlubGluaW5n
QmFsYW5jZSk7CisgICAgICAgIAorICAgICAgICBpZiAoIWlubGluaW5nUmVzdWx0KSB7CisgICAg
ICAgICAgICAvLyBUaGF0IGZhaWxlZCBzbyB3ZSBsZXQgdGhlIGJsb2NrIGRpZS4gTm90aGluZyBp
bnRlcmVzdGluZyBzaG91bGQgaGF2ZSBiZWVuIGFkZGVkIHRvCisgICAgICAgICAgICAvLyB0aGUg
YmxvY2suIFdlIGFsc28gZ2l2ZSB1cCBvbiBpbmxpbmluZyBhbnkgb2YgdGhlIChsZXNzIGZyZXF1
ZW50KSBjYWxsZWVzLgorICAgICAgICAgICAgQVNTRVJUKG1fY3VycmVudEJsb2NrID09IGJsb2Nr
LmdldCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLm1fYmxvY2tzLmxhc3QoKSA9PSBi
bG9jayk7CisgICAgICAgICAgICBtX2dyYXBoLmtpbGxCbG9ja0FuZEl0c0NvbnRlbnRzKGJsb2Nr
LmdldCgpKTsKKyAgICAgICAgICAgIG1fZ3JhcGgubV9ibG9ja3MucmVtb3ZlTGFzdCgpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICAvLyBUaGUgZmFjdCB0aGF0IGlubGluaW5nIGZhaWxlZCBt
ZWFucyB3ZSBuZWVkIGEgc2xvdyBwYXRoLgorICAgICAgICAgICAgY291bGRUYWtlU2xvd1BhdGgg
PSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IEpTQ2VsbCogdGhpbmdUb0Nhc2VPbjsKKyAgICAgICAgaWYgKGFsbEFyZURpcmVjdENhbGxzKQor
ICAgICAgICAgICAgdGhpbmdUb0Nhc2VPbiA9IGNhbGxMaW5rU3RhdHVzW2ldLmNhbGxlZSgpLm5v
bkV4ZWN1dGFibGVDYWxsZWUoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQo
YWxsQXJlQ2xvc3VyZUNhbGxzKTsKKyAgICAgICAgICAgIHRoaW5nVG9DYXNlT24gPSBjYWxsTGlu
a1N0YXR1c1tpXS5jYWxsZWUoKS5leGVjdXRhYmxlKCk7CisgICAgICAgIH0KKyAgICAgICAgZGF0
YS5jYXNlcy5hcHBlbmQoU3dpdGNoQ2FzZShtX2dyYXBoLmZyZWV6ZSh0aGluZ1RvQ2FzZU9uKSwg
YmxvY2suZ2V0KCkpKTsKKyAgICAgICAgYWRkVG9HcmFwaChKdW1wKTsKKyAgICAgICAgbV9jdXJy
ZW50QmxvY2stPmRpZExpbmsoKTsKKyAgICAgICAgbGFuZGluZ0Jsb2Nrcy5hcHBlbmQobV9jdXJy
ZW50QmxvY2spOworICAgIH0KKyAgICAKKyAgICBSZWZQdHI8QmFzaWNCbG9jaz4gc2xvd1BhdGhC
bG9jayA9IGFkb3B0UmVmKAorICAgICAgICBuZXcgQmFzaWNCbG9jayhVSU5UX01BWCwgbV9udW1B
cmd1bWVudHMsIG1fbnVtTG9jYWxzLCBQTmFOKSk7CisgICAgZGF0YS5mYWxsVGhyb3VnaCA9IEJy
YW5jaFRhcmdldChzbG93UGF0aEJsb2NrLmdldCgpKTsKKyAgICBtX2dyYXBoLm1fYmxvY2tzLmFw
cGVuZChzbG93UGF0aEJsb2NrKTsKKyAgICBzbG93UGF0aEJsb2NrLT5kaWRMaW5rKCk7CisgICAg
cHJlcGFyZVRvUGFyc2VCbG9jaygpOworICAgIG1fY3VycmVudEJsb2NrID0gc2xvd1BhdGhCbG9j
ay5nZXQoKTsKKyAgICBpZiAoY291bGRUYWtlU2xvd1BhdGgpIHsKKyAgICAgICAgTm9kZSogbXlD
YWxsVGFyZ2V0Tm9kZSA9IGdldERpcmVjdChjYWxsZWVSZWcpOworICAgICAgICBhZGRDYWxsKAor
ICAgICAgICAgICAgcmVzdWx0T3BlcmFuZCwgY2FsbE9wLCBPcEluZm8oKSwgbXlDYWxsVGFyZ2V0
Tm9kZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCisgICAgICAgICAgICByZWdpc3Rlck9m
ZnNldCwgcHJlZGljdGlvbik7CisgICAgICAgIGFkZFRvR3JhcGgoSnVtcCk7CisgICAgICAgIGxh
bmRpbmdCbG9ja3MuYXBwZW5kKG1fY3VycmVudEJsb2NrKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBhZGRUb0dyYXBoKENoZWNrQmFkQ2VsbCk7CisgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsK
KyAgICAgICAgYWRkVG9HcmFwaChVbnJlYWNoYWJsZSk7CisgICAgfQorICAgIAorICAgIFJlZlB0
cjxCYXNpY0Jsb2NrPiBjb250aW51YXRpb25CbG9jayA9IGFkb3B0UmVmKAorICAgICAgICBuZXcg
QmFzaWNCbG9jayhVSU5UX01BWCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCBQTmFOKSk7
CisgICAgbV9ncmFwaC5tX2Jsb2Nrcy5hcHBlbmQoY29udGludWF0aW9uQmxvY2spOworICAgIG1f
aW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soY29u
dGludWF0aW9uQmxvY2suZ2V0KCkpKTsKKyAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CisgICAg
bV9jdXJyZW50QmxvY2sgPSBjb250aW51YXRpb25CbG9jay5nZXQoKTsKKyAgICAKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBsYW5kaW5nQmxvY2tzLnNpemUoKTsgaS0tOykKKyAgICAgICAgbGFuZGlu
Z0Jsb2Nrc1tpXS0+bGFzdCgpLT50YXJnZXRCbG9jaygpID0gY29udGludWF0aW9uQmxvY2suZ2V0
KCk7CiAgICAgCi0gICAgLy8gQXQgdGhpcyBwb2ludCB3ZSByZXR1cm4gYW5kIGNvbnRpbnVlIHRv
IGdlbmVyYXRlIGNvZGUgZm9yIHRoZSBjYWxsZXIsIGJ1dAotICAgIC8vIGluIHRoZSBuZXcgYmFz
aWMgYmxvY2suCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE2NDUsNyArMTgyMyw3IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVR5cGVkQXJyYXlDb24KIAogYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKAogICAgIGludCByZXN1bHRPcGVy
YW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgaW50IHJlZ2lzdGVyT2Zmc2V0LAotICAg
IGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQorICAgIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIC8vIElmIHdl
IGV2ZXIgZmluZCB0aGF0IHdlIGhhdmUgYSBsb3Qgb2YgaW50ZXJuYWwgZnVuY3Rpb25zIHRoYXQg
d2Ugc3BlY2lhbGl6ZSBmb3IsCiAgICAgLy8gdGhlbiB3ZSBzaG91bGQgcHJvYmFibHkgaGF2ZSBz
b21lIHNvcnQgb2YgaGFzaHRhYmxlIGRpc3BhdGNoLCBvciBtYXliZSBldmVuCkBAIC0xNjU0LDgg
KzE4MzIsNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVyCiAgICAg
Ly8gd2Uga25vdyBhYm91dCBpcyBzbWFsbCBlbm91Z2gsIHRoYXQgaGF2aW5nIGp1c3QgYSBsaW5l
YXIgY2FzY2FkZSBvZiBpZiBzdGF0ZW1lbnRzCiAgICAgLy8gaXMgZ29vZCBlbm91Z2guCiAgICAg
Ci0gICAgVU5VU0VEX1BBUkFNKHByZWRpY3Rpb24pOyAvLyBSZW1vdmUgdGhpcyBvbmNlIHdlIGRv
IG1vcmUgdGhpbmdzLgotICAgIAogICAgIGlmIChmdW5jdGlvbi0+Y2xhc3NJbmZvKCkgPT0gQXJy
YXlDb25zdHJ1Y3Rvcjo6aW5mbygpKSB7CiAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2xvYmFsT2Jq
ZWN0KCkgIT0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjIwOSwxMyArMjM4NSwxMyBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBKU0NlbGwqIGNh
Y2hlZEZ1bmN0aW9uID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUuanNDZWxsLmdldCgpOwogICAg
ICAgICAgICAgaWYgKCFjYWNoZWRGdW5jdGlvbiAKICAgICAgICAgICAgICAgICB8fCBtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmNvdWxkVGFrZVNsb3dDYXNlKG1fY3VycmVudElu
ZGV4KQotICAgICAgICAgICAgICAgIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUu
aGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZEZ1bmN0aW9uKSkgeworICAgICAgICAgICAg
ICAgIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJy
ZW50SW5kZXgsIEJhZENlbGwpKSB7CiAgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihK
U1N0YWNrOjpDYWxsZWUpKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
IEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dyYXBoLmZyZWV6ZShjYWNoZWRGdW5jdGlvbik7CiAg
ICAgICAgICAgICAgICAgQVNTRVJUKGNhY2hlZEZ1bmN0aW9uLT5pbmhlcml0cyhKU0Z1bmN0aW9u
OjppbmZvKCkpKTsKICAgICAgICAgICAgICAgICBOb2RlKiBhY3R1YWxDYWxsZWUgPSBnZXQoVmly
dHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkNhbGxlZSkpOwotICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoQ2hlY2tGdW5jdGlvbiwgT3BJbmZvKGZyb3plbiksIGFjdHVhbENhbGxlZSk7CisgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhmcm96ZW4pLCBhY3R1YWxDYWxs
ZWUpOwogICAgICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgoSlNDb25zdGFudCwgT3BJbmZvKGZyb3plbikp
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9jYWxsZWUp
OwpAQCAtMjg5Nyw3ICszMDczLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZAogICAgICAgICAgICAgLy8gYWxyZWFkeSBnbmFybHkgZW5vdWdoIGFzIGl0IGlzLgog
ICAgICAgICAgICAgQVNTRVJUKHBvaW50ZXJJc0Z1bmN0aW9uKGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51LnNwZWNpYWxQb2ludGVyKSk7CiAgICAgICAgICAgICBhZGRUb0dyYXBoKAotICAgICAgICAg
ICAgICAgIENoZWNrRnVuY3Rpb24sCisgICAgICAgICAgICAgICAgQ2hlY2tDZWxsLAogICAgICAg
ICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShzdGF0aWNfY2FzdDxKU0NlbGwqPihhY3R1
YWxQb2ludGVyRm9yKAogICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Nv
ZGVCbG9jaywgY3VycmVudEluc3RydWN0aW9uWzJdLnUuc3BlY2lhbFBvaW50ZXIpKSkpLAogICAg
ICAgICAgICAgICAgIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZCkpKTsKQEAgLTMzMjIsOSArMzQ5OCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6Omxp
bmtCbG9jayhCYXNpY0Jsb2MKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotI2lmICFBU1NF
UlRfRElTQUJMRUQKLSAgICBibG9jay0+aXNMaW5rZWQgPSB0cnVlOwotI2VuZGlmCisgICAgYmxv
Y2stPmRpZExpbmsoKTsKIH0KIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrcyhWZWN0
b3I8VW5saW5rZWRCbG9jaz4mIHVubGlua2VkQmxvY2tzLCBWZWN0b3I8QmFzaWNCbG9jayo+JiBw
b3NzaWJsZVRhcmdldHMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1Jl
dGhyZWFkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTkwLDggKzkwLDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIG5v
ZGUtPmNoaWxkcmVuLnNldENoaWxkMShFZGdlKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b206Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICghbm9kZS0+Y2hpbGQxKCkpCisgICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS0+Y2hpbGQx
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShu
b2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCktPm9wKCkp
IHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBQaGk6CiAgICAgICAgICAgICAgICAgICAgIGNh
c2UgU2V0QXJndW1lbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw2ICsxNDQsNyBAQCB2b2lkIGNs
b2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBGaWF0SW50NTI6CiAg
ICAgY2FzZSBNYWtlUm9wZToKICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKKyAgICBjYXNlIEdldEV4
ZWN1dGFibGU6CiAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSkpOwogICAgICAgICByZXR1cm47
CiAgICAgICAgIApAQCAtMjM5LDEyICsyNDAsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlCiAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwgbm9kZS0+YXJpdGhN
b2RlKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBjYXNlIENoZWNrRnVuY3Rp
b246Ci0gICAgICAgIGRlZihQdXJlVmFsdWUoQ2hlY2tGdW5jdGlvbiwgQWRqYWNlbmN5TGlzdChB
ZGphY2VuY3lMaXN0OjpGaXhlZCwgbm9kZS0+Y2hpbGQxKCkpLCBub2RlLT5mdW5jdGlvbigpKSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6Ci0g
ICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwgbm9kZS0+ZXhlY3V0YWJsZSgpKSk7CisgICAgY2Fz
ZSBDaGVja0NlbGw6CisgICAgICAgIGRlZihQdXJlVmFsdWUoQ2hlY2tDZWxsLCBBZGphY2VuY3lM
aXN0KEFkamFjZW5jeUxpc3Q6OkZpeGVkLCBub2RlLT5jaGlsZDEoKSksIG5vZGUtPmNlbGxPcGVy
YW5kKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIENvbnN0YW50U3Rv
cmFnZVBvaW50ZXI6CkBAIC0yNjMsNiArMjYwLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgU3dpdGNoOgogICAgIGNhc2UgVGhyb3c6CiAgICAg
Y2FzZSBGb3JjZU9TUkV4aXQ6CisgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgY2FzZSBSZXR1
cm46CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZv
bGRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIs
OCArMTQyLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjogewot
ICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVl
KCkgIT0gbm9kZS0+ZnVuY3Rpb24oKS0+dmFsdWUoKSkKKyAgICAgICAgICAgIGNhc2UgQ2hlY2tD
ZWxsOiB7CisgICAgICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEo
KSkudmFsdWUoKSAhPSBub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpKQogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7
CiAgICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkx
LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0
QnlJZEZsdXNoOgogICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKICAgICBjYXNlIENoZWNrU3RydWN0
dXJlOgotICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOgorICAgIGNhc2UgR2V0RXhlY3V0YWJsZToK
ICAgICBjYXNlIEdldEJ1dHRlcmZseToKICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgY2FzZSBH
ZXRTY29wZToKQEAgLTEwNSw3ICsxMDUsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRHbG9iYWxWYXI6CiAgICAgY2FzZSBWYXJpYWJsZVdhdGNo
cG9pbnQ6CiAgICAgY2FzZSBWYXJJbmplY3Rpb25XYXRjaHBvaW50OgotICAgIGNhc2UgQ2hlY2tG
dW5jdGlvbjoKKyAgICBjYXNlIENoZWNrQ2VsbDoKICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxl
V2F0Y2hwb2ludDoKICAgICBjYXNlIFJlZ0V4cEV4ZWM6CiAgICAgY2FzZSBSZWdFeHBUZXN0OgpA
QCAtMTk2LDYgKzE5Niw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkK
ICAgICBjYXNlIEdldERpcmVjdFBuYW1lOgogICAgIGNhc2UgRmlhdEludDUyOgogICAgIGNhc2Ug
Qm9vbGVhblRvTnVtYmVyOgorICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5
LDkgQEAgc3RhdGljIENvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGVJbXBsKAogICAgICAgICB2bS5n
ZXRDVElTdHViKHZpcnR1YWxDb25zdHJ1Y3RUaGF0UHJlc2VydmVzUmVnc1RodW5rR2VuZXJhdG9y
KTsKICAgICB9CiAgICAgCisgICAgaWYgKHZtLmNhbGxFZGdlTG9nKQorICAgICAgICB2bS5jYWxs
RWRnZUxvZy0+cHJvY2Vzc0xvZygpOworICAgIAogICAgIFJlZlB0cjxQbGFuPiBwbGFuID0gYWRv
cHRSZWYoCiAgICAgICAgIG5ldyBQbGFuKGNvZGVCbG9jaywgcHJvZmlsZWRERkdDb2RlQmxvY2ss
IG1vZGUsIG9zckVudHJ5Qnl0ZWNvZGVJbmRleCwgbXVzdEhhbmRsZVZhbHVlcykpOwogICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZp
c2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MzYsNiArNzM2LDEyIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZygp
KQogICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQxKCkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTd2l0Y2hDZWxsOgor
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgp
KQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgICAgICAvLyBlbHNlIGl0J3MgZmluZSBmb3IgdGhpcyB0byBoYXZlIFVudHlw
ZWRVc2U7IHdlIHdpbGwgaGFuZGxlIHRoaXMgYnkganVzdCBtYWtpbmcKKyAgICAgICAgICAgICAg
ICAvLyBub24tY2VsbHMgdGFrZSB0aGUgZGVmYXVsdCBjYXNlLgorICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTg5
OCwxMyArOTA0LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
Ci0gICAgICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOiB7CisgICAgICAgIGNhc2UgR2V0RXhlY3V0
YWJsZTogewogICAgICAgICAgICAgZml4RWRnZTxGdW5jdGlvblVzZT4obm9kZS0+Y2hpbGQxKCkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBj
YXNlIENoZWNrU3RydWN0dXJlOgotICAgICAgICBjYXNlIENoZWNrRnVuY3Rpb246CisgICAgICAg
IGNhc2UgQ2hlY2tDZWxsOgogICAgICAgICBjYXNlIENoZWNrSGFzSW5zdGFuY2U6CiAgICAgICAg
IGNhc2UgQ3JlYXRlVGhpczoKICAgICAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6IHsKQEAgLTExNTAs
NiArMTE1Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVGhyb3dSZWZlcmVuY2VFcnJvcjoK
ICAgICAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6
CisgICAgICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgICAgICBjYXNlIENoZWNrV2F0Y2hkb2dU
aW1lcjoKICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICAgICAgY2FzZSBFeHRyYWN0T1NS
RW50cnlMb2NhbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShy
ZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksNyBAQCBHcmFwaDo6R3JhcGgoVk0mIHZtLCBQ
bGFuJiBwbGFuLCBMb25nTGl2CiAgICAgLCBtX2Zvcm0oTG9hZFN0b3JlKQogICAgICwgbV91bmlm
aWNhdGlvblN0YXRlKExvY2FsbHlVbmlmaWVkKQogICAgICwgbV9yZWZDb3VudFN0YXRlKEV2ZXJ5
dGhpbmdJc0xpdmUpCisgICAgLCBtX3Nob3VsZFByb2ZpbGUoZmFsc2UpCiB7CiAgICAgQVNTRVJU
KG1fcHJvZmlsZWRCbG9jayk7CiAgICAgCkBAIC0yMjIsMjQgKzIyMywxOSBAQCB2b2lkIEdyYXBo
OjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0CiAgICAgICAgIG91dC5wcmludChjb21tYSwg
aW5Db250ZXh0KCpub2RlLT5zdHJ1Y3R1cmUoKSwgY29udGV4dCkpOwogICAgIGlmIChub2RlLT5o
YXNUcmFuc2l0aW9uKCkpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgcG9pbnRlckR1bXBJbkNv
bnRleHQobm9kZS0+dHJhbnNpdGlvbigpLCBjb250ZXh0KSk7Ci0gICAgaWYgKG5vZGUtPmhhc0Z1
bmN0aW9uKCkpIHsKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiZnVuY3Rpb24oIiwgcG9pbnRl
ckR1bXAobm9kZS0+ZnVuY3Rpb24oKSksICIsICIpOwotICAgICAgICBpZiAobm9kZS0+ZnVuY3Rp
b24oKS0+dmFsdWUoKS5pc0NlbGwoKQotICAgICAgICAgICAgJiYgbm9kZS0+ZnVuY3Rpb24oKS0+
dmFsdWUoKS5hc0NlbGwoKS0+aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkgewotICAgICAg
ICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG5vZGUtPmZ1
bmN0aW9uKCktPnZhbHVlKCkuYXNDZWxsKCkpOwotICAgICAgICAgICAgaWYgKGZ1bmN0aW9uLT5p
c0hvc3RGdW5jdGlvbigpKQotICAgICAgICAgICAgICAgIG91dC5wcmludCgiPGhvc3QgZnVuY3Rp
b24+Iik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgb3V0LnByaW50KEZ1bmN0
aW9uRXhlY3V0YWJsZUR1bXAoZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpKSk7Ci0gICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgb3V0LnByaW50KCI8bm90IEpTRnVuY3Rpb24+Iik7Ci0gICAgICAg
IG91dC5wcmludCgiKSIpOwotICAgIH0KLSAgICBpZiAobm9kZS0+aGFzRXhlY3V0YWJsZSgpKSB7
Ci0gICAgICAgIGlmIChub2RlLT5leGVjdXRhYmxlKCktPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0
YWJsZTo6aW5mbygpKSkKLSAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgImV4ZWN1dGFibGUo
IiwgRnVuY3Rpb25FeGVjdXRhYmxlRHVtcChqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4obm9k
ZS0+ZXhlY3V0YWJsZSgpKSksICIpIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG91dC5w
cmludChjb21tYSwgImV4ZWN1dGFibGUobm90IGZ1bmN0aW9uOiAiLCBSYXdQb2ludGVyKG5vZGUt
PmV4ZWN1dGFibGUoKSksICIpIik7CisgICAgaWYgKG5vZGUtPmhhc0NlbGxPcGVyYW5kKCkpIHsK
KyAgICAgICAgb3V0LnByaW50KGNvbW1hLCBwb2ludGVyRHVtcChub2RlLT5jZWxsT3BlcmFuZCgp
LT52YWx1ZSgpLmFzQ2VsbCgpKSk7CisgICAgICAgIGlmIChub2RlLT5jZWxsT3BlcmFuZCgpLT52
YWx1ZSgpLmlzQ2VsbCgpKSB7CisgICAgICAgICAgICBDYWxsVmFyaWFudCB2YXJpYW50KG5vZGUt
PmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuYXNDZWxsKCkpOworICAgICAgICAgICAgaWYgKEV4ZWN1
dGFibGVCYXNlKiBleGVjdXRhYmxlID0gdmFyaWFudC5leGVjdXRhYmxlKCkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgICAgICAg
ICAgICAgb3V0LnByaW50KGNvbW1hLCAiPGhvc3QgZnVuY3Rpb24+Iik7CisgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBqc0R5
bmFtaWNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpKQorICAgICAgICAgICAg
ICAgICAgICBvdXQucHJpbnQoY29tbWEsIEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAoZnVuY3Rpb25F
eGVjdXRhYmxlKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBv
dXQucHJpbnQoY29tbWEsICI8bm9uLWZ1bmN0aW9uIGV4ZWN1dGFibGU+Iik7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KICAgICB9CiAgICAgaWYgKG5vZGUtPmhhc0Z1bmN0aW9uRGVjbEluZGV4
KCkpIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbV9jb2RlQmxv
Y2stPmZ1bmN0aW9uRGVjbChub2RlLT5mdW5jdGlvbkRlY2xJbmRleCgpKTsKQEAgLTk4NSwxMCAr
OTgxLDYgQEAgdm9pZCBHcmFwaDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdgogICAgICAg
ICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgQ2hlY2tF
eGVjdXRhYmxlOgotICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRSZWFk
T25seVBvaW50ZXIobm9kZS0+ZXhlY3V0YWJsZSgpKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbm9kZS0+c3RydWN0dXJlU2V0KCkuc2l6ZSgp
OyBpLS07KQogICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVh
ZE9ubHlQb2ludGVyKG5vZGUtPnN0cnVjdHVyZVNldCgpW2ldKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtNzYxLDYgKzc2MSw3IEBA
IHB1YmxpYzoKICAgICBHcmFwaEZvcm0gbV9mb3JtOwogICAgIFVuaWZpY2F0aW9uU3RhdGUgbV91
bmlmaWNhdGlvblN0YXRlOwogICAgIFJlZkNvdW50U3RhdGUgbV9yZWZDb3VudFN0YXRlOworICAg
IGJvb2wgbV9zaG91bGRQcm9maWxlOwogcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGhhbmRsZVN1
Y2Nlc3NvcihWZWN0b3I8QmFzaWNCbG9jayosIDE2PiYgd29ya2xpc3QsIEJhc2ljQmxvY2sqLCBC
YXNpY0Jsb2NrKiBzdWNjZXNzb3IpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNiArMTEzLDkgQEAgdm9pZCBwcmludElu
dGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFN3aQogICAgIGNhc2UgU3dpdGNoU3RyaW5nOgogICAg
ICAgICBvdXQucHJpbnQoIlN3aXRjaFN0cmluZyIpOwogICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBTd2l0Y2hDZWxsOgorICAgICAgICBvdXQucHJpbnQoIlN3aXRjaENlbGwiKTsKKyAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDE3MjE3NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAs
NyArMTYwLDggQEAgc3RydWN0IFN3aXRjaENhc2UgewogZW51bSBTd2l0Y2hLaW5kIHsKICAgICBT
d2l0Y2hJbW0sCiAgICAgU3dpdGNoQ2hhciwKLSAgICBTd2l0Y2hTdHJpbmcKKyAgICBTd2l0Y2hT
dHJpbmcsCisgICAgU3dpdGNoQ2VsbAogfTsKIAogc3RydWN0IFN3aXRjaERhdGEgewpAQCAtMTg1
LDYgKzE4Niw3IEBAIHN0cnVjdCBTd2l0Y2hEYXRhIHsKIC8vIGRpc3Rpbmd1aXNoZXMgYW4gaW1t
ZWRpYXRlIHZhbHVlICh0eXBpY2FsbHkgYW4gaW5kZXggaW50byBhIENvZGVCbG9jayBkYXRhIHN0
cnVjdHVyZSAtIAogLy8gYSBjb25zdGFudCBpbmRleCwgYXJndW1lbnQsIG9yIGlkZW50aWZpZXIp
IGZyb20gYSBOb2RlKi4KIHN0cnVjdCBPcEluZm8geworICAgIE9wSW5mbygpIDogbV92YWx1ZSgw
KSB7IH0KICAgICBleHBsaWNpdCBPcEluZm8oaW50MzJfdCB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRp
Y19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KICAgICBleHBsaWNpdCBPcEluZm8odWludDMy
X3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9CiAj
aWYgT1MoREFSV0lOKSB8fCBVU0UoSlNWQUxVRTY0KQpAQCAtMTA0NCw5ICsxMDQ2LDExIEBAIHN0
cnVjdCBOb2RlIHsKICAgICAgICAgbV9vcEluZm8yID0gcHJlZGljdGlvbjsKICAgICB9CiAgICAg
Ci0gICAgYm9vbCBjYW5CZUtub3duRnVuY3Rpb24oKQorICAgIGJvb2wgaGFzQ2VsbE9wZXJhbmQo
KQogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgQWxsb2NhdGlv
blByb2ZpbGVXYXRjaHBvaW50OgorICAgICAgICBjYXNlIENoZWNrQ2VsbDoKICAgICAgICAgY2Fz
ZSBOYXRpdmVDb25zdHJ1Y3Q6CiAgICAgICAgIGNhc2UgTmF0aXZlQ2FsbDoKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwpAQCAtMTA1NSw1NCArMTA1OSwxNiBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBib29sIGhhc0tub3duRnVuY3Rpb24oKQorICAgIEZyb3plblZh
bHVlKiBjZWxsT3BlcmFuZCgpCiAgICAgewotICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKLSAgICAg
ICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6Ci0gICAgICAgIGNhc2UgTmF0aXZlQ2FsbDoKLSAgICAg
ICAgICAgIHJldHVybiAoYm9vbCltX29wSW5mbzsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBKU0Z1bmN0aW9u
KiBrbm93bkZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjYW5CZUtub3duRnVuY3Rp
b24oKSk7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNGdW5jdGlvbio+KG1fb3BJbmZv
KTsKLSAgICB9Ci0KLSAgICB2b2lkIGdpdmVLbm93bkZ1bmN0aW9uKEpTRnVuY3Rpb24qIGNhbGxE
YXRhKSAKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjYW5CZUtub3duRnVuY3Rpb24oKSk7Ci0gICAg
ICAgIG1fb3BJbmZvID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oY2FsbERhdGEpOwotICAgIH0K
LQotICAgIGJvb2wgaGFzRnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgc3dpdGNoIChvcCgpKSB7
Ci0gICAgICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKLSAgICAgICAgY2FzZSBBbGxvY2F0aW9uUHJv
ZmlsZVdhdGNocG9pbnQ6Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEZy
b3plblZhbHVlKiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBBU1NFUlQoaGFzRnVuY3Rpb24o
KSk7CisgICAgICAgIEFTU0VSVChoYXNDZWxsT3BlcmFuZCgpKTsKICAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8RnJvemVuVmFsdWUqPihtX29wSW5mbyk7CiAgICAgfQogICAgIAotICAg
IGJvb2wgaGFzRXhlY3V0YWJsZSgpCisgICAgdm9pZCBzZXRDZWxsT3BlcmFuZChGcm96ZW5WYWx1
ZSogdmFsdWUpCiAgICAgewotICAgICAgICByZXR1cm4gb3AoKSA9PSBDaGVja0V4ZWN1dGFibGU7
Ci0gICAgfQotICAgIAotICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBqc0Nhc3Q8RXhlY3V0YWJsZUJhc2UqPihyZWludGVycHJldF9jYXN0PEpT
Q2VsbCo+KG1fb3BJbmZvKSk7CisgICAgICAgIEFTU0VSVChoYXNDZWxsT3BlcmFuZCgpKTsKKyAg
ICAgICAgbV9vcEluZm8gPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSk7CiAgICAgfQog
ICAgIAogICAgIGJvb2wgaGFzVmFyaWFibGVXYXRjaHBvaW50U2V0KCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTUz
LDcgKzE1Myw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhQ
dXRCeUlkRmx1c2gsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNs
b2JiZXJzV29ybGQpIFwKICAgICBtYWNybyhQdXRCeUlkRGlyZWN0LCBOb2RlTXVzdEdlbmVyYXRl
IHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKICAgICBtYWNybyhDaGVja1N0cnVjdHVyZSwgTm9kZU11
c3RHZW5lcmF0ZSkgXAotICAgIG1hY3JvKENoZWNrRXhlY3V0YWJsZSwgTm9kZU11c3RHZW5lcmF0
ZSkgXAorICAgIG1hY3JvKEdldEV4ZWN1dGFibGUsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3Jv
KFB1dFN0cnVjdHVyZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEFsbG9jYXRlUHJv
cGVydHlTdG9yYWdlLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdFN0b3JhZ2UpIFwKICAg
ICBtYWNybyhSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9k
ZVJlc3VsdFN0b3JhZ2UpIFwKQEAgLTE4Niw3ICsxODYsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oVmFyaWFibGVXYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVy
YXRlKSBcCiAgICAgbWFjcm8oVmFySW5qZWN0aW9uV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0
ZSkgXAogICAgIG1hY3JvKEZ1bmN0aW9uUmVlbnRyeVdhdGNocG9pbnQsIE5vZGVNdXN0R2VuZXJh
dGUpIFwKLSAgICBtYWNybyhDaGVja0Z1bmN0aW9uLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAg
bWFjcm8oQ2hlY2tDZWxsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oQ2hlY2tCYWRD
ZWxsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQWxsb2NhdGlvblByb2ZpbGVXYXRj
aHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tJbkJvdW5kcywgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcAko
cmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9t
Q2Fub25pY2FsaXphdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsOCArOTIsMTAg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4ucmVtb3Zl
RWRnZShpLS0pOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKQorICAgICAg
ICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvQ2hlY2soKTsK
ICAgICAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Bo
YW50b21SZW1vdmFsUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyNSw2ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZHJlbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9h
bGxvY2F0b3IuZnJlZShub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0
cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAg
ICAgIH0KQEAgLTE0Miw2ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgICAgICAgICB9CkBAIC0xNDksOCArMTUxLDEwIEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNhc2Ug
SGFyZFBoYW50b206IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHko
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5v
ZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAx
NzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDcgKzE5Niw4IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNh
c2UgR2V0R2V0dGVyU2V0dGVyQnlPZmZzZXQ6IHsKKyAgICAgICAgY2FzZSBHZXRHZXR0ZXJTZXR0
ZXJCeU9mZnNldDoKKyAgICAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOiB7CiAgICAgICAgICAgICBj
aGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oU3BlY0NlbGxPdGhlcik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQpAQCAtNjQzLDggKzY0NCw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
Rm9yY2VPU1JFeGl0OgogICAgICAgICBjYXNlIFNldEFyZ3VtZW50OgogICAgICAgICBjYXNlIENo
ZWNrU3RydWN0dXJlOgotICAgICAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToKLSAgICAgICAgY2Fz
ZSBDaGVja0Z1bmN0aW9uOgorICAgICAgICBjYXNlIENoZWNrQ2VsbDoKKyAgICAgICAgY2FzZSBD
aGVja0JhZENlbGw6CiAgICAgICAgIGNhc2UgUHV0U3RydWN0dXJlOgogICAgICAgICBjYXNlIFRl
YXJPZmZBY3RpdmF0aW9uOgogICAgICAgICBjYXNlIFRlYXJPZmZBcmd1bWVudHM6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24g
MTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE1OSw3ICsxNTksNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJz
dHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CiAgICAgY2FzZSBQdXRC
eUlkRGlyZWN0OgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6Ci0gICAgY2FzZSBDaGVja0V4ZWN1
dGFibGU6CisgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgogICAgIGNhc2UgR2V0QnV0dGVyZmx5Ogog
ICAgIGNhc2UgQ2hlY2tBcnJheToKICAgICBjYXNlIEFycmF5aWZ5OgpAQCAtMTc1LDcgKzE3NSw4
IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIFB1
dEdsb2JhbFZhcjoKICAgICBjYXNlIFZhcmlhYmxlV2F0Y2hwb2ludDoKICAgICBjYXNlIFZhcklu
amVjdGlvbldhdGNocG9pbnQ6Ci0gICAgY2FzZSBDaGVja0Z1bmN0aW9uOgorICAgIGNhc2UgQ2hl
Y2tDZWxsOgorICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgIGNhc2UgQWxsb2NhdGlvblByb2Zp
bGVXYXRjaHBvaW50OgogICAgIGNhc2UgUmVnRXhwRXhlYzoKICAgICBjYXNlIFJlZ0V4cFRlc3Q6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4OSw2
ICs2ODksMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogCiAg
ICAgbV9qaXQuZW1pdFN0b3JlQ29kZU9yaWdpbihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAg
IAorICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlu
a0luZm8oKTsKKworICAgIGlmIChtX2ppdC5ncmFwaCgpLm1fc2hvdWxkUHJvZmlsZSAmJiAhbV9z
dGF0ZS5mb3JOb2RlKGNhbGxlZUVkZ2UpLm1fdmFsdWUpIHsKKyAgICAgICAgbV9qaXQudm0oKS5j
YWxsRWRnZUxvZy0+ZW1pdExvZ0NvZGUoCisgICAgICAgICAgICBtX2ppdCwgY2FsbExpbmtJbmZv
LT5jYWxsRWRnZVByb2ZpbGUsIGNhbGxlZS5qc1ZhbHVlUmVncygpKTsKKyAgICB9CisgICAgCiAg
ICAgc2xvd1BhdGguYXBwZW5kKGJyYW5jaE5vdENlbGwoY2FsbGVlLmpzVmFsdWVSZWdzKCkpKTsK
ICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoUHRyV2l0aFBhdGNoKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgY2FsbGVlUGF5bG9hZEdQUiwgdGFyZ2V0VG9DaGVjaykpOwogICAgIG1f
aml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2FsbGVlUGF5bG9hZEdQUiwgT0JK
RUNUX09GRlNFVE9GKEpTRnVuY3Rpb24sIG1fc2NvcGUpKSwgcmVzdWx0UGF5bG9hZEdQUik7CkBA
IC03MTMsNyArNzIwLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9k
ZQogICAgICAgICBtX2ppdC5tb3ZlKGNhbGxlZVBheWxvYWRHUFIsIEdQUkluZm86OnJlZ1QwKTsK
ICAgICAgICAgbV9qaXQubW92ZShjYWxsZWVUYWdHUFIsIEdQUkluZm86OnJlZ1QxKTsKICAgICB9
Ci0gICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5r
SW5mbygpOwogICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoaW5m
byksIEdQUkluZm86OnJlZ1QyKTsKICAgICBKSVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9IG1f
aml0Lm5lYXJDYWxsKCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjI2LDcgKzYyNiw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNaXNjU3RyaWN0
RXEKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKIHsKLQogICAg
IGJvb2wgaXNDYWxsID0gbm9kZS0+b3AoKSA9PSBDYWxsOwogICAgIGlmICghaXNDYWxsKQogICAg
ICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPm9wKCkgPT0gQ29uc3Ry
dWN0KTsKQEAgLTY3MCw2ICs2NjksMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwo
Tm9kZSogbm9kZQogCiAgICAgbV9qaXQuZW1pdFN0b3JlQ29kZU9yaWdpbihub2RlLT5vcmlnaW4u
c2VtYW50aWMpOwogICAgIAorICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gbV9qaXQu
Y29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbygpOworICAgIAorICAgIGlmIChtX2ppdC5ncmFw
aCgpLm1fc2hvdWxkUHJvZmlsZSAmJiAhbV9zdGF0ZS5mb3JOb2RlKGNhbGxlZUVkZ2UpLm1fdmFs
dWUpIHsKKyAgICAgICAgbV9qaXQudm0oKS0+Y2FsbEVkZ2VMb2ctPmVtaXRMb2dDb2RlKAorICAg
ICAgICAgICAgbV9qaXQsIGNhbGxMaW5rSW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBKU1ZhbHVlUmVn
cyhjYWxsZWVHUFIpKTsKKyAgICB9CisKICAgICBzbG93UGF0aCA9IG1faml0LmJyYW5jaFB0cldp
dGhQYXRjaChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxlZUdQUiwgdGFyZ2V0VG9DaGVj
aywgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoMCkpOwogCiAgICAgbV9qaXQubG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjYWxsZWVHUFIsIE9CSkVDVF9PRkZTRVRPRihKU0Z1
bmN0aW9uLCBtX3Njb3BlKSksIHJlc3VsdEdQUik7CkBAIC02ODIsNyArNjg4LDYgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgIHNsb3dQYXRoLmxpbmsoJm1f
aml0KTsKICAgICAKICAgICBtX2ppdC5tb3ZlKGNhbGxlZUdQUiwgR1BSSW5mbzo6cmVnVDApOyAv
LyBDYWxsZWUgbmVlZHMgdG8gYmUgaW4gcmVnVDAKLSAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5r
SW5mbyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKICAgICBtX2ppdC5t
b3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86
OnJlZ1QyKTsgLy8gTGluayBpbmZvIG5lZWRzIHRvIGJlIGluIHJlZ1QyCiAgICAgSklUQ29tcGls
ZXI6OkNhbGwgc2xvd0NhbGwgPSBtX2ppdC5uZWFyQ2FsbCgpOwogICAgIApAQCAtMzc4NCwxOCAr
Mzc4OSwyMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAg
IAotICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjogewotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBmdW5jdGlvbih0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkRnVuY3Rpb24sIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGZ1bmN0aW9uLmdwcigp
KSwgbm9kZS0+Y2hpbGQxKCksIG1faml0LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6Ok5vdEVx
dWFsLCBmdW5jdGlvbi5ncHIoKSwgbm9kZS0+ZnVuY3Rpb24oKS0+dmFsdWUoKS5hc0NlbGwoKSkp
OworICAgIGNhc2UgQ2hlY2tDZWxsOiB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGNl
bGwodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZENl
bGwsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGNlbGwuZ3ByKCkpLCBub2RlLT5jaGlsZDEo
KSwgbV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGNlbGwuZ3ByKCks
IG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuYXNDZWxsKCkpKTsKICAgICAgICAgbm9SZXN1
bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBDaGVj
a0V4ZWN1dGFibGU6IHsKKyAgICBjYXNlIEdldEV4ZWN1dGFibGU6IHsKICAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBz
cGVjdWxhdGVDZWxsVHlwZShub2RlLT5jaGlsZDEoKSwgZnVuY3Rpb24uZ3ByKCksIFNwZWNGdW5j
dGlvbiwgSlNGdW5jdGlvblR5cGUpOwotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZEV4ZWN1
dGFibGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGZ1bmN0aW9uLmdwcigpKSwgbm9kZS0+
Y2hpbGQxKCksIG1faml0LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBKSVRD
b21waWxlcjo6QWRkcmVzcyhmdW5jdGlvbi5ncHIoKSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVj
dXRhYmxlKCkpLCBub2RlLT5leGVjdXRhYmxlKCkpKTsKLSAgICAgICAgbm9SZXN1bHQobm9kZSk7
CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGZ1bmN0aW9uKTsKKyAg
ICAgICAgR1BSUmVnIGZ1bmN0aW9uR1BSID0gZnVuY3Rpb24uZ3ByKCk7CisgICAgICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIHNwZWN1bGF0ZUNlbGxUeXBlKG5v
ZGUtPmNoaWxkMSgpLCBmdW5jdGlvbkdQUiwgU3BlY0Z1bmN0aW9uLCBKU0Z1bmN0aW9uVHlwZSk7
CisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoZnVuY3Rpb25HUFIs
IEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAg
Y2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
ICAgIApAQCAtNDk5MCw3ICs0OTk4LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAgICBjYXNlIE11bHRpUHV0
QnlPZmZzZXQ6CiAgICAgY2FzZSBGaWF0SW50NTI6Ci0gICAgICAgIERGR19DUkFTSChtX2ppdC5n
cmFwaCgpLCBub2RlLCAiVW5leHBlY3RlZCBGVEwgbm9kZSIpOworICAgIGNhc2UgQ2hlY2tCYWRD
ZWxsOgorICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwgIlVuZXhwZWN0ZWQg
bm9kZSIpOwogICAgICAgICBicmVhazsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTM1NCw2ICs1MzU0LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRT
d2l0Y2goTm9kZSogbm8KICAgICBjYXNlIFN3aXRjaFN0cmluZzogewogICAgICAgICBlbWl0U3dp
dGNoU3RyaW5nKG5vZGUsIGRhdGEpOwogICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2Ug
U3dpdGNoQ2VsbDogeworICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwgIkJh
ZCBzd2l0Y2gga2luZCIpOworICAgICAgICByZXR1cm47CiAgICAgfSB9CiAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0lu
amVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsOCBAQCBwdWJsaWM6
CiAgICAgICAgIGlmICghT3B0aW9uczo6ZW5hYmxlT1NSRW50cnlUb0ZUTCgpKQogICAgICAgICAg
ICAgbGV2ZWwgPSBGVEw6OkNhbkNvbXBpbGU7CiAgICAgICAgIAorICAgICAgICBtX2dyYXBoLm1f
c2hvdWxkUHJvZmlsZSA9IHRydWU7CisgICAgICAgIAogICAgICAgICBJbnNlcnRpb25TZXQgaW5z
ZXJ0aW9uU2V0KG1fZ3JhcGgpOwogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9
IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKICAgICAgICAgICAgIEJhc2lj
QmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjAwLDcgKzIwMCw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBWQUxJREFURSgobm9kZSksICFtYXlFeGl0KG1fZ3JhcGgsIG5vZGUpIHx8IG5vZGUtPm9y
aWdpbi5mb3JFeGl0LmlzU2V0KCkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwg
IW5vZGUtPmhhc1N0cnVjdHVyZSgpIHx8ICEhbm9kZS0+c3RydWN0dXJlKCkpOwotICAgICAgICAg
ICAgICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhhc0Z1bmN0aW9uKCkgfHwgbm9kZS0+ZnVu
Y3Rpb24oKS0+dmFsdWUoKS5pc0Z1bmN0aW9uKCkpOwogICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBpZiAoIShub2RlLT5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGlmICghbm9kZS0+Y2hpbGQyKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1dhdGNoYWJsZVN0cnVjdHVyZVdhdGNoaW5nUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hhYmxlU3RydWN0dXJl
V2F0Y2hpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHV2F0Y2hhYmxlU3RydWN0dXJlV2F0Y2hpbmdQaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYyLDEwICs2Miw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBOb2RlKiBu
b2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENoZWNrRXhlY3V0
YWJsZToKLSAgICAgICAgICAgICAgICAgICAgdHJ5V2F0Y2gobm9kZS0+ZXhlY3V0YWJsZSgpLT5z
dHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgICAgICAgICAgICAg
ICAgIHRyeVdhdGNoKG5vZGUtPnN0cnVjdHVyZVNldCgpKTsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dhdGNocG9pbnRDb2xs
ZWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTExNCw3ICsxMTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9p
bnQ6Ci0gICAgICAgICAgICBhZGRMYXppbHkoanNDYXN0PEpTRnVuY3Rpb24qPihtX25vZGUtPmZ1
bmN0aW9uKCktPnZhbHVlKCkpLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKSk7Cisg
ICAgICAgICAgICBhZGRMYXppbHkoanNDYXN0PEpTRnVuY3Rpb24qPihtX25vZGUtPmNlbGxPcGVy
YW5kKCktPnZhbHVlKCkpLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFZhcmlhYmxlV2F0Y2hw
b2ludDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGll
cy5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw4IEBAIGlubGlu
ZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIFB1dENsb3N1cmVW
YXI6CiAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKICAgICBjYXNlIFN0cmluZ0NoYXJBdDoK
LSAgICBjYXNlIENoZWNrRnVuY3Rpb246CisgICAgY2FzZSBDaGVja0NlbGw6CisgICAgY2FzZSBD
aGVja0JhZENlbGw6CiAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgogICAgIGNhc2UgQWxsb2Nh
dGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgpA
QCAtMTI2LDcgKzEyNyw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2Rl
KiAKICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6CiAgICAgY2FzZSBDaGVjazoKICAg
ICBjYXNlIENvdW50RXhlY3V0aW9uOgotICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOgorICAgIGNh
c2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNlIEdldFNjb3BlOgogICAgIGNhc2UgQWxsb2NhdGlv
blByb2ZpbGVXYXRjaHBvaW50OgogICAgIGNhc2UgQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkOgpA
QCAtMzI2LDYgKzMyNyw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2Rl
KiAKICAgICAgICAgc3dpdGNoIChub2RlLT5zd2l0Y2hEYXRhKCktPmtpbmQpIHsKICAgICAgICAg
Y2FzZSBTd2l0Y2hJbW06CiAgICAgICAgIGNhc2UgU3dpdGNoQ2hhcjoKKyAgICAgICAgY2FzZSBT
d2l0Y2hDZWxsOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTUzLDExICsxNTMsMTcgQEAgcHVibGljOgogICAgICAgICBmb3IgKHVuc2lnbmVkIGJs
b2NrSW5kZXggPSBkZXB0aEZpcnN0LnNpemUoKTsgYmxvY2tJbmRleC0tOyApIHsKICAgICAgICAg
ICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gZGVwdGhGaXJzdFtibG9ja0luZGV4XTsKICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4ID0gYmxvY2stPnNpemUoKTsgbm9kZUluZGV4LS07
ICkgewotICAgICAgICAgICAgICAgIE5vZGUqIG1fbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgp
OwotICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmhhc0tub3duRnVuY3Rpb24oKSkgeworICAg
ICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKKyAgICAgICAg
ICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIE5hdGl2
ZUNhbGw6CisgICAgICAgICAgICAgICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6IHsKICAgICAgICAg
ICAgICAgICAgICAgaW50IG51bUFyZ3MgPSBtX25vZGUtPm51bUNoaWxkcmVuKCk7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChudW1BcmdzID4gbWF4TnVtYmVyT2ZBcmd1bWVudHMpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBtYXhOdW1iZXJPZkFyZ3VtZW50cyA9IG51bUFyZ3M7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ2OCwxMSArNDc0LDE0IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgICAgICAgICBjb21waWxlQ2hlY2tTdHJ1
Y3R1cmUoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENoZWNrRnVuY3Rpb246
Ci0gICAgICAgICAgICBjb21waWxlQ2hlY2tGdW5jdGlvbigpOworICAgICAgICBjYXNlIENoZWNr
Q2VsbDoKKyAgICAgICAgICAgIGNvbXBpbGVDaGVja0NlbGwoKTsKICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToKLSAgICAgICAgICAgIGNvbXBpbGVDaGVj
a0V4ZWN1dGFibGUoKTsKKyAgICAgICAgY2FzZSBDaGVja0JhZENlbGw6CisgICAgICAgICAgICBj
b21waWxlQ2hlY2tCYWRDZWxsKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBH
ZXRFeGVjdXRhYmxlOgorICAgICAgICAgICAgY29tcGlsZUdldEV4ZWN1dGFibGUoKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6CiAgICAgICAg
ICAgICBjb21waWxlQXJyYXlpZnlUb1N0cnVjdHVyZSgpOwpAQCAtMTc0MywyNiArMTc1MiwyNSBA
QCBwcml2YXRlOgogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0
KTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21waWxlQ2hlY2tGdW5jdGlvbigpCisgICAgdm9p
ZCBjb21waWxlQ2hlY2tDZWxsKCkKICAgICB7CiAgICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2Vs
bChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgCiAgICAgICAgIHNwZWN1bGF0ZSgKLSAgICAg
ICAgICAgIEJhZEZ1bmN0aW9uLCBqc1ZhbHVlVmFsdWUoY2VsbCksIG1fbm9kZS0+Y2hpbGQxKCku
bm9kZSgpLAotICAgICAgICAgICAgbV9vdXQubm90RXF1YWwoY2VsbCwgd2Vha1BvaW50ZXIobV9u
b2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpLmFzQ2VsbCgpKSkpOworICAgICAgICAgICAgQmFkQ2Vs
bCwganNWYWx1ZVZhbHVlKGNlbGwpLCBtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSwKKyAgICAgICAg
ICAgIG1fb3V0Lm5vdEVxdWFsKGNlbGwsIHdlYWtQb2ludGVyKG1fbm9kZS0+Y2VsbE9wZXJhbmQo
KS0+dmFsdWUoKS5hc0NlbGwoKSkpKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21waWxlQ2hl
Y2tFeGVjdXRhYmxlKCkKKyAgICB2b2lkIGNvbXBpbGVDaGVja0JhZENlbGwoKQorICAgIHsKKyAg
ICAgICAgdGVybWluYXRlKEJhZENlbGwpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNvbXBpbGVH
ZXRFeGVjdXRhYmxlKCkKICAgICB7CiAgICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25v
ZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgCiAgICAgICAgIHNwZWN1bGF0ZUZ1bmN0aW9uKG1fbm9k
ZS0+Y2hpbGQxKCksIGNlbGwpOwotICAgICAgICAKLSAgICAgICAgc3BlY3VsYXRlKAotICAgICAg
ICAgICAgQmFkRXhlY3V0YWJsZSwganNWYWx1ZVZhbHVlKGNlbGwpLCBtX25vZGUtPmNoaWxkMSgp
Lm5vZGUoKSwKLSAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKAotICAgICAgICAgICAgICAgIG1f
b3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0Z1bmN0aW9uX2V4ZWN1dGFibGUpLAotICAgICAg
ICAgICAgICAgIHdlYWtQb2ludGVyKG1fbm9kZS0+ZXhlY3V0YWJsZSgpKSkpOworICAgICAgICBz
ZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0Z1bmN0aW9uX2V4ZWN1dGFi
bGUpKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlQXJyYXlpZnlUb1N0cnVjdHVyZSgp
CkBAIC0zNjczLDkgKzM2ODEsNyBAQCBwcml2YXRlOgogICAgICAgICBpbnQgbnVtUGFzc2VkQXJn
cyA9IG1fbm9kZS0+bnVtQ2hpbGRyZW4oKSAtIDE7CiAgICAgICAgIGludCBudW1BcmdzID0gbnVt
UGFzc2VkQXJncyArIGR1bW15VGhpc0FyZ3VtZW50OwogCi0gICAgICAgIEFTU0VSVChtX25vZGUt
Pmhhc0tub3duRnVuY3Rpb24oKSk7Ci0KLSAgICAgICAgSlNGdW5jdGlvbioga25vd25GdW5jdGlv
biA9IG1fbm9kZS0+a25vd25GdW5jdGlvbigpOworICAgICAgICBKU0Z1bmN0aW9uKiBrbm93bkZ1
bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihtX25vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVl
KCkuYXNDZWxsKCkpOwogICAgICAgICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiA9IGtub3duRnVu
Y3Rpb24tPm5hdGl2ZUZ1bmN0aW9uKCk7CiAKICAgICAgICAgRGxfaW5mbyBpbmZvOwpAQCAtMzkx
OCwxMCArMzkyNCwzNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgICAgIAotICAgICAgICBjYXNlIFN3aXRjaFN0cmluZzoKKyAgICAgICAgY2FzZSBTd2l0
Y2hTdHJpbmc6IHsKICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJVbmlt
cGxlbWVudGVkIik7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgU3dpdGNoQ2VsbDogeworICAgICAg
ICAgICAgTFZhbHVlIGNlbGw7CisgICAgICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpKSB7CisgICAgICAgICAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgICAgICAg
ICBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgVW50
eXBlZFVzZTogeworICAgICAgICAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9u
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgY2VsbENhc2UgPSBG
VExfTkVXX0JMT0NLKG1fb3V0LCAoIlN3aXRjaC9Td2l0Y2hDZWxsIGNlbGwgY2FzZSIpKTsKKyAg
ICAgICAgICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICAgICAgICAgIGlzQ2VsbCh2
YWx1ZSksIHVuc3VyZShjZWxsQ2FzZSksIHVuc3VyZShsb3dCbG9jayhkYXRhLT5mYWxsVGhyb3Vn
aC5ibG9jaykpKTsKKyAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjZWxsQ2FzZSk7Cisg
ICAgICAgICAgICAgICAgY2VsbCA9IHZhbHVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiQmFkIHVzZSBraW5kIik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgICAgICBidWlsZFN3aXRjaChtX25vZGUtPnN3aXRjaERhdGEoKSwgbV9vdXQuaW50UHRyLCBj
ZWxsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSB9CiAgICAgICAgIAogICAgICAg
ICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiQmFkIHN3aXRjaCBraW5kIik7CiAgICAgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
ODQsNiArOTg0LDExIEBAIHZvaWQgSGVhcDo6Y29sbGVjdChIZWFwT3BlcmF0aW9uIGNvbGxlY3QK
ICAgICAgICAgdm0oKS0+aGlnaEZpZGVsaXR5TG9nKCktPnByb2Nlc3NIaWdoRmlkZWxpdHlMb2co
IkdDIik7CiAgICAgfQogICAgIAorICAgIGlmICh2bSgpLT5jYWxsRWRnZUxvZykgeworICAgICAg
ICBEZWZlckdDRm9yQVdoaWxlIGF3aGlsZSgqdGhpcyk7CisgICAgICAgIHZtKCktPmNhbGxFZGdl
TG9nLT5wcm9jZXNzTG9nKCk7CisgICAgfQorICAgIAogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2Rl
ZmVycmFsRGVwdGgpOwogICAgIEFTU0VSVCh2bSgpLT5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJ
TG9jaygpKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLT5hdG9taWNTdHJpbmdUYWJsZSgpID09
IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMTcyMTc3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5
KQpAQCAtODgsNiArODgsMjEgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogICAgIAorICAgIHZv
aWQgbG9hZFZhbHVlKEFkZHJlc3MgYWRkcmVzcywgSlNWYWx1ZVJlZ3MgcmVncykKKyAgICB7Cisj
aWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbG9hZDY0KGFkZHJlc3MsIHJlZ3MuZ3ByKCkpOwor
I2Vsc2UKKyAgICAgICAgaWYgKGFkZHJlc3MuYmFzZSA9PSByZWdzLnBheWxvYWRHUFIoKSkgewor
ICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldChUYWdPZmZzZXQpLCByZWdzLnRh
Z0dQUigpKTsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoUGF5bG9hZE9m
ZnNldCksIHJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCksIHJlZ3MucGF5bG9hZEdQ
UigpKTsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoVGFnT2Zmc2V0KSwg
cmVncy50YWdHUFIoKSk7CisgICAgICAgIH0KKyNlbmRpZgorICAgIH0KKyAgICAKICAgICB2b2lk
IG1vdmVUcnVzdGVkVmFsdWUoSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZVJlZ3MgcmVncykKICAgICB7
CiAjaWYgVVNFKEpTVkFMVUU2NCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0Nh
bGxIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2Fs
bEhlbHBlcnMuaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9DQ2FsbEhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTY2Niw2ICsxNjY2LDE1IEBAIHB1
YmxpYzoKICAgICAgICAgbW92ZShhcmc0LCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwogICAgIH0K
ICNlbmRpZgorICAgIAorICAgIHZvaWQgc2V0dXBBcmd1bWVudHMoSlNWYWx1ZVJlZ3MgYXJnMSkK
KyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgc2V0dXBBcmd1bWVudHMoYXJnMS5n
cHIoKSk7CisjZWxzZQorICAgICAgICBzZXR1cEFyZ3VtZW50cyhhcmcxLnBheWxvYWRHUFIoKSwg
YXJnMS50YWdHUFIoKSk7CisjZW5kaWYKKyAgICB9CiAKICAgICB2b2lkIHNldHVwUmVzdWx0cyhH
UFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QikKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0dQUkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0dQUkluZm8uaAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9HUFJJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDggQEAgcHVibGljOgog
ICAgIEdQUlJlZyB0YWdHUFIoKSBjb25zdCB7IHJldHVybiBJbnZhbGlkR1BSUmVnOyB9CiAgICAg
R1BSUmVnIHBheWxvYWRHUFIoKSBjb25zdCB7IHJldHVybiBtX2dwcjsgfQogICAgIAorICAgIGJv
b2wgdXNlcyhHUFJSZWcgZ3ByKSBjb25zdCB7IHJldHVybiBtX2dwciA9PSBncHI7IH0KKyAgICAK
IHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByOwogfTsKQEAgLTE2OSw2ICsxNzEsOCBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiB0YWdHUFIoKTsKICAgICB9CiAKKyAgICBib29sIHVzZXMoR1BS
UmVnIGdwcikgY29uc3QgeyByZXR1cm4gbV90YWdHUFIgPT0gZ3ByIHx8IG1fcGF5bG9hZEdQUiA9
PSBncHI7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgaW50OF90IG1fdGFnR1BSOwogICAgIGludDhf
dCBtX3BheWxvYWRHUFI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwz
Ml82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxs
MzJfNjQuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENhbGwzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMCw2ICszMDAsMTMgQEAgdm9p
ZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIHN0b3JlMzIocmVnVDAs
IEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpTU3RhY2s6OkNhbGxlZSAqIHN0YXRpY19j
YXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxl
ckZyYW1lQW5kUEMpKSk7CiAgICAgc3RvcmUzMihyZWdUMSwgQWRkcmVzcyhzdGFja1BvaW50ZXJS
ZWdpc3RlciwgSlNTdGFjazo6Q2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0
ZXIpKSArIFRhZ09mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogCisgICAgQ2Fs
bExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5mbygpOworCisgICAg
aWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkgeworICAgICAgICBtX3ZtLT5jYWxsRWRnZUxvZy0+
ZW1pdExvZ0NvZGUoCisgICAgICAgICAgICAqdGhpcywgaW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBK
U1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApKTsKKyAgICB9CisKICAgICBpZiAob3Bjb2RlSUQgPT0g
b3BfY2FsbF9ldmFsKSB7CiAgICAgICAgIGNvbXBpbGVDYWxsRXZhbChpbnN0cnVjdGlvbik7CiAg
ICAgICAgIHJldHVybjsKQEAgLTMxMyw3ICszMjAsNiBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2Fs
bChPcGNvZGVJRCBvcGNvZGVJCiAgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2UpOwogCiAgICAgQVNT
RVJUKG1fY2FsbENvbXBpbGF0aW9uSW5mby5zaXplKCkgPT0gY2FsbExpbmtJbmZvSW5kZXgpOwot
ICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsK
ICAgICBpbmZvLT5jYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3Iob3Bjb2RlSUQp
OwogICAgIGluZm8tPmNvZGVPcmlnaW4gPSBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpOwog
ICAgIGluZm8tPmNhbGxlZUdQUiA9IHJlZ1QwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDYWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENhbGwuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsNiArMjEyLDExIEBAIHZvaWQg
SklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGNhbGxlZSwgcmVnVDApOyAvLyByZWdUMCBob2xkcyBjYWxsZWUuCiAKICAgICBzdG9y
ZTY0KHJlZ1QwLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBKU1N0YWNrOjpDYWxsZWUg
KiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpIC0gc2l6ZW9mKENhbGxlckZyYW1l
QW5kUEMpKSk7CisgICAgCisgICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFk
ZENhbGxMaW5rSW5mbygpOworCisgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkKKyAgICAg
ICAgbV92bS0+Y2FsbEVkZ2VMb2ctPmVtaXRMb2dDb2RlKCp0aGlzLCBpbmZvLT5jYWxsRWRnZVBy
b2ZpbGUsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CiAKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2Fs
bF9ldmFsKSB7CiAgICAgICAgIGNvbXBpbGVDYWxsRXZhbChpbnN0cnVjdGlvbik7CkBAIC0yMjMs
NyArMjI4LDYgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAg
IGFkZFNsb3dDYXNlKHNsb3dDYXNlKTsKIAogICAgIEFTU0VSVChtX2NhbGxDb21waWxhdGlvbklu
Zm8uc2l6ZSgpID09IGNhbGxMaW5rSW5mb0luZGV4KTsKLSAgICBDYWxsTGlua0luZm8qIGluZm8g
PSBtX2NvZGVCbG9jay0+YWRkQ2FsbExpbmtJbmZvKCk7CiAgICAgaW5mby0+Y2FsbFR5cGUgPSBD
YWxsTGlua0luZm86OmNhbGxUeXBlRm9yKG9wY29kZUlEKTsKICAgICBpbmZvLT5jb2RlT3JpZ2lu
ID0gQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KTsKICAgICBpbmZvLT5jYWxsZWVHUFIgPSBy
ZWdUMDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0lubGluZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NJbmxpbmVzLmgJ
KHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0lu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogLy8gSW4gZmFjdCwgaXQg
Y2FuIG1ha2UgYSBsb3Qgb2Ygc2Vuc2U6IG91dHNpZGUgb2YgSlNDLCB0aGlzIGZpbGUgYmVjb21l
cyBhIGtpbmQgb2YgdW1icmVsbGEKIC8vIGhlYWRlciB0aGF0IHB1bGxzIGluIG1vc3QgKGFsbD8p
IG9mIHRoZSBpbnRlcmVzdGluZyB0aGluZ3MgaW4gSlNDLgogCisjaW5jbHVkZSAiQ2FsbEVkZ2VQ
cm9maWxlSW5saW5lcy5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZUlubGluZXMuaCIKICNpbmNsdWRl
ICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiR0NJbmNvbWluZ1JlZkNvdW50ZWRJbmxp
bmVzLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZp
c2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE2Nyw2ICsxNjcsOCBAQCB0eXBlZGVmIGNvbnN0IGNoYXIqIG9w
dGlvblN0cmluZzsKICAgICB2KGJvb2wsIGVuYWJsZUFjY2Vzc0lubGluaW5nLCB0cnVlKSBcCiAg
ICAgdihib29sLCBlbmFibGVQb2x5dmFyaWFudERldmlydHVhbGl6YXRpb24sIHRydWUpIFwKICAg
ICB2KGJvb2wsIGVuYWJsZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcsIHRydWUpIFwKKyAgICB2
KGJvb2wsIGVuYWJsZVBvbHltb3JwaGljQ2FsbElubGluaW5nLCB0cnVlKSBcCisgICAgdihib29s
LCBlbmFibGVDYWxsRWRnZVByb2ZpbGluZywgdHJ1ZSkgXAogICAgIHYoYm9vbCwgb3B0aW1pemVO
YXRpdmVDYWxscywgZmFsc2UpIFwKICAgICBcCiAgICAgdihib29sLCBlbmFibGVDb25jdXJyZW50
SklULCB0cnVlKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9u
IDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTcxLDYgKzcxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcml0
eUNoZWNrRmFpbFJldHVyblRodW5rczsKICAgICBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7Cisg
ICAgY2xhc3MgQ2FsbEVkZ2VMb2c7CiAgICAgY2xhc3MgQ29kZUJsb2NrOwogICAgIGNsYXNzIENv
ZGVDYWNoZTsKICAgICBjbGFzcyBDb21tb25JZGVudGlmaWVyczsKQEAgLTIzMiw2ICsyMzMsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgT3duUHRyPERG
Rzo6TG9uZ0xpdmVkU3RhdGU+IGRmZ1N0YXRlOwogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQor
ICAgICAgICAKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxFZGdlTG9nPiBjYWxsRWRnZUxv
ZzsKIAogICAgICAgICBWTVR5cGUgdm1UeXBlOwogICAgICAgICBDbGllbnREYXRhKiBjbGllbnRE
YXRhOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9uZXctYXJyYXkt
dGhlbi1leGl0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvbmV3LWFycmF5LXRoZW4tZXhpdC5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbmV3LWFycmF5LXRoZW4tZXhpdC5qcwkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDE0IEBACitmdW5jdGlvbiBmb28oZikgeworICAgIHJldHVybiBuZXcg
ZigpOworfQorCitub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyAr
K2kpCisgICAgZm9vKEFycmF5KTsKKwordmFyIGRpZENhbGwgPSBmYWxzZTsKK2ZvbyhmdW5jdGlv
bigpIHsgZGlkQ2FsbCA9IHRydWU7IH0pOworCitpZiAoIWRpZENhbGwpCisgICAgdGhyb3cgIkVy
cm9yOiBkaWRuJ3QgY2FsbCBteSBmdW5jdGlvbi4iOwpJbmRleDogU291cmNlL1dURi93dGYvT3du
UHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvT3duUHRyLmgJKHJldmlzaW9uIDE3
MjE3NykKKysrIFNvdXJjZS9XVEYvd3RmL093blB0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAw
NiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBX
VEZfT3duUHRyX2gKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3Rm
L0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYv
T3duUHRyQ29tbW9uLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgpAQCAtNzIsNiArNzMsMTQgQEAg
bmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IE93blB0ciYgb3Bl
cmF0b3I9KE93blB0cjxVPiYmKTsKIAogICAgICAgICB2b2lkIHN3YXAoT3duUHRyJiBvKSB7IHN0
ZDo6c3dhcChtX3B0ciwgby5tX3B0cik7IH0KKyAgICAgICAgCisgICAgICAgIC8vIENvbnN0cnVj
dCBhbiBvYmplY3QgdG8gc3RvcmUgaW50byB0aGlzIE93blB0ciwgYnV0IG9ubHkgc28gbG9uZyBh
cyB0aGlzIE93blB0cgorICAgICAgICAvLyBkb2Vzbid0IGFscmVhZHkgcG9pbnQgdG8gYW4gb2Jq
ZWN0LiBUaGlzIHdpbGwgZW5zdXJlIHRoYXQgYWZ0ZXIgeW91IGNhbGwgdGhpcywKKyAgICAgICAg
Ly8gdGhlIE93blB0ciB3aWxsIHBvaW50IHRvIGFuIGluc3RhbmNlIG9mIFQuIFRoaXMgaW5zdGFu
Y2UgbWF5IG9yIG1heSBub3QgaGF2ZSBiZWVuCisgICAgICAgIC8vIGNyZWF0ZWQgYnkgdGhpcyBj
YWxsLiBNb3Jlb3ZlciwgdGhpcyBjYWxsIHVzZXMgYW4gb3Bwb3J0dW5pc3RpYyB0cmFuc2FjdGlv
biwgaW4KKyAgICAgICAgLy8gdGhhdCB3ZSBtYXkgY3JlYXRlIGFuIGluc3RhbmNlIG9mIFQgYW5k
IHRoZW4gaW1tZWRpYXRlbHkgdGhyb3cgaXQgYXdheS4KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUuLi4gQXJncz4KKyAgICAgICAgdm9pZCBjcmVhdGVUcmFuc2FjdGlvbmFsbHkoQXJncy4uLiBh
cmdzKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IE93blB0cihQdHJUeXBlIHB0
cikgOiBtX3B0cihwdHIpIHsgfQpAQCAtMTg2LDYgKzE5NSwyOCBAQCBuYW1lc3BhY2UgV1RGIHsK
ICAgICAgICAgcmV0dXJuIHAuZ2V0KCk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gaW5saW5lIHZvaWQgT3duUHRyPFQ+OjpjcmVh
dGVUcmFuc2FjdGlvbmFsbHkoQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgaWYgKG1fcHRy
KSB7CisgICAgICAgICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgVCogbmV3T2JqZWN0ID0gbmV3IFQoYXJn
cy4uLik7CisgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CisjaWYgRU5BQkxFKENPTVBB
UkVfQU5EX1NXQVApCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGlmIChtX3B0cikgeworICAg
ICAgICAgICAgICAgIGRlbGV0ZSBuZXdPYmplY3Q7CisgICAgICAgICAgICAgICAgV1RGOjpsb2Fk
TG9hZEZlbmNlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAg
ICAgICB9IHdoaWxlICghV1RGOjp3ZWFrQ29tcGFyZUFuZFN3YXAoYml0d2lzZV9jYXN0PHZvaWQq
dm9sYXRpbGUqPigmbV9wdHIpLCBudWxscHRyLCBuZXdPYmplY3QpKTsKKyNlbHNlCisgICAgICAg
IG1fcHRyID0gbmV3T2JqZWN0OworI2VuZGlmCisgICAgfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYK
IAogdXNpbmcgV1RGOjpPd25QdHI7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgJKHJldmlzaW9uIDE3MjE3NykK
KysrIFNvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDIyICszMiwz
MSBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KK3RlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIENvdW50ZXJUeXBlID0gdW5zaWduZWQ+CiBjbGFzcyBTcGVj
dHJ1bSB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPFQsIHVuc2lnbmVk
IGxvbmc+OjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8
VCwgdW5zaWduZWQgbG9uZz46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOworICAgIHR5
cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46Oml0ZXJhdG9yIGl0ZXJhdG9y
OworICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46OmNvbnN0X2l0
ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwogICAgIAogICAgIFNwZWN0cnVtKCkgeyB9CiAgICAgCi0g
ICAgdm9pZCBhZGQoY29uc3QgVCYga2V5LCB1bnNpZ25lZCBsb25nIGNvdW50ID0gMSkKKyAgICB2
b2lkIGFkZChjb25zdCBUJiBrZXksIENvdW50ZXJUeXBlIGNvdW50ID0gMSkKICAgICB7Ci0gICAg
ICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz46OkFkZFJlc3VsdCByZXN1bHQg
PSBtX21hcC5hZGQoa2V5LCBjb3VudCk7CisgICAgICAgIGlmICghY291bnQpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+OjpBZGRS
ZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgY291bnQpOwogICAgICAgICBpZiAoIXJlc3Vs
dC5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSArPSBjb3Vu
dDsKICAgICB9CiAgICAgCi0gICAgdW5zaWduZWQgbG9uZyBnZXQoY29uc3QgVCYga2V5KSBjb25z
dAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAgdm9pZCBhZGRBbGwoY29uc3QgU3BlY3Ry
dW08VCwgVT4mIG90aGVyU3BlY3RydW0pCisgICAgeworICAgICAgICBmb3IgKGF1dG8gZW50cnkg
OiBvdGhlclNwZWN0cnVtKQorICAgICAgICAgICAgYWRkKGVudHJ5LmtleSwgZW50cnkuY291bnQp
OworICAgIH0KKyAgICAKKyAgICBDb3VudGVyVHlwZSBnZXQoY29uc3QgVCYga2V5KSBjb25zdAog
ICAgIHsKICAgICAgICAgY29uc3RfaXRlcmF0b3IgaXRlciA9IG1fbWFwLmZpbmQoa2V5KTsKICAg
ICAgICAgaWYgKGl0ZXIgPT0gbV9tYXAuZW5kKCkpCkBAIC01NSw2ICs2NCw4IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOwogICAgIH0KICAgICAKKyAgICBzaXplX3Qgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsgfQorICAgIAogICAgIGl0ZXJhdG9yIGJl
Z2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQogICAgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0
dXJuIG1fbWFwLmVuZCgpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJl
dHVybiBtX21hcC5iZWdpbigpOyB9CkBAIC02Myw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBzdHJ1
Y3QgS2V5QW5kQ291bnQgewogICAgICAgICBLZXlBbmRDb3VudCgpIHsgfQogICAgICAgICAKLSAg
ICAgICAgS2V5QW5kQ291bnQoY29uc3QgVCYga2V5LCB1bnNpZ25lZCBsb25nIGNvdW50KQorICAg
ICAgICBLZXlBbmRDb3VudChjb25zdCBUJiBrZXksIENvdW50ZXJUeXBlIGNvdW50KQogICAgICAg
ICAgICAgOiBrZXkoa2V5KQogICAgICAgICAgICAgLCBjb3VudChjb3VudCkKICAgICAgICAgewpA
QCAtODAsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBUIGtleTsKLSAg
ICAgICAgdW5zaWduZWQgbG9uZyBjb3VudDsKKyAgICAgICAgQ291bnRlclR5cGUgY291bnQ7CiAg
ICAgfTsKICAgICAKICAgICAvLyBSZXR1cm5zIGEgbGlzdCBvcmRlcmVkIGZyb20gbG93ZXN0LWNv
dW50IHRvIGhpZ2hlc3QtY291bnQuCkBAIC05NCw4ICsxMDUsMTggQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gbGlzdDsKICAgICB9CiAgICAgCisgICAgdm9pZCBjbGVhcigpIHsgbV9tYXAuY2xl
YXIoKTsgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgdm9pZCBy
ZW1vdmVJZihjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAgICAgICAgbV9tYXAucmVt
b3ZlSWYoW2Z1bmN0b3JdICh0eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6S2V5VmFs
dWVQYWlyVHlwZSYgcGFpcikgeworICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdG9yKEtleUFu
ZENvdW50KHBhaXIua2V5LCBwYWlyLnZhbHVlKSk7CisgICAgICAgICAgICB9KTsKKyAgICB9Cisg
ICAgCiBwcml2YXRlOgotICAgIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz4gbV9tYXA7CisgICAg
SGFzaE1hcDxULCBDb3VudGVyVHlwZT4gbV9tYXA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236796</attachid>
            <date>2014-08-18 21:02:06 -0700</date>
            <delta_ts>2014-08-19 21:02:20 -0700</delta_ts>
            <desc>doesn&apos;t work yet</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>153255</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzIxNzcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjY1LDYgKzI2NSwxMyBAQAogCQkwRjNCM0EyODE1NDRD
OTk3MDAzRUQwRkYgLyogREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjNBMjUxNTQ0Qzk5MTAwM0VEMEZG
IC8qIERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjNCM0EyQjE1NDc1MDAwMDAzRUQwRkYgLyogREZH
VmFsaWRhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYzQjNBMjkxNTQ3NEZGNDAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmNwcCAqLzsgfTsKIAkJ
MEYzQjNBMkMxNTQ3NTAwMjAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCM0EyQTE1NDc0RkY0MDAzRUQwRkYg
LyogREZHVmFsaWRhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRjNCN0UyNjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTIwMTlBMTFCODAw
MEQ5QkM1NiAvKiBDYWxsRWRnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGM0I3RTI3MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2Zp
bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
QjdFMjExOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAgKi87IH07CisJCTBG
M0I3RTI4MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTIyMTlBMTFCODAwMEQ5QkM1
NiAvKiBDYWxsRWRnZVByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRjNCN0UyOTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9m
aWxlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYzQjdFMjMxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZUlubGluZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjNCN0Uy
QTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMjQxOUExMUI4MDAwRDlCQzU2IC8qIENh
bGxWYXJpYW50LmNwcCAqLzsgfTsKKwkJMEYzQjdFMkIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxW
YXJpYW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjNCN0UyNTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjNCN0UyRDE5QTEyQUFFMDBEOUJD
NTYgLyogQ2FsbEVkZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYzQjdFMkMxOUExMkFBRTAwRDlCQzU2IC8qIENhbGxFZGdlLmNwcCAqLzsgfTsK
IAkJMEYzRDBCQkMxOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRDBCQkEx
OTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suY3BwICovOyB9OwogCQkw
RjNEMEJCRDE5NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRDBCQkIxOTRBNDE0
MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQyNkE0ODE0NjBDQkIzMDAxMzFGOEYg
LyogVmFsdWVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0MjZBNDUxNDYwQ0JBQjAwMTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODI3LDggKzgz
NCw4IEBACiAJCTFDQUE5QTIzMThGNEEyMjAwMDBBMzY5RCAvKiBKU0dsb2JhbE9iamVjdFByb2Zp
bGVyQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDQUE5QTIxMThGNEEyMjAwMDBBMzY5RCAvKiBKU0dsb2JhbE9iamVjdFByb2ZpbGVyQWdlbnQu
aCAqLzsgfTsKIAkJMjYwMEI1QTYxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2MDBCNUE0
MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5jcHAgKi87IH07CiAJCTI2MDBCNUE3
MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjYwMEI1QTUxNTJCQUFBNzAwOTFFRTVGIC8qIEpT
U3RyaW5nSm9pbmVyLmggKi87IH07Ci0gCQkyQTA1QUJENTE5NjFERjI0MDAzNDE3NTAgLyogSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJBMDVBQkQzMTk2MURGMjQwMDM0MTc1MCAvKiBKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IuY3BwICovOyB9OwotIAkJMkEwNUFCRDYxOTYxREYyNDAwMzQxNzUwIC8qIEpT
UHJvcGVydHlOYW1lRW51bWVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkEwNUFCRDQxOTYxREYyNDAwMzQxNzUwIC8qIEpTUHJvcGVydHlOYW1l
RW51bWVyYXRvci5oICovOyB9OworCQkyQTA1QUJENTE5NjFERjI0MDAzNDE3NTAgLyogSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJBMDVBQkQzMTk2MURGMjQwMDM0MTc1MCAvKiBKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3IuY3BwICovOyB9OworCQkyQTA1QUJENjE5NjFERjI0MDAzNDE3NTAgLyogSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyQTA1QUJENDE5NjFERjI0MDAzNDE3NTAgLyogSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yLmggKi87IH07CiAJCTJBMTExMjQ1MTkyRkNFNzkwMDVFRTE4RCAvKiBDdXN0b21HZXR0
ZXJTZXR0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkExMTEyNDMxOTJGQ0U3OTAwNUVFMThEIC8qIEN1c3RvbUdldHRlclNldHRlci5jcHAgKi87
IH07CiAJCTJBMTExMjQ2MTkyRkNFNzkwMDVFRTE4RCAvKiBDdXN0b21HZXR0ZXJTZXR0ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBMTExMjQ0MTky
RkNFNzkwMDVFRTE4RCAvKiBDdXN0b21HZXR0ZXJTZXR0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyQTI4MjVEMDE4MzQxRjJEMDA4N0ZCQTkg
LyogRGVsYXllZFJlbGVhc2VTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkEyODI1Q0YxODM0MUYyRDAwODdGQkE5IC8qIERlbGF5ZWRSZWxlYXNl
U2NvcGUuaCAqLzsgfTsKQEAgLTg2MywxMCArODcwLDEwIEBACiAJCTQxMzU5Q0YzMEZERDg5QUQw
MDIwNjE4MCAvKiBEYXRlQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRDIxMjAyMjkwQUQ0MzEwQzAwRUQ3OUI2IC8qIERhdGVDb252ZXJz
aW9uLmggKi87IH07CiAJCTQ0NDNBRTMzMTZFMTg4RDkwMDc2RjExMCAvKiBGb3VuZGF0aW9uLmZy
YW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxRjBFQjYxMDVDODZDNkIwMEU2REYxQiAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayAqLzsgfTsK
IAkJNDUxNTM5QjkxMkRDOTk0NTAwRUY3QUM0IC8qIFlhcnIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1MTUzOUI4MTJEQzk5NDUwMEVGN0FDNCAvKiBZ
YXJyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLSAJ
CTUyQjMxMEZCMTk3NEFFNjEwMDgwODU3QyAvKiBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQjMxMEZBMTk3
NEFFNjEwMDgwODU3QyAvKiBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotIAkJNTJCMzEwRkQxOTc0QUU4NzAw
ODA4NTdDIC8qIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIzMTBGQzE5NzRBRTg3MDA4MDg1N0MgLyog
RnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcCAqLzsgfTsKLSAJCTUyQjMxMEZGMTk3NUI0MjQw
MDgwODU3QyAvKiBUeXBlTG9jYXRpb25DYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIzMTBGRTE5NzVCNDI0MDA4MDg1N0MgLyogVHlwZUxv
Y2F0aW9uQ2FjaGUuY3BwICovOyB9OwotIAkJNTJCMzExMDExOTc1QjQ2NzAwODA4NTdDIC8qIFR5
cGVMb2NhdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MkIzMTEwMDE5NzVCNDY3MDA4MDg1N0MgLyogVHlwZUxvY2F0aW9uQ2FjaGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MkIzMTBG
QjE5NzRBRTYxMDA4MDg1N0MgLyogRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIzMTBGQTE5NzRBRTYxMDA4
MDg1N0MgLyogRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTJCMzEwRkQxOTc0QUU4NzAwODA4NTdDIC8q
IEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIzMTBGQzE5NzRBRTg3MDA4MDg1N0MgLyogRnVuY3Rpb25I
YXNFeGVjdXRlZENhY2hlLmNwcCAqLzsgfTsKKwkJNTJCMzEwRkYxOTc1QjQyNDAwODA4NTdDIC8q
IFR5cGVMb2NhdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUyQjMxMEZFMTk3NUI0MjQwMDgwODU3QyAvKiBUeXBlTG9jYXRpb25DYWNo
ZS5jcHAgKi87IH07CisJCTUyQjMxMTAxMTk3NUI0NjcwMDgwODU3QyAvKiBUeXBlTG9jYXRpb25D
YWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJC
MzExMDAxOTc1QjQ2NzAwODA4NTdDIC8qIFR5cGVMb2NhdGlvbkNhY2hlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTUxMDUwMjYxOEVCODI3NTAw
MDAxRjNFIC8qIEpTQ2FsbGJhY2tGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0MEY4OEYwQTUwOEIxMDAwMDVGMDYxIC8qIEpTQ2FsbGJh
Y2tGdW5jdGlvbi5oICovOyB9OwogCQk1NTJFQTcwQzE5MDg3MDQ4MDBBNjZGMkYgLyogSlNEYXRh
Vmlld1Byb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjJCNjZCRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmlld1Byb3RvdHlwZS5j
cHAgKi87IH07CiAJCTU1NDA3NTcyMThEQTU4QUQwMEVGRjdGMiAvKiBBcmdMaXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Y2MDUxMjBFMjAzRUY4
MDBCOUE2NEQgLyogQXJnTGlzdC5oICovOyB9OwpAQCAtMjQzMiwxMyArMjQzOSw3IEBACiAJCTBG
MkQ0REU0MTk4MzJEOTEwMDdENEIxOSAvKiBUeXBlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVT
ZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDRERTUxOTgzMkRBQzAwN0Q0
QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBUb1RoaXNTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJE
NERFNjE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFRvVGhpc1N0YXR1cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotIAkJMEY3QjM2NUYxOTdDNTI1QzAwRUQxRERDIC8qIERGR1BoYW50b21DYW5vbmljYWxpemF0
aW9uUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHUGhh
bnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHUGhhbnRvbUNhbm9u
aWNhbGl6YXRpb25QaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0gCQkwRjdC
MzY2MDE5N0M1MjVDMDBFRDFEREMgLyogREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQaGFudG9tQ2Fub25pY2FsaXph
dGlvblBoYXNlLmg7IHBhdGggPSBkZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJENERFNzE5ODMyREFDMDA3RDRCMTkg
LyogVHlwZUxvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVM
b2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotIAkJNTJCMzEwRkExOTc0QUU2
MTAwODA4NTdDIC8qIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
dW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLSAJ
CTUyQjMxMEZDMTk3NEFFODcwMDgwODU3QyAvKiBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLSAJCTUyQjMxMEZFMTk3NUI0MjQwMDgwODU3QyAvKiBUeXBl
TG9jYXRpb25DYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUeXBlTG9jYXRpb25DYWNoZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0gCQk1MkIzMTEwMDE5NzVCNDY3MDA4MDg1
N0MgLyogVHlwZUxvY2F0aW9uQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZUxvY2F0aW9uQ2Fj
aGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRkM3NzAxNkUxMkY2RjAwMzhE
OTc2IC8qIERGR0RDRVBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERGR0RDRVBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdEQ0VQaGFzZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkZDNzcxMTZFMTJGNkYwMDM4RDk3NiAvKiBERkdEQ0VQ
aGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdEQ0VQaGFzZS5oOyBw
YXRoID0gZGZnL0RGR0RDRVBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
MkZDQ0YyMThBNjAwNzAwMDFBMjdGOCAvKiBERkdHcmFwaFNhZmVwb2ludC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdHcmFwaFNhZmVwb2ludC5jcHA7IHBhdGgg
PSBkZmcvREZHR3JhcGhTYWZlcG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjQ2OCw2ICsyNDY5LDEzIEBACiAJCTBGM0IzQTI1MTU0NEM5OTEwMDNFRDBGRiAvKiBERkdD
RkdTaW1wbGlmaWNhdGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdDRkdTaW1wbGlmaWNh
dGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0IzQTI5MTU0NzRG
RjQwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBERkdWYWxpZGF0ZS5jcHA7IHBhdGggPSBkZmcvREZHVmFsaWRhdGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNCM0EyQTE1NDc0RkY0MDAzRUQwRkYgLyog
REZHVmFsaWRhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVmFsaWRh
dGUuaDsgcGF0aCA9IGRmZy9ERkdWYWxpZGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjNCN0UyMDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbEVkZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEYzQjdFMjExOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsRWRnZVByb2ZpbGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyMjE5QTExQjgwMDBEOUJDNTYgLyog
Q2FsbEVkZ2VQcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxF
ZGdlUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyMzE5QTEx
QjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGM0I3RTI0MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsVmFyaWFudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGM0I3RTI1MTlBMTFCODAwMEQ5QkM1NiAv
KiBDYWxsVmFyaWFudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsVmFy
aWFudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyQzE5QTEyQUFFMDBE
OUJDNTYgLyogQ2FsbEVkZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ2FsbEVkZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNEMEJCQTE5
NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb25zdGFudFN0cnVjdHVyZUNoZWNrLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzRDBCQkIxOTRBNDE0MzAwRkM5Q0Y5IC8qIENv
bnN0YW50U3RydWN0dXJlQ2hlY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yNTc1LDYgKzI1ODMsOCBAQAogCQkwRjc2NkQzNzE1QUU0QTFBMDA4RjM2M0Ug
LyogU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzcwMDhFMTQwMkZERDYwMDc4RUIzOSAvKiBTYW1wbGlu
Z0NvdW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2FtcGxpbmdDb3Vu
dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzcwMDkxMTQwMkZGMjgwMDc4
RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2FtcGxpbmdDb3VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY3QjM2NUYxOTdDNTI1QzAwRUQxRERDIC8qIERGR1BoYW50b21DYW5vbmljYWxpemF0aW9u
UGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHUGhhbnRv
bUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHUGhhbnRvbUNhbm9uaWNh
bGl6YXRpb25QaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0IzNjYw
MTk3QzUyNUMwMEVEMUREQyAvKiBERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1BoYW50b21DYW5vbmljYWxpemF0aW9u
UGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBC
eVZhbEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnlWYWxJbmZvLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAv
KiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJv
ZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Q
cm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTk0LDggKzMwMDQsOCBA
QAogCQkxQ0FBOUEyMTE4RjRBMjIwMDAwQTM2OUQgLyogSlNHbG9iYWxPYmplY3RQcm9maWxlckFn
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0UHJv
ZmlsZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNjAwQjVBNDE1MkJB
QUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNTdHJpbmdKb2luZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyNjAwQjVBNTE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdKb2luZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLSAJCTJBMDVBQkQzMTk2MURGMjQwMDM0MTc1MCAvKiBKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLSAJCTJBMDVBQkQ0MTk2MURGMjQwMDM0MTc1MCAvKiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBMDVBQkQzMTk2MURGMjQw
MDM0MTc1MCAvKiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkEwNUFCRDQxOTYxREYyNDAwMzQxNzUwIC8qIEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkExMTEyNDMxOTJGQ0U3OTAwNUVFMThEIC8qIEN1c3RvbUdldHRlclNldHRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdXN0b21HZXR0ZXJTZXR0ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQTExMTI0NDE5MkZDRTc5MDA1RUUxOEQgLyog
Q3VzdG9tR2V0dGVyU2V0dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN1
c3RvbUdldHRlclNldHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQTI4MjVD
RjE4MzQxRjJEMDA4N0ZCQTkgLyogRGVsYXllZFJlbGVhc2VTY29wZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEZWxheWVkUmVsZWFzZVNjb3BlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0zMDMzLDYgKzMwNDMsMTAgQEAKIAkJNDVFMTJEODgwNkE0OUIwRjAw
RTlERjg0IC8qIGpzYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBqc2MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0
aCA9IDQ7IH07CiAJCTUxRjBFQjYxMDVDODZDNkIwMEU2REYxQiAvKiBGb3VuZGF0aW9uLmZyYW1l
d29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdy
YXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gRm91bmRhdGlvbi5mcmFtZXdvcms7IHBhdGggPSAvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yazsgc291cmNlVHJlZSA9
ICI8YWJzb2x1dGU+IjsgfTsKIAkJNTFGMEVDMDcwNUM4NkM5QTAwRTZERjFCIC8qIGxpYm9iamMu
ZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAi
Y29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYm9iamMuZHlsaWI7IHBhdGggPSAvdXNy
L2xpYi9saWJvYmpjLmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OworCQk1MkIz
MTBGQTE5NzRBRTYxMDA4MDg1N0MgLyogRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MkIzMTBGQzE5NzRBRTg3MDA4MDg1N0MgLyogRnVuY3Rpb25IYXNFeGVjdXRl
ZENhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyQjMxMEZFMTk3NUI0MjQwMDgwODU3
QyAvKiBUeXBlTG9jYXRpb25DYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUeXBlTG9jYXRp
b25DYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyQjMxMTAwMTk3NUI0
NjcwMDgwODU3QyAvKiBUeXBlTG9jYXRpb25DYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlTG9j
YXRpb25DYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTQwNzU4NDE4RjRB
Mzc1MDA2MDJBNUQgLyogQ29tcGlsZVJ1bnRpbWVUb0xMVk1JUi54Y2NvbmZpZyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQueGNjb25maWc7IHBhdGggPSBDb21waWxlUnVudGltZVRvTExWTUlSLnhjY29uZmlnOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTQwN0FDODE4REE1OEFEMDBFRkY3RjIgLyog
bGliQ29tcGlsZVJ1bnRpbWVUb0xMVk1JUi5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGgg
PSBsaWJDb21waWxlUnVudGltZVRvTExWTUlSLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCTVENTM3MjZEMEUxQzU0NkIwMDIxRTU0OSAvKiBUcmFjaW5nLmQgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gVHJhY2luZy5kOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNDk4Nyw4ICs1MDAxLDggQEAKIAkJCQkwRjJCNjZEQjE3QjZCNUFCMDBBN0FFM0YgLyogVHlw
ZWRBcnJheXMuaCAqLywKIAkJCQkwRjJCNjZEQzE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJh
eVR5cGUuY3BwICovLAogCQkJCTBGMkI2NkREMTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5
VHlwZS5oICovLAotIAkJCQk1MkIzMTEwMDE5NzVCNDY3MDA4MDg1N0MgLyogVHlwZUxvY2F0aW9u
Q2FjaGUuaCAqLywKLSAJCQkJNTJCMzEwRkUxOTc1QjQyNDAwODA4NTdDIC8qIFR5cGVMb2NhdGlv
bkNhY2hlLmNwcCAqLywKKwkJCQk1MkIzMTEwMDE5NzVCNDY3MDA4MDg1N0MgLyogVHlwZUxvY2F0
aW9uQ2FjaGUuaCAqLywKKwkJCQk1MkIzMTBGRTE5NzVCNDI0MDA4MDg1N0MgLyogVHlwZUxvY2F0
aW9uQ2FjaGUuY3BwICovLAogCQkJCTBGMkQ0REUzMTk4MzJEOTEwMDdENEIxOSAvKiBUeXBlU2V0
LmNwcCAqLywKIAkJCQkwRjJENERFNDE5ODMyRDkxMDA3RDRCMTkgLyogVHlwZVNldC5oICovLAog
CQkJCUE3QThBRjMyMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50MTZBcnJheS5oICovLApAQCAtNTQy
OSwxMSArNTQ0MywxOCBAQAogCQkJCTBGNjY2RUJFMTgzNTY2RjkwMEQwMTdGMSAvKiBCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggKi8sCiAJCQkJMEY4ODVFMTAxODQ5QTNCRTAwRjFF
M0ZBIC8qIEJ5dGVjb2RlVXNlRGVmLmggKi8sCiAJCQkJMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1
IC8qIEJ5VmFsSW5mby5oICovLAorCQkJCTBGM0I3RTJDMTlBMTJBQUUwMEQ5QkM1NiAvKiBDYWxs
RWRnZS5jcHAgKi8sCisJCQkJMEYzQjdFMjAxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlLmgg
Ki8sCisJCQkJMEYzQjdFMjExOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAg
Ki8sCisJCQkJMEYzQjdFMjIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5oICov
LAorCQkJCTBGM0I3RTIzMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGVJbmxpbmVz
LmggKi8sCiAJCQkJMEYwQjgzQUUxNEJDRjcxNDAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5jcHAg
Ki8sCiAJCQkJMEYwQjgzQUYxNEJDRjcxNDAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5oICovLAog
CQkJCTBGOTMzMjkzMTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5jcHAgKi8sCiAJ
CQkJMEY5MzMyOTQxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmggKi8sCiAJCQkJ
MEYwQjgzQjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zm
c2V0LmggKi8sCisJCQkJMEYzQjdFMjQxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmNw
cCAqLywKKwkJCQkwRjNCN0UyNTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuaCAqLywK
IAkJCQk5NjlBMDc5MDBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmNwcCAqLywKIAkJCQk5
NjlBMDc5MTBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmggKi8sCiAJCQkJMEY4Rjk0M0Qx
NjY3NjMyRDAwRDYxOTcxIC8qIENvZGVCbG9ja0hhc2guY3BwICovLApAQCAtNTUyNSw3ICs1NTQ2
LDYgQEAKIAkJCQkwRjQyNkE0NjE0NjBDQkFCMDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmgg
Ki8sCiAJCQkJMEY5MTlEMjIxNTg1M0NERTAwNEE0RTdEIC8qIFdhdGNocG9pbnQuY3BwICovLAog
CQkJCTBGOTE5RDIzMTU4NTNDREUwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmggKi8sCi0JCQkJNTJE
QUQzOEUxOTVBMTY0RTAwRjMwNDY0IC8qIFR5cGVMb2NhdGlvbi5oICovLAogCQkJKTsKIAkJCXBh
dGggPSBieXRlY29kZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC01OTgzLDcgKzYw
MDMsNyBAQAogCQkJCTBGNkIxQ0I5MTg2MTI0NEMwMDg0NUQ5NyAvKiBBcml0eUNoZWNrTW9kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBMDA5QzExODMxQTI2RTAwQ0Y4NzExIC8qIEFSTTY0QXNz
ZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1RTcgLyog
QVJNQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKLSAJCQkJMkFEMkVERkIxOTc5OUUzODAwNEQ2
NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkFEMkVERkIxOTc5
OUUzODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3
QjgzQUMwRTZEQjhDOTAwNDc3NUE0IC8qIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyQTExMTI0NjE5MkZDRTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVy
U2V0dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MDMyMDE4QkZGQkUxMDA1QTA4MTEgLyog
SW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtNjEzNCw2ICs2MTU0LDcgQEAKIAkJ
CQkwRkZGQzk1QTE0RUY5MEE5MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMkZDNzczMTZFMTJGNzQwMDM4RDk3NiAvKiBERkdEQ0VQaGFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY4RjJCOUExNzJGMDUwMTAwN0RCREE1IC8qIERGR0Rlc2lyZWRJZGVudGlm
aWVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYzQjdFMjgxOUExMUI4MDAwRDlCQzU2IC8qIENh
bGxFZGdlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJDMEY3Q0UxN0JCRkM1QjAwNDY0
RkU0IC8qIERGR0Rlc2lyZWRUcmFuc2l0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFODUz
NEMxNzIzQ0RBNTAwQjYxOEY1IC8qIERGR0Rlc2lyZWRXYXRjaHBvaW50cy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQzI5ODFGRDkxN0JBRUU0QjAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXZWFrUmVmZXJl
bmNlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC02NDA0LDYgKzY0MjUsNyBAQAogCQkJCTBGNzY2RDMx
MTVBQTgxMTIwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY3NjZEMkMxNUE4Q0MzQTAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lU2V0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNEM1MjQyQjBGNTM1NUU5MDBCQTNEMDQgLyogSklUU3R1YnMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGM0I3RTJCMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkVGNjgzNUUxNzQzNDNDQzAwQTMyRTI1IC8qIEpJVFN0dWJzQVJN
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUY2ODM1RjE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1
YnNBUk12Ny5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVGNjgzNjExNzQzNDNDQzAwQTMyRTI1IC8q
IEpJVFN0dWJzWDg2LmggaW4gSGVhZGVycyAqLywKQEAgLTY0MTUsNiArNjQzNyw3IEBACiAJCQkJ
QTc2RjU0QTMxM0IyOEFBQjAwRUYyQkNFIC8qIEpJVFdyaXRlQmFycmllci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxOEM0MTYwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQWN0aXZhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODQwNDgwMTMxMDIxQTFEOTAwOEU3RjAxIC8qIEpTQVBJVmFsdWVXcmFw
cGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjNCN0UyOTE5QTExQjgwMDBEOUJDNTYgLyogQ2Fs
bEVkZ2VQcm9maWxlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJDRjM5QzIxNkUxNUE4
MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc2
MTQwRDIxODI5ODJDQjAwNzUwNjI0IC8qIEpTQXJndW1lbnRzSXRlcmF0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDNDE3MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0FycmF5LmggaW4gSGVhZGVy
cyAqLywKQEAgLTY2NjIsNyArNjY4NSw3IEBACiAJCQkJQTc4NUY2QkMxOEM1NTNGRTAwRjEwNjI2
IC8qIFNwaWxsUmVnaXN0ZXJzTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NTUwRTE2
RjVDRDAwQjM0NDYwIC8qIFByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0Yz
OUMxNUVEOEU0NjAwRjE2N0IyIC8qIFByb3BlcnR5U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCi0g
CQkJCTBGNkZDNzUxMTk2MTEwQTgwMEUxRDAyRCAvKiBDb21wbGV4R2V0U3RhdHVzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjZGQzc1MTE5NjExMEE4MDBFMUQwMkQgLyogQ29tcGxleEdldFN0YXR1
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxMkRFMTAxOTc5RDVGRDAwMDZGRjRFIC8qIEV4Y2Vw
dGlvbkZ1enouaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDU2MEUxNkY1Q0QwMEIzNDQ2MCAv
KiBQcm90ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc0QzMzQjE2QUEyRDk1MDA2MkYwMUQg
LyogUHJvdG90eXBlTWFwLmggaW4gSGVhZGVycyAqLywKQEAgLTY3MjksNiArNjc1Miw3IEBACiAJ
CQkJRTQ5REMxNkMxMkVGMjk0RTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUU0OURDMTZEMTJFRjI5NTMwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRl
ckNhY2hlSXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUUxNUVEOEU0NjAwRjE2N0Iy
IC8qIFNwYXJzZUFycmF5VmFsdWVNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGM0I3RTI2MTlB
MTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTczODY1NTQx
MTg2OTdCNDAwNTQwMjc5IC8qIFNwZWNpYWxpemVkVGh1bmtKSVQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNTU0MUIyMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZEODJFNTQxNDFEQUVFRTAwMTc5Qzk0IC8qIFNwZWN1bGF0ZWRUeXBlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTc4NTUsNiArNzg3OSw3IEBACiAJCQkJMEYyMzVCRDUxNzE3OEUx
QzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudEZvck9wZXJhbmQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEYyMzVCRDgxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRUaHVua0dlbmVyYXRvci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJEQTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhp
dFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGM0I3RTI3MTlBMTFCODAwMEQ5QkM1NiAv
KiBDYWxsRWRnZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdGMjk5NkIxN0EwQkI2
NzAwMTA0MTdBIC8qIEZUTEZhaWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEOEEzMTkxN0Q1
MUYyMjAwQ0EyQzQwIC8qIEZUTEZvck9TUkVudHJ5SklUQ29kZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjI1RjFBRjE4MTYzNUYzMDA1MjJGMzkgLyogRlRMSW5saW5lQ2FjaGVTaXplLmNwcCBp
biBTb3VyY2VzICovLApAQCAtODA0MSw2ICs4MDY2LDcgQEAKIAkJCQkwRjQ2ODBEMjE0QkJEMTY1
MDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzhCMDExMTdD
RjA3ODAwMEIxNDREMyAvKiBMTEludEVudHJ5cG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEY0NjgwQTgxNEJBN0ZBQjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRjNCN0UyRDE5QTEyQUFFMDBEOUJDNTYgLyogQ2FsbEVkZ2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50U2xvd1BhdGhz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMEI4MzlDMTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTElu
dFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkNFRkFDRDE4MDVFNzU1MDA0NzJDRTQg
LyogTExWTUFQSS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTgyMDEsNiArODIyNyw3IEBACiAJCQkJ
MTRFODRGQTAxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkE0RUM5MEIxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkM4MTUwQjE0MDQzQzBFMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVy
U3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjNCN0UyQTE5QTExQjgwMDBEOUJDNTYg
LyogQ2FsbFZhcmlhbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdFNUFCM0ExNzk5RTRCMjAw
RDI4MzNEIC8qIFg4NkRpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjNDNkQ5
QzE1MjExMTFBMDA1ODVFNEUgLyogWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODY3MDRCODQxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJJbnRlcnByZXRlci5jcHAg
aW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
RWRnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxFZGdlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsRWRnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQ2FsbEVkZ2UuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgQ2FsbEVk
Z2U6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoIjwiLCBt
X2NhbGxlZSwgIiwgY291bnQ6ICIsIG1fY291bnQsICI+Iik7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDYWxsRWRnZV9oCisjZGVmaW5lIENhbGxF
ZGdlX2gKKworI2luY2x1ZGUgIkNhbGxWYXJpYW50LmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0
eXBlZGVmIHVpbnQxNl90IENhbGxFZGdlQ291bnRUeXBlOworCitjbGFzcyBDYWxsRWRnZSB7Citw
dWJsaWM6CisgICAgQ2FsbEVkZ2UoKTsKKyAgICBDYWxsRWRnZShDYWxsVmFyaWFudCBjYWxsZWUs
IENhbGxFZGdlQ291bnRUeXBlIGNvdW50KTsKKyAgICAKKyAgICBib29sIG9wZXJhdG9yISgpIGNv
bnN0IHsgcmV0dXJuICFtX2NhbGxlZTsgfQorICAgIAorICAgIENhbGxWYXJpYW50IGNhbGxlZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FsbGVlOyB9CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgY291bnQo
KSBjb25zdCB7IHJldHVybiBtX2NvdW50OyB9CisgICAgCisgICAgQ2FsbEVkZ2UgZGVzcGVjaWZp
ZWRDbG9zdXJlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBDYWxsRWRnZShtX2NhbGxl
ZS5kZXNwZWNpZmllZENsb3N1cmUoKSwgbV9jb3VudCk7CisgICAgfQorICAgIAorICAgIHZvaWQg
ZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIAorcHVibGljOgorICAgIENhbGxWYXJpYW50
IG1fY2FsbGVlOworICAgIENhbGxFZGdlQ291bnRUeXBlIG1fY291bnQ7Cit9OworCitpbmxpbmUg
Q2FsbEVkZ2U6OkNhbGxFZGdlKENhbGxWYXJpYW50IGNhbGxlZSwgQ2FsbEVkZ2VDb3VudFR5cGUg
Y291bnQpCisgICAgOiBtX2NhbGxlZShjYWxsZWUpCisgICAgLCBtX2NvdW50KGNvdW50KQorewor
fQorCitpbmxpbmUgQ2FsbEVkZ2U6OkNhbGxFZGdlKCkKKyAgICA6IENhbGxFZGdlKENhbGxWYXJp
YW50KCksIDApCit7Cit9CisKK3R5cGVkZWYgVmVjdG9yPENhbGxFZGdlLCAxPiBDYWxsRWRnZUxp
c3Q7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ2FsbEVkZ2VfaAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxl
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
RWRnZVByb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQ2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJDYWxsRWRnZVByb2ZpbGUuaCIKKworI2luY2x1ZGUgIkNDYWxsSGVscGVy
cy5oIgorI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitDYWxsRWRnZUxpc3QgQ2FsbEVkZ2VQcm9maWxlOjpjYWxs
RWRnZXMoKSBjb25zdAoreworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7
CisgICAgCisgICAgQ2FsbEVkZ2VMaXN0IHJlc3VsdDsKKyAgICAKKyAgICBDYWxsVmFyaWFudCBw
cmltYXJ5Q2FsbGVlID0gbV9wcmltYXJ5Q2FsbGVlOworICAgIGZsb2F0IG51bUNhbGxzVG9Qcmlt
YXJ5ID0gbV9udW1DYWxsc1RvUHJpbWFyeTsKKyAgICAvLyBEZWZlbmQgYWdhaW5zdCByYWNlcy4g
VGhlc2UgZmllbGRzIGFyZSBtb2RpZmllZCBieSB0aGUgbG9nIHByb2Nlc3NvciB3aXRob3V0IGxv
Y2tpbmcuCisgICAgaWYgKCEhcHJpbWFyeUNhbGxlZSAmJiBudW1DYWxsc1RvUHJpbWFyeSkKKyAg
ICAgICAgcmVzdWx0LmFwcGVuZChDYWxsRWRnZShwcmltYXJ5Q2FsbGVlLCBudW1DYWxsc1RvUHJp
bWFyeSkpOworICAgIAorICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICAvLyBNYWtl
IHN1cmUgdGhhdCBpZiB0aGUgcHJpbWFyeSB0aHJlYWQgaGFkIGp1c3QgY3JlYXRlZCBhIG1fb3Ro
ZXJDYWxsZXMgd2hpbGUgbG9nCisgICAgICAgIC8vIHByb2Nlc3NpbmcsIHdlIHNlZSBhIGNvbnNp
c3RlbnRseSBjcmVhdGVkIG9uZS4gVGhlIGxvY2sgYmVpbmcgaGVsZCBpcyBpbnN1ZmZpY2llbnQg
Zm9yCisgICAgICAgIC8vIHRoaXMsIHNpbmNlIHRoZSBsb2cgcHJvY2Vzc29yIHdpbGwgb25seSBn
cmFiIHRoZSBsb2NrIHdoZW4gbWVyZ2luZyB0aGUgc2Vjb25kYXJ5CisgICAgICAgIC8vIHNwZWN0
cnVtIGludG8gdGhlIHByaW1hcnkgb25lIGJ1dCBtYXkgc3RpbGwgY3JlYXRlIHRoZSBkYXRhIHN0
cnVjdHVyZSB3aXRob3V0IGhvbGRpbmcKKyAgICAgICAgLy8gbG9ja3MuCisgICAgICAgIFdURjo6
bG9hZExvYWRGZW5jZSgpOworICAgICAgICBmb3IgKENhbGxFZGdlIGVudHJ5IDogbV9vdGhlckNh
bGxlZXMtPm1fcHJvY2Vzc2VkKSB7CisgICAgICAgICAgICAvLyBEZWZlbmQgYWdhaW5zdCB0aGUg
cG9zc2liaWxpdHkgdGhhdCB0aGUgcHJpbWFyeSBkdXBsaWNhdGVzIGFuIGVudHJ5IGluIHRoZSBz
ZWNvbmRhcnkKKyAgICAgICAgICAgIC8vIHNwZWN0cnVtLiBUaGF0IGNhbiBoYXBwZW4gd2hlbiB0
aGUgR0MgcmVtb3ZlcyB0aGUgcHJpbWFyeS4gV2UgY291bGQgaGF2ZSB0aGUgR0MgZml4CisgICAg
ICAgICAgICAvLyB0aGUgc2l0dWF0aW9uIGJ5IGNoYW5naW5nIHRoZSBwcmltYXJ5IHRvIGJlIHNv
bWV0aGluZyBmcm9tIHRoZSBzZWNvbmRhcnkgc3BlY3RydW0sCisgICAgICAgICAgICAvLyBidXQg
dGhpcyBmaXggc2VlbXMgc2ltcGxlciB0byBpbXBsZW1lbnQgYW5kIGFsc28gY2hlYXBlci4KKyAg
ICAgICAgICAgIGlmIChlbnRyeS5jYWxsZWUoKSA9PSByZXN1bHRbMF0uY2FsbGVlKCkpIHsKKyAg
ICAgICAgICAgICAgICByZXN1bHRbMF0gPSBDYWxsRWRnZShyZXN1bHRbMF0uY2FsbGVlKCksIGVu
dHJ5LmNvdW50KCkgKyByZXN1bHRbMF0uY291bnQoKSk7CisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoZW50cnkpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHN0ZDo6c29ydChyZXN1bHQu
YmVnaW4oKSwgcmVzdWx0LmVuZCgpLCBbXSAoY29uc3QgQ2FsbEVkZ2UmIGEsIGNvbnN0IENhbGxF
ZGdlJiBiKSAtPiBib29sIHsKKyAgICAgICAgICAgIHJldHVybiBhLmNvdW50KCkgPiBiLmNvdW50
KCk7CisgICAgICAgIH0pOworICAgIAorICAgIGlmIChyZXN1bHQuc2l6ZSgpID49IDIpCisgICAg
ICAgIEFTU0VSVChyZXN1bHRbMF0uY291bnQoKSA+IHJlc3VsdC5sYXN0KCkuY291bnQoKSk7Cisg
ICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQ2FsbEVkZ2VDb3VudFR5cGUgQ2FsbEVkZ2VQ
cm9maWxlOjpudW1DYWxsc1RvS25vd25DZWxscygpIGNvbnN0Cit7CisgICAgQ2FsbEVkZ2VDb3Vu
dFR5cGUgcmVzdWx0ID0gMDsKKyAgICBmb3IgKENhbGxFZGdlIGVkZ2UgOiBjYWxsRWRnZXMoKSkK
KyAgICAgICAgcmVzdWx0ICs9IGVkZ2UuY291bnQoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CitzdGF0aWMgYm9vbCB3b3J0aERlc3BlY2lmeWluZyhjb25zdCBDYWxsVmFyaWFudCYgdmFyaWFu
dCkKK3sKKyAgICByZXR1cm4gIUhlYXA6OmlzTWFya2VkKHZhcmlhbnQucmF3Q2FsbGVlQ2VsbCgp
KQorICAgICAgICAmJiBIZWFwOjppc01hcmtlZCh2YXJpYW50LmRlc3BlY2lmaWVkQ2xvc3VyZSgp
LnJhd0NhbGxlZUNlbGwoKSk7Cit9CisKK2Jvb2wgQ2FsbEVkZ2VQcm9maWxlOjp3b3J0aERlc3Bl
Y2lmeWluZygpCit7CisgICAgaWYgKG1fY2xvc3VyZXNBcmVEZXNwZWNpZmllZCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghIW1fcHJpbWFyeUNhbGxlZSAmJiAhSlNDOjp3
b3J0aERlc3BlY2lmeWluZyhtX3ByaW1hcnlDYWxsZWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgCisgICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5zaXplKCk7IGktLTspIHsKKyAgICAgICAg
ICAgIGlmICghSlNDOjp3b3J0aERlc3BlY2lmeWluZyhtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNz
ZWRbaV0uY2FsbGVlKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDYWxsRWRnZVByb2Zp
bGU6OnZpc2l0V2VhaygpCit7CisgICAgaWYgKCFtX3ByaW1hcnlDYWxsZWUgJiYgIW1fb3RoZXJD
YWxsZWVzKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgQ29uY3VycmVudEpJVExvY2tlciBs
b2NrZXIobV9sb2NrKTsKKyAgICAKKyAgICAvLyBTZWUgaWYgYW55dGhpbmcgaXMgZGVhZCBhbmQg
aWYgdGhhdCBjYW4gYmUgcmVjdGlmaWVkIGJ5IGRlc3BlY2lmeWluZy4KKyAgICBpZiAod29ydGhE
ZXNwZWNpZnlpbmcoKSkgeworICAgICAgICBDYWxsU3BlY3RydW0gbmV3U3BlY3RydW07CisgICAg
ICAgIAorICAgICAgICBpZiAoISFtX3ByaW1hcnlDYWxsZWUpCisgICAgICAgICAgICBuZXdTcGVj
dHJ1bS5hZGQobV9wcmltYXJ5Q2FsbGVlLmRlc3BlY2lmaWVkQ2xvc3VyZSgpLCBtX251bUNhbGxz
VG9QcmltYXJ5KTsKKyAgICAgICAgCisgICAgICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLnNp
emUoKTsgaS0tOykgeworICAgICAgICAgICAgICAgIG5ld1NwZWN0cnVtLmFkZCgKKyAgICAgICAg
ICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNhbGxlZSgpLmRlc3Bl
Y2lmaWVkQ2xvc3VyZSgpLAorICAgICAgICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9w
cm9jZXNzZWRbaV0uY291bnQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgVmVjdG9yPENhbGxTcGVjdHJ1bTo6S2V5QW5k
Q291bnQ+IGxpc3QgPSBuZXdTcGVjdHJ1bS5idWlsZExpc3QoKTsKKyAgICAgICAgQVNTRVJUKGxp
c3Quc2l6ZSgpKTsKKyAgICAgICAgbV9wcmltYXJ5Q2FsbGVlID0gbGlzdC5sYXN0KCkua2V5Owor
ICAgICAgICBtX251bUNhbGxzVG9QcmltYXJ5ID0gbGlzdC5sYXN0KCkuY291bnQ7CisgICAgICAg
IAorICAgICAgICBBU1NFUlQoISFtX290aGVyQ2FsbGVlcyA9PSAobGlzdC5zaXplKCkgPj0gMikp
OworICAgICAgICBpZiAobV9vdGhlckNhbGxlZXMpIHsKKyAgICAgICAgICAgIG1fb3RoZXJDYWxs
ZWVzLT5tX3Byb2Nlc3NlZC5jbGVhcigpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
bGlzdC5zaXplKCkgLSAxOyBpLS07KQorICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5t
X3Byb2Nlc3NlZC5hcHBlbmQoQ2FsbEVkZ2UobGlzdFtpXS5rZXksIGxpc3RbaV0uY291bnQpKTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbV9jbG9zdXJlc0FyZURlc3BlY2lmaWVkID0g
dHJ1ZTsKKyAgICAgICAgCisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKCEh
bV9wcmltYXJ5Q2FsbGVlICYmICFIZWFwOjppc01hcmtlZChtX3ByaW1hcnlDYWxsZWUucmF3Q2Fs
bGVlQ2VsbCgpKSkgeworICAgICAgICBtX251bUNhbGxzVG9Vbmtub3duQ2VsbCArPSBtX251bUNh
bGxzVG9QcmltYXJ5OworICAgICAgICAKKyAgICAgICAgbV9wcmltYXJ5Q2FsbGVlID0gQ2FsbFZh
cmlhbnQoKTsKKyAgICAgICAgbV9udW1DYWxsc1RvUHJpbWFyeSA9IDA7CisgICAgfQorICAgIAor
ICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAg
ICBpZiAoSGVhcDo6aXNNYXJrZWQobV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNhbGxl
ZSgpLnJhd0NhbGxlZUNlbGwoKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxsICs9IG1fb3RoZXJDYWxs
ZWVzLT5tX3Byb2Nlc3NlZFtpXS5jb3VudCgpOworICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMt
Pm1fcHJvY2Vzc2VkW2ktLV0gPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQubGFzdCgpOwor
ICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLnJlbW92ZUxhc3QoKTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gT25seSBleGlzdHMgd2hpbGUgd2UgYXJlIHBy
b2Nlc3NpbmcgdGhlIGxvZy4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fb3RoZXJDYWxsZWVz
LT5tX3RlbXBvcmFyeVNwZWN0cnVtKTsKKyAgICB9Cit9CisKK3ZvaWQgQ2FsbEVkZ2VQcm9maWxl
OjphZGRTbG93KENhbGxWYXJpYW50IGNhbGxlZSwgQ2FsbEVkZ2VQcm9maWxlVmVjdG9yJiBtZXJn
ZUJhY2tMb2cpCit7CisgICAgLy8gVGhpcyBleGlzdHMgdG8gaGFuZGxlIGNhc2VzIHdoZXJlIHRo
ZSBzcGVjdHJ1bSB3YXNuJ3QgY3JlYXRlZCB5ZXQsIG9yIHdlJ3JlIHN0b3JpbmcgdG8gYQorICAg
IC8vIHBhcnRpY3VsYXIgc3BlY3RydW0gZm9yIHRoZSBmaXJzdCB0aW1lIGR1cmluZyBhIGxvZyBw
cm9jZXNzaW5nIGl0ZXJhdGlvbi4KKyAgICAKKyAgICBpZiAoIW1fb3RoZXJDYWxsZWVzKSB7Cisg
ICAgICAgIG1fb3RoZXJDYWxsZWVzID0gc3RkOjptYWtlX3VuaXF1ZTxTZWNvbmRhcnk+KCk7Cisg
ICAgICAgIC8vIElmIGEgY29tcGlsZXIgdGhyZWFkIG5vdGljZXMgdGhlIG1fb3RoZXJDYWxsZWVz
IGJlaW5nIG5vbi1udWxsLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZQorICAgICAgICAvLyB0aGF0IGl0
IHNlZXMgYSBmdWxseSBjcmVhdGVkIG9uZS4KKyAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2Uo
KTsKKyAgICB9CisgICAgCisgICAgaWYgKCFtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVj
dHJ1bSkgeworICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSA9IHN0
ZDo6bWFrZV91bmlxdWU8Q2FsbFNwZWN0cnVtPigpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAg
ICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+YWRkKAorICAgICAgICAgICAg
ICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jYWxsZWUoKSwKKyAgICAgICAgICAg
ICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQoKSk7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlzIGlzIHRoZSBmaXJzdCB0
aW1lIHdlJ3JlIHNlZWluZyB0aGlzIHByb2ZpbGUgZHVyaW5nIHRoaXMgbG9nCisgICAgICAgIC8v
IHByb2Nlc3NpbmcgaXRlcmF0aW9uLgorICAgICAgICBtZXJnZUJhY2tMb2cuYXBwZW5kKHRoaXMp
OworICAgIH0KKyAgICAKKyAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+
YWRkKGNhbGxlZSk7Cit9CisKK3ZvaWQgQ2FsbEVkZ2VQcm9maWxlOjptZXJnZUJhY2soKQorewor
ICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCisgICAgQVNTRVJU
KG1fb3RoZXJDYWxsZWVzKTsKKyAgICBBU1NFUlQobV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5
U3BlY3RydW0pOworICAgIAorICAgIGlmICghIW1fcHJpbWFyeUNhbGxlZSkKKyAgICAgICAgbV9v
dGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0tPmFkZChtX3ByaW1hcnlDYWxsZWUsIG1f
bnVtQ2FsbHNUb1ByaW1hcnkpOworICAgIAorICAgIGlmICghbV9jbG9zdXJlc0FyZURlc3BlY2lm
aWVkKSB7CisgICAgICAgIENhbGxTcGVjdHJ1bSBuZXdTcGVjdHJ1bTsKKyAgICAgICAgZm9yIChh
dXRvIGVudHJ5IDogKm1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtKQorICAgICAg
ICAgICAgbmV3U3BlY3RydW0uYWRkKGVudHJ5LmtleS5kZXNwZWNpZmllZENsb3N1cmUoKSwgZW50
cnkudmFsdWUpOworICAgICAgICAKKyAgICAgICAgaWYgKG5ld1NwZWN0cnVtLnNpemUoKSA8IG1f
b3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5zaXplKCkpCisgICAgICAgICAgICAq
bV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0gPSBuZXdTcGVjdHJ1bTsKKyAgICAg
ICAgCisgICAgICAgIG1fY2xvc3VyZXNBcmVEZXNwZWNpZmllZCA9IHRydWU7CisgICAgfQorICAg
IAorICAgIFZlY3RvcjxDYWxsU3BlY3RydW06OktleUFuZENvdW50PiBsaXN0ID0gbV9vdGhlckNh
bGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0tPmJ1aWxkTGlzdCgpOworICAgIG1fb3RoZXJDYWxs
ZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtID0gbnVsbHB0cjsKKyAgICAKKyAgICBtX3ByaW1hcnlD
YWxsZWUgPSBsaXN0Lmxhc3QoKS5rZXk7CisgICAgbV9udW1DYWxsc1RvUHJpbWFyeSA9IGxpc3Qu
bGFzdCgpLmNvdW50OworICAgIGxpc3QucmVtb3ZlTGFzdCgpOworICAgIAorICAgIG1fb3RoZXJD
YWxsZWVzLT5tX3Byb2Nlc3NlZC5jbGVhcigpOworICAgIGZvciAodW5zaWduZWQgY291bnQgPSBt
YXhLbm93bkNhbGxlZXM7IGNvdW50LS0gJiYgIWxpc3QuaXNFbXB0eSgpOykgeworICAgICAgICBt
X290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuYXBwZW5kKENhbGxFZGdlKGxpc3QubGFzdCgpLmtl
eSwgbGlzdC5sYXN0KCkuY291bnQpKTsKKyAgICAgICAgbGlzdC5yZW1vdmVMYXN0KCk7CisgICAg
fQorICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IGxpc3Quc2l6ZSgpOyBpLS07KQorICAgICAg
ICBtX251bUNhbGxzVG9Vbmtub3duQ2VsbCArPSBsaXN0W2ldLmNvdW50OworfQorCit2b2lkIENh
bGxFZGdlUHJvZmlsZTo6ZmFkZUJ5SGFsZigpCit7CisgICAgbV9udW1DYWxsc1RvUHJpbWFyeSA+
Pj0gMTsKKyAgICBtX251bUNhbGxzVG9Ob3RDZWxsID4+PSAxOworICAgIG1fbnVtQ2FsbHNUb1Vu
a25vd25DZWxsID4+PSAxOworICAgIG1fdG90YWxDb3VudCA+Pj0gMTsKKyAgICAKKyAgICBpZiAo
bV9vdGhlckNhbGxlZXMpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9vdGhlckNhbGxl
ZXMtPm1fcHJvY2Vzc2VkLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgbV9vdGhlckNhbGxl
ZXMtPm1fcHJvY2Vzc2VkW2ldID0gQ2FsbEVkZ2UoCisgICAgICAgICAgICAgICAgbV9vdGhlckNh
bGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNhbGxlZSgpLAorICAgICAgICAgICAgICAgIG1fb3RoZXJD
YWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jb3VudCgpID4+IDEpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBpZiAobV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0pIHsKKyAg
ICAgICAgICAgIGZvciAoYXV0byBlbnRyeSA6ICptX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlT
cGVjdHJ1bSkKKyAgICAgICAgICAgICAgICBlbnRyeS52YWx1ZSA+Pj0gMTsKKyAgICAgICAgfQor
ICAgIH0KK30KKworQ2FsbEVkZ2VMb2c6OkNhbGxFZGdlTG9nKCkKKyAgICA6IG1fc2NhbGVkTG9n
SW5kZXgobG9nU2l6ZSAqIHNpemVvZihFbnRyeSkpCit7CisgICAgZGF0YUxvZygiQ3JlYXRlZCBj
YWxsIGVkZ2UgbG9nOiAiLCBSYXdQb2ludGVyKHRoaXMpLCAiXG4iKTsKKyAgICBBU1NFUlQoISht
X3NjYWxlZExvZ0luZGV4ICUgc2l6ZW9mKEVudHJ5KSkpOworfQorCitDYWxsRWRnZUxvZzo6fkNh
bGxFZGdlTG9nKCkgeyB9CisKK2Jvb2wgQ2FsbEVkZ2VMb2c6OmlzRW5hYmxlZCgpCit7CisgICAg
cmV0dXJuIE9wdGlvbnM6OmVuYWJsZUNhbGxFZGdlUHJvZmlsaW5nKCkgJiYgT3B0aW9uczo6dXNl
RlRMSklUKCk7Cit9CisKKyNpZiBFTkFCTEUoSklUKQorCitleHRlcm4gIkMiIEpJVF9PUEVSQVRJ
T04gdm9pZCBvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2coQ2FsbEVkZ2VMb2cqKSBXVEZfSU5U
RVJOQUw7CitleHRlcm4gIkMiIEpJVF9PUEVSQVRJT04gdm9pZCBvcGVyYXRpb25Qcm9jZXNzQ2Fs
bEVkZ2VMb2coQ2FsbEVkZ2VMb2cqIGxvZykKK3sKKyAgICBsb2ctPnByb2Nlc3NMb2coKTsKK30K
Kwordm9pZCBDYWxsRWRnZUxvZzo6ZW1pdExvZ0NvZGUoQ0NhbGxIZWxwZXJzJiBqaXQsIENhbGxF
ZGdlUHJvZmlsZSYgcHJvZmlsZSwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncykKK3sKKyAgICBjb25z
dCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50cyA9IDE7CisgICAgCisgICAgR1BSUmVnIHNjcmF0
Y2hHUFI7CisgICAgaWYgKCFjYWxsZWVSZWdzLnVzZXMoR1BSSW5mbzo6cmVnVDApKQorICAgICAg
ICBzY3JhdGNoR1BSID0gR1BSSW5mbzo6cmVnVDA7CisgICAgZWxzZSBpZiAoIWNhbGxlZVJlZ3Mu
dXNlcyhHUFJJbmZvOjpyZWdUMSkpCisgICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJbmZvOjpyZWdU
MTsKKyAgICBlbHNlCisgICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJbmZvOjpyZWdUMjsKKyAgICAK
KyAgICBqaXQubG9hZDMyKCZtX3NjYWxlZExvZ0luZGV4LCBzY3JhdGNoR1BSKTsKKyAgICAKKyAg
ICBDQ2FsbEhlbHBlcnM6Okp1bXAgb2sgPSBqaXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6
Tm9uWmVybywgc2NyYXRjaEdQUik7CisgICAgCisgICAgQVNTRVJUKHN0YWNrQWxpZ25tZW50UmVn
aXN0ZXJzKCkgPj0gMSArIG51bWJlck9mQXJndW1lbnRzKTsKKyAgICAKKyAgICBqaXQuc3ViUHRy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSksIENDYWxs
SGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIAorICAgIGppdC5zdG9yZVZhbHVl
KGNhbGxlZVJlZ3MsIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9p
bnRlclJlZ2lzdGVyLCBzaXplb2YoSlNWYWx1ZSkpKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHMo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRoaXMpKTsKKyAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihvcGVyYXRpb25Qcm9jZXNz
Q2FsbEVkZ2VMb2cpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgaml0LmNhbGwoR1BSSW5m
bzo6bm9uQXJnR1BSMCk7CisgICAgaml0LmxvYWRWYWx1ZShDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
Q0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2l6ZW9mKEpTVmFsdWUpKSwgY2Fs
bGVlUmVncyk7CisgICAgCisgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihzdGFja0FsaWdubWVudEJ5dGVzKCkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsKKyAgICAKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihsb2dT
aXplICogc2l6ZW9mKEVudHJ5KSksIHNjcmF0Y2hHUFIpOworICAgIG9rLmxpbmsoJmppdCk7CisK
KyAgICBqaXQuc3ViMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2l6ZW9mKEVudHJ5KSks
IHNjcmF0Y2hHUFIpOworICAgIGppdC5zdG9yZTMyKHNjcmF0Y2hHUFIsICZtX3NjYWxlZExvZ0lu
ZGV4KTsKKyAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX2xvZyks
IHNjcmF0Y2hHUFIpOworICAgIGppdC5zdG9yZVZhbHVlKGNhbGxlZVJlZ3MsIENDYWxsSGVscGVy
czo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW50cnksIG1fdmFsdWUpKSk7
CisgICAgaml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmcHJvZmlsZSks
IENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW50cnks
IG1fcHJvZmlsZSkpKTsKK30KKwordm9pZCBDYWxsRWRnZUxvZzo6ZW1pdExvZ0NvZGUoCisgICAg
Q0NhbGxIZWxwZXJzJiBqaXQsIE93blB0cjxDYWxsRWRnZVByb2ZpbGU+JiBwcm9maWxlUG9pbnRl
ciwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncykKK3sKKyAgICBpZiAoIWlzRW5hYmxlZCgpKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgcHJvZmlsZVBvaW50ZXIuY3JlYXRlVHJhbnNhY3Rpb25h
bGx5KCk7CisgICAgZW1pdExvZ0NvZGUoaml0LCAqcHJvZmlsZVBvaW50ZXIsIGNhbGxlZVJlZ3Mp
OworfQorCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKwordm9pZCBDYWxsRWRnZUxvZzo6cHJvY2Vz
c0xvZygpCit7CisgICAgQVNTRVJUKCEobV9zY2FsZWRMb2dJbmRleCAlIHNpemVvZihFbnRyeSkp
KTsKKyAgICAKKyAgICBDYWxsRWRnZVByb2ZpbGVWZWN0b3IgbWVyZ2VCYWNrTG9nOworICAgIAor
ICAgIGZvciAodW5zaWduZWQgaSA9IG1fc2NhbGVkTG9nSW5kZXggLyBzaXplb2YoRW50cnkpOyBp
IDwgbG9nU2l6ZTsgKytpKQorICAgICAgICBtX2xvZ1tpXS5tX3Byb2ZpbGUtPmFkZChtX2xvZ1tp
XS5tX3ZhbHVlLCBtZXJnZUJhY2tMb2cpOworICAgIAorICAgIG1fc2NhbGVkTG9nSW5kZXggPSBs
b2dTaXplICogc2l6ZW9mKEVudHJ5KTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtZXJn
ZUJhY2tMb2cuc2l6ZSgpOyBpLS07KQorICAgICAgICBtZXJnZUJhY2tMb2dbaV0tPm1lcmdlQmFj
aygpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIENhbGxFZGdlUHJvZmlsZV9oCisjZGVmaW5lIENhbGxFZGdl
UHJvZmlsZV9oCisKKyNpbmNsdWRlICJDYWxsRWRnZS5oIgorI2luY2x1ZGUgIkNhbGxWYXJpYW50
LmgiCisjaW5jbHVkZSAiQ29uY3VycmVudEpJVExvY2suaCIKKyNpbmNsdWRlICJKU0NlbGwuaCIK
KyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBDQ2Fs
bEhlbHBlcnM7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKK2NsYXNzIENhbGxFZGdl
TG9nOworY2xhc3MgQ2FsbEVkZ2VQcm9maWxlOwordHlwZWRlZiBWZWN0b3I8Q2FsbEVkZ2VQcm9m
aWxlKiwgMTA+IENhbGxFZGdlUHJvZmlsZVZlY3RvcjsKKworY2xhc3MgQ2FsbEVkZ2VQcm9maWxl
IHsKK3B1YmxpYzoKKyAgICBDYWxsRWRnZVByb2ZpbGUoKTsKKyAgICAKKyAgICBDYWxsRWRnZUNv
dW50VHlwZSBudW1DYWxsc1RvTm90Q2VsbCgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQ2FsbHNUb05v
dENlbGw7IH0KKyAgICBDYWxsRWRnZUNvdW50VHlwZSBudW1DYWxsc1RvVW5rbm93bkNlbGwoKSBj
b25zdCB7IHJldHVybiBtX251bUNhbGxzVG9Vbmtub3duQ2VsbDsgfQorICAgIENhbGxFZGdlQ291
bnRUeXBlIG51bUNhbGxzVG9Lbm93bkNlbGxzKCkgY29uc3Q7CisgICAgCisgICAgLy8gQ2FsbCB3
aGlsZSBob2xkaW5nIHRoZSBvd25pbmcgQ29kZUJsb2NrJ3MgbG9jay4KKyAgICBDYWxsRWRnZUxp
c3QgY2FsbEVkZ2VzKCkgY29uc3Q7CisgICAgCisgICAgdm9pZCB2aXNpdFdlYWsoKTsKKyAgICAK
K3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIENhbGxFZGdlTG9nOworICAgIAorICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBtYXhLbm93bkNhbGxlZXMgPSA1OworICAgIAorICAgIHZvaWQgYWRk
KEpTVmFsdWUsIENhbGxFZGdlUHJvZmlsZVZlY3RvciYgbWVyZ2VCYWNrTG9nKTsKKyAgICAKKyAg
ICBib29sIHdvcnRoRGVzcGVjaWZ5aW5nKCk7CisgICAgdm9pZCBhZGRTbG93KENhbGxWYXJpYW50
LCBDYWxsRWRnZVByb2ZpbGVWZWN0b3ImIG1lcmdlQmFja0xvZyk7CisgICAgdm9pZCBtZXJnZUJh
Y2soKTsKKyAgICB2b2lkIGZhZGVCeUhhbGYoKTsKKyAgICAKKyAgICAvLyBJdCdzIGNoZWFwZXIg
dG8gbGV0IHRoaXMgaGF2ZSBpdHMgb3duIGxvY2suIEl0IG5lZWRzIHRvIGJlIGFibGUgdG8gZmlu
ZCB3aGljaCBsb2NrIHRvCisgICAgLy8gbG9jay4gTm9ybWFsbHkgaXQgd291bGQgbG9jayB0aGUg
b3duaW5nIENvZGVCbG9jaydzIGxvY2ssIGJ1dCB0aGF0IHdvdWxkIHJlcXVpcmUgYQorICAgIC8v
IHBvaW50ZXItd2lkdGggd29yZCB0byBwb2ludCBhdCB0aGUgQ29kZUJsb2NrLiBIYXZpbmcgdGhl
IGJ5dGUtc2l6ZWQgbG9jayBoZXJlIGlzCisgICAgLy8gY2hlYXBlci4gSG93ZXZlciwgdGhpcyBt
ZWFucyB0aGF0IHRoZSByZWxhdGlvbnNoaXAgd2l0aCB0aGUgQ29kZUJsb2NrIGxvY2sgaXM6Cisg
ICAgLy8gYWNxdWlyZSB0aGUgQ29kZUJsb2NrIGxvY2sgYmVmb3JlIHRoaXMgb25lLgorICAgIG11
dGFibGUgQ29uY3VycmVudEpJVExvY2sgbV9sb2NrOworICAgIAorICAgIGJvb2wgbV9jbG9zdXJl
c0FyZURlc3BlY2lmaWVkOworICAgIAorICAgIENhbGxFZGdlQ291bnRUeXBlIG1fbnVtQ2FsbHNU
b1ByaW1hcnk7CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbV9udW1DYWxsc1RvTm90Q2VsbDsKKyAg
ICBDYWxsRWRnZUNvdW50VHlwZSBtX251bUNhbGxzVG9Vbmtub3duQ2VsbDsKKyAgICBDYWxsRWRn
ZUNvdW50VHlwZSBtX3RvdGFsQ291bnQ7CisgICAgQ2FsbFZhcmlhbnQgbV9wcmltYXJ5Q2FsbGVl
OworICAgIAorICAgIHR5cGVkZWYgU3BlY3RydW08Q2FsbFZhcmlhbnQsIENhbGxFZGdlQ291bnRU
eXBlPiBDYWxsU3BlY3RydW07CisgICAgCisgICAgc3RydWN0IFNlY29uZGFyeSB7CisgICAgICAg
IFZlY3RvcjxDYWxsRWRnZT4gbV9wcm9jZXNzZWQ7IC8vIFByb2Nlc3NlZCBidXQgbm90IG5lY2Vz
c2FyaWx5IHNvcnRlZC4KKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxTcGVjdHJ1bT4gbV90
ZW1wb3JhcnlTcGVjdHJ1bTsKKyAgICB9OworICAgIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxTZWNv
bmRhcnk+IG1fb3RoZXJDYWxsZWVzOworfTsKKworY2xhc3MgQ2FsbEVkZ2VMb2cgeworcHVibGlj
OgorICAgIENhbGxFZGdlTG9nKCk7CisgICAgfkNhbGxFZGdlTG9nKCk7CisKKyAgICBzdGF0aWMg
Ym9vbCBpc0VuYWJsZWQoKTsKKyAgICAKKyNpZiBFTkFCTEUoSklUKQorICAgIHZvaWQgZW1pdExv
Z0NvZGUoQ0NhbGxIZWxwZXJzJiwgQ2FsbEVkZ2VQcm9maWxlJiwgSlNWYWx1ZVJlZ3MgY2FsbGVl
UmVncyk7IC8vIEFzc3VtZXMgdGhhdCBzdGFjayBpcyBhbGlnbmVkLCBhbGwgdm9sYXRpbGUgcmVn
aXN0ZXJzIC0gb3RoZXIgdGhhbiBjYWxsZWVHUFIgLSBhcmUgY2xvYmJlcmFibGUsIGFuZCB0aGUg
cGFyYW1ldGVyIHNwYWNlIGlzIGluIHVzZS4KKyAgICAKKyAgICAvLyBTYW1lIGFzIGFib3ZlIGJ1
dCBjcmVhdGVzIGEgQ2FsbEVkZ2VQcm9maWxlIGluc3RhbmNlIGlmIG9uZSBkaWQgbm90IGFscmVh
ZHkgZXhpc3QuIERvZXMKKyAgICAvLyB0aGlzIGluIGEgdGhyZWFkLXNhZmUgbWFubmVyIGJ5IGNh
bGxpbmcgT3duUHRyOjpjcmVhdGVUcmFuc2FjdGlvbmFsbHkuCisgICAgdm9pZCBlbWl0TG9nQ29k
ZShDQ2FsbEhlbHBlcnMmLCBPd25QdHI8Q2FsbEVkZ2VQcm9maWxlPiYsIEpTVmFsdWVSZWdzIGNh
bGxlZVJlZ3MpOworI2VuZGlmIC8vIEVOQUJMRShKSVQpCisgICAgCisgICAgdm9pZCBwcm9jZXNz
TG9nKCk7CisgICAgCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9nU2l6ZSA9IDEwMDAwOworICAg
IAorICAgIHN0cnVjdCBFbnRyeSB7CisgICAgICAgIEpTVmFsdWUgbV92YWx1ZTsKKyAgICAgICAg
Q2FsbEVkZ2VQcm9maWxlKiBtX3Byb2ZpbGU7CisgICAgfTsKKyAgICAKKyAgICB1bnNpZ25lZCBt
X3NjYWxlZExvZ0luZGV4OworICAgIEVudHJ5IG1fbG9nW2xvZ1NpemVdOworfTsKKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDYWxsRWRnZVByb2ZpbGVfaAorCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGVJ
bmxpbmVzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBD
YWxsRWRnZVByb2ZpbGVJbmxpbmVzX2gKKyNkZWZpbmUgQ2FsbEVkZ2VQcm9maWxlSW5saW5lc19o
CisKKyNpbmNsdWRlICJDYWxsRWRnZVByb2ZpbGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2lu
bGluZSBDYWxsRWRnZVByb2ZpbGU6OkNhbGxFZGdlUHJvZmlsZSgpCisgICAgOiBtX2Nsb3N1cmVz
QXJlRGVzcGVjaWZpZWQoZmFsc2UpCisgICAgLCBtX251bUNhbGxzVG9QcmltYXJ5KDApCisgICAg
LCBtX251bUNhbGxzVG9Ob3RDZWxsKDApCisgICAgLCBtX251bUNhbGxzVG9Vbmtub3duQ2VsbCgw
KQorICAgICwgbV90b3RhbENvdW50KDApCisgICAgLCBtX3ByaW1hcnlDYWxsZWUobnVsbHB0cikK
K3sKK30KKworQUxXQVlTX0lOTElORSB2b2lkIENhbGxFZGdlUHJvZmlsZTo6YWRkKEpTVmFsdWUg
dmFsdWUsIENhbGxFZGdlUHJvZmlsZVZlY3RvciYgbWVyZ2VCYWNrTG9nKQoreworICAgIHVuc2ln
bmVkIG5ld1RvdGFsQ291bnQgPSBtX3RvdGFsQ291bnQgKyAxOworICAgIGlmIChVTkxJS0VMWSgh
bmV3VG90YWxDb3VudCkpIHsKKyAgICAgICAgZmFkZUJ5SGFsZigpOyAvLyBUYWNrbGUgb3ZlcmZs
b3dzIGJ5IGRpdmlkaW5nIGFsbCBjb3VudHMgYnkgdHdvLgorICAgICAgICBuZXdUb3RhbENvdW50
ID0gbV90b3RhbENvdW50ICsgMTsKKyAgICB9CisgICAgQVNTRVJUKG5ld1RvdGFsQ291bnQpOwor
ICAgIG1fdG90YWxDb3VudCA9IG5ld1RvdGFsQ291bnQ7CisgICAgCisgICAgaWYgKFVOTElLRUxZ
KCF2YWx1ZS5pc0NlbGwoKSkpIHsKKyAgICAgICAgbV9udW1DYWxsc1RvTm90Q2VsbCsrOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgQ2FsbFZhcmlhbnQgY2FsbGVlID0gQ2FsbFZhcmlh
bnQodmFsdWUuYXNDZWxsKCkpOworICAgIAorICAgIGlmIChtX2Nsb3N1cmVzQXJlRGVzcGVjaWZp
ZWQpCisgICAgICAgIGNhbGxlZSA9IGNhbGxlZS5kZXNwZWNpZmllZENsb3N1cmUoKTsKKyAgICAg
ICAgCisgICAgaWYgKFVOTElLRUxZKCFtX3ByaW1hcnlDYWxsZWUpKSB7CisgICAgICAgIG1fcHJp
bWFyeUNhbGxlZSA9IGNhbGxlZTsKKyAgICAgICAgbV9udW1DYWxsc1RvUHJpbWFyeSA9IDE7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAorICAgIGlmIChMSUtFTFkobV9wcmltYXJ5
Q2FsbGVlID09IGNhbGxlZSkpIHsKKyAgICAgICAgbV9udW1DYWxsc1RvUHJpbWFyeSsrOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBpZiAoVU5MSUtFTFkoIW1fb3RoZXJD
YWxsZWVzKSkgeworICAgICAgICBhZGRTbG93KGNhbGxlZSwgbWVyZ2VCYWNrTG9nKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAgQ2FsbFNwZWN0cnVtKiBzZWNvbmRhcnkg
PSBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS5nZXQoKTsKKyAgICBpZiAoIXNl
Y29uZGFyeSkgeworICAgICAgICBhZGRTbG93KGNhbGxlZSwgbWVyZ2VCYWNrTG9nKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAgc2Vjb25kYXJ5LT5hZGQoY2FsbGVlKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDYWxsRWRnZVByb2ZpbGVJbmxp
bmVzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5m
by5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxM
aW5rSW5mby5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua0luZm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4MywxMSBA
QCB2b2lkIENhbGxMaW5rSW5mbzo6dmlzaXRXZWFrKFJlcGF0Y2hCdWZmCiAgICAgfQogICAgIGlm
ICghIWxhc3RTZWVuQ2FsbGVlICYmICFIZWFwOjppc01hcmtlZChsYXN0U2VlbkNhbGxlZS5nZXQo
KSkpCiAgICAgICAgIGxhc3RTZWVuQ2FsbGVlLmNsZWFyKCk7CisgICAgCisgICAgaWYgKGNhbGxF
ZGdlUHJvZmlsZSkgeworICAgICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKKyAgICAgICAgY2Fs
bEVkZ2VQcm9maWxlLT52aXNpdFdlYWsoKTsKKyAgICB9CiB9CiAKIENhbGxMaW5rSW5mbyYgQ2Fs
bExpbmtJbmZvOjpkdW1teSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2
LDcgQEAKICNpZm5kZWYgQ2FsbExpbmtJbmZvX2gKICNkZWZpbmUgQ2FsbExpbmtJbmZvX2gKIAor
I2luY2x1ZGUgIkNhbGxFZGdlUHJvZmlsZS5oIgogI2luY2x1ZGUgIkNsb3N1cmVDYWxsU3R1YlJv
dXRpbmUuaCIKICNpbmNsdWRlICJDb2RlTG9jYXRpb24uaCIKICNpbmNsdWRlICJDb2RlU3BlY2lh
bGl6YXRpb25LaW5kLmgiCkBAIC0zMyw2ICszNCw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5o
IgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgorI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg+CiAK
IG5hbWVzcGFjZSBKU0MgewpAQCAtODgsNiArOTAsNyBAQCBzdHJ1Y3QgQ2FsbExpbmtJbmZvIDog
cHVibGljIEJhc2ljUmF3U2VuCiAgICAgdW5zaWduZWQgY2FsbGVlR1BSIDogODsKICAgICB1bnNp
Z25lZCBzbG93UGF0aENvdW50OwogICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbjsKKyAgICBPd25Q
dHI8Q2FsbEVkZ2VQcm9maWxlPiBjYWxsRWRnZVByb2ZpbGU7CiAKICAgICBib29sIGlzTGlua2Vk
KCkgeyByZXR1cm4gc3R1YiB8fCBjYWxsZWU7IH0KICAgICB2b2lkIHVubGluayhSZXBhdGNoQnVm
ZmVyJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0
dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TGlua1N0YXR1cy5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDU0ICsz
MiwyMiBAQAogI2luY2x1ZGUgIkxMSW50Q2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KKyNpbmNsdWRlIDx3dGYvTGlz
dER1bXAuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2Ug
PSBmYWxzZTsKIAogQ2FsbExpbmtTdGF0dXM6OkNhbGxMaW5rU3RhdHVzKEpTVmFsdWUgdmFsdWUp
Ci0gICAgOiBtX2NhbGxUYXJnZXQodmFsdWUpCi0gICAgLCBtX2V4ZWN1dGFibGUoMCkKLSAgICAs
IG1fY291bGRUYWtlU2xvd1BhdGgoZmFsc2UpCisgICAgOiBtX2NvdWxkVGFrZVNsb3dQYXRoKGZh
bHNlKQogICAgICwgbV9pc1Byb3ZlZChmYWxzZSkKIHsKLSAgICBpZiAoIXZhbHVlIHx8ICF2YWx1
ZS5pc0NlbGwoKSkKKyAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS5pc0NlbGwoKSkgeworICAgICAg
ICBtX2NvdWxkVGFrZVNsb3dQYXRoID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOworICAgIH0KICAg
ICAKLSAgICBpZiAoIXZhbHVlLmFzQ2VsbCgpLT5pbmhlcml0cyhKU0Z1bmN0aW9uOjppbmZvKCkp
KQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9leGVjdXRhYmxlID0ganNDYXN0PEpTRnVu
Y3Rpb24qPih2YWx1ZS5hc0NlbGwoKSktPmV4ZWN1dGFibGUoKTsKLX0KLQotSlNGdW5jdGlvbiog
Q2FsbExpbmtTdGF0dXM6OmZ1bmN0aW9uKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fY2FsbFRhcmdl
dCB8fCAhbV9jYWxsVGFyZ2V0LmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAg
ICBpZiAoIW1fY2FsbFRhcmdldC5hc0NlbGwoKS0+aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygp
KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgcmV0dXJuIGpzQ2FzdDxKU0Z1bmN0aW9u
Kj4obV9jYWxsVGFyZ2V0LmFzQ2VsbCgpKTsKLX0KLQotSW50ZXJuYWxGdW5jdGlvbiogQ2FsbExp
bmtTdGF0dXM6OmludGVybmFsRnVuY3Rpb24oKSBjb25zdAotewotICAgIGlmICghbV9jYWxsVGFy
Z2V0IHx8ICFtX2NhbGxUYXJnZXQuaXNDZWxsKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIAot
ICAgIGlmICghbV9jYWxsVGFyZ2V0LmFzQ2VsbCgpLT5pbmhlcml0cyhJbnRlcm5hbEZ1bmN0aW9u
OjppbmZvKCkpKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICByZXR1cm4ganNDYXN0PElu
dGVybmFsRnVuY3Rpb24qPihtX2NhbGxUYXJnZXQuYXNDZWxsKCkpOwotfQotCi1JbnRyaW5zaWMg
Q2FsbExpbmtTdGF0dXM6OmludHJpbnNpY0ZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQp
IGNvbnN0Ci17Ci0gICAgaWYgKCFtX2V4ZWN1dGFibGUpCi0gICAgICAgIHJldHVybiBOb0ludHJp
bnNpYzsKLSAgICAKLSAgICByZXR1cm4gbV9leGVjdXRhYmxlLT5pbnRyaW5zaWNGb3Ioa2luZCk7
CisgICAgbV9lZGdlcy5hcHBlbmQoQ2FsbEVkZ2UoQ2FsbFZhcmlhbnQodmFsdWUuYXNDZWxsKCkp
LCAxKSk7CiB9CiAKIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUxM
SW50KGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgQ29kZUJsb2NrKiBwcm9maWxl
ZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQpAQCAtODcsNyArNTUsNyBAQCBDYWxsTGlu
a1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyCiAgICAgVU5VU0VEX1BBUkFNKHByb2Zp
bGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICNpZiBFTkFCTEUo
REZHX0pJVCkKLSAgICBpZiAocHJvZmlsZWRCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6
OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkRnVuY3Rpb24pKSkgeworICAgIGlm
IChwcm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0
ZShieXRlY29kZUluZGV4LCBCYWRDZWxsKSkpIHsKICAgICAgICAgLy8gV2UgY291bGQgZm9yY2Ug
dGhpcyB0byBiZSBhIGNsb3N1cmUgY2FsbCwgYnV0IGluc3RlYWQgd2UnbGwganVzdCBhc3N1bWUg
dGhhdCBpdAogICAgICAgICAvLyB0YWtlcyBzbG93IHBhdGguCiAgICAgICAgIHJldHVybiB0YWtl
c1Nsb3dQYXRoKCk7CkBAIC0xMzksMTAgKzEwNywxMCBAQCBDYWxsTGlua1N0YXR1czo6RXhpdFNp
dGVEYXRhIENhbGxMaW5rU3RhCiAgICAgCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgZXhpdFNp
dGVEYXRhLm1fdGFrZXNTbG93UGF0aCA9Ci0gICAgICAgIHByb2ZpbGVkQmxvY2stPmhhc0V4aXRT
aXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENhY2hl
LCBleGl0aW5nSklUVHlwZSkpCisgICAgICAgIHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxv
Y2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZFR5cGUsIGV4aXRp
bmdKSVRUeXBlKSkKICAgICAgICAgfHwgcHJvZmlsZWRCbG9jay0+aGFzRXhpdFNpdGUobG9ja2Vy
LCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkRXhlY3V0YWJsZSwgZXhp
dGluZ0pJVFR5cGUpKTsKICAgICBleGl0U2l0ZURhdGEubV9iYWRGdW5jdGlvbiA9Ci0gICAgICAg
IHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRl
KGJ5dGVjb2RlSW5kZXgsIEJhZEZ1bmN0aW9uLCBleGl0aW5nSklUVHlwZSkpOworICAgICAgICBw
cm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShi
eXRlY29kZUluZGV4LCBCYWRDZWxsLCBleGl0aW5nSklUVHlwZSkpOwogI2Vsc2UKICAgICBVTlVT
RURfUEFSQU0obG9ja2VyKTsKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CkBAIC0x
NTYsNiArMTI0LDE4IEBAIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgQ2FsbExpbmtTdGEK
ICNpZiBFTkFCTEUoSklUKQogQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVG
b3IoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZv
KQogeworICAgIC8vIEFsd2F5cyB0cnVzdCB0aGUgY2FsbCBlZGdlIHByb2ZpbGUgb3ZlciBhbnl0
aGluZyBlbHNlIHNpbmNlIHRoaXMgaGFzIHByZWNpc2UgY291bnRzLgorICAgIC8vIEl0IGNhbiBt
YWtlIHRoZSBiZXN0IHBvc3NpYmxlIGRlY2lzaW9uIGJlY2F1c2UgaXQgbmV2ZXIgImZvcmdldHMi
IHdoYXQgaGFwcGVuZWQgZm9yIGFueQorICAgIC8vIGNhbGwsIHdpdGggdGhlIGV4Y2VwdGlvbiBv
ZiBmYWRpbmcgb3V0IHRoZSBjb3VudHMgb2Ygb2xkIGNhbGxzIChmb3IgZXhhbXBsZSBpZiB0aGUK
KyAgICAvLyBjb3VudGVyIHR5cGUgaXMgMTYtYml0IHRoZW4gY2FsbHMgdGhhdCBoYXBwZW5lZCBt
b3JlIHRoYW4gMl4xNiBjYWxscyBhZ28gYXJlIGdpdmVuIGhhbGYKKyAgICAvLyB3ZWlnaHQsIGFu
ZCB0aGlzIGNvbXBvdW5kcyBmb3IgZXZlcnkgMl4xNSBbc2ljXSBjYWxscyBhZnRlciB0aGF0KS4g
VGhlIGNvbWJpbmF0aW9uIG9mCisgICAgLy8gaGlnaCBmaWRlbGl0eSBmb3IgcmVjZW50IGNhbGxz
IGFuZCBmYWRpbmcgZm9yIG9sZGVyIGNhbGxzIG1ha2VzIHRoaXMgdGhlIG1vc3QgdXNlZnVsCisg
ICAgLy8gbWVjaGFtaXNtIG9mIGNob29zaW5nIGhvdyB0byBvcHRpbWl6ZSBmdXR1cmUgY2FsbHMu
CisgICAgQ2FsbEVkZ2VQcm9maWxlKiBlZGdlUHJvZmlsZSA9IGNhbGxMaW5rSW5mby5jYWxsRWRn
ZVByb2ZpbGUuZ2V0KCk7CisgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CisgICAgaWYgKGVkZ2VQ
cm9maWxlKQorICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21DYWxsRWRnZVByb2ZpbGUoZWRnZVBy
b2ZpbGUpOworICAgIAogICAgIC8vIE5vdGUgdGhhdCBkZXNwaXRlIHJlcXVpcmluZyB0aGF0IHRo
ZSBsb2NrZXIgaXMgaGVsZCwgdGhpcyBjb2RlIGlzIHJhY3kgd2l0aCByZXNwZWN0CiAgICAgLy8g
dG8gdGhlIENhbGxMaW5rSW5mbzogaXQgbWF5IGdldCBjbGVhcmVkIHdoaWxlIHRoaXMgY29kZSBy
dW5zISBUaGlzIGlzIGJlY2F1c2UKICAgICAvLyBDYWxsTGlua0luZm86OnVubGluaygpIG1heSBi
ZSBjYWxsZWQgZnJvbSBhIGRpZmZlcmVudCBDb2RlQmxvY2sgdGhhbiB0aGUgb25lIHRoYXQgb3du
cwpAQCAtMTc3LDcgKzE1Nyw3IEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21w
dXRlRm8KICAgICAKICAgICBKU0Z1bmN0aW9uKiB0YXJnZXQgPSBjYWxsTGlua0luZm8ubGFzdFNl
ZW5DYWxsZWUuZ2V0KCk7CiAgICAgaWYgKCF0YXJnZXQpCi0gICAgICAgIHJldHVybiBDYWxsTGlu
a1N0YXR1cygpOworICAgICAgICByZXR1cm4gdGFrZXNTbG93UGF0aCgpOwogICAgIAogICAgIGlm
IChjYWxsTGlua0luZm8uaGFzU2VlbkNsb3N1cmUpCiAgICAgICAgIHJldHVybiBDYWxsTGlua1N0
YXR1cyh0YXJnZXQtPmV4ZWN1dGFibGUoKSk7CkBAIC0xODUsMTUgKzE2NSwzMSBAQCBDYWxsTGlu
a1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvCiAgICAgcmV0dXJuIENhbGxMaW5rU3Rh
dHVzKHRhcmdldCk7CiB9CiAKLUNhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRl
Rm9yKAotICAgIGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgQ2FsbExpbmtJbmZv
JiBjYWxsTGlua0luZm8sIEV4aXRTaXRlRGF0YSBleGl0U2l0ZURhdGEpCitDYWxsTGlua1N0YXR1
cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21DYWxsRWRnZVByb2ZpbGUoQ2FsbEVkZ2VQcm9m
aWxlKiBlZGdlUHJvZmlsZSkKIHsKLSAgICBpZiAoZXhpdFNpdGVEYXRhLm1fdGFrZXNTbG93UGF0
aCkKKyAgICAvLyBUbyBkbyBhbnl0aGluZyBtZWFuaW5nZnVsLCB3ZSByZXF1aXJlIHRoYXQgdGhl
IG1ham9yaXR5IG9mIGNhbGxzIGFyZSB0byBzb21ldGhpbmcgd2UKKyAgICAvLyBrbm93IGhvdyB0
byBoYW5kbGUuCisgICAgdW5zaWduZWQgbnVtQ2FsbHNUb0tub3duID0gZWRnZVByb2ZpbGUtPm51
bUNhbGxzVG9Lbm93bkNlbGxzKCk7CisgICAgdW5zaWduZWQgbnVtQ2FsbHNUb1Vua25vd24gPSBl
ZGdlUHJvZmlsZS0+bnVtQ2FsbHNUb05vdENlbGwoKSArIGVkZ2VQcm9maWxlLT5udW1DYWxsc1Rv
VW5rbm93bkNlbGwoKTsKKyAgICBpZiAobnVtQ2FsbHNUb0tub3duIDw9IG51bUNhbGxzVG9Vbmtu
b3duKQogICAgICAgICByZXR1cm4gdGFrZXNTbG93UGF0aCgpOwogICAgIAorICAgIENhbGxMaW5r
U3RhdHVzIHJlc3VsdDsKKyAgICByZXN1bHQubV9lZGdlcyA9IGVkZ2VQcm9maWxlLT5jYWxsRWRn
ZXMoKTsKKyAgICByZXN1bHQubV9jb3VsZFRha2VTbG93UGF0aCA9ICEhbnVtQ2FsbHNUb1Vua25v
d247CisgICAgcmVzdWx0Lm1fY2FuVHJ1c3RDb3VudHMgPSB0cnVlOworICAgIAorICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK0NhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9y
KAorICAgIGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgQ2FsbExpbmtJbmZvJiBj
YWxsTGlua0luZm8sIEV4aXRTaXRlRGF0YSBleGl0U2l0ZURhdGEpCit7CiAgICAgQ2FsbExpbmtT
dGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZvcihsb2NrZXIsIGNhbGxMaW5rSW5mbyk7CiAgICAgaWYg
KGV4aXRTaXRlRGF0YS5tX2JhZEZ1bmN0aW9uKQogICAgICAgICByZXN1bHQubWFrZUNsb3N1cmVD
YWxsKCk7CisgICAgaWYgKGV4aXRTaXRlRGF0YS5tX3Rha2VzU2xvd1BhdGgpCisgICAgICAgIHJl
c3VsdC5tX2NvdWxkVGFrZVNsb3dQYXRoID0gdHJ1ZTsKICAgICAKICAgICByZXR1cm4gcmVzdWx0
OwogfQpAQCAtMjU2LDYgKzI1MiwzMiBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6
Y29tcHV0ZUZvCiAgICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgY29kZU9yaWdp
bi5ieXRlY29kZUluZGV4LCBiYXNlbGluZU1hcCk7CiB9CiAKK2Jvb2wgQ2FsbExpbmtTdGF0dXM6
OmlzQ2xvc3VyZUNhbGwoKSBjb25zdAoreworICAgIGZvciAodW5zaWduZWQgaSA9IG1fZWRnZXMu
c2l6ZSgpOyBpLS07KSB7CisgICAgICAgIGlmIChtX2VkZ2VzW2ldLmNhbGxlZSgpLmlzQ2xvc3Vy
ZUNhbGwoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK3ZvaWQgQ2FsbExpbmtTdGF0dXM6Om1ha2VDbG9zdXJlQ2FsbCgpCit7CisgICAg
QVNTRVJUKCFtX2lzUHJvdmVkKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2VkZ2VzLnNpemUo
KTsgaS0tOykKKyAgICAgICAgbV9lZGdlc1tpXSA9IG1fZWRnZXNbaV0uZGVzcGVjaWZpZWRDbG9z
dXJlKCk7CisgICAgCisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgLy8gRG9p
bmcgdGhpcyBzaG91bGQgbm90IGhhdmUgY3JlYXRlZCBkdXBsaWNhdGVzLCBiZWNhdXNlIHRoZSBD
YWxsRWRnZVByb2ZpbGUKKyAgICAgICAgLy8gc2hvdWxkIGRlc3BlY2lmeSBjbG9zdXJlcyBpZiBk
b2luZyBzbyB3b3VsZCByZWR1Y2UgdGhlIG51bWJlciBvZiBrbm93biBjYWxsZWVzLgorICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9lZGdlcy5zaXplKCk7ICsraSkgeworICAgICAg
ICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFudCA9IG1fZWRnZXNbaV0uY2FsbGVlKCk7CisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGogPSBpICsgMTsgaiA8IG1fZWRnZXMuc2l6ZSgpOyArK2opCisg
ICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQgIT0gbV9lZGdlc1tqXS5jYWxsZWUoKSk7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgQ2FsbExpbmtTdGF0dXM6OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKIHsKICAgICBpZiAoIWlzU2V0KCkpIHsKQEAgLTI3MSwxNCArMjkzLDcg
QEAgdm9pZCBDYWxsTGlua1N0YXR1czo6ZHVtcChQcmludFN0cmVhbSYgbwogICAgIGlmIChtX2Nv
dWxkVGFrZVNsb3dQYXRoKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsICJDb3VsZCBUYWtlIFNs
b3cgUGF0aCIpOwogICAgIAotICAgIGlmIChtX2NhbGxUYXJnZXQpCi0gICAgICAgIG91dC5wcmlu
dChjb21tYSwgIktub3duIHRhcmdldDogIiwgbV9jYWxsVGFyZ2V0KTsKLSAgICAKLSAgICBpZiAo
bV9leGVjdXRhYmxlKSB7Ci0gICAgICAgIG91dC5wcmludChjb21tYSwgIkV4ZWN1dGFibGUvQ2Fs
bEhhc2g6ICIsIFJhd1BvaW50ZXIobV9leGVjdXRhYmxlKSk7Ci0gICAgICAgIGlmICghaXNDb21w
aWxhdGlvblRocmVhZCgpKQotICAgICAgICAgICAgb3V0LnByaW50KCIvIiwgbV9leGVjdXRhYmxl
LT5oYXNoRm9yKENvZGVGb3JDYWxsKSk7Ci0gICAgfQorICAgIG91dC5wcmludChsaXN0RHVtcCht
X2VkZ2VzKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHJldmlzaW9uIDE3MjE3NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Niw5ICs0Niw5IEBAIHN0cnVjdCBDYWxsTGlua0luZm87CiBjbGFzcyBD
YWxsTGlua1N0YXR1cyB7CiBwdWJsaWM6CiAgICAgQ2FsbExpbmtTdGF0dXMoKQotICAgICAgICA6
IG1fZXhlY3V0YWJsZSgwKQotICAgICAgICAsIG1fY291bGRUYWtlU2xvd1BhdGgoZmFsc2UpCisg
ICAgICAgIDogbV9jb3VsZFRha2VTbG93UGF0aChmYWxzZSkKICAgICAgICAgLCBtX2lzUHJvdmVk
KGZhbHNlKQorICAgICAgICAsIG1fY2FuVHJ1c3RDb3VudHMoZmFsc2UpCiAgICAgewogICAgIH0K
ICAgICAKQEAgLTYxLDEwICs2MSwxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgZXhwbGljaXQgQ2Fs
bExpbmtTdGF0dXMoSlNWYWx1ZSk7CiAgICAgCi0gICAgQ2FsbExpbmtTdGF0dXMoRXhlY3V0YWJs
ZUJhc2UqIGV4ZWN1dGFibGUpCi0gICAgICAgIDogbV9leGVjdXRhYmxlKGV4ZWN1dGFibGUpCisg
ICAgQ2FsbExpbmtTdGF0dXMoQ2FsbFZhcmlhbnQgdmFyaWFudCkKKyAgICAgICAgOiBtX2VkZ2Vz
KDEsIENhbGxFZGdlKHZhcmlhbnQsIDEpKQogICAgICAgICAsIG1fY291bGRUYWtlU2xvd1BhdGgo
ZmFsc2UpCiAgICAgICAgICwgbV9pc1Byb3ZlZChmYWxzZSkKKyAgICAgICAgLCBtX2NhblRydXN0
Q291bnRzKGZhbHNlKQogICAgIHsKICAgICB9CiAgICAgCkBAIC0xMDcsMzcgKzEwOCwzNiBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoCiAgICAgICAgIENv
ZGVCbG9jayosIENvZGVPcmlnaW4sIGNvbnN0IENhbGxMaW5rSW5mb01hcCYsIGNvbnN0IENvbnRl
eHRNYXAmKTsKICAgICAKLSAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVGFy
Z2V0IHx8IG1fZXhlY3V0YWJsZSB8fCBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CisgICAgYm9vbCBp
c1NldCgpIGNvbnN0IHsgcmV0dXJuICFtX2VkZ2VzLmlzRW1wdHkoKSB8fCBtX2NvdWxkVGFrZVNs
b3dQYXRoOyB9CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNT
ZXQoKTsgfQogICAgIAogICAgIGJvb2wgY291bGRUYWtlU2xvd1BhdGgoKSBjb25zdCB7IHJldHVy
biBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9Ci0gICAgYm9vbCBpc0Nsb3N1cmVDYWxsKCkgY29uc3Qg
eyByZXR1cm4gbV9leGVjdXRhYmxlICYmICFtX2NhbGxUYXJnZXQ7IH0KICAgICAKLSAgICBKU1Zh
bHVlIGNhbGxUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxUYXJnZXQ7IH0KLSAgICBKU0Z1
bmN0aW9uKiBmdW5jdGlvbigpIGNvbnN0OwotICAgIEludGVybmFsRnVuY3Rpb24qIGludGVybmFs
RnVuY3Rpb24oKSBjb25zdDsKLSAgICBJbnRyaW5zaWMgaW50cmluc2ljRm9yKENvZGVTcGVjaWFs
aXphdGlvbktpbmQpIGNvbnN0OwotICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKCkgY29u
c3QgeyByZXR1cm4gbV9leGVjdXRhYmxlOyB9CisgICAgQ2FsbEVkZ2VMaXN0IGVkZ2VzKCkgY29u
c3QgeyByZXR1cm4gbV9lZGdlczsgfQorICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVy
biBtX2VkZ2VzLnNpemUoKTsgfQorICAgIENhbGxFZGdlIGF0KHVuc2lnbmVkIGkpIGNvbnN0IHsg
cmV0dXJuIG1fZWRnZXNbaV07IH0KKyAgICBDYWxsRWRnZSBvcGVyYXRvcltdKHVuc2lnbmVkIGkp
IGNvbnN0IHsgcmV0dXJuIGF0KGkpOyB9CiAgICAgYm9vbCBpc1Byb3ZlZCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNQcm92ZWQ7IH0KLSAgICBib29sIGNhbk9wdGltaXplKCkgY29uc3QgeyByZXR1cm4g
KG1fY2FsbFRhcmdldCB8fCBtX2V4ZWN1dGFibGUpICYmICFtX2NvdWxkVGFrZVNsb3dQYXRoOyB9
CisgICAgYm9vbCBjYW5PcHRpbWl6ZSgpIGNvbnN0IHsgcmV0dXJuICFtX2VkZ2VzLmlzRW1wdHko
KTsgfQorICAgIGJvb2wgY2FuVHJ1c3RDb3VudHMoKSBjb25zdCB7IHJldHVybiBtX2NhblRydXN0
Q291bnRzOyB9CisgICAgCisgICAgYm9vbCBpc0Nsb3N1cmVDYWxsKCkgY29uc3Q7IC8vIFJldHVy
bnMgdHJ1ZSBpZiBhbnkgY2FsbGVlIGlzIGEgY2xvc3VyZSBjYWxsLgogICAgIAogICAgIHZvaWQg
ZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKLSAgICB2b2lkIG1ha2VD
bG9zdXJlQ2FsbCgpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1faXNQcm92ZWQpOwotICAgICAg
ICAvLyBUdXJuIHRoaXMgaW50byBhIGNsb3N1cmUgY2FsbC4KLSAgICAgICAgbV9jYWxsVGFyZ2V0
ID0gSlNWYWx1ZSgpOwotICAgIH0KKyAgICB2b2lkIG1ha2VDbG9zdXJlQ2FsbCgpOwogICAgIAog
ICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRnJvbUxMSW50KGNvbnN0IENvbmN1cnJl
bnRKSVRMb2NrZXImLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKyNpZiBF
TkFCTEUoSklUKQorICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRnJvbUNhbGxFZGdl
UHJvZmlsZShDYWxsRWRnZVByb2ZpbGUqKTsKKyNlbmRpZgogICAgIAotICAgIEpTVmFsdWUgbV9j
YWxsVGFyZ2V0OwotICAgIEV4ZWN1dGFibGVCYXNlKiBtX2V4ZWN1dGFibGU7CisgICAgQ2FsbEVk
Z2VMaXN0IG1fZWRnZXM7CiAgICAgYm9vbCBtX2NvdWxkVGFrZVNsb3dQYXRoOwogICAgIGJvb2wg
bV9pc1Byb3ZlZDsKKyAgICBib29sIG1fY2FuVHJ1c3RDb3VudHM7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxW
YXJpYW50LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsVmFyaWFudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQ2FsbFZhcmlhbnQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQg
Q2FsbFZhcmlhbnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBpZiAoISp0
aGlzKSB7CisgICAgICAgIG91dC5wcmludCgibnVsbCIpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIAorICAgIGlmIChJbnRlcm5hbEZ1bmN0aW9uKiBpbnRlcm5hbEZ1bmN0aW9uID0gdGhp
cy0+aW50ZXJuYWxGdW5jdGlvbigpKSB7CisgICAgICAgIG91dC5wcmludCgiSW50ZXJuYWxGdW5j
dGlvbjogIiwgSlNWYWx1ZShpbnRlcm5hbEZ1bmN0aW9uKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgCisgICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gdGhpcy0+ZnVuY3Rpb24o
KSkgeworICAgICAgICBvdXQucHJpbnQoIihGdW5jdGlvbjogIiwgSlNWYWx1ZShmdW5jdGlvbiks
ICI7IEV4ZWN1dGFibGU6ICIsICpleGVjdXRhYmxlKCksICIpIik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgb3V0LnByaW50KCJFeGVjdXRhYmxlOiAiLCAqZXhlY3V0YWJsZSgp
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2lmbmRlZiBDYWxsVmFyaWFudF9oCisjZGVmaW5lIENhbGxWYXJpYW50X2gKKworI2luY2x1ZGUg
IkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9u
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBDYWxsVmFyaWFudCB7CitwdWJsaWM6Cisg
ICAgZXhwbGljaXQgQ2FsbFZhcmlhbnQoSlNDZWxsKiBjYWxsZWUgPSBudWxscHRyKQorICAgICAg
ICA6IG1fY2FsbGVlKGNhbGxlZSkKKyAgICB7CisgICAgfQorICAgIAorICAgIENhbGxWYXJpYW50
KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgOiBtX2NhbGxlZShkZWxl
dGVkVG9rZW4oKSkKKyAgICB7CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29u
c3QgeyByZXR1cm4gIW1fY2FsbGVlOyB9CisgICAgCisgICAgLy8gSWYgdGhpcyB2YXJpYW50IHJl
ZmVycyB0byBhIGZ1bmN0aW9uLCBjaGFuZ2UgaXQgdG8gcmVmZXIgdG8gaXRzIGV4ZWN1dGFibGUu
CisgICAgQUxXQVlTX0lOTElORSBDYWxsVmFyaWFudCBkZXNwZWNpZmllZENsb3N1cmUoKSBjb25z
dAorICAgIHsKKyAgICAgICAgaWYgKG1fY2FsbGVlLT50eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUp
CisgICAgICAgICAgICByZXR1cm4gQ2FsbFZhcmlhbnQoanNDYXN0PEpTRnVuY3Rpb24qPihtX2Nh
bGxlZSktPmV4ZWN1dGFibGUoKSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisgICAg
CisgICAgSlNDZWxsKiByYXdDYWxsZWVDZWxsKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsZWU7IH0K
KyAgICAKKyAgICBJbnRlcm5hbEZ1bmN0aW9uKiBpbnRlcm5hbEZ1bmN0aW9uKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEludGVybmFsRnVuY3Rpb24qPihtX2Nh
bGxlZSk7CisgICAgfQorICAgIAorICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPihtX2NhbGxlZSk7
CisgICAgfQorICAgIAorICAgIGJvb2wgaXNDbG9zdXJlQ2FsbCgpIGNvbnN0IHsgcmV0dXJuICEh
anNEeW5hbWljQ2FzdDxFeGVjdXRhYmxlQmFzZSo+KG1fY2FsbGVlKTsgfQorICAgIAorICAgIEV4
ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChKU0Z1
bmN0aW9uKiBmdW5jdGlvbiA9IHRoaXMtPmZ1bmN0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4g
ZnVuY3Rpb24tPmV4ZWN1dGFibGUoKTsKKyAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8RXhl
Y3V0YWJsZUJhc2UqPihtX2NhbGxlZSk7CisgICAgfQorICAgIAorICAgIEpTQ2VsbCogbm9uRXhl
Y3V0YWJsZUNhbGxlZSgpIGNvbnN0CisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghaXND
bG9zdXJlQ2FsbCgpKTsKKyAgICAgICAgcmV0dXJuIG1fY2FsbGVlOworICAgIH0KKyAgICAKKyAg
ICBJbnRyaW5zaWMgaW50cmluc2ljRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkgY29u
c3QKKyAgICB7CisgICAgICAgIGlmIChFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IHRoaXMt
PmV4ZWN1dGFibGUoKSkKKyAgICAgICAgICAgIHJldHVybiBleGVjdXRhYmxlLT5pbnRyaW5zaWNG
b3Ioa2luZCk7CisgICAgICAgIHJldHVybiBOb0ludHJpbnNpYzsKKyAgICB9CisgICAgCisgICAg
RnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJs
ZSgpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0
OworICAgIAorICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fY2FsbGVlID09IGRlbGV0ZWRUb2tlbigpOworICAgIH0KKyAgICAK
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fY2FsbGVlID09IG90aGVyLm1fY2FsbGVlOworICAgIH0KKyAg
ICAKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKyAgICAKKyAg
ICBib29sIG9wZXJhdG9yPChjb25zdCBDYWxsVmFyaWFudCYgb3RoZXIpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gbV9jYWxsZWUgPCBvdGhlci5tX2NhbGxlZTsKKyAgICB9CisgICAgCisg
ICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG90aGVyIDwgKnRoaXM7CisgICAgfQorICAgIAorICAgIGJvb2wgb3Bl
cmF0b3I8PShjb25zdCBDYWxsVmFyaWFudCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gISgqdGhpcyA8IG90aGVyKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvcj49
KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBv
dGhlciA8PSAqdGhpczsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gV1RGOjpQdHJIYXNoPEpTQ2VsbCo+OjpoYXNoKG1fY2FsbGVl
KTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIHN0YXRpYyBKU0NlbGwqIGRlbGV0ZWRUb2tl
bigpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU0NlbGwqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+
KDEpKTsgfQorICAgICAgICAgICAgICAgICAgIAorICAgIEpTQ2VsbCogbV9jYWxsZWU7Cit9Owor
CitzdHJ1Y3QgQ2FsbFZhcmlhbnRIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25z
dCBDYWxsVmFyaWFudCYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgc3RhdGljIGJv
b2wgZXF1YWwoY29uc3QgQ2FsbFZhcmlhbnQmIGEsIGNvbnN0IENhbGxWYXJpYW50JiBiKSB7IHJl
dHVybiBhID09IGI7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0
eU9yRGVsZXRlZCA9IHRydWU7Cit9OworCit0eXBlZGVmIFZlY3RvcjxDYWxsVmFyaWFudCwgMT4g
Q2FsbFZhcmlhbnRMaXN0OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKK3RlbXBsYXRlPD4g
c3RydWN0IERlZmF1bHRIYXNoPEpTQzo6Q2FsbFZhcmlhbnQ+IHsKKyAgICB0eXBlZGVmIEpTQzo6
Q2FsbFZhcmlhbnRIYXNoIEhhc2g7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
SGFzaFRyYWl0czsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpDYWxsVmFyaWFu
dD4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8SlNDOjpDYWxsVmFyaWFudD4geyB9OworCit9IC8v
IG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIENhbGxWYXJpYW50X2gKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCShyZXZpc2lvbiAxNzIxNzcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCw4ICszOCw4IEBAIGNvbnN0IGNoYXIqIGV4aXRLaW5kVG9TdHJpbmcoRXhp
dEtpbmQga2kKICAgICAgICAgcmV0dXJuICJVbnNldCI7CiAgICAgY2FzZSBCYWRUeXBlOgogICAg
ICAgICByZXR1cm4gIkJhZFR5cGUiOwotICAgIGNhc2UgQmFkRnVuY3Rpb246Ci0gICAgICAgIHJl
dHVybiAiQmFkRnVuY3Rpb24iOworICAgIGNhc2UgQmFkQ2VsbDoKKyAgICAgICAgcmV0dXJuICJC
YWRDZWxsIjsKICAgICBjYXNlIEJhZEV4ZWN1dGFibGU6CiAgICAgICAgIHJldHVybiAiQmFkRXhl
Y3V0YWJsZSI7CiAgICAgY2FzZSBCYWRDYWNoZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGl0S2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGl0S2luZC5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIGVudW0gRXhpdEtpbmQgOiB1aW50OF90IHsKICAgICBFeGl0
S2luZFVuc2V0LAogICAgIEJhZFR5cGUsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIGEgdHlwZSBwcmVk
aWN0aW9uIHdhcyB3cm9uZy4KLSAgICBCYWRGdW5jdGlvbiwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ug
d2UgbWFkZSBhbiBpbmNvcnJlY3QgYXNzdW1wdGlvbiBhYm91dCB3aGF0IGZ1bmN0aW9uIHdlIHdv
dWxkIHNlZS4KKyAgICBCYWRDZWxsLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSB3ZSBtYWRlIGFuIGlu
Y29ycmVjdCBhc3N1bXB0aW9uIGFib3V0IHdoYXQgY2VsbCB3ZSB3b3VsZCBzZWUuIFVzdWFsbHkg
dXNlZCBmb3IgZnVuY3Rpb24gY2hlY2tzLgogICAgIEJhZEV4ZWN1dGFibGUsIC8vIFdlIGV4aXRl
ZCBiZWNhdXNlIHdlIG1hZGUgYW4gaW5jb3JyZWN0IGFzc3VtcHRpb24gYWJvdXQgd2hhdCBleGVj
dXRhYmxlIHdlIHdvdWxkIHNlZS4KICAgICBCYWRDYWNoZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ug
YW4gaW5saW5lIGNhY2hlIHdhcyB3cm9uZy4KICAgICBCYWRDb25zdGFudENhY2hlLCAvLyBXZSBl
eGl0ZWQgYmVjYXVzZSBhIGNhY2hlIG9uIGEgd2VhayBjb25zdGFudCAodXN1YWxseSBhIHByb3Rv
dHlwZSkgd2FzIHdyb25nLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMTcyMTc3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYwLDE0ICsxNDYwLDYgQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5
cGUoU3BlY0ludDMyKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgIGNhc2UgQ2hlY2tF
eGVjdXRhYmxlOiB7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBjb3VsZCB0cmFjayBleGVjdXRhYmxl
cyBpbiBBYnN0cmFjdFZhbHVlLCB3aGljaCB3b3VsZCBhbGxvdyB1cyB0byBnZXQgcmlkIG9mIHRo
ZXNlIGNoZWNrcwotICAgICAgICAvLyBtb3JlIHRob3JvdWdobHkuIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYyMDAKLSAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxk
IGVsaW1pbmF0ZSB0aGVzZSBlbnRpcmVseSBpZiB3ZSBrbm93IHRoZSBleGFjdCB2YWx1ZSB0aGF0
IGZsb3dzIGludG8gdGhpcy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwNjIwMQotICAgICAgICBicmVhazsKLSAgICB9Ci0KICAgICBjYXNlIENo
ZWNrU3RydWN0dXJlOiB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBw
cm9wYWdhdGUgdGhlIHN0cnVjdHVyZSBzZXRzIG9mIGNvbnN0YW50cyAoaS5lLiBwcm90b3R5cGVz
KS4KICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KTsKQEAgLTE3MjcsMTYgKzE3MTksMjkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeQogICAgICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorICAgICAgICAKKyAgICBjYXNlIEdldEV4ZWN1dGFibGU6IHsKKyAg
ICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7Cisg
ICAgICAgIGlmICh2YWx1ZSkgeworICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBq
c0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2YWx1ZSk7CisgICAgICAgICAgICBpZiAoZnVuY3Rp
b24pIHsKKyAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCAqbV9ncmFwaC5mcmVlemUo
ZnVuY3Rpb24tPmV4ZWN1dGFibGUoKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjQ2Vs
bE90aGVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIAotICAgIGNhc2UgQ2hlY2tGdW5j
dGlvbjogeworICAgIGNhc2UgQ2hlY2tDZWxsOiB7CiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBm
b3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwotICAgICAgICBpZiAodmFsdWUgPT0gbm9k
ZS0+ZnVuY3Rpb24oKS0+dmFsdWUoKSkgeworICAgICAgICBpZiAodmFsdWUgPT0gbm9kZS0+Y2Vs
bE9wZXJhbmQoKS0+dmFsdWUoKSkgewogICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0
YW50cyh0cnVlKTsKICAgICAgICAgICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgZmlsdGVyQnlWYWx1ZShub2RlLT5jaGls
ZDEoKSwgKm5vZGUtPmZ1bmN0aW9uKCkpOworICAgICAgICBmaWx0ZXJCeVZhbHVlKG5vZGUtPmNo
aWxkMSgpLCAqbm9kZS0+Y2VsbE9wZXJhbmQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICAgICAgCkBAIC0xOTAyLDYgKzE5MDcsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6Cisg
ICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7
CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2
aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQ
cm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzg5LDYgKzM4OSwxMSBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIC8vIHRoZW4gLTAgYW5kIDAgYXJlIHRyZWF0ZWQgdGhl
IHNhbWUuCiAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCktPm1lcmdlRmxhZ3MoTm9kZUJ5
dGVjb2RlVXNlc0FzTnVtYmVyIHwgTm9kZUJ5dGVjb2RlVXNlc0FzT3RoZXIpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTd2l0Y2hDZWxsOgorICAgICAgICAgICAg
ICAgIC8vIFRoZXJlIGlzIGN1cnJlbnRseSBubyBwb2ludCB0byBiZWluZyBjbGV2ZXIgaGVyZSBz
aW5jZSB0aGlzIGlzIHVzZWQgZm9yIHN3aXRjaGluZworICAgICAgICAgICAgICAgIC8vIG9uIG9i
amVjdHMuCisgICAgICAgICAgICAgICAgbWVyZ2VEZWZhdWx0RmxhZ3Mobm9kZSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHJl
dmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9j
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDog
UmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICBOb2RlKiYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyBy
ZXR1cm4gYXQoaSk7IH0KICAgICBOb2RlKiBvcGVyYXRvcltdKHNpemVfdCBpKSBjb25zdCB7IHJl
dHVybiBhdChpKTsgfQogICAgIE5vZGUqIGxhc3QoKSBjb25zdCB7IHJldHVybiBhdChzaXplKCkg
LSAxKTsgfQorICAgIE5vZGUqIHRha2VMYXN0KCkgeyByZXR1cm4gbV9ub2Rlcy50YWtlTGFzdCgp
OyB9CiAgICAgdm9pZCByZXNpemUoc2l6ZV90IHNpemUpIHsgbV9ub2Rlcy5yZXNpemUoc2l6ZSk7
IH0KICAgICB2b2lkIGdyb3coc2l6ZV90IHNpemUpIHsgbV9ub2Rlcy5ncm93KHNpemUpOyB9CiAg
ICAgCkBAIC0xMDYsNiArMTA3LDEzIEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxC
YXNpY0Jsb2MKICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CiAg
ICAgCisgICAgdm9pZCBkaWRMaW5rKCkKKyAgICB7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAg
ICAgICBpc0xpbmtlZCA9IHRydWU7CisjZW5kaWYKKyAgICB9CisgICAgCiAgICAgLy8gVGhpcyB2
YWx1ZSBpcyB1c2VkIGludGVybmFsbHkgZm9yIGJsb2NrIGxpbmtpbmcgYW5kIE9TUiBlbnRyeS4g
SXQgaXMgbW9zdGx5IG1lYW5pbmdsZXNzCiAgICAgLy8gZm9yIG90aGVyIHB1cnBvc2VzIGR1ZSB0
byBpbmxpbmluZy4KICAgICB1bnNpZ25lZCBieXRlY29kZUJlZ2luOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDE3
MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsMTQgKzE3OCwyMCBAQCBwcml2YXRlOgogICAgICAgICBO
b2RlKiBjYWxsVGFyZ2V0LCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCwgQ2FsbExp
bmtTdGF0dXMpOwogICAgIHZvaWQgaGFuZGxlQ2FsbChpbnQgcmVzdWx0LCBOb2RlVHlwZSBvcCwg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplLCBpbnQgY2Fs
bGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCk7CiAgICAgdm9pZCBoYW5kbGVD
YWxsKEluc3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3AsIENvZGVTcGVjaWFsaXphdGlvbktpbmQp
OwotICAgIHZvaWQgZW1pdEZ1bmN0aW9uQ2hlY2tzKGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgTm9k
ZSogY2FsbFRhcmdldCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
KTsKKyAgICB2b2lkIGVtaXRGdW5jdGlvbkNoZWNrcyhDYWxsVmFyaWFudCwgTm9kZSogY2FsbFRh
cmdldCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICB2
b2lkIHVuZG9GdW5jdGlvbkNoZWNrcyhDYWxsVmFyaWFudCk7CiAgICAgdm9pZCBlbWl0QXJndW1l
bnRQaGFudG9tcyhpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgdW5zaWduZWQgaW5saW5pbmdDb3N0
KENhbGxWYXJpYW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFs
aXphdGlvbktpbmQpOyAvLyBSZXR1cm4gVUlOVF9NQVggaWYgaXQncyBub3QgYW4gaW5saW5pbmcg
Y2FuZGlkYXRlLiBCeSBjb252ZW50aW9uLCBpbnRyaW5zaWNzIGhhdmUgYSBjb3N0IG9mIDEuCiAg
ICAgLy8gSGFuZGxlIGlubGluaW5nLiBSZXR1cm4gdHJ1ZSBpZiBpdCBzdWNjZWVkZWQsIGZhbHNl
IGlmIHdlIG5lZWQgdG8gcGxhbnQgYSBjYWxsLgotICAgIGJvb2wgaGFuZGxlSW5saW5pbmcoTm9k
ZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBDYWxsTGlua1N0YXR1
cyYsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1
bnNpZ25lZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQpOworICAgIGJvb2wgaGFu
ZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBjb25z
dCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBOb2RlVHlwZSBjYWxsT3AsIElubGlu
ZUNhbGxGcmFtZTo6S2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CisgICAgZW51bSBD
YWxsZXJMaW5rYWJpbGl0eSB7IENhbGxlckRvZXNOb3JtYWxMaW5raW5nLCBDYWxsZXJMaW5rc01h
bnVhbGx5IH07CisgICAgYm9vbCBhdHRlbXB0VG9JbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXRO
b2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwg
aW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBJbmxp
bmVDYWxsRnJhbWU6OktpbmQsIENhbGxlckxpbmthYmlsaXR5LCBTcGVjdWxhdGVkVHlwZSBwcmVk
aWN0aW9uLCB1bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlKTsKKyAgICB2b2lkIGlubGluZUNhbGwo
Tm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyaWFudCwgaW50
IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVk
IG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2luZCwgQ2FsbGVyTGlua2FiaWxpdHkpOwor
ICAgIHZvaWQgY2FuY2VsTGlua2luZ0ZvckJsb2NrKElubGluZVN0YWNrRW50cnkqLCBCYXNpY0Js
b2NrKik7IC8vIE9ubHkgd29ya3Mgd2hlbiB0aGUgZ2l2ZW4gYmxvY2sgaXMgdGhlIGxhc3Qgb25l
IHRvIGhhdmUgYmVlbiBhZGRlZCBmb3IgdGhhdCBpbmxpbmUgc3RhY2sgZW50cnkuCiAgICAgLy8g
SGFuZGxlIGludHJpbnNpYyBmdW5jdGlvbnMuIFJldHVybiB0cnVlIGlmIGl0IHN1Y2NlZWRlZCwg
ZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCiAgICAgYm9vbCBoYW5kbGVJbnRyaW5z
aWMoaW50IHJlc3VsdE9wZXJhbmQsIEludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pOwog
ICAgIGJvb2wgaGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKGludCByZXN1bHRPcGVyYW5kLCBJ
bnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlKTsKLSAgICBib29sIGhhbmRsZUNvbnN0YW50SW50
ZXJuYWxGdW5jdGlvbihpbnQgcmVzdWx0T3BlcmFuZCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCBy
ZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0aW9uLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICBib29sIGhhbmRs
ZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihpbnQgcmVzdWx0T3BlcmFuZCwgSW50ZXJuYWxGdW5j
dGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICBOb2RlKiBoYW5kbGVQdXRCeU9mZnNldChO
b2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgTm9kZSogdmFs
dWUpOwogICAgIE5vZGUqIGhhbmRsZUdldEJ5T2Zmc2V0KFNwZWN1bGF0ZWRUeXBlLCBOb2RlKiBi
YXNlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBQcm9w
ZXJ0eU9mZnNldCwgTm9kZVR5cGUgb3AgPSBHZXRCeU9mZnNldCk7CiAgICAgdm9pZCBoYW5kbGVH
ZXRCeUlkKApAQCAtNjM3LDYgKzY0MywxMyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CisgICAgCisgICAgdm9pZCByZW1vdmVMYXN0Tm9kZUZyb21H
cmFwaChOb2RlVHlwZSBleHBlY3RlZE5vZGVUeXBlKQorICAgIHsKKyAgICAgICAgTm9kZSogbm9k
ZSA9IG1fY3VycmVudEJsb2NrLT50YWtlTGFzdCgpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChu
b2RlLT5vcCgpID09IGV4cGVjdGVkTm9kZVR5cGUpOworICAgICAgICBtX2dyYXBoLm1fYWxsb2Nh
dG9yLmZyZWUobm9kZSk7CisgICAgfQogCiAgICAgdm9pZCBhZGRWYXJBcmdDaGlsZChOb2RlKiBj
aGlsZCkKICAgICB7CkBAIC02NDUsNyArNjU4LDcgQEAgcHJpdmF0ZToKICAgICB9CiAgICAgCiAg
ICAgTm9kZSogYWRkQ2FsbFdpdGhvdXRTZXR0aW5nUmVzdWx0KAotICAgICAgICBOb2RlVHlwZSBv
cCwgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCwKKyAgICAg
ICAgTm9kZVR5cGUgb3AsIE9wSW5mbyBvcEluZm8sIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50
LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24p
CiAgICAgewogICAgICAgICBhZGRWYXJBcmdDaGlsZChjYWxsZWUpOwpAQCAtNjU3LDE1ICs2NzAs
MTUgQEAgcHJpdmF0ZToKICAgICAgICAgZm9yIChpbnQgaSA9IDAgKyBkdW1teVRoaXNBcmd1bWVu
dDsgaSA8IGFyZ0NvdW50OyArK2kpCiAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQodmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSwgcmVnaXN0ZXJPZmZzZXQpKSk7CiAKLSAgICAgICAg
cmV0dXJuIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBvcCwgT3BJbmZvKDApLCBPcEluZm8ocHJl
ZGljdGlvbikpOworICAgICAgICByZXR1cm4gYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIG9wLCBv
cEluZm8sIE9wSW5mbyhwcmVkaWN0aW9uKSk7CiAgICAgfQogICAgIAogICAgIE5vZGUqIGFkZENh
bGwoCi0gICAgICAgIGludCByZXN1bHQsIE5vZGVUeXBlIG9wLCBOb2RlKiBjYWxsZWUsIGludCBh
cmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAorICAgICAgICBpbnQgcmVzdWx0LCBOb2RlVHlw
ZSBvcCwgT3BJbmZvIG9wSW5mbywgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdp
c3Rlck9mZnNldCwKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKICAgICB7CiAg
ICAgICAgIE5vZGUqIGNhbGwgPSBhZGRDYWxsV2l0aG91dFNldHRpbmdSZXN1bHQoCi0gICAgICAg
ICAgICBvcCwgY2FsbGVlLCBhcmdDb3VudCwgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwor
ICAgICAgICAgICAgb3AsIG9wSW5mbywgY2FsbGVlLCBhcmdDb3VudCwgcmVnaXN0ZXJPZmZzZXQs
IHByZWRpY3Rpb24pOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0UmVnKHJlc3VsdCk7
CiAgICAgICAgIGlmIChyZXN1bHRSZWcuaXNWYWxpZCgpKQogICAgICAgICAgICAgc2V0KFZpcnR1
YWxSZWdpc3RlcihyZXN1bHQpLCBjYWxsKTsKQEAgLTg3MSw4ICs4ODQsNyBAQCBwcml2YXRlOgog
ICAgICAgICBWZWN0b3I8VW5saW5rZWRCbG9jaz4gbV91bmxpbmtlZEJsb2NrczsKICAgICAgICAg
CiAgICAgICAgIC8vIFBvdGVudGlhbCBibG9jayBsaW5raW5nIHRhcmdldHMuIE11c3QgYmUgc29y
dGVkIGJ5IGJ5dGVjb2RlQmVnaW4sIGFuZAotICAgICAgICAvLyBjYW5ub3QgaGF2ZSB0d28gYmxv
Y2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRlY29kZUJlZ2luLiBGb3IgdGhpcyB2ZXJ5Ci0gICAg
ICAgIC8vIHJlYXNvbiwgdGhpcyBpcyBub3QgZXF1aXZhbGVudCB0byAKKyAgICAgICAgLy8gY2Fu
bm90IGhhdmUgdHdvIGJsb2NrcyB0aGF0IGhhdmUgdGhlIHNhbWUgYnl0ZWNvZGVCZWdpbi4KICAg
ICAgICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBtX2Jsb2NrTGlua2luZ1RhcmdldHM7CiAgICAgICAg
IAogICAgICAgICAvLyBJZiB0aGUgY2FsbHNpdGUncyBiYXNpYyBibG9jayB3YXMgc3BsaXQgaW50
byB0d28sIHRoZW4gdGhpcyB3aWxsIGJlCkBAIC0xMDI4LDUzICsxMDQwLDI3IEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoCiAgICAgICAgIC8vIE9kZGx5LCB0aGlzIGNvbmZsYXRl
cyBjYWxscyB0aGF0IGhhdmVuJ3QgZXhlY3V0ZWQgd2l0aCBjYWxscyB0aGF0IGJlaGF2ZWQgc3Vm
ZmljaWVudGx5IHBvbHltb3JwaGljYWxseQogICAgICAgICAvLyB0aGF0IHdlIGNhbm5vdCBvcHRp
bWl6ZSB0aGVtLgogICAgICAgICAKLSAgICAgICAgYWRkQ2FsbChyZXN1bHQsIG9wLCBjYWxsVGFy
Z2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rp
b24pOworICAgICAgICBhZGRDYWxsKHJlc3VsdCwgb3AsIE9wSW5mbygpLCBjYWxsVGFyZ2V0LCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIHVuc2lnbmVkIG5leHRPZmZzZXQgPSBt
X2N1cnJlbnRJbmRleCArIGluc3RydWN0aW9uU2l6ZTsKKyAgICAKKyAgICBPcEluZm8gY2FsbE9w
SW5mbzsKIAotICAgIGlmIChJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxMaW5rU3Rh
dHVzLmludGVybmFsRnVuY3Rpb24oKSkgewotICAgICAgICBpZiAoaGFuZGxlQ29uc3RhbnRJbnRl
cm5hbEZ1bmN0aW9uKHJlc3VsdCwgZnVuY3Rpb24sIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbiwgc3BlY2lhbGl6YXRpb25LaW5kKSkgewotICAg
ICAgICAgICAgLy8gVGhpcyBwaGFudG9taW5nIGhhcyB0byBiZSAqYWZ0ZXIqIHRoZSBjb2RlIGZv
ciB0aGUgaW50cmluc2ljLCB0byBzaWduaWZ5IHRoYXQKLSAgICAgICAgICAgIC8vIHRoZSBpbnB1
dHMgbXVzdCBiZSBrZXB0IGFsaXZlIHdoYXRldmVyIGV4aXRzIHRoZSBpbnRyaW5zaWMgbWF5IGRv
LgotICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0KTsKLSAgICAgICAg
ICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gQ2FuIG9ubHkgaGFuZGxlIHRoaXMgdXNpbmcg
dGhlIGdlbmVyaWMgY2FsbCBoYW5kbGVyLgotICAgICAgICBhZGRDYWxsKHJlc3VsdCwgb3AsIGNh
bGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJl
ZGljdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgICAgIAotICAgIEludHJpbnNp
YyBpbnRyaW5zaWMgPSBjYWxsTGlua1N0YXR1cy5pbnRyaW5zaWNGb3Ioc3BlY2lhbGl6YXRpb25L
aW5kKTsKLQotICAgIEpTRnVuY3Rpb24qIGtub3duRnVuY3Rpb24gPSBudWxscHRyOwotICAgIGlm
IChpbnRyaW5zaWMgIT0gTm9JbnRyaW5zaWMpIHsKLSAgICAgICAgZW1pdEZ1bmN0aW9uQ2hlY2tz
KGNhbGxMaW5rU3RhdHVzLCBjYWxsVGFyZ2V0LCByZWdpc3Rlck9mZnNldCwgc3BlY2lhbGl6YXRp
b25LaW5kKTsKLSAgICAgICAgICAgIAotICAgICAgICBpZiAoaGFuZGxlSW50cmluc2ljKHJlc3Vs
dCwgaW50cmluc2ljLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IHByZWRpY3Rpb24pKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIHBoYW50b21pbmcgaGFzIHRvIGJl
ICphZnRlciogdGhlIGNvZGUgZm9yIHRoZSBpbnRyaW5zaWMsIHRvIHNpZ25pZnkgdGhhdAotICAg
ICAgICAgICAgLy8gdGhlIGlucHV0cyBtdXN0IGJlIGtlcHQgYWxpdmUgd2hhdGV2ZXIgZXhpdHMg
dGhlIGludHJpbnNpYyBtYXkgZG8uCi0gICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNh
bGxUYXJnZXQpOwotICAgICAgICAgICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZz
ZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQpOwotICAg
ICAgICAgICAgaWYgKG1fZ3JhcGguY29tcGlsYXRpb24oKSkKLSAgICAgICAgICAgICAgICBtX2dy
YXBoLmNvbXBpbGF0aW9uKCktPm5vdGljZUlubGluZWRDYWxsKCk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGhhbmRsZUlubGluaW5nKGNhbGxUYXJnZXQs
IHJlc3VsdCwgY2FsbExpbmtTdGF0dXMsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgbmV4dE9mZnNldCwga2luZCkpIHsKKyAgICBpZiAoaGFuZGxlSW5saW5pbmco
Y2FsbFRhcmdldCwgcmVzdWx0LCBjYWxsTGlua1N0YXR1cywgcmVnaXN0ZXJPZmZzZXQsIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zmc2V0LCBvcCwga2luZCwgcHJlZGljdGlvbikp
IHsKICAgICAgICAgaWYgKG1fZ3JhcGguY29tcGlsYXRpb24oKSkKICAgICAgICAgICAgIG1fZ3Jh
cGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZENhbGwoKTsKICAgICAgICAgcmV0dXJuOwog
I2lmIEVOQUJMRShGVExfTkFUSVZFX0NBTExfSU5MSU5JTkcpCi0gICAgfSBlbHNlIGlmIChpc0ZU
TChtX2dyYXBoLm1fcGxhbi5tb2RlKSAmJiBPcHRpb25zOjpvcHRpbWl6ZU5hdGl2ZUNhbGxzKCkp
IHsKLSAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsTGlua1N0YXR1cy5mdW5jdGlv
bigpOworICAgIH0gZWxzZSBpZiAoaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkgJiYgT3B0aW9u
czo6b3B0aW1pemVOYXRpdmVDYWxscygpICYmIGNhbGxMaW5rU3RhdHVzLnNpemUoKSA9PSAxICYm
ICFjYWxsTGlua1N0YXR1cy5jb3VsZFRha2VTbG93UGF0aCgpKSB7CisgICAgICAgIENhbGxWYXJp
YW50IGNhbGxlZSA9IGNhbGxMaW5rU3RhdHVzWzBdLmNhbGxlZSgpOworICAgICAgICBKU0Z1bmN0
aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS5mdW5jdGlvbigpOwogICAgICAgICBpZiAoZnVuY3Rpb24g
JiYgZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkpIHsKLSAgICAgICAgICAgIGVtaXRGdW5jdGlv
bkNoZWNrcyhjYWxsTGlua1N0YXR1cywgY2FsbFRhcmdldCwgcmVnaXN0ZXJPZmZzZXQsIHNwZWNp
YWxpemF0aW9uS2luZCk7Ci0gICAgICAgICAgICBrbm93bkZ1bmN0aW9uID0gZnVuY3Rpb247Cisg
ICAgICAgICAgICBlbWl0RnVuY3Rpb25DaGVja3MoY2FsbGVlLCBjYWxsVGFyZ2V0LCByZWdpc3Rl
ck9mZnNldCwgc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICAgICAgICAgIGNhbGxPcEluZm8gPSBP
cEluZm8obV9ncmFwaC5mcmVlemUoZnVuY3Rpb24pKTsKIAotICAgICAgICAgICAgaWYgKG9wID09
IENhbGwpIAorICAgICAgICAgICAgaWYgKG9wID09IENhbGwpCiAgICAgICAgICAgICAgICAgb3Ag
PSBOYXRpdmVDYWxsOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJU
KG9wID09IENvbnN0cnVjdCk7CkBAIC0xMDgzLDEzICsxMDY5LDExIEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUNhbGwoCiAgICAgICAgIH0KICNlbmRpZgogICAgIH0KLSAgICBOb2RlKiBj
YWxsID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwotCi0gICAgaWYgKGtub3duRnVu
Y3Rpb24pIAotICAgICAgICBjYWxsLT5naXZlS25vd25GdW5jdGlvbihrbm93bkZ1bmN0aW9uKTsK
KyAgICAKKyAgICBhZGRDYWxsKHJlc3VsdCwgb3AsIGNhbGxPcEluZm8sIGNhbGxUYXJnZXQsIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CiB9
CiAKLXZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRGdW5jdGlvbkNoZWNrcyhjb25zdCBDYWxsTGlu
a1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsIE5vZGUqIGNhbGxUYXJnZXQsIGludCByZWdpc3Rlck9m
ZnNldCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQordm9pZCBCeXRlQ29kZVBhcnNlcjo6
ZW1pdEZ1bmN0aW9uQ2hlY2tzKENhbGxWYXJpYW50IGNhbGxlZSwgTm9kZSogY2FsbFRhcmdldCwg
aW50IHJlZ2lzdGVyT2Zmc2V0LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAg
Tm9kZSogdGhpc0FyZ3VtZW50OwogICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKQpAQCAtMTA5
Nyw1MCArMTA4MSw0MCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0RnVuY3Rpb25DaGVja3Mo
CiAgICAgZWxzZQogICAgICAgICB0aGlzQXJndW1lbnQgPSAwOwogCi0gICAgaWYgKGNhbGxMaW5r
U3RhdHVzLmlzUHJvdmVkKCkpIHsKLSAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFy
Z2V0LCB0aGlzQXJndW1lbnQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIEFT
U0VSVChjYWxsTGlua1N0YXR1cy5jYW5PcHRpbWl6ZSgpKTsKLSAgICAKLSAgICBpZiAoSlNGdW5j
dGlvbiogZnVuY3Rpb24gPSBjYWxsTGlua1N0YXR1cy5mdW5jdGlvbigpKQotICAgICAgICBhZGRU
b0dyYXBoKENoZWNrRnVuY3Rpb24sIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShmdW5jdGlvbikpLCBj
YWxsVGFyZ2V0LCB0aGlzQXJndW1lbnQpOworICAgIGlmICghY2FsbGVlLmlzQ2xvc3VyZUNhbGwo
KSkKKyAgICAgICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShj
YWxsZWUuZnVuY3Rpb24oKSkpLCBjYWxsVGFyZ2V0LCB0aGlzQXJndW1lbnQpOwogICAgIGVsc2Ug
ewotICAgICAgICBBU1NFUlQoY2FsbExpbmtTdGF0dXMuZXhlY3V0YWJsZSgpKTsKLSAgICAgICAg
Ci0gICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tFeGVjdXRhYmxlLCBPcEluZm8oY2FsbExpbmtTdGF0
dXMuZXhlY3V0YWJsZSgpKSwgY2FsbFRhcmdldCwgdGhpc0FyZ3VtZW50KTsKKyAgICAgICAgQVNT
RVJUKGNhbGxlZS5leGVjdXRhYmxlKCkpOworICAgICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwg
T3BJbmZvKGNhbGxlZS5leGVjdXRhYmxlKCkpLCBhZGRUb0dyYXBoKEdldEV4ZWN1dGFibGUsIGNh
bGxUYXJnZXQpLCB0aGlzQXJndW1lbnQpOwogICAgIH0KIH0KIAordm9pZCBCeXRlQ29kZVBhcnNl
cjo6dW5kb0Z1bmN0aW9uQ2hlY2tzKENhbGxWYXJpYW50IGNhbGxlZSkKK3sKKyAgICByZW1vdmVM
YXN0Tm9kZUZyb21HcmFwaChDaGVja0NlbGwpOworICAgIGlmIChjYWxsZWUuaXNDbG9zdXJlQ2Fs
bCgpKQorICAgICAgICByZW1vdmVMYXN0Tm9kZUZyb21HcmFwaChHZXRFeGVjdXRhYmxlKTsKK30K
Kwogdm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdEFyZ3VtZW50UGhhbnRvbXMoaW50IHJlZ2lzdGVy
T2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlv
bktpbmQga2luZCkKIHsKICAgICBmb3IgKGludCBpID0ga2luZCA9PSBDb2RlRm9yQ2FsbCA/IDAg
OiAxOyBpIDwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsraSkKICAgICAgICAgYWRkVG9H
cmFwaChQaGFudG9tLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSwgcmVnaXN0ZXJP
ZmZzZXQpKSk7CiB9CiAKLWJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUq
IGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgQ2FsbExpbmtTdGF0dXMm
IGNhbGxMaW5rU3RhdHVzLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtp
bmQpCit1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNh
bGxlZSwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQpCiB7CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogICAg
IAotICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5l
Q2FsbEZyYW1lOjpzcGVjaWFsaXphdGlvbktpbmRGb3Ioa2luZCk7Ci0gICAgCiAgICAgaWYgKHZl
cmJvc2UpCi0gICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nIGlubGluaW5nICIsIGNhbGxMaW5r
U3RhdHVzLCAiIGludG8gIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CisgICAgICAgIGRh
dGFMb2coIkNvbnNpZGVyaW5nIGlubGluaW5nICIsIGNhbGxlZSwgIiBpbnRvICIsIGN1cnJlbnRD
b2RlT3JpZ2luKCksICJcbiIpOwogICAgIAotICAgIC8vIEZpcnN0LCB0aGUgcmVhbGx5IHNpbXBs
ZSBjaGVja3M6IGRvIHdlIGhhdmUgYW4gYWN0dWFsIEpTIGZ1bmN0aW9uPwotICAgIGlmICghY2Fs
bExpbmtTdGF0dXMuZXhlY3V0YWJsZSgpKSB7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVj
dXRhYmxlID0gY2FsbGVlLmZ1bmN0aW9uRXhlY3V0YWJsZSgpOworICAgIGlmICghZXhlY3V0YWJs
ZSkgewogICAgICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWls
aW5nIGJlY2F1c2UgdGhlcmUgaXMgbm8gZXhlY3V0YWJsZS5cbiIpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIHRoZXJlIGlz
IG5vIGZ1bmN0aW9uIGV4ZWN1dGFibGUuIik7CisgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAg
ICB9Ci0gICAgaWYgKGNhbGxMaW5rU3RhdHVzLmV4ZWN1dGFibGUoKS0+aXNIb3N0RnVuY3Rpb24o
KSkgewotICAgICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWls
aW5nIGJlY2F1c2UgaXQncyBhIGhvc3QgZnVuY3Rpb24uXG4iKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLSAgICAKLSAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBq
c0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oY2FsbExpbmtTdGF0dXMuZXhlY3V0YWJsZSgpKTsK
ICAgICAKICAgICAvLyBEb2VzIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHdlJ3JlIHBhc3Npbmcg
bWF0Y2ggdGhlIGFyaXR5IG9mIHRoZSB0YXJnZXQ/IFdlIGN1cnJlbnRseQogICAgIC8vIGlubGlu
ZSBvbmx5IGlmIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHBhc3NlZCBpcyBncmVhdGVyIHRoYW4g
b3IgZXF1YWwgdG8gdGhlIG51bWJlcgpAQCAtMTE0OCw3ICsxMTIyLDcgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KGV4
ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCkpICsgMSA+IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZh
aWxpbmcgYmVjYXVzZSBvZiBhcml0eSBtaXNtYXRjaC5cbiIpOwotICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CiAgICAgCiAgICAgLy8gRG8gd2Ug
aGF2ZSBhIGNvZGUgYmxvY2ssIGFuZCBkb2VzIHRoZSBjb2RlIGJsb2NrJ3Mgc2l6ZSBtYXRjaCB0
aGUgaGV1cmlzdGljcy9yZXF1aXJlbWVudHMgZm9yCkBAIC0xMTU3LDE4ICsxMTMxLDE4IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAvLyBpZiB3ZSBoYWQg
YSBzdGF0aWMgcHJvb2Ygb2Ygd2hhdCB3YXMgYmVpbmcgY2FsbGVkOyB0aGlzIG1pZ2h0IGhhcHBl
biBmb3IgZXhhbXBsZSBpZiB5b3UgY2FsbCBhCiAgICAgLy8gZ2xvYmFsIGZ1bmN0aW9uLCB3aGVy
ZSB3YXRjaHBvaW50aW5nIGdpdmVzIHVzIHN0YXRpYyBpbmZvcm1hdGlvbi4gT3ZlcmFsbCwgaXQn
cyBhIHJhcmUgY2FzZQogICAgIC8vIGJlY2F1c2Ugd2UgZXhwZWN0IHRoYXQgYW55IGhvdCBjYWxs
ZWVzIHdvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNvbXBpbGVkLgotICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gZXhlY3V0YWJsZS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Ioc3BlY2lhbGl6YXRpb25L
aW5kKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmJhc2VsaW5lQ29k
ZUJsb2NrRm9yKGtpbmQpOwogICAgIGlmICghY29kZUJsb2NrKSB7CiAgICAgICAgIGlmICh2ZXJi
b3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSBubyBjb2RlIGJs
b2NrIGF2YWlsYWJsZS5cbiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVy
biBVSU5UX01BWDsKICAgICB9CiAgICAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbCA9
IGlubGluZUZ1bmN0aW9uRm9yQ2FwYWJpbGl0eUxldmVsKAotICAgICAgICBjb2RlQmxvY2ssIHNw
ZWNpYWxpemF0aW9uS2luZCwgY2FsbExpbmtTdGF0dXMuaXNDbG9zdXJlQ2FsbCgpKTsKKyAgICAg
ICAgY29kZUJsb2NrLCBraW5kLCBjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKTsKICAgICBpZiAoIWNh
bklubGluZShjYXBhYmlsaXR5TGV2ZWwpKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAg
ICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSB0aGUgZnVuY3Rpb24gaXMgbm90IGlu
bGluZWFibGUuXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gVUlO
VF9NQVg7CiAgICAgfQogICAgIAogICAgIC8vIENoZWNrIGlmIHRoZSBjYWxsZXIgaXMgYWxyZWFk
eSB0b28gbGFyZ2UuIFdlIGRvIHRoaXMgY2hlY2sgaGVyZSBiZWNhdXNlIHRoYXQncyBqdXN0CkBA
IC0xMTc4LDcgKzExNTIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhO
b2RlCiAgICAgICAgIGNvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsK
ICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBi
ZWNhdXNlIHRoZSBjYWxsZXIgaXMgdG9vIGxhcmdlLlxuIik7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgIH0KICAgICAKICAgICAvLyBGSVhNRTog
dGhpcyBzaG91bGQgYmUgYmV0dGVyIGF0IHByZWRpY3RpbmcgaG93IG11Y2ggYmxvYXQgd2Ugd2ls
bCBpbnRyb2R1Y2UgYnkgaW5saW5pbmcKQEAgLTExOTcsNyArMTE3MSw3IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAgICAgaWYgKGRlcHRoID49IE9wdGlv
bnM6Om1heGltdW1JbmxpbmluZ0RlcHRoKCkpIHsKICAgICAgICAgICAgIGlmICh2ZXJib3NlKQog
ICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgZGVwdGggZXhjZWVk
ZWQuXG4iKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBV
SU5UX01BWDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGVudHJ5LT5leGVjdXRh
YmxlKCkgPT0gZXhlY3V0YWJsZSkgewpAQCAtMTIwNSwxOSArMTE3OSwyNiBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgICAgICAgICBpZiAocmVjdXJzaW9u
ID49IE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ1JlY3Vyc2lvbigpKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5n
IGJlY2F1c2UgcmVjdXJzaW9uIGRldGVjdGVkLlxuIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KICAgICAKICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgZGF0YUxv
ZygiICAgIENvbW1pdHRpbmcgdG8gaW5saW5pbmcuXG4iKTsKKyAgICAgICAgZGF0YUxvZygiICAg
IElubGluaW5nIHNob3VsZCBiZSBwb3NzaWJsZS5cbiIpOworICAgIAorICAgIC8vIEl0IG1pZ2h0
IGJlIHBvc3NpYmxlIHRvIGlubGluZS4KKyAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlv
bkNvdW50KCk7Cit9CisKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2Fs
bFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyaWFudCBjYWxsZWUsIGludCBy
ZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBu
ZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgQ2FsbGVyTGlua2FiaWxpdHkg
Y2FsbGVyTGlua2FiaWxpdHkpCit7CisgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFs
aXphdGlvbktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5k
KTsKICAgICAKLSAgICAvLyBOb3cgd2Uga25vdyB3aXRob3V0IGEgZG91YnQgdGhhdCB3ZSBhcmUg
Y29tbWl0dGVkIHRvIGlubGluaW5nLiBTbyBiZWdpbiB0aGUgcHJvY2VzcwotICAgIC8vIGJ5IGNo
ZWNraW5nIHRoZSBjYWxsZWUgKGlmIG5lY2Vzc2FyeSkgYW5kIG1ha2luZyBzdXJlIHRoYXQgYXJn
dW1lbnRzIGFuZCB0aGUgY2FsbGVlCi0gICAgLy8gYXJlIGZsdXNoZWQuCi0gICAgZW1pdEZ1bmN0
aW9uQ2hlY2tzKGNhbGxMaW5rU3RhdHVzLCBjYWxsVGFyZ2V0Tm9kZSwgcmVnaXN0ZXJPZmZzZXQs
IHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgQVNTRVJUKGlubGluaW5nQ29zdChjYWxsZWUsIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQpICE9IFVJTlRfTUFY
KTsKICAgICAKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxlZS5mdW5jdGlvbkV4ZWN1
dGFibGUoKS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKKwogICAg
IC8vIEZJWE1FOiBEb24ndCBmbHVzaCBjb25zdGFudHMhCiAgICAgCiAgICAgaW50IGlubGluZUNh
bGxGcmFtZVN0YXJ0ID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKFZpcnR1YWxSZWdp
c3RlcihyZWdpc3Rlck9mZnNldCkpLm9mZnNldCgpICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVy
U2l6ZTsKQEAgLTEyMzMsNyArMTIxNCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
bGluaW5nKE5vZGUKICAgICAgICAgcmVzdWx0UmVnID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBP
cGVyYW5kKHJlc3VsdFJlZyk7CiAgICAgCiAgICAgSW5saW5lU3RhY2tFbnRyeSBpbmxpbmVTdGFj
a0VudHJ5KAotICAgICAgICB0aGlzLCBjb2RlQmxvY2ssIGNvZGVCbG9jaywgbV9ncmFwaC5sYXN0
QmxvY2soKSwgY2FsbExpbmtTdGF0dXMuZnVuY3Rpb24oKSwgcmVzdWx0UmVnLAorICAgICAgICB0
aGlzLCBjb2RlQmxvY2ssIGNvZGVCbG9jaywgbV9ncmFwaC5sYXN0QmxvY2soKSwgY2FsbGVlLmZ1
bmN0aW9uKCksIHJlc3VsdFJlZywKICAgICAgICAgKFZpcnR1YWxSZWdpc3RlcilpbmxpbmVDYWxs
RnJhbWVTdGFydCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGtpbmQpOwogICAgIAogICAg
IC8vIFRoaXMgaXMgd2hlcmUgdGhlIGFjdHVhbCBpbmxpbmluZyByZWFsbHkgaGFwcGVucy4KQEAg
LTEyNDcsOCArMTIyOCw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5v
ZGUKICAgICAKICAgICBSRUxFQVNFX0FTU0VSVCgKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+
bV9pbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwKLSAgICAgICAgPT0gY2FsbExpbmtTdGF0
dXMuaXNDbG9zdXJlQ2FsbCgpKTsKLSAgICBpZiAoY2FsbExpbmtTdGF0dXMuaXNDbG9zdXJlQ2Fs
bCgpKSB7CisgICAgICAgID09IGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpOworICAgIGlmIChjYWxs
ZWUuaXNDbG9zdXJlQ2FsbCgpKSB7CiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogY2FsbGVl
VmFyaWFibGUgPQogICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihKU1N0YWNrOjpDYWxs
ZWUpLCBjYWxsVGFyZ2V0Tm9kZSwgSW1tZWRpYXRlTmFrZWRTZXQpLT52YXJpYWJsZUFjY2Vzc0Rh
dGEoKTsKICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBzY29wZVZhcmlhYmxlID0KQEAgLTEy
NzYsMjAgKzEyNTcsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2Rl
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5Lm1fY2Fs
bHNpdGVCbG9ja0hlYWQtPmlzTGlua2VkKTsKICAgICAgICAgCi0gICAgICAgIC8vIEl0J3MgcG9z
c2libGUgdGhhdCB0aGUgY2FsbHNpdGUgYmxvY2sgaGVhZCBpcyBub3Qgb3duZWQgYnkgdGhlIGNh
bGxlci4KLSAgICAgICAgaWYgKCFpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLT5tX3VubGlua2Vk
QmxvY2tzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgLy8gSXQncyBkZWZpbml0ZWx5IG93bmVk
IGJ5IHRoZSBjYWxsZXIsIGJlY2F1c2UgdGhlIGNhbGxlciBjcmVhdGVkIG5ldyBibG9ja3MuCi0g
ICAgICAgICAgICAvLyBBc3NlcnQgdGhhdCB0aGlzIGFsbCBhZGRzIHVwLgotICAgICAgICAgICAg
QVNTRVJUKGlubGluZVN0YWNrRW50cnkubV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MubGFzdCgp
Lm1fYmxvY2sgPT0gaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxzaXRlQmxvY2tIZWFkKTsKLSAgICAg
ICAgICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tz
Lmxhc3QoKS5tX25lZWRzTm9ybWFsTGlua2luZyk7Ci0gICAgICAgICAgICBpbmxpbmVTdGFja0Vu
dHJ5Lm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX25lZWRzTm9ybWFsTGlua2lu
ZyA9IGZhbHNlOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gSXQncyBkZWZpbml0
ZWx5IG5vdCBvd25lZCBieSB0aGUgY2FsbGVyLiBUZWxsIHRoZSBjYWxsZXIgdGhhdCBoZSBkb2Vz
IG5vdAotICAgICAgICAgICAgLy8gbmVlZCB0byBsaW5rIGhpcyBjYWxsc2l0ZSBibG9jayBoZWFk
LCBiZWNhdXNlIHdlIGRpZCBpdCBmb3IgaGltLgotICAgICAgICAgICAgQVNTRVJUKGlubGluZVN0
YWNrRW50cnkubV9jYWxsZXItPm1fY2FsbHNpdGVCbG9ja0hlYWROZWVkc0xpbmtpbmcpOwotICAg
ICAgICAgICAgQVNTRVJUKGlubGluZVN0YWNrRW50cnkubV9jYWxsZXItPm1fY2FsbHNpdGVCbG9j
a0hlYWQgPT0gaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxzaXRlQmxvY2tIZWFkKTsKLSAgICAgICAg
ICAgIGlubGluZVN0YWNrRW50cnkubV9jYWxsZXItPm1fY2FsbHNpdGVCbG9ja0hlYWROZWVkc0xp
bmtpbmcgPSBmYWxzZTsKLSAgICAgICAgfQorICAgICAgICBpZiAoY2FsbGVyTGlua2FiaWxpdHkg
PT0gQ2FsbGVyRG9lc05vcm1hbExpbmtpbmcpCisgICAgICAgICAgICBjYW5jZWxMaW5raW5nRm9y
QmxvY2soaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlciwgaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxz
aXRlQmxvY2tIZWFkKTsKICAgICAgICAgCiAgICAgICAgIGxpbmtCbG9ja3MoaW5saW5lU3RhY2tF
bnRyeS5tX3VubGlua2VkQmxvY2tzLCBpbmxpbmVTdGFja0VudHJ5Lm1fYmxvY2tMaW5raW5nVGFy
Z2V0cyk7CiAgICAgfSBlbHNlCkBAIC0xMzEyLDEyICsxMjgxLDExIEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
bV9jdXJyZW50QmxvY2sgPSBtX2dyYXBoLmxhc3RCbG9jaygpOwotICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAgICAvLyBJZiB3ZSBnZXQgdG8gdGhp
cyBwb2ludCB0aGVuIGFsbCBibG9ja3MgbXVzdCBlbmQgaW4gc29tZSBzb3J0IG9mIHRlcm1pbmFs
cy4KICAgICBBU1NFUlQobGFzdEJsb2NrLT5sYXN0KCktPmlzVGVybWluYWwoKSk7Ci0gICAgCiAK
ICAgICAvLyBOZWVkIHRvIGNyZWF0ZSBhIG5ldyBiYXNpYyBibG9jayBmb3IgdGhlIGNvbnRpbnVh
dGlvbiBhdCB0aGUgY2FsbGVyLgogICAgIFJlZlB0cjxCYXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0
UmVmKG5ldyBCYXNpY0Jsb2NrKG5leHRPZmZzZXQsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2Fs
cywgUE5hTikpOwpAQCAtMTMzMywyMCArMTMwMSwyMzEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlSW5saW5pbmcoTm9kZQogICAgICAgICBBU1NFUlQoIW5vZGUtPnRhcmdldEJsb2NrKCkp
OwogICAgICAgICBub2RlLT50YXJnZXRCbG9jaygpID0gYmxvY2suZ2V0KCk7CiAgICAgICAgIGlu
bGluZVN0YWNrRW50cnkubV91bmxpbmtlZEJsb2Nrc1tpXS5tX25lZWRzRWFybHlSZXR1cm5MaW5r
aW5nID0gZmFsc2U7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgICAgICBibG9ja1RvTGluay0+
aXNMaW5rZWQgPSB0cnVlOwotI2VuZGlmCisgICAgICAgIGJsb2NrVG9MaW5rLT5kaWRMaW5rKCk7
CiAgICAgfQogICAgIAogICAgIG1fY3VycmVudEJsb2NrID0gYmxvY2suZ2V0KCk7CiAgICAgQVNT
RVJUKG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuaXNF
bXB0eSgpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1Rhcmdl
dHMubGFzdCgpLT5ieXRlY29kZUJlZ2luIDwgbmV4dE9mZnNldCk7CiAgICAgbV9pbmxpbmVTdGFj
a1RvcC0+bV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxv
Y2suZ2V0KCkpKTsKLSAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtp
bmdUYXJnZXRzLmFwcGVuZChibG9jay5nZXQoKSk7CisgICAgaWYgKGNhbGxlckxpbmthYmlsaXR5
ID09IENhbGxlckRvZXNOb3JtYWxMaW5raW5nKQorICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9jay5nZXQoKSk7CiAgICAg
bV9ncmFwaC5hcHBlbmRCbG9jayhibG9jayk7CiAgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOwor
fQorCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpjYW5jZWxMaW5raW5nRm9yQmxvY2soSW5saW5lU3Rh
Y2tFbnRyeSogaW5saW5lU3RhY2tFbnRyeSwgQmFzaWNCbG9jayogYmxvY2spCit7CisgICAgLy8g
SXQncyBwb3NzaWJsZSB0aGF0IHRoZSBjYWxsc2l0ZSBibG9jayBoZWFkIGlzIG5vdCBvd25lZCBi
eSB0aGUgY2FsbGVyLgorICAgIGlmICghaW5saW5lU3RhY2tFbnRyeS0+bV91bmxpbmtlZEJsb2Nr
cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gSXQncyBkZWZpbml0ZWx5IG93bmVkIGJ5IHRoZSBj
YWxsZXIsIGJlY2F1c2UgdGhlIGNhbGxlciBjcmVhdGVkIG5ldyBibG9ja3MuCisgICAgICAgIC8v
IEFzc2VydCB0aGF0IHRoaXMgYWxsIGFkZHMgdXAuCisgICAgICAgIEFTU0VSVChpbmxpbmVTdGFj
a0VudHJ5LT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX2Jsb2NrID09IGJsb2NrKTsKKyAgICAg
ICAgQVNTRVJUKGlubGluZVN0YWNrRW50cnktPm1fdW5saW5rZWRCbG9ja3MubGFzdCgpLm1fbmVl
ZHNOb3JtYWxMaW5raW5nKTsKKyAgICAgICAgaW5saW5lU3RhY2tFbnRyeS0+bV91bmxpbmtlZEJs
b2Nrcy5sYXN0KCkubV9uZWVkc05vcm1hbExpbmtpbmcgPSBmYWxzZTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICAvLyBJdCdzIGRlZmluaXRlbHkgbm90IG93bmVkIGJ5IHRoZSBjYWxsZXIuIFRlbGwg
dGhlIGNhbGxlciB0aGF0IGhlIGRvZXMgbm90CisgICAgICAgIC8vIG5lZWQgdG8gbGluayBoaXMg
Y2FsbHNpdGUgYmxvY2sgaGVhZCwgYmVjYXVzZSB3ZSBkaWQgaXQgZm9yIGhpbS4KKyAgICAgICAg
QVNTRVJUKGlubGluZVN0YWNrRW50cnktPm1fY2FsbHNpdGVCbG9ja0hlYWROZWVkc0xpbmtpbmcp
OworICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS0+bV9jYWxsc2l0ZUJsb2NrSGVhZCA9
PSBibG9jayk7CisgICAgICAgIGlubGluZVN0YWNrRW50cnktPm1fY2FsbHNpdGVCbG9ja0hlYWRO
ZWVkc0xpbmtpbmcgPSBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmF0
dGVtcHRUb0lubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5k
LCBDYWxsVmFyaWFudCBjYWxsZWUsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6Oktp
bmQga2luZCwgQ2FsbGVyTGlua2FiaWxpdHkgY2FsbGVyTGlua2FiaWxpdHksIFNwZWN1bGF0ZWRU
eXBlIHByZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxpbmluZ0JhbGFuY2UpCit7CisgICAgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNw
ZWNpYWxpemF0aW9uS2luZEZvcihraW5kKTsKKyAgICAKKyAgICBpZiAoIWlubGluaW5nQmFsYW5j
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmIChJbnRlcm5hbEZ1bmN0aW9u
KiBmdW5jdGlvbiA9IGNhbGxlZS5pbnRlcm5hbEZ1bmN0aW9uKCkpIHsKKyAgICAgICAgaWYgKGhh
bmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihyZXN1bHRPcGVyYW5kLCBmdW5jdGlvbiwgcmVn
aXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktp
bmQpKSB7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXROb2RlKTsK
KyAgICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICAgICAgICAgIGlu
bGluaW5nQmFsYW5jZS0tOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBJbnRyaW5zaWMgaW50cmluc2lj
ID0gY2FsbGVlLmludHJpbnNpY0ZvcihzcGVjaWFsaXphdGlvbktpbmQpOworICAgIGlmIChpbnRy
aW5zaWMgIT0gTm9JbnRyaW5zaWMpIHsKKyAgICAgICAgaWYgKGhhbmRsZUludHJpbnNpYyhyZXN1
bHRPcGVyYW5kLCBpbnRyaW5zaWMsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgcHJlZGljdGlvbikpIHsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwg
Y2FsbFRhcmdldE5vZGUpOworICAgICAgICAgICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0
ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQp
OworICAgICAgICAgICAgaW5saW5pbmdCYWxhbmNlLS07CisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHVu
c2lnbmVkIG15SW5saW5pbmdDb3N0ID0gaW5saW5pbmdDb3N0KGNhbGxlZSwgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgaWYgKG15SW5saW5pbmdD
b3N0ID4gaW5saW5pbmdCYWxhbmNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAg
aW5saW5lQ2FsbChjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0T3BlcmFuZCwgY2FsbGVlLCByZWdpc3Rl
ck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQsIGtpbmQsIGNh
bGxlckxpbmthYmlsaXR5KTsKKyAgICBpbmxpbmluZ0JhbGFuY2UgLT0gbXlJbmxpbmluZ0Nvc3Q7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGlu
aW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgQ2FsbExp
bmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgTm9kZVR5cGUgY2FsbE9w
LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikK
K3sKKyAgICBkYXRhTG9nKCJBdHRlbXB0aW5nIHRvIGRvIGlubGluaW5nLCBzdGF0dXM6ICIsIGNh
bGxMaW5rU3RhdHVzLCAiXG4iKTsKKyAgICAKKyAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNw
ZWNpYWxpemF0aW9uS2luZCA9IElubGluZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9y
KGtpbmQpOworICAgIAorICAgIGlmICghY2FsbExpbmtTdGF0dXMuc2l6ZSgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgCisgICAgdW5zaWduZWQgaW5saW5pbmdCYWxhbmNlID0gT3B0aW9u
czo6bWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQo
KTsKKyAgICBpZiAoc3BlY2lhbGl6YXRpb25LaW5kID09IENvZGVGb3JDb25zdHJ1Y3QpCisgICAg
ICAgIGlubGluaW5nQmFsYW5jZSA9IHN0ZDo6bWluKGlubGluaW5nQmFsYW5jZSwgT3B0aW9uczo6
bWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3Vu
dCgpKTsKKyAgICBpZiAoY2FsbExpbmtTdGF0dXMuaXNDbG9zdXJlQ2FsbCgpKQorICAgICAgICBp
bmxpbmluZ0JhbGFuY2UgPSBzdGQ6Om1pbihpbmxpbmluZ0JhbGFuY2UsIE9wdGlvbnM6Om1heGlt
dW1GdW5jdGlvbkZvckNsb3N1cmVDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgp
KTsKKyAgICAKKyAgICAvLyBGaXJzdCBjaGVjayBpZiB3ZSBjYW4gYXZvaWQgY3JlYXRpbmcgY29u
dHJvbCBmbG93LiBPdXIgaW5saW5lciBkb2VzIHNvbWUgQ0ZHCisgICAgLy8gc2ltcGxpZmljYXRp
b24gb24gdGhlIGZseSBhbmQgdGhpcyBoZWxwcyByZWR1Y2UgY29tcGlsZSB0aW1lcywgYnV0IHdl
IGNhbiBvbmx5IGxldmVyYWdlCisgICAgLy8gdGhpcyBpbiBjYXNlcyB3aGVyZSB3ZSBkb24ndCBu
ZWVkIGNvbnRyb2wgZmxvdyBkaWFtb25kcyB0byBjaGVjayB0aGUgY2FsbGVlLgorICAgIGlmICgh
Y2FsbExpbmtTdGF0dXMuY291bGRUYWtlU2xvd1BhdGgoKSAmJiBjYWxsTGlua1N0YXR1cy5zaXpl
KCkgPT0gMSkgeworICAgICAgICBpZiAoIWNhbGxMaW5rU3RhdHVzLmlzUHJvdmVkKCkpIHsKKyAg
ICAgICAgICAgIGVtaXRGdW5jdGlvbkNoZWNrcygKKyAgICAgICAgICAgICAgICBjYWxsTGlua1N0
YXR1c1swXS5jYWxsZWUoKSwgY2FsbFRhcmdldE5vZGUsIHJlZ2lzdGVyT2Zmc2V0LCBzcGVjaWFs
aXphdGlvbktpbmQpOworICAgICAgICB9CisgICAgICAgIGJvb2wgcmVzdWx0ID0gYXR0ZW1wdFRv
SW5saW5lQ2FsbCgKKyAgICAgICAgICAgIGNhbGxUYXJnZXROb2RlLCByZXN1bHRPcGVyYW5kLCBj
YWxsTGlua1N0YXR1c1swXS5jYWxsZWUoKSwgcmVnaXN0ZXJPZmZzZXQsCisgICAgICAgICAgICBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbmV4dE9mZnNldCwga2luZCwgQ2FsbGVyRG9lc05v
cm1hbExpbmtpbmcsIHByZWRpY3Rpb24sCisgICAgICAgICAgICBpbmxpbmluZ0JhbGFuY2UpOwor
ICAgICAgICBpZiAoIXJlc3VsdCAmJiAhY2FsbExpbmtTdGF0dXMuaXNQcm92ZWQoKSkKKyAgICAg
ICAgICAgIHVuZG9GdW5jdGlvbkNoZWNrcyhjYWxsTGlua1N0YXR1c1swXS5jYWxsZWUoKSk7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIC8vIFdlIG5lZWQgdG8gY3Jl
YXRlIHNvbWUga2luZCBvZiBzd2l0Y2ggb3ZlciBjYWxsZWUuIEZvciBub3cgd2Ugb25seSBkbyB0
aGlzIGlmIHdlIGJlbGlldmUgdGhhdAorICAgIC8vIHdlJ3JlIGluIHRoZSB0b3AgdGllci4gV2Ug
aGF2ZSB0d28gcmVhc29ucyBmb3IgdGhpczogZmlyc3QsIGl0IHByb3ZpZGVzIHVzIGFuIG9wcG9y
dHVuaXR5IHRvCisgICAgLy8gZG8gbW9yZSBkZXRhaWxlZCBwb2x5dmFyaWFudC9wb2x5bW9ycGhp
YyBwcm9maWxpbmc7IGFuZCBzZWNvbmQsIGl0IHJlZHVjZXMgY29tcGlsZSB0aW1lcyBpbgorICAg
IC8vIHRoZSBERkcuIEFuZCBieSBwb2x5dmFyaWFudCBwcm9maWxpbmcgd2UgbWVhbiBwb2x5dmFy
aWFudCBwcm9maWxpbmcgb2YgKnRoaXMqIGNhbGwuIE5vdGUgdGhhdAorICAgIC8vIHdlIGNvdWxk
IGltcHJvdmUgdGhhdCBhc3BlY3Qgb2YgdGhpcyBieSBkb2luZyBwb2x5bW9ycGhpYyBpbmxpbmlu
ZyBidXQgaGF2aW5nIHRoZSBwcm9maWxpbmcKKyAgICAvLyBhbHNvLiBDdXJyZW50bHkgd2Ugb3B0
IGFnYWluc3QgdGhpcywgYnV0IGl0IGNvdWxkIGJlIGludGVyZXN0aW5nLiBUaGF0IHdvdWxkIHJl
cXVpcmUgaGF2aW5nIGEKKyAgICAvLyBzZXBhcmF0ZSBub2RlIGZvciBjYWxsIGVkZ2UgcHJvZmls
aW5nLgorICAgIC8vIEZJWE1FOiBJbnRyb2R1Y2UgdGhlIG5vdGlvbiBvZiBhIHNlcGFyYXRlIGNh
bGwgZWRnZSBwcm9maWxpbmcgbm9kZS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM2MDMzCisgICAgaWYgKCFpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2Rl
KSB8fCAhT3B0aW9uczo6ZW5hYmxlUG9seW1vcnBoaWNDYWxsSW5saW5pbmcoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIAorICAgIGJvb2wgYWxsQXJlQ2xvc3VyZUNhbGxzID0gdHJ1ZTsK
KyAgICBib29sIGFsbEFyZURpcmVjdENhbGxzID0gdHJ1ZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSBjYWxsTGlua1N0YXR1cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgaWYgKGNhbGxMaW5rU3Rh
dHVzW2ldLmNhbGxlZSgpLmlzQ2xvc3VyZUNhbGwoKSkKKyAgICAgICAgICAgIGFsbEFyZURpcmVj
dENhbGxzID0gZmFsc2U7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFsbEFyZUNsb3N1cmVD
YWxscyA9IGZhbHNlOworICAgIH0KKyAgICAKKyAgICBOb2RlKiB0aGluZ1RvU3dpdGNoT247Cisg
ICAgaWYgKGFsbEFyZURpcmVjdENhbGxzKQorICAgICAgICB0aGluZ1RvU3dpdGNoT24gPSBjYWxs
VGFyZ2V0Tm9kZTsKKyAgICBlbHNlIGlmIChhbGxBcmVDbG9zdXJlQ2FsbHMpCisgICAgICAgIHRo
aW5nVG9Td2l0Y2hPbiA9IGFkZFRvR3JhcGgoR2V0RXhlY3V0YWJsZSwgY2FsbFRhcmdldE5vZGUp
OworICAgIGVsc2UgeworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gaGFu
ZGxlIHRoaXMgY2FzZSwgYnV0IGl0J3MgdHJpY2t5IGFuZCB3ZSBkb24ndCBrbm93IG9mIGNhc2Vz
CisgICAgICAgIC8vIHdoZXJlIGl0IHdvdWxkIGJlIGJlbmVmaWNpYWwuIEFsc28sIENhbGxMaW5r
U3RhdHVzIHdvdWxkIG1ha2UgYWxsIGNhbGxlZXMgYXBwZWFyIGxpa2UKKyAgICAgICAgLy8gY2xv
c3VyZSBjYWxscyBpZiBhbnkgY2FsbHMgd2VyZSBjbG9zdXJlIGNhbGxzIC0gZXhjZXB0IGZvciBj
YWxscyB0byBpbnRlcm5hbCBmdW5jdGlvbnMuCisgICAgICAgIC8vIFNvIHRoaXMgd2lsbCBvbmx5
IGFyaXNlIGlmIHNvbWUgY2FsbGVlcyBhcmUgaW50ZXJuYWwgZnVuY3Rpb25zIGFuZCBvdGhlcnMg
YXJlIGNsb3N1cmVzLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM2MDIwCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAg
Ly8gVGhpcyBtYWtlcyBtZSB3aXNoIHRoYXQgd2Ugd2VyZSBpbiBTU0EgYWxsIHRoZSB0aW1lLiBX
ZSBuZWVkIHRvIHBpY2sgYSB2YXJpYWJsZSBpbnRvIHdoaWNoIHRvCisgICAgLy8gc3RvcmUgdGhl
IGNhbGxlZSBzbyB0aGF0IGl0IHdpbGwgYmUgYWNjZXNzaWJsZSB0byBhbGwgb2YgdGhlIGJsb2Nr
cyB3ZSdyZSBhYm91dCB0byBjcmVhdGUuIFdlCisgICAgLy8gZ2V0IGF3YXkgd2l0aCBkb2luZyBh
biBpbW1lZGlhdGUtc2V0IGhlcmUgYmVjYXVzZSB3ZSB3b3VsZG4ndCBoYXZlIHBlcmZvcm1lZCBh
bnkgc2lkZSBlZmZlY3RzCisgICAgLy8geWV0LgorICAgIFZpcnR1YWxSZWdpc3RlciBjYWxsZWVS
ZWcocmVnaXN0ZXJPZmZzZXQgKyBKU1N0YWNrOjpDYWxsZWUpOworICAgIHNldERpcmVjdChjYWxs
ZWVSZWcsIGNhbGxUYXJnZXROb2RlLCBJbW1lZGlhdGVTZXRXaXRoRmx1c2gpOworICAgIAorICAg
IFN3aXRjaERhdGEmIGRhdGEgPSAqbV9ncmFwaC5tX3N3aXRjaERhdGEuYWRkKCk7CisgICAgZGF0
YS5raW5kID0gU3dpdGNoQ2VsbDsKKyAgICBhZGRUb0dyYXBoKFN3aXRjaCwgT3BJbmZvKCZkYXRh
KSwgdGhpbmdUb1N3aXRjaE9uKTsKKyAgICAKKyAgICBCYXNpY0Jsb2NrKiBvcmlnaW5CbG9jayA9
IG1fY3VycmVudEJsb2NrOworICAgIG9yaWdpbkJsb2NrLT5kaWRMaW5rKCk7CisgICAgY2FuY2Vs
TGlua2luZ0ZvckJsb2NrKG1faW5saW5lU3RhY2tUb3AsIG9yaWdpbkJsb2NrKTsKKyAgICAKKyAg
ICAvLyBFYWNoIGlubGluZWQgY2FsbGVlIHdpbGwgaGF2ZSBhIGxhbmRpbmcgYmxvY2sgdGhhdCBp
dCByZXR1cm5zIGF0LiBUaGV5IHNob3VsZCBhbGwgaGF2ZSBqdW1wcworICAgIC8vIHRvIHRoZSBj
b250aW51YXRpb24gYmxvY2ssIHdoaWNoIHdlIGNyZWF0ZSBsYXN0LgorICAgIFZlY3RvcjxCYXNp
Y0Jsb2NrKj4gbGFuZGluZ0Jsb2NrczsKKyAgICAKKyAgICAvLyBXZSBtYWtlIGZvcmNlIHRoaXMg
dHJ1ZSBpZiB3ZSBnaXZlIHVwIG9uIGlubGluaW5nIGFueSBvZiB0aGUgZWRnZXMuCisgICAgYm9v
bCBjb3VsZFRha2VTbG93UGF0aCA9IGNhbGxMaW5rU3RhdHVzLmNvdWxkVGFrZVNsb3dQYXRoKCk7
CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxMaW5rU3RhdHVzLnNpemUo
KTsgKytpKSB7CisgICAgICAgIFJlZlB0cjxCYXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKG5l
dyBCYXNpY0Jsb2NrKFVJTlRfTUFYLCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIFBOYU4p
KTsKKyAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBibG9jay5nZXQoKTsKKyAgICAgICAgbV9ncmFw
aC5tX2Jsb2Nrcy5hcHBlbmQoYmxvY2spOworICAgICAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7
CisgICAgICAgIAorICAgICAgICBOb2RlKiBteUNhbGxUYXJnZXROb2RlID0gZ2V0RGlyZWN0KGNh
bGxlZVJlZyk7CisgICAgICAgIAorICAgICAgICBib29sIGlubGluaW5nUmVzdWx0ID0gYXR0ZW1w
dFRvSW5saW5lQ2FsbCgKKyAgICAgICAgICAgIG15Q2FsbFRhcmdldE5vZGUsIHJlc3VsdE9wZXJh
bmQsIGNhbGxMaW5rU3RhdHVzW2ldLmNhbGxlZSgpLCByZWdpc3Rlck9mZnNldCwKKyAgICAgICAg
ICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zmc2V0LCBraW5kLCBDYWxsZXJM
aW5rc01hbnVhbGx5LCBwcmVkaWN0aW9uLAorICAgICAgICAgICAgaW5saW5pbmdCYWxhbmNlKTsK
KyAgICAgICAgCisgICAgICAgIGlmICghaW5saW5pbmdSZXN1bHQpIHsKKyAgICAgICAgICAgIC8v
IFRoYXQgZmFpbGVkIHNvIHdlIGxldCB0aGUgYmxvY2sgZGllLiBOb3RoaW5nIGludGVyZXN0aW5n
IHNob3VsZCBoYXZlIGJlZW4gYWRkZWQgdG8KKyAgICAgICAgICAgIC8vIHRoZSBibG9jay4gV2Ug
YWxzbyBnaXZlIHVwIG9uIGlubGluaW5nIGFueSBvZiB0aGUgKGxlc3MgZnJlcXVlbnQpIGNhbGxl
ZXMuCisgICAgICAgICAgICBBU1NFUlQobV9jdXJyZW50QmxvY2sgPT0gYmxvY2suZ2V0KCkpOwor
ICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9ibG9ja3MubGFzdCgpID09IGJsb2NrKTsKKyAg
ICAgICAgICAgIG1fZ3JhcGgua2lsbEJsb2NrQW5kSXRzQ29udGVudHMoYmxvY2suZ2V0KCkpOwor
ICAgICAgICAgICAgbV9ncmFwaC5tX2Jsb2Nrcy5yZW1vdmVMYXN0KCk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIC8vIFRoZSBmYWN0IHRoYXQgaW5saW5pbmcgZmFpbGVkIG1lYW5zIHdlIG5l
ZWQgYSBzbG93IHBhdGguCisgICAgICAgICAgICBjb3VsZFRha2VTbG93UGF0aCA9IHRydWU7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgSlNDZWxsKiB0
aGluZ1RvQ2FzZU9uOworICAgICAgICBpZiAoYWxsQXJlRGlyZWN0Q2FsbHMpCisgICAgICAgICAg
ICB0aGluZ1RvQ2FzZU9uID0gY2FsbExpbmtTdGF0dXNbaV0uY2FsbGVlKCkubm9uRXhlY3V0YWJs
ZUNhbGxlZSgpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChhbGxBcmVDbG9z
dXJlQ2FsbHMpOworICAgICAgICAgICAgdGhpbmdUb0Nhc2VPbiA9IGNhbGxMaW5rU3RhdHVzW2ld
LmNhbGxlZSgpLmV4ZWN1dGFibGUoKTsKKyAgICAgICAgfQorICAgICAgICBkYXRhLmNhc2VzLmFw
cGVuZChTd2l0Y2hDYXNlKG1fZ3JhcGguZnJlZXplKHRoaW5nVG9DYXNlT24pLCBibG9jay5nZXQo
KSkpOworICAgICAgICBhZGRUb0dyYXBoKEp1bXApOworICAgICAgICBtX2N1cnJlbnRCbG9jay0+
ZGlkTGluaygpOworICAgICAgICBsYW5kaW5nQmxvY2tzLmFwcGVuZChtX2N1cnJlbnRCbG9jayk7
CisgICAgfQorICAgIAorICAgIFJlZlB0cjxCYXNpY0Jsb2NrPiBzbG93UGF0aEJsb2NrID0gYWRv
cHRSZWYoCisgICAgICAgIG5ldyBCYXNpY0Jsb2NrKFVJTlRfTUFYLCBtX251bUFyZ3VtZW50cywg
bV9udW1Mb2NhbHMsIFBOYU4pKTsKKyAgICBkYXRhLmZhbGxUaHJvdWdoID0gQnJhbmNoVGFyZ2V0
KHNsb3dQYXRoQmxvY2suZ2V0KCkpOworICAgIG1fZ3JhcGgubV9ibG9ja3MuYXBwZW5kKHNsb3dQ
YXRoQmxvY2spOworICAgIHNsb3dQYXRoQmxvY2stPmRpZExpbmsoKTsKKyAgICBwcmVwYXJlVG9Q
YXJzZUJsb2NrKCk7CisgICAgbV9jdXJyZW50QmxvY2sgPSBzbG93UGF0aEJsb2NrLmdldCgpOwor
ICAgIGlmIChjb3VsZFRha2VTbG93UGF0aCkgeworICAgICAgICBOb2RlKiBteUNhbGxUYXJnZXRO
b2RlID0gZ2V0RGlyZWN0KGNhbGxlZVJlZyk7CisgICAgICAgIGFkZENhbGwoCisgICAgICAgICAg
ICByZXN1bHRPcGVyYW5kLCBjYWxsT3AsIE9wSW5mbygpLCBteUNhbGxUYXJnZXROb2RlLCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywKKyAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0LCBwcmVk
aWN0aW9uKTsKKyAgICAgICAgYWRkVG9HcmFwaChKdW1wKTsKKyAgICAgICAgbGFuZGluZ0Jsb2Nr
cy5hcHBlbmQobV9jdXJyZW50QmxvY2spOworICAgIH0gZWxzZSB7CisgICAgICAgIGFkZFRvR3Jh
cGgoQ2hlY2tCYWRDZWxsKTsKKyAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOworICAgICAgICBh
ZGRUb0dyYXBoKFVucmVhY2hhYmxlKTsKKyAgICB9CisgICAgCisgICAgUmVmUHRyPEJhc2ljQmxv
Y2s+IGNvbnRpbnVhdGlvbkJsb2NrID0gYWRvcHRSZWYoCisgICAgICAgIG5ldyBCYXNpY0Jsb2Nr
KFVJTlRfTUFYLCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIFBOYU4pKTsKKyAgICBtX2dy
YXBoLm1fYmxvY2tzLmFwcGVuZChjb250aW51YXRpb25CbG9jayk7CisgICAgbV9pbmxpbmVTdGFj
a1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5hcHBlbmQoVW5saW5rZWRCbG9jayhjb250aW51YXRpb25C
bG9jay5nZXQoKSkpOworICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKKyAgICBtX2N1cnJlbnRC
bG9jayA9IGNvbnRpbnVhdGlvbkJsb2NrLmdldCgpOworICAgIAorICAgIGZvciAodW5zaWduZWQg
aSA9IGxhbmRpbmdCbG9ja3Muc2l6ZSgpOyBpLS07KQorICAgICAgICBsYW5kaW5nQmxvY2tzW2ld
LT5sYXN0KCktPnRhcmdldEJsb2NrKCkgPSBjb250aW51YXRpb25CbG9jay5nZXQoKTsKICAgICAK
LSAgICAvLyBBdCB0aGlzIHBvaW50IHdlIHJldHVybiBhbmQgY29udGludWUgdG8gZ2VuZXJhdGUg
Y29kZSBmb3IgdGhlIGNhbGxlciwgYnV0Ci0gICAgLy8gaW4gdGhlIG5ldyBiYXNpYyBibG9jay4K
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTY0NSw3ICsxODI0LDcgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlVHlwZWRBcnJheUNvbgogCiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oCiAgICAgaW50IHJlc3VsdE9wZXJhbmQsIEludGVy
bmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgcmVnaXN0ZXJPZmZzZXQsCi0gICAgaW50IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgLy8gSWYgd2UgZXZlciBmaW5k
IHRoYXQgd2UgaGF2ZSBhIGxvdCBvZiBpbnRlcm5hbCBmdW5jdGlvbnMgdGhhdCB3ZSBzcGVjaWFs
aXplIGZvciwKICAgICAvLyB0aGVuIHdlIHNob3VsZCBwcm9iYWJseSBoYXZlIHNvbWUgc29ydCBv
ZiBoYXNodGFibGUgZGlzcGF0Y2gsIG9yIG1heWJlIGV2ZW4KQEAgLTE2NTQsOCArMTgzMyw2IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50SW50ZXIKICAgICAvLyB3ZSBrbm93
IGFib3V0IGlzIHNtYWxsIGVub3VnaCwgdGhhdCBoYXZpbmcganVzdCBhIGxpbmVhciBjYXNjYWRl
IG9mIGlmIHN0YXRlbWVudHMKICAgICAvLyBpcyBnb29kIGVub3VnaC4KICAgICAKLSAgICBVTlVT
RURfUEFSQU0ocHJlZGljdGlvbik7IC8vIFJlbW92ZSB0aGlzIG9uY2Ugd2UgZG8gbW9yZSB0aGlu
Z3MuCi0gICAgCiAgICAgaWYgKGZ1bmN0aW9uLT5jbGFzc0luZm8oKSA9PSBBcnJheUNvbnN0cnVj
dG9yOjppbmZvKCkpIHsKICAgICAgICAgaWYgKGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKSAhPSBt
X2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0yMjA5LDEzICsyMzg2LDEzIEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIEpTQ2VsbCogY2FjaGVkRnVuY3Rp
b24gPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5qc0NlbGwuZ2V0KCk7CiAgICAgICAgICAgICBp
ZiAoIWNhY2hlZEZ1bmN0aW9uIAogICAgICAgICAgICAgICAgIHx8IG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jay0+Y291bGRUYWtlU2xvd0Nhc2UobV9jdXJyZW50SW5kZXgpCi0gICAg
ICAgICAgICAgICAgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0
ZShtX2N1cnJlbnRJbmRleCwgQmFkRnVuY3Rpb24pKSB7CisgICAgICAgICAgICAgICAgfHwgbV9p
bmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwg
QmFkQ2VsbCkpIHsKICAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkNh
bGxlZSkpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgRnJvemVuVmFs
dWUqIGZyb3plbiA9IG1fZ3JhcGguZnJlZXplKGNhY2hlZEZ1bmN0aW9uKTsKICAgICAgICAgICAg
ICAgICBBU1NFUlQoY2FjaGVkRnVuY3Rpb24tPmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkp
OwogICAgICAgICAgICAgICAgIE5vZGUqIGFjdHVhbENhbGxlZSA9IGdldChWaXJ0dWFsUmVnaXN0
ZXIoSlNTdGFjazo6Q2FsbGVlKSk7Ci0gICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0Z1
bmN0aW9uLCBPcEluZm8oZnJvemVuKSwgYWN0dWFsQ2FsbGVlKTsKKyAgICAgICAgICAgICAgICBh
ZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKGZyb3plbiksIGFjdHVhbENhbGxlZSk7CiAgICAg
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwgYWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8oZnJvemVuKSkpOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2NhbGxlZSk7CkBAIC0yODk3
LDcgKzMwNzQsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAg
ICAgICAgICAgICAvLyBhbHJlYWR5IGduYXJseSBlbm91Z2ggYXMgaXQgaXMuCiAgICAgICAgICAg
ICBBU1NFUlQocG9pbnRlcklzRnVuY3Rpb24oY3VycmVudEluc3RydWN0aW9uWzJdLnUuc3BlY2lh
bFBvaW50ZXIpKTsKICAgICAgICAgICAgIGFkZFRvR3JhcGgoCi0gICAgICAgICAgICAgICAgQ2hl
Y2tGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICBDaGVja0NlbGwsCiAgICAgICAgICAgICAgICAg
T3BJbmZvKG1fZ3JhcGguZnJlZXplKHN0YXRpY19jYXN0PEpTQ2VsbCo+KGFjdHVhbFBvaW50ZXJG
b3IoCiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLCBj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5zcGVjaWFsUG9pbnRlcikpKSksCiAgICAgICAgICAgICAg
ICAgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSkp
OwpAQCAtMzMyMiw5ICszNDk5LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrKEJh
c2ljQmxvYwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgCi0jaWYgIUFTU0VSVF9ESVNBQkxF
RAotICAgIGJsb2NrLT5pc0xpbmtlZCA9IHRydWU7Ci0jZW5kaWYKKyAgICBibG9jay0+ZGlkTGlu
aygpOwogfQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2tzKFZlY3RvcjxVbmxpbmtl
ZEJsb2NrPiYgdW5saW5rZWRCbG9ja3MsIFZlY3RvcjxCYXNpY0Jsb2NrKj4mIHBvc3NpYmxlVGFy
Z2V0cykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNS
ZXRocmVhZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTAsOCArOTAsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRy
ZW4uc2V0Q2hpbGQxKEVkZ2UoKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIGNhc2UgUGhhbnRvbToKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5j
aGlsZDEoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5jaGlsZDEoKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS0+b3AoKSkgewogICAgICAg
ICAgICAgICAgICAgICBjYXNlIFBoaToKICAgICAgICAgICAgICAgICAgICAgY2FzZSBTZXRBcmd1
bWVudDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShy
ZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDYgKzE0NCw3IEBAIHZvaWQgY2xvYmJlcml6ZShH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIEZpYXRJbnQ1MjoKICAgICBjYXNlIE1h
a2VSb3BlOgogICAgIGNhc2UgVmFsdWVUb0ludDMyOgorICAgIGNhc2UgR2V0RXhlY3V0YWJsZToK
ICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlKSk7CiAgICAgICAgIHJldHVybjsKICAgICAgICAg
CkBAIC0yMzksMTIgKzI0MCw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUKICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlLCBub2RlLT5hcml0aE1vZGUoKSkpOwog
ICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKLSAgICAg
ICAgZGVmKFB1cmVWYWx1ZShDaGVja0Z1bmN0aW9uLCBBZGphY2VuY3lMaXN0KEFkamFjZW5jeUxp
c3Q6OkZpeGVkLCBub2RlLT5jaGlsZDEoKSksIG5vZGUtPmZ1bmN0aW9uKCkpKTsKLSAgICAgICAg
cmV0dXJuOwotICAgICAgICAKLSAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToKLSAgICAgICAgZGVm
KFB1cmVWYWx1ZShub2RlLCBub2RlLT5leGVjdXRhYmxlKCkpKTsKKyAgICBjYXNlIENoZWNrQ2Vs
bDoKKyAgICAgICAgZGVmKFB1cmVWYWx1ZShDaGVja0NlbGwsIEFkamFjZW5jeUxpc3QoQWRqYWNl
bmN5TGlzdDo6Rml4ZWQsIG5vZGUtPmNoaWxkMSgpKSwgbm9kZS0+Y2VsbE9wZXJhbmQoKSkpOwog
ICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRl
cjoKQEAgLTI2Myw2ICsyNjAsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlCiAgICAgY2FzZSBTd2l0Y2g6CiAgICAgY2FzZSBUaHJvdzoKICAgICBjYXNlIEZvcmNl
T1NSRXhpdDoKKyAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICBjYXNlIFJldHVybjoKICAgICBj
YXNlIFVucmVhY2hhYmxlOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw4ICsxNDIsOCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOiB7Ci0gICAgICAgICAg
ICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKSAhPSBub2Rl
LT5mdW5jdGlvbigpLT52YWx1ZSgpKQorICAgICAgICAgICAgY2FzZSBDaGVja0NlbGw6IHsKKyAg
ICAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgp
ICE9IG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkpCiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKICAgICAgICAg
ICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCBib29s
IGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRCeUlkRmx1c2g6
CiAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6Ci0gICAg
Y2FzZSBDaGVja0V4ZWN1dGFibGU6CisgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgogICAgIGNhc2Ug
R2V0QnV0dGVyZmx5OgogICAgIGNhc2UgQ2hlY2tBcnJheToKICAgICBjYXNlIEdldFNjb3BlOgpA
QCAtMTA1LDcgKzEwNSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkK
ICAgICBjYXNlIFB1dEdsb2JhbFZhcjoKICAgICBjYXNlIFZhcmlhYmxlV2F0Y2hwb2ludDoKICAg
ICBjYXNlIFZhckluamVjdGlvbldhdGNocG9pbnQ6Ci0gICAgY2FzZSBDaGVja0Z1bmN0aW9uOgor
ICAgIGNhc2UgQ2hlY2tDZWxsOgogICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50
OgogICAgIGNhc2UgUmVnRXhwRXhlYzoKICAgICBjYXNlIFJlZ0V4cFRlc3Q6CkBAIC0xOTYsNiAr
MTk2LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2Ug
R2V0RGlyZWN0UG5hbWU6CiAgICAgY2FzZSBGaWF0SW50NTI6CiAgICAgY2FzZSBCb29sZWFuVG9O
dW1iZXI6CisgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRHJpdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RyaXZlci5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRHJpdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksOSBAQCBzdGF0
aWMgQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZUltcGwoCiAgICAgICAgIHZtLmdldENUSVN0dWIo
dmlydHVhbENvbnN0cnVjdFRoYXRQcmVzZXJ2ZXNSZWdzVGh1bmtHZW5lcmF0b3IpOwogICAgIH0K
ICAgICAKKyAgICBpZiAoQ2FsbEVkZ2VMb2c6OmlzRW5hYmxlZCgpKQorICAgICAgICB2bS5lbnN1
cmVDYWxsRWRnZUxvZygpLnByb2Nlc3NMb2coKTsKKyAgICAKICAgICBSZWZQdHI8UGxhbj4gcGxh
biA9IGFkb3B0UmVmKAogICAgICAgICBuZXcgUGxhbihjb2RlQmxvY2ssIHByb2ZpbGVkREZHQ29k
ZUJsb2NrLCBtb2RlLCBvc3JFbnRyeUJ5dGVjb2RlSW5kZXgsIG11c3RIYW5kbGVWYWx1ZXMpKTsK
ICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzM2LDYgKzczNiwxMiBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVT
dHJpbmcoKSkKICAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU3dpdGNo
Q2VsbDoKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0
ZUNlbGwoKSkKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICAgICAgLy8gZWxzZSBpdCdzIGZpbmUgZm9yIHRoaXMgdG8gaGF2
ZSBVbnR5cGVkVXNlOyB3ZSB3aWxsIGhhbmRsZSB0aGlzIGJ5IGp1c3QgbWFraW5nCisgICAgICAg
ICAgICAgICAgLy8gbm9uLWNlbGxzIHRha2UgdGhlIGRlZmF1bHQgY2FzZS4KKyAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CkBAIC04OTgsMTMgKzkwNCwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KIAotICAgICAgICBjYXNlIENoZWNrRXhlY3V0YWJsZTogeworICAgICAgICBjYXNlIEdl
dEV4ZWN1dGFibGU6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8RnVuY3Rpb25Vc2U+KG5vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAg
ICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKLSAgICAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOgor
ICAgICAgICBjYXNlIENoZWNrQ2VsbDoKICAgICAgICAgY2FzZSBDaGVja0hhc0luc3RhbmNlOgog
ICAgICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgICAgIGNhc2UgR2V0QnV0dGVyZmx5OiB7CkBA
IC0xMTUwLDYgKzExNTYsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFRocm93UmVmZXJlbmNl
RXJyb3I6CiAgICAgICAgIGNhc2UgQ291bnRFeGVjdXRpb246CiAgICAgICAgIGNhc2UgRm9yY2VP
U1JFeGl0OgorICAgICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICAgICAgY2FzZSBDaGVja1dh
dGNoZG9nVGltZXI6CiAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgICAgIGNhc2UgRXh0
cmFjdE9TUkVudHJ5TG9jYWw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAgR3JhcGg6OkdyYXBoKFZN
JiB2bSwgUGxhbiYgcGxhbiwgTG9uZ0xpdgogICAgICwgbV9mb3JtKExvYWRTdG9yZSkKICAgICAs
IG1fdW5pZmljYXRpb25TdGF0ZShMb2NhbGx5VW5pZmllZCkKICAgICAsIG1fcmVmQ291bnRTdGF0
ZShFdmVyeXRoaW5nSXNMaXZlKQorICAgICwgbV9zaG91bGRQcm9maWxlKGZhbHNlKQogewogICAg
IEFTU0VSVChtX3Byb2ZpbGVkQmxvY2spOwogICAgIApAQCAtMjIyLDI0ICsyMjMsMTkgQEAgdm9p
ZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAogICAgICAgICBvdXQucHJpbnQo
Y29tbWEsIGluQ29udGV4dCgqbm9kZS0+c3RydWN0dXJlKCksIGNvbnRleHQpKTsKICAgICBpZiAo
bm9kZS0+aGFzVHJhbnNpdGlvbigpKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsIHBvaW50ZXJE
dW1wSW5Db250ZXh0KG5vZGUtPnRyYW5zaXRpb24oKSwgY29udGV4dCkpOwotICAgIGlmIChub2Rl
LT5oYXNGdW5jdGlvbigpKSB7Ci0gICAgICAgIG91dC5wcmludChjb21tYSwgImZ1bmN0aW9uKCIs
IHBvaW50ZXJEdW1wKG5vZGUtPmZ1bmN0aW9uKCkpLCAiLCAiKTsKLSAgICAgICAgaWYgKG5vZGUt
PmZ1bmN0aW9uKCktPnZhbHVlKCkuaXNDZWxsKCkKLSAgICAgICAgICAgICYmIG5vZGUtPmZ1bmN0
aW9uKCktPnZhbHVlKCkuYXNDZWxsKCktPmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpIHsK
LSAgICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihu
b2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpLmFzQ2VsbCgpKTsKLSAgICAgICAgICAgIGlmIChmdW5j
dGlvbi0+aXNIb3N0RnVuY3Rpb24oKSkKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQoIjxob3N0
IGZ1bmN0aW9uPiIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG91dC5wcmlu
dChGdW5jdGlvbkV4ZWN1dGFibGVEdW1wKGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKSkpOwotICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgIG91dC5wcmludCgiPG5vdCBKU0Z1bmN0aW9uPiIpOwot
ICAgICAgICBvdXQucHJpbnQoIikiKTsKLSAgICB9Ci0gICAgaWYgKG5vZGUtPmhhc0V4ZWN1dGFi
bGUoKSkgewotICAgICAgICBpZiAobm9kZS0+ZXhlY3V0YWJsZSgpLT5pbmhlcml0cyhGdW5jdGlv
bkV4ZWN1dGFibGU6OmluZm8oKSkpCi0gICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJleGVj
dXRhYmxlKCIsIEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAoanNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJs
ZSo+KG5vZGUtPmV4ZWN1dGFibGUoKSkpLCAiKSIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBvdXQucHJpbnQoY29tbWEsICJleGVjdXRhYmxlKG5vdCBmdW5jdGlvbjogIiwgUmF3UG9pbnRl
cihub2RlLT5leGVjdXRhYmxlKCkpLCAiKSIpOworICAgIGlmIChub2RlLT5oYXNDZWxsT3BlcmFu
ZCgpKSB7CisgICAgICAgIG91dC5wcmludChjb21tYSwgcG9pbnRlckR1bXAobm9kZS0+Y2VsbE9w
ZXJhbmQoKS0+dmFsdWUoKS5hc0NlbGwoKSkpOworICAgICAgICBpZiAobm9kZS0+Y2VsbE9wZXJh
bmQoKS0+dmFsdWUoKS5pc0NlbGwoKSkgeworICAgICAgICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFu
dChub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpLmFzQ2VsbCgpKTsKKyAgICAgICAgICAgIGlm
IChFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IHZhcmlhbnQuZXhlY3V0YWJsZSgpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAg
ICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgIjxob3N0IGZ1bmN0aW9uPiIpOworICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxl
ID0ganNEeW5hbWljQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKSkKKyAgICAg
ICAgICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wKGZ1
bmN0aW9uRXhlY3V0YWJsZSkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgb3V0LnByaW50KGNvbW1hLCAiPG5vbi1mdW5jdGlvbiBleGVjdXRhYmxlPiIpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogICAgIGlmIChub2RlLT5oYXNGdW5jdGlvbkRl
Y2xJbmRleCgpKSB7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG1f
Y29kZUJsb2NrLT5mdW5jdGlvbkRlY2wobm9kZS0+ZnVuY3Rpb25EZWNsSW5kZXgoKSk7CkBAIC05
ODUsMTAgKzk4MSw2IEBAIHZvaWQgR3JhcGg6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHYK
ICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAgICAgICBjYXNl
IENoZWNrRXhlY3V0YWJsZToKLSAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmll
cmVkUmVhZE9ubHlQb2ludGVyKG5vZGUtPmV4ZWN1dGFibGUoKSk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJl
OgogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG5vZGUtPnN0cnVjdHVyZVNldCgp
LnNpemUoKTsgaS0tOykKICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJp
ZXJlZFJlYWRPbmx5UG9pbnRlcihub2RlLT5zdHJ1Y3R1cmVTZXQoKVtpXSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2MSw2ICs3
NjEsNyBAQCBwdWJsaWM6CiAgICAgR3JhcGhGb3JtIG1fZm9ybTsKICAgICBVbmlmaWNhdGlvblN0
YXRlIG1fdW5pZmljYXRpb25TdGF0ZTsKICAgICBSZWZDb3VudFN0YXRlIG1fcmVmQ291bnRTdGF0
ZTsKKyAgICBib29sIG1fc2hvdWxkUHJvZmlsZTsKIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBo
YW5kbGVTdWNjZXNzb3IoVmVjdG9yPEJhc2ljQmxvY2sqLCAxNj4mIHdvcmtsaXN0LCBCYXNpY0Js
b2NrKiwgQmFzaWNCbG9jayogc3VjY2Vzc29yKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMyw5IEBAIHZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBTd2kKICAgICBjYXNlIFN3aXRjaFN0cmlu
ZzoKICAgICAgICAgb3V0LnByaW50KCJTd2l0Y2hTdHJpbmciKTsKICAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgU3dpdGNoQ2VsbDoKKyAgICAgICAgb3V0LnByaW50KCJTd2l0Y2hDZWxsIik7Cisg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAxNzIxNzcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTYwLDcgKzE2MCw4IEBAIHN0cnVjdCBTd2l0Y2hDYXNlIHsKIGVudW0gU3dpdGNoS2luZCB7
CiAgICAgU3dpdGNoSW1tLAogICAgIFN3aXRjaENoYXIsCi0gICAgU3dpdGNoU3RyaW5nCisgICAg
U3dpdGNoU3RyaW5nLAorICAgIFN3aXRjaENlbGwKIH07CiAKIHN0cnVjdCBTd2l0Y2hEYXRhIHsK
QEAgLTE4NSw2ICsxODYsNyBAQCBzdHJ1Y3QgU3dpdGNoRGF0YSB7CiAvLyBkaXN0aW5ndWlzaGVz
IGFuIGltbWVkaWF0ZSB2YWx1ZSAodHlwaWNhbGx5IGFuIGluZGV4IGludG8gYSBDb2RlQmxvY2sg
ZGF0YSBzdHJ1Y3R1cmUgLSAKIC8vIGEgY29uc3RhbnQgaW5kZXgsIGFyZ3VtZW50LCBvciBpZGVu
dGlmaWVyKSBmcm9tIGEgTm9kZSouCiBzdHJ1Y3QgT3BJbmZvIHsKKyAgICBPcEluZm8oKSA6IG1f
dmFsdWUoMCkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKGludDMyX3QgdmFsdWUpIDogbV92YWx1
ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZv
KHVpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkp
IHsgfQogI2lmIE9TKERBUldJTikgfHwgVVNFKEpTVkFMVUU2NCkKQEAgLTEwNDQsOSArMTA0Niwx
MSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIG1fb3BJbmZvMiA9IHByZWRpY3Rpb247CiAgICAg
fQogICAgIAotICAgIGJvb2wgY2FuQmVLbm93bkZ1bmN0aW9uKCkKKyAgICBib29sIGhhc0NlbGxP
cGVyYW5kKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIEFs
bG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDoKKyAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAg
ICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OgogICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwNTUsNTQgKzEwNTksMTYgQEAgc3RydWN0IE5vZGUg
ewogICAgICAgICB9CiAgICAgfQogCi0gICAgYm9vbCBoYXNLbm93bkZ1bmN0aW9uKCkKKyAgICBG
cm96ZW5WYWx1ZSogY2VsbE9wZXJhbmQoKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChvcCgpKSB7
Ci0gICAgICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OgotICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6
Ci0gICAgICAgICAgICByZXR1cm4gKGJvb2wpbV9vcEluZm87Ci0gICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgSlNG
dW5jdGlvbioga25vd25GdW5jdGlvbigpCi0gICAgewotICAgICAgICBBU1NFUlQoY2FuQmVLbm93
bkZ1bmN0aW9uKCkpOwotICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEpTRnVuY3Rpb24qPiht
X29wSW5mbyk7Ci0gICAgfQotCi0gICAgdm9pZCBnaXZlS25vd25GdW5jdGlvbihKU0Z1bmN0aW9u
KiBjYWxsRGF0YSkgCi0gICAgewotICAgICAgICBBU1NFUlQoY2FuQmVLbm93bkZ1bmN0aW9uKCkp
OwotICAgICAgICBtX29wSW5mbyA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGNhbGxEYXRhKTsK
LSAgICB9Ci0KLSAgICBib29sIGhhc0Z1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAo
b3AoKSkgewotICAgICAgICBjYXNlIENoZWNrRnVuY3Rpb246Ci0gICAgICAgIGNhc2UgQWxsb2Nh
dGlvblByb2ZpbGVXYXRjaHBvaW50OgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBGcm96ZW5WYWx1ZSogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGhhc0Z1
bmN0aW9uKCkpOworICAgICAgICBBU1NFUlQoaGFzQ2VsbE9wZXJhbmQoKSk7CiAgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PEZyb3plblZhbHVlKj4obV9vcEluZm8pOwogICAgIH0KICAg
ICAKLSAgICBib29sIGhhc0V4ZWN1dGFibGUoKQorICAgIHZvaWQgc2V0Q2VsbE9wZXJhbmQoRnJv
emVuVmFsdWUqIHZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ2hlY2tFeGVj
dXRhYmxlOwotICAgIH0KLSAgICAKLSAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSgpCi0g
ICAgewotICAgICAgICByZXR1cm4ganNDYXN0PEV4ZWN1dGFibGVCYXNlKj4ocmVpbnRlcnByZXRf
Y2FzdDxKU0NlbGwqPihtX29wSW5mbykpOworICAgICAgICBBU1NFUlQoaGFzQ2VsbE9wZXJhbmQo
KSk7CisgICAgICAgIG1fb3BJbmZvID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4odmFsdWUpOwog
ICAgIH0KICAgICAKICAgICBib29sIGhhc1ZhcmlhYmxlV2F0Y2hwb2ludFNldCgpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxNzIxNzcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE1Myw3ICsxNTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAg
bWFjcm8oUHV0QnlJZEZsdXNoLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZU11c3RHZW5lcmF0ZSB8
IE5vZGVDbG9iYmVyc1dvcmxkKSBcCiAgICAgbWFjcm8oUHV0QnlJZERpcmVjdCwgTm9kZU11c3RH
ZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCiAgICAgbWFjcm8oQ2hlY2tTdHJ1Y3R1cmUs
IE5vZGVNdXN0R2VuZXJhdGUpIFwKLSAgICBtYWNybyhDaGVja0V4ZWN1dGFibGUsIE5vZGVNdXN0
R2VuZXJhdGUpIFwKKyAgICBtYWNybyhHZXRFeGVjdXRhYmxlLCBOb2RlUmVzdWx0SlMpIFwKICAg
ICBtYWNybyhQdXRTdHJ1Y3R1cmUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhBbGxv
Y2F0ZVByb3BlcnR5U3RvcmFnZSwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRTdG9yYWdl
KSBcCiAgICAgbWFjcm8oUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSwgTm9kZU11c3RHZW5lcmF0
ZSB8IE5vZGVSZXN1bHRTdG9yYWdlKSBcCkBAIC0xODYsNyArMTg2LDggQEAgbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFZhcmlhYmxlV2F0Y2hwb2ludCwgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFZhckluamVjdGlvbldhdGNocG9pbnQsIE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBtYWNybyhGdW5jdGlvblJlZW50cnlXYXRjaHBvaW50LCBOb2RlTXVz
dEdlbmVyYXRlKSBcCi0gICAgbWFjcm8oQ2hlY2tGdW5jdGlvbiwgTm9kZU11c3RHZW5lcmF0ZSkg
XAorICAgIG1hY3JvKENoZWNrQ2VsbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKENo
ZWNrQmFkQ2VsbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEFsbG9jYXRpb25Qcm9m
aWxlV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrSW5Cb3Vu
ZHMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFz
ZS5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDgg
KzkyLDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVu
LnJlbW92ZUVkZ2UoaS0tKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0No
ZWNrKCk7CiAgICAgICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1BoYW50b21SZW1vdmFsUGhhc2UuY3BwCShyZXZpc2lvbiAxNzIxNzcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21SZW1vdmFsUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNiArMTI1LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFu
Z2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgICAgICAgICB9CkBAIC0xNDIsNiArMTQzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTQ5LDggKzE1MSwxMCBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICBjYXNlIEhhcmRQaGFudG9tOiB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGls
ZHJlbi5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3Iu
ZnJlZShub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2
aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw3ICsxOTYsOCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAg
ICAgICBjYXNlIEdldEdldHRlclNldHRlckJ5T2Zmc2V0OiB7CisgICAgICAgIGNhc2UgR2V0R2V0
dGVyU2V0dGVyQnlPZmZzZXQ6CisgICAgICAgIGNhc2UgR2V0RXhlY3V0YWJsZTogewogICAgICAg
ICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNDZWxsT3RoZXIpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTY0Myw4ICs2NDQsOCBAQCBwcml2YXRlOgogICAgICAg
ICBjYXNlIEZvcmNlT1NSRXhpdDoKICAgICAgICAgY2FzZSBTZXRBcmd1bWVudDoKICAgICAgICAg
Y2FzZSBDaGVja1N0cnVjdHVyZToKLSAgICAgICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6Ci0gICAg
ICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBDaGVja0NlbGw6CisgICAgICAg
IGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgICAgICBjYXNlIFB1dFN0cnVjdHVyZToKICAgICAgICAg
Y2FzZSBUZWFyT2ZmQWN0aXZhdGlvbjoKICAgICAgICAgY2FzZSBUZWFyT2ZmQXJndW1lbnRzOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJl
dmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgUHV0QnlJZEZsdXNoOgogICAgIGNh
c2UgUHV0QnlJZERpcmVjdDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgotICAgIGNhc2UgQ2hl
Y2tFeGVjdXRhYmxlOgorICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNlIEdldEJ1dHRl
cmZseToKICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgY2FzZSBBcnJheWlmeToKQEAgLTE3NSw3
ICsxNzUsOCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAg
Y2FzZSBQdXRHbG9iYWxWYXI6CiAgICAgY2FzZSBWYXJpYWJsZVdhdGNocG9pbnQ6CiAgICAgY2Fz
ZSBWYXJJbmplY3Rpb25XYXRjaHBvaW50OgotICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKKyAgICBj
YXNlIENoZWNrQ2VsbDoKKyAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICBjYXNlIEFsbG9jYXRp
b25Qcm9maWxlV2F0Y2hwb2ludDoKICAgICBjYXNlIFJlZ0V4cEV4ZWM6CiAgICAgY2FzZSBSZWdF
eHBUZXN0OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02ODksNiArNjg5LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5v
ZGUKIAogICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4obm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKICAgICAKKyAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRk
Q2FsbExpbmtJbmZvKCk7CisKKyAgICBpZiAobV9qaXQuZ3JhcGgoKS5tX3Nob3VsZFByb2ZpbGUg
JiYgIW1fc3RhdGUuZm9yTm9kZShjYWxsZWVFZGdlKS5tX3ZhbHVlKSB7CisgICAgICAgIG1faml0
LnZtKCkuY2FsbEVkZ2VMb2ctPmVtaXRMb2dDb2RlKAorICAgICAgICAgICAgbV9qaXQsIGNhbGxM
aW5rSW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBjYWxsZWUuanNWYWx1ZVJlZ3MoKSk7CisgICAgfQor
ICAgIAogICAgIHNsb3dQYXRoLmFwcGVuZChicmFuY2hOb3RDZWxsKGNhbGxlZS5qc1ZhbHVlUmVn
cygpKSk7CiAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFB0cldpdGhQYXRjaChNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxlZVBheWxvYWRHUFIsIHRhcmdldFRvQ2hlY2spKTsK
ICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNhbGxlZVBheWxvYWRH
UFIsIE9CSkVDVF9PRkZTRVRPRihKU0Z1bmN0aW9uLCBtX3Njb3BlKSksIHJlc3VsdFBheWxvYWRH
UFIpOwpAQCAtNzEzLDcgKzcyMCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5v
ZGUqIG5vZGUKICAgICAgICAgbV9qaXQubW92ZShjYWxsZWVQYXlsb2FkR1BSLCBHUFJJbmZvOjpy
ZWdUMCk7CiAgICAgICAgIG1faml0Lm1vdmUoY2FsbGVlVGFnR1BSLCBHUFJJbmZvOjpyZWdUMSk7
CiAgICAgfQotICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRD
YWxsTGlua0luZm8oKTsKICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKGluZm8pLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgc2xvd0Nh
bGwgPSBtX2ppdC5uZWFyQ2FsbCgpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYyNiw3ICs2MjYsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWlz
Y1N0cmljdEVxCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiB7
Ci0KICAgICBib29sIGlzQ2FsbCA9IG5vZGUtPm9wKCkgPT0gQ2FsbDsKICAgICBpZiAoIWlzQ2Fs
bCkKICAgICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5vcCgpID09
IENvbnN0cnVjdCk7CkBAIC02NzAsNiArNjY5LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVt
aXRDYWxsKE5vZGUqIG5vZGUKIAogICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4obm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKICAgICAKKyAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9
IG1faml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKKyAgICAKKyAgICBpZiAoQ2Fs
bEVkZ2VMb2c6OmlzRW5hYmxlZCgpCisgICAgICAgICYmIG1faml0LmdyYXBoKCkubV9zaG91bGRQ
cm9maWxlCisgICAgICAgICYmICFtX3N0YXRlLmZvck5vZGUoY2FsbGVlRWRnZSkubV92YWx1ZSkg
eworICAgICAgICBtX2ppdC52bSgpLT5jYWxsRWRnZUxvZy0+ZW1pdExvZ0NvZGUoCisgICAgICAg
ICAgICBtX2ppdCwgY2FsbExpbmtJbmZvLT5jYWxsRWRnZVByb2ZpbGUsIEpTVmFsdWVSZWdzKGNh
bGxlZUdQUikpOworICAgIH0KKwogICAgIHNsb3dQYXRoID0gbV9qaXQuYnJhbmNoUHRyV2l0aFBh
dGNoKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgY2FsbGVlR1BSLCB0YXJnZXRUb0NoZWNrLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigwKSk7CiAKICAgICBtX2ppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNhbGxlZUdQUiwgT0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rp
b24sIG1fc2NvcGUpKSwgcmVzdWx0R1BSKTsKQEAgLTY4Miw3ICs2OTAsNiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgc2xvd1BhdGgubGluaygmbV9qaXQp
OwogICAgIAogICAgIG1faml0Lm1vdmUoY2FsbGVlR1BSLCBHUFJJbmZvOjpyZWdUMCk7IC8vIENh
bGxlZSBuZWVkcyB0byBiZSBpbiByZWdUMAotICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZv
ID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbygpOwogICAgIG1faml0Lm1vdmUo
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6cmVn
VDIpOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8gYmUgaW4gcmVnVDIKICAgICBKSVRDb21waWxlcjo6
Q2FsbCBzbG93Q2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7CiAgICAgCkBAIC0zNzg0LDE4ICszNzkx
LDIxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
Y29tcGlsZUdldEFycmF5TGVuZ3RoKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICAgICAgCi0g
ICAgY2FzZSBDaGVja0Z1bmN0aW9uOiB7Ci0gICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZ1
bmN0aW9uKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhC
YWRGdW5jdGlvbiwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoZnVuY3Rpb24uZ3ByKCkpLCBu
b2RlLT5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6Tm90RXF1YWws
IGZ1bmN0aW9uLmdwcigpLCBub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpLmFzQ2VsbCgpKSk7Cisg
ICAgY2FzZSBDaGVja0NlbGw6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2VsbCh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkQ2VsbCwg
SlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbC5ncHIoKSksIG5vZGUtPmNoaWxkMSgpLCBt
X2ppdC5icmFuY2hXZWFrUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgY2VsbC5ncHIoKSwgbm9k
ZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5hc0NlbGwoKSkpOwogICAgICAgICBub1Jlc3VsdChu
b2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIENoZWNrRXhl
Y3V0YWJsZTogeworICAgIGNhc2UgR2V0RXhlY3V0YWJsZTogewogICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBmdW5jdGlvbih0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIHNwZWN1
bGF0ZUNlbGxUeXBlKG5vZGUtPmNoaWxkMSgpLCBmdW5jdGlvbi5ncHIoKSwgU3BlY0Z1bmN0aW9u
LCBKU0Z1bmN0aW9uVHlwZSk7Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkRXhlY3V0YWJs
ZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoZnVuY3Rpb24uZ3ByKCkpLCBub2RlLT5jaGls
ZDEoKSwgbV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBp
bGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFi
bGUoKSksIG5vZGUtPmV4ZWN1dGFibGUoKSkpOwotICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAg
ICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgZnVuY3Rpb24pOworICAgICAg
ICBHUFJSZWcgZnVuY3Rpb25HUFIgPSBmdW5jdGlvbi5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgc3BlY3VsYXRlQ2VsbFR5cGUobm9kZS0+
Y2hpbGQxKCksIGZ1bmN0aW9uR1BSLCBTcGVjRnVuY3Rpb24sIEpTRnVuY3Rpb25UeXBlKTsKKyAg
ICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhmdW5jdGlvbkdQUiwgSlNG
dW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCByZXN1bHRHUFIpOworICAgICAgICBjZWxs
UmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAg
CkBAIC00OTkwLDcgKzUwMDAsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgIGNhc2UgTXVsdGlQdXRCeU9m
ZnNldDoKICAgICBjYXNlIEZpYXRJbnQ1MjoKLSAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBo
KCksIG5vZGUsICJVbmV4cGVjdGVkIEZUTCBub2RlIik7CisgICAgY2FzZSBDaGVja0JhZENlbGw6
CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiVW5leHBlY3RlZCBub2Rl
Iik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MzU0LDYgKzUzNTQsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRj
aChOb2RlKiBubwogICAgIGNhc2UgU3dpdGNoU3RyaW5nOiB7CiAgICAgICAgIGVtaXRTd2l0Y2hT
dHJpbmcobm9kZSwgZGF0YSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FzZSBTd2l0
Y2hDZWxsOiB7CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiQmFkIHN3
aXRjaCBraW5kIik7CisgICAgICAgIHJldHVybjsKICAgICB9IH0KICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdU
aWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAx
NzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0
aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw4IEBAIHB1YmxpYzoKICAg
ICAgICAgaWYgKCFPcHRpb25zOjplbmFibGVPU1JFbnRyeVRvRlRMKCkpCiAgICAgICAgICAgICBs
ZXZlbCA9IEZUTDo6Q2FuQ29tcGlsZTsKICAgICAgICAgCisgICAgICAgIG1fZ3JhcGgubV9zaG91
bGRQcm9maWxlID0gdHJ1ZTsKKyAgICAgICAgCiAgICAgICAgIEluc2VydGlvblNldCBpbnNlcnRp
b25TZXQobV9ncmFwaCk7CiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9n
cmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewogICAgICAgICAgICAgQmFzaWNCbG9j
ayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDAsNyArMjAwLDYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IFZBTElEQVRFKChub2RlKSwgIW1heUV4aXQobV9ncmFwaCwgbm9kZSkgfHwgbm9kZS0+b3JpZ2lu
LmZvckV4aXQuaXNTZXQoKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbm9k
ZS0+aGFzU3RydWN0dXJlKCkgfHwgISFub2RlLT5zdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAg
ICAgVkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+aGFzRnVuY3Rpb24oKSB8fCBub2RlLT5mdW5jdGlv
bigpLT52YWx1ZSgpLmlzRnVuY3Rpb24oKSk7CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIGlmICghKG5vZGUtPmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncykpIHsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFub2RlLT5jaGlsZDIoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHV2F0Y2hhYmxlU3RydWN0dXJlV2F0Y2hpbmdQaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXYXRjaGFibGVTdHJ1Y3R1cmVXYXRj
aGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdXYXRjaGFibGVTdHJ1Y3R1cmVXYXRjaGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjIsMTAgKzYyLDYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUg
PSBibG9jay0+YXQobm9kZUluZGV4KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHN3
aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxl
OgotICAgICAgICAgICAgICAgICAgICB0cnlXYXRjaChub2RlLT5leGVjdXRhYmxlKCktPnN0cnVj
dHVyZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICAgICAgICAgICAgICAgICAg
dHJ5V2F0Y2gobm9kZS0+c3RydWN0dXJlU2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBicmVh
azsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rp
b25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdX
YXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTE0LDcgKzExNCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDoK
LSAgICAgICAgICAgIGFkZExhemlseShqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fbm9kZS0+ZnVuY3Rp
b24oKS0+dmFsdWUoKSktPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpKTsKKyAgICAg
ICAgICAgIGFkZExhemlseShqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fbm9kZS0+Y2VsbE9wZXJhbmQo
KS0+dmFsdWUoKSktPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVmFyaWFibGVXYXRjaHBvaW50
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cAkocmV2aXNpb24gMTcyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDggQEAgaW5saW5lIENh
cGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoK
ICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50OgogICAgIGNhc2UgU3RyaW5nQ2hhckF0OgotICAg
IGNhc2UgQ2hlY2tGdW5jdGlvbjoKKyAgICBjYXNlIENoZWNrQ2VsbDoKKyAgICBjYXNlIENoZWNr
QmFkQ2VsbDoKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAgY2FzZSBBbGxvY2F0ZVBy
b3BlcnR5U3RvcmFnZToKICAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CkBAIC0x
MjYsNyArMTI3LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAog
ICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENoZWNrOgogICAgIGNh
c2UgQ291bnRFeGVjdXRpb246Ci0gICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6CisgICAgY2FzZSBH
ZXRFeGVjdXRhYmxlOgogICAgIGNhc2UgR2V0U2NvcGU6CiAgICAgY2FzZSBBbGxvY2F0aW9uUHJv
ZmlsZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQ6CkBAIC0z
MjYsNiArMzI3LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAog
ICAgICAgICBzd2l0Y2ggKG5vZGUtPnN3aXRjaERhdGEoKS0+a2luZCkgewogICAgICAgICBjYXNl
IFN3aXRjaEltbToKICAgICAgICAgY2FzZSBTd2l0Y2hDaGFyOgorICAgICAgICBjYXNlIFN3aXRj
aENlbGw6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
IHJldHVybiBDYW5ub3RDb21waWxlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTMsMTEgKzE1MywxNyBAQCBwdWJsaWM6CiAgICAgICAgIGZvciAodW5zaWduZWQgYmxvY2tJ
bmRleCA9IGRlcHRoRmlyc3Quc2l6ZSgpOyBibG9ja0luZGV4LS07ICkgewogICAgICAgICAgICAg
QmFzaWNCbG9jayogYmxvY2sgPSBkZXB0aEZpcnN0W2Jsb2NrSW5kZXhdOwogICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBub2RlSW5kZXggPSBibG9jay0+c2l6ZSgpOyBub2RlSW5kZXgtLTsgKSB7
Ci0gICAgICAgICAgICAgICAgTm9kZSogbV9ub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+aGFzS25vd25GdW5jdGlvbigpKSB7CisgICAgICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOworICAgICAgICAgICAg
ICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgTmF0aXZlQ2Fs
bDoKKyAgICAgICAgICAgICAgICBjYXNlIE5hdGl2ZUNvbnN0cnVjdDogewogICAgICAgICAgICAg
ICAgICAgICBpbnQgbnVtQXJncyA9IG1fbm9kZS0+bnVtQ2hpbGRyZW4oKTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKG51bUFyZ3MgPiBtYXhOdW1iZXJPZkFyZ3VtZW50cykKICAgICAgICAgICAg
ICAgICAgICAgICAgIG1heE51bWJlck9mQXJndW1lbnRzID0gbnVtQXJnczsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpAQCAtNDY4LDExICs0NzQsMTQgQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICAgICAgICAgIGNvbXBpbGVDaGVja1N0cnVjdHVy
ZSgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKLSAg
ICAgICAgICAgIGNvbXBpbGVDaGVja0Z1bmN0aW9uKCk7CisgICAgICAgIGNhc2UgQ2hlY2tDZWxs
OgorICAgICAgICAgICAgY29tcGlsZUNoZWNrQ2VsbCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOgotICAgICAgICAgICAgY29tcGlsZUNoZWNrRXhl
Y3V0YWJsZSgpOworICAgICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKKyAgICAgICAgICAgIGNvbXBp
bGVDaGVja0JhZENlbGwoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdldEV4
ZWN1dGFibGU6CisgICAgICAgICAgICBjb21waWxlR2V0RXhlY3V0YWJsZSgpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKICAgICAgICAgICAg
IGNvbXBpbGVBcnJheWlmeVRvU3RydWN0dXJlKCk7CkBAIC0xNzQzLDI2ICsxNzUyLDI1IEBAIHBy
aXZhdGU6CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwog
ICAgIH0KICAgICAKLSAgICB2b2lkIGNvbXBpbGVDaGVja0Z1bmN0aW9uKCkKKyAgICB2b2lkIGNv
bXBpbGVDaGVja0NlbGwoKQogICAgIHsKICAgICAgICAgTFZhbHVlIGNlbGwgPSBsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAKICAgICAgICAgc3BlY3VsYXRlKAotICAgICAgICAg
ICAgQmFkRnVuY3Rpb24sIGpzVmFsdWVWYWx1ZShjZWxsKSwgbV9ub2RlLT5jaGlsZDEoKS5ub2Rl
KCksCi0gICAgICAgICAgICBtX291dC5ub3RFcXVhbChjZWxsLCB3ZWFrUG9pbnRlcihtX25vZGUt
PmZ1bmN0aW9uKCktPnZhbHVlKCkuYXNDZWxsKCkpKSk7CisgICAgICAgICAgICBCYWRDZWxsLCBq
c1ZhbHVlVmFsdWUoY2VsbCksIG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpLAorICAgICAgICAgICAg
bV9vdXQubm90RXF1YWwoY2VsbCwgd2Vha1BvaW50ZXIobV9ub2RlLT5jZWxsT3BlcmFuZCgpLT52
YWx1ZSgpLmFzQ2VsbCgpKSkpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGNvbXBpbGVDaGVja0V4
ZWN1dGFibGUoKQorICAgIHZvaWQgY29tcGlsZUNoZWNrQmFkQ2VsbCgpCisgICAgeworICAgICAg
ICB0ZXJtaW5hdGUoQmFkQ2VsbCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY29tcGlsZUdldEV4
ZWN1dGFibGUoKQogICAgIHsKICAgICAgICAgTFZhbHVlIGNlbGwgPSBsb3dDZWxsKG1fbm9kZS0+
Y2hpbGQxKCkpOwotICAgICAgICAKICAgICAgICAgc3BlY3VsYXRlRnVuY3Rpb24obV9ub2RlLT5j
aGlsZDEoKSwgY2VsbCk7Ci0gICAgICAgIAotICAgICAgICBzcGVjdWxhdGUoCi0gICAgICAgICAg
ICBCYWRFeGVjdXRhYmxlLCBqc1ZhbHVlVmFsdWUoY2VsbCksIG1fbm9kZS0+Y2hpbGQxKCkubm9k
ZSgpLAotICAgICAgICAgICAgbV9vdXQubm90RXF1YWwoCi0gICAgICAgICAgICAgICAgbV9vdXQu
bG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTRnVuY3Rpb25fZXhlY3V0YWJsZSksCi0gICAgICAgICAg
ICAgICAgd2Vha1BvaW50ZXIobV9ub2RlLT5leGVjdXRhYmxlKCkpKSk7CisgICAgICAgIHNldEpT
VmFsdWUobV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTRnVuY3Rpb25fZXhlY3V0YWJsZSkp
OwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVBcnJheWlmeVRvU3RydWN0dXJlKCkKQEAg
LTM2NzMsOSArMzY4MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGludCBudW1QYXNzZWRBcmdzID0g
bV9ub2RlLT5udW1DaGlsZHJlbigpIC0gMTsKICAgICAgICAgaW50IG51bUFyZ3MgPSBudW1QYXNz
ZWRBcmdzICsgZHVtbXlUaGlzQXJndW1lbnQ7CiAKLSAgICAgICAgQVNTRVJUKG1fbm9kZS0+aGFz
S25vd25GdW5jdGlvbigpKTsKLQotICAgICAgICBKU0Z1bmN0aW9uKiBrbm93bkZ1bmN0aW9uID0g
bV9ub2RlLT5rbm93bkZ1bmN0aW9uKCk7CisgICAgICAgIEpTRnVuY3Rpb24qIGtub3duRnVuY3Rp
b24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5h
c0NlbGwoKSk7CiAgICAgICAgIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uID0ga25vd25GdW5jdGlv
bi0+bmF0aXZlRnVuY3Rpb24oKTsKIAogICAgICAgICBEbF9pbmZvIGluZm87CkBAIC0zOTE4LDEw
ICszOTI0LDM3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgCi0gICAgICAgIGNhc2UgU3dpdGNoU3RyaW5nOgorICAgICAgICBjYXNlIFN3aXRjaFN0
cmluZzogewogICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIlVuaW1wbGVt
ZW50ZWQiKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBTd2l0Y2hDZWxsOiB7CisgICAgICAgICAg
ICBMVmFsdWUgY2VsbDsKKyAgICAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQ2VsbFVzZTogeworICAgICAgICAgICAgICAgIGNl
bGwgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBVbnR5cGVk
VXNlOiB7CisgICAgICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBjZWxsQ2FzZSA9IEZUTF9O
RVdfQkxPQ0sobV9vdXQsICgiU3dpdGNoL1N3aXRjaENlbGwgY2VsbCBjYXNlIikpOworICAgICAg
ICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgICAgICAgICAgaXNDZWxsKHZhbHVl
KSwgdW5zdXJlKGNlbGxDYXNlKSwgdW5zdXJlKGxvd0Jsb2NrKGRhdGEtPmZhbGxUaHJvdWdoLmJs
b2NrKSkpOworICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNlbGxDYXNlKTsKKyAgICAg
ICAgICAgICAgICBjZWxsID0gdmFsdWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJCYWQgdXNlIGtpbmQiKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGJ1aWxkU3dpdGNoKG1fbm9kZS0+c3dpdGNoRGF0YSgpLCBtX291dC5pbnRQdHIsIGNlbGwp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IH0KICAgICAgICAgCiAgICAgICAgIERG
R19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJCYWQgc3dpdGNoIGtpbmQiKTsKICAgICB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTcyMTc3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4NCw2
ICs5ODQsMTEgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KEhlYXBPcGVyYXRpb24gY29sbGVjdAogICAg
ICAgICB2bSgpLT5oaWdoRmlkZWxpdHlMb2coKS0+cHJvY2Vzc0hpZ2hGaWRlbGl0eUxvZygiR0Mi
KTsKICAgICB9CiAgICAgCisgICAgaWYgKHZtKCktPmNhbGxFZGdlTG9nKSB7CisgICAgICAgIERl
ZmVyR0NGb3JBV2hpbGUgYXdoaWxlKCp0aGlzKTsKKyAgICAgICAgdm0oKS0+Y2FsbEVkZ2VMb2ct
PnByb2Nlc3NMb2coKTsKKyAgICB9CisgICAgCiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fZGVmZXJy
YWxEZXB0aCk7CiAgICAgQVNTRVJUKHZtKCktPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2Nr
KCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtKCktPmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3Rm
VGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC04OCw2ICs4OCwyMSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAgICAgCisgICAgdm9pZCBs
b2FkVmFsdWUoQWRkcmVzcyBhZGRyZXNzLCBKU1ZhbHVlUmVncyByZWdzKQorICAgIHsKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgICAgICBsb2FkNjQoYWRkcmVzcywgcmVncy5ncHIoKSk7CisjZWxz
ZQorICAgICAgICBpZiAoYWRkcmVzcy5iYXNlID09IHJlZ3MucGF5bG9hZEdQUigpKSB7CisgICAg
ICAgICAgICBsb2FkMzIoYWRkcmVzcy53aXRoT2Zmc2V0KFRhZ09mZnNldCksIHJlZ3MudGFnR1BS
KCkpOworICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldChQYXlsb2FkT2Zmc2V0
KSwgcmVncy5wYXlsb2FkR1BSKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9h
ZDMyKGFkZHJlc3Mud2l0aE9mZnNldChQYXlsb2FkT2Zmc2V0KSwgcmVncy5wYXlsb2FkR1BSKCkp
OworICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldChUYWdPZmZzZXQpLCByZWdz
LnRhZ0dQUigpKTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorICAgIAogICAgIHZvaWQgbW92
ZVRydXN0ZWRWYWx1ZShKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlUmVncyByZWdzKQogICAgIHsKICNp
ZiBVU0UoSlNWQUxVRTY0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhl
bHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVs
cGVycy5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ND
YWxsSGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjY2LDYgKzE2NjYsMTUgQEAgcHVibGlj
OgogICAgICAgICBtb3ZlKGFyZzQsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CiAgICAgfQogI2Vu
ZGlmCisgICAgCisgICAgdm9pZCBzZXR1cEFyZ3VtZW50cyhKU1ZhbHVlUmVncyBhcmcxKQorICAg
IHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBzZXR1cEFyZ3VtZW50cyhhcmcxLmdwcigp
KTsKKyNlbHNlCisgICAgICAgIHNldHVwQXJndW1lbnRzKGFyZzEucGF5bG9hZEdQUigpLCBhcmcx
LnRhZ0dQUigpKTsKKyNlbmRpZgorICAgIH0KIAogICAgIHZvaWQgc2V0dXBSZXN1bHRzKEdQUlJl
ZyBkZXN0QSwgR1BSUmVnIGRlc3RCKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvR1BSSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
R1BSSW5mby5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0dQUkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsOCBAQCBwdWJsaWM6CiAgICAg
R1BSUmVnIHRhZ0dQUigpIGNvbnN0IHsgcmV0dXJuIEludmFsaWRHUFJSZWc7IH0KICAgICBHUFJS
ZWcgcGF5bG9hZEdQUigpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByOyB9CiAgICAgCisgICAgYm9vbCB1
c2VzKEdQUlJlZyBncHIpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByID09IGdwcjsgfQorICAgIAogcHJp
dmF0ZToKICAgICBHUFJSZWcgbV9ncHI7CiB9OwpAQCAtMTY5LDYgKzE3MSw4IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIHRhZ0dQUigpOwogICAgIH0KIAorICAgIGJvb2wgdXNlcyhHUFJSZWcg
Z3ByKSBjb25zdCB7IHJldHVybiBtX3RhZ0dQUiA9PSBncHIgfHwgbV9wYXlsb2FkR1BSID09IGdw
cjsgfQorICAgIAogcHJpdmF0ZToKICAgICBpbnQ4X3QgbV90YWdHUFI7CiAgICAgaW50OF90IG1f
cGF5bG9hZEdQUjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82
NC5jcHAJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q2FsbDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAwLDYgKzMwMCwxMyBAQCB2b2lkIEpJ
VDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgc3RvcmUzMihyZWdUMCwgQWRk
cmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgSlNTdGFjazo6Q2FsbGVlICogc3RhdGljX2Nhc3Q8
aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJh
bWVBbmRQQykpKTsKICAgICBzdG9yZTMyKHJlZ1QxLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lz
dGVyLCBKU1N0YWNrOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rlcikp
ICsgVGFnT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAKKyAgICBDYWxsTGlu
a0luZm8qIGluZm8gPSBtX2NvZGVCbG9jay0+YWRkQ2FsbExpbmtJbmZvKCk7CisKKyAgICBpZiAo
Q2FsbEVkZ2VMb2c6OmlzRW5hYmxlZCgpICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgeworICAg
ICAgICBtX3ZtLT5lbnN1cmVDYWxMRWRnZUxvZygpLmVtaXRMb2dDb2RlKAorICAgICAgICAgICAg
KnRoaXMsIGluZm8tPmNhbGxFZGdlUHJvZmlsZSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7
CisgICAgfQorCiAgICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCkgewogICAgICAgICBj
b21waWxlQ2FsbEV2YWwoaW5zdHJ1Y3Rpb24pOwogICAgICAgICByZXR1cm47CkBAIC0zMTMsNyAr
MzIwLDYgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIGFk
ZFNsb3dDYXNlKHNsb3dDYXNlKTsKIAogICAgIEFTU0VSVChtX2NhbGxDb21waWxhdGlvbkluZm8u
c2l6ZSgpID09IGNhbGxMaW5rSW5mb0luZGV4KTsKLSAgICBDYWxsTGlua0luZm8qIGluZm8gPSBt
X2NvZGVCbG9jay0+YWRkQ2FsbExpbmtJbmZvKCk7CiAgICAgaW5mby0+Y2FsbFR5cGUgPSBDYWxs
TGlua0luZm86OmNhbGxUeXBlRm9yKG9wY29kZUlEKTsKICAgICBpbmZvLT5jb2RlT3JpZ2luID0g
Q29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KTsKICAgICBpbmZvLT5jYWxsZWVHUFIgPSByZWdU
MDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAkocmV2aXNpb24gMTcy
MTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjEyLDYgKzIxMiwxMSBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJ
RCBvcGNvZGVJCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjYWxsZWUsIHJlZ1QwKTsgLy8g
cmVnVDAgaG9sZHMgY2FsbGVlLgogCiAgICAgc3RvcmU2NChyZWdUMCwgQWRkcmVzcyhzdGFja1Bv
aW50ZXJSZWdpc3RlciwgSlNTdGFjazo6Q2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2Yo
UmVnaXN0ZXIpKSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOworICAgIAorICAgIENhbGxM
aW5rSW5mbyogaW5mbyA9IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsKKworICAgIGlm
IChDYWxsRWRnZUxvZzo6aXNFbmFibGVkKCkgJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKQorICAg
ICAgICBtX3ZtLT5lbnN1cmVDYWxsRWRnZUxvZygpLmVtaXRMb2dDb2RlKCp0aGlzLCBpbmZvLT5j
YWxsRWRnZVByb2ZpbGUsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CiAKICAgICBpZiAob3Bjb2RlSUQg
PT0gb3BfY2FsbF9ldmFsKSB7CiAgICAgICAgIGNvbXBpbGVDYWxsRXZhbChpbnN0cnVjdGlvbik7
CkBAIC0yMjMsNyArMjI4LDYgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bj
b2RlSQogICAgIGFkZFNsb3dDYXNlKHNsb3dDYXNlKTsKIAogICAgIEFTU0VSVChtX2NhbGxDb21w
aWxhdGlvbkluZm8uc2l6ZSgpID09IGNhbGxMaW5rSW5mb0luZGV4KTsKLSAgICBDYWxsTGlua0lu
Zm8qIGluZm8gPSBtX2NvZGVCbG9jay0+YWRkQ2FsbExpbmtJbmZvKCk7CiAgICAgaW5mby0+Y2Fs
bFR5cGUgPSBDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKG9wY29kZUlEKTsKICAgICBpbmZvLT5j
b2RlT3JpZ2luID0gQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KTsKICAgICBpbmZvLT5jYWxs
ZWVHUFIgPSByZWdUMDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0lu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NJ
bmxpbmVzLmgJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogLy8gSW4g
ZmFjdCwgaXQgY2FuIG1ha2UgYSBsb3Qgb2Ygc2Vuc2U6IG91dHNpZGUgb2YgSlNDLCB0aGlzIGZp
bGUgYmVjb21lcyBhIGtpbmQgb2YgdW1icmVsbGEKIC8vIGhlYWRlciB0aGF0IHB1bGxzIGluIG1v
c3QgKGFsbD8pIG9mIHRoZSBpbnRlcmVzdGluZyB0aGluZ3MgaW4gSlNDLgogCisjaW5jbHVkZSAi
Q2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZUlubGluZXMuaCIK
ICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiR0NJbmNvbWluZ1JlZkNv
dW50ZWRJbmxpbmVzLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
cy5oCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Nyw2ICsxNjcsOCBAQCB0eXBlZGVmIGNvbnN0
IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICB2KGJvb2wsIGVuYWJsZUFjY2Vzc0lubGluaW5nLCB0
cnVlKSBcCiAgICAgdihib29sLCBlbmFibGVQb2x5dmFyaWFudERldmlydHVhbGl6YXRpb24sIHRy
dWUpIFwKICAgICB2KGJvb2wsIGVuYWJsZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcsIHRydWUp
IFwKKyAgICB2KGJvb2wsIGVuYWJsZVBvbHltb3JwaGljQ2FsbElubGluaW5nLCB0cnVlKSBcCisg
ICAgdihib29sLCBlbmFibGVDYWxsRWRnZVByb2ZpbGluZywgdHJ1ZSkgXAogICAgIHYoYm9vbCwg
b3B0aW1pemVOYXRpdmVDYWxscywgZmFsc2UpIFwKICAgICBcCiAgICAgdihib29sLCBlbmFibGVD
b25jdXJyZW50SklULCB0cnVlKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCShyZXZpc2lvbiAxNzIxNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3MSw2ICszNzEsMTMgQEAgVk0qJiBWTTo6c2hhcmVk
SW5zdGFuY2VJbnRlcm5hbCgpCiAgICAgcmV0dXJuIHNoYXJlZEluc3RhbmNlOwogfQogCitDYWxs
RWRnZUxvZyYgVk06OmVuc3VyZUNhbGxFZGdlTG9nKCkKK3sKKyAgICBpZiAoIWNhbGxFZGdlTG9n
KQorICAgICAgICBjYWxsRWRnZUxvZyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbEVkZ2VMb2c+KCk7
CisgICAgcmV0dXJuICpjYWxsRWRnZUxvZzsKK30KKwogI2lmIEVOQUJMRShKSVQpCiBzdGF0aWMg
VGh1bmtHZW5lcmF0b3IgdGh1bmtHZW5lcmF0b3JGb3JJbnRyaW5zaWMoSW50cmluc2ljIGludHJp
bnNpYykKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMTcy
MTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5
KQpAQCAtNzEsNiArNzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFyaXR5Q2hl
Y2tGYWlsUmV0dXJuVGh1bmtzOwogICAgIGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlczsKKyAgICBj
bGFzcyBDYWxsRWRnZUxvZzsKICAgICBjbGFzcyBDb2RlQmxvY2s7CiAgICAgY2xhc3MgQ29kZUNh
Y2hlOwogICAgIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwpAQCAtMjMyLDYgKzIzMyw5IEBAIG5h
bWVzcGFjZSBKU0MgewogI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBPd25QdHI8REZHOjpM
b25nTGl2ZWRTdGF0ZT4gZGZnU3RhdGU7CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisgICAg
ICAgIAorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbEVkZ2VMb2c+IGNhbGxFZGdlTG9nOwor
ICAgICAgICBDYWxsRWRnZUxvZyYgZW5zdXJlQ2FsbEVkZ2VMb2coKTsKIAogICAgICAgICBWTVR5
cGUgdm1UeXBlOwogICAgICAgICBDbGllbnREYXRhKiBjbGllbnREYXRhOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9uZXctYXJyYXktdGhlbi1leGl0LmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbmV3LWFycmF5LXRo
ZW4tZXhpdC5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvbmV3LWFycmF5LXRoZW4tZXhpdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0
IEBACitmdW5jdGlvbiBmb28oZikgeworICAgIHJldHVybiBuZXcgZigpOworfQorCitub0lubGlu
ZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpCisgICAgZm9vKEFycmF5
KTsKKwordmFyIGRpZENhbGwgPSBmYWxzZTsKK2ZvbyhmdW5jdGlvbigpIHsgZGlkQ2FsbCA9IHRy
dWU7IH0pOworCitpZiAoIWRpZENhbGwpCisgICAgdGhyb3cgIkVycm9yOiBkaWRuJ3QgY2FsbCBt
eSBmdW5jdGlvbi4iOwpJbmRleDogU291cmNlL1dURi93dGYvT3duUHRyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvT3duUHRyLmgJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9X
VEYvd3RmL093blB0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAw
OSwgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwpAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBXVEZfT3duUHRyX2gKIAogI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyQ29tbW9uLmg+CiAj
aW5jbHVkZSA8YWxnb3JpdGhtPgpAQCAtNzIsNiArNzMsMTQgQEAgbmFtZXNwYWNlIFdURiB7CiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IE93blB0ciYgb3BlcmF0b3I9KE93blB0cjxVPiYm
KTsKIAogICAgICAgICB2b2lkIHN3YXAoT3duUHRyJiBvKSB7IHN0ZDo6c3dhcChtX3B0ciwgby5t
X3B0cik7IH0KKyAgICAgICAgCisgICAgICAgIC8vIENvbnN0cnVjdCBhbiBvYmplY3QgdG8gc3Rv
cmUgaW50byB0aGlzIE93blB0ciwgYnV0IG9ubHkgc28gbG9uZyBhcyB0aGlzIE93blB0cgorICAg
ICAgICAvLyBkb2Vzbid0IGFscmVhZHkgcG9pbnQgdG8gYW4gb2JqZWN0LiBUaGlzIHdpbGwgZW5z
dXJlIHRoYXQgYWZ0ZXIgeW91IGNhbGwgdGhpcywKKyAgICAgICAgLy8gdGhlIE93blB0ciB3aWxs
IHBvaW50IHRvIGFuIGluc3RhbmNlIG9mIFQuIFRoaXMgaW5zdGFuY2UgbWF5IG9yIG1heSBub3Qg
aGF2ZSBiZWVuCisgICAgICAgIC8vIGNyZWF0ZWQgYnkgdGhpcyBjYWxsLiBNb3Jlb3ZlciwgdGhp
cyBjYWxsIHVzZXMgYW4gb3Bwb3J0dW5pc3RpYyB0cmFuc2FjdGlvbiwgaW4KKyAgICAgICAgLy8g
dGhhdCB3ZSBtYXkgY3JlYXRlIGFuIGluc3RhbmNlIG9mIFQgYW5kIHRoZW4gaW1tZWRpYXRlbHkg
dGhyb3cgaXQgYXdheS4KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KKyAgICAg
ICAgdm9pZCBjcmVhdGVUcmFuc2FjdGlvbmFsbHkoQXJncy4uLiBhcmdzKTsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIGV4cGxpY2l0IE93blB0cihQdHJUeXBlIHB0cikgOiBtX3B0cihwdHIpIHsg
fQpAQCAtMTg2LDYgKzE5NSwyOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuIHAu
Z2V0KCk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdGVtcGxhdGU8dHlwZW5h
bWUuLi4gQXJncz4gaW5saW5lIHZvaWQgT3duUHRyPFQ+OjpjcmVhdGVUcmFuc2FjdGlvbmFsbHko
QXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgaWYgKG1fcHRyKSB7CisgICAgICAgICAgICBX
VEY6OmxvYWRMb2FkRmVuY2UoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgVCogbmV3T2JqZWN0ID0gbmV3IFQoYXJncy4uLik7CisgICAgICAgIFdU
Rjo6c3RvcmVTdG9yZUZlbmNlKCk7CisjaWYgRU5BQkxFKENPTVBBUkVfQU5EX1NXQVApCisgICAg
ICAgIGRvIHsKKyAgICAgICAgICAgIGlmIChtX3B0cikgeworICAgICAgICAgICAgICAgIGRlbGV0
ZSBuZXdPYmplY3Q7CisgICAgICAgICAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9IHdoaWxlICghV1RG
Ojp3ZWFrQ29tcGFyZUFuZFN3YXAoYml0d2lzZV9jYXN0PHZvaWQqdm9sYXRpbGUqPigmbV9wdHIp
LCBudWxscHRyLCBuZXdPYmplY3QpKTsKKyNlbHNlCisgICAgICAgIG1fcHRyID0gbmV3T2JqZWN0
OworI2VuZGlmCisgICAgfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpPd25Q
dHI7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL1NwZWN0cnVtLmgJKHJldmlzaW9uIDE3MjE3NykKKysrIFNvdXJjZS9XVEYvd3Rm
L1NwZWN0cnVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDIyICszMiwzMSBAQAogCiBuYW1lc3BhY2Ug
V1RGIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIENvdW50ZXJUeXBlID0gdW5zaWduZWQ+CiBjbGFzcyBTcGVjdHJ1bSB7CiBwdWJsaWM6Ci0g
ICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPFQsIHVuc2lnbmVkIGxvbmc+OjppdGVyYXRvciBp
dGVyYXRvcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz46
OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOworICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFz
aE1hcDxULCBDb3VudGVyVHlwZT46Oml0ZXJhdG9yIGl0ZXJhdG9yOworICAgIHR5cGVkZWYgdHlw
ZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJh
dG9yOwogICAgIAogICAgIFNwZWN0cnVtKCkgeyB9CiAgICAgCi0gICAgdm9pZCBhZGQoY29uc3Qg
VCYga2V5LCB1bnNpZ25lZCBsb25nIGNvdW50ID0gMSkKKyAgICB2b2lkIGFkZChjb25zdCBUJiBr
ZXksIENvdW50ZXJUeXBlIGNvdW50ID0gMSkKICAgICB7Ci0gICAgICAgIHR5cGVuYW1lIEhhc2hN
YXA8VCwgdW5zaWduZWQgbG9uZz46OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBj
b3VudCk7CisgICAgICAgIGlmICghY291bnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IHR5cGVuYW1lIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9t
YXAuYWRkKGtleSwgY291bnQpOwogICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAg
ICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSArPSBjb3VudDsKICAgICB9CiAgICAgCi0g
ICAgdW5zaWduZWQgbG9uZyBnZXQoY29uc3QgVCYga2V5KSBjb25zdAorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFU+CisgICAgdm9pZCBhZGRBbGwoY29uc3QgU3BlY3RydW08VCwgVT4mIG90aGVyU3Bl
Y3RydW0pCisgICAgeworICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBvdGhlclNwZWN0cnVtKQor
ICAgICAgICAgICAgYWRkKGVudHJ5LmtleSwgZW50cnkuY291bnQpOworICAgIH0KKyAgICAKKyAg
ICBDb3VudGVyVHlwZSBnZXQoY29uc3QgVCYga2V5KSBjb25zdAogICAgIHsKICAgICAgICAgY29u
c3RfaXRlcmF0b3IgaXRlciA9IG1fbWFwLmZpbmQoa2V5KTsKICAgICAgICAgaWYgKGl0ZXIgPT0g
bV9tYXAuZW5kKCkpCkBAIC01NSw2ICs2NCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGl0
ZXItPnZhbHVlOwogICAgIH0KICAgICAKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWFwLnNpemUoKTsgfQorICAgIAogICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9t
YXAuYmVnaW4oKTsgfQogICAgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9
CiAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX21hcC5iZWdpbigp
OyB9CkBAIC02Myw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgS2V5QW5kQ291bnQgewog
ICAgICAgICBLZXlBbmRDb3VudCgpIHsgfQogICAgICAgICAKLSAgICAgICAgS2V5QW5kQ291bnQo
Y29uc3QgVCYga2V5LCB1bnNpZ25lZCBsb25nIGNvdW50KQorICAgICAgICBLZXlBbmRDb3VudChj
b25zdCBUJiBrZXksIENvdW50ZXJUeXBlIGNvdW50KQogICAgICAgICAgICAgOiBrZXkoa2V5KQog
ICAgICAgICAgICAgLCBjb3VudChjb3VudCkKICAgICAgICAgewpAQCAtODAsNyArOTEsNyBAQCBw
dWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBUIGtleTsKLSAgICAgICAgdW5zaWduZWQgbG9u
ZyBjb3VudDsKKyAgICAgICAgQ291bnRlclR5cGUgY291bnQ7CiAgICAgfTsKICAgICAKICAgICAv
LyBSZXR1cm5zIGEgbGlzdCBvcmRlcmVkIGZyb20gbG93ZXN0LWNvdW50IHRvIGhpZ2hlc3QtY291
bnQuCkBAIC05NCw4ICsxMDUsMTggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbGlzdDsKICAg
ICB9CiAgICAgCisgICAgdm9pZCBjbGVhcigpIHsgbV9tYXAuY2xlYXIoKTsgfQorICAgIAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgdm9pZCByZW1vdmVJZihjb25zdCBGdW5j
dG9yJiBmdW5jdG9yKQorICAgIHsKKyAgICAgICAgbV9tYXAucmVtb3ZlSWYoW2Z1bmN0b3JdICh0
eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6S2V5VmFsdWVQYWlyVHlwZSYgcGFpcikg
eworICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdG9yKEtleUFuZENvdW50KHBhaXIua2V5LCBw
YWlyLnZhbHVlKSk7CisgICAgICAgICAgICB9KTsKKyAgICB9CisgICAgCiBwcml2YXRlOgotICAg
IEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz4gbV9tYXA7CisgICAgSGFzaE1hcDxULCBDb3VudGVy
VHlwZT4gbV9tYXA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236852</attachid>
            <date>2014-08-19 21:02:20 -0700</date>
            <delta_ts>2014-08-20 11:27:44 -0700</delta_ts>
            <desc>getting closer</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>138291</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzI3OTQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjY1LDYgKzI2NSwxMyBAQAogCQkwRjNCM0EyODE1NDRD
OTk3MDAzRUQwRkYgLyogREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjNBMjUxNTQ0Qzk5MTAwM0VEMEZG
IC8qIERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjNCM0EyQjE1NDc1MDAwMDAzRUQwRkYgLyogREZH
VmFsaWRhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYzQjNBMjkxNTQ3NEZGNDAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmNwcCAqLzsgfTsKIAkJ
MEYzQjNBMkMxNTQ3NTAwMjAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCM0EyQTE1NDc0RkY0MDAzRUQwRkYg
LyogREZHVmFsaWRhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRjNCN0UyNjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTIwMTlBMTFCODAw
MEQ5QkM1NiAvKiBDYWxsRWRnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGM0I3RTI3MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2Zp
bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
QjdFMjExOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAgKi87IH07CisJCTBG
M0I3RTI4MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTIyMTlBMTFCODAwMEQ5QkM1
NiAvKiBDYWxsRWRnZVByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRjNCN0UyOTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9m
aWxlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYzQjdFMjMxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZUlubGluZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjNCN0Uy
QTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMjQxOUExMUI4MDAwRDlCQzU2IC8qIENh
bGxWYXJpYW50LmNwcCAqLzsgfTsKKwkJMEYzQjdFMkIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxW
YXJpYW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjNCN0UyNTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjNCN0UyRDE5QTEyQUFFMDBEOUJD
NTYgLyogQ2FsbEVkZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYzQjdFMkMxOUExMkFBRTAwRDlCQzU2IC8qIENhbGxFZGdlLmNwcCAqLzsgfTsK
IAkJMEYzRDBCQkMxOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRDBCQkEx
OTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suY3BwICovOyB9OwogCQkw
RjNEMEJCRDE5NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRDBCQkIxOTRBNDE0
MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQyNkE0ODE0NjBDQkIzMDAxMzFGOEYg
LyogVmFsdWVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0MjZBNDUxNDYwQ0JBQjAwMTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjE2OSw2ICsy
MTc2LDEzIEBACiAJCTBGM0IzQTI1MTU0NEM5OTEwMDNFRDBGRiAvKiBERkdDRkdTaW1wbGlmaWNh
dGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NGR1NpbXBs
aWZpY2F0aW9uUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0IzQTI5MTU0NzRGRjQwMDNFRDBGRiAv
KiBERkdWYWxpZGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBE
RkdWYWxpZGF0ZS5jcHA7IHBhdGggPSBkZmcvREZHVmFsaWRhdGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjNCM0EyQTE1NDc0RkY0MDAzRUQwRkYgLyogREZHVmFsaWRhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVmFsaWRhdGUuaDsgcGF0aCA9
IGRmZy9ERkdWYWxpZGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0Uy
MDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ2FsbEVkZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzQjdF
MjExOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsRWRnZVByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjNCN0UyMjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9m
aWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxFZGdlUHJvZmlsZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyMzE5QTExQjgwMDBEOUJDNTYg
LyogQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGM0I3RTI0MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsVmFyaWFudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGM0I3RTI1MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsVmFyaWFudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyQzE5QTEyQUFFMDBEOUJDNTYgLyogQ2Fs
bEVkZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbEVkZ2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNEMEJCQTE5NEE0MTQzMDBGQzlD
RjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDb25zdGFudFN0cnVjdHVyZUNoZWNrLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEYzRDBCQkIxOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0
dXJlQ2hlY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RhbnRTdHJ1
Y3R1cmVDaGVjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQyNkE0NTE0NjBD
QkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01
MTQ0LDExICs1MTU4LDE4IEBACiAJCQkJMEY2NjZFQkUxODM1NjZGOTAwRDAxN0YxIC8qIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCAqLywKIAkJCQkwRjg4NUUxMDE4NDlBM0JFMDBG
MUUzRkEgLyogQnl0ZWNvZGVVc2VEZWYuaCAqLywKIAkJCQkwRjgwMjNFOTE2MTM4MzIzMDBBMEJB
NDUgLyogQnlWYWxJbmZvLmggKi8sCisJCQkJMEYzQjdFMkMxOUExMkFBRTAwRDlCQzU2IC8qIENh
bGxFZGdlLmNwcCAqLywKKwkJCQkwRjNCN0UyMDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2Uu
aCAqLywKKwkJCQkwRjNCN0UyMTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmNw
cCAqLywKKwkJCQkwRjNCN0UyMjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmgg
Ki8sCisJCQkJMEYzQjdFMjMxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZUlubGlu
ZXMuaCAqLywKIAkJCQkwRjBCODNBRTE0QkNGNzE0MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmNw
cCAqLywKIAkJCQkwRjBCODNBRjE0QkNGNzE0MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmggKi8s
CiAJCQkJMEY5MzMyOTMxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmNwcCAqLywK
IAkJCQkwRjkzMzI5NDE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuaCAqLywKIAkJ
CQkwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVP
ZmZzZXQuaCAqLywKKwkJCQkwRjNCN0UyNDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQu
Y3BwICovLAorCQkJCTBGM0I3RTI1MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5oICov
LAogCQkJCTk2OUEwNzkwMEVEMUQzQUUwMEYxRjY4MSAvKiBDb2RlQmxvY2suY3BwICovLAogCQkJ
CTk2OUEwNzkxMEVEMUQzQUUwMEYxRjY4MSAvKiBDb2RlQmxvY2suaCAqLywKIAkJCQkwRjhGOTQz
RDE2Njc2MzJEMDBENjE5NzEgLyogQ29kZUJsb2NrSGFzaC5jcHAgKi8sCkBAIC01ODc3LDYgKzU4
OTgsNyBAQAogCQkJCTBGRkZDOTVBMTRFRjkwQTkwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYyRkM3NzMxNkUxMkY3NDAwMzhEOTc2IC8qIERGR0RDRVBoYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjhGMkI5QTE3MkYwNTAxMDA3REJEQTUgLyogREZHRGVz
aXJlZElkZW50aWZpZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjNCN0UyODE5QTExQjgwMDBE
OUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkMwRjdDRTE3
QkJGQzVCMDA0NjRGRTQgLyogREZHRGVzaXJlZFRyYW5zaXRpb25zLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkU4NTM0QzE3MjNDREE1MDBCNjE4RjUgLyogREZHRGVzaXJlZFdhdGNocG9pbnRzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDMjk4MUZEOTE3QkFFRTRCMDBBM0JDOTggLyogREZHRGVzaXJl
ZFdlYWtSZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLywKQEAgLTYxNDYsNiArNjE2OCw3IEBACiAJ
CQkJMEY3NjZEMzExNUFBODExMjAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjc2NkQyQzE1QThDQzNBMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTE0QzUyNDJCMEY1MzU1RTkwMEJBM0QwNCAvKiBKSVRTdHVi
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYzQjdFMkIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxW
YXJpYW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUY2ODM1RTE3NDM0M0NDMDBBMzJFMjUgLyog
SklUU3R1YnNBUk0uaCBpbiBIZWFkZXJzICovLAogCQkJCUZFRjY4MzVGMTc0MzQzQ0MwMEEzMkUy
NSAvKiBKSVRTdHVic0FSTXY3LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUY2ODM2MTE3NDM0M0ND
MDBBMzJFMjUgLyogSklUU3R1YnNYODYuaCBpbiBIZWFkZXJzICovLApAQCAtNjE1Nyw2ICs2MTgw
LDcgQEAKIAkJCQlBNzZGNTRBMzEzQjI4QUFCMDBFRjJCQ0UgLyogSklUV3JpdGVCYXJyaWVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxNjBFMTZGNUNEMDBCMzQ0NjAgLyogSlNBY3RpdmF0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDA0ODAxMzEwMjFBMUQ5MDA4RTdGMDEgLyogSlNB
UElWYWx1ZVdyYXBwZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGM0I3RTI5MTlBMTFCODAwMEQ5
QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkNG
MzlDMjE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNzYxNDBEMjE4Mjk4MkNCMDA3NTA2MjQgLyogSlNBcmd1bWVudHNJdGVyYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTcwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQXJyYXku
aCBpbiBIZWFkZXJzICovLApAQCAtNjQ3MSw2ICs2NDk1LDcgQEAKIAkJCQlFNDlEQzE2QzEyRUYy
OTRFMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTQ5REMxNkQxMkVGMjk1MzAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkI3RjM5RTE1RUQ4RTQ2MDBGMTY3QjIgLyogU3BhcnNlQXJyYXlW
YWx1ZU1hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYzQjdFMjYxOUExMUI4MDAwRDlCQzU2IC8q
IENhbGxFZGdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzM4NjU1NDExODY5N0I0MDA1NDAyNzkg
LyogU3BlY2lhbGl6ZWRUaHVua0pJVC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NTQxQjIxNjEz
QzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4
MkU1NDE0MURBRUVFMDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5cGUuaCBpbiBIZWFkZXJzICovLApA
QCAtNzMyNCw2ICs3MzQ5LDcgQEAKIAkJCQkwRjIzNUJENTE3MTc4RTFDMDA2OTBDN0YgLyogRlRM
RXhpdEFyZ3VtZW50Rm9yT3BlcmFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJEODE3
MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdFRodW5rR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGMjM1QkRBMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0VmFsdWUuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMEYzQjdFMjcxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmls
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0YyOTk2QjE3QTBCQjY3MDAxMDQxN0EgLyogRlRM
RmFpbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4QTMxOTE3RDUxRjIyMDBDQTJDNDAgLyog
RlRMRm9yT1NSRW50cnlKSVRDb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjVGMUFGMTgx
NjM1RjMwMDUyMkYzOSAvKiBGVExJbmxpbmVDYWNoZVNpemUuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC03NTEwLDYgKzc1MzYsNyBAQAogCQkJCTBGNDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAvKiBMTElu
dERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzOEIwMTExN0NGMDc4MDAwQjE0NEQzIC8q
IExMSW50RW50cnlwb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ2ODBBODE0QkE3RkFC
MDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGM0I3
RTJEMTlBMTJBQUUwMEQ5QkM1NiAvKiBDYWxsRWRnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRTbG93UGF0aHMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGQ0VGQUNEMTgwNUU3NTUwMDQ3MkNFNCAvKiBMTFZNQVBJLmNwcCBp
biBTb3VyY2VzICovLApAQCAtNzY3MCw2ICs3Njk3LDcgQEAKIAkJCQkxNEU4NEZBMDE0RUUxQUND
MDBENkQ1RDQgLyogV2Vha1NldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyQTRFQzkwQjE4NjBE
NkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGQzgxNTBCMTQwNDNDMEUwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTBGM0I3RTJBMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0U1QUIzQTE3OTlFNEIyMDBEMjgzM0QgLyogWDg2RGlz
YXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2M0M2RDlDMTUyMTExMUEwMDU4NUU0
RSAvKiBZYXJyQ2Fub25pY2FsaXplVUNTMi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI4
NDEyREJBMzM3MDBBOUZFN0IgLyogWWFyckludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDYWxs
RWRnZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBDYWxsRWRnZTo6ZHVtcChQcmludFN0
cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludCgiPCIsIG1fY2FsbGVlLCAiLCBjb3Vu
dDogIiwgbV9jb3VudCwgIj4iKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZS5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIENhbGxFZGdlX2gKKyNkZWZpbmUgQ2FsbEVkZ2VfaAorCisjaW5jbHVk
ZSAiQ2FsbFZhcmlhbnQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3R5cGVkZWYgdWludDE2X3Qg
Q2FsbEVkZ2VDb3VudFR5cGU7CisKK2NsYXNzIENhbGxFZGdlIHsKK3B1YmxpYzoKKyAgICBDYWxs
RWRnZSgpOworICAgIENhbGxFZGdlKENhbGxWYXJpYW50IGNhbGxlZSwgQ2FsbEVkZ2VDb3VudFR5
cGUgY291bnQpOworICAgIAorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1f
Y2FsbGVlOyB9CisgICAgCisgICAgQ2FsbFZhcmlhbnQgY2FsbGVlKCkgY29uc3QgeyByZXR1cm4g
bV9jYWxsZWU7IH0KKyAgICBDYWxsRWRnZUNvdW50VHlwZSBjb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fY291bnQ7IH0KKyAgICAKKyAgICBDYWxsRWRnZSBkZXNwZWNpZmllZENsb3N1cmUoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIENhbGxFZGdlKG1fY2FsbGVlLmRlc3BlY2lmaWVkQ2xv
c3VyZSgpLCBtX2NvdW50KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Q7CisgICAgCitwdWJsaWM6CisgICAgQ2FsbFZhcmlhbnQgbV9jYWxsZWU7CisgICAg
Q2FsbEVkZ2VDb3VudFR5cGUgbV9jb3VudDsKK307CisKK2lubGluZSBDYWxsRWRnZTo6Q2FsbEVk
Z2UoQ2FsbFZhcmlhbnQgY2FsbGVlLCBDYWxsRWRnZUNvdW50VHlwZSBjb3VudCkKKyAgICA6IG1f
Y2FsbGVlKGNhbGxlZSkKKyAgICAsIG1fY291bnQoY291bnQpCit7Cit9CisKK2lubGluZSBDYWxs
RWRnZTo6Q2FsbEVkZ2UoKQorICAgIDogQ2FsbEVkZ2UoQ2FsbFZhcmlhbnQoKSwgMCkKK3sKK30K
KwordHlwZWRlZiBWZWN0b3I8Q2FsbEVkZ2UsIDE+IENhbGxFZGdlTGlzdDsKKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDYWxsRWRnZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNh
bGxFZGdlUHJvZmlsZS5oIgorCisjaW5jbHVkZSAiQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oIgor
I2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgorI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKKyNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitDYWxsRWRnZUxpc3Qg
Q2FsbEVkZ2VQcm9maWxlOjpjYWxsRWRnZXMoKSBjb25zdAoreworICAgIENvbmN1cnJlbnRKSVRM
b2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCisgICAgQ2FsbEVkZ2VMaXN0IHJlc3VsdDsKKyAg
ICAKKyAgICBDYWxsVmFyaWFudCBwcmltYXJ5Q2FsbGVlID0gbV9wcmltYXJ5Q2FsbGVlOworICAg
IGZsb2F0IG51bUNhbGxzVG9QcmltYXJ5ID0gbV9udW1DYWxsc1RvUHJpbWFyeTsKKyAgICAvLyBE
ZWZlbmQgYWdhaW5zdCByYWNlcy4gVGhlc2UgZmllbGRzIGFyZSBtb2RpZmllZCBieSB0aGUgbG9n
IHByb2Nlc3NvciB3aXRob3V0IGxvY2tpbmcuCisgICAgaWYgKCEhcHJpbWFyeUNhbGxlZSAmJiBu
dW1DYWxsc1RvUHJpbWFyeSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZChDYWxsRWRnZShwcmltYXJ5
Q2FsbGVlLCBudW1DYWxsc1RvUHJpbWFyeSkpOworICAgIAorICAgIGlmIChtX290aGVyQ2FsbGVl
cykgeworICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBpZiB0aGUgcHJpbWFyeSB0aHJlYWQgaGFk
IGp1c3QgY3JlYXRlZCBhIG1fb3RoZXJDYWxsZXMgd2hpbGUgbG9nCisgICAgICAgIC8vIHByb2Nl
c3NpbmcsIHdlIHNlZSBhIGNvbnNpc3RlbnRseSBjcmVhdGVkIG9uZS4gVGhlIGxvY2sgYmVpbmcg
aGVsZCBpcyBpbnN1ZmZpY2llbnQgZm9yCisgICAgICAgIC8vIHRoaXMsIHNpbmNlIHRoZSBsb2cg
cHJvY2Vzc29yIHdpbGwgb25seSBncmFiIHRoZSBsb2NrIHdoZW4gbWVyZ2luZyB0aGUgc2Vjb25k
YXJ5CisgICAgICAgIC8vIHNwZWN0cnVtIGludG8gdGhlIHByaW1hcnkgb25lIGJ1dCBtYXkgc3Rp
bGwgY3JlYXRlIHRoZSBkYXRhIHN0cnVjdHVyZSB3aXRob3V0IGhvbGRpbmcKKyAgICAgICAgLy8g
bG9ja3MuCisgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOworICAgICAgICBmb3IgKENhbGxF
ZGdlIGVudHJ5IDogbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkKSB7CisgICAgICAgICAgICAv
LyBEZWZlbmQgYWdhaW5zdCB0aGUgcG9zc2liaWxpdHkgdGhhdCB0aGUgcHJpbWFyeSBkdXBsaWNh
dGVzIGFuIGVudHJ5IGluIHRoZSBzZWNvbmRhcnkKKyAgICAgICAgICAgIC8vIHNwZWN0cnVtLiBU
aGF0IGNhbiBoYXBwZW4gd2hlbiB0aGUgR0MgcmVtb3ZlcyB0aGUgcHJpbWFyeS4gV2UgY291bGQg
aGF2ZSB0aGUgR0MgZml4CisgICAgICAgICAgICAvLyB0aGUgc2l0dWF0aW9uIGJ5IGNoYW5naW5n
IHRoZSBwcmltYXJ5IHRvIGJlIHNvbWV0aGluZyBmcm9tIHRoZSBzZWNvbmRhcnkgc3BlY3RydW0s
CisgICAgICAgICAgICAvLyBidXQgdGhpcyBmaXggc2VlbXMgc2ltcGxlciB0byBpbXBsZW1lbnQg
YW5kIGFsc28gY2hlYXBlci4KKyAgICAgICAgICAgIGlmIChlbnRyeS5jYWxsZWUoKSA9PSByZXN1
bHRbMF0uY2FsbGVlKCkpIHsKKyAgICAgICAgICAgICAgICByZXN1bHRbMF0gPSBDYWxsRWRnZShy
ZXN1bHRbMF0uY2FsbGVlKCksIGVudHJ5LmNvdW50KCkgKyByZXN1bHRbMF0uY291bnQoKSk7Cisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZW50cnkpOworICAgICAgICB9CisgICAgfQorICAgIAor
ICAgIHN0ZDo6c29ydChyZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpLCBbXSAoY29uc3QgQ2Fs
bEVkZ2UmIGEsIGNvbnN0IENhbGxFZGdlJiBiKSAtPiBib29sIHsKKyAgICAgICAgICAgIHJldHVy
biBhLmNvdW50KCkgPiBiLmNvdW50KCk7CisgICAgICAgIH0pOworICAgIAorICAgIGlmIChyZXN1
bHQuc2l6ZSgpID49IDIpCisgICAgICAgIEFTU0VSVChyZXN1bHRbMF0uY291bnQoKSA+IHJlc3Vs
dC5sYXN0KCkuY291bnQoKSk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQ2FsbEVk
Z2VDb3VudFR5cGUgQ2FsbEVkZ2VQcm9maWxlOjpudW1DYWxsc1RvS25vd25DZWxscygpIGNvbnN0
Cit7CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgcmVzdWx0ID0gMDsKKyAgICBmb3IgKENhbGxFZGdl
IGVkZ2UgOiBjYWxsRWRnZXMoKSkKKyAgICAgICAgcmVzdWx0ICs9IGVkZ2UuY291bnQoKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgYm9vbCB3b3J0aERlc3BlY2lmeWluZyhjb25z
dCBDYWxsVmFyaWFudCYgdmFyaWFudCkKK3sKKyAgICByZXR1cm4gIUhlYXA6OmlzTWFya2VkKHZh
cmlhbnQucmF3Q2FsbGVlQ2VsbCgpKQorICAgICAgICAmJiBIZWFwOjppc01hcmtlZCh2YXJpYW50
LmRlc3BlY2lmaWVkQ2xvc3VyZSgpLnJhd0NhbGxlZUNlbGwoKSk7Cit9CisKK2Jvb2wgQ2FsbEVk
Z2VQcm9maWxlOjp3b3J0aERlc3BlY2lmeWluZygpCit7CisgICAgaWYgKG1fY2xvc3VyZXNBcmVE
ZXNwZWNpZmllZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghIW1fcHJp
bWFyeUNhbGxlZSAmJiAhSlNDOjp3b3J0aERlc3BlY2lmeWluZyhtX3ByaW1hcnlDYWxsZWUpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5zaXpl
KCk7IGktLTspIHsKKyAgICAgICAgICAgIGlmICghSlNDOjp3b3J0aERlc3BlY2lmeWluZyhtX290
aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCkpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kwordm9pZCBDYWxsRWRnZVByb2ZpbGU6OnZpc2l0V2VhaygpCit7CisgICAgaWYgKCFtX3ByaW1h
cnlDYWxsZWUgJiYgIW1fb3RoZXJDYWxsZWVzKQorICAgICAgICByZXR1cm47CisgICAgCisgICAg
Q29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAKKyAgICAvLyBTZWUgaWYg
YW55dGhpbmcgaXMgZGVhZCBhbmQgaWYgdGhhdCBjYW4gYmUgcmVjdGlmaWVkIGJ5IGRlc3BlY2lm
eWluZy4KKyAgICBpZiAod29ydGhEZXNwZWNpZnlpbmcoKSkgeworICAgICAgICBDYWxsU3BlY3Ry
dW0gbmV3U3BlY3RydW07CisgICAgICAgIAorICAgICAgICBpZiAoISFtX3ByaW1hcnlDYWxsZWUp
CisgICAgICAgICAgICBuZXdTcGVjdHJ1bS5hZGQobV9wcmltYXJ5Q2FsbGVlLmRlc3BlY2lmaWVk
Q2xvc3VyZSgpLCBtX251bUNhbGxzVG9QcmltYXJ5KTsKKyAgICAgICAgCisgICAgICAgIGlmICht
X290aGVyQ2FsbGVlcykgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9vdGhlckNh
bGxlZXMtPm1fcHJvY2Vzc2VkLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgICAgIG5ld1Nw
ZWN0cnVtLmFkZCgKKyAgICAgICAgICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vz
c2VkW2ldLmNhbGxlZSgpLmRlc3BlY2lmaWVkQ2xvc3VyZSgpLAorICAgICAgICAgICAgICAgICAg
ICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQoKSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgVmVjdG9y
PENhbGxTcGVjdHJ1bTo6S2V5QW5kQ291bnQ+IGxpc3QgPSBuZXdTcGVjdHJ1bS5idWlsZExpc3Qo
KTsKKyAgICAgICAgQVNTRVJUKGxpc3Quc2l6ZSgpKTsKKyAgICAgICAgbV9wcmltYXJ5Q2FsbGVl
ID0gbGlzdC5sYXN0KCkua2V5OworICAgICAgICBtX251bUNhbGxzVG9QcmltYXJ5ID0gbGlzdC5s
YXN0KCkuY291bnQ7CisgICAgICAgIAorICAgICAgICBBU1NFUlQoISFtX290aGVyQ2FsbGVlcyA9
PSAobGlzdC5zaXplKCkgPj0gMikpOworICAgICAgICBpZiAobV9vdGhlckNhbGxlZXMpIHsKKyAg
ICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5jbGVhcigpOworICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbGlzdC5zaXplKCkgLSAxOyBpLS07KQorICAgICAgICAgICAg
ICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5hcHBlbmQoQ2FsbEVkZ2UobGlzdFtpXS5r
ZXksIGxpc3RbaV0uY291bnQpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbV9jbG9z
dXJlc0FyZURlc3BlY2lmaWVkID0gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgCisgICAgaWYgKCEhbV9wcmltYXJ5Q2FsbGVlICYmICFIZWFwOjppc01hcmtlZCht
X3ByaW1hcnlDYWxsZWUucmF3Q2FsbGVlQ2VsbCgpKSkgeworICAgICAgICBtX251bUNhbGxzVG9V
bmtub3duQ2VsbCArPSBtX251bUNhbGxzVG9QcmltYXJ5OworICAgICAgICAKKyAgICAgICAgbV9w
cmltYXJ5Q2FsbGVlID0gQ2FsbFZhcmlhbnQoKTsKKyAgICAgICAgbV9udW1DYWxsc1RvUHJpbWFy
eSA9IDA7CisgICAgfQorICAgIAorICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLnNpemUo
KTsgaSsrKSB7CisgICAgICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQobV9vdGhlckNhbGxlZXMt
Pm1fcHJvY2Vzc2VkW2ldLmNhbGxlZSgpLnJhd0NhbGxlZUNlbGwoKSkpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fbnVtQ2FsbHNUb1Vua25v
d25DZWxsICs9IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jb3VudCgpOworICAgICAg
ICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ktLV0gPSBtX290aGVyQ2FsbGVlcy0+
bV9wcm9jZXNzZWQubGFzdCgpOworICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vz
c2VkLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gT25seSBl
eGlzdHMgd2hpbGUgd2UgYXJlIHByb2Nlc3NpbmcgdGhlIGxvZy4KKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoIW1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtKTsKKyAgICB9Cit9CisK
K3ZvaWQgQ2FsbEVkZ2VQcm9maWxlOjphZGRTbG93KENhbGxWYXJpYW50IGNhbGxlZSwgQ2FsbEVk
Z2VQcm9maWxlVmVjdG9yJiBtZXJnZUJhY2tMb2cpCit7CisgICAgLy8gVGhpcyBleGlzdHMgdG8g
aGFuZGxlIGNhc2VzIHdoZXJlIHRoZSBzcGVjdHJ1bSB3YXNuJ3QgY3JlYXRlZCB5ZXQsIG9yIHdl
J3JlIHN0b3JpbmcgdG8gYQorICAgIC8vIHBhcnRpY3VsYXIgc3BlY3RydW0gZm9yIHRoZSBmaXJz
dCB0aW1lIGR1cmluZyBhIGxvZyBwcm9jZXNzaW5nIGl0ZXJhdGlvbi4KKyAgICAKKyAgICBpZiAo
IW1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgIG1fb3RoZXJDYWxsZWVzID0gc3RkOjptYWtlX3Vu
aXF1ZTxTZWNvbmRhcnk+KCk7CisgICAgICAgIC8vIElmIGEgY29tcGlsZXIgdGhyZWFkIG5vdGlj
ZXMgdGhlIG1fb3RoZXJDYWxsZWVzIGJlaW5nIG5vbi1udWxsLCB3ZSB3YW50IHRvIG1ha2Ugc3Vy
ZQorICAgICAgICAvLyB0aGF0IGl0IHNlZXMgYSBmdWxseSBjcmVhdGVkIG9uZS4KKyAgICAgICAg
V1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKKyAgICB9CisgICAgCisgICAgaWYgKCFtX290aGVyQ2Fs
bGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSkgeworICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV90
ZW1wb3JhcnlTcGVjdHJ1bSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbFNwZWN0cnVtPigpOworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgp
OyBpLS07KSB7CisgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1
bS0+YWRkKAorICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5j
YWxsZWUoKSwKKyAgICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0u
Y291bnQoKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhh
dCB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHdlJ3JlIHNlZWluZyB0aGlzIHByb2ZpbGUgZHVyaW5n
IHRoaXMgbG9nCisgICAgICAgIC8vIHByb2Nlc3NpbmcgaXRlcmF0aW9uLgorICAgICAgICBtZXJn
ZUJhY2tMb2cuYXBwZW5kKHRoaXMpOworICAgIH0KKyAgICAKKyAgICBtX290aGVyQ2FsbGVlcy0+
bV90ZW1wb3JhcnlTcGVjdHJ1bS0+YWRkKGNhbGxlZSk7Cit9CisKK3ZvaWQgQ2FsbEVkZ2VQcm9m
aWxlOjptZXJnZUJhY2soKQoreworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9j
ayk7CisgICAgCisgICAgQVNTRVJUKG1fb3RoZXJDYWxsZWVzKTsKKyAgICBBU1NFUlQobV9vdGhl
ckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0pOworICAgIAorICAgIGlmICghIW1fcHJpbWFy
eUNhbGxlZSkKKyAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0tPmFk
ZChtX3ByaW1hcnlDYWxsZWUsIG1fbnVtQ2FsbHNUb1ByaW1hcnkpOworICAgIAorICAgIGlmICgh
bV9jbG9zdXJlc0FyZURlc3BlY2lmaWVkKSB7CisgICAgICAgIENhbGxTcGVjdHJ1bSBuZXdTcGVj
dHJ1bTsKKyAgICAgICAgZm9yIChhdXRvIGVudHJ5IDogKm1fb3RoZXJDYWxsZWVzLT5tX3RlbXBv
cmFyeVNwZWN0cnVtKQorICAgICAgICAgICAgbmV3U3BlY3RydW0uYWRkKGVudHJ5LmtleS5kZXNw
ZWNpZmllZENsb3N1cmUoKSwgZW50cnkudmFsdWUpOworICAgICAgICAKKyAgICAgICAgaWYgKG5l
d1NwZWN0cnVtLnNpemUoKSA8IG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5z
aXplKCkpIHsKKyAgICAgICAgICAgICptX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1
bSA9IG5ld1NwZWN0cnVtOworICAgICAgICAgICAgbV9jbG9zdXJlc0FyZURlc3BlY2lmaWVkID0g
dHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBWZWN0b3I8Q2FsbFNwZWN0cnVtOjpL
ZXlBbmRDb3VudD4gbGlzdCA9IG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5i
dWlsZExpc3QoKTsKKyAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSA9IG51
bGxwdHI7CisgICAgCisgICAgbV9wcmltYXJ5Q2FsbGVlID0gbGlzdC5sYXN0KCkua2V5OworICAg
IG1fbnVtQ2FsbHNUb1ByaW1hcnkgPSBsaXN0Lmxhc3QoKS5jb3VudDsKKyAgICBsaXN0LnJlbW92
ZUxhc3QoKTsKKyAgICAKKyAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuY2xlYXIoKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGNvdW50ID0gbWF4S25vd25DYWxsZWVzOyBjb3VudC0tICYmICFs
aXN0LmlzRW1wdHkoKTspIHsKKyAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLmFw
cGVuZChDYWxsRWRnZShsaXN0Lmxhc3QoKS5rZXksIGxpc3QubGFzdCgpLmNvdW50KSk7CisgICAg
ICAgIGxpc3QucmVtb3ZlTGFzdCgpOworICAgIH0KKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSBsaXN0LnNpemUoKTsgaS0tOykKKyAgICAgICAgbV9udW1DYWxsc1RvVW5rbm93bkNlbGwgKz0g
bGlzdFtpXS5jb3VudDsKK30KKwordm9pZCBDYWxsRWRnZVByb2ZpbGU6OmZhZGVCeUhhbGYoKQor
eworICAgIG1fbnVtQ2FsbHNUb1ByaW1hcnkgPj49IDE7CisgICAgbV9udW1DYWxsc1RvTm90Q2Vs
bCA+Pj0gMTsKKyAgICBtX251bUNhbGxzVG9Vbmtub3duQ2VsbCA+Pj0gMTsKKyAgICBtX3RvdGFs
Q291bnQgPj49IDE7CisgICAgCisgICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5zaXplKCk7IGktLTsp
IHsKKyAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXSA9IENhbGxFZGdl
KAorICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jYWxsZWUo
KSwKKyAgICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQo
KSA+PiAxKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKG1fb3RoZXJDYWxsZWVz
LT5tX3RlbXBvcmFyeVNwZWN0cnVtKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiAq
bV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0pCisgICAgICAgICAgICAgICAgZW50
cnkudmFsdWUgPj49IDE7CisgICAgICAgIH0KKyAgICB9Cit9CisKK0NhbGxFZGdlTG9nOjpDYWxs
RWRnZUxvZygpCisgICAgOiBtX3NjYWxlZExvZ0luZGV4KGxvZ1NpemUgKiBzaXplb2YoRW50cnkp
KQoreworICAgIGRhdGFMb2coIkNyZWF0ZWQgY2FsbCBlZGdlIGxvZzogIiwgUmF3UG9pbnRlcih0
aGlzKSwgIlxuIik7CisgICAgQVNTRVJUKCEobV9zY2FsZWRMb2dJbmRleCAlIHNpemVvZihFbnRy
eSkpKTsKK30KKworQ2FsbEVkZ2VMb2c6On5DYWxsRWRnZUxvZygpIHsgfQorCitib29sIENhbGxF
ZGdlTG9nOjppc0VuYWJsZWQoKQoreworICAgIHJldHVybiBPcHRpb25zOjplbmFibGVDYWxsRWRn
ZVByb2ZpbGluZygpICYmIE9wdGlvbnM6OnVzZUZUTEpJVCgpOworfQorCisjaWYgRU5BQkxFKEpJ
VCkKKworZXh0ZXJuICJDIiBKSVRfT1BFUkFUSU9OIHZvaWQgb3BlcmF0aW9uUHJvY2Vzc0NhbGxF
ZGdlTG9nKENhbGxFZGdlTG9nKikgV1RGX0lOVEVSTkFMOworZXh0ZXJuICJDIiBKSVRfT1BFUkFU
SU9OIHZvaWQgb3BlcmF0aW9uUHJvY2Vzc0NhbGxFZGdlTG9nKENhbGxFZGdlTG9nKiBsb2cpCit7
CisgICAgbG9nLT5wcm9jZXNzTG9nKCk7Cit9CisKK3ZvaWQgQ2FsbEVkZ2VMb2c6OmVtaXRMb2dD
b2RlKENDYWxsSGVscGVycyYgaml0LCBDYWxsRWRnZVByb2ZpbGUmIHByb2ZpbGUsIEpTVmFsdWVS
ZWdzIGNhbGxlZVJlZ3MpCit7CisgICAgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHMg
PSAxOworICAgIAorICAgIEdQUlJlZyBzY3JhdGNoR1BSOworICAgIGlmICghY2FsbGVlUmVncy51
c2VzKEdQUkluZm86OnJlZ1QwKSkKKyAgICAgICAgc2NyYXRjaEdQUiA9IEdQUkluZm86OnJlZ1Qw
OworICAgIGVsc2UgaWYgKCFjYWxsZWVSZWdzLnVzZXMoR1BSSW5mbzo6cmVnVDEpKQorICAgICAg
ICBzY3JhdGNoR1BSID0gR1BSSW5mbzo6cmVnVDE7CisgICAgZWxzZQorICAgICAgICBzY3JhdGNo
R1BSID0gR1BSSW5mbzo6cmVnVDI7CisgICAgCisgICAgaml0LmxvYWQzMigmbV9zY2FsZWRMb2dJ
bmRleCwgc2NyYXRjaEdQUik7CisgICAgCisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG9rID0gaml0
LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIHNjcmF0Y2hHUFIpOworICAgIAor
ICAgIEFTU0VSVChzdGFja0FsaWdubWVudFJlZ2lzdGVycygpID49IDEgKyBudW1iZXJPZkFyZ3Vt
ZW50cyk7CisgICAgCisgICAgaml0LnN1YlB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihz
dGFja0FsaWdubWVudEJ5dGVzKCkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVy
KTsKKyAgICAKKyAgICBqaXQuc3RvcmVWYWx1ZShjYWxsZWVSZWdzLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2l6ZW9mKEpTVmFsdWUp
KSk7CisgICAgaml0LnNldHVwQXJndW1lbnRzKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih0
aGlzKSk7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2Vf
Y2FzdDx2b2lkKj4ob3BlcmF0aW9uUHJvY2Vzc0NhbGxFZGdlTG9nKSksIEdQUkluZm86Om5vbkFy
Z0dQUjApOworICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIGppdC5sb2Fk
VmFsdWUoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIsIHNpemVvZihKU1ZhbHVlKSksIGNhbGxlZVJlZ3MpOworICAgIAorICAgIGppdC5hZGRQ
dHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhY2tBbGlnbm1lbnRCeXRlcygpKSwgQ0Nh
bGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgCisgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobG9nU2l6ZSAqIHNpemVvZihFbnRyeSkpLCBzY3JhdGNo
R1BSKTsKKyAgICBvay5saW5rKCZqaXQpOworCisgICAgaml0LnN1YjMyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKHNpemVvZihFbnRyeSkpLCBzY3JhdGNoR1BSKTsKKyAgICBqaXQuc3RvcmUz
MihzY3JhdGNoR1BSLCAmbV9zY2FsZWRMb2dJbmRleCk7CisgICAgaml0LmFkZFB0cihDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIobV9sb2cpLCBzY3JhdGNoR1BSKTsKKyAgICBqaXQuc3RvcmVW
YWx1ZShjYWxsZWVSZWdzLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwgT0JKRUNU
X09GRlNFVE9GKEVudHJ5LCBtX3ZhbHVlKSkpOworICAgIGppdC5zdG9yZVB0cihDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoJnByb2ZpbGUpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRj
aEdQUiwgT0JKRUNUX09GRlNFVE9GKEVudHJ5LCBtX3Byb2ZpbGUpKSk7Cit9CisKK3ZvaWQgQ2Fs
bEVkZ2VMb2c6OmVtaXRMb2dDb2RlKAorICAgIENDYWxsSGVscGVycyYgaml0LCBPd25QdHI8Q2Fs
bEVkZ2VQcm9maWxlPiYgcHJvZmlsZVBvaW50ZXIsIEpTVmFsdWVSZWdzIGNhbGxlZVJlZ3MpCit7
CisgICAgaWYgKCFpc0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHByb2Zp
bGVQb2ludGVyLmNyZWF0ZVRyYW5zYWN0aW9uYWxseSgpOworICAgIGVtaXRMb2dDb2RlKGppdCwg
KnByb2ZpbGVQb2ludGVyLCBjYWxsZWVSZWdzKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShKSVQp
CisKK3ZvaWQgQ2FsbEVkZ2VMb2c6OnByb2Nlc3NMb2coKQoreworICAgIEFTU0VSVCghKG1fc2Nh
bGVkTG9nSW5kZXggJSBzaXplb2YoRW50cnkpKSk7CisgICAgCisgICAgQ2FsbEVkZ2VQcm9maWxl
VmVjdG9yIG1lcmdlQmFja0xvZzsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3NjYWxl
ZExvZ0luZGV4IC8gc2l6ZW9mKEVudHJ5KTsgaSA8IGxvZ1NpemU7ICsraSkKKyAgICAgICAgbV9s
b2dbaV0ubV9wcm9maWxlLT5hZGQobV9sb2dbaV0ubV92YWx1ZSwgbWVyZ2VCYWNrTG9nKTsKKyAg
ICAKKyAgICBtX3NjYWxlZExvZ0luZGV4ID0gbG9nU2l6ZSAqIHNpemVvZihFbnRyeSk7CisgICAg
CisgICAgZm9yICh1bnNpZ25lZCBpID0gbWVyZ2VCYWNrTG9nLnNpemUoKTsgaS0tOykKKyAgICAg
ICAgbWVyZ2VCYWNrTG9nW2ldLT5tZXJnZUJhY2soKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQ
cm9maWxlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbEVkZ2VQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDYWxsRWRn
ZVByb2ZpbGVfaAorI2RlZmluZSBDYWxsRWRnZVByb2ZpbGVfaAorCisjaW5jbHVkZSAiQ2FsbEVk
Z2UuaCIKKyNpbmNsdWRlICJDYWxsVmFyaWFudC5oIgorI2luY2x1ZGUgIkNvbmN1cnJlbnRKSVRM
b2NrLmgiCisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQ0NhbGxIZWxwZXJzOworY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOworCitjbGFzcyBDYWxsRWRnZUxvZzsKK2NsYXNzIENhbGxFZGdlUHJvZmlsZTsK
K3R5cGVkZWYgVmVjdG9yPENhbGxFZGdlUHJvZmlsZSosIDEwPiBDYWxsRWRnZVByb2ZpbGVWZWN0
b3I7CisKK2NsYXNzIENhbGxFZGdlUHJvZmlsZSB7CitwdWJsaWM6CisgICAgQ2FsbEVkZ2VQcm9m
aWxlKCk7CisgICAgCisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbnVtQ2FsbHNUb05vdENlbGwoKSBj
b25zdCB7IHJldHVybiBtX251bUNhbGxzVG9Ob3RDZWxsOyB9CisgICAgQ2FsbEVkZ2VDb3VudFR5
cGUgbnVtQ2FsbHNUb1Vua25vd25DZWxsKCkgY29uc3QgeyByZXR1cm4gbV9udW1DYWxsc1RvVW5r
bm93bkNlbGw7IH0KKyAgICBDYWxsRWRnZUNvdW50VHlwZSBudW1DYWxsc1RvS25vd25DZWxscygp
IGNvbnN0OworICAgIAorICAgIC8vIENhbGwgd2hpbGUgaG9sZGluZyB0aGUgb3duaW5nIENvZGVC
bG9jaydzIGxvY2suCisgICAgQ2FsbEVkZ2VMaXN0IGNhbGxFZGdlcygpIGNvbnN0OworICAgIAor
ICAgIHZvaWQgdmlzaXRXZWFrKCk7CisgICAgCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBD
YWxsRWRnZUxvZzsKKyAgICAKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4S25vd25DYWxs
ZWVzID0gNTsKKyAgICAKKyAgICB2b2lkIGFkZChKU1ZhbHVlLCBDYWxsRWRnZVByb2ZpbGVWZWN0
b3ImIG1lcmdlQmFja0xvZyk7CisgICAgCisgICAgYm9vbCB3b3J0aERlc3BlY2lmeWluZygpOwor
ICAgIHZvaWQgYWRkU2xvdyhDYWxsVmFyaWFudCwgQ2FsbEVkZ2VQcm9maWxlVmVjdG9yJiBtZXJn
ZUJhY2tMb2cpOworICAgIHZvaWQgbWVyZ2VCYWNrKCk7CisgICAgdm9pZCBmYWRlQnlIYWxmKCk7
CisgICAgCisgICAgLy8gSXQncyBjaGVhcGVyIHRvIGxldCB0aGlzIGhhdmUgaXRzIG93biBsb2Nr
LiBJdCBuZWVkcyB0byBiZSBhYmxlIHRvIGZpbmQgd2hpY2ggbG9jayB0bworICAgIC8vIGxvY2su
IE5vcm1hbGx5IGl0IHdvdWxkIGxvY2sgdGhlIG93bmluZyBDb2RlQmxvY2sncyBsb2NrLCBidXQg
dGhhdCB3b3VsZCByZXF1aXJlIGEKKyAgICAvLyBwb2ludGVyLXdpZHRoIHdvcmQgdG8gcG9pbnQg
YXQgdGhlIENvZGVCbG9jay4gSGF2aW5nIHRoZSBieXRlLXNpemVkIGxvY2sgaGVyZSBpcworICAg
IC8vIGNoZWFwZXIuIEhvd2V2ZXIsIHRoaXMgbWVhbnMgdGhhdCB0aGUgcmVsYXRpb25zaGlwIHdp
dGggdGhlIENvZGVCbG9jayBsb2NrIGlzOgorICAgIC8vIGFjcXVpcmUgdGhlIENvZGVCbG9jayBs
b2NrIGJlZm9yZSB0aGlzIG9uZS4KKyAgICBtdXRhYmxlIENvbmN1cnJlbnRKSVRMb2NrIG1fbG9j
azsKKyAgICAKKyAgICBib29sIG1fY2xvc3VyZXNBcmVEZXNwZWNpZmllZDsKKyAgICAKKyAgICBD
YWxsRWRnZUNvdW50VHlwZSBtX251bUNhbGxzVG9QcmltYXJ5OworICAgIENhbGxFZGdlQ291bnRU
eXBlIG1fbnVtQ2FsbHNUb05vdENlbGw7CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbV9udW1DYWxs
c1RvVW5rbm93bkNlbGw7CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbV90b3RhbENvdW50OworICAg
IENhbGxWYXJpYW50IG1fcHJpbWFyeUNhbGxlZTsKKyAgICAKKyAgICB0eXBlZGVmIFNwZWN0cnVt
PENhbGxWYXJpYW50LCBDYWxsRWRnZUNvdW50VHlwZT4gQ2FsbFNwZWN0cnVtOworICAgIAorICAg
IHN0cnVjdCBTZWNvbmRhcnkgeworICAgICAgICBWZWN0b3I8Q2FsbEVkZ2U+IG1fcHJvY2Vzc2Vk
OyAvLyBQcm9jZXNzZWQgYnV0IG5vdCBuZWNlc3NhcmlseSBzb3J0ZWQuCisgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxDYWxsU3BlY3RydW0+IG1fdGVtcG9yYXJ5U3BlY3RydW07CisgICAgfTsKKyAg
ICAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Vjb25kYXJ5PiBtX290aGVyQ2FsbGVlczsKK307CisK
K2NsYXNzIENhbGxFZGdlTG9nIHsKK3B1YmxpYzoKKyAgICBDYWxsRWRnZUxvZygpOworICAgIH5D
YWxsRWRnZUxvZygpOworCisgICAgc3RhdGljIGJvb2wgaXNFbmFibGVkKCk7CisgICAgCisjaWYg
RU5BQkxFKEpJVCkKKyAgICB2b2lkIGVtaXRMb2dDb2RlKENDYWxsSGVscGVycyYsIENhbGxFZGdl
UHJvZmlsZSYsIEpTVmFsdWVSZWdzIGNhbGxlZVJlZ3MpOyAvLyBBc3N1bWVzIHRoYXQgc3RhY2sg
aXMgYWxpZ25lZCwgYWxsIHZvbGF0aWxlIHJlZ2lzdGVycyAtIG90aGVyIHRoYW4gY2FsbGVlR1BS
IC0gYXJlIGNsb2JiZXJhYmxlLCBhbmQgdGhlIHBhcmFtZXRlciBzcGFjZSBpcyBpbiB1c2UuCisg
ICAgCisgICAgLy8gU2FtZSBhcyBhYm92ZSBidXQgY3JlYXRlcyBhIENhbGxFZGdlUHJvZmlsZSBp
bnN0YW5jZSBpZiBvbmUgZGlkIG5vdCBhbHJlYWR5IGV4aXN0LiBEb2VzCisgICAgLy8gdGhpcyBp
biBhIHRocmVhZC1zYWZlIG1hbm5lciBieSBjYWxsaW5nIE93blB0cjo6Y3JlYXRlVHJhbnNhY3Rp
b25hbGx5LgorICAgIHZvaWQgZW1pdExvZ0NvZGUoQ0NhbGxIZWxwZXJzJiwgT3duUHRyPENhbGxF
ZGdlUHJvZmlsZT4mLCBKU1ZhbHVlUmVncyBjYWxsZWVSZWdzKTsKKyNlbmRpZiAvLyBFTkFCTEUo
SklUKQorICAgIAorICAgIHZvaWQgcHJvY2Vzc0xvZygpOworICAgIAorcHJpdmF0ZToKKyAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGxvZ1NpemUgPSAxMDAwMDsKKyAgICAKKyAgICBzdHJ1Y3QgRW50cnkgeworICAgICAg
ICBKU1ZhbHVlIG1fdmFsdWU7CisgICAgICAgIENhbGxFZGdlUHJvZmlsZSogbV9wcm9maWxlOwor
ICAgIH07CisgICAgCisgICAgdW5zaWduZWQgbV9zY2FsZWRMb2dJbmRleDsKKyAgICBFbnRyeSBt
X2xvZ1tsb2dTaXplXTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ2Fs
bEVkZ2VQcm9maWxlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxFZGdlUHJvZmlsZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZUlubGluZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ2FsbEVkZ2VQcm9maWxlSW5saW5lc19oCisjZGVm
aW5lIENhbGxFZGdlUHJvZmlsZUlubGluZXNfaAorCisjaW5jbHVkZSAiQ2FsbEVkZ2VQcm9maWxl
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitpbmxpbmUgQ2FsbEVkZ2VQcm9maWxlOjpDYWxsRWRn
ZVByb2ZpbGUoKQorICAgIDogbV9jbG9zdXJlc0FyZURlc3BlY2lmaWVkKGZhbHNlKQorICAgICwg
bV9udW1DYWxsc1RvUHJpbWFyeSgwKQorICAgICwgbV9udW1DYWxsc1RvTm90Q2VsbCgwKQorICAg
ICwgbV9udW1DYWxsc1RvVW5rbm93bkNlbGwoMCkKKyAgICAsIG1fdG90YWxDb3VudCgwKQorICAg
ICwgbV9wcmltYXJ5Q2FsbGVlKG51bGxwdHIpCit7Cit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCBD
YWxsRWRnZVByb2ZpbGU6OmFkZChKU1ZhbHVlIHZhbHVlLCBDYWxsRWRnZVByb2ZpbGVWZWN0b3Im
IG1lcmdlQmFja0xvZykKK3sKKyAgICB1bnNpZ25lZCBuZXdUb3RhbENvdW50ID0gbV90b3RhbENv
dW50ICsgMTsKKyAgICBpZiAoVU5MSUtFTFkoIW5ld1RvdGFsQ291bnQpKSB7CisgICAgICAgIGZh
ZGVCeUhhbGYoKTsgLy8gVGFja2xlIG92ZXJmbG93cyBieSBkaXZpZGluZyBhbGwgY291bnRzIGJ5
IHR3by4KKyAgICAgICAgbmV3VG90YWxDb3VudCA9IG1fdG90YWxDb3VudCArIDE7CisgICAgfQor
ICAgIEFTU0VSVChuZXdUb3RhbENvdW50KTsKKyAgICBtX3RvdGFsQ291bnQgPSBuZXdUb3RhbENv
dW50OworICAgIAorICAgIGlmIChVTkxJS0VMWSghdmFsdWUuaXNDZWxsKCkpKSB7CisgICAgICAg
IG1fbnVtQ2FsbHNUb05vdENlbGwrKzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIENh
bGxWYXJpYW50IGNhbGxlZSA9IENhbGxWYXJpYW50KHZhbHVlLmFzQ2VsbCgpKTsKKyAgICAKKyAg
ICBpZiAobV9jbG9zdXJlc0FyZURlc3BlY2lmaWVkKQorICAgICAgICBjYWxsZWUgPSBjYWxsZWUu
ZGVzcGVjaWZpZWRDbG9zdXJlKCk7CisgICAgCisgICAgaWYgKFVOTElLRUxZKCFtX3ByaW1hcnlD
YWxsZWUpKSB7CisgICAgICAgIG1fcHJpbWFyeUNhbGxlZSA9IGNhbGxlZTsKKyAgICAgICAgbV9u
dW1DYWxsc1RvUHJpbWFyeSA9IDE7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAor
ICAgIGlmIChMSUtFTFkobV9wcmltYXJ5Q2FsbGVlID09IGNhbGxlZSkpIHsKKyAgICAgICAgbV9u
dW1DYWxsc1RvUHJpbWFyeSsrOworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAg
ICBpZiAoVU5MSUtFTFkoIW1fb3RoZXJDYWxsZWVzKSkgeworICAgICAgICBhZGRTbG93KGNhbGxl
ZSwgbWVyZ2VCYWNrTG9nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAg
Q2FsbFNwZWN0cnVtKiBzZWNvbmRhcnkgPSBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVj
dHJ1bS5nZXQoKTsKKyAgICBpZiAoIXNlY29uZGFyeSkgeworICAgICAgICBhZGRTbG93KGNhbGxl
ZSwgbWVyZ2VCYWNrTG9nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAg
c2Vjb25kYXJ5LT5hZGQoY2FsbGVlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAJKHJldmlzaW9uIDE3Mjc5NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04Myw2ICs4MywxMSBAQCB2b2lkIENhbGxMaW5rSW5mbzo6dmlzaXRXZWFrKFJl
cGF0Y2hCdWZmCiAgICAgfQogICAgIGlmICghIWxhc3RTZWVuQ2FsbGVlICYmICFIZWFwOjppc01h
cmtlZChsYXN0U2VlbkNhbGxlZS5nZXQoKSkpCiAgICAgICAgIGxhc3RTZWVuQ2FsbGVlLmNsZWFy
KCk7CisgICAgCisgICAgaWYgKGNhbGxFZGdlUHJvZmlsZSkgeworICAgICAgICBXVEY6OmxvYWRM
b2FkRmVuY2UoKTsKKyAgICAgICAgY2FsbEVkZ2VQcm9maWxlLT52aXNpdFdlYWsoKTsKKyAgICB9
CiB9CiAKIENhbGxMaW5rSW5mbyYgQ2FsbExpbmtJbmZvOjpkdW1teSgpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAxNzI3
OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgQ2FsbExpbmtJbmZvX2gKICNk
ZWZpbmUgQ2FsbExpbmtJbmZvX2gKIAorI2luY2x1ZGUgIkNhbGxFZGdlUHJvZmlsZS5oIgogI2lu
Y2x1ZGUgIkNsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaCIKICNpbmNsdWRlICJDb2RlTG9jYXRpb24u
aCIKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCkBAIC0zMyw2ICszNCw3IEBA
CiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUg
IldyaXRlQmFycmllci5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
U2VudGluZWxMaW5rZWRMaXN0Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtODgsNiArOTAsNyBA
QCBzdHJ1Y3QgQ2FsbExpbmtJbmZvIDogcHVibGljIEJhc2ljUmF3U2VuCiAgICAgdW5zaWduZWQg
Y2FsbGVlR1BSIDogODsKICAgICB1bnNpZ25lZCBzbG93UGF0aENvdW50OwogICAgIENvZGVPcmln
aW4gY29kZU9yaWdpbjsKKyAgICBPd25QdHI8Q2FsbEVkZ2VQcm9maWxlPiBjYWxsRWRnZVByb2Zp
bGU7CiAKICAgICBib29sIGlzTGlua2VkKCkgeyByZXR1cm4gc3R1YiB8fCBjYWxsZWU7IH0KICAg
ICB2b2lkIHVubGluayhSZXBhdGNoQnVmZmVyJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHJldmlzaW9uIDE3Mjc5NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDU0ICszMiwyMiBAQAogI2luY2x1ZGUgIkxMSW50Q2FsbExpbmtJ
bmZvLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKIHN0
YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKIAogQ2FsbExpbmtTdGF0dXM6OkNhbGxM
aW5rU3RhdHVzKEpTVmFsdWUgdmFsdWUpCi0gICAgOiBtX2NhbGxUYXJnZXQodmFsdWUpCi0gICAg
LCBtX2V4ZWN1dGFibGUoMCkKLSAgICAsIG1fY291bGRUYWtlU2xvd1BhdGgoZmFsc2UpCisgICAg
OiBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQogICAgICwgbV9pc1Byb3ZlZChmYWxzZSkKIHsK
LSAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS5pc0NlbGwoKSkKKyAgICBpZiAoIXZhbHVlIHx8ICF2
YWx1ZS5pc0NlbGwoKSkgeworICAgICAgICBtX2NvdWxkVGFrZVNsb3dQYXRoID0gdHJ1ZTsKICAg
ICAgICAgcmV0dXJuOworICAgIH0KICAgICAKLSAgICBpZiAoIXZhbHVlLmFzQ2VsbCgpLT5pbmhl
cml0cyhKU0Z1bmN0aW9uOjppbmZvKCkpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9l
eGVjdXRhYmxlID0ganNDYXN0PEpTRnVuY3Rpb24qPih2YWx1ZS5hc0NlbGwoKSktPmV4ZWN1dGFi
bGUoKTsKLX0KLQotSlNGdW5jdGlvbiogQ2FsbExpbmtTdGF0dXM6OmZ1bmN0aW9uKCkgY29uc3QK
LXsKLSAgICBpZiAoIW1fY2FsbFRhcmdldCB8fCAhbV9jYWxsVGFyZ2V0LmlzQ2VsbCgpKQotICAg
ICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBpZiAoIW1fY2FsbFRhcmdldC5hc0NlbGwoKS0+aW5o
ZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAg
cmV0dXJuIGpzQ2FzdDxKU0Z1bmN0aW9uKj4obV9jYWxsVGFyZ2V0LmFzQ2VsbCgpKTsKLX0KLQot
SW50ZXJuYWxGdW5jdGlvbiogQ2FsbExpbmtTdGF0dXM6OmludGVybmFsRnVuY3Rpb24oKSBjb25z
dAotewotICAgIGlmICghbV9jYWxsVGFyZ2V0IHx8ICFtX2NhbGxUYXJnZXQuaXNDZWxsKCkpCi0g
ICAgICAgIHJldHVybiAwOwotICAgIAotICAgIGlmICghbV9jYWxsVGFyZ2V0LmFzQ2VsbCgpLT5p
bmhlcml0cyhJbnRlcm5hbEZ1bmN0aW9uOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gMDsKLSAg
ICAKLSAgICByZXR1cm4ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihtX2NhbGxUYXJnZXQuYXND
ZWxsKCkpOwotfQotCi1JbnRyaW5zaWMgQ2FsbExpbmtTdGF0dXM6OmludHJpbnNpY0ZvcihDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2V4ZWN1dGFibGUp
Ci0gICAgICAgIHJldHVybiBOb0ludHJpbnNpYzsKLSAgICAKLSAgICByZXR1cm4gbV9leGVjdXRh
YmxlLT5pbnRyaW5zaWNGb3Ioa2luZCk7CisgICAgbV9lZGdlcy5hcHBlbmQoQ2FsbEVkZ2UoQ2Fs
bFZhcmlhbnQodmFsdWUuYXNDZWxsKCkpLCAxKSk7CiB9CiAKIENhbGxMaW5rU3RhdHVzIENhbGxM
aW5rU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxv
Y2tlciwgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQpA
QCAtODcsNyArNTUsNyBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZy
CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRl
Y29kZUluZGV4KTsKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAocHJvZmlsZWRCbG9jay0+
aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwg
QmFkRnVuY3Rpb24pKSkgeworICAgIGlmIChwcm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0ZShsb2Nr
ZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDZWxsKSkpIHsKICAg
ICAgICAgLy8gV2UgY291bGQgZm9yY2UgdGhpcyB0byBiZSBhIGNsb3N1cmUgY2FsbCwgYnV0IGlu
c3RlYWQgd2UnbGwganVzdCBhc3N1bWUgdGhhdCBpdAogICAgICAgICAvLyB0YWtlcyBzbG93IHBh
dGguCiAgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7CkBAIC0xMzksMTAgKzEwNywxMCBA
QCBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRhIENhbGxMaW5rU3RhCiAgICAgCiAjaWYgRU5B
QkxFKERGR19KSVQpCiAgICAgZXhpdFNpdGVEYXRhLm1fdGFrZXNTbG93UGF0aCA9Ci0gICAgICAg
IHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRl
KGJ5dGVjb2RlSW5kZXgsIEJhZENhY2hlLCBleGl0aW5nSklUVHlwZSkpCisgICAgICAgIHByb2Zp
bGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVj
b2RlSW5kZXgsIEJhZFR5cGUsIGV4aXRpbmdKSVRUeXBlKSkKICAgICAgICAgfHwgcHJvZmlsZWRC
bG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJ
bmRleCwgQmFkRXhlY3V0YWJsZSwgZXhpdGluZ0pJVFR5cGUpKTsKICAgICBleGl0U2l0ZURhdGEu
bV9iYWRGdW5jdGlvbiA9Ci0gICAgICAgIHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tl
ciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZEZ1bmN0aW9uLCBleGl0
aW5nSklUVHlwZSkpOworICAgICAgICBwcm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIs
IERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDZWxsLCBleGl0aW5nSklU
VHlwZSkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obG9ja2VyKTsKICAgICBVTlVTRURfUEFS
QU0ocHJvZmlsZWRCbG9jayk7CkBAIC0xNTYsNiArMTI0LDE4IEBAIENhbGxMaW5rU3RhdHVzOjpF
eGl0U2l0ZURhdGEgQ2FsbExpbmtTdGEKICNpZiBFTkFCTEUoSklUKQogQ2FsbExpbmtTdGF0dXMg
Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENh
bGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQogeworICAgIC8vIEFsd2F5cyB0cnVzdCB0aGUgY2Fs
bCBlZGdlIHByb2ZpbGUgb3ZlciBhbnl0aGluZyBlbHNlIHNpbmNlIHRoaXMgaGFzIHByZWNpc2Ug
Y291bnRzLgorICAgIC8vIEl0IGNhbiBtYWtlIHRoZSBiZXN0IHBvc3NpYmxlIGRlY2lzaW9uIGJl
Y2F1c2UgaXQgbmV2ZXIgImZvcmdldHMiIHdoYXQgaGFwcGVuZWQgZm9yIGFueQorICAgIC8vIGNh
bGwsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBmYWRpbmcgb3V0IHRoZSBjb3VudHMgb2Ygb2xkIGNh
bGxzIChmb3IgZXhhbXBsZSBpZiB0aGUKKyAgICAvLyBjb3VudGVyIHR5cGUgaXMgMTYtYml0IHRo
ZW4gY2FsbHMgdGhhdCBoYXBwZW5lZCBtb3JlIHRoYW4gMl4xNiBjYWxscyBhZ28gYXJlIGdpdmVu
IGhhbGYKKyAgICAvLyB3ZWlnaHQsIGFuZCB0aGlzIGNvbXBvdW5kcyBmb3IgZXZlcnkgMl4xNSBb
c2ljXSBjYWxscyBhZnRlciB0aGF0KS4gVGhlIGNvbWJpbmF0aW9uIG9mCisgICAgLy8gaGlnaCBm
aWRlbGl0eSBmb3IgcmVjZW50IGNhbGxzIGFuZCBmYWRpbmcgZm9yIG9sZGVyIGNhbGxzIG1ha2Vz
IHRoaXMgdGhlIG1vc3QgdXNlZnVsCisgICAgLy8gbWVjaGFtaXNtIG9mIGNob29zaW5nIGhvdyB0
byBvcHRpbWl6ZSBmdXR1cmUgY2FsbHMuCisgICAgQ2FsbEVkZ2VQcm9maWxlKiBlZGdlUHJvZmls
ZSA9IGNhbGxMaW5rSW5mby5jYWxsRWRnZVByb2ZpbGUuZ2V0KCk7CisgICAgV1RGOjpsb2FkTG9h
ZEZlbmNlKCk7CisgICAgaWYgKGVkZ2VQcm9maWxlKQorICAgICAgICByZXR1cm4gY29tcHV0ZUZy
b21DYWxsRWRnZVByb2ZpbGUoZWRnZVByb2ZpbGUpOworICAgIAogICAgIC8vIE5vdGUgdGhhdCBk
ZXNwaXRlIHJlcXVpcmluZyB0aGF0IHRoZSBsb2NrZXIgaXMgaGVsZCwgdGhpcyBjb2RlIGlzIHJh
Y3kgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gdGhlIENhbGxMaW5rSW5mbzogaXQgbWF5IGdldCBj
bGVhcmVkIHdoaWxlIHRoaXMgY29kZSBydW5zISBUaGlzIGlzIGJlY2F1c2UKICAgICAvLyBDYWxs
TGlua0luZm86OnVubGluaygpIG1heSBiZSBjYWxsZWQgZnJvbSBhIGRpZmZlcmVudCBDb2RlQmxv
Y2sgdGhhbiB0aGUgb25lIHRoYXQgb3ducwpAQCAtMTc3LDcgKzE1Nyw3IEBAIENhbGxMaW5rU3Rh
dHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICAgICAKICAgICBKU0Z1bmN0aW9uKiB0YXJn
ZXQgPSBjYWxsTGlua0luZm8ubGFzdFNlZW5DYWxsZWUuZ2V0KCk7CiAgICAgaWYgKCF0YXJnZXQp
Ci0gICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygpOworICAgICAgICByZXR1cm4gdGFrZXNT
bG93UGF0aCgpOwogICAgIAogICAgIGlmIChjYWxsTGlua0luZm8uaGFzU2VlbkNsb3N1cmUpCiAg
ICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyh0YXJnZXQtPmV4ZWN1dGFibGUoKSk7CkBAIC0x
ODUsMTUgKzE2NSwzMSBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZv
CiAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKHRhcmdldCk7CiB9CiAKLUNhbGxMaW5rU3RhdHVz
IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAotICAgIGNvbnN0IENvbmN1cnJlbnRKSVRMb2Nr
ZXImIGxvY2tlciwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIEV4aXRTaXRlRGF0YSBleGl0
U2l0ZURhdGEpCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21DYWxs
RWRnZVByb2ZpbGUoQ2FsbEVkZ2VQcm9maWxlKiBlZGdlUHJvZmlsZSkKIHsKLSAgICBpZiAoZXhp
dFNpdGVEYXRhLm1fdGFrZXNTbG93UGF0aCkKKyAgICAvLyBUbyBkbyBhbnl0aGluZyBtZWFuaW5n
ZnVsLCB3ZSByZXF1aXJlIHRoYXQgdGhlIG1ham9yaXR5IG9mIGNhbGxzIGFyZSB0byBzb21ldGhp
bmcgd2UKKyAgICAvLyBrbm93IGhvdyB0byBoYW5kbGUuCisgICAgdW5zaWduZWQgbnVtQ2FsbHNU
b0tub3duID0gZWRnZVByb2ZpbGUtPm51bUNhbGxzVG9Lbm93bkNlbGxzKCk7CisgICAgdW5zaWdu
ZWQgbnVtQ2FsbHNUb1Vua25vd24gPSBlZGdlUHJvZmlsZS0+bnVtQ2FsbHNUb05vdENlbGwoKSAr
IGVkZ2VQcm9maWxlLT5udW1DYWxsc1RvVW5rbm93bkNlbGwoKTsKKyAgICBpZiAobnVtQ2FsbHNU
b0tub3duIDw9IG51bUNhbGxzVG9Vbmtub3duKQogICAgICAgICByZXR1cm4gdGFrZXNTbG93UGF0
aCgpOwogICAgIAorICAgIENhbGxMaW5rU3RhdHVzIHJlc3VsdDsKKyAgICByZXN1bHQubV9lZGdl
cyA9IGVkZ2VQcm9maWxlLT5jYWxsRWRnZXMoKTsKKyAgICByZXN1bHQubV9jb3VsZFRha2VTbG93
UGF0aCA9ICEhbnVtQ2FsbHNUb1Vua25vd247CisgICAgcmVzdWx0Lm1fY2FuVHJ1c3RDb3VudHMg
PSB0cnVlOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0NhbGxMaW5rU3RhdHVzIENh
bGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAorICAgIGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXIm
IGxvY2tlciwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIEV4aXRTaXRlRGF0YSBleGl0U2l0
ZURhdGEpCit7CiAgICAgQ2FsbExpbmtTdGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZvcihsb2NrZXIs
IGNhbGxMaW5rSW5mbyk7CiAgICAgaWYgKGV4aXRTaXRlRGF0YS5tX2JhZEZ1bmN0aW9uKQogICAg
ICAgICByZXN1bHQubWFrZUNsb3N1cmVDYWxsKCk7CisgICAgaWYgKGV4aXRTaXRlRGF0YS5tX3Rh
a2VzU2xvd1BhdGgpCisgICAgICAgIHJlc3VsdC5tX2NvdWxkVGFrZVNsb3dQYXRoID0gdHJ1ZTsK
ICAgICAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjU2LDYgKzI1MiwzMiBAQCBDYWxsTGlu
a1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvCiAgICAgcmV0dXJuIGNvbXB1dGVGb3Io
cHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBiYXNlbGluZU1hcCk7CiB9
CiAKK2Jvb2wgQ2FsbExpbmtTdGF0dXM6OmlzQ2xvc3VyZUNhbGwoKSBjb25zdAoreworICAgIGZv
ciAodW5zaWduZWQgaSA9IG1fZWRnZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIGlmIChtX2Vk
Z2VzW2ldLmNhbGxlZSgpLmlzQ2xvc3VyZUNhbGwoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQ2FsbExpbmtTdGF0dXM6Om1h
a2VDbG9zdXJlQ2FsbCgpCit7CisgICAgQVNTRVJUKCFtX2lzUHJvdmVkKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSBtX2VkZ2VzLnNpemUoKTsgaS0tOykKKyAgICAgICAgbV9lZGdlc1tpXSA9IG1f
ZWRnZXNbaV0uZGVzcGVjaWZpZWRDbG9zdXJlKCk7CisgICAgCisgICAgaWYgKCFBU1NFUlRfRElT
QUJMRUQpIHsKKyAgICAgICAgLy8gRG9pbmcgdGhpcyBzaG91bGQgbm90IGhhdmUgY3JlYXRlZCBk
dXBsaWNhdGVzLCBiZWNhdXNlIHRoZSBDYWxsRWRnZVByb2ZpbGUKKyAgICAgICAgLy8gc2hvdWxk
IGRlc3BlY2lmeSBjbG9zdXJlcyBpZiBkb2luZyBzbyB3b3VsZCByZWR1Y2UgdGhlIG51bWJlciBv
ZiBrbm93biBjYWxsZWVzLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9lZGdl
cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFudCA9IG1fZWRn
ZXNbaV0uY2FsbGVlKCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSBpICsgMTsgaiA8
IG1fZWRnZXMuc2l6ZSgpOyArK2opCisgICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQgIT0g
bV9lZGdlc1tqXS5jYWxsZWUoKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgQ2FsbExp
bmtTdGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBpZiAoIWlzU2V0
KCkpIHsKQEAgLTI3MSwxNCArMjkzLDcgQEAgdm9pZCBDYWxsTGlua1N0YXR1czo6ZHVtcChQcmlu
dFN0cmVhbSYgbwogICAgIGlmIChtX2NvdWxkVGFrZVNsb3dQYXRoKQogICAgICAgICBvdXQucHJp
bnQoY29tbWEsICJDb3VsZCBUYWtlIFNsb3cgUGF0aCIpOwogICAgIAotICAgIGlmIChtX2NhbGxU
YXJnZXQpCi0gICAgICAgIG91dC5wcmludChjb21tYSwgIktub3duIHRhcmdldDogIiwgbV9jYWxs
VGFyZ2V0KTsKLSAgICAKLSAgICBpZiAobV9leGVjdXRhYmxlKSB7Ci0gICAgICAgIG91dC5wcmlu
dChjb21tYSwgIkV4ZWN1dGFibGUvQ2FsbEhhc2g6ICIsIFJhd1BvaW50ZXIobV9leGVjdXRhYmxl
KSk7Ci0gICAgICAgIGlmICghaXNDb21waWxhdGlvblRocmVhZCgpKQotICAgICAgICAgICAgb3V0
LnByaW50KCIvIiwgbV9leGVjdXRhYmxlLT5oYXNoRm9yKENvZGVGb3JDYWxsKSk7Ci0gICAgfQor
ICAgIG91dC5wcmludChsaXN0RHVtcChtX2VkZ2VzKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3Rh
dHVzLmgJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsTGlua1N0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw5ICs0Niw5IEBAIHN0cnVj
dCBDYWxsTGlua0luZm87CiBjbGFzcyBDYWxsTGlua1N0YXR1cyB7CiBwdWJsaWM6CiAgICAgQ2Fs
bExpbmtTdGF0dXMoKQotICAgICAgICA6IG1fZXhlY3V0YWJsZSgwKQotICAgICAgICAsIG1fY291
bGRUYWtlU2xvd1BhdGgoZmFsc2UpCisgICAgICAgIDogbV9jb3VsZFRha2VTbG93UGF0aChmYWxz
ZSkKICAgICAgICAgLCBtX2lzUHJvdmVkKGZhbHNlKQorICAgICAgICAsIG1fY2FuVHJ1c3RDb3Vu
dHMoZmFsc2UpCiAgICAgewogICAgIH0KICAgICAKQEAgLTYxLDEwICs2MSwxMSBAQCBwdWJsaWM6
CiAgICAgCiAgICAgZXhwbGljaXQgQ2FsbExpbmtTdGF0dXMoSlNWYWx1ZSk7CiAgICAgCi0gICAg
Q2FsbExpbmtTdGF0dXMoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUpCi0gICAgICAgIDogbV9l
eGVjdXRhYmxlKGV4ZWN1dGFibGUpCisgICAgQ2FsbExpbmtTdGF0dXMoQ2FsbFZhcmlhbnQgdmFy
aWFudCkKKyAgICAgICAgOiBtX2VkZ2VzKDEsIENhbGxFZGdlKHZhcmlhbnQsIDEpKQogICAgICAg
ICAsIG1fY291bGRUYWtlU2xvd1BhdGgoZmFsc2UpCiAgICAgICAgICwgbV9pc1Byb3ZlZChmYWxz
ZSkKKyAgICAgICAgLCBtX2NhblRydXN0Q291bnRzKGZhbHNlKQogICAgIHsKICAgICB9CiAgICAg
CkBAIC0xMDcsMzcgKzEwOCwzNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENhbGxMaW5rU3RhdHVz
IGNvbXB1dGVGb3IoCiAgICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIGNvbnN0IENhbGxM
aW5rSW5mb01hcCYsIGNvbnN0IENvbnRleHRNYXAmKTsKICAgICAKLSAgICBib29sIGlzU2V0KCkg
Y29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0IHx8IG1fZXhlY3V0YWJsZSB8fCBtX2NvdWxkVGFr
ZVNsb3dQYXRoOyB9CisgICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuICFtX2VkZ2VzLmlz
RW1wdHkoKSB8fCBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CiAgICAgCiAgICAgYm9vbCBvcGVyYXRv
ciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsgfQogICAgIAogICAgIGJvb2wgY291bGRUYWtl
U2xvd1BhdGgoKSBjb25zdCB7IHJldHVybiBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9Ci0gICAgYm9v
bCBpc0Nsb3N1cmVDYWxsKCkgY29uc3QgeyByZXR1cm4gbV9leGVjdXRhYmxlICYmICFtX2NhbGxU
YXJnZXQ7IH0KICAgICAKLSAgICBKU1ZhbHVlIGNhbGxUYXJnZXQoKSBjb25zdCB7IHJldHVybiBt
X2NhbGxUYXJnZXQ7IH0KLSAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbigpIGNvbnN0OwotICAgIElu
dGVybmFsRnVuY3Rpb24qIGludGVybmFsRnVuY3Rpb24oKSBjb25zdDsKLSAgICBJbnRyaW5zaWMg
aW50cmluc2ljRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQpIGNvbnN0OwotICAgIEV4ZWN1dGFi
bGVCYXNlKiBleGVjdXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9leGVjdXRhYmxlOyB9CisgICAg
Q2FsbEVkZ2VMaXN0IGVkZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9lZGdlczsgfQorICAgIHVuc2ln
bmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2VkZ2VzLnNpemUoKTsgfQorICAgIENhbGxFZGdl
IGF0KHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIG1fZWRnZXNbaV07IH0KKyAgICBDYWxsRWRn
ZSBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIGF0KGkpOyB9CiAgICAgYm9v
bCBpc1Byb3ZlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNQcm92ZWQ7IH0KLSAgICBib29sIGNhbk9w
dGltaXplKCkgY29uc3QgeyByZXR1cm4gKG1fY2FsbFRhcmdldCB8fCBtX2V4ZWN1dGFibGUpICYm
ICFtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CisgICAgYm9vbCBjYW5PcHRpbWl6ZSgpIGNvbnN0IHsg
cmV0dXJuICFtX2VkZ2VzLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgY2FuVHJ1c3RDb3VudHMoKSBj
b25zdCB7IHJldHVybiBtX2NhblRydXN0Q291bnRzOyB9CisgICAgCisgICAgYm9vbCBpc0Nsb3N1
cmVDYWxsKCkgY29uc3Q7IC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgY2FsbGVlIGlzIGEgY2xvc3Vy
ZSBjYWxsLgogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIAog
cHJpdmF0ZToKLSAgICB2b2lkIG1ha2VDbG9zdXJlQ2FsbCgpCi0gICAgewotICAgICAgICBBU1NF
UlQoIW1faXNQcm92ZWQpOwotICAgICAgICAvLyBUdXJuIHRoaXMgaW50byBhIGNsb3N1cmUgY2Fs
bC4KLSAgICAgICAgbV9jYWxsVGFyZ2V0ID0gSlNWYWx1ZSgpOwotICAgIH0KKyAgICB2b2lkIG1h
a2VDbG9zdXJlQ2FsbCgpOwogICAgIAogICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRl
RnJvbUxMSW50KGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBDb2RlQmxvY2sqLCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4KTsKKyNpZiBFTkFCTEUoSklUKQorICAgIHN0YXRpYyBDYWxsTGlua1N0
YXR1cyBjb21wdXRlRnJvbUNhbGxFZGdlUHJvZmlsZShDYWxsRWRnZVByb2ZpbGUqKTsKKyNlbmRp
ZgogICAgIAotICAgIEpTVmFsdWUgbV9jYWxsVGFyZ2V0OwotICAgIEV4ZWN1dGFibGVCYXNlKiBt
X2V4ZWN1dGFibGU7CisgICAgQ2FsbEVkZ2VMaXN0IG1fZWRnZXM7CiAgICAgYm9vbCBtX2NvdWxk
VGFrZVNsb3dQYXRoOwogICAgIGJvb2wgbV9pc1Byb3ZlZDsKKyAgICBib29sIG1fY2FuVHJ1c3RD
b3VudHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2FsbFZhcmlhbnQuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgQ2FsbFZhcmlhbnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3QKK3sKKyAgICBpZiAoISp0aGlzKSB7CisgICAgICAgIG91dC5wcmludCgibnVsbCIp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChJbnRlcm5hbEZ1bmN0aW9u
KiBpbnRlcm5hbEZ1bmN0aW9uID0gdGhpcy0+aW50ZXJuYWxGdW5jdGlvbigpKSB7CisgICAgICAg
IG91dC5wcmludCgiSW50ZXJuYWxGdW5jdGlvbjogIiwgSlNWYWx1ZShpbnRlcm5hbEZ1bmN0aW9u
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKEpTRnVuY3Rpb24qIGZ1
bmN0aW9uID0gdGhpcy0+ZnVuY3Rpb24oKSkgeworICAgICAgICBvdXQucHJpbnQoIihGdW5jdGlv
bjogIiwgSlNWYWx1ZShmdW5jdGlvbiksICI7IEV4ZWN1dGFibGU6ICIsICpleGVjdXRhYmxlKCks
ICIpIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgb3V0LnByaW50KCJFeGVj
dXRhYmxlOiAiLCAqZXhlY3V0YWJsZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDYWxsVmFyaWFudF9oCisjZGVmaW5lIENh
bGxWYXJpYW50X2gKKworI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKU0NlbGwu
aCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBD
YWxsVmFyaWFudCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgQ2FsbFZhcmlhbnQoSlNDZWxsKiBj
YWxsZWUgPSBudWxscHRyKQorICAgICAgICA6IG1fY2FsbGVlKGNhbGxlZSkKKyAgICB7CisgICAg
fQorICAgIAorICAgIENhbGxWYXJpYW50KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkK
KyAgICAgICAgOiBtX2NhbGxlZShkZWxldGVkVG9rZW4oKSkKKyAgICB7CisgICAgfQorICAgIAor
ICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fY2FsbGVlOyB9CisgICAgCisg
ICAgLy8gSWYgdGhpcyB2YXJpYW50IHJlZmVycyB0byBhIGZ1bmN0aW9uLCBjaGFuZ2UgaXQgdG8g
cmVmZXIgdG8gaXRzIGV4ZWN1dGFibGUuCisgICAgQUxXQVlTX0lOTElORSBDYWxsVmFyaWFudCBk
ZXNwZWNpZmllZENsb3N1cmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fY2FsbGVlLT50
eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpCisgICAgICAgICAgICByZXR1cm4gQ2FsbFZhcmlhbnQo
anNDYXN0PEpTRnVuY3Rpb24qPihtX2NhbGxlZSktPmV4ZWN1dGFibGUoKSk7CisgICAgICAgIHJl
dHVybiAqdGhpczsKKyAgICB9CisgICAgCisgICAgSlNDZWxsKiByYXdDYWxsZWVDZWxsKCkgY29u
c3QgeyByZXR1cm4gbV9jYWxsZWU7IH0KKyAgICAKKyAgICBJbnRlcm5hbEZ1bmN0aW9uKiBpbnRl
cm5hbEZ1bmN0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBqc0R5bmFtaWNDYXN0
PEludGVybmFsRnVuY3Rpb24qPihtX2NhbGxlZSk7CisgICAgfQorICAgIAorICAgIEpTRnVuY3Rp
b24qIGZ1bmN0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBqc0R5bmFtaWNDYXN0
PEpTRnVuY3Rpb24qPihtX2NhbGxlZSk7CisgICAgfQorICAgIAorICAgIGJvb2wgaXNDbG9zdXJl
Q2FsbCgpIGNvbnN0IHsgcmV0dXJuICEhanNEeW5hbWljQ2FzdDxFeGVjdXRhYmxlQmFzZSo+KG1f
Y2FsbGVlKTsgfQorICAgIAorICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKCkgY29uc3QK
KyAgICB7CisgICAgICAgIGlmIChKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IHRoaXMtPmZ1bmN0aW9u
KCkpCisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24tPmV4ZWN1dGFibGUoKTsKKyAgICAgICAg
cmV0dXJuIGpzRHluYW1pY0Nhc3Q8RXhlY3V0YWJsZUJhc2UqPihtX2NhbGxlZSk7CisgICAgfQor
ICAgIAorICAgIEpTQ2VsbCogbm9uRXhlY3V0YWJsZUNhbGxlZSgpIGNvbnN0CisgICAgeworICAg
ICAgICBSRUxFQVNFX0FTU0VSVCghaXNDbG9zdXJlQ2FsbCgpKTsKKyAgICAgICAgcmV0dXJuIG1f
Y2FsbGVlOworICAgIH0KKyAgICAKKyAgICBJbnRyaW5zaWMgaW50cmluc2ljRm9yKENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChFeGVjdXRhYmxl
QmFzZSogZXhlY3V0YWJsZSA9IHRoaXMtPmV4ZWN1dGFibGUoKSkKKyAgICAgICAgICAgIHJldHVy
biBleGVjdXRhYmxlLT5pbnRyaW5zaWNGb3Ioa2luZCk7CisgICAgICAgIHJldHVybiBOb0ludHJp
bnNpYzsKKyAgICB9CisgICAgCisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1
dGFibGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8RnVuY3Rp
b25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSgpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OworICAgIAorICAgIGJvb2wgaXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY2FsbGVlID09IGRlbGV0
ZWRUb2tlbigpOworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2FsbFZh
cmlhbnQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY2FsbGVlID09IG90
aGVyLm1fY2FsbGVlOworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ2Fs
bFZhcmlhbnQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yPChjb25zdCBDYWxsVmFyaWFu
dCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9jYWxsZWUgPCBvdGhlci5t
X2NhbGxlZTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgQ2FsbFZhcmlh
bnQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG90aGVyIDwgKnRoaXM7Cisg
ICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBDYWxsVmFyaWFudCYgb3RoZXIp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA8IG90aGVyKTsKKyAgICB9Cisg
ICAgCisgICAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBvdGhlciA8PSAqdGhpczsKKyAgICB9CisgICAgCisgICAg
dW5zaWduZWQgaGFzaCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gV1RGOjpQdHJIYXNo
PEpTQ2VsbCo+OjpoYXNoKG1fY2FsbGVlKTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIHN0
YXRpYyBKU0NlbGwqIGRlbGV0ZWRUb2tlbigpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU0NlbGwq
PihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsgfQorICAgICAgICAgICAgICAgICAgIAorICAg
IEpTQ2VsbCogbV9jYWxsZWU7Cit9OworCitzdHJ1Y3QgQ2FsbFZhcmlhbnRIYXNoIHsKKyAgICBz
dGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBDYWxsVmFyaWFudCYga2V5KSB7IHJldHVybiBrZXku
aGFzaCgpOyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgQ2FsbFZhcmlhbnQmIGEsIGNv
bnN0IENhbGxWYXJpYW50JiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Cit9OworCit0eXBlZGVm
IFZlY3RvcjxDYWxsVmFyaWFudCwgMT4gQ2FsbFZhcmlhbnRMaXN0OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBE
ZWZhdWx0SGFzaDsKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEpTQzo6Q2FsbFZhcmlh
bnQ+IHsKKyAgICB0eXBlZGVmIEpTQzo6Q2FsbFZhcmlhbnRIYXNoIEhhc2g7Cit9OworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czsKK3RlbXBsYXRlPD4gc3RydWN0IEhh
c2hUcmFpdHM8SlNDOjpDYWxsVmFyaWFudD4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8SlNDOjpD
YWxsVmFyaWFudD4geyB9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIENhbGxW
YXJpYW50X2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5k
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtp
bmQuY3BwCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRXhpdEtpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw4ICszOCw4IEBAIGNvbnN0IGNo
YXIqIGV4aXRLaW5kVG9TdHJpbmcoRXhpdEtpbmQga2kKICAgICAgICAgcmV0dXJuICJVbnNldCI7
CiAgICAgY2FzZSBCYWRUeXBlOgogICAgICAgICByZXR1cm4gIkJhZFR5cGUiOwotICAgIGNhc2Ug
QmFkRnVuY3Rpb246Ci0gICAgICAgIHJldHVybiAiQmFkRnVuY3Rpb24iOworICAgIGNhc2UgQmFk
Q2VsbDoKKyAgICAgICAgcmV0dXJuICJCYWRDZWxsIjsKICAgICBjYXNlIEJhZEV4ZWN1dGFibGU6
CiAgICAgICAgIHJldHVybiAiQmFkRXhlY3V0YWJsZSI7CiAgICAgY2FzZSBCYWRDYWNoZToKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5oCShyZXZpc2lvbiAx
NzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGVudW0gRXhpdEtp
bmQgOiB1aW50OF90IHsKICAgICBFeGl0S2luZFVuc2V0LAogICAgIEJhZFR5cGUsIC8vIFdlIGV4
aXRlZCBiZWNhdXNlIGEgdHlwZSBwcmVkaWN0aW9uIHdhcyB3cm9uZy4KLSAgICBCYWRGdW5jdGlv
biwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2UgbWFkZSBhbiBpbmNvcnJlY3QgYXNzdW1wdGlvbiBh
Ym91dCB3aGF0IGZ1bmN0aW9uIHdlIHdvdWxkIHNlZS4KKyAgICBCYWRDZWxsLCAvLyBXZSBleGl0
ZWQgYmVjYXVzZSB3ZSBtYWRlIGFuIGluY29ycmVjdCBhc3N1bXB0aW9uIGFib3V0IHdoYXQgY2Vs
bCB3ZSB3b3VsZCBzZWUuIFVzdWFsbHkgdXNlZCBmb3IgZnVuY3Rpb24gY2hlY2tzLgogICAgIEJh
ZEV4ZWN1dGFibGUsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIG1hZGUgYW4gaW5jb3JyZWN0IGFz
c3VtcHRpb24gYWJvdXQgd2hhdCBleGVjdXRhYmxlIHdlIHdvdWxkIHNlZS4KICAgICBCYWRDYWNo
ZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2UgYW4gaW5saW5lIGNhY2hlIHdhcyB3cm9uZy4KICAgICBC
YWRDb25zdGFudENhY2hlLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSBhIGNhY2hlIG9uIGEgd2VhayBj
b25zdGFudCAodXN1YWxseSBhIHByb3RvdHlwZSkgd2FzIHdyb25nLgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYwLDE0
ICsxNDYwLDYgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAg
ICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIAotICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOiB7Ci0gICAgICAgIC8vIEZJWE1FOiBX
ZSBjb3VsZCB0cmFjayBleGVjdXRhYmxlcyBpbiBBYnN0cmFjdFZhbHVlLCB3aGljaCB3b3VsZCBh
bGxvdyB1cyB0byBnZXQgcmlkIG9mIHRoZXNlIGNoZWNrcwotICAgICAgICAvLyBtb3JlIHRob3Jv
dWdobHkuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYyMDAKLSAg
ICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIGVsaW1pbmF0ZSB0aGVzZSBlbnRpcmVseSBpZiB3ZSBr
bm93IHRoZSBleGFjdCB2YWx1ZSB0aGF0IGZsb3dzIGludG8gdGhpcy4KLSAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjIwMQotICAgICAgICBicmVh
azsKLSAgICB9Ci0KICAgICBjYXNlIENoZWNrU3RydWN0dXJlOiB7CiAgICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgYmUgYWJsZSB0byBwcm9wYWdhdGUgdGhlIHN0cnVjdHVyZSBzZXRzIG9mIGNv
bnN0YW50cyAoaS5lLiBwcm90b3R5cGVzKS4KICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUg
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKQEAgLTE3MjcsMTYgKzE3MTksMjkgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgbV9zdGF0ZS5z
ZXRJc1ZhbGlkKGZhbHNlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgICAgICAKKyAgICBj
YXNlIEdldEV4ZWN1dGFibGU6IHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGZvck5vZGUobm9k
ZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAgICAgICAg
SlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2YWx1ZSk7
CisgICAgICAgICAgICBpZiAoZnVuY3Rpb24pIHsKKyAgICAgICAgICAgICAgICBzZXRDb25zdGFu
dChub2RlLCAqbV9ncmFwaC5mcmVlemUoZnVuY3Rpb24tPmV4ZWN1dGFibGUoKSkpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZvck5v
ZGUobm9kZSkuc2V0VHlwZShTcGVjQ2VsbE90aGVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQog
ICAgIAotICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjogeworICAgIGNhc2UgQ2hlY2tDZWxsOiB7CiAg
ICAgICAgIEpTVmFsdWUgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwot
ICAgICAgICBpZiAodmFsdWUgPT0gbm9kZS0+ZnVuY3Rpb24oKS0+dmFsdWUoKSkgeworICAgICAg
ICBpZiAodmFsdWUgPT0gbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKSkgewogICAgICAgICAg
ICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKICAgICAgICAgICAgIEFTU0VSVCh2
YWx1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAg
ZmlsdGVyQnlWYWx1ZShub2RlLT5jaGlsZDEoKSwgKm5vZGUtPmZ1bmN0aW9uKCkpOworICAgICAg
ICBmaWx0ZXJCeVZhbHVlKG5vZGUtPmNoaWxkMSgpLCAqbm9kZS0+Y2VsbE9wZXJhbmQoKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC0xOTAyLDYgKzE5MDcsNyBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogCiAg
ICAgY2FzZSBGb3JjZU9TUkV4aXQ6CisgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgICAgIG1f
c3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQ
cm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzg5LDYgKzM4OSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIC8vIHRoZW4g
LTAgYW5kIDAgYXJlIHRyZWF0ZWQgdGhlIHNhbWUuCiAgICAgICAgICAgICAgICAgbm9kZS0+Y2hp
bGQxKCktPm1lcmdlRmxhZ3MoTm9kZUJ5dGVjb2RlVXNlc0FzTnVtYmVyIHwgTm9kZUJ5dGVjb2Rl
VXNlc0FzT3RoZXIpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBT
d2l0Y2hDZWxsOgorICAgICAgICAgICAgICAgIC8vIFRoZXJlIGlzIGN1cnJlbnRseSBubyBwb2lu
dCB0byBiZWluZyBjbGV2ZXIgaGVyZSBzaW5jZSB0aGlzIGlzIHVzZWQgZm9yIHN3aXRjaGluZwor
ICAgICAgICAgICAgICAgIC8vIG9uIG9iamVjdHMuCisgICAgICAgICAgICAgICAgbWVyZ2VEZWZh
dWx0RmxhZ3Mobm9kZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCYXNpY0Jsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3
IEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICBOb2RlKiYg
b3BlcmF0b3JbXShzaXplX3QgaSkgeyByZXR1cm4gYXQoaSk7IH0KICAgICBOb2RlKiBvcGVyYXRv
cltdKHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBhdChpKTsgfQogICAgIE5vZGUqIGxhc3QoKSBj
b25zdCB7IHJldHVybiBhdChzaXplKCkgLSAxKTsgfQorICAgIE5vZGUqIHRha2VMYXN0KCkgeyBy
ZXR1cm4gbV9ub2Rlcy50YWtlTGFzdCgpOyB9CiAgICAgdm9pZCByZXNpemUoc2l6ZV90IHNpemUp
IHsgbV9ub2Rlcy5yZXNpemUoc2l6ZSk7IH0KICAgICB2b2lkIGdyb3coc2l6ZV90IHNpemUpIHsg
bV9ub2Rlcy5ncm93KHNpemUpOyB9CiAgICAgCkBAIC0xMDYsNiArMTA3LDEzIEBAIHN0cnVjdCBC
YXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICAKICAgICB2b2lkIGR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgY29uc3Q7CiAgICAgCisgICAgdm9pZCBkaWRMaW5rKCkKKyAgICB7Cisj
aWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICBpc0xpbmtlZCA9IHRydWU7CisjZW5kaWYKKyAg
ICB9CisgICAgCiAgICAgLy8gVGhpcyB2YWx1ZSBpcyB1c2VkIGludGVybmFsbHkgZm9yIGJsb2Nr
IGxpbmtpbmcgYW5kIE9TUiBlbnRyeS4gSXQgaXMgbW9zdGx5IG1lYW5pbmdsZXNzCiAgICAgLy8g
Zm9yIG90aGVyIHB1cnBvc2VzIGR1ZSB0byBpbmxpbmluZy4KICAgICB1bnNpZ25lZCBieXRlY29k
ZUJlZ2luOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsMTQgKzE3OCwy
MCBAQCBwcml2YXRlOgogICAgICAgICBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgYXJnQ291bnQsIGlu
dCByZWdpc3Rlck9mZnNldCwgQ2FsbExpbmtTdGF0dXMpOwogICAgIHZvaWQgaGFuZGxlQ2FsbChp
bnQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgdW5zaWduZWQg
aW5zdHJ1Y3Rpb25TaXplLCBpbnQgY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9m
ZnNldCk7CiAgICAgdm9pZCBoYW5kbGVDYWxsKEluc3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3As
IENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwotICAgIHZvaWQgZW1pdEZ1bmN0aW9uQ2hlY2tzKGNv
bnN0IENhbGxMaW5rU3RhdHVzJiwgTm9kZSogY2FsbFRhcmdldCwgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICB2b2lkIGVtaXRGdW5jdGlvbkNoZWNrcyhD
YWxsVmFyaWFudCwgTm9kZSogY2FsbFRhcmdldCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kKTsKKyAgICB2b2lkIHVuZG9GdW5jdGlvbkNoZWNrcyhDYWxsVmFyaWFu
dCk7CiAgICAgdm9pZCBlbWl0QXJndW1lbnRQaGFudG9tcyhpbnQgcmVnaXN0ZXJPZmZzZXQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7Cisg
ICAgdW5zaWduZWQgaW5saW5pbmdDb3N0KENhbGxWYXJpYW50LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOyAvLyBSZXR1cm4gVUlOVF9NQVgg
aWYgaXQncyBub3QgYW4gaW5saW5pbmcgY2FuZGlkYXRlLiBCeSBjb252ZW50aW9uLCBpbnRyaW5z
aWNzIGhhdmUgYSBjb3N0IG9mIDEuCiAgICAgLy8gSGFuZGxlIGlubGluaW5nLiBSZXR1cm4gdHJ1
ZSBpZiBpdCBzdWNjZWVkZWQsIGZhbHNlIGlmIHdlIG5lZWQgdG8gcGxhbnQgYSBjYWxsLgotICAg
IGJvb2wgaGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVy
YW5kLCBjb25zdCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJh
bWU6OktpbmQpOworICAgIGJvb2wgaGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUs
IGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9m
ZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0
LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCwgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbik7CisgICAgZW51bSBDYWxsZXJMaW5rYWJpbGl0eSB7IENhbGxlckRvZXNOb3Jt
YWxMaW5raW5nLCBDYWxsZXJMaW5rc01hbnVhbGx5IH07CisgICAgYm9vbCBhdHRlbXB0VG9Jbmxp
bmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcmlh
bnQsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1
bnNpZ25lZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIENhbGxlckxpbmthYmls
aXR5LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCB1bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNl
KTsKKyAgICB2b2lkIGlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRP
cGVyYW5kLCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2lu
ZCwgQ2FsbGVyTGlua2FiaWxpdHkpOworICAgIHZvaWQgY2FuY2VsTGlua2luZ0ZvckJsb2NrKElu
bGluZVN0YWNrRW50cnkqLCBCYXNpY0Jsb2NrKik7IC8vIE9ubHkgd29ya3Mgd2hlbiB0aGUgZ2l2
ZW4gYmxvY2sgaXMgdGhlIGxhc3Qgb25lIHRvIGhhdmUgYmVlbiBhZGRlZCBmb3IgdGhhdCBpbmxp
bmUgc3RhY2sgZW50cnkuCiAgICAgLy8gSGFuZGxlIGludHJpbnNpYyBmdW5jdGlvbnMuIFJldHVy
biB0cnVlIGlmIGl0IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwu
CiAgICAgYm9vbCBoYW5kbGVJbnRyaW5zaWMoaW50IHJlc3VsdE9wZXJhbmQsIEludHJpbnNpYywg
aW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3Rpb24pOwogICAgIGJvb2wgaGFuZGxlVHlwZWRBcnJheUNvbnN0cnVj
dG9yKGludCByZXN1bHRPcGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlKTsKLSAg
ICBib29sIGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihpbnQgcmVzdWx0T3BlcmFuZCwg
SW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kKTsKKyAgICBib29sIGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihpbnQgcmVz
dWx0T3BlcmFuZCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICBO
b2RlKiBoYW5kbGVQdXRCeU9mZnNldChOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyLCBQ
cm9wZXJ0eU9mZnNldCwgTm9kZSogdmFsdWUpOwogICAgIE5vZGUqIGhhbmRsZUdldEJ5T2Zmc2V0
KFNwZWN1bGF0ZWRUeXBlLCBOb2RlKiBiYXNlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmLCB1bnNpZ25l
ZCBpZGVudGlmaWVyTnVtYmVyLCBQcm9wZXJ0eU9mZnNldCwgTm9kZVR5cGUgb3AgPSBHZXRCeU9m
ZnNldCk7CiAgICAgdm9pZCBoYW5kbGVHZXRCeUlkKApAQCAtNjM3LDYgKzY0MywxMyBAQCBwcml2
YXRlOgogICAgICAgICAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CisgICAgCisgICAg
dm9pZCByZW1vdmVMYXN0Tm9kZUZyb21HcmFwaChOb2RlVHlwZSBleHBlY3RlZE5vZGVUeXBlKQor
ICAgIHsKKyAgICAgICAgTm9kZSogbm9kZSA9IG1fY3VycmVudEJsb2NrLT50YWtlTGFzdCgpOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5vcCgpID09IGV4cGVjdGVkTm9kZVR5cGUpOwor
ICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CisgICAgfQogCiAgICAgdm9p
ZCBhZGRWYXJBcmdDaGlsZChOb2RlKiBjaGlsZCkKICAgICB7CkBAIC02NDUsNyArNjU4LDcgQEAg
cHJpdmF0ZToKICAgICB9CiAgICAgCiAgICAgTm9kZSogYWRkQ2FsbFdpdGhvdXRTZXR0aW5nUmVz
dWx0KAotICAgICAgICBOb2RlVHlwZSBvcCwgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGlu
dCByZWdpc3Rlck9mZnNldCwKKyAgICAgICAgTm9kZVR5cGUgb3AsIE9wSW5mbyBvcEluZm8sIE5v
ZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAgICAgIFNw
ZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiAgICAgewogICAgICAgICBhZGRWYXJBcmdDaGlsZChj
YWxsZWUpOwpAQCAtNjU3LDE1ICs2NzAsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgZm9yIChpbnQg
aSA9IDAgKyBkdW1teVRoaXNBcmd1bWVudDsgaSA8IGFyZ0NvdW50OyArK2kpCiAgICAgICAgICAg
ICBhZGRWYXJBcmdDaGlsZChnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSwgcmVnaXN0
ZXJPZmZzZXQpKSk7CiAKLSAgICAgICAgcmV0dXJuIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBv
cCwgT3BJbmZvKDApLCBPcEluZm8ocHJlZGljdGlvbikpOworICAgICAgICByZXR1cm4gYWRkVG9H
cmFwaChOb2RlOjpWYXJBcmcsIG9wLCBvcEluZm8sIE9wSW5mbyhwcmVkaWN0aW9uKSk7CiAgICAg
fQogICAgIAogICAgIE5vZGUqIGFkZENhbGwoCi0gICAgICAgIGludCByZXN1bHQsIE5vZGVUeXBl
IG9wLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAorICAg
ICAgICBpbnQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgT3BJbmZvIG9wSW5mbywgTm9kZSogY2FsbGVl
LCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCwKICAgICAgICAgU3BlY3VsYXRlZFR5
cGUgcHJlZGljdGlvbikKICAgICB7CiAgICAgICAgIE5vZGUqIGNhbGwgPSBhZGRDYWxsV2l0aG91
dFNldHRpbmdSZXN1bHQoCi0gICAgICAgICAgICBvcCwgY2FsbGVlLCBhcmdDb3VudCwgcmVnaXN0
ZXJPZmZzZXQsIHByZWRpY3Rpb24pOworICAgICAgICAgICAgb3AsIG9wSW5mbywgY2FsbGVlLCBh
cmdDb3VudCwgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwogICAgICAgICBWaXJ0dWFsUmVn
aXN0ZXIgcmVzdWx0UmVnKHJlc3VsdCk7CiAgICAgICAgIGlmIChyZXN1bHRSZWcuaXNWYWxpZCgp
KQogICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHQpLCBjYWxsKTsKQEAgLTg3
MSw4ICs4ODQsNyBAQCBwcml2YXRlOgogICAgICAgICBWZWN0b3I8VW5saW5rZWRCbG9jaz4gbV91
bmxpbmtlZEJsb2NrczsKICAgICAgICAgCiAgICAgICAgIC8vIFBvdGVudGlhbCBibG9jayBsaW5r
aW5nIHRhcmdldHMuIE11c3QgYmUgc29ydGVkIGJ5IGJ5dGVjb2RlQmVnaW4sIGFuZAotICAgICAg
ICAvLyBjYW5ub3QgaGF2ZSB0d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRlY29kZUJl
Z2luLiBGb3IgdGhpcyB2ZXJ5Ci0gICAgICAgIC8vIHJlYXNvbiwgdGhpcyBpcyBub3QgZXF1aXZh
bGVudCB0byAKKyAgICAgICAgLy8gY2Fubm90IGhhdmUgdHdvIGJsb2NrcyB0aGF0IGhhdmUgdGhl
IHNhbWUgYnl0ZWNvZGVCZWdpbi4KICAgICAgICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBtX2Jsb2Nr
TGlua2luZ1RhcmdldHM7CiAgICAgICAgIAogICAgICAgICAvLyBJZiB0aGUgY2FsbHNpdGUncyBi
YXNpYyBibG9jayB3YXMgc3BsaXQgaW50byB0d28sIHRoZW4gdGhpcyB3aWxsIGJlCkBAIC0xMDI4
LDUzICsxMDQwLDI3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoCiAgICAgICAg
IC8vIE9kZGx5LCB0aGlzIGNvbmZsYXRlcyBjYWxscyB0aGF0IGhhdmVuJ3QgZXhlY3V0ZWQgd2l0
aCBjYWxscyB0aGF0IGJlaGF2ZWQgc3VmZmljaWVudGx5IHBvbHltb3JwaGljYWxseQogICAgICAg
ICAvLyB0aGF0IHdlIGNhbm5vdCBvcHRpbWl6ZSB0aGVtLgogICAgICAgICAKLSAgICAgICAgYWRk
Q2FsbChyZXN1bHQsIG9wLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
cmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOworICAgICAgICBhZGRDYWxsKHJlc3VsdCwgb3As
IE9wSW5mbygpLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0
ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAg
IHVuc2lnbmVkIG5leHRPZmZzZXQgPSBtX2N1cnJlbnRJbmRleCArIGluc3RydWN0aW9uU2l6ZTsK
KyAgICAKKyAgICBPcEluZm8gY2FsbE9wSW5mbzsKIAotICAgIGlmIChJbnRlcm5hbEZ1bmN0aW9u
KiBmdW5jdGlvbiA9IGNhbGxMaW5rU3RhdHVzLmludGVybmFsRnVuY3Rpb24oKSkgewotICAgICAg
ICBpZiAoaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKHJlc3VsdCwgZnVuY3Rpb24sIHJl
Z2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbiwgc3Bl
Y2lhbGl6YXRpb25LaW5kKSkgewotICAgICAgICAgICAgLy8gVGhpcyBwaGFudG9taW5nIGhhcyB0
byBiZSAqYWZ0ZXIqIHRoZSBjb2RlIGZvciB0aGUgaW50cmluc2ljLCB0byBzaWduaWZ5IHRoYXQK
LSAgICAgICAgICAgIC8vIHRoZSBpbnB1dHMgbXVzdCBiZSBrZXB0IGFsaXZlIHdoYXRldmVyIGV4
aXRzIHRoZSBpbnRyaW5zaWMgbWF5IGRvLgotICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9t
LCBjYWxsVGFyZ2V0KTsKLSAgICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVy
T2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gQ2Fu
IG9ubHkgaGFuZGxlIHRoaXMgdXNpbmcgdGhlIGdlbmVyaWMgY2FsbCBoYW5kbGVyLgotICAgICAg
ICBhZGRDYWxsKHJlc3VsdCwgb3AsIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgICAgIAotICAgIEludHJpbnNpYyBpbnRyaW5zaWMgPSBjYWxsTGlua1N0YXR1cy5pbnRy
aW5zaWNGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKLQotICAgIEpTRnVuY3Rpb24qIGtub3duRnVu
Y3Rpb24gPSBudWxscHRyOwotICAgIGlmIChpbnRyaW5zaWMgIT0gTm9JbnRyaW5zaWMpIHsKLSAg
ICAgICAgZW1pdEZ1bmN0aW9uQ2hlY2tzKGNhbGxMaW5rU3RhdHVzLCBjYWxsVGFyZ2V0LCByZWdp
c3Rlck9mZnNldCwgc3BlY2lhbGl6YXRpb25LaW5kKTsKLSAgICAgICAgICAgIAotICAgICAgICBp
ZiAoaGFuZGxlSW50cmluc2ljKHJlc3VsdCwgaW50cmluc2ljLCByZWdpc3Rlck9mZnNldCwgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHByZWRpY3Rpb24pKSB7Ci0gICAgICAgICAgICAvLyBU
aGlzIHBoYW50b21pbmcgaGFzIHRvIGJlICphZnRlciogdGhlIGNvZGUgZm9yIHRoZSBpbnRyaW5z
aWMsIHRvIHNpZ25pZnkgdGhhdAotICAgICAgICAgICAgLy8gdGhlIGlucHV0cyBtdXN0IGJlIGtl
cHQgYWxpdmUgd2hhdGV2ZXIgZXhpdHMgdGhlIGludHJpbnNpYyBtYXkgZG8uCi0gICAgICAgICAg
ICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXQpOwotICAgICAgICAgICAgZW1pdEFyZ3Vt
ZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBz
cGVjaWFsaXphdGlvbktpbmQpOwotICAgICAgICAgICAgaWYgKG1fZ3JhcGguY29tcGlsYXRpb24o
KSkKLSAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5vdGljZUlubGluZWRD
YWxsKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGhh
bmRsZUlubGluaW5nKGNhbGxUYXJnZXQsIHJlc3VsdCwgY2FsbExpbmtTdGF0dXMsIHJlZ2lzdGVy
T2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbmV4dE9mZnNldCwga2luZCkpIHsK
KyAgICBpZiAoaGFuZGxlSW5saW5pbmcoY2FsbFRhcmdldCwgcmVzdWx0LCBjYWxsTGlua1N0YXR1
cywgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zmc2V0
LCBvcCwga2luZCwgcHJlZGljdGlvbikpIHsKICAgICAgICAgaWYgKG1fZ3JhcGguY29tcGlsYXRp
b24oKSkKICAgICAgICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZENh
bGwoKTsKICAgICAgICAgcmV0dXJuOwogI2lmIEVOQUJMRShGVExfTkFUSVZFX0NBTExfSU5MSU5J
TkcpCi0gICAgfSBlbHNlIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSAmJiBPcHRpb25z
OjpvcHRpbWl6ZU5hdGl2ZUNhbGxzKCkpIHsKLSAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24g
PSBjYWxsTGlua1N0YXR1cy5mdW5jdGlvbigpOworICAgIH0gZWxzZSBpZiAoaXNGVEwobV9ncmFw
aC5tX3BsYW4ubW9kZSkgJiYgT3B0aW9uczo6b3B0aW1pemVOYXRpdmVDYWxscygpICYmIGNhbGxM
aW5rU3RhdHVzLnNpemUoKSA9PSAxICYmICFjYWxsTGlua1N0YXR1cy5jb3VsZFRha2VTbG93UGF0
aCgpKSB7CisgICAgICAgIENhbGxWYXJpYW50IGNhbGxlZSA9IGNhbGxMaW5rU3RhdHVzWzBdLmNh
bGxlZSgpOworICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS5mdW5jdGlvbigp
OwogICAgICAgICBpZiAoZnVuY3Rpb24gJiYgZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkpIHsK
LSAgICAgICAgICAgIGVtaXRGdW5jdGlvbkNoZWNrcyhjYWxsTGlua1N0YXR1cywgY2FsbFRhcmdl
dCwgcmVnaXN0ZXJPZmZzZXQsIHNwZWNpYWxpemF0aW9uS2luZCk7Ci0gICAgICAgICAgICBrbm93
bkZ1bmN0aW9uID0gZnVuY3Rpb247CisgICAgICAgICAgICBlbWl0RnVuY3Rpb25DaGVja3MoY2Fs
bGVlLCBjYWxsVGFyZ2V0LCByZWdpc3Rlck9mZnNldCwgc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAg
ICAgICAgICAgIGNhbGxPcEluZm8gPSBPcEluZm8obV9ncmFwaC5mcmVlemUoZnVuY3Rpb24pKTsK
IAotICAgICAgICAgICAgaWYgKG9wID09IENhbGwpIAorICAgICAgICAgICAgaWYgKG9wID09IENh
bGwpCiAgICAgICAgICAgICAgICAgb3AgPSBOYXRpdmVDYWxsOwogICAgICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAgICAgQVNTRVJUKG9wID09IENvbnN0cnVjdCk7CkBAIC0xMDgzLDEzICsx
MDY5LDExIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoCiAgICAgICAgIH0KICNl
bmRpZgogICAgIH0KLSAgICBOb2RlKiBjYWxsID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBjYWxsVGFy
Z2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rp
b24pOwotCi0gICAgaWYgKGtub3duRnVuY3Rpb24pIAotICAgICAgICBjYWxsLT5naXZlS25vd25G
dW5jdGlvbihrbm93bkZ1bmN0aW9uKTsKKyAgICAKKyAgICBhZGRDYWxsKHJlc3VsdCwgb3AsIGNh
bGxPcEluZm8sIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rl
ck9mZnNldCwgcHJlZGljdGlvbik7CiB9CiAKLXZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRGdW5j
dGlvbkNoZWNrcyhjb25zdCBDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsIE5vZGUqIGNh
bGxUYXJnZXQsIGludCByZWdpc3Rlck9mZnNldCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
KQordm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdEZ1bmN0aW9uQ2hlY2tzKENhbGxWYXJpYW50IGNh
bGxlZSwgTm9kZSogY2FsbFRhcmdldCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgTm9kZSogdGhpc0FyZ3VtZW50OwogICAgIGlmIChraW5k
ID09IENvZGVGb3JDYWxsKQpAQCAtMTA5Nyw1MCArMTA4MSw0MCBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjplbWl0RnVuY3Rpb25DaGVja3MoCiAgICAgZWxzZQogICAgICAgICB0aGlzQXJndW1lbnQg
PSAwOwogCi0gICAgaWYgKGNhbGxMaW5rU3RhdHVzLmlzUHJvdmVkKCkpIHsKLSAgICAgICAgYWRk
VG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0LCB0aGlzQXJndW1lbnQpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIAotICAgIEFTU0VSVChjYWxsTGlua1N0YXR1cy5jYW5PcHRpbWl6ZSgp
KTsKLSAgICAKLSAgICBpZiAoSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsTGlua1N0YXR1cy5m
dW5jdGlvbigpKQotICAgICAgICBhZGRUb0dyYXBoKENoZWNrRnVuY3Rpb24sIE9wSW5mbyhtX2dy
YXBoLmZyZWV6ZShmdW5jdGlvbikpLCBjYWxsVGFyZ2V0LCB0aGlzQXJndW1lbnQpOworICAgIGlm
ICghY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSkKKyAgICAgICAgYWRkVG9HcmFwaChDaGVja0NlbGws
IE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShjYWxsZWUuZnVuY3Rpb24oKSkpLCBjYWxsVGFyZ2V0LCB0
aGlzQXJndW1lbnQpOwogICAgIGVsc2UgewotICAgICAgICBBU1NFUlQoY2FsbExpbmtTdGF0dXMu
ZXhlY3V0YWJsZSgpKTsKLSAgICAgICAgCi0gICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tFeGVjdXRh
YmxlLCBPcEluZm8oY2FsbExpbmtTdGF0dXMuZXhlY3V0YWJsZSgpKSwgY2FsbFRhcmdldCwgdGhp
c0FyZ3VtZW50KTsKKyAgICAgICAgQVNTRVJUKGNhbGxlZS5leGVjdXRhYmxlKCkpOworICAgICAg
ICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKGNhbGxlZS5leGVjdXRhYmxlKCkpLCBhZGRU
b0dyYXBoKEdldEV4ZWN1dGFibGUsIGNhbGxUYXJnZXQpLCB0aGlzQXJndW1lbnQpOwogICAgIH0K
IH0KIAordm9pZCBCeXRlQ29kZVBhcnNlcjo6dW5kb0Z1bmN0aW9uQ2hlY2tzKENhbGxWYXJpYW50
IGNhbGxlZSkKK3sKKyAgICByZW1vdmVMYXN0Tm9kZUZyb21HcmFwaChDaGVja0NlbGwpOworICAg
IGlmIChjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKQorICAgICAgICByZW1vdmVMYXN0Tm9kZUZyb21H
cmFwaChHZXRFeGVjdXRhYmxlKTsKK30KKwogdm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdEFyZ3Vt
ZW50UGhhbnRvbXMoaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICBmb3IgKGludCBpID0g
a2luZCA9PSBDb2RlRm9yQ2FsbCA/IDAgOiAxOyBpIDwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXM7ICsraSkKICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBnZXQodmlydHVhbFJlZ2lzdGVy
Rm9yQXJndW1lbnQoaSwgcmVnaXN0ZXJPZmZzZXQpKSk7CiB9CiAKLWJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFu
ZCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBpbnQgcmVnaXN0ZXJPZmZz
ZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwg
SW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQpCit1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6aW5s
aW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgc3RhdGljIGNvbnN0IGJv
b2wgdmVyYm9zZSA9IGZhbHNlOwogICAgIAotICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3Bl
Y2lhbGl6YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXphdGlvbktpbmRGb3Io
a2luZCk7Ci0gICAgCiAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2coIkNvbnNpZGVy
aW5nIGlubGluaW5nICIsIGNhbGxMaW5rU3RhdHVzLCAiIGludG8gIiwgY3VycmVudENvZGVPcmln
aW4oKSwgIlxuIik7CisgICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nIGlubGluaW5nICIsIGNh
bGxlZSwgIiBpbnRvICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOwogICAgIAotICAgIC8v
IEZpcnN0LCB0aGUgcmVhbGx5IHNpbXBsZSBjaGVja3M6IGRvIHdlIGhhdmUgYW4gYWN0dWFsIEpT
IGZ1bmN0aW9uPwotICAgIGlmICghY2FsbExpbmtTdGF0dXMuZXhlY3V0YWJsZSgpKSB7CisgICAg
RnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY2FsbGVlLmZ1bmN0aW9uRXhlY3V0YWJs
ZSgpOworICAgIGlmICghZXhlY3V0YWJsZSkgewogICAgICAgICBpZiAodmVyYm9zZSkKLSAgICAg
ICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgdGhlcmUgaXMgbm8gZXhlY3V0YWJs
ZS5cbiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBkYXRhTG9nKCIgICAg
RmFpbGluZyBiZWNhdXNlIHRoZXJlIGlzIG5vIGZ1bmN0aW9uIGV4ZWN1dGFibGUuIik7CisgICAg
ICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9Ci0gICAgaWYgKGNhbGxMaW5rU3RhdHVzLmV4ZWN1
dGFibGUoKS0+aXNIb3N0RnVuY3Rpb24oKSkgewotICAgICAgICBpZiAodmVyYm9zZSkKLSAgICAg
ICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgaXQncyBhIGhvc3QgZnVuY3Rpb24u
XG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oY2FsbExp
bmtTdGF0dXMuZXhlY3V0YWJsZSgpKTsKICAgICAKICAgICAvLyBEb2VzIHRoZSBudW1iZXIgb2Yg
YXJndW1lbnRzIHdlJ3JlIHBhc3NpbmcgbWF0Y2ggdGhlIGFyaXR5IG9mIHRoZSB0YXJnZXQ/IFdl
IGN1cnJlbnRseQogICAgIC8vIGlubGluZSBvbmx5IGlmIHRoZSBudW1iZXIgb2YgYXJndW1lbnRz
IHBhc3NlZCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG51bWJlcgpAQCAtMTE0OCw3
ICsxMTIyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAg
IGlmIChzdGF0aWNfY2FzdDxpbnQ+KGV4ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCkpICsgMSA+
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAg
ICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSBvZiBhcml0eSBtaXNtYXRjaC5c
biIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAg
ICB9CiAgICAgCiAgICAgLy8gRG8gd2UgaGF2ZSBhIGNvZGUgYmxvY2ssIGFuZCBkb2VzIHRoZSBj
b2RlIGJsb2NrJ3Mgc2l6ZSBtYXRjaCB0aGUgaGV1cmlzdGljcy9yZXF1aXJlbWVudHMgZm9yCkBA
IC0xMTU3LDE4ICsxMTMxLDE4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5n
KE5vZGUKICAgICAvLyBpZiB3ZSBoYWQgYSBzdGF0aWMgcHJvb2Ygb2Ygd2hhdCB3YXMgYmVpbmcg
Y2FsbGVkOyB0aGlzIG1pZ2h0IGhhcHBlbiBmb3IgZXhhbXBsZSBpZiB5b3UgY2FsbCBhCiAgICAg
Ly8gZ2xvYmFsIGZ1bmN0aW9uLCB3aGVyZSB3YXRjaHBvaW50aW5nIGdpdmVzIHVzIHN0YXRpYyBp
bmZvcm1hdGlvbi4gT3ZlcmFsbCwgaXQncyBhIHJhcmUgY2FzZQogICAgIC8vIGJlY2F1c2Ugd2Ug
ZXhwZWN0IHRoYXQgYW55IGhvdCBjYWxsZWVzIHdvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNvbXBp
bGVkLgotICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+YmFzZWxpbmVDb2Rl
QmxvY2tGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWN1dGFibGUtPmJhc2VsaW5lQ29kZUJsb2NrRm9yKGtpbmQpOwogICAgIGlmICghY29kZUJs
b2NrKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZh
aWxpbmcgYmVjYXVzZSBubyBjb2RlIGJsb2NrIGF2YWlsYWJsZS5cbiIpOwotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CiAgICAgQ2FwYWJpbGl0
eUxldmVsIGNhcGFiaWxpdHlMZXZlbCA9IGlubGluZUZ1bmN0aW9uRm9yQ2FwYWJpbGl0eUxldmVs
KAotICAgICAgICBjb2RlQmxvY2ssIHNwZWNpYWxpemF0aW9uS2luZCwgY2FsbExpbmtTdGF0dXMu
aXNDbG9zdXJlQ2FsbCgpKTsKKyAgICAgICAgY29kZUJsb2NrLCBraW5kLCBjYWxsZWUuaXNDbG9z
dXJlQ2FsbCgpKTsKICAgICBpZiAoIWNhbklubGluZShjYXBhYmlsaXR5TGV2ZWwpKSB7CiAgICAg
ICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVz
ZSB0aGUgZnVuY3Rpb24gaXMgbm90IGlubGluZWFibGUuXG4iKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQogICAgIAogICAgIC8vIENoZWNr
IGlmIHRoZSBjYWxsZXIgaXMgYWxyZWFkeSB0b28gbGFyZ2UuIFdlIGRvIHRoaXMgY2hlY2sgaGVy
ZSBiZWNhdXNlIHRoYXQncyBqdXN0CkBAIC0xMTc4LDcgKzExNTIsNyBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgICAgIGNvZGVCbG9jay0+bV9zaG91bGRB
bHdheXNCZUlubGluZWQgPSBmYWxzZTsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAg
ICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIHRoZSBjYWxsZXIgaXMgdG9vIGxhcmdlLlxu
Iik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAg
IH0KICAgICAKICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgYmV0dGVyIGF0IHByZWRpY3Rp
bmcgaG93IG11Y2ggYmxvYXQgd2Ugd2lsbCBpbnRyb2R1Y2UgYnkgaW5saW5pbmcKQEAgLTExOTcs
NyArMTE3MSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAg
ICAgICAgaWYgKGRlcHRoID49IE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ0RlcHRoKCkpIHsKICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWls
aW5nIGJlY2F1c2UgZGVwdGggZXhjZWVkZWQuXG4iKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICAgICAgfQogICAgICAgICAKICAg
ICAgICAgaWYgKGVudHJ5LT5leGVjdXRhYmxlKCkgPT0gZXhlY3V0YWJsZSkgewpAQCAtMTIwNSwx
OSArMTE3OSwyNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAg
ICAgICAgICAgICBpZiAocmVjdXJzaW9uID49IE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ1JlY3Vy
c2lvbigpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgcmVjdXJzaW9uIGRldGVjdGVkLlxuIik7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiBV
SU5UX01BWDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICAKICAgICBpZiAo
dmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZygiICAgIENvbW1pdHRpbmcgdG8gaW5saW5pbmcuXG4i
KTsKKyAgICAgICAgZGF0YUxvZygiICAgIElubGluaW5nIHNob3VsZCBiZSBwb3NzaWJsZS5cbiIp
OworICAgIAorICAgIC8vIEl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRvIGlubGluZS4KKyAgICByZXR1
cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCk7Cit9CisKK3ZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBD
YWxsVmFyaWFudCBjYWxsZWUsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQg
a2luZCwgQ2FsbGVyTGlua2FiaWxpdHkgY2FsbGVyTGlua2FiaWxpdHkpCit7CisgICAgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNw
ZWNpYWxpemF0aW9uS2luZEZvcihraW5kKTsKICAgICAKLSAgICAvLyBOb3cgd2Uga25vdyB3aXRo
b3V0IGEgZG91YnQgdGhhdCB3ZSBhcmUgY29tbWl0dGVkIHRvIGlubGluaW5nLiBTbyBiZWdpbiB0
aGUgcHJvY2VzcwotICAgIC8vIGJ5IGNoZWNraW5nIHRoZSBjYWxsZWUgKGlmIG5lY2Vzc2FyeSkg
YW5kIG1ha2luZyBzdXJlIHRoYXQgYXJndW1lbnRzIGFuZCB0aGUgY2FsbGVlCi0gICAgLy8gYXJl
IGZsdXNoZWQuCi0gICAgZW1pdEZ1bmN0aW9uQ2hlY2tzKGNhbGxMaW5rU3RhdHVzLCBjYWxsVGFy
Z2V0Tm9kZSwgcmVnaXN0ZXJPZmZzZXQsIHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgQVNTRVJU
KGlubGluaW5nQ29zdChjYWxsZWUsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFs
aXphdGlvbktpbmQpICE9IFVJTlRfTUFYKTsKICAgICAKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGNhbGxlZS5mdW5jdGlvbkV4ZWN1dGFibGUoKS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Ioc3Bl
Y2lhbGl6YXRpb25LaW5kKTsKKwogICAgIC8vIEZJWE1FOiBEb24ndCBmbHVzaCBjb25zdGFudHMh
CiAgICAgCiAgICAgaW50IGlubGluZUNhbGxGcmFtZVN0YXJ0ID0gbV9pbmxpbmVTdGFja1RvcC0+
cmVtYXBPcGVyYW5kKFZpcnR1YWxSZWdpc3RlcihyZWdpc3Rlck9mZnNldCkpLm9mZnNldCgpICsg
SlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsKQEAgLTEyMzMsNyArMTIxNCw3IEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAgICAgcmVzdWx0UmVnID0g
bV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKHJlc3VsdFJlZyk7CiAgICAgCiAgICAgSW5s
aW5lU3RhY2tFbnRyeSBpbmxpbmVTdGFja0VudHJ5KAotICAgICAgICB0aGlzLCBjb2RlQmxvY2ss
IGNvZGVCbG9jaywgbV9ncmFwaC5sYXN0QmxvY2soKSwgY2FsbExpbmtTdGF0dXMuZnVuY3Rpb24o
KSwgcmVzdWx0UmVnLAorICAgICAgICB0aGlzLCBjb2RlQmxvY2ssIGNvZGVCbG9jaywgbV9ncmFw
aC5sYXN0QmxvY2soKSwgY2FsbGVlLmZ1bmN0aW9uKCksIHJlc3VsdFJlZywKICAgICAgICAgKFZp
cnR1YWxSZWdpc3RlcilpbmxpbmVDYWxsRnJhbWVTdGFydCwgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIGtpbmQpOwogICAgIAogICAgIC8vIFRoaXMgaXMgd2hlcmUgdGhlIGFjdHVhbCBpbmxp
bmluZyByZWFsbHkgaGFwcGVucy4KQEAgLTEyNDcsOCArMTIyOCw4IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAKICAgICBSRUxFQVNFX0FTU0VSVCgKICAg
ICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwK
LSAgICAgICAgPT0gY2FsbExpbmtTdGF0dXMuaXNDbG9zdXJlQ2FsbCgpKTsKLSAgICBpZiAoY2Fs
bExpbmtTdGF0dXMuaXNDbG9zdXJlQ2FsbCgpKSB7CisgICAgICAgID09IGNhbGxlZS5pc0Nsb3N1
cmVDYWxsKCkpOworICAgIGlmIChjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKSB7CiAgICAgICAgIFZh
cmlhYmxlQWNjZXNzRGF0YSogY2FsbGVlVmFyaWFibGUgPQogICAgICAgICAgICAgc2V0KFZpcnR1
YWxSZWdpc3RlcihKU1N0YWNrOjpDYWxsZWUpLCBjYWxsVGFyZ2V0Tm9kZSwgSW1tZWRpYXRlTmFr
ZWRTZXQpLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRh
KiBzY29wZVZhcmlhYmxlID0KQEAgLTEyNzYsMjAgKzEyNTcsOCBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIEFTU0VS
VChpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbHNpdGVCbG9ja0hlYWQtPmlzTGlua2VkKTsKICAgICAg
ICAgCi0gICAgICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB0aGUgY2FsbHNpdGUgYmxvY2sgaGVh
ZCBpcyBub3Qgb3duZWQgYnkgdGhlIGNhbGxlci4KLSAgICAgICAgaWYgKCFpbmxpbmVTdGFja0Vu
dHJ5Lm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAg
Ly8gSXQncyBkZWZpbml0ZWx5IG93bmVkIGJ5IHRoZSBjYWxsZXIsIGJlY2F1c2UgdGhlIGNhbGxl
ciBjcmVhdGVkIG5ldyBibG9ja3MuCi0gICAgICAgICAgICAvLyBBc3NlcnQgdGhhdCB0aGlzIGFs
bCBhZGRzIHVwLgotICAgICAgICAgICAgQVNTRVJUKGlubGluZVN0YWNrRW50cnkubV9jYWxsZXIt
Pm1fdW5saW5rZWRCbG9ja3MubGFzdCgpLm1fYmxvY2sgPT0gaW5saW5lU3RhY2tFbnRyeS5tX2Nh
bGxzaXRlQmxvY2tIZWFkKTsKLSAgICAgICAgICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5Lm1f
Y2FsbGVyLT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX25lZWRzTm9ybWFsTGlua2luZyk7Ci0g
ICAgICAgICAgICBpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tzLmxh
c3QoKS5tX25lZWRzTm9ybWFsTGlua2luZyA9IGZhbHNlOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgLy8gSXQncyBkZWZpbml0ZWx5IG5vdCBvd25lZCBieSB0aGUgY2FsbGVyLiBUZWxs
IHRoZSBjYWxsZXIgdGhhdCBoZSBkb2VzIG5vdAotICAgICAgICAgICAgLy8gbmVlZCB0byBsaW5r
IGhpcyBjYWxsc2l0ZSBibG9jayBoZWFkLCBiZWNhdXNlIHdlIGRpZCBpdCBmb3IgaGltLgotICAg
ICAgICAgICAgQVNTRVJUKGlubGluZVN0YWNrRW50cnkubV9jYWxsZXItPm1fY2FsbHNpdGVCbG9j
a0hlYWROZWVkc0xpbmtpbmcpOwotICAgICAgICAgICAgQVNTRVJUKGlubGluZVN0YWNrRW50cnku
bV9jYWxsZXItPm1fY2FsbHNpdGVCbG9ja0hlYWQgPT0gaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxz
aXRlQmxvY2tIZWFkKTsKLSAgICAgICAgICAgIGlubGluZVN0YWNrRW50cnkubV9jYWxsZXItPm1f
Y2FsbHNpdGVCbG9ja0hlYWROZWVkc0xpbmtpbmcgPSBmYWxzZTsKLSAgICAgICAgfQorICAgICAg
ICBpZiAoY2FsbGVyTGlua2FiaWxpdHkgPT0gQ2FsbGVyRG9lc05vcm1hbExpbmtpbmcpCisgICAg
ICAgICAgICBjYW5jZWxMaW5raW5nRm9yQmxvY2soaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlciwg
aW5saW5lU3RhY2tFbnRyeS5tX2NhbGxzaXRlQmxvY2tIZWFkKTsKICAgICAgICAgCiAgICAgICAg
IGxpbmtCbG9ja3MoaW5saW5lU3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLCBpbmxpbmVTdGFj
a0VudHJ5Lm1fYmxvY2tMaW5raW5nVGFyZ2V0cyk7CiAgICAgfSBlbHNlCkBAIC0xMzEyLDEyICsx
MjgxLDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBtX2dyYXBoLmxhc3RCbG9j
aygpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
ICAgICAvLyBJZiB3ZSBnZXQgdG8gdGhpcyBwb2ludCB0aGVuIGFsbCBibG9ja3MgbXVzdCBlbmQg
aW4gc29tZSBzb3J0IG9mIHRlcm1pbmFscy4KICAgICBBU1NFUlQobGFzdEJsb2NrLT5sYXN0KCkt
PmlzVGVybWluYWwoKSk7Ci0gICAgCiAKICAgICAvLyBOZWVkIHRvIGNyZWF0ZSBhIG5ldyBiYXNp
YyBibG9jayBmb3IgdGhlIGNvbnRpbnVhdGlvbiBhdCB0aGUgY2FsbGVyLgogICAgIFJlZlB0cjxC
YXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKG5ldyBCYXNpY0Jsb2NrKG5leHRPZmZzZXQsIG1f
bnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgUE5hTikpOwpAQCAtMTMzMywyMCArMTMwMSwyMzEg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgICAgICBBU1NF
UlQoIW5vZGUtPnRhcmdldEJsb2NrKCkpOwogICAgICAgICBub2RlLT50YXJnZXRCbG9jaygpID0g
YmxvY2suZ2V0KCk7CiAgICAgICAgIGlubGluZVN0YWNrRW50cnkubV91bmxpbmtlZEJsb2Nrc1tp
XS5tX25lZWRzRWFybHlSZXR1cm5MaW5raW5nID0gZmFsc2U7Ci0jaWYgIUFTU0VSVF9ESVNBQkxF
RAotICAgICAgICBibG9ja1RvTGluay0+aXNMaW5rZWQgPSB0cnVlOwotI2VuZGlmCisgICAgICAg
IGJsb2NrVG9MaW5rLT5kaWRMaW5rKCk7CiAgICAgfQogICAgIAogICAgIG1fY3VycmVudEJsb2Nr
ID0gYmxvY2suZ2V0KCk7CiAgICAgQVNTRVJUKG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5t
X2Jsb2NrTGlua2luZ1RhcmdldHMuaXNFbXB0eSgpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fY2Fs
bGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMubGFzdCgpLT5ieXRlY29kZUJlZ2luIDwgbmV4dE9m
ZnNldCk7CiAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3Mu
YXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2suZ2V0KCkpKTsKLSAgICBtX2lubGluZVN0YWNrVG9w
LT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9jay5nZXQoKSk7Cisg
ICAgaWYgKGNhbGxlckxpbmthYmlsaXR5ID09IENhbGxlckRvZXNOb3JtYWxMaW5raW5nKQorICAg
ICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFw
cGVuZChibG9jay5nZXQoKSk7CiAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhibG9jayk7CiAgICAg
cHJlcGFyZVRvUGFyc2VCbG9jaygpOworfQorCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpjYW5jZWxM
aW5raW5nRm9yQmxvY2soSW5saW5lU3RhY2tFbnRyeSogaW5saW5lU3RhY2tFbnRyeSwgQmFzaWNC
bG9jayogYmxvY2spCit7CisgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHRoZSBjYWxsc2l0ZSBi
bG9jayBoZWFkIGlzIG5vdCBvd25lZCBieSB0aGUgY2FsbGVyLgorICAgIGlmICghaW5saW5lU3Rh
Y2tFbnRyeS0+bV91bmxpbmtlZEJsb2Nrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gSXQncyBk
ZWZpbml0ZWx5IG93bmVkIGJ5IHRoZSBjYWxsZXIsIGJlY2F1c2UgdGhlIGNhbGxlciBjcmVhdGVk
IG5ldyBibG9ja3MuCisgICAgICAgIC8vIEFzc2VydCB0aGF0IHRoaXMgYWxsIGFkZHMgdXAuCisg
ICAgICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5LT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5t
X2Jsb2NrID09IGJsb2NrKTsKKyAgICAgICAgQVNTRVJUKGlubGluZVN0YWNrRW50cnktPm1fdW5s
aW5rZWRCbG9ja3MubGFzdCgpLm1fbmVlZHNOb3JtYWxMaW5raW5nKTsKKyAgICAgICAgaW5saW5l
U3RhY2tFbnRyeS0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9uZWVkc05vcm1hbExpbmtpbmcg
PSBmYWxzZTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBJdCdzIGRlZmluaXRlbHkgbm90IG93
bmVkIGJ5IHRoZSBjYWxsZXIuIFRlbGwgdGhlIGNhbGxlciB0aGF0IGhlIGRvZXMgbm90CisgICAg
ICAgIC8vIG5lZWQgdG8gbGluayBoaXMgY2FsbHNpdGUgYmxvY2sgaGVhZCwgYmVjYXVzZSB3ZSBk
aWQgaXQgZm9yIGhpbS4KKyAgICAgICAgQVNTRVJUKGlubGluZVN0YWNrRW50cnktPm1fY2FsbHNp
dGVCbG9ja0hlYWROZWVkc0xpbmtpbmcpOworICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRy
eS0+bV9jYWxsc2l0ZUJsb2NrSGVhZCA9PSBibG9jayk7CisgICAgICAgIGlubGluZVN0YWNrRW50
cnktPm1fY2FsbHNpdGVCbG9ja0hlYWROZWVkc0xpbmtpbmcgPSBmYWxzZTsKKyAgICB9Cit9CisK
K2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmF0dGVtcHRUb0lubGluZUNhbGwoTm9kZSogY2FsbFRhcmdl
dE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyaWFudCBjYWxsZWUsIGludCByZWdpc3Rl
ck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zm
c2V0LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgQ2FsbGVyTGlua2FiaWxpdHkgY2FsbGVy
TGlua2FiaWxpdHksIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxpbmlu
Z0JhbGFuY2UpCit7CisgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktp
bmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5kKTsKKyAgICAK
KyAgICBpZiAoIWlubGluaW5nQmFsYW5jZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAor
ICAgIGlmIChJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS5pbnRlcm5hbEZ1bmN0
aW9uKCkpIHsKKyAgICAgICAgaWYgKGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihyZXN1
bHRPcGVyYW5kLCBmdW5jdGlvbiwgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQpKSB7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFBo
YW50b20sIGNhbGxUYXJnZXROb2RlKTsKKyAgICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21z
KHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRp
b25LaW5kKTsKKyAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZS0tOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAK
KyAgICBJbnRyaW5zaWMgaW50cmluc2ljID0gY2FsbGVlLmludHJpbnNpY0ZvcihzcGVjaWFsaXph
dGlvbktpbmQpOworICAgIGlmIChpbnRyaW5zaWMgIT0gTm9JbnRyaW5zaWMpIHsKKyAgICAgICAg
aWYgKGhhbmRsZUludHJpbnNpYyhyZXN1bHRPcGVyYW5kLCBpbnRyaW5zaWMsIHJlZ2lzdGVyT2Zm
c2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbikpIHsKKyAgICAgICAg
ICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldE5vZGUpOworICAgICAgICAgICAgZW1p
dEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgICAgICAgICAgaW5saW5pbmdCYWxhbmNlLS07
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIG15SW5saW5pbmdDb3N0ID0gaW5saW5pbmdD
b3N0KGNhbGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2lu
ZCk7CisgICAgaWYgKG15SW5saW5pbmdDb3N0ID4gaW5saW5pbmdCYWxhbmNlKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgCisgICAgaW5saW5lQ2FsbChjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0
T3BlcmFuZCwgY2FsbGVlLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIG5leHRPZmZzZXQsIGtpbmQsIGNhbGxlckxpbmthYmlsaXR5KTsKKyAgICBpbmxpbmluZ0Jh
bGFuY2UgLT0gbXlJbmxpbmluZ0Nvc3Q7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVz
dWx0T3BlcmFuZCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBpbnQgcmVn
aXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4
dE9mZnNldCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbikKK3sKKyAgICBkYXRhTG9nKCJBdHRlbXB0aW5nIHRvIGRv
IGlubGluaW5nLCBzdGF0dXM6ICIsIGNhbGxMaW5rU3RhdHVzLCAiXG4iKTsKKyAgICAKKyAgICBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCA9IElubGluZUNhbGxGcmFt
ZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOworICAgIAorICAgIGlmICghY2FsbExpbmtT
dGF0dXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgdW5zaWduZWQg
aW5saW5pbmdCYWxhbmNlID0gT3B0aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNh
bmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKTsKKyAgICBpZiAoc3BlY2lhbGl6YXRpb25LaW5kID09
IENvZGVGb3JDb25zdHJ1Y3QpCisgICAgICAgIGlubGluaW5nQmFsYW5jZSA9IHN0ZDo6bWluKGlu
bGluaW5nQmFsYW5jZSwgT3B0aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saW5l
Q2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgpKTsKKyAgICBpZiAoY2FsbExpbmtTdGF0dXMuaXND
bG9zdXJlQ2FsbCgpKQorICAgICAgICBpbmxpbmluZ0JhbGFuY2UgPSBzdGQ6Om1pbihpbmxpbmlu
Z0JhbGFuY2UsIE9wdGlvbnM6Om1heGltdW1GdW5jdGlvbkZvckNsb3N1cmVDYWxsSW5saW5lQ2Fu
ZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgpKTsKKyAgICAKKyAgICAvLyBGaXJzdCBjaGVjayBpZiB3
ZSBjYW4gYXZvaWQgY3JlYXRpbmcgY29udHJvbCBmbG93LiBPdXIgaW5saW5lciBkb2VzIHNvbWUg
Q0ZHCisgICAgLy8gc2ltcGxpZmljYXRpb24gb24gdGhlIGZseSBhbmQgdGhpcyBoZWxwcyByZWR1
Y2UgY29tcGlsZSB0aW1lcywgYnV0IHdlIGNhbiBvbmx5IGxldmVyYWdlCisgICAgLy8gdGhpcyBp
biBjYXNlcyB3aGVyZSB3ZSBkb24ndCBuZWVkIGNvbnRyb2wgZmxvdyBkaWFtb25kcyB0byBjaGVj
ayB0aGUgY2FsbGVlLgorICAgIGlmICghY2FsbExpbmtTdGF0dXMuY291bGRUYWtlU2xvd1BhdGgo
KSAmJiBjYWxsTGlua1N0YXR1cy5zaXplKCkgPT0gMSkgeworICAgICAgICBpZiAoIWNhbGxMaW5r
U3RhdHVzLmlzUHJvdmVkKCkpIHsKKyAgICAgICAgICAgIGVtaXRGdW5jdGlvbkNoZWNrcygKKyAg
ICAgICAgICAgICAgICBjYWxsTGlua1N0YXR1c1swXS5jYWxsZWUoKSwgY2FsbFRhcmdldE5vZGUs
IHJlZ2lzdGVyT2Zmc2V0LCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgICAgICB9CisgICAgICAg
IGJvb2wgcmVzdWx0ID0gYXR0ZW1wdFRvSW5saW5lQ2FsbCgKKyAgICAgICAgICAgIGNhbGxUYXJn
ZXROb2RlLCByZXN1bHRPcGVyYW5kLCBjYWxsTGlua1N0YXR1c1swXS5jYWxsZWUoKSwgcmVnaXN0
ZXJPZmZzZXQsCisgICAgICAgICAgICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbmV4dE9m
ZnNldCwga2luZCwgQ2FsbGVyRG9lc05vcm1hbExpbmtpbmcsIHByZWRpY3Rpb24sCisgICAgICAg
ICAgICBpbmxpbmluZ0JhbGFuY2UpOworICAgICAgICBpZiAoIXJlc3VsdCAmJiAhY2FsbExpbmtT
dGF0dXMuaXNQcm92ZWQoKSkKKyAgICAgICAgICAgIHVuZG9GdW5jdGlvbkNoZWNrcyhjYWxsTGlu
a1N0YXR1c1swXS5jYWxsZWUoKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAg
IAorICAgIC8vIFdlIG5lZWQgdG8gY3JlYXRlIHNvbWUga2luZCBvZiBzd2l0Y2ggb3ZlciBjYWxs
ZWUuIEZvciBub3cgd2Ugb25seSBkbyB0aGlzIGlmIHdlIGJlbGlldmUgdGhhdAorICAgIC8vIHdl
J3JlIGluIHRoZSB0b3AgdGllci4gV2UgaGF2ZSB0d28gcmVhc29ucyBmb3IgdGhpczogZmlyc3Qs
IGl0IHByb3ZpZGVzIHVzIGFuIG9wcG9ydHVuaXR5IHRvCisgICAgLy8gZG8gbW9yZSBkZXRhaWxl
ZCBwb2x5dmFyaWFudC9wb2x5bW9ycGhpYyBwcm9maWxpbmc7IGFuZCBzZWNvbmQsIGl0IHJlZHVj
ZXMgY29tcGlsZSB0aW1lcyBpbgorICAgIC8vIHRoZSBERkcuIEFuZCBieSBwb2x5dmFyaWFudCBw
cm9maWxpbmcgd2UgbWVhbiBwb2x5dmFyaWFudCBwcm9maWxpbmcgb2YgKnRoaXMqIGNhbGwuIE5v
dGUgdGhhdAorICAgIC8vIHdlIGNvdWxkIGltcHJvdmUgdGhhdCBhc3BlY3Qgb2YgdGhpcyBieSBk
b2luZyBwb2x5bW9ycGhpYyBpbmxpbmluZyBidXQgaGF2aW5nIHRoZSBwcm9maWxpbmcKKyAgICAv
LyBhbHNvLiBDdXJyZW50bHkgd2Ugb3B0IGFnYWluc3QgdGhpcywgYnV0IGl0IGNvdWxkIGJlIGlu
dGVyZXN0aW5nLiBUaGF0IHdvdWxkIHJlcXVpcmUgaGF2aW5nIGEKKyAgICAvLyBzZXBhcmF0ZSBu
b2RlIGZvciBjYWxsIGVkZ2UgcHJvZmlsaW5nLgorICAgIC8vIEZJWE1FOiBJbnRyb2R1Y2UgdGhl
IG5vdGlvbiBvZiBhIHNlcGFyYXRlIGNhbGwgZWRnZSBwcm9maWxpbmcgbm9kZS4KKyAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MDMzCisgICAgaWYgKCFp
c0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSB8fCAhT3B0aW9uczo6ZW5hYmxlUG9seW1vcnBoaWND
YWxsSW5saW5pbmcoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGJvb2wgYWxs
QXJlQ2xvc3VyZUNhbGxzID0gdHJ1ZTsKKyAgICBib29sIGFsbEFyZURpcmVjdENhbGxzID0gdHJ1
ZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBjYWxsTGlua1N0YXR1cy5zaXplKCk7IGktLTspIHsK
KyAgICAgICAgaWYgKGNhbGxMaW5rU3RhdHVzW2ldLmNhbGxlZSgpLmlzQ2xvc3VyZUNhbGwoKSkK
KyAgICAgICAgICAgIGFsbEFyZURpcmVjdENhbGxzID0gZmFsc2U7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGFsbEFyZUNsb3N1cmVDYWxscyA9IGZhbHNlOworICAgIH0KKyAgICAKKyAgICBO
b2RlKiB0aGluZ1RvU3dpdGNoT247CisgICAgaWYgKGFsbEFyZURpcmVjdENhbGxzKQorICAgICAg
ICB0aGluZ1RvU3dpdGNoT24gPSBjYWxsVGFyZ2V0Tm9kZTsKKyAgICBlbHNlIGlmIChhbGxBcmVD
bG9zdXJlQ2FsbHMpCisgICAgICAgIHRoaW5nVG9Td2l0Y2hPbiA9IGFkZFRvR3JhcGgoR2V0RXhl
Y3V0YWJsZSwgY2FsbFRhcmdldE5vZGUpOworICAgIGVsc2UgeworICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIHRoaXMgY2FzZSwgYnV0IGl0J3MgdHJpY2t5IGFu
ZCB3ZSBkb24ndCBrbm93IG9mIGNhc2VzCisgICAgICAgIC8vIHdoZXJlIGl0IHdvdWxkIGJlIGJl
bmVmaWNpYWwuIEFsc28sIENhbGxMaW5rU3RhdHVzIHdvdWxkIG1ha2UgYWxsIGNhbGxlZXMgYXBw
ZWFyIGxpa2UKKyAgICAgICAgLy8gY2xvc3VyZSBjYWxscyBpZiBhbnkgY2FsbHMgd2VyZSBjbG9z
dXJlIGNhbGxzIC0gZXhjZXB0IGZvciBjYWxscyB0byBpbnRlcm5hbCBmdW5jdGlvbnMuCisgICAg
ICAgIC8vIFNvIHRoaXMgd2lsbCBvbmx5IGFyaXNlIGlmIHNvbWUgY2FsbGVlcyBhcmUgaW50ZXJu
YWwgZnVuY3Rpb25zIGFuZCBvdGhlcnMgYXJlIGNsb3N1cmVzLgorICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MDIwCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgCisgICAgLy8gVGhpcyBtYWtlcyBtZSB3aXNoIHRoYXQgd2Ugd2Vy
ZSBpbiBTU0EgYWxsIHRoZSB0aW1lLiBXZSBuZWVkIHRvIHBpY2sgYSB2YXJpYWJsZSBpbnRvIHdo
aWNoIHRvCisgICAgLy8gc3RvcmUgdGhlIGNhbGxlZSBzbyB0aGF0IGl0IHdpbGwgYmUgYWNjZXNz
aWJsZSB0byBhbGwgb2YgdGhlIGJsb2NrcyB3ZSdyZSBhYm91dCB0byBjcmVhdGUuIFdlCisgICAg
Ly8gZ2V0IGF3YXkgd2l0aCBkb2luZyBhbiBpbW1lZGlhdGUtc2V0IGhlcmUgYmVjYXVzZSB3ZSB3
b3VsZG4ndCBoYXZlIHBlcmZvcm1lZCBhbnkgc2lkZSBlZmZlY3RzCisgICAgLy8geWV0LgorICAg
IFZpcnR1YWxSZWdpc3RlciBjYWxsZWVSZWcocmVnaXN0ZXJPZmZzZXQgKyBKU1N0YWNrOjpDYWxs
ZWUpOworICAgIHNldERpcmVjdChjYWxsZWVSZWcsIGNhbGxUYXJnZXROb2RlLCBJbW1lZGlhdGVT
ZXRXaXRoRmx1c2gpOworICAgIAorICAgIFN3aXRjaERhdGEmIGRhdGEgPSAqbV9ncmFwaC5tX3N3
aXRjaERhdGEuYWRkKCk7CisgICAgZGF0YS5raW5kID0gU3dpdGNoQ2VsbDsKKyAgICBhZGRUb0dy
YXBoKFN3aXRjaCwgT3BJbmZvKCZkYXRhKSwgdGhpbmdUb1N3aXRjaE9uKTsKKyAgICAKKyAgICBC
YXNpY0Jsb2NrKiBvcmlnaW5CbG9jayA9IG1fY3VycmVudEJsb2NrOworICAgIG9yaWdpbkJsb2Nr
LT5kaWRMaW5rKCk7CisgICAgY2FuY2VsTGlua2luZ0ZvckJsb2NrKG1faW5saW5lU3RhY2tUb3As
IG9yaWdpbkJsb2NrKTsKKyAgICAKKyAgICAvLyBFYWNoIGlubGluZWQgY2FsbGVlIHdpbGwgaGF2
ZSBhIGxhbmRpbmcgYmxvY2sgdGhhdCBpdCByZXR1cm5zIGF0LiBUaGV5IHNob3VsZCBhbGwgaGF2
ZSBqdW1wcworICAgIC8vIHRvIHRoZSBjb250aW51YXRpb24gYmxvY2ssIHdoaWNoIHdlIGNyZWF0
ZSBsYXN0LgorICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gbGFuZGluZ0Jsb2NrczsKKyAgICAKKyAg
ICAvLyBXZSBtYWtlIGZvcmNlIHRoaXMgdHJ1ZSBpZiB3ZSBnaXZlIHVwIG9uIGlubGluaW5nIGFu
eSBvZiB0aGUgZWRnZXMuCisgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCA9IGNhbGxMaW5rU3Rh
dHVzLmNvdWxkVGFrZVNsb3dQYXRoKCk7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGNhbGxMaW5rU3RhdHVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIFJlZlB0cjxCYXNpY0Js
b2NrPiBibG9jayA9IGFkb3B0UmVmKG5ldyBCYXNpY0Jsb2NrKFVJTlRfTUFYLCBtX251bUFyZ3Vt
ZW50cywgbV9udW1Mb2NhbHMsIFBOYU4pKTsKKyAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBibG9j
ay5nZXQoKTsKKyAgICAgICAgbV9ncmFwaC5tX2Jsb2Nrcy5hcHBlbmQoYmxvY2spOworICAgICAg
ICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CisgICAgICAgIAorICAgICAgICBOb2RlKiBteUNhbGxU
YXJnZXROb2RlID0gZ2V0RGlyZWN0KGNhbGxlZVJlZyk7CisgICAgICAgIAorICAgICAgICBib29s
IGlubGluaW5nUmVzdWx0ID0gYXR0ZW1wdFRvSW5saW5lQ2FsbCgKKyAgICAgICAgICAgIG15Q2Fs
bFRhcmdldE5vZGUsIHJlc3VsdE9wZXJhbmQsIGNhbGxMaW5rU3RhdHVzW2ldLmNhbGxlZSgpLCBy
ZWdpc3Rlck9mZnNldCwKKyAgICAgICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBu
ZXh0T2Zmc2V0LCBraW5kLCBDYWxsZXJMaW5rc01hbnVhbGx5LCBwcmVkaWN0aW9uLAorICAgICAg
ICAgICAgaW5saW5pbmdCYWxhbmNlKTsKKyAgICAgICAgCisgICAgICAgIGlmICghaW5saW5pbmdS
ZXN1bHQpIHsKKyAgICAgICAgICAgIC8vIFRoYXQgZmFpbGVkIHNvIHdlIGxldCB0aGUgYmxvY2sg
ZGllLiBOb3RoaW5nIGludGVyZXN0aW5nIHNob3VsZCBoYXZlIGJlZW4gYWRkZWQgdG8KKyAgICAg
ICAgICAgIC8vIHRoZSBibG9jay4gV2UgYWxzbyBnaXZlIHVwIG9uIGlubGluaW5nIGFueSBvZiB0
aGUgKGxlc3MgZnJlcXVlbnQpIGNhbGxlZXMuCisgICAgICAgICAgICBBU1NFUlQobV9jdXJyZW50
QmxvY2sgPT0gYmxvY2suZ2V0KCkpOworICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9ibG9j
a3MubGFzdCgpID09IGJsb2NrKTsKKyAgICAgICAgICAgIG1fZ3JhcGgua2lsbEJsb2NrQW5kSXRz
Q29udGVudHMoYmxvY2suZ2V0KCkpOworICAgICAgICAgICAgbV9ncmFwaC5tX2Jsb2Nrcy5yZW1v
dmVMYXN0KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFRoZSBmYWN0IHRoYXQgaW5s
aW5pbmcgZmFpbGVkIG1lYW5zIHdlIG5lZWQgYSBzbG93IHBhdGguCisgICAgICAgICAgICBjb3Vs
ZFRha2VTbG93UGF0aCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgSlNDZWxsKiB0aGluZ1RvQ2FzZU9uOworICAgICAgICBpZiAoYWxsQXJl
RGlyZWN0Q2FsbHMpCisgICAgICAgICAgICB0aGluZ1RvQ2FzZU9uID0gY2FsbExpbmtTdGF0dXNb
aV0uY2FsbGVlKCkubm9uRXhlY3V0YWJsZUNhbGxlZSgpOworICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIEFTU0VSVChhbGxBcmVDbG9zdXJlQ2FsbHMpOworICAgICAgICAgICAgdGhpbmdUb0Nh
c2VPbiA9IGNhbGxMaW5rU3RhdHVzW2ldLmNhbGxlZSgpLmV4ZWN1dGFibGUoKTsKKyAgICAgICAg
fQorICAgICAgICBkYXRhLmNhc2VzLmFwcGVuZChTd2l0Y2hDYXNlKG1fZ3JhcGguZnJlZXplKHRo
aW5nVG9DYXNlT24pLCBibG9jay5nZXQoKSkpOworICAgICAgICBhZGRUb0dyYXBoKEp1bXApOwor
ICAgICAgICBtX2N1cnJlbnRCbG9jay0+ZGlkTGluaygpOworICAgICAgICBsYW5kaW5nQmxvY2tz
LmFwcGVuZChtX2N1cnJlbnRCbG9jayk7CisgICAgfQorICAgIAorICAgIFJlZlB0cjxCYXNpY0Js
b2NrPiBzbG93UGF0aEJsb2NrID0gYWRvcHRSZWYoCisgICAgICAgIG5ldyBCYXNpY0Jsb2NrKFVJ
TlRfTUFYLCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIFBOYU4pKTsKKyAgICBkYXRhLmZh
bGxUaHJvdWdoID0gQnJhbmNoVGFyZ2V0KHNsb3dQYXRoQmxvY2suZ2V0KCkpOworICAgIG1fZ3Jh
cGgubV9ibG9ja3MuYXBwZW5kKHNsb3dQYXRoQmxvY2spOworICAgIHNsb3dQYXRoQmxvY2stPmRp
ZExpbmsoKTsKKyAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CisgICAgbV9jdXJyZW50QmxvY2sg
PSBzbG93UGF0aEJsb2NrLmdldCgpOworICAgIGlmIChjb3VsZFRha2VTbG93UGF0aCkgeworICAg
ICAgICBOb2RlKiBteUNhbGxUYXJnZXROb2RlID0gZ2V0RGlyZWN0KGNhbGxlZVJlZyk7CisgICAg
ICAgIGFkZENhbGwoCisgICAgICAgICAgICByZXN1bHRPcGVyYW5kLCBjYWxsT3AsIE9wSW5mbygp
LCBteUNhbGxUYXJnZXROb2RlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywKKyAgICAgICAg
ICAgIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKKyAgICAgICAgYWRkVG9HcmFwaChKdW1w
KTsKKyAgICAgICAgbGFuZGluZ0Jsb2Nrcy5hcHBlbmQobV9jdXJyZW50QmxvY2spOworICAgIH0g
ZWxzZSB7CisgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tCYWRDZWxsKTsKKyAgICAgICAgZmx1c2hG
b3JUZXJtaW5hbCgpOworICAgICAgICBhZGRUb0dyYXBoKFVucmVhY2hhYmxlKTsKKyAgICB9Cisg
ICAgCisgICAgUmVmUHRyPEJhc2ljQmxvY2s+IGNvbnRpbnVhdGlvbkJsb2NrID0gYWRvcHRSZWYo
CisgICAgICAgIG5ldyBCYXNpY0Jsb2NrKFVJTlRfTUFYLCBtX251bUFyZ3VtZW50cywgbV9udW1M
b2NhbHMsIFBOYU4pKTsKKyAgICBtX2dyYXBoLm1fYmxvY2tzLmFwcGVuZChjb250aW51YXRpb25C
bG9jayk7CisgICAgbV9pbmxpbmVTdGFja1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5hcHBlbmQoVW5s
aW5rZWRCbG9jayhjb250aW51YXRpb25CbG9jay5nZXQoKSkpOworICAgIHByZXBhcmVUb1BhcnNl
QmxvY2soKTsKKyAgICBtX2N1cnJlbnRCbG9jayA9IGNvbnRpbnVhdGlvbkJsb2NrLmdldCgpOwor
ICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IGxhbmRpbmdCbG9ja3Muc2l6ZSgpOyBpLS07KQor
ICAgICAgICBsYW5kaW5nQmxvY2tzW2ldLT5sYXN0KCktPnRhcmdldEJsb2NrKCkgPSBjb250aW51
YXRpb25CbG9jay5nZXQoKTsKICAgICAKLSAgICAvLyBBdCB0aGlzIHBvaW50IHdlIHJldHVybiBh
bmQgY29udGludWUgdG8gZ2VuZXJhdGUgY29kZSBmb3IgdGhlIGNhbGxlciwgYnV0Ci0gICAgLy8g
aW4gdGhlIG5ldyBiYXNpYyBibG9jay4KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTY0NSw3
ICsxODI0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVHlwZWRBcnJheUNvbgogCiBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oCiAgICAg
aW50IHJlc3VsdE9wZXJhbmQsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgcmVnaXN0
ZXJPZmZzZXQsCi0gICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0aW9uLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7
CiAgICAgLy8gSWYgd2UgZXZlciBmaW5kIHRoYXQgd2UgaGF2ZSBhIGxvdCBvZiBpbnRlcm5hbCBm
dW5jdGlvbnMgdGhhdCB3ZSBzcGVjaWFsaXplIGZvciwKICAgICAvLyB0aGVuIHdlIHNob3VsZCBw
cm9iYWJseSBoYXZlIHNvbWUgc29ydCBvZiBoYXNodGFibGUgZGlzcGF0Y2gsIG9yIG1heWJlIGV2
ZW4KQEAgLTE2NTQsOCArMTgzMyw2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0
YW50SW50ZXIKICAgICAvLyB3ZSBrbm93IGFib3V0IGlzIHNtYWxsIGVub3VnaCwgdGhhdCBoYXZp
bmcganVzdCBhIGxpbmVhciBjYXNjYWRlIG9mIGlmIHN0YXRlbWVudHMKICAgICAvLyBpcyBnb29k
IGVub3VnaC4KICAgICAKLSAgICBVTlVTRURfUEFSQU0ocHJlZGljdGlvbik7IC8vIFJlbW92ZSB0
aGlzIG9uY2Ugd2UgZG8gbW9yZSB0aGluZ3MuCi0gICAgCiAgICAgaWYgKGZ1bmN0aW9uLT5jbGFz
c0luZm8oKSA9PSBBcnJheUNvbnN0cnVjdG9yOjppbmZvKCkpIHsKICAgICAgICAgaWYgKGZ1bmN0
aW9uLT5nbG9iYWxPYmplY3QoKSAhPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjA5LDEzICsyMzg2
LDEzIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAg
ICAgIEpTQ2VsbCogY2FjaGVkRnVuY3Rpb24gPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5qc0Nl
bGwuZ2V0KCk7CiAgICAgICAgICAgICBpZiAoIWNhY2hlZEZ1bmN0aW9uIAogICAgICAgICAgICAg
ICAgIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+Y291bGRUYWtlU2xvd0Nh
c2UobV9jdXJyZW50SW5kZXgpCi0gICAgICAgICAgICAgICAgfHwgbV9pbmxpbmVTdGFja1RvcC0+
bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkRnVuY3Rpb24pKSB7
CisgICAgICAgICAgICAgICAgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNF
eGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2VsbCkpIHsKICAgICAgICAgICAgICAgICBzZXQo
VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBnZXQoVmly
dHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkNhbGxlZSkpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJlZXplKGNhY2hl
ZEZ1bmN0aW9uKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoY2FjaGVkRnVuY3Rpb24tPmluaGVy
aXRzKEpTRnVuY3Rpb246OmluZm8oKSkpOwogICAgICAgICAgICAgICAgIE5vZGUqIGFjdHVhbENh
bGxlZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6Q2FsbGVlKSk7Ci0gICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaChDaGVja0Z1bmN0aW9uLCBPcEluZm8oZnJvemVuKSwgYWN0dWFsQ2Fs
bGVlKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKGZyb3pl
biksIGFjdHVhbENhbGxlZSk7CiAgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rlcihj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChKU0NvbnN0YW50LCBP
cEluZm8oZnJvemVuKSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgTkVYVF9PUENPREUo
b3BfZ2V0X2NhbGxlZSk7CkBAIC0yODk3LDcgKzMwNzQsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAvLyBhbHJlYWR5IGduYXJseSBlbm91
Z2ggYXMgaXQgaXMuCiAgICAgICAgICAgICBBU1NFUlQocG9pbnRlcklzRnVuY3Rpb24oY3VycmVu
dEluc3RydWN0aW9uWzJdLnUuc3BlY2lhbFBvaW50ZXIpKTsKICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoCi0gICAgICAgICAgICAgICAgQ2hlY2tGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICBDaGVj
a0NlbGwsCiAgICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGguZnJlZXplKHN0YXRpY19jYXN0
PEpTQ2VsbCo+KGFjdHVhbFBvaW50ZXJGb3IoCiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fY29kZUJsb2NrLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5zcGVjaWFsUG9p
bnRlcikpKSksCiAgICAgICAgICAgICAgICAgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSkpOwpAQCAtMzMyMiw5ICszNDk5LDcgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6bGlua0Jsb2NrKEJhc2ljQmxvYwogICAgICAgICBicmVhazsKICAgICB9CiAg
ICAgCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIGJsb2NrLT5pc0xpbmtlZCA9IHRydWU7Ci0j
ZW5kaWYKKyAgICBibG9jay0+ZGlkTGluaygpOwogfQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjps
aW5rQmxvY2tzKFZlY3RvcjxVbmxpbmtlZEJsb2NrPiYgdW5saW5rZWRCbG9ja3MsIFZlY3RvcjxC
YXNpY0Jsb2NrKj4mIHBvc3NpYmxlVGFyZ2V0cykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTcy
Nzk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAsOCArOTAsMTAgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4uc2V0Q2hpbGQxKEVkZ2UoKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCFub2RlLT5jaGlsZDEoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFub2RlLT5jaGlsZDEoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2Fs
bG9jYXRvci5mcmVlKG5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5j
aGlsZDEoKS0+b3AoKSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIFBoaToKICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBTZXRBcmd1bWVudDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDYgKzE0
NCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNl
IEZpYXRJbnQ1MjoKICAgICBjYXNlIE1ha2VSb3BlOgogICAgIGNhc2UgVmFsdWVUb0ludDMyOgor
ICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICAgICAgCkBAIC0yMzksMTIgKzI0MCw4IEBAIHZvaWQgY2xvYmJl
cml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2Rl
LCBub2RlLT5hcml0aE1vZGUoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIGNh
c2UgQ2hlY2tGdW5jdGlvbjoKLSAgICAgICAgZGVmKFB1cmVWYWx1ZShDaGVja0Z1bmN0aW9uLCBB
ZGphY2VuY3lMaXN0KEFkamFjZW5jeUxpc3Q6OkZpeGVkLCBub2RlLT5jaGlsZDEoKSksIG5vZGUt
PmZ1bmN0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICBjYXNlIENoZWNr
RXhlY3V0YWJsZToKLSAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlLCBub2RlLT5leGVjdXRhYmxl
KCkpKTsKKyAgICBjYXNlIENoZWNrQ2VsbDoKKyAgICAgICAgZGVmKFB1cmVWYWx1ZShDaGVja0Nl
bGwsIEFkamFjZW5jeUxpc3QoQWRqYWNlbmN5TGlzdDo6Rml4ZWQsIG5vZGUtPmNoaWxkMSgpKSwg
bm9kZS0+Y2VsbE9wZXJhbmQoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNh
c2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKQEAgLTI2Myw2ICsyNjAsNyBAQCB2b2lkIGNsb2Ji
ZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBTd2l0Y2g6CiAgICAgY2Fz
ZSBUaHJvdzoKICAgICBjYXNlIEZvcmNlT1NSRXhpdDoKKyAgICBjYXNlIENoZWNrQmFkQ2VsbDoK
ICAgICBjYXNlIFJldHVybjoKICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgIGNhc2UgQ2hlY2tU
aWVyVXBJbkxvb3A6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0Miw4ICsxNDIsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBDaGVj
a0Z1bmN0aW9uOiB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShub2RlLT5j
aGlsZDEoKSkudmFsdWUoKSAhPSBub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpKQorICAgICAgICAg
ICAgY2FzZSBDaGVja0NlbGw6IHsKKyAgICAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpICE9IG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkp
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZl
cnRUb1BoYW50b20oKTsKICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDE3Mjc5NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTEsNyArOTEsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CiAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgIGNh
c2UgQ2hlY2tTdHJ1Y3R1cmU6Ci0gICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6CisgICAgY2FzZSBH
ZXRFeGVjdXRhYmxlOgogICAgIGNhc2UgR2V0QnV0dGVyZmx5OgogICAgIGNhc2UgQ2hlY2tBcnJh
eToKICAgICBjYXNlIEdldFNjb3BlOgpAQCAtMTA1LDcgKzEwNSw3IEBAIGJvb2wgZG9lc0dDKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEdsb2JhbFZhcjoKICAgICBjYXNl
IFZhcmlhYmxlV2F0Y2hwb2ludDoKICAgICBjYXNlIFZhckluamVjdGlvbldhdGNocG9pbnQ6Ci0g
ICAgY2FzZSBDaGVja0Z1bmN0aW9uOgorICAgIGNhc2UgQ2hlY2tDZWxsOgogICAgIGNhc2UgQWxs
b2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OgogICAgIGNhc2UgUmVnRXhwRXhlYzoKICAgICBjYXNl
IFJlZ0V4cFRlc3Q6CkBAIC0xOTYsNiArMTk2LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0RGlyZWN0UG5hbWU6CiAgICAgY2FzZSBGaWF0SW50
NTI6CiAgICAgY2FzZSBCb29sZWFuVG9OdW1iZXI6CisgICAgY2FzZSBDaGVja0JhZENlbGw6CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjoKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHJldmlzaW9uIDE3Mjc5NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODksNiArODksOSBAQCBzdGF0aWMgQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZUltcGwo
CiAgICAgICAgIHZtLmdldENUSVN0dWIodmlydHVhbENvbnN0cnVjdFRoYXRQcmVzZXJ2ZXNSZWdz
VGh1bmtHZW5lcmF0b3IpOwogICAgIH0KICAgICAKKyAgICBpZiAoQ2FsbEVkZ2VMb2c6OmlzRW5h
YmxlZCgpKQorICAgICAgICB2bS5lbnN1cmVDYWxsRWRnZUxvZygpLnByb2Nlc3NMb2coKTsKKyAg
ICAKICAgICBSZWZQdHI8UGxhbj4gcGxhbiA9IGFkb3B0UmVmKAogICAgICAgICBuZXcgUGxhbihj
b2RlQmxvY2ssIHByb2ZpbGVkREZHQ29kZUJsb2NrLCBtb2RlLCBvc3JFbnRyeUJ5dGVjb2RlSW5k
ZXgsIG11c3RIYW5kbGVWYWx1ZXMpKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzM2
LDYgKzczNiwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNo
aWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkKICAgICAgICAgICAgICAgICAgICAgZml4
RWRnZTxTdHJpbmdVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgU3dpdGNoQ2VsbDoKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+
Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUNlbGwoKSkKKyAgICAgICAgICAgICAgICAgICAgZml4
RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgLy8gZWxzZSBp
dCdzIGZpbmUgZm9yIHRoaXMgdG8gaGF2ZSBVbnR5cGVkVXNlOyB3ZSB3aWxsIGhhbmRsZSB0aGlz
IGJ5IGp1c3QgbWFraW5nCisgICAgICAgICAgICAgICAgLy8gbm9uLWNlbGxzIHRha2UgdGhlIGRl
ZmF1bHQgY2FzZS4KKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC04OTgsMTMgKzkwNCwxMyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIENoZWNrRXhlY3V0
YWJsZTogeworICAgICAgICBjYXNlIEdldEV4ZWN1dGFibGU6IHsKICAgICAgICAgICAgIGZpeEVk
Z2U8RnVuY3Rpb25Vc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKLSAgICAg
ICAgY2FzZSBDaGVja0Z1bmN0aW9uOgorICAgICAgICBjYXNlIENoZWNrQ2VsbDoKICAgICAgICAg
Y2FzZSBDaGVja0hhc0luc3RhbmNlOgogICAgICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgICAg
IGNhc2UgR2V0QnV0dGVyZmx5OiB7CkBAIC0xMTUwLDYgKzExNTYsNyBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIFRocm93UmVmZXJlbmNlRXJyb3I6CiAgICAgICAgIGNhc2UgQ291bnRFeGVjdXRp
b246CiAgICAgICAgIGNhc2UgRm9yY2VPU1JFeGl0OgorICAgICAgICBjYXNlIENoZWNrQmFkQ2Vs
bDoKICAgICAgICAgY2FzZSBDaGVja1dhdGNoZG9nVGltZXI6CiAgICAgICAgIGNhc2UgVW5yZWFj
aGFibGU6CiAgICAgICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYg
KzY5LDcgQEAgR3JhcGg6OkdyYXBoKFZNJiB2bSwgUGxhbiYgcGxhbiwgTG9uZ0xpdgogICAgICwg
bV9mb3JtKExvYWRTdG9yZSkKICAgICAsIG1fdW5pZmljYXRpb25TdGF0ZShMb2NhbGx5VW5pZmll
ZCkKICAgICAsIG1fcmVmQ291bnRTdGF0ZShFdmVyeXRoaW5nSXNMaXZlKQorICAgICwgbV9zaG91
bGRQcm9maWxlKGZhbHNlKQogewogICAgIEFTU0VSVChtX3Byb2ZpbGVkQmxvY2spOwogICAgIApA
QCAtMjIyLDI0ICsyMjMsMTkgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBj
b25zdAogICAgICAgICBvdXQucHJpbnQoY29tbWEsIGluQ29udGV4dCgqbm9kZS0+c3RydWN0dXJl
KCksIGNvbnRleHQpKTsKICAgICBpZiAobm9kZS0+aGFzVHJhbnNpdGlvbigpKQogICAgICAgICBv
dXQucHJpbnQoY29tbWEsIHBvaW50ZXJEdW1wSW5Db250ZXh0KG5vZGUtPnRyYW5zaXRpb24oKSwg
Y29udGV4dCkpOwotICAgIGlmIChub2RlLT5oYXNGdW5jdGlvbigpKSB7Ci0gICAgICAgIG91dC5w
cmludChjb21tYSwgImZ1bmN0aW9uKCIsIHBvaW50ZXJEdW1wKG5vZGUtPmZ1bmN0aW9uKCkpLCAi
LCAiKTsKLSAgICAgICAgaWYgKG5vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkuaXNDZWxsKCkKLSAg
ICAgICAgICAgICYmIG5vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkuYXNDZWxsKCktPmluaGVyaXRz
KEpTRnVuY3Rpb246OmluZm8oKSkpIHsKLSAgICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9u
ID0ganNDYXN0PEpTRnVuY3Rpb24qPihub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpLmFzQ2VsbCgp
KTsKLSAgICAgICAgICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSkKLSAgICAgICAg
ICAgICAgICBvdXQucHJpbnQoIjxob3N0IGZ1bmN0aW9uPiIpOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIG91dC5wcmludChGdW5jdGlvbkV4ZWN1dGFibGVEdW1wKGZ1bmN0aW9u
LT5qc0V4ZWN1dGFibGUoKSkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG91dC5wcmlu
dCgiPG5vdCBKU0Z1bmN0aW9uPiIpOwotICAgICAgICBvdXQucHJpbnQoIikiKTsKLSAgICB9Ci0g
ICAgaWYgKG5vZGUtPmhhc0V4ZWN1dGFibGUoKSkgewotICAgICAgICBpZiAobm9kZS0+ZXhlY3V0
YWJsZSgpLT5pbmhlcml0cyhGdW5jdGlvbkV4ZWN1dGFibGU6OmluZm8oKSkpCi0gICAgICAgICAg
ICBvdXQucHJpbnQoY29tbWEsICJleGVjdXRhYmxlKCIsIEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAo
anNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG5vZGUtPmV4ZWN1dGFibGUoKSkpLCAiKSIpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJleGVjdXRhYmxlKG5v
dCBmdW5jdGlvbjogIiwgUmF3UG9pbnRlcihub2RlLT5leGVjdXRhYmxlKCkpLCAiKSIpOworICAg
IGlmIChub2RlLT5oYXNDZWxsT3BlcmFuZCgpKSB7CisgICAgICAgIG91dC5wcmludChjb21tYSwg
cG9pbnRlckR1bXAobm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5hc0NlbGwoKSkpOworICAg
ICAgICBpZiAobm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5pc0NlbGwoKSkgeworICAgICAg
ICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFudChub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpLmFz
Q2VsbCgpKTsKKyAgICAgICAgICAgIGlmIChFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IHZh
cmlhbnQuZXhlY3V0YWJsZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGV4ZWN1dGFibGUtPmlz
SG9zdEZ1bmN0aW9uKCkpCisgICAgICAgICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgIjxo
b3N0IGZ1bmN0aW9uPiIpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKEZ1bmN0aW9uRXhlY3V0
YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0ganNEeW5hbWljQ2FzdDxGdW5jdGlvbkV4ZWN1dGFi
bGUqPihleGVjdXRhYmxlKSkKKyAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBG
dW5jdGlvbkV4ZWN1dGFibGVEdW1wKGZ1bmN0aW9uRXhlY3V0YWJsZSkpOworICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiPG5vbi1mdW5j
dGlvbiBleGVjdXRhYmxlPiIpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogICAg
IGlmIChub2RlLT5oYXNGdW5jdGlvbkRlY2xJbmRleCgpKSB7CiAgICAgICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSA9IG1fY29kZUJsb2NrLT5mdW5jdGlvbkRlY2wobm9kZS0+ZnVu
Y3Rpb25EZWNsSW5kZXgoKSk7CkBAIC05ODUsMTAgKzk4MSw2IEBAIHZvaWQgR3JhcGg6OnZpc2l0
Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHYKICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+
YXQobm9kZUluZGV4KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgc3dpdGNoIChub2RlLT5v
cCgpKSB7Ci0gICAgICAgICAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToKLSAgICAgICAgICAgICAg
ICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlQb2ludGVyKG5vZGUtPmV4ZWN1dGFi
bGUoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IG5vZGUtPnN0cnVjdHVyZVNldCgpLnNpemUoKTsgaS0tOykKICAgICAgICAgICAgICAgICAg
ICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFJlYWRPbmx5UG9pbnRlcihub2RlLT5zdHJ1Y3R1
cmVTZXQoKVtpXSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZp
c2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdv
cmtpbmcgY29weSkKQEAgLTc2Miw2ICs3NjIsNyBAQCBwdWJsaWM6CiAgICAgR3JhcGhGb3JtIG1f
Zm9ybTsKICAgICBVbmlmaWNhdGlvblN0YXRlIG1fdW5pZmljYXRpb25TdGF0ZTsKICAgICBSZWZD
b3VudFN0YXRlIG1fcmVmQ291bnRTdGF0ZTsKKyAgICBib29sIG1fc2hvdWxkUHJvZmlsZTsKIHBy
aXZhdGU6CiAgICAgCiAgICAgdm9pZCBoYW5kbGVTdWNjZXNzb3IoVmVjdG9yPEJhc2ljQmxvY2sq
LCAxNj4mIHdvcmtsaXN0LCBCYXNpY0Jsb2NrKiwgQmFzaWNCbG9jayogc3VjY2Vzc29yKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkocmV2aXNpb24gMTcyNzk0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTEzLDYgKzExMyw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBT
d2kKICAgICBjYXNlIFN3aXRjaFN0cmluZzoKICAgICAgICAgb3V0LnByaW50KCJTd2l0Y2hTdHJp
bmciKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU3dpdGNoQ2VsbDoKKyAgICAgICAgb3V0
LnByaW50KCJTd2l0Y2hDZWxsIik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTYwLDcgKzE2MCw4IEBAIHN0cnVjdCBTd2l0Y2hD
YXNlIHsKIGVudW0gU3dpdGNoS2luZCB7CiAgICAgU3dpdGNoSW1tLAogICAgIFN3aXRjaENoYXIs
Ci0gICAgU3dpdGNoU3RyaW5nCisgICAgU3dpdGNoU3RyaW5nLAorICAgIFN3aXRjaENlbGwKIH07
CiAKIHN0cnVjdCBTd2l0Y2hEYXRhIHsKQEAgLTE4NSw2ICsxODYsNyBAQCBzdHJ1Y3QgU3dpdGNo
RGF0YSB7CiAvLyBkaXN0aW5ndWlzaGVzIGFuIGltbWVkaWF0ZSB2YWx1ZSAodHlwaWNhbGx5IGFu
IGluZGV4IGludG8gYSBDb2RlQmxvY2sgZGF0YSBzdHJ1Y3R1cmUgLSAKIC8vIGEgY29uc3RhbnQg
aW5kZXgsIGFyZ3VtZW50LCBvciBpZGVudGlmaWVyKSBmcm9tIGEgTm9kZSouCiBzdHJ1Y3QgT3BJ
bmZvIHsKKyAgICBPcEluZm8oKSA6IG1fdmFsdWUoMCkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZv
KGludDMyX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkg
eyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKHVpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGlj
X2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkpIHsgfQogI2lmIE9TKERBUldJTikgfHwgVVNFKEpTVkFM
VUU2NCkKQEAgLTEwNDQsOSArMTA0NiwxMSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIG1fb3BJ
bmZvMiA9IHByZWRpY3Rpb247CiAgICAgfQogICAgIAotICAgIGJvb2wgY2FuQmVLbm93bkZ1bmN0
aW9uKCkKKyAgICBib29sIGhhc0NlbGxPcGVyYW5kKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAo
b3AoKSkgeworICAgICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDoKKyAgICAg
ICAgY2FzZSBDaGVja0NlbGw6CiAgICAgICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OgogICAgICAg
ICBjYXNlIE5hdGl2ZUNhbGw6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwNTUsNTQg
KzEwNTksMTYgQEAgc3RydWN0IE5vZGUgewogICAgICAgICB9CiAgICAgfQogCi0gICAgYm9vbCBo
YXNLbm93bkZ1bmN0aW9uKCkKKyAgICBGcm96ZW5WYWx1ZSogY2VsbE9wZXJhbmQoKQogICAgIHsK
LSAgICAgICAgc3dpdGNoIChvcCgpKSB7Ci0gICAgICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0Ogot
ICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6Ci0gICAgICAgICAgICByZXR1cm4gKGJvb2wpbV9vcElu
Zm87Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgCi0gICAgSlNGdW5jdGlvbioga25vd25GdW5jdGlvbigpCi0gICAgewot
ICAgICAgICBBU1NFUlQoY2FuQmVLbm93bkZ1bmN0aW9uKCkpOwotICAgICAgICByZXR1cm4gYml0
d2lzZV9jYXN0PEpTRnVuY3Rpb24qPihtX29wSW5mbyk7Ci0gICAgfQotCi0gICAgdm9pZCBnaXZl
S25vd25GdW5jdGlvbihKU0Z1bmN0aW9uKiBjYWxsRGF0YSkgCi0gICAgewotICAgICAgICBBU1NF
UlQoY2FuQmVLbm93bkZ1bmN0aW9uKCkpOwotICAgICAgICBtX29wSW5mbyA9IGJpdHdpc2VfY2Fz
dDx1aW50cHRyX3Q+KGNhbGxEYXRhKTsKLSAgICB9Ci0KLSAgICBib29sIGhhc0Z1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIHN3aXRjaCAob3AoKSkgewotICAgICAgICBjYXNlIENoZWNrRnVuY3Rp
b246Ci0gICAgICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OgotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBGcm96ZW5WYWx1ZSogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKGhhc0Z1bmN0aW9uKCkpOworICAgICAgICBBU1NFUlQoaGFzQ2Vs
bE9wZXJhbmQoKSk7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEZyb3plblZhbHVl
Kj4obV9vcEluZm8pOwogICAgIH0KICAgICAKLSAgICBib29sIGhhc0V4ZWN1dGFibGUoKQorICAg
IHZvaWQgc2V0Q2VsbE9wZXJhbmQoRnJvemVuVmFsdWUqIHZhbHVlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIG9wKCkgPT0gQ2hlY2tFeGVjdXRhYmxlOwotICAgIH0KLSAgICAKLSAgICBFeGVjdXRh
YmxlQmFzZSogZXhlY3V0YWJsZSgpCi0gICAgewotICAgICAgICByZXR1cm4ganNDYXN0PEV4ZWN1
dGFibGVCYXNlKj4ocmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPihtX29wSW5mbykpOworICAgICAg
ICBBU1NFUlQoaGFzQ2VsbE9wZXJhbmQoKSk7CisgICAgICAgIG1fb3BJbmZvID0gYml0d2lzZV9j
YXN0PHVpbnRwdHJfdD4odmFsdWUpOwogICAgIH0KICAgICAKICAgICBib29sIGhhc1ZhcmlhYmxl
V2F0Y2hwb2ludFNldCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oUHV0QnlJZEZsdXNoLCBOb2RlTXVzdEdlbmVy
YXRlIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCiAgICAgbWFjcm8o
UHV0QnlJZERpcmVjdCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCiAg
ICAgbWFjcm8oQ2hlY2tTdHJ1Y3R1cmUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKLSAgICBtYWNybyhD
aGVja0V4ZWN1dGFibGUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhHZXRFeGVjdXRh
YmxlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhQdXRTdHJ1Y3R1cmUsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKICAgICBtYWNybyhBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSwgTm9kZU11c3RHZW5l
cmF0ZSB8IE5vZGVSZXN1bHRTdG9yYWdlKSBcCiAgICAgbWFjcm8oUmVhbGxvY2F0ZVByb3BlcnR5
U3RvcmFnZSwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRTdG9yYWdlKSBcCkBAIC0xODYs
NyArMTg2LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFZh
cmlhYmxlV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFZhckluamVj
dGlvbldhdGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhGdW5jdGlvblJl
ZW50cnlXYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCi0gICAgbWFjcm8oQ2hlY2tGdW5j
dGlvbiwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKENoZWNrQ2VsbCwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAorICAgIG1hY3JvKENoZWNrQmFkQ2VsbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAog
ICAgIG1hY3JvKEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkg
XAogICAgIG1hY3JvKENoZWNrSW5Cb3VuZHMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBcCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21DYW5vbmljYWxpemF0aW9u
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhh
bnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTkyLDggKzkyLDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnJlbW92ZUVkZ2UoaS0tKTsKICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNo
aWxkcmVuLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2Fs
bG9jYXRvci5mcmVlKG5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNvbnZlcnRUb0NoZWNrKCk7CiAgICAgICAgICAgICAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21SZW1vdmFsUGhh
c2UuY3BwCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1BoYW50b21SZW1vdmFsUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNiArMTI1LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0xNDIsNiArMTQzLDcgQEAg
cHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlz
RW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5m
cmVlKG5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAt
MTQ5LDggKzE1MSwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNlIEhhcmRQaGFudG9tOiB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAg
ICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE5Niw3ICsxOTYsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIEdldEdldHRlclNldHRlckJ5T2Zmc2V0
OiB7CisgICAgICAgIGNhc2UgR2V0R2V0dGVyU2V0dGVyQnlPZmZzZXQ6CisgICAgICAgIGNhc2Ug
R2V0RXhlY3V0YWJsZTogewogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNw
ZWNDZWxsT3RoZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTY0Myw4ICs2
NDQsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEZvcmNlT1NSRXhpdDoKICAgICAgICAgY2Fz
ZSBTZXRBcmd1bWVudDoKICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKLSAgICAgICAgY2Fz
ZSBDaGVja0V4ZWN1dGFibGU6Ci0gICAgICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKKyAgICAgICAg
Y2FzZSBDaGVja0NlbGw6CisgICAgICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgICAgICBjYXNl
IFB1dFN0cnVjdHVyZToKICAgICAgICAgY2FzZSBUZWFyT2ZmQWN0aXZhdGlvbjoKICAgICAgICAg
Y2FzZSBUZWFyT2ZmQXJndW1lbnRzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNyAr
MTU5LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNh
c2UgUHV0QnlJZEZsdXNoOgogICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKICAgICBjYXNlIENoZWNr
U3RydWN0dXJlOgotICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOgorICAgIGNhc2UgR2V0RXhlY3V0
YWJsZToKICAgICBjYXNlIEdldEJ1dHRlcmZseToKICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAg
Y2FzZSBBcnJheWlmeToKQEAgLTE3NSw3ICsxNzUsOCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJz
dHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBQdXRHbG9iYWxWYXI6CiAgICAgY2FzZSBWYXJp
YWJsZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBWYXJJbmplY3Rpb25XYXRjaHBvaW50OgotICAgIGNh
c2UgQ2hlY2tGdW5jdGlvbjoKKyAgICBjYXNlIENoZWNrQ2VsbDoKKyAgICBjYXNlIENoZWNrQmFk
Q2VsbDoKICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDoKICAgICBjYXNlIFJl
Z0V4cEV4ZWM6CiAgICAgY2FzZSBSZWdFeHBUZXN0OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAx
NzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODksNiArNjg5LDEzIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKIAogICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmln
aW4obm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAKKyAgICBDYWxsTGlua0luZm8qIGluZm8g
PSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7CisKKyAgICBpZiAobV9qaXQu
Z3JhcGgoKS5tX3Nob3VsZFByb2ZpbGUgJiYgIW1fc3RhdGUuZm9yTm9kZShjYWxsZWVFZGdlKS5t
X3ZhbHVlKSB7CisgICAgICAgIG1faml0LnZtKCkuY2FsbEVkZ2VMb2ctPmVtaXRMb2dDb2RlKAor
ICAgICAgICAgICAgbV9qaXQsIGNhbGxMaW5rSW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBjYWxsZWUu
anNWYWx1ZVJlZ3MoKSk7CisgICAgfQorICAgIAogICAgIHNsb3dQYXRoLmFwcGVuZChicmFuY2hO
b3RDZWxsKGNhbGxlZS5qc1ZhbHVlUmVncygpKSk7CiAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0
LmJyYW5jaFB0cldpdGhQYXRjaChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxlZVBheWxv
YWRHUFIsIHRhcmdldFRvQ2hlY2spKTsKICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGNhbGxlZVBheWxvYWRHUFIsIE9CSkVDVF9PRkZTRVRPRihKU0Z1bmN0aW9uLCBt
X3Njb3BlKSksIHJlc3VsdFBheWxvYWRHUFIpOwpAQCAtNzEzLDcgKzcyMCw2IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgbV9qaXQubW92ZShjYWxs
ZWVQYXlsb2FkR1BSLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgIG1faml0Lm1vdmUoY2FsbGVl
VGFnR1BSLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgfQotICAgIENhbGxMaW5rSW5mbyogaW5mbyA9
IG1faml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKICAgICBtX2ppdC5tb3ZlKE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGluZm8pLCBHUFJJbmZvOjpyZWdUMik7CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgc2xvd0NhbGwgPSBtX2ppdC5uZWFyQ2FsbCgpOwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJ
KHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyNiw3ICs2MjYsNiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTWlzY1N0cmljdEVxCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiB7Ci0KICAgICBib29sIGlzQ2FsbCA9IG5vZGUtPm9wKCkg
PT0gQ2FsbDsKICAgICBpZiAoIWlzQ2FsbCkKICAgICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFw
aCgpLCBub2RlLCBub2RlLT5vcCgpID09IENvbnN0cnVjdCk7CkBAIC02NzAsNiArNjY5LDE1IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKIAogICAgIG1faml0LmVt
aXRTdG9yZUNvZGVPcmlnaW4obm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAKKyAgICBDYWxs
TGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0lu
Zm8oKTsKKyAgICAKKyAgICBpZiAoQ2FsbEVkZ2VMb2c6OmlzRW5hYmxlZCgpCisgICAgICAgICYm
IG1faml0LmdyYXBoKCkubV9zaG91bGRQcm9maWxlCisgICAgICAgICYmICFtX3N0YXRlLmZvck5v
ZGUoY2FsbGVlRWRnZSkubV92YWx1ZSkgeworICAgICAgICBtX2ppdC52bSgpLT5jYWxsRWRnZUxv
Zy0+ZW1pdExvZ0NvZGUoCisgICAgICAgICAgICBtX2ppdCwgY2FsbExpbmtJbmZvLT5jYWxsRWRn
ZVByb2ZpbGUsIEpTVmFsdWVSZWdzKGNhbGxlZUdQUikpOworICAgIH0KKwogICAgIHNsb3dQYXRo
ID0gbV9qaXQuYnJhbmNoUHRyV2l0aFBhdGNoKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgY2Fs
bGVlR1BSLCB0YXJnZXRUb0NoZWNrLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigwKSk7
CiAKICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNhbGxlZUdQUiwg
T0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rpb24sIG1fc2NvcGUpKSwgcmVzdWx0R1BSKTsKQEAgLTY4
Miw3ICs2OTAsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAg
ICAgc2xvd1BhdGgubGluaygmbV9qaXQpOwogICAgIAogICAgIG1faml0Lm1vdmUoY2FsbGVlR1BS
LCBHUFJJbmZvOjpyZWdUMCk7IC8vIENhbGxlZSBuZWVkcyB0byBiZSBpbiByZWdUMAotICAgIENh
bGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5r
SW5mbygpOwogICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2Fs
bExpbmtJbmZvKSwgR1BSSW5mbzo6cmVnVDIpOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8gYmUgaW4g
cmVnVDIKICAgICBKSVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7
CiAgICAgCkBAIC0zNzc4LDE4ICszNzg1LDIxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUdldEFycmF5TGVuZ3RoKG5vZGUpOwogICAg
ICAgICBicmVhazsKICAgICAgICAgCi0gICAgY2FzZSBDaGVja0Z1bmN0aW9uOiB7Ci0gICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZ1bmN0aW9uKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRGdW5jdGlvbiwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwoZnVuY3Rpb24uZ3ByKCkpLCBub2RlLT5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoV2Vha1B0
cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGZ1bmN0aW9uLmdwcigpLCBub2RlLT5mdW5jdGlvbigp
LT52YWx1ZSgpLmFzQ2VsbCgpKSk7CisgICAgY2FzZSBDaGVja0NlbGw6IHsKKyAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgY2VsbCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soQmFkQ2VsbCwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbC5n
cHIoKSksIG5vZGUtPmNoaWxkMSgpLCBtX2ppdC5icmFuY2hXZWFrUHRyKEpJVENvbXBpbGVyOjpO
b3RFcXVhbCwgY2VsbC5ncHIoKSwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5hc0NlbGwo
KSkpOwogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
ICAgICAKLSAgICBjYXNlIENoZWNrRXhlY3V0YWJsZTogeworICAgIGNhc2UgR2V0RXhlY3V0YWJs
ZTogewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmdW5jdGlvbih0aGlzLCBub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgIHNwZWN1bGF0ZUNlbGxUeXBlKG5vZGUtPmNoaWxkMSgpLCBmdW5j
dGlvbi5ncHIoKSwgU3BlY0Z1bmN0aW9uLCBKU0Z1bmN0aW9uVHlwZSk7Ci0gICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkRXhlY3V0YWJsZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoZnVu
Y3Rpb24uZ3ByKCkpLCBub2RlLT5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21w
aWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Z1
bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIG5vZGUtPmV4ZWN1dGFibGUoKSkpOwotICAg
ICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBS
ZXVzZSwgZnVuY3Rpb24pOworICAgICAgICBHUFJSZWcgZnVuY3Rpb25HUFIgPSBmdW5jdGlvbi5n
cHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAg
c3BlY3VsYXRlQ2VsbFR5cGUobm9kZS0+Y2hpbGQxKCksIGZ1bmN0aW9uR1BSLCBTcGVjRnVuY3Rp
b24sIEpTRnVuY3Rpb25UeXBlKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6
QWRkcmVzcyhmdW5jdGlvbkdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCBy
ZXN1bHRHUFIpOworICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC00OTgwLDcgKzQ5OTAsOCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0
OgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKICAgICBjYXNlIEZpYXRJbnQ1MjoKLSAgICAg
ICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJVbmV4cGVjdGVkIEZUTCBub2RlIik7
CisgICAgY2FzZSBDaGVja0JhZENlbGw6CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgp
LCBub2RlLCAiVW5leHBlY3RlZCBub2RlIik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzU0LDYgKzUzNTQsMTAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaChOb2RlKiBubwogICAgIGNhc2UgU3dpdGNoU3RyaW5n
OiB7CiAgICAgICAgIGVtaXRTd2l0Y2hTdHJpbmcobm9kZSwgZGF0YSk7CiAgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgY2FzZSBTd2l0Y2hDZWxsOiB7CisgICAgICAgIERGR19DUkFTSChtX2pp
dC5ncmFwaCgpLCBub2RlLCAiQmFkIHN3aXRjaCBraW5kIik7CisgICAgICAgIHJldHVybjsKICAg
ICB9IH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3Ry
YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02MiwxMCArNjIsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJs
b2NrLT5hdChub2RlSW5kZXgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgc3dpdGNo
IChub2RlLT5vcCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6Ci0g
ICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG5vZGUtPmV4ZWN1dGFibGUoKS0+
c3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgICAgICAgICAgICAg
ICAgICByZWdpc3RlclN0cnVjdHVyZXMobm9kZS0+c3RydWN0dXJlU2V0KCkpOwogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGll
clVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTcy
Nzk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlv
blBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsOCBAQCBwdWJsaWM6CiAgICAg
ICAgIGlmICghT3B0aW9uczo6ZW5hYmxlT1NSRW50cnlUb0ZUTCgpKQogICAgICAgICAgICAgbGV2
ZWwgPSBGVEw6OkNhbkNvbXBpbGU7CiAgICAgICAgIAorICAgICAgICBtX2dyYXBoLm1fc2hvdWxk
UHJvZmlsZSA9IHRydWU7CisgICAgICAgIAogICAgICAgICBJbnNlcnRpb25TZXQgaW5zZXJ0aW9u
U2V0KG1fZ3JhcGgpOwogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3Jh
cGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sq
IGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAw
LDcgKzIwMCw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBW
QUxJREFURSgobm9kZSksICFtYXlFeGl0KG1fZ3JhcGgsIG5vZGUpIHx8IG5vZGUtPm9yaWdpbi5m
b3JFeGl0LmlzU2V0KCkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUt
Pmhhc1N0cnVjdHVyZSgpIHx8ICEhbm9kZS0+c3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAg
IFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhhc0Z1bmN0aW9uKCkgfHwgbm9kZS0+ZnVuY3Rpb24o
KS0+dmFsdWUoKS5pc0Z1bmN0aW9uKCkpOwogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBpZiAoIShub2RlLT5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICghbm9kZS0+Y2hpbGQyKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAJ
KHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hw
b2ludENvbGxlY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExNCw3ICsxMTQsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBB
bGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6Ci0gICAgICAgICAgICBhZGRMYXppbHkoanNDYXN0
PEpTRnVuY3Rpb24qPihtX25vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkpLT5hbGxvY2F0aW9uUHJv
ZmlsZVdhdGNocG9pbnRTZXQoKSk7CisgICAgICAgICAgICBhZGRMYXppbHkoanNDYXN0PEpTRnVu
Y3Rpb24qPihtX25vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkpLT5hbGxvY2F0aW9uUHJvZmls
ZVdhdGNocG9pbnRTZXQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAg
ICAgICBjYXNlIFZhcmlhYmxlV2F0Y2hwb2ludDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTA0LDcgKzEwNCw4IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2Rl
KiAKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CiAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoK
ICAgICBjYXNlIFN0cmluZ0NoYXJBdDoKLSAgICBjYXNlIENoZWNrRnVuY3Rpb246CisgICAgY2Fz
ZSBDaGVja0NlbGw6CisgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgY2FzZSBTdHJpbmdDaGFy
Q29kZUF0OgogICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBSZWFs
bG9jYXRlUHJvcGVydHlTdG9yYWdlOgpAQCAtMTI2LDcgKzEyNyw3IEBAIGlubGluZSBDYXBhYmls
aXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50
ZXI6CiAgICAgY2FzZSBDaGVjazoKICAgICBjYXNlIENvdW50RXhlY3V0aW9uOgotICAgIGNhc2Ug
Q2hlY2tFeGVjdXRhYmxlOgorICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNlIEdldFNj
b3BlOgogICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OgogICAgIGNhc2UgQ2hl
Y2tBcmd1bWVudHNOb3RDcmVhdGVkOgpAQCAtMzI2LDYgKzMyNyw3IEBAIGlubGluZSBDYXBhYmls
aXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICAgICAgc3dpdGNoIChub2RlLT5zd2l0Y2hE
YXRhKCktPmtpbmQpIHsKICAgICAgICAgY2FzZSBTd2l0Y2hJbW06CiAgICAgICAgIGNhc2UgU3dp
dGNoQ2hhcjoKKyAgICAgICAgY2FzZSBTd2l0Y2hDZWxsOgogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShy
ZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDExICsxNTMsMTcgQEAgcHVibGljOgog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGJsb2NrSW5kZXggPSBkZXB0aEZpcnN0LnNpemUoKTsgYmxv
Y2tJbmRleC0tOyApIHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gZGVwdGhGaXJz
dFtibG9ja0luZGV4XTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4ID0gYmxv
Y2stPnNpemUoKTsgbm9kZUluZGV4LS07ICkgewotICAgICAgICAgICAgICAgIE5vZGUqIG1fbm9k
ZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOwotICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmhh
c0tub3duRnVuY3Rpb24oKSkgeworICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+
YXQobm9kZUluZGV4KTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKKyAg
ICAgICAgICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6CisgICAgICAgICAgICAgICAgY2FzZSBOYXRp
dmVDb25zdHJ1Y3Q6IHsKICAgICAgICAgICAgICAgICAgICAgaW50IG51bUFyZ3MgPSBtX25vZGUt
Pm51bUNoaWxkcmVuKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChudW1BcmdzID4gbWF4TnVt
YmVyT2ZBcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgICAgICAgICBtYXhOdW1iZXJPZkFyZ3Vt
ZW50cyA9IG51bUFyZ3M7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ2OCwx
MSArNDc0LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAg
ICAgICAgICBjb21waWxlQ2hlY2tTdHJ1Y3R1cmUoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIENoZWNrRnVuY3Rpb246Ci0gICAgICAgICAgICBjb21waWxlQ2hlY2tGdW5jdGlv
bigpOworICAgICAgICBjYXNlIENoZWNrQ2VsbDoKKyAgICAgICAgICAgIGNvbXBpbGVDaGVja0Nl
bGwoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToK
LSAgICAgICAgICAgIGNvbXBpbGVDaGVja0V4ZWN1dGFibGUoKTsKKyAgICAgICAgY2FzZSBDaGVj
a0JhZENlbGw6CisgICAgICAgICAgICBjb21waWxlQ2hlY2tCYWRDZWxsKCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgorICAgICAgICAgICAgY29tcGls
ZUdldEV4ZWN1dGFibGUoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5
aWZ5VG9TdHJ1Y3R1cmU6CiAgICAgICAgICAgICBjb21waWxlQXJyYXlpZnlUb1N0cnVjdHVyZSgp
OwpAQCAtMTc0MywyNiArMTc1MiwyNSBAQCBwcml2YXRlOgogICAgICAgICBtX291dC5hcHBlbmRU
byhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21waWxl
Q2hlY2tGdW5jdGlvbigpCisgICAgdm9pZCBjb21waWxlQ2hlY2tDZWxsKCkKICAgICB7CiAgICAg
ICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgCiAg
ICAgICAgIHNwZWN1bGF0ZSgKLSAgICAgICAgICAgIEJhZEZ1bmN0aW9uLCBqc1ZhbHVlVmFsdWUo
Y2VsbCksIG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpLAotICAgICAgICAgICAgbV9vdXQubm90RXF1
YWwoY2VsbCwgd2Vha1BvaW50ZXIobV9ub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpLmFzQ2VsbCgp
KSkpOworICAgICAgICAgICAgQmFkQ2VsbCwganNWYWx1ZVZhbHVlKGNlbGwpLCBtX25vZGUtPmNo
aWxkMSgpLm5vZGUoKSwKKyAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKGNlbGwsIHdlYWtQb2lu
dGVyKG1fbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5hc0NlbGwoKSkpKTsKICAgICB9CiAg
ICAgCi0gICAgdm9pZCBjb21waWxlQ2hlY2tFeGVjdXRhYmxlKCkKKyAgICB2b2lkIGNvbXBpbGVD
aGVja0JhZENlbGwoKQorICAgIHsKKyAgICAgICAgdGVybWluYXRlKEJhZENlbGwpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGNvbXBpbGVHZXRFeGVjdXRhYmxlKCkKICAgICB7CiAgICAgICAgIExW
YWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgCiAgICAgICAg
IHNwZWN1bGF0ZUZ1bmN0aW9uKG1fbm9kZS0+Y2hpbGQxKCksIGNlbGwpOwotICAgICAgICAKLSAg
ICAgICAgc3BlY3VsYXRlKAotICAgICAgICAgICAgQmFkRXhlY3V0YWJsZSwganNWYWx1ZVZhbHVl
KGNlbGwpLCBtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSwKLSAgICAgICAgICAgIG1fb3V0Lm5vdEVx
dWFsKAotICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0Z1bmN0
aW9uX2V4ZWN1dGFibGUpLAotICAgICAgICAgICAgICAgIHdlYWtQb2ludGVyKG1fbm9kZS0+ZXhl
Y3V0YWJsZSgpKSkpOworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9o
ZWFwcy5KU0Z1bmN0aW9uX2V4ZWN1dGFibGUpKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21w
aWxlQXJyYXlpZnlUb1N0cnVjdHVyZSgpCkBAIC0zNjczLDkgKzM2ODEsNyBAQCBwcml2YXRlOgog
ICAgICAgICBpbnQgbnVtUGFzc2VkQXJncyA9IG1fbm9kZS0+bnVtQ2hpbGRyZW4oKSAtIDE7CiAg
ICAgICAgIGludCBudW1BcmdzID0gbnVtUGFzc2VkQXJncyArIGR1bW15VGhpc0FyZ3VtZW50Owog
Ci0gICAgICAgIEFTU0VSVChtX25vZGUtPmhhc0tub3duRnVuY3Rpb24oKSk7Ci0KLSAgICAgICAg
SlNGdW5jdGlvbioga25vd25GdW5jdGlvbiA9IG1fbm9kZS0+a25vd25GdW5jdGlvbigpOworICAg
ICAgICBKU0Z1bmN0aW9uKiBrbm93bkZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihtX25v
ZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuYXNDZWxsKCkpOwogICAgICAgICBOYXRpdmVGdW5j
dGlvbiBmdW5jdGlvbiA9IGtub3duRnVuY3Rpb24tPm5hdGl2ZUZ1bmN0aW9uKCk7CiAKICAgICAg
ICAgRGxfaW5mbyBpbmZvOwpAQCAtMzkxOCwxMCArMzkyNCwzNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBjYXNlIFN3aXRjaFN0
cmluZzoKKyAgICAgICAgY2FzZSBTd2l0Y2hTdHJpbmc6IHsKICAgICAgICAgICAgIERGR19DUkFT
SChtX2dyYXBoLCBtX25vZGUsICJVbmltcGxlbWVudGVkIik7Ci0gICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNh
c2UgU3dpdGNoQ2VsbDogeworICAgICAgICAgICAgTFZhbHVlIGNlbGw7CisgICAgICAgICAgICBz
d2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgICAgICAgICBjYXNlIENl
bGxVc2U6IHsKKyAgICAgICAgICAgICAgICBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICAgICAgICAgIExWYWx1
ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAg
TEJhc2ljQmxvY2sgY2VsbENhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIlN3aXRjaC9Td2l0
Y2hDZWxsIGNlbGwgY2FzZSIpKTsKKyAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCisgICAg
ICAgICAgICAgICAgICAgIGlzQ2VsbCh2YWx1ZSksIHVuc3VyZShjZWxsQ2FzZSksIHVuc3VyZShs
b3dCbG9jayhkYXRhLT5mYWxsVGhyb3VnaC5ibG9jaykpKTsKKyAgICAgICAgICAgICAgICBtX291
dC5hcHBlbmRUbyhjZWxsQ2FzZSk7CisgICAgICAgICAgICAgICAgY2VsbCA9IHZhbHVlOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9u
b2RlLCAiQmFkIHVzZSBraW5kIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBidWlsZFN3aXRjaChtX25vZGUtPnN3aXRj
aERhdGEoKSwgbV9vdXQuaW50UHRyLCBjZWxsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfSB9CiAgICAgICAgIAogICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiQmFk
IHN3aXRjaCBraW5kIik7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05ODQsNiArOTg0LDExIEBAIHZvaWQgSGVhcDo6Y29sbGVj
dChIZWFwT3BlcmF0aW9uIGNvbGxlY3QKICAgICAgICAgdm0oKS0+aGlnaEZpZGVsaXR5TG9nKCkt
PnByb2Nlc3NIaWdoRmlkZWxpdHlMb2coIkdDIik7CiAgICAgfQogICAgIAorICAgIGlmICh2bSgp
LT5jYWxsRWRnZUxvZykgeworICAgICAgICBEZWZlckdDRm9yQVdoaWxlIGF3aGlsZSgqdGhpcyk7
CisgICAgICAgIHZtKCktPmNhbGxFZGdlTG9nLT5wcm9jZXNzTG9nKCk7CisgICAgfQorICAgIAog
ICAgIFJFTEVBU0VfQVNTRVJUKCFtX2RlZmVycmFsRGVwdGgpOwogICAgIEFTU0VSVCh2bSgpLT5j
dXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bSgp
LT5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJs
ZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
aAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsMjEgQEAgcHVibGljOgogI2Vu
ZGlmCiAgICAgfQogICAgIAorICAgIHZvaWQgbG9hZFZhbHVlKEFkZHJlc3MgYWRkcmVzcywgSlNW
YWx1ZVJlZ3MgcmVncykKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbG9hZDY0
KGFkZHJlc3MsIHJlZ3MuZ3ByKCkpOworI2Vsc2UKKyAgICAgICAgaWYgKGFkZHJlc3MuYmFzZSA9
PSByZWdzLnBheWxvYWRHUFIoKSkgeworICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9m
ZnNldChUYWdPZmZzZXQpLCByZWdzLnRhZ0dQUigpKTsKKyAgICAgICAgICAgIGxvYWQzMihhZGRy
ZXNzLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCksIHJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoUGF5bG9h
ZE9mZnNldCksIHJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNz
LndpdGhPZmZzZXQoVGFnT2Zmc2V0KSwgcmVncy50YWdHUFIoKSk7CisgICAgICAgIH0KKyNlbmRp
ZgorICAgIH0KKyAgICAKICAgICB2b2lkIG1vdmVUcnVzdGVkVmFsdWUoSlNWYWx1ZSB2YWx1ZSwg
SlNWYWx1ZVJlZ3MgcmVncykKICAgICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAkocmV2aXNpb24gMTcyNzk0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMTY2Niw2ICsxNjY2LDE1IEBAIHB1YmxpYzoKICAgICAgICAgbW92ZShhcmc0LCBHUFJJbmZv
Ojphcmd1bWVudEdQUjMpOwogICAgIH0KICNlbmRpZgorICAgIAorICAgIHZvaWQgc2V0dXBBcmd1
bWVudHMoSlNWYWx1ZVJlZ3MgYXJnMSkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAg
ICAgc2V0dXBBcmd1bWVudHMoYXJnMS5ncHIoKSk7CisjZWxzZQorICAgICAgICBzZXR1cEFyZ3Vt
ZW50cyhhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSk7CisjZW5kaWYKKyAgICB9CiAK
ICAgICB2b2lkIHNldHVwUmVzdWx0cyhHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QikKICAgICB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAkocmV2aXNpb24gMTcyNzk0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAg
LTYwLDYgKzYwLDggQEAgcHVibGljOgogICAgIEdQUlJlZyB0YWdHUFIoKSBjb25zdCB7IHJldHVy
biBJbnZhbGlkR1BSUmVnOyB9CiAgICAgR1BSUmVnIHBheWxvYWRHUFIoKSBjb25zdCB7IHJldHVy
biBtX2dwcjsgfQogICAgIAorICAgIGJvb2wgdXNlcyhHUFJSZWcgZ3ByKSBjb25zdCB7IHJldHVy
biBtX2dwciA9PSBncHI7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByOwogfTsK
QEAgLTE2OSw2ICsxNzEsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0YWdHUFIoKTsKICAg
ICB9CiAKKyAgICBib29sIHVzZXMoR1BSUmVnIGdwcikgY29uc3QgeyByZXR1cm4gbV90YWdHUFIg
PT0gZ3ByIHx8IG1fcGF5bG9hZEdQUiA9PSBncHI7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgaW50
OF90IG1fdGFnR1BSOwogICAgIGludDhfdCBtX3BheWxvYWRHUFI7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCShyZXZpc2lvbiAxNzI3OTQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMwMCw2ICszMDAsMTMgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bj
b2RlSQogICAgIHN0b3JlMzIocmVnVDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpT
U3RhY2s6OkNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXls
b2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAgICAgc3RvcmUzMihyZWdU
MSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgSlNTdGFjazo6Q2FsbGVlICogc3RhdGlj
X2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFRhZ09mZnNldCAtIHNpemVvZihDYWxsZXJG
cmFtZUFuZFBDKSkpOwogCisgICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFk
ZENhbGxMaW5rSW5mbygpOworCisgICAgaWYgKENhbGxFZGdlTG9nOjppc0VuYWJsZWQoKSAmJiBz
aG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKKyAgICAgICAgbV92bS0+ZW5zdXJlQ2FsTEVkZ2VMb2co
KS5lbWl0TG9nQ29kZSgKKyAgICAgICAgICAgICp0aGlzLCBpbmZvLT5jYWxsRWRnZVByb2ZpbGUs
IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkpOworICAgIH0KKwogICAgIGlmIChvcGNvZGVJRCA9
PSBvcF9jYWxsX2V2YWwpIHsKICAgICAgICAgY29tcGlsZUNhbGxFdmFsKGluc3RydWN0aW9uKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMzEzLDcgKzMyMCw2IEBAIHZvaWQgSklUOjpjb21waWxlT3BD
YWxsKE9wY29kZUlEIG9wY29kZUkKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZSk7CiAKICAgICBB
U1NFUlQobV9jYWxsQ29tcGlsYXRpb25JbmZvLnNpemUoKSA9PSBjYWxsTGlua0luZm9JbmRleCk7
Ci0gICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5mbygp
OwogICAgIGluZm8tPmNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJ
RCk7CiAgICAgaW5mby0+Y29kZU9yaWdpbiA9IENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCk7
CiAgICAgaW5mby0+Y2FsbGVlR1BSID0gcmVnVDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENhbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ2FsbC5jcHAJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQ2FsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMiw2ICsyMTIsMTEgQEAgdm9p
ZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoY2FsbGVlLCByZWdUMCk7IC8vIHJlZ1QwIGhvbGRzIGNhbGxlZS4KIAogICAgIHN0
b3JlNjQocmVnVDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpTU3RhY2s6OkNhbGxl
ZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJh
bWVBbmRQQykpKTsKKyAgICAKKyAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2NvZGVCbG9jay0+
YWRkQ2FsbExpbmtJbmZvKCk7CisKKyAgICBpZiAoQ2FsbEVkZ2VMb2c6OmlzRW5hYmxlZCgpICYm
IHNob3VsZEVtaXRQcm9maWxpbmcoKSkKKyAgICAgICAgbV92bS0+ZW5zdXJlQ2FsbEVkZ2VMb2co
KS5lbWl0TG9nQ29kZSgqdGhpcywgaW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBKU1ZhbHVlUmVncyhy
ZWdUMCkpOwogCiAgICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCkgewogICAgICAgICBj
b21waWxlQ2FsbEV2YWwoaW5zdHJ1Y3Rpb24pOwpAQCAtMjIzLDcgKzIyOCw2IEBAIHZvaWQgSklU
Ojpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICBhZGRTbG93Q2FzZShzbG93Q2Fz
ZSk7CiAKICAgICBBU1NFUlQobV9jYWxsQ29tcGlsYXRpb25JbmZvLnNpemUoKSA9PSBjYWxsTGlu
a0luZm9JbmRleCk7Ci0gICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENh
bGxMaW5rSW5mbygpOwogICAgIGluZm8tPmNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpjYWxsVHlw
ZUZvcihvcGNvZGVJRCk7CiAgICAgaW5mby0+Y29kZU9yaWdpbiA9IENvZGVPcmlnaW4obV9ieXRl
Y29kZU9mZnNldCk7CiAgICAgaW5mby0+Y2FsbGVlR1BSID0gcmVnVDA7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2
Nyw2ICsxNjcsOCBAQCB0eXBlZGVmIGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICB2KGJv
b2wsIGVuYWJsZUFjY2Vzc0lubGluaW5nLCB0cnVlKSBcCiAgICAgdihib29sLCBlbmFibGVQb2x5
dmFyaWFudERldmlydHVhbGl6YXRpb24sIHRydWUpIFwKICAgICB2KGJvb2wsIGVuYWJsZVBvbHlt
b3JwaGljQWNjZXNzSW5saW5pbmcsIHRydWUpIFwKKyAgICB2KGJvb2wsIGVuYWJsZVBvbHltb3Jw
aGljQ2FsbElubGluaW5nLCB0cnVlKSBcCisgICAgdihib29sLCBlbmFibGVDYWxsRWRnZVByb2Zp
bGluZywgdHJ1ZSkgXAogICAgIHYoYm9vbCwgb3B0aW1pemVOYXRpdmVDYWxscywgZmFsc2UpIFwK
ICAgICBcCiAgICAgdihib29sLCBlbmFibGVDb25jdXJyZW50SklULCB0cnVlKSBcCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Myw2
ICszNzMsMTMgQEAgVk0qJiBWTTo6c2hhcmVkSW5zdGFuY2VJbnRlcm5hbCgpCiAgICAgcmV0dXJu
IHNoYXJlZEluc3RhbmNlOwogfQogCitDYWxsRWRnZUxvZyYgVk06OmVuc3VyZUNhbGxFZGdlTG9n
KCkKK3sKKyAgICBpZiAoIWNhbGxFZGdlTG9nKQorICAgICAgICBjYWxsRWRnZUxvZyA9IHN0ZDo6
bWFrZV91bmlxdWU8Q2FsbEVkZ2VMb2c+KCk7CisgICAgcmV0dXJuICpjYWxsRWRnZUxvZzsKK30K
KwogI2lmIEVOQUJMRShKSVQpCiBzdGF0aWMgVGh1bmtHZW5lcmF0b3IgdGh1bmtHZW5lcmF0b3JG
b3JJbnRyaW5zaWMoSW50cmluc2ljIGludHJpbnNpYykKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzOwogICAgIGNsYXNz
IEJ1aWx0aW5FeGVjdXRhYmxlczsKKyAgICBjbGFzcyBDYWxsRWRnZUxvZzsKICAgICBjbGFzcyBD
b2RlQmxvY2s7CiAgICAgY2xhc3MgQ29kZUNhY2hlOwogICAgIGNsYXNzIENvbW1vbklkZW50aWZp
ZXJzOwpAQCAtMjMzLDYgKzIzNCw5IEBAIG5hbWVzcGFjZSBKU0MgewogI2lmIEVOQUJMRShERkdf
SklUKQogICAgICAgICBPd25QdHI8REZHOjpMb25nTGl2ZWRTdGF0ZT4gZGZnU3RhdGU7CiAjZW5k
aWYgLy8gRU5BQkxFKERGR19KSVQpCisgICAgICAgIAorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q2FsbEVkZ2VMb2c+IGNhbGxFZGdlTG9nOworICAgICAgICBDYWxsRWRnZUxvZyYgZW5zdXJlQ2Fs
bEVkZ2VMb2coKTsKIAogICAgICAgICBWTVR5cGUgdm1UeXBlOwogICAgICAgICBDbGllbnREYXRh
KiBjbGllbnREYXRhOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9u
ZXctYXJyYXktdGhlbi1leGl0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvbmV3LWFycmF5LXRoZW4tZXhpdC5qcwkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbmV3LWFycmF5LXRoZW4tZXhpdC5qcwko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACitmdW5jdGlvbiBmb28oZikgeworICAgIHJl
dHVybiBuZXcgZigpOworfQorCitub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8
IDEwMDAwOyArK2kpCisgICAgZm9vKEFycmF5KTsKKwordmFyIGRpZENhbGwgPSBmYWxzZTsKK2Zv
byhmdW5jdGlvbigpIHsgZGlkQ2FsbCA9IHRydWU7IH0pOworCitpZiAoIWRpZENhbGwpCisgICAg
dGhyb3cgIkVycm9yOiBkaWRuJ3QgY2FsbCBteSBmdW5jdGlvbi4iOwpJbmRleDogU291cmNlL1dU
Ri93dGYvT3duUHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvT3duUHRyLmgJKHJl
dmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9XVEYvd3RmL093blB0ci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdo
dCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjIsNiArMjIsNyBAQAog
I2RlZmluZSBXVEZfT3duUHRyX2gKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5j
bHVkZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNs
dWRlIDx3dGYvT3duUHRyQ29tbW9uLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgpAQCAtNzIsNiAr
NzMsMTQgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IE93
blB0ciYgb3BlcmF0b3I9KE93blB0cjxVPiYmKTsKIAogICAgICAgICB2b2lkIHN3YXAoT3duUHRy
JiBvKSB7IHN0ZDo6c3dhcChtX3B0ciwgby5tX3B0cik7IH0KKyAgICAgICAgCisgICAgICAgIC8v
IENvbnN0cnVjdCBhbiBvYmplY3QgdG8gc3RvcmUgaW50byB0aGlzIE93blB0ciwgYnV0IG9ubHkg
c28gbG9uZyBhcyB0aGlzIE93blB0cgorICAgICAgICAvLyBkb2Vzbid0IGFscmVhZHkgcG9pbnQg
dG8gYW4gb2JqZWN0LiBUaGlzIHdpbGwgZW5zdXJlIHRoYXQgYWZ0ZXIgeW91IGNhbGwgdGhpcywK
KyAgICAgICAgLy8gdGhlIE93blB0ciB3aWxsIHBvaW50IHRvIGFuIGluc3RhbmNlIG9mIFQuIFRo
aXMgaW5zdGFuY2UgbWF5IG9yIG1heSBub3QgaGF2ZSBiZWVuCisgICAgICAgIC8vIGNyZWF0ZWQg
YnkgdGhpcyBjYWxsLiBNb3Jlb3ZlciwgdGhpcyBjYWxsIHVzZXMgYW4gb3Bwb3J0dW5pc3RpYyB0
cmFuc2FjdGlvbiwgaW4KKyAgICAgICAgLy8gdGhhdCB3ZSBtYXkgY3JlYXRlIGFuIGluc3RhbmNl
IG9mIFQgYW5kIHRoZW4gaW1tZWRpYXRlbHkgdGhyb3cgaXQgYXdheS4KKyAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUuLi4gQXJncz4KKyAgICAgICAgdm9pZCBjcmVhdGVUcmFuc2FjdGlvbmFsbHko
QXJncy4uLiBhcmdzKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IE93blB0cihQ
dHJUeXBlIHB0cikgOiBtX3B0cihwdHIpIHsgfQpAQCAtMTg2LDYgKzE5NSwyOCBAQCBuYW1lc3Bh
Y2UgV1RGIHsKICAgICAgICAgcmV0dXJuIHAuZ2V0KCk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gaW5saW5lIHZvaWQgT3duUHRy
PFQ+OjpjcmVhdGVUcmFuc2FjdGlvbmFsbHkoQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAg
aWYgKG1fcHRyKSB7CisgICAgICAgICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgVCogbmV3T2JqZWN0ID0g
bmV3IFQoYXJncy4uLik7CisgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CisjaWYgRU5B
QkxFKENPTVBBUkVfQU5EX1NXQVApCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGlmIChtX3B0
cikgeworICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdPYmplY3Q7CisgICAgICAgICAgICAgICAg
V1RGOjpsb2FkTG9hZEZlbmNlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorICAgICAgICB9IHdoaWxlICghV1RGOjp3ZWFrQ29tcGFyZUFuZFN3YXAoYml0d2lzZV9j
YXN0PHZvaWQqdm9sYXRpbGUqPigmbV9wdHIpLCBudWxscHRyLCBuZXdPYmplY3QpKTsKKyNlbHNl
CisgICAgICAgIG1fcHRyID0gbmV3T2JqZWN0OworI2VuZGlmCisgICAgfQorCiB9IC8vIG5hbWVz
cGFjZSBXVEYKIAogdXNpbmcgV1RGOjpPd25QdHI7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TcGVj
dHJ1bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgJKHJldmlzaW9u
IDE3Mjc5NCkKKysrIFNvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMy
LDIyICszMiwzMSBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4K
K3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIENvdW50ZXJUeXBlID0gdW5zaWduZWQ+CiBj
bGFzcyBTcGVjdHJ1bSB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPFQs
IHVuc2lnbmVkIGxvbmc+OjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1l
IEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9y
OworICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46Oml0ZXJhdG9y
IGl0ZXJhdG9yOworICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46
OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwogICAgIAogICAgIFNwZWN0cnVtKCkgeyB9
CiAgICAgCi0gICAgdm9pZCBhZGQoY29uc3QgVCYga2V5LCB1bnNpZ25lZCBsb25nIGNvdW50ID0g
MSkKKyAgICB2b2lkIGFkZChjb25zdCBUJiBrZXksIENvdW50ZXJUeXBlIGNvdW50ID0gMSkKICAg
ICB7Ci0gICAgICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz46OkFkZFJlc3Vs
dCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBjb3VudCk7CisgICAgICAgIGlmICghY291bnQpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwgQ291bnRlclR5
cGU+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgY291bnQpOwogICAgICAgICBp
ZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSArPSBjb3VudDsKICAgICB9CiAgICAgCi0gICAgdW5zaWduZWQgbG9uZyBnZXQoY29uc3QgVCYg
a2V5KSBjb25zdAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAgdm9pZCBhZGRBbGwoY29u
c3QgU3BlY3RydW08VCwgVT4mIG90aGVyU3BlY3RydW0pCisgICAgeworICAgICAgICBmb3IgKGF1
dG8gZW50cnkgOiBvdGhlclNwZWN0cnVtKQorICAgICAgICAgICAgYWRkKGVudHJ5LmtleSwgZW50
cnkuY291bnQpOworICAgIH0KKyAgICAKKyAgICBDb3VudGVyVHlwZSBnZXQoY29uc3QgVCYga2V5
KSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3RfaXRlcmF0b3IgaXRlciA9IG1fbWFwLmZpbmQo
a2V5KTsKICAgICAgICAgaWYgKGl0ZXIgPT0gbV9tYXAuZW5kKCkpCkBAIC01NSw2ICs2NCw4IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOwogICAgIH0KICAgICAKKyAgICBz
aXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsgfQorICAgIAogICAgIGl0
ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQogICAgIGl0ZXJhdG9yIGVu
ZCgpIHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBj
b25zdCB7IHJldHVybiBtX21hcC5iZWdpbigpOyB9CkBAIC02Myw3ICs3NCw3IEBAIHB1YmxpYzoK
ICAgICBzdHJ1Y3QgS2V5QW5kQ291bnQgewogICAgICAgICBLZXlBbmRDb3VudCgpIHsgfQogICAg
ICAgICAKLSAgICAgICAgS2V5QW5kQ291bnQoY29uc3QgVCYga2V5LCB1bnNpZ25lZCBsb25nIGNv
dW50KQorICAgICAgICBLZXlBbmRDb3VudChjb25zdCBUJiBrZXksIENvdW50ZXJUeXBlIGNvdW50
KQogICAgICAgICAgICAgOiBrZXkoa2V5KQogICAgICAgICAgICAgLCBjb3VudChjb3VudCkKICAg
ICAgICAgewpAQCAtODAsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBU
IGtleTsKLSAgICAgICAgdW5zaWduZWQgbG9uZyBjb3VudDsKKyAgICAgICAgQ291bnRlclR5cGUg
Y291bnQ7CiAgICAgfTsKICAgICAKICAgICAvLyBSZXR1cm5zIGEgbGlzdCBvcmRlcmVkIGZyb20g
bG93ZXN0LWNvdW50IHRvIGhpZ2hlc3QtY291bnQuCkBAIC05NCw4ICsxMDUsMTggQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbGlzdDsKICAgICB9CiAgICAgCisgICAgdm9pZCBjbGVhcigpIHsg
bV9tYXAuY2xlYXIoKTsgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Cisg
ICAgdm9pZCByZW1vdmVJZihjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAgICAgICAg
bV9tYXAucmVtb3ZlSWYoW2Z1bmN0b3JdICh0eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBl
Pjo6S2V5VmFsdWVQYWlyVHlwZSYgcGFpcikgeworICAgICAgICAgICAgICAgIHJldHVybiBmdW5j
dG9yKEtleUFuZENvdW50KHBhaXIua2V5LCBwYWlyLnZhbHVlKSk7CisgICAgICAgICAgICB9KTsK
KyAgICB9CisgICAgCiBwcml2YXRlOgotICAgIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz4gbV9t
YXA7CisgICAgSGFzaE1hcDxULCBDb3VudGVyVHlwZT4gbV9tYXA7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXVEYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236884</attachid>
            <date>2014-08-20 11:27:44 -0700</date>
            <delta_ts>2014-08-20 20:04:45 -0700</delta_ts>
            <desc>starting to pass tests</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>162159</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyODAxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyNiBA
QAorMjAxNC0wOC0yMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyAob3IgRlRMKSBzaG91bGQgYmUgYWJsZSB0byBkbyBwb2x5bW9ycGhpYyBjYWxsIGlubGlu
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUx
NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIEFkZCBhIGxvZy1iYXNlZCBoaWdoLWZpZGVsaXR5IGNhbGwgZWRnZSBwcm9maWxlciB0aGF0
IHJ1bnMgaW4gYmFzZWxpbmUgSklUIGFuZCBERkcgSklUIGNvZGUuCisgICAgICAgIFVzZSBpdCB0
byBkbyBwcmVjaXNlIHBvbHltb3JwaGljIGlubGluaW5nIGluIHRoZSBGVEwsIGFuZCB0byBtYWtl
IHRoZSBERkcncyBtb25vbW9ycGhpYworICAgICAgICBpbmxpbmVyIGEgYml0IG1vcmUgaW50ZWxs
aWdlbnQuIFBvdGVudGlhbCBpbmxpbmluZyBzaXRlcyB3aWxsIHVzZSB0aGUgY2FsbCBlZGdlIHBy
b2ZpbGUgaWYKKyAgICAgICAgaXQgaXMgYXZhaWxhYmxlIGJ1dCB0aGV5IHdpbGwgc3RpbGwgZmFs
bCBiYWNrIG9uIHRoZSBjYWxsIGlubGluZSBjYWNoZSBhbmQgcmFyZSBjYXNlIGNvdW50cworICAg
ICAgICBpZiB0aGF0J3Mgbm90IGF2YWlsYWJsZS4KKyAgICAgICAgCisgICAgICAgIFdvcmsgaW4g
cHJvZ3Jlc3MuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxFZGdlLmNwcDogQWRkZWQuCisgICAgICAg
IChKU0M6OkNhbGxFZGdlOjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsRWRnZS5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2U6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6
OkNhbGxFZGdlOjpjYWxsZWUpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZTo6Y291bnQpOgorICAg
ICAgICAoSlNDOjpDYWxsRWRnZTo6ZGVzcGVjaWZpZWRDbG9zdXJlKToKKyAgICAgICAgKEpTQzo6
Q2FsbEVkZ2U6OkNhbGxFZGdlKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VQcm9maWxlOjpjYWxsRWRnZXMpOgor
ICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6Om51bUNhbGxzVG9Lbm93bkNlbGxzKToKKyAg
ICAgICAgKEpTQzo6d29ydGhEZXNwZWNpZnlpbmcpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZVBy
b2ZpbGU6OndvcnRoRGVzcGVjaWZ5aW5nKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VQcm9maWxl
Ojp2aXNpdFdlYWspOgorICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6OmFkZFNsb3cpOgor
ICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6Om1lcmdlQmFjayk6CisgICAgICAgIChKU0M6
OkNhbGxFZGdlUHJvZmlsZTo6ZmFkZUJ5SGFsZik6CisgICAgICAgIChKU0M6OkNhbGxFZGdlTG9n
OjpDYWxsRWRnZUxvZyk6CisgICAgICAgIChKU0M6OkNhbGxFZGdlTG9nOjp+Q2FsbEVkZ2VMb2cp
OgorICAgICAgICAoSlNDOjpDYWxsRWRnZUxvZzo6aXNFbmFibGVkKToKKyAgICAgICAgKEpTQzo6
b3BlcmF0aW9uUHJvY2Vzc0NhbGxFZGdlTG9nKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VMb2c6
OmVtaXRMb2dDb2RlKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VMb2c6OnByb2Nlc3NMb2cpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6Q2FsbEVkZ2VQcm9maWxlOjpudW1DYWxsc1RvTm90Q2VsbCk6CisgICAgICAgIChKU0M6OkNh
bGxFZGdlUHJvZmlsZTo6bnVtQ2FsbHNUb1Vua25vd25DZWxsKToKKyAgICAgICAgKiBieXRlY29k
ZS9DYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpDYWxsRWRn
ZVByb2ZpbGU6OkNhbGxFZGdlUHJvZmlsZSk6CisgICAgICAgIChKU0M6OkNhbGxFZGdlUHJvZmls
ZTo6YWRkKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAo
SlNDOjpDYWxsTGlua0luZm86OnZpc2l0V2Vhayk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmg6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAg
ICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Q2FsbExpbmtTdGF0dXMpOgorICAgICAgICAoSlNDOjpD
YWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5r
U3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZy
b21DYWxsRWRnZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6aXNDbG9z
dXJlQ2FsbCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjptYWtlQ2xvc3VyZUNhbGwp
OgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNh
bGxMaW5rU3RhdHVzOjpmdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNhbGxMaW5r
U3RhdHVzOjppbnRlcm5hbEZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbExp
bmtTdGF0dXM6OmludHJpbnNpY0Zvcik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ2Fs
bExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OkNhbGxMaW5rU3Rh
dHVzKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmlzU2V0KToKKyAgICAgICAgKEpT
Qzo6Q2FsbExpbmtTdGF0dXM6OmNvdWxkVGFrZVNsb3dQYXRoKToKKyAgICAgICAgKEpTQzo6Q2Fs
bExpbmtTdGF0dXM6OmVkZ2VzKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OnNpemUp
OgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6YXQpOgorICAgICAgICAoSlNDOjpDYWxs
TGlua1N0YXR1czo6b3BlcmF0b3JbXSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpj
YW5PcHRpbWl6ZSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjYW5UcnVzdENvdW50
cyk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjppc0Nsb3N1cmVDYWxsKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNhbGxUYXJnZXQpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6ZXhlY3V0YWJsZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjptYWtlQ2xvc3VyZUNhbGwpOiBEZWxldGVkLgorICAg
ICAgICAqIGJ5dGVjb2RlL0NhbGxWYXJpYW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkNh
bGxWYXJpYW50OjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsVmFyaWFudC5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OkNhbGxWYXJpYW50KToKKyAgICAgICAgKEpT
Qzo6Q2FsbFZhcmlhbnQ6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50Ojpk
ZXNwZWNpZmllZENsb3N1cmUpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6cmF3Q2FsbGVl
Q2VsbCk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjppbnRlcm5hbEZ1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OmZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Q2FsbFZh
cmlhbnQ6OmlzQ2xvc3VyZUNhbGwpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZXhlY3V0
YWJsZSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50Ojpub25FeGVjdXRhYmxlQ2FsbGVlKToK
KyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OmludHJpbnNpY0Zvcik6CisgICAgICAgIChKU0M6
OkNhbGxWYXJpYW50OjpmdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpDYWxsVmFy
aWFudDo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFu
dDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpvcGVyYXRvciE9KToK
KyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om9wZXJhdG9yPCk6CisgICAgICAgIChKU0M6OkNh
bGxWYXJpYW50OjpvcGVyYXRvcj4pOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6b3BlcmF0
b3I8PSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpvcGVyYXRvcj49KToKKyAgICAgICAg
KEpTQzo6Q2FsbFZhcmlhbnQ6Omhhc2gpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZGVs
ZXRlZFRva2VuKToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnRIYXNoOjpoYXNoKToKKyAgICAg
ICAgKEpTQzo6Q2FsbFZhcmlhbnRIYXNoOjplcXVhbCk6CisgICAgICAgICogYnl0ZWNvZGUvRXhp
dEtpbmQuY3BwOgorICAgICAgICAoSlNDOjpleGl0S2luZFRvU3RyaW5nKToKKyAgICAgICAgKiBi
eXRlY29kZS9FeGl0S2luZC5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0JhY2t3YXJk
c1Byb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJhY2t3YXJkc1Byb3Bh
Z2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR0Jhc2ljQmxvY2suaDoK
KyAgICAgICAgKEpTQzo6REZHOjpCYXNpY0Jsb2NrOjp0YWtlTGFzdCk6CisgICAgICAgIChKU0M6
OkRGRzo6QmFzaWNCbG9jazo6ZGlkTGluayk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cmVtb3ZlTGFzdE5v
ZGVGcm9tR3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphZGRDYWxs
V2l0aG91dFNldHRpbmdSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjphZGRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmVtaXRGdW5jdGlvbkNoZWNr
cyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnVuZG9GdW5jdGlvbkNoZWNr
cyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpjYW5jZWxMaW5raW5nRm9yQmxvY2spOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdD
UFNSZXRocmVhZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDUFNSZXRocmVhZGlu
Z1BoYXNlOjpmcmVlVW5uZWNlc3NhcnlOb2Rlcyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJp
emUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZH
Q29tbW9uLmg6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6Cisg
ICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToK
KyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxl
SW1wbCk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6R3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6Okdy
YXBoOjpkdW1wKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZn
L0RGR0xhenlKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpMYXp5SlNWYWx1ZTo6c3dp
dGNoTG9va3VwVmFsdWUpOgorICAgICAgICAqIGRmZy9ERkdMYXp5SlNWYWx1ZS5oOgorICAgICAg
ICAoSlNDOjpERkc6OkxhenlKU1ZhbHVlOjpzd2l0Y2hMb29rdXBWYWx1ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogZGZnL0RGR05vZGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToK
KyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok9wSW5mbzo6T3BJ
bmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNDZWxsT3BlcmFuZCk6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6Y2VsbE9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
OnNldENlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjYW5CZUtub3duRnVu
Y3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0tub3duRnVuY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omtub3duRnVuY3Rpb24pOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdpdmVLbm93bkZ1bmN0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNGdW5jdGlvbik6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6ZnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6Omhhc0V4ZWN1dGFibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6OmV4ZWN1dGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5o
OgorICAgICAgICAqIGRmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlOjpydW4pOgorICAg
ICAgICAqIGRmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpQaGFudG9tUmVtb3ZhbFBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpl
bWl0U3dpdGNoKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZTo6cnVuKToKKyAg
ICAgICAgKiBkZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6VGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcv
REZHVmFsaWRhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlZhbGlkYXRlOjp2YWxpZGF0ZSk6
CisgICAgICAgICogZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OldhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2U6OmhhbmRsZSk6CisgICAgICAg
ICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGls
ZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpmdGxVbnJlYWNoYWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
Omxvd2VyKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5vZGUp
OgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ2hlY2tDZWxsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNoZWNrQmFkQ2VsbCk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVHZXRFeGVjdXRhYmxl
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5hdGl2ZUNhbGxP
ckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVT
d2l0Y2gpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpidWlsZFN3aXRjaCk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVDaGVja0Z1bmN0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNo
ZWNrRXhlY3V0YWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAg
ICAgKEpTQzo6SGVhcDo6Y29sbGVjdCk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5o
OgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRWYWx1ZSk6CisgICAgICAgICog
aml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJn
dW1lbnRzKToKKyAgICAgICAgKiBqaXQvR1BSSW5mby5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
UmVnczo6dXNlcyk6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9u
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6ZW5zdXJl
Q2FsbEVkZ2VMb2cpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvbmV3LWFycmF5LXRoZW4tZXhpdC5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9wb2x5LWNhbGwtZXhpdC10aGlzLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiB0ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQuanM6IEFkZGVkLgorCiAyMDE0LTA4LTIw
ICBwZWF2b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIFtXaW5d
IEFzc2VydGlvbiBmYWlscyB3aGVuIHJ1bm5pbmcgSlNDIHN0cmVzcyB0ZXN0cy4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMjY1LDYgKzI2NSwxMyBAQAogCQkwRjNCM0EyODE1NDRDOTk3MDAzRUQw
RkYgLyogREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjNBMjUxNTQ0Qzk5MTAwM0VEMEZGIC8qIERGR0NG
R1NpbXBsaWZpY2F0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjNCM0EyQjE1NDc1MDAwMDAzRUQwRkYgLyogREZHVmFsaWRhdGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjNB
MjkxNTQ3NEZGNDAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmNwcCAqLzsgfTsKIAkJMEYzQjNBMkMx
NTQ3NTAwMjAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCM0EyQTE1NDc0RkY0MDAzRUQwRkYgLyogREZHVmFs
aWRhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjNCN0UyNjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTIwMTlBMTFCODAwMEQ5QkM1NiAv
KiBDYWxsRWRnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGM0I3RTI3MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMjExOUEx
MUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAgKi87IH07CisJCTBGM0I3RTI4MTlB
MTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTIyMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxs
RWRnZVByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRjNCN0UyOTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlSW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdF
MjMxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZUlubGluZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjNCN0UyQTE5QTExQjgw
MDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMjQxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50
LmNwcCAqLzsgfTsKKwkJMEYzQjdFMkIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCN0UyNTE5
QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjNCN0UyRDE5QTEyQUFFMDBEOUJDNTYgLyogQ2Fs
bEVkZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYzQjdFMkMxOUExMkFBRTAwRDlCQzU2IC8qIENhbGxFZGdlLmNwcCAqLzsgfTsKIAkJMEYzRDBC
QkMxOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRDBCQkExOTRBNDE0MzAw
RkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suY3BwICovOyB9OwogCQkwRjNEMEJCRDE5
NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRDBCQkIxOTRBNDE0MzAwRkM5Q0Y5
IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQyNkE0ODE0NjBDQkIzMDAxMzFGOEYgLyogVmFsdWVS
ZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY0MjZBNDUxNDYwQ0JBQjAwMTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjE2OSw2ICsyMTc2LDEzIEBA
CiAJCTBGM0IzQTI1MTU0NEM5OTEwMDNFRDBGRiAvKiBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NGR1NpbXBsaWZpY2F0aW9u
UGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0IzQTI5MTU0NzRGRjQwMDNFRDBGRiAvKiBERkdWYWxp
ZGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdWYWxpZGF0
ZS5jcHA7IHBhdGggPSBkZmcvREZHVmFsaWRhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjNCM0EyQTE1NDc0RkY0MDAzRUQwRkYgLyogREZHVmFsaWRhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVmFsaWRhdGUuaDsgcGF0aCA9IGRmZy9ERkdW
YWxpZGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyMDE5QTExQjgw
MDBEOUJDNTYgLyogQ2FsbEVkZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q2FsbEVkZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzQjdFMjExOUExMUI4
MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDYWxsRWRnZVByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjNCN0UyMjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxFZGdlUHJvZmlsZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyMzE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVk
Z2VQcm9maWxlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxs
RWRnZVByb2ZpbGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGM0I3
RTI0MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsVmFyaWFudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGM0I3RTI1MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsVmFyaWFudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjNCN0UyQzE5QTEyQUFFMDBEOUJDNTYgLyogQ2FsbEVkZ2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbEVkZ2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNEMEJCQTE5NEE0MTQzMDBGQzlDRjkgLyogQ29u
c3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDb25zdGFudFN0cnVjdHVyZUNoZWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEYzRDBCQkIxOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2su
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RhbnRTdHJ1Y3R1cmVDaGVj
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFG
OEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBW
YWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MTQ0LDExICs1
MTU4LDE4IEBACiAJCQkJMEY2NjZFQkUxODM1NjZGOTAwRDAxN0YxIC8qIEJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpc0lubGluZXMuaCAqLywKIAkJCQkwRjg4NUUxMDE4NDlBM0JFMDBGMUUzRkEgLyog
Qnl0ZWNvZGVVc2VEZWYuaCAqLywKIAkJCQkwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlW
YWxJbmZvLmggKi8sCisJCQkJMEYzQjdFMkMxOUExMkFBRTAwRDlCQzU2IC8qIENhbGxFZGdlLmNw
cCAqLywKKwkJCQkwRjNCN0UyMDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2UuaCAqLywKKwkJ
CQkwRjNCN0UyMTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmNwcCAqLywKKwkJ
CQkwRjNCN0UyMjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmggKi8sCisJCQkJ
MEYzQjdFMjMxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZUlubGluZXMuaCAqLywK
IAkJCQkwRjBCODNBRTE0QkNGNzE0MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmNwcCAqLywKIAkJ
CQkwRjBCODNBRjE0QkNGNzE0MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmggKi8sCiAJCQkJMEY5
MzMyOTMxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmNwcCAqLywKIAkJCQkwRjkz
MzI5NDE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuaCAqLywKIAkJCQkwRjBCODNC
ODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAq
LywKKwkJCQkwRjNCN0UyNDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuY3BwICovLAor
CQkJCTBGM0I3RTI1MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5oICovLAogCQkJCTk2
OUEwNzkwMEVEMUQzQUUwMEYxRjY4MSAvKiBDb2RlQmxvY2suY3BwICovLAogCQkJCTk2OUEwNzkx
MEVEMUQzQUUwMEYxRjY4MSAvKiBDb2RlQmxvY2suaCAqLywKIAkJCQkwRjhGOTQzRDE2Njc2MzJE
MDBENjE5NzEgLyogQ29kZUJsb2NrSGFzaC5jcHAgKi8sCkBAIC01ODc3LDYgKzU4OTgsNyBAQAog
CQkJCTBGRkZDOTVBMTRFRjkwQTkwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYyRkM3NzMxNkUxMkY3NDAwMzhEOTc2IC8qIERGR0RDRVBoYXNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjhGMkI5QTE3MkYwNTAxMDA3REJEQTUgLyogREZHRGVzaXJlZElkZW50
aWZpZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjNCN0UyODE5QTExQjgwMDBEOUJDNTYgLyog
Q2FsbEVkZ2VQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkMwRjdDRTE3QkJGQzVCMDA0
NjRGRTQgLyogREZHRGVzaXJlZFRyYW5zaXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU4
NTM0QzE3MjNDREE1MDBCNjE4RjUgLyogREZHRGVzaXJlZFdhdGNocG9pbnRzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDMjk4MUZEOTE3QkFFRTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZl
cmVuY2VzLmggaW4gSGVhZGVycyAqLywKQEAgLTYxNDYsNiArNjE2OCw3IEBACiAJCQkJMEY3NjZE
MzExNUFBODExMjAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjc2NkQyQzE1QThDQzNBMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0QzUyNDJCMEY1MzU1RTkwMEJBM0QwNCAvKiBKSVRTdHVicy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEYzQjdFMkIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRUY2ODM1RTE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1YnNB
Uk0uaCBpbiBIZWFkZXJzICovLAogCQkJCUZFRjY4MzVGMTc0MzQzQ0MwMEEzMkUyNSAvKiBKSVRT
dHVic0FSTXY3LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUY2ODM2MTE3NDM0M0NDMDBBMzJFMjUg
LyogSklUU3R1YnNYODYuaCBpbiBIZWFkZXJzICovLApAQCAtNjE1Nyw2ICs2MTgwLDcgQEAKIAkJ
CQlBNzZGNTRBMzEzQjI4QUFCMDBFRjJCQ0UgLyogSklUV3JpdGVCYXJyaWVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzE4QzQxNjBFMTZGNUNEMDBCMzQ0NjAgLyogSlNBY3RpdmF0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NDA0ODAxMzEwMjFBMUQ5MDA4RTdGMDEgLyogSlNBUElWYWx1ZVdy
YXBwZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGM0I3RTI5MTlBMTFCODAwMEQ5QkM1NiAvKiBD
YWxsRWRnZVByb2ZpbGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkNGMzlDMjE2RTE1
QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NzYxNDBEMjE4Mjk4MkNCMDA3NTA2MjQgLyogSlNBcmd1bWVudHNJdGVyYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEM0MTcwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQXJyYXkuaCBpbiBIZWFk
ZXJzICovLApAQCAtNjQ3MSw2ICs2NDk1LDcgQEAKIAkJCQlFNDlEQzE2QzEyRUYyOTRFMDAxODRB
MUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ5REMxNkQx
MkVGMjk1MzAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkI3RjM5RTE1RUQ4RTQ2MDBGMTY3QjIgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEYzQjdFMjYxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzM4NjU1NDExODY5N0I0MDA1NDAyNzkgLyogU3BlY2lh
bGl6ZWRUaHVua0pJVC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NTQxQjIxNjEzQzFGQjAwQ0Uz
RTI1IC8qIFNwZWNpYWxQb2ludGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4MkU1NDE0MURB
RUVFMDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtNzMyNCw2
ICs3MzQ5LDcgQEAKIAkJCQkwRjIzNUJENTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3Vt
ZW50Rm9yT3BlcmFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJEODE3MTc4RTFDMDA2
OTBDN0YgLyogRlRMRXhpdFRodW5rR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MjM1QkRBMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMEYzQjdFMjcxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBN0YyOTk2QjE3QTBCQjY3MDAxMDQxN0EgLyogRlRMRmFpbC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkQ4QTMxOTE3RDUxRjIyMDBDQTJDNDAgLyogRlRMRm9yT1NS
RW50cnlKSVRDb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjVGMUFGMTgxNjM1RjMwMDUy
MkYzOSAvKiBGVExJbmxpbmVDYWNoZVNpemUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03NTEwLDYg
Kzc1MzYsNyBAQAogCQkJCTBGNDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAvKiBMTEludERhdGEuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzOEIwMTExN0NGMDc4MDAwQjE0NEQzIC8qIExMSW50RW50
cnlwb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIg
LyogTExJbnRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGM0I3RTJEMTlBMTJB
QUUwMEQ5QkM1NiAvKiBDYWxsRWRnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ2ODBBNDE0
QkE3RjhEMDBCRkUyNzIgLyogTExJbnRTbG93UGF0aHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGQ0VGQUNEMTgwNUU3NTUwMDQ3MkNFNCAvKiBMTFZNQVBJLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtNzY3MCw2ICs3Njk3LDcgQEAKIAkJCQkxNEU4NEZBMDE0RUUxQUNDMDBENkQ1RDQg
LyogV2Vha1NldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyQTRFQzkwQjE4NjBENkMyMDA5NEY3
ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzgxNTBC
MTQwNDNDMEUwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTBGM0I3RTJBMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBN0U1QUIzQTE3OTlFNEIyMDBEMjgzM0QgLyogWDg2RGlzYXNzZW1ibGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2M0M2RDlDMTUyMTExMUEwMDU4NUU0RSAvKiBZYXJy
Q2Fub25pY2FsaXplVUNTMi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI4NDEyREJBMzM3
MDBBOUZFN0IgLyogWWFyckludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDYWxsRWRnZS5oIgor
CituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBDYWxsRWRnZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdAoreworICAgIG91dC5wcmludCgiPCIsIG1fY2FsbGVlLCAiLCBjb3VudDogIiwgbV9j
b3VudCwgIj4iKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIENhbGxFZGdlX2gKKyNkZWZpbmUgQ2FsbEVkZ2VfaAorCisjaW5jbHVkZSAiQ2FsbFZh
cmlhbnQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3R5cGVkZWYgdWludDE2X3QgQ2FsbEVkZ2VD
b3VudFR5cGU7CisKK2NsYXNzIENhbGxFZGdlIHsKK3B1YmxpYzoKKyAgICBDYWxsRWRnZSgpOwor
ICAgIENhbGxFZGdlKENhbGxWYXJpYW50IGNhbGxlZSwgQ2FsbEVkZ2VDb3VudFR5cGUgY291bnQp
OworICAgIAorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fY2FsbGVlOyB9
CisgICAgCisgICAgQ2FsbFZhcmlhbnQgY2FsbGVlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsZWU7
IH0KKyAgICBDYWxsRWRnZUNvdW50VHlwZSBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnQ7
IH0KKyAgICAKKyAgICBDYWxsRWRnZSBkZXNwZWNpZmllZENsb3N1cmUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIENhbGxFZGdlKG1fY2FsbGVlLmRlc3BlY2lmaWVkQ2xvc3VyZSgpLCBt
X2NvdW50KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7
CisgICAgCitwdWJsaWM6CisgICAgQ2FsbFZhcmlhbnQgbV9jYWxsZWU7CisgICAgQ2FsbEVkZ2VD
b3VudFR5cGUgbV9jb3VudDsKK307CisKK2lubGluZSBDYWxsRWRnZTo6Q2FsbEVkZ2UoQ2FsbFZh
cmlhbnQgY2FsbGVlLCBDYWxsRWRnZUNvdW50VHlwZSBjb3VudCkKKyAgICA6IG1fY2FsbGVlKGNh
bGxlZSkKKyAgICAsIG1fY291bnQoY291bnQpCit7Cit9CisKK2lubGluZSBDYWxsRWRnZTo6Q2Fs
bEVkZ2UoKQorICAgIDogQ2FsbEVkZ2UoQ2FsbFZhcmlhbnQoKSwgMCkKK3sKK30KKwordHlwZWRl
ZiBWZWN0b3I8Q2FsbEVkZ2UsIDE+IENhbGxFZGdlTGlzdDsKKworfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBDYWxsRWRnZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwzNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNhbGxFZGdlUHJv
ZmlsZS5oIgorCisjaW5jbHVkZSAiQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oIgorI2luY2x1ZGUg
IkNDYWxsSGVscGVycy5oIgorI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitDYWxsRWRnZUxpc3QgQ2FsbEVkZ2VQ
cm9maWxlOjpjYWxsRWRnZXMoKSBjb25zdAoreworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9j
a2VyKG1fbG9jayk7CisgICAgCisgICAgQ2FsbEVkZ2VMaXN0IHJlc3VsdDsKKyAgICAKKyAgICBD
YWxsVmFyaWFudCBwcmltYXJ5Q2FsbGVlID0gbV9wcmltYXJ5Q2FsbGVlOworICAgIGZsb2F0IG51
bUNhbGxzVG9QcmltYXJ5ID0gbV9udW1DYWxsc1RvUHJpbWFyeTsKKyAgICAvLyBEZWZlbmQgYWdh
aW5zdCByYWNlcy4gVGhlc2UgZmllbGRzIGFyZSBtb2RpZmllZCBieSB0aGUgbG9nIHByb2Nlc3Nv
ciB3aXRob3V0IGxvY2tpbmcuCisgICAgaWYgKCEhcHJpbWFyeUNhbGxlZSAmJiBudW1DYWxsc1Rv
UHJpbWFyeSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZChDYWxsRWRnZShwcmltYXJ5Q2FsbGVlLCBu
dW1DYWxsc1RvUHJpbWFyeSkpOworICAgIAorICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhhdCBpZiB0aGUgcHJpbWFyeSB0aHJlYWQgaGFkIGp1c3QgY3Jl
YXRlZCBhIG1fb3RoZXJDYWxsZXMgd2hpbGUgbG9nCisgICAgICAgIC8vIHByb2Nlc3NpbmcsIHdl
IHNlZSBhIGNvbnNpc3RlbnRseSBjcmVhdGVkIG9uZS4gVGhlIGxvY2sgYmVpbmcgaGVsZCBpcyBp
bnN1ZmZpY2llbnQgZm9yCisgICAgICAgIC8vIHRoaXMsIHNpbmNlIHRoZSBsb2cgcHJvY2Vzc29y
IHdpbGwgb25seSBncmFiIHRoZSBsb2NrIHdoZW4gbWVyZ2luZyB0aGUgc2Vjb25kYXJ5CisgICAg
ICAgIC8vIHNwZWN0cnVtIGludG8gdGhlIHByaW1hcnkgb25lIGJ1dCBtYXkgc3RpbGwgY3JlYXRl
IHRoZSBkYXRhIHN0cnVjdHVyZSB3aXRob3V0IGhvbGRpbmcKKyAgICAgICAgLy8gbG9ja3MuCisg
ICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOworICAgICAgICBmb3IgKENhbGxFZGdlIGVudHJ5
IDogbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkKSB7CisgICAgICAgICAgICAvLyBEZWZlbmQg
YWdhaW5zdCB0aGUgcG9zc2liaWxpdHkgdGhhdCB0aGUgcHJpbWFyeSBkdXBsaWNhdGVzIGFuIGVu
dHJ5IGluIHRoZSBzZWNvbmRhcnkKKyAgICAgICAgICAgIC8vIHNwZWN0cnVtLiBUaGF0IGNhbiBo
YXBwZW4gd2hlbiB0aGUgR0MgcmVtb3ZlcyB0aGUgcHJpbWFyeS4gV2UgY291bGQgaGF2ZSB0aGUg
R0MgZml4CisgICAgICAgICAgICAvLyB0aGUgc2l0dWF0aW9uIGJ5IGNoYW5naW5nIHRoZSBwcmlt
YXJ5IHRvIGJlIHNvbWV0aGluZyBmcm9tIHRoZSBzZWNvbmRhcnkgc3BlY3RydW0sCisgICAgICAg
ICAgICAvLyBidXQgdGhpcyBmaXggc2VlbXMgc2ltcGxlciB0byBpbXBsZW1lbnQgYW5kIGFsc28g
Y2hlYXBlci4KKyAgICAgICAgICAgIGlmIChlbnRyeS5jYWxsZWUoKSA9PSByZXN1bHRbMF0uY2Fs
bGVlKCkpIHsKKyAgICAgICAgICAgICAgICByZXN1bHRbMF0gPSBDYWxsRWRnZShyZXN1bHRbMF0u
Y2FsbGVlKCksIGVudHJ5LmNvdW50KCkgKyByZXN1bHRbMF0uY291bnQoKSk7CisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoZW50cnkpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHN0ZDo6
c29ydChyZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpLCBbXSAoY29uc3QgQ2FsbEVkZ2UmIGEs
IGNvbnN0IENhbGxFZGdlJiBiKSAtPiBib29sIHsKKyAgICAgICAgICAgIHJldHVybiBhLmNvdW50
KCkgPiBiLmNvdW50KCk7CisgICAgICAgIH0pOworICAgIAorICAgIGlmIChyZXN1bHQuc2l6ZSgp
ID49IDIpCisgICAgICAgIEFTU0VSVChyZXN1bHRbMF0uY291bnQoKSA+PSByZXN1bHQubGFzdCgp
LmNvdW50KCkpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0NhbGxFZGdlQ291bnRU
eXBlIENhbGxFZGdlUHJvZmlsZTo6bnVtQ2FsbHNUb0tub3duQ2VsbHMoKSBjb25zdAoreworICAg
IENhbGxFZGdlQ291bnRUeXBlIHJlc3VsdCA9IDA7CisgICAgZm9yIChDYWxsRWRnZSBlZGdlIDog
Y2FsbEVkZ2VzKCkpCisgICAgICAgIHJlc3VsdCArPSBlZGdlLmNvdW50KCk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworc3RhdGljIGJvb2wgd29ydGhEZXNwZWNpZnlpbmcoY29uc3QgQ2FsbFZh
cmlhbnQmIHZhcmlhbnQpCit7CisgICAgcmV0dXJuICFIZWFwOjppc01hcmtlZCh2YXJpYW50LnJh
d0NhbGxlZUNlbGwoKSkKKyAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQodmFyaWFudC5kZXNwZWNp
ZmllZENsb3N1cmUoKS5yYXdDYWxsZWVDZWxsKCkpOworfQorCitib29sIENhbGxFZGdlUHJvZmls
ZTo6d29ydGhEZXNwZWNpZnlpbmcoKQoreworICAgIGlmIChtX2Nsb3N1cmVzQXJlRGVzcGVjaWZp
ZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoISFtX3ByaW1hcnlDYWxs
ZWUgJiYgIUpTQzo6d29ydGhEZXNwZWNpZnlpbmcobV9wcmltYXJ5Q2FsbGVlKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpLS07
KSB7CisgICAgICAgICAgICBpZiAoIUpTQzo6d29ydGhEZXNwZWNpZnlpbmcobV9vdGhlckNhbGxl
ZXMtPm1fcHJvY2Vzc2VkW2ldLmNhbGxlZSgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
Q2FsbEVkZ2VQcm9maWxlOjp2aXNpdFdlYWsoKQoreworICAgIGlmICghbV9wcmltYXJ5Q2FsbGVl
ICYmICFtX290aGVyQ2FsbGVlcykKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIENvbmN1cnJl
bnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCisgICAgLy8gU2VlIGlmIGFueXRoaW5n
IGlzIGRlYWQgYW5kIGlmIHRoYXQgY2FuIGJlIHJlY3RpZmllZCBieSBkZXNwZWNpZnlpbmcuCisg
ICAgaWYgKHdvcnRoRGVzcGVjaWZ5aW5nKCkpIHsKKyAgICAgICAgQ2FsbFNwZWN0cnVtIG5ld1Nw
ZWN0cnVtOworICAgICAgICAKKyAgICAgICAgaWYgKCEhbV9wcmltYXJ5Q2FsbGVlKQorICAgICAg
ICAgICAgbmV3U3BlY3RydW0uYWRkKG1fcHJpbWFyeUNhbGxlZS5kZXNwZWNpZmllZENsb3N1cmUo
KSwgbV9udW1DYWxsc1RvUHJpbWFyeSk7CisgICAgICAgIAorICAgICAgICBpZiAobV9vdGhlckNh
bGxlZXMpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fb3RoZXJDYWxsZWVzLT5t
X3Byb2Nlc3NlZC5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICBuZXdTcGVjdHJ1bS5h
ZGQoCisgICAgICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5j
YWxsZWUoKS5kZXNwZWNpZmllZENsb3N1cmUoKSwKKyAgICAgICAgICAgICAgICAgICAgbV9vdGhl
ckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNvdW50KCkpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIFZlY3RvcjxDYWxsU3Bl
Y3RydW06OktleUFuZENvdW50PiBsaXN0ID0gbmV3U3BlY3RydW0uYnVpbGRMaXN0KCk7CisgICAg
ICAgIEFTU0VSVChsaXN0LnNpemUoKSk7CisgICAgICAgIG1fcHJpbWFyeUNhbGxlZSA9IGxpc3Qu
bGFzdCgpLmtleTsKKyAgICAgICAgbV9udW1DYWxsc1RvUHJpbWFyeSA9IGxpc3QubGFzdCgpLmNv
dW50OworICAgICAgICAKKyAgICAgICAgQVNTRVJUKCEhbV9vdGhlckNhbGxlZXMgPT0gKGxpc3Qu
c2l6ZSgpID49IDIpKTsKKyAgICAgICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgICAg
ICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuY2xlYXIoKTsKKyAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IGxpc3Quc2l6ZSgpIC0gMTsgaS0tOykKKyAgICAgICAgICAgICAgICBtX290
aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuYXBwZW5kKENhbGxFZGdlKGxpc3RbaV0ua2V5LCBsaXN0
W2ldLmNvdW50KSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG1fY2xvc3VyZXNBcmVE
ZXNwZWNpZmllZCA9IHRydWU7CisgICAgICAgIAorICAgICAgICByZXR1cm47CisgICAgfQorICAg
IAorICAgIGlmICghIW1fcHJpbWFyeUNhbGxlZSAmJiAhSGVhcDo6aXNNYXJrZWQobV9wcmltYXJ5
Q2FsbGVlLnJhd0NhbGxlZUNlbGwoKSkpIHsKKyAgICAgICAgbV9udW1DYWxsc1RvVW5rbm93bkNl
bGwgKz0gbV9udW1DYWxsc1RvUHJpbWFyeTsKKyAgICAgICAgCisgICAgICAgIG1fcHJpbWFyeUNh
bGxlZSA9IENhbGxWYXJpYW50KCk7CisgICAgICAgIG1fbnVtQ2FsbHNUb1ByaW1hcnkgPSAwOwor
ICAgIH0KKyAgICAKKyAgICBpZiAobV9vdGhlckNhbGxlZXMpIHsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5zaXplKCk7IGkrKykg
eworICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nl
c3NlZFtpXS5jYWxsZWUoKS5yYXdDYWxsZWVDZWxsKCkpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBtX251bUNhbGxzVG9Vbmtub3duQ2VsbCAr
PSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQoKTsKKyAgICAgICAgICAgIG1f
b3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpLS1dID0gbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vz
c2VkLmxhc3QoKTsKKyAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5yZW1v
dmVMYXN0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIE9ubHkgZXhpc3RzIHdo
aWxlIHdlIGFyZSBwcm9jZXNzaW5nIHRoZSBsb2cuCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFt
X290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSk7CisgICAgfQorfQorCit2b2lkIENh
bGxFZGdlUHJvZmlsZTo6YWRkU2xvdyhDYWxsVmFyaWFudCBjYWxsZWUsIENhbGxFZGdlUHJvZmls
ZVZlY3RvciYgbWVyZ2VCYWNrTG9nKQoreworICAgIC8vIFRoaXMgZXhpc3RzIHRvIGhhbmRsZSBj
YXNlcyB3aGVyZSB0aGUgc3BlY3RydW0gd2Fzbid0IGNyZWF0ZWQgeWV0LCBvciB3ZSdyZSBzdG9y
aW5nIHRvIGEKKyAgICAvLyBwYXJ0aWN1bGFyIHNwZWN0cnVtIGZvciB0aGUgZmlyc3QgdGltZSBk
dXJpbmcgYSBsb2cgcHJvY2Vzc2luZyBpdGVyYXRpb24uCisgICAgCisgICAgaWYgKCFtX290aGVy
Q2FsbGVlcykgeworICAgICAgICBtX290aGVyQ2FsbGVlcyA9IHN0ZDo6bWFrZV91bmlxdWU8U2Vj
b25kYXJ5PigpOworICAgICAgICAvLyBJZiBhIGNvbXBpbGVyIHRocmVhZCBub3RpY2VzIHRoZSBt
X290aGVyQ2FsbGVlcyBiZWluZyBub24tbnVsbCwgd2Ugd2FudCB0byBtYWtlIHN1cmUKKyAgICAg
ICAgLy8gdGhhdCBpdCBzZWVzIGEgZnVsbHkgY3JlYXRlZCBvbmUuCisgICAgICAgIFdURjo6c3Rv
cmVTdG9yZUZlbmNlKCk7CisgICAgfQorICAgIAorICAgIGlmICghbV9vdGhlckNhbGxlZXMtPm1f
dGVtcG9yYXJ5U3BlY3RydW0pIHsKKyAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5
U3BlY3RydW0gPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxTcGVjdHJ1bT4oKTsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLnNpemUoKTsgaS0tOykg
eworICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0tPmFkZCgK
KyAgICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCks
CisgICAgICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNvdW50KCkp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgdGhpcyBp
cyB0aGUgZmlyc3QgdGltZSB3ZSdyZSBzZWVpbmcgdGhpcyBwcm9maWxlIGR1cmluZyB0aGlzIGxv
ZworICAgICAgICAvLyBwcm9jZXNzaW5nIGl0ZXJhdGlvbi4KKyAgICAgICAgbWVyZ2VCYWNrTG9n
LmFwcGVuZCh0aGlzKTsKKyAgICB9CisgICAgCisgICAgbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9y
YXJ5U3BlY3RydW0tPmFkZChjYWxsZWUpOworfQorCit2b2lkIENhbGxFZGdlUHJvZmlsZTo6bWVy
Z2VCYWNrKCkKK3sKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAg
IAorICAgIEFTU0VSVChtX290aGVyQ2FsbGVlcyk7CisgICAgQVNTRVJUKG1fb3RoZXJDYWxsZWVz
LT5tX3RlbXBvcmFyeVNwZWN0cnVtKTsKKyAgICAKKyAgICBpZiAoISFtX3ByaW1hcnlDYWxsZWUp
CisgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5hZGQobV9wcmlt
YXJ5Q2FsbGVlLCBtX251bUNhbGxzVG9QcmltYXJ5KTsKKyAgICAKKyAgICBpZiAoIW1fY2xvc3Vy
ZXNBcmVEZXNwZWNpZmllZCkgeworICAgICAgICBDYWxsU3BlY3RydW0gbmV3U3BlY3RydW07Cisg
ICAgICAgIGZvciAoYXV0byBlbnRyeSA6ICptX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVj
dHJ1bSkKKyAgICAgICAgICAgIG5ld1NwZWN0cnVtLmFkZChlbnRyeS5rZXkuZGVzcGVjaWZpZWRD
bG9zdXJlKCksIGVudHJ5LnZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChuZXdTcGVjdHJ1
bS5zaXplKCkgPCBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+c2l6ZSgpKSB7
CisgICAgICAgICAgICAqbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0gPSBuZXdT
cGVjdHJ1bTsKKyAgICAgICAgICAgIG1fY2xvc3VyZXNBcmVEZXNwZWNpZmllZCA9IHRydWU7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgCisgICAgVmVjdG9yPENhbGxTcGVjdHJ1bTo6S2V5QW5kQ291
bnQ+IGxpc3QgPSBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+YnVpbGRMaXN0
KCk7CisgICAgbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0gPSBudWxscHRyOwor
ICAgIAorICAgIG1fcHJpbWFyeUNhbGxlZSA9IGxpc3QubGFzdCgpLmtleTsKKyAgICBtX251bUNh
bGxzVG9QcmltYXJ5ID0gbGlzdC5sYXN0KCkuY291bnQ7CisgICAgbGlzdC5yZW1vdmVMYXN0KCk7
CisgICAgCisgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLmNsZWFyKCk7CisgICAgZm9y
ICh1bnNpZ25lZCBjb3VudCA9IG1heEtub3duQ2FsbGVlczsgY291bnQtLSAmJiAhbGlzdC5pc0Vt
cHR5KCk7KSB7CisgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5hcHBlbmQoQ2Fs
bEVkZ2UobGlzdC5sYXN0KCkua2V5LCBsaXN0Lmxhc3QoKS5jb3VudCkpOworICAgICAgICBsaXN0
LnJlbW92ZUxhc3QoKTsKKyAgICB9CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gbGlzdC5z
aXplKCk7IGktLTspCisgICAgICAgIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxsICs9IGxpc3RbaV0u
Y291bnQ7Cit9CisKK3ZvaWQgQ2FsbEVkZ2VQcm9maWxlOjpmYWRlQnlIYWxmKCkKK3sKKyAgICBt
X251bUNhbGxzVG9QcmltYXJ5ID4+PSAxOworICAgIG1fbnVtQ2FsbHNUb05vdENlbGwgPj49IDE7
CisgICAgbV9udW1DYWxsc1RvVW5rbm93bkNlbGwgPj49IDE7CisgICAgbV90b3RhbENvdW50ID4+
PSAxOworICAgIAorICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpLS07KSB7CisgICAg
ICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0gPSBDYWxsRWRnZSgKKyAgICAg
ICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCksCisgICAg
ICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNvdW50KCkgPj4gMSk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChtX290aGVyQ2FsbGVlcy0+bV90ZW1w
b3JhcnlTcGVjdHJ1bSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGVudHJ5IDogKm1fb3RoZXJD
YWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtKQorICAgICAgICAgICAgICAgIGVudHJ5LnZhbHVl
ID4+PSAxOworICAgICAgICB9CisgICAgfQorfQorCitDYWxsRWRnZUxvZzo6Q2FsbEVkZ2VMb2co
KQorICAgIDogbV9zY2FsZWRMb2dJbmRleChsb2dTaXplICogc2l6ZW9mKEVudHJ5KSkKK3sKKyAg
ICBBU1NFUlQoIShtX3NjYWxlZExvZ0luZGV4ICUgc2l6ZW9mKEVudHJ5KSkpOworfQorCitDYWxs
RWRnZUxvZzo6fkNhbGxFZGdlTG9nKCkgeyB9CisKK2Jvb2wgQ2FsbEVkZ2VMb2c6OmlzRW5hYmxl
ZCgpCit7CisgICAgcmV0dXJuIE9wdGlvbnM6OmVuYWJsZUNhbGxFZGdlUHJvZmlsaW5nKCkgJiYg
T3B0aW9uczo6dXNlRlRMSklUKCk7Cit9CisKKyNpZiBFTkFCTEUoSklUKQorCitleHRlcm4gIkMi
IEpJVF9PUEVSQVRJT04gdm9pZCBvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2coQ2FsbEVkZ2VM
b2cqKSBXVEZfSU5URVJOQUw7CitleHRlcm4gIkMiIEpJVF9PUEVSQVRJT04gdm9pZCBvcGVyYXRp
b25Qcm9jZXNzQ2FsbEVkZ2VMb2coQ2FsbEVkZ2VMb2cqIGxvZykKK3sKKyAgICBsb2ctPnByb2Nl
c3NMb2coKTsKK30KKwordm9pZCBDYWxsRWRnZUxvZzo6ZW1pdExvZ0NvZGUoQ0NhbGxIZWxwZXJz
JiBqaXQsIENhbGxFZGdlUHJvZmlsZSYgcHJvZmlsZSwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncykK
K3sKKyAgICBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50cyA9IDE7CisgICAgCisgICAg
R1BSUmVnIHNjcmF0Y2hHUFI7CisgICAgaWYgKCFjYWxsZWVSZWdzLnVzZXMoR1BSSW5mbzo6cmVn
VDApKQorICAgICAgICBzY3JhdGNoR1BSID0gR1BSSW5mbzo6cmVnVDA7CisgICAgZWxzZSBpZiAo
IWNhbGxlZVJlZ3MudXNlcyhHUFJJbmZvOjpyZWdUMSkpCisgICAgICAgIHNjcmF0Y2hHUFIgPSBH
UFJJbmZvOjpyZWdUMTsKKyAgICBlbHNlCisgICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJbmZvOjpy
ZWdUMjsKKyAgICAKKyAgICBqaXQubG9hZDMyKCZtX3NjYWxlZExvZ0luZGV4LCBzY3JhdGNoR1BS
KTsKKyAgICAKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgb2sgPSBqaXQuYnJhbmNoVGVzdDMyKEND
YWxsSGVscGVyczo6Tm9uWmVybywgc2NyYXRjaEdQUik7CisgICAgCisgICAgQVNTRVJUKHN0YWNr
QWxpZ25tZW50UmVnaXN0ZXJzKCkgPj0gMSArIG51bWJlck9mQXJndW1lbnRzKTsKKyAgICAKKyAg
ICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHN0YWNrQWxpZ25tZW50Qnl0
ZXMoKSksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIAorICAgIGpp
dC5zdG9yZVZhbHVlKGNhbGxlZVJlZ3MsIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBl
cnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzaXplb2YoSlNWYWx1ZSkpKTsKKyAgICBqaXQuc2V0
dXBBcmd1bWVudHMoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRoaXMpKTsKKyAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihvcGVy
YXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2cpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgaml0
LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgaml0LmxvYWRWYWx1ZShDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2l6ZW9mKEpT
VmFsdWUpKSwgY2FsbGVlUmVncyk7CisgICAgCisgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihzdGFja0FsaWdubWVudEJ5dGVzKCkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKKyAgICAKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihsb2dTaXplICogc2l6ZW9mKEVudHJ5KSksIHNjcmF0Y2hHUFIpOworICAgIG9rLmxp
bmsoJmppdCk7CisKKyAgICBqaXQuc3ViMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2l6
ZW9mKEVudHJ5KSksIHNjcmF0Y2hHUFIpOworICAgIGppdC5zdG9yZTMyKHNjcmF0Y2hHUFIsICZt
X3NjYWxlZExvZ0luZGV4KTsKKyAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihtX2xvZyksIHNjcmF0Y2hHUFIpOworICAgIGppdC5zdG9yZVZhbHVlKGNhbGxlZVJlZ3Ms
IENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW50cnks
IG1fdmFsdWUpKSk7CisgICAgaml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cigmcHJvZmlsZSksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZG
U0VUT0YoRW50cnksIG1fcHJvZmlsZSkpKTsKK30KKwordm9pZCBDYWxsRWRnZUxvZzo6ZW1pdExv
Z0NvZGUoCisgICAgQ0NhbGxIZWxwZXJzJiBqaXQsIE93blB0cjxDYWxsRWRnZVByb2ZpbGU+JiBw
cm9maWxlUG9pbnRlciwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncykKK3sKKyAgICBpZiAoIWlzRW5h
YmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgcHJvZmlsZVBvaW50ZXIuY3JlYXRl
VHJhbnNhY3Rpb25hbGx5KCk7CisgICAgZW1pdExvZ0NvZGUoaml0LCAqcHJvZmlsZVBvaW50ZXIs
IGNhbGxlZVJlZ3MpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKwordm9pZCBDYWxsRWRn
ZUxvZzo6cHJvY2Vzc0xvZygpCit7CisgICAgQVNTRVJUKCEobV9zY2FsZWRMb2dJbmRleCAlIHNp
emVvZihFbnRyeSkpKTsKKyAgICAKKyAgICBDYWxsRWRnZVByb2ZpbGVWZWN0b3IgbWVyZ2VCYWNr
TG9nOworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IG1fc2NhbGVkTG9nSW5kZXggLyBzaXpl
b2YoRW50cnkpOyBpIDwgbG9nU2l6ZTsgKytpKQorICAgICAgICBtX2xvZ1tpXS5tX3Byb2ZpbGUt
PmFkZChtX2xvZ1tpXS5tX3ZhbHVlLCBtZXJnZUJhY2tMb2cpOworICAgIAorICAgIG1fc2NhbGVk
TG9nSW5kZXggPSBsb2dTaXplICogc2l6ZW9mKEVudHJ5KTsKKyAgICAKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSBtZXJnZUJhY2tMb2cuc2l6ZSgpOyBpLS07KQorICAgICAgICBtZXJnZUJhY2tMb2db
aV0tPm1lcmdlQmFjaygpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENhbGxFZGdlUHJvZmlsZV9oCisjZGVm
aW5lIENhbGxFZGdlUHJvZmlsZV9oCisKKyNpbmNsdWRlICJDYWxsRWRnZS5oIgorI2luY2x1ZGUg
IkNhbGxWYXJpYW50LmgiCisjaW5jbHVkZSAiQ29uY3VycmVudEpJVExvY2suaCIKKyNpbmNsdWRl
ICJKU0NlbGwuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBDQ2FsbEhlbHBlcnM7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKK2Ns
YXNzIENhbGxFZGdlTG9nOworY2xhc3MgQ2FsbEVkZ2VQcm9maWxlOwordHlwZWRlZiBWZWN0b3I8
Q2FsbEVkZ2VQcm9maWxlKiwgMTA+IENhbGxFZGdlUHJvZmlsZVZlY3RvcjsKKworY2xhc3MgQ2Fs
bEVkZ2VQcm9maWxlIHsKK3B1YmxpYzoKKyAgICBDYWxsRWRnZVByb2ZpbGUoKTsKKyAgICAKKyAg
ICBDYWxsRWRnZUNvdW50VHlwZSBudW1DYWxsc1RvTm90Q2VsbCgpIGNvbnN0IHsgcmV0dXJuIG1f
bnVtQ2FsbHNUb05vdENlbGw7IH0KKyAgICBDYWxsRWRnZUNvdW50VHlwZSBudW1DYWxsc1RvVW5r
bm93bkNlbGwoKSBjb25zdCB7IHJldHVybiBtX251bUNhbGxzVG9Vbmtub3duQ2VsbDsgfQorICAg
IENhbGxFZGdlQ291bnRUeXBlIG51bUNhbGxzVG9Lbm93bkNlbGxzKCkgY29uc3Q7CisgICAgCisg
ICAgLy8gQ2FsbCB3aGlsZSBob2xkaW5nIHRoZSBvd25pbmcgQ29kZUJsb2NrJ3MgbG9jay4KKyAg
ICBDYWxsRWRnZUxpc3QgY2FsbEVkZ2VzKCkgY29uc3Q7CisgICAgCisgICAgdm9pZCB2aXNpdFdl
YWsoKTsKKyAgICAKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIENhbGxFZGdlTG9nOworICAg
IAorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhLbm93bkNhbGxlZXMgPSA1OworICAgIAor
ICAgIHZvaWQgYWRkKEpTVmFsdWUsIENhbGxFZGdlUHJvZmlsZVZlY3RvciYgbWVyZ2VCYWNrTG9n
KTsKKyAgICAKKyAgICBib29sIHdvcnRoRGVzcGVjaWZ5aW5nKCk7CisgICAgdm9pZCBhZGRTbG93
KENhbGxWYXJpYW50LCBDYWxsRWRnZVByb2ZpbGVWZWN0b3ImIG1lcmdlQmFja0xvZyk7CisgICAg
dm9pZCBtZXJnZUJhY2soKTsKKyAgICB2b2lkIGZhZGVCeUhhbGYoKTsKKyAgICAKKyAgICAvLyBJ
dCdzIGNoZWFwZXIgdG8gbGV0IHRoaXMgaGF2ZSBpdHMgb3duIGxvY2suIEl0IG5lZWRzIHRvIGJl
IGFibGUgdG8gZmluZCB3aGljaCBsb2NrIHRvCisgICAgLy8gbG9jay4gTm9ybWFsbHkgaXQgd291
bGQgbG9jayB0aGUgb3duaW5nIENvZGVCbG9jaydzIGxvY2ssIGJ1dCB0aGF0IHdvdWxkIHJlcXVp
cmUgYQorICAgIC8vIHBvaW50ZXItd2lkdGggd29yZCB0byBwb2ludCBhdCB0aGUgQ29kZUJsb2Nr
LiBIYXZpbmcgdGhlIGJ5dGUtc2l6ZWQgbG9jayBoZXJlIGlzCisgICAgLy8gY2hlYXBlci4gSG93
ZXZlciwgdGhpcyBtZWFucyB0aGF0IHRoZSByZWxhdGlvbnNoaXAgd2l0aCB0aGUgQ29kZUJsb2Nr
IGxvY2sgaXM6CisgICAgLy8gYWNxdWlyZSB0aGUgQ29kZUJsb2NrIGxvY2sgYmVmb3JlIHRoaXMg
b25lLgorICAgIG11dGFibGUgQ29uY3VycmVudEpJVExvY2sgbV9sb2NrOworICAgIAorICAgIGJv
b2wgbV9jbG9zdXJlc0FyZURlc3BlY2lmaWVkOworICAgIAorICAgIENhbGxFZGdlQ291bnRUeXBl
IG1fbnVtQ2FsbHNUb1ByaW1hcnk7CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbV9udW1DYWxsc1Rv
Tm90Q2VsbDsKKyAgICBDYWxsRWRnZUNvdW50VHlwZSBtX251bUNhbGxzVG9Vbmtub3duQ2VsbDsK
KyAgICBDYWxsRWRnZUNvdW50VHlwZSBtX3RvdGFsQ291bnQ7CisgICAgQ2FsbFZhcmlhbnQgbV9w
cmltYXJ5Q2FsbGVlOworICAgIAorICAgIHR5cGVkZWYgU3BlY3RydW08Q2FsbFZhcmlhbnQsIENh
bGxFZGdlQ291bnRUeXBlPiBDYWxsU3BlY3RydW07CisgICAgCisgICAgc3RydWN0IFNlY29uZGFy
eSB7CisgICAgICAgIFZlY3RvcjxDYWxsRWRnZT4gbV9wcm9jZXNzZWQ7IC8vIFByb2Nlc3NlZCBi
dXQgbm90IG5lY2Vzc2FyaWx5IHNvcnRlZC4KKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxT
cGVjdHJ1bT4gbV90ZW1wb3JhcnlTcGVjdHJ1bTsKKyAgICB9OworICAgIAorICAgIHN0ZDo6dW5p
cXVlX3B0cjxTZWNvbmRhcnk+IG1fb3RoZXJDYWxsZWVzOworfTsKKworY2xhc3MgQ2FsbEVkZ2VM
b2cgeworcHVibGljOgorICAgIENhbGxFZGdlTG9nKCk7CisgICAgfkNhbGxFZGdlTG9nKCk7CisK
KyAgICBzdGF0aWMgYm9vbCBpc0VuYWJsZWQoKTsKKyAgICAKKyNpZiBFTkFCTEUoSklUKQorICAg
IHZvaWQgZW1pdExvZ0NvZGUoQ0NhbGxIZWxwZXJzJiwgQ2FsbEVkZ2VQcm9maWxlJiwgSlNWYWx1
ZVJlZ3MgY2FsbGVlUmVncyk7IC8vIEFzc3VtZXMgdGhhdCBzdGFjayBpcyBhbGlnbmVkLCBhbGwg
dm9sYXRpbGUgcmVnaXN0ZXJzIC0gb3RoZXIgdGhhbiBjYWxsZWVHUFIgLSBhcmUgY2xvYmJlcmFi
bGUsIGFuZCB0aGUgcGFyYW1ldGVyIHNwYWNlIGlzIGluIHVzZS4KKyAgICAKKyAgICAvLyBTYW1l
IGFzIGFib3ZlIGJ1dCBjcmVhdGVzIGEgQ2FsbEVkZ2VQcm9maWxlIGluc3RhbmNlIGlmIG9uZSBk
aWQgbm90IGFscmVhZHkgZXhpc3QuIERvZXMKKyAgICAvLyB0aGlzIGluIGEgdGhyZWFkLXNhZmUg
bWFubmVyIGJ5IGNhbGxpbmcgT3duUHRyOjpjcmVhdGVUcmFuc2FjdGlvbmFsbHkuCisgICAgdm9p
ZCBlbWl0TG9nQ29kZShDQ2FsbEhlbHBlcnMmLCBPd25QdHI8Q2FsbEVkZ2VQcm9maWxlPiYsIEpT
VmFsdWVSZWdzIGNhbGxlZVJlZ3MpOworI2VuZGlmIC8vIEVOQUJMRShKSVQpCisgICAgCisgICAg
dm9pZCBwcm9jZXNzTG9nKCk7CisgICAgCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9nU2l6ZSA9
IDEwMDAwOworICAgIAorICAgIHN0cnVjdCBFbnRyeSB7CisgICAgICAgIEpTVmFsdWUgbV92YWx1
ZTsKKyAgICAgICAgQ2FsbEVkZ2VQcm9maWxlKiBtX3Byb2ZpbGU7CisgICAgfTsKKyAgICAKKyAg
ICB1bnNpZ25lZCBtX3NjYWxlZExvZ0luZGV4OworICAgIEVudHJ5IG1fbG9nW2xvZ1NpemVdOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDYWxsRWRnZVByb2ZpbGVfaAor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlSW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
RWRnZVByb2ZpbGVJbmxpbmVzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzX2gKKyNkZWZpbmUgQ2FsbEVkZ2VQcm9m
aWxlSW5saW5lc19oCisKKyNpbmNsdWRlICJDYWxsRWRnZVByb2ZpbGUuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2lubGluZSBDYWxsRWRnZVByb2ZpbGU6OkNhbGxFZGdlUHJvZmlsZSgpCisgICAg
OiBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQoZmFsc2UpCisgICAgLCBtX251bUNhbGxzVG9Qcmlt
YXJ5KDApCisgICAgLCBtX251bUNhbGxzVG9Ob3RDZWxsKDApCisgICAgLCBtX251bUNhbGxzVG9V
bmtub3duQ2VsbCgwKQorICAgICwgbV90b3RhbENvdW50KDApCisgICAgLCBtX3ByaW1hcnlDYWxs
ZWUobnVsbHB0cikKK3sKK30KKworQUxXQVlTX0lOTElORSB2b2lkIENhbGxFZGdlUHJvZmlsZTo6
YWRkKEpTVmFsdWUgdmFsdWUsIENhbGxFZGdlUHJvZmlsZVZlY3RvciYgbWVyZ2VCYWNrTG9nKQor
eworICAgIHVuc2lnbmVkIG5ld1RvdGFsQ291bnQgPSBtX3RvdGFsQ291bnQgKyAxOworICAgIGlm
IChVTkxJS0VMWSghbmV3VG90YWxDb3VudCkpIHsKKyAgICAgICAgZmFkZUJ5SGFsZigpOyAvLyBU
YWNrbGUgb3ZlcmZsb3dzIGJ5IGRpdmlkaW5nIGFsbCBjb3VudHMgYnkgdHdvLgorICAgICAgICBu
ZXdUb3RhbENvdW50ID0gbV90b3RhbENvdW50ICsgMTsKKyAgICB9CisgICAgQVNTRVJUKG5ld1Rv
dGFsQ291bnQpOworICAgIG1fdG90YWxDb3VudCA9IG5ld1RvdGFsQ291bnQ7CisgICAgCisgICAg
aWYgKFVOTElLRUxZKCF2YWx1ZS5pc0NlbGwoKSkpIHsKKyAgICAgICAgbV9udW1DYWxsc1RvTm90
Q2VsbCsrOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ2FsbFZhcmlhbnQgY2FsbGVl
ID0gQ2FsbFZhcmlhbnQodmFsdWUuYXNDZWxsKCkpOworICAgIAorICAgIGlmIChtX2Nsb3N1cmVz
QXJlRGVzcGVjaWZpZWQpCisgICAgICAgIGNhbGxlZSA9IGNhbGxlZS5kZXNwZWNpZmllZENsb3N1
cmUoKTsKKyAgICAKKyAgICBpZiAoVU5MSUtFTFkoIW1fcHJpbWFyeUNhbGxlZSkpIHsKKyAgICAg
ICAgbV9wcmltYXJ5Q2FsbGVlID0gY2FsbGVlOworICAgICAgICBtX251bUNhbGxzVG9QcmltYXJ5
ID0gMTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAgaWYgKExJS0VMWSht
X3ByaW1hcnlDYWxsZWUgPT0gY2FsbGVlKSkgeworICAgICAgICBtX251bUNhbGxzVG9QcmltYXJ5
Kys7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAorICAgIGlmIChVTkxJS0VMWSgh
bV9vdGhlckNhbGxlZXMpKSB7CisgICAgICAgIGFkZFNsb3coY2FsbGVlLCBtZXJnZUJhY2tMb2cp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBDYWxsU3BlY3RydW0qIHNl
Y29uZGFyeSA9IG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLmdldCgpOworICAg
IGlmICghc2Vjb25kYXJ5KSB7CisgICAgICAgIGFkZFNsb3coY2FsbGVlLCBtZXJnZUJhY2tMb2cp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBzZWNvbmRhcnktPmFkZChj
YWxsZWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIENhbGxFZGdlUHJv
ZmlsZUlubGluZXNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bExpbmtJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtJbmZvLmNwcAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYg
KzgzLDExIEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWsoUmVwYXRjaEJ1ZmYKICAgICB9
CiAgICAgaWYgKCEhbGFzdFNlZW5DYWxsZWUgJiYgIUhlYXA6OmlzTWFya2VkKGxhc3RTZWVuQ2Fs
bGVlLmdldCgpKSkKICAgICAgICAgbGFzdFNlZW5DYWxsZWUuY2xlYXIoKTsKKyAgICAKKyAgICBp
ZiAoY2FsbEVkZ2VQcm9maWxlKSB7CisgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOworICAg
ICAgICBjYWxsRWRnZVByb2ZpbGUtPnZpc2l0V2VhaygpOworICAgIH0KIH0KIAogQ2FsbExpbmtJ
bmZvJiBDYWxsTGlua0luZm86OmR1bW15KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNiArMjYsNyBAQAogI2lmbmRlZiBDYWxsTGlua0luZm9faAogI2RlZmluZSBDYWxsTGlua0lu
Zm9faAogCisjaW5jbHVkZSAiQ2FsbEVkZ2VQcm9maWxlLmgiCiAjaW5jbHVkZSAiQ2xvc3VyZUNh
bGxTdHViUm91dGluZS5oIgogI2luY2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkNv
ZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKQEAgLTMzLDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgi
CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TZW50aW5lbExpbmtlZExp
c3QuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC04OCw2ICs5MCw3IEBAIHN0cnVjdCBDYWxsTGlu
a0luZm8gOiBwdWJsaWMgQmFzaWNSYXdTZW4KICAgICB1bnNpZ25lZCBjYWxsZWVHUFIgOiA4Owog
ICAgIHVuc2lnbmVkIHNsb3dQYXRoQ291bnQ7CiAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luOwor
ICAgIE93blB0cjxDYWxsRWRnZVByb2ZpbGU+IGNhbGxFZGdlUHJvZmlsZTsKIAogICAgIGJvb2wg
aXNMaW5rZWQoKSB7IHJldHVybiBzdHViIHx8IGNhbGxlZTsgfQogICAgIHZvaWQgdW5saW5rKFJl
cGF0Y2hCdWZmZXImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TGlua1N0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIsNTQgKzMyLDIyIEBACiAjaW5jbHVkZSAiTExJbnRDYWxsTGlua0luZm8uaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgorI2luY2x1ZGUg
PHd0Zi9MaXN0RHVtcC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogc3RhdGljIGNvbnN0IGJvb2wg
dmVyYm9zZSA9IGZhbHNlOwogCiBDYWxsTGlua1N0YXR1czo6Q2FsbExpbmtTdGF0dXMoSlNWYWx1
ZSB2YWx1ZSkKLSAgICA6IG1fY2FsbFRhcmdldCh2YWx1ZSkKLSAgICAsIG1fZXhlY3V0YWJsZSgw
KQotICAgICwgbV9jb3VsZFRha2VTbG93UGF0aChmYWxzZSkKKyAgICA6IG1fY291bGRUYWtlU2xv
d1BhdGgoZmFsc2UpCiAgICAgLCBtX2lzUHJvdmVkKGZhbHNlKQogewotICAgIGlmICghdmFsdWUg
fHwgIXZhbHVlLmlzQ2VsbCgpKQorICAgIGlmICghdmFsdWUgfHwgIXZhbHVlLmlzQ2VsbCgpKSB7
CisgICAgICAgIG1fY291bGRUYWtlU2xvd1BhdGggPSB0cnVlOwogICAgICAgICByZXR1cm47Cisg
ICAgfQogICAgIAotICAgIGlmICghdmFsdWUuYXNDZWxsKCktPmluaGVyaXRzKEpTRnVuY3Rpb246
OmluZm8oKSkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBtX2V4ZWN1dGFibGUgPSBqc0Nh
c3Q8SlNGdW5jdGlvbio+KHZhbHVlLmFzQ2VsbCgpKS0+ZXhlY3V0YWJsZSgpOwotfQotCi1KU0Z1
bmN0aW9uKiBDYWxsTGlua1N0YXR1czo6ZnVuY3Rpb24oKSBjb25zdAotewotICAgIGlmICghbV9j
YWxsVGFyZ2V0IHx8ICFtX2NhbGxUYXJnZXQuaXNDZWxsKCkpCi0gICAgICAgIHJldHVybiAwOwot
ICAgIAotICAgIGlmICghbV9jYWxsVGFyZ2V0LmFzQ2VsbCgpLT5pbmhlcml0cyhKU0Z1bmN0aW9u
OjppbmZvKCkpKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICByZXR1cm4ganNDYXN0PEpT
RnVuY3Rpb24qPihtX2NhbGxUYXJnZXQuYXNDZWxsKCkpOwotfQotCi1JbnRlcm5hbEZ1bmN0aW9u
KiBDYWxsTGlua1N0YXR1czo6aW50ZXJuYWxGdW5jdGlvbigpIGNvbnN0Ci17Ci0gICAgaWYgKCFt
X2NhbGxUYXJnZXQgfHwgIW1fY2FsbFRhcmdldC5pc0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgCi0gICAgaWYgKCFtX2NhbGxUYXJnZXQuYXNDZWxsKCktPmluaGVyaXRzKEludGVybmFs
RnVuY3Rpb246OmluZm8oKSkpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIHJldHVybiBq
c0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KG1fY2FsbFRhcmdldC5hc0NlbGwoKSk7Ci19Ci0KLUlu
dHJpbnNpYyBDYWxsTGlua1N0YXR1czo6aW50cmluc2ljRm9yKENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCkgY29uc3QKLXsKLSAgICBpZiAoIW1fZXhlY3V0YWJsZSkKLSAgICAgICAgcmV0dXJu
IE5vSW50cmluc2ljOwotICAgIAotICAgIHJldHVybiBtX2V4ZWN1dGFibGUtPmludHJpbnNpY0Zv
cihraW5kKTsKKyAgICBtX2VkZ2VzLmFwcGVuZChDYWxsRWRnZShDYWxsVmFyaWFudCh2YWx1ZS5h
c0NlbGwoKSksIDEpKTsKIH0KIAogQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVGcm9tTExJbnQoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBDb2RlQmxvY2sq
IHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCkBAIC04Nyw3ICs1NSw3IEBA
IENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnIKICAgICBVTlVTRURfUEFS
QU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogI2lm
IEVOQUJMRShERkdfSklUKQotICAgIGlmIChwcm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0ZShsb2Nr
ZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRGdW5jdGlvbikpKSB7
CisgICAgaWYgKHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVu
dEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENlbGwpKSkgewogICAgICAgICAvLyBXZSBjb3Vs
ZCBmb3JjZSB0aGlzIHRvIGJlIGEgY2xvc3VyZSBjYWxsLCBidXQgaW5zdGVhZCB3ZSdsbCBqdXN0
IGFzc3VtZSB0aGF0IGl0CiAgICAgICAgIC8vIHRha2VzIHNsb3cgcGF0aC4KICAgICAgICAgcmV0
dXJuIHRha2VzU2xvd1BhdGgoKTsKQEAgLTEzOSwxMCArMTA3LDEwIEBAIENhbGxMaW5rU3RhdHVz
OjpFeGl0U2l0ZURhdGEgQ2FsbExpbmtTdGEKICAgICAKICNpZiBFTkFCTEUoREZHX0pJVCkKICAg
ICBleGl0U2l0ZURhdGEubV90YWtlc1Nsb3dQYXRoID0KLSAgICAgICAgcHJvZmlsZWRCbG9jay0+
aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwg
QmFkQ2FjaGUsIGV4aXRpbmdKSVRUeXBlKSkKKyAgICAgICAgcHJvZmlsZWRCbG9jay0+aGFzRXhp
dFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkVHlw
ZSwgZXhpdGluZ0pJVFR5cGUpKQogICAgICAgICB8fCBwcm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0
ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRFeGVjdXRh
YmxlLCBleGl0aW5nSklUVHlwZSkpOwogICAgIGV4aXRTaXRlRGF0YS5tX2JhZEZ1bmN0aW9uID0K
LSAgICAgICAgcHJvZmlsZWRCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50
RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkRnVuY3Rpb24sIGV4aXRpbmdKSVRUeXBlKSk7Cisg
ICAgICAgIHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4
aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENlbGwsIGV4aXRpbmdKSVRUeXBlKSk7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShsb2NrZXIpOwogICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2Nr
KTsKQEAgLTE1Niw2ICsxMjQsMTggQEAgQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBDYWxs
TGlua1N0YQogI2lmIEVOQUJMRShKSVQpCiBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6
Y29tcHV0ZUZvcihjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgQ2FsbExpbmtJbmZvJiBjYWxs
TGlua0luZm8pCiB7CisgICAgLy8gQWx3YXlzIHRydXN0IHRoZSBjYWxsIGVkZ2UgcHJvZmlsZSBv
dmVyIGFueXRoaW5nIGVsc2Ugc2luY2UgdGhpcyBoYXMgcHJlY2lzZSBjb3VudHMuCisgICAgLy8g
SXQgY2FuIG1ha2UgdGhlIGJlc3QgcG9zc2libGUgZGVjaXNpb24gYmVjYXVzZSBpdCBuZXZlciAi
Zm9yZ2V0cyIgd2hhdCBoYXBwZW5lZCBmb3IgYW55CisgICAgLy8gY2FsbCwgd2l0aCB0aGUgZXhj
ZXB0aW9uIG9mIGZhZGluZyBvdXQgdGhlIGNvdW50cyBvZiBvbGQgY2FsbHMgKGZvciBleGFtcGxl
IGlmIHRoZQorICAgIC8vIGNvdW50ZXIgdHlwZSBpcyAxNi1iaXQgdGhlbiBjYWxscyB0aGF0IGhh
cHBlbmVkIG1vcmUgdGhhbiAyXjE2IGNhbGxzIGFnbyBhcmUgZ2l2ZW4gaGFsZgorICAgIC8vIHdl
aWdodCwgYW5kIHRoaXMgY29tcG91bmRzIGZvciBldmVyeSAyXjE1IFtzaWNdIGNhbGxzIGFmdGVy
IHRoYXQpLiBUaGUgY29tYmluYXRpb24gb2YKKyAgICAvLyBoaWdoIGZpZGVsaXR5IGZvciByZWNl
bnQgY2FsbHMgYW5kIGZhZGluZyBmb3Igb2xkZXIgY2FsbHMgbWFrZXMgdGhpcyB0aGUgbW9zdCB1
c2VmdWwKKyAgICAvLyBtZWNoYW1pc20gb2YgY2hvb3NpbmcgaG93IHRvIG9wdGltaXplIGZ1dHVy
ZSBjYWxscy4KKyAgICBDYWxsRWRnZVByb2ZpbGUqIGVkZ2VQcm9maWxlID0gY2FsbExpbmtJbmZv
LmNhbGxFZGdlUHJvZmlsZS5nZXQoKTsKKyAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKKyAgICBp
ZiAoZWRnZVByb2ZpbGUpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUNhbGxFZGdlUHJvZmls
ZShlZGdlUHJvZmlsZSk7CisgICAgCiAgICAgLy8gTm90ZSB0aGF0IGRlc3BpdGUgcmVxdWlyaW5n
IHRoYXQgdGhlIGxvY2tlciBpcyBoZWxkLCB0aGlzIGNvZGUgaXMgcmFjeSB3aXRoIHJlc3BlY3QK
ICAgICAvLyB0byB0aGUgQ2FsbExpbmtJbmZvOiBpdCBtYXkgZ2V0IGNsZWFyZWQgd2hpbGUgdGhp
cyBjb2RlIHJ1bnMhIFRoaXMgaXMgYmVjYXVzZQogICAgIC8vIENhbGxMaW5rSW5mbzo6dW5saW5r
KCkgbWF5IGJlIGNhbGxlZCBmcm9tIGEgZGlmZmVyZW50IENvZGVCbG9jayB0aGFuIHRoZSBvbmUg
dGhhdCBvd25zCkBAIC0xNzcsNyArMTU3LDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVGbwogICAgIAogICAgIEpTRnVuY3Rpb24qIHRhcmdldCA9IGNhbGxMaW5rSW5m
by5sYXN0U2VlbkNhbGxlZS5nZXQoKTsKICAgICBpZiAoIXRhcmdldCkKLSAgICAgICAgcmV0dXJu
IENhbGxMaW5rU3RhdHVzKCk7CisgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7CiAgICAg
CiAgICAgaWYgKGNhbGxMaW5rSW5mby5oYXNTZWVuQ2xvc3VyZSkKICAgICAgICAgcmV0dXJuIENh
bGxMaW5rU3RhdHVzKHRhcmdldC0+ZXhlY3V0YWJsZSgpKTsKQEAgLTE4NSwxNSArMTY1LDMxIEBA
IENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICAgICByZXR1cm4gQ2Fs
bExpbmtTdGF0dXModGFyZ2V0KTsKIH0KIAotQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6
OmNvbXB1dGVGb3IoCi0gICAgY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBDYWxs
TGlua0luZm8mIGNhbGxMaW5rSW5mbywgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSkKK0NhbGxM
aW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUNhbGxFZGdlUHJvZmlsZShDYWxs
RWRnZVByb2ZpbGUqIGVkZ2VQcm9maWxlKQogewotICAgIGlmIChleGl0U2l0ZURhdGEubV90YWtl
c1Nsb3dQYXRoKQorICAgIC8vIFRvIGRvIGFueXRoaW5nIG1lYW5pbmdmdWwsIHdlIHJlcXVpcmUg
dGhhdCB0aGUgbWFqb3JpdHkgb2YgY2FsbHMgYXJlIHRvIHNvbWV0aGluZyB3ZQorICAgIC8vIGtu
b3cgaG93IHRvIGhhbmRsZS4KKyAgICB1bnNpZ25lZCBudW1DYWxsc1RvS25vd24gPSBlZGdlUHJv
ZmlsZS0+bnVtQ2FsbHNUb0tub3duQ2VsbHMoKTsKKyAgICB1bnNpZ25lZCBudW1DYWxsc1RvVW5r
bm93biA9IGVkZ2VQcm9maWxlLT5udW1DYWxsc1RvTm90Q2VsbCgpICsgZWRnZVByb2ZpbGUtPm51
bUNhbGxzVG9Vbmtub3duQ2VsbCgpOworICAgIGlmIChudW1DYWxsc1RvS25vd24gPD0gbnVtQ2Fs
bHNUb1Vua25vd24pCiAgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7CiAgICAgCisgICAg
Q2FsbExpbmtTdGF0dXMgcmVzdWx0OworICAgIHJlc3VsdC5tX2VkZ2VzID0gZWRnZVByb2ZpbGUt
PmNhbGxFZGdlcygpOworICAgIHJlc3VsdC5tX2NvdWxkVGFrZVNsb3dQYXRoID0gISFudW1DYWxs
c1RvVW5rbm93bjsKKyAgICByZXN1bHQubV9jYW5UcnVzdENvdW50cyA9IHRydWU7CisgICAgCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNv
bXB1dGVGb3IoCisgICAgY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBDYWxsTGlu
a0luZm8mIGNhbGxMaW5rSW5mbywgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSkKK3sKICAgICBD
YWxsTGlua1N0YXR1cyByZXN1bHQgPSBjb21wdXRlRm9yKGxvY2tlciwgY2FsbExpbmtJbmZvKTsK
ICAgICBpZiAoZXhpdFNpdGVEYXRhLm1fYmFkRnVuY3Rpb24pCiAgICAgICAgIHJlc3VsdC5tYWtl
Q2xvc3VyZUNhbGwoKTsKKyAgICBpZiAoZXhpdFNpdGVEYXRhLm1fdGFrZXNTbG93UGF0aCkKKyAg
ICAgICAgcmVzdWx0Lm1fY291bGRUYWtlU2xvd1BhdGggPSB0cnVlOwogICAgIAogICAgIHJldHVy
biByZXN1bHQ7CiB9CkBAIC0yNTYsNiArMjUyLDMyIEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5r
U3RhdHVzOjpjb21wdXRlRm8KICAgICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJsb2NrLCBj
b2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIGJhc2VsaW5lTWFwKTsKIH0KIAorYm9vbCBDYWxsTGlu
a1N0YXR1czo6aXNDbG9zdXJlQ2FsbCgpIGNvbnN0Cit7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
bV9lZGdlcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgaWYgKG1fZWRnZXNbaV0uY2FsbGVlKCku
aXNDbG9zdXJlQ2FsbCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKK30KKwordm9pZCBDYWxsTGlua1N0YXR1czo6bWFrZUNsb3N1cmVDYWxsKCkK
K3sKKyAgICBBU1NFUlQoIW1faXNQcm92ZWQpOworICAgIGZvciAodW5zaWduZWQgaSA9IG1fZWRn
ZXMuc2l6ZSgpOyBpLS07KQorICAgICAgICBtX2VkZ2VzW2ldID0gbV9lZGdlc1tpXS5kZXNwZWNp
ZmllZENsb3N1cmUoKTsKKyAgICAKKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAg
ICAvLyBEb2luZyB0aGlzIHNob3VsZCBub3QgaGF2ZSBjcmVhdGVkIGR1cGxpY2F0ZXMsIGJlY2F1
c2UgdGhlIENhbGxFZGdlUHJvZmlsZQorICAgICAgICAvLyBzaG91bGQgZGVzcGVjaWZ5IGNsb3N1
cmVzIGlmIGRvaW5nIHNvIHdvdWxkIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGtub3duIGNhbGxlZXMu
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2VkZ2VzLnNpemUoKTsgKytpKSB7
CisgICAgICAgICAgICBDYWxsVmFyaWFudCB2YXJpYW50ID0gbV9lZGdlc1tpXS5jYWxsZWUoKTsK
KyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IGkgKyAxOyBqIDwgbV9lZGdlcy5zaXplKCk7
ICsraikKKyAgICAgICAgICAgICAgICBBU1NFUlQodmFyaWFudCAhPSBtX2VkZ2VzW2pdLmNhbGxl
ZSgpKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCBDYWxsTGlua1N0YXR1czo6ZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIGlmICghaXNTZXQoKSkgewpAQCAtMjcxLDE0
ICsyOTMsNyBAQCB2b2lkIENhbGxMaW5rU3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBvCiAgICAg
aWYgKG1fY291bGRUYWtlU2xvd1BhdGgpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIkNvdWxk
IFRha2UgU2xvdyBQYXRoIik7CiAgICAgCi0gICAgaWYgKG1fY2FsbFRhcmdldCkKLSAgICAgICAg
b3V0LnByaW50KGNvbW1hLCAiS25vd24gdGFyZ2V0OiAiLCBtX2NhbGxUYXJnZXQpOwotICAgIAot
ICAgIGlmIChtX2V4ZWN1dGFibGUpIHsKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiRXhlY3V0
YWJsZS9DYWxsSGFzaDogIiwgUmF3UG9pbnRlcihtX2V4ZWN1dGFibGUpKTsKLSAgICAgICAgaWYg
KCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpCi0gICAgICAgICAgICBvdXQucHJpbnQoIi8iLCBtX2V4
ZWN1dGFibGUtPmhhc2hGb3IoQ29kZUZvckNhbGwpKTsKLSAgICB9CisgICAgb3V0LnByaW50KGxp
c3REdW1wKG1fZWRnZXMpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkocmV2aXNpb24g
MTcyNzk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDkgKzQ2LDkgQEAgc3RydWN0IENhbGxMaW5rSW5mbzsK
IGNsYXNzIENhbGxMaW5rU3RhdHVzIHsKIHB1YmxpYzoKICAgICBDYWxsTGlua1N0YXR1cygpCi0g
ICAgICAgIDogbV9leGVjdXRhYmxlKDApCi0gICAgICAgICwgbV9jb3VsZFRha2VTbG93UGF0aChm
YWxzZSkKKyAgICAgICAgOiBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQogICAgICAgICAsIG1f
aXNQcm92ZWQoZmFsc2UpCisgICAgICAgICwgbV9jYW5UcnVzdENvdW50cyhmYWxzZSkKICAgICB7
CiAgICAgfQogICAgIApAQCAtNjEsMTAgKzYxLDExIEBAIHB1YmxpYzoKICAgICAKICAgICBleHBs
aWNpdCBDYWxsTGlua1N0YXR1cyhKU1ZhbHVlKTsKICAgICAKLSAgICBDYWxsTGlua1N0YXR1cyhF
eGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSkKLSAgICAgICAgOiBtX2V4ZWN1dGFibGUoZXhlY3V0
YWJsZSkKKyAgICBDYWxsTGlua1N0YXR1cyhDYWxsVmFyaWFudCB2YXJpYW50KQorICAgICAgICA6
IG1fZWRnZXMoMSwgQ2FsbEVkZ2UodmFyaWFudCwgMSkpCiAgICAgICAgICwgbV9jb3VsZFRha2VT
bG93UGF0aChmYWxzZSkKICAgICAgICAgLCBtX2lzUHJvdmVkKGZhbHNlKQorICAgICAgICAsIG1f
Y2FuVHJ1c3RDb3VudHMoZmFsc2UpCiAgICAgewogICAgIH0KICAgICAKQEAgLTEwNywzNyArMTA4
LDM2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcigKICAg
ICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiwgY29u
c3QgQ29udGV4dE1hcCYpOwogICAgIAotICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBt
X2NhbGxUYXJnZXQgfHwgbV9leGVjdXRhYmxlIHx8IG1fY291bGRUYWtlU2xvd1BhdGg7IH0KKyAg
ICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gIW1fZWRnZXMuaXNFbXB0eSgpIHx8IG1fY291
bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0
dXJuICFpc1NldCgpOyB9CiAgICAgCiAgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fY291bGRUYWtlU2xvd1BhdGg7IH0KLSAgICBib29sIGlzQ2xvc3VyZUNhbGwo
KSBjb25zdCB7IHJldHVybiBtX2V4ZWN1dGFibGUgJiYgIW1fY2FsbFRhcmdldDsgfQogICAgIAot
ICAgIEpTVmFsdWUgY2FsbFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdldDsgfQot
ICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uKCkgY29uc3Q7Ci0gICAgSW50ZXJuYWxGdW5jdGlvbiog
aW50ZXJuYWxGdW5jdGlvbigpIGNvbnN0OwotICAgIEludHJpbnNpYyBpbnRyaW5zaWNGb3IoQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCkgY29uc3Q7Ci0gICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFi
bGUoKSBjb25zdCB7IHJldHVybiBtX2V4ZWN1dGFibGU7IH0KKyAgICBDYWxsRWRnZUxpc3QgZWRn
ZXMoKSBjb25zdCB7IHJldHVybiBtX2VkZ2VzOyB9CisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZWRnZXMuc2l6ZSgpOyB9CisgICAgQ2FsbEVkZ2UgYXQodW5zaWduZWQgaSkg
Y29uc3QgeyByZXR1cm4gbV9lZGdlc1tpXTsgfQorICAgIENhbGxFZGdlIG9wZXJhdG9yW10odW5z
aWduZWQgaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0KICAgICBib29sIGlzUHJvdmVkKCkgY29u
c3QgeyByZXR1cm4gbV9pc1Byb3ZlZDsgfQotICAgIGJvb2wgY2FuT3B0aW1pemUoKSBjb25zdCB7
IHJldHVybiAobV9jYWxsVGFyZ2V0IHx8IG1fZXhlY3V0YWJsZSkgJiYgIW1fY291bGRUYWtlU2xv
d1BhdGg7IH0KKyAgICBib29sIGNhbk9wdGltaXplKCkgY29uc3QgeyByZXR1cm4gIW1fZWRnZXMu
aXNFbXB0eSgpOyB9CisgICAgYm9vbCBjYW5UcnVzdENvdW50cygpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FuVHJ1c3RDb3VudHM7IH0KKyAgICAKKyAgICBib29sIGlzQ2xvc3VyZUNhbGwoKSBjb25zdDsg
Ly8gUmV0dXJucyB0cnVlIGlmIGFueSBjYWxsZWUgaXMgYSBjbG9zdXJlIGNhbGwuCiAgICAgCiAg
ICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgotICAgIHZv
aWQgbWFrZUNsb3N1cmVDYWxsKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9pc1Byb3ZlZCk7
Ci0gICAgICAgIC8vIFR1cm4gdGhpcyBpbnRvIGEgY2xvc3VyZSBjYWxsLgotICAgICAgICBtX2Nh
bGxUYXJnZXQgPSBKU1ZhbHVlKCk7Ci0gICAgfQorICAgIHZvaWQgbWFrZUNsb3N1cmVDYWxsKCk7
CiAgICAgCiAgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGcm9tTExJbnQoY29uc3Qg
Q29uY3VycmVudEpJVExvY2tlciYsIENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgp
OworI2lmIEVOQUJMRShKSVQpCisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGcm9t
Q2FsbEVkZ2VQcm9maWxlKENhbGxFZGdlUHJvZmlsZSopOworI2VuZGlmCiAgICAgCi0gICAgSlNW
YWx1ZSBtX2NhbGxUYXJnZXQ7Ci0gICAgRXhlY3V0YWJsZUJhc2UqIG1fZXhlY3V0YWJsZTsKKyAg
ICBDYWxsRWRnZUxpc3QgbV9lZGdlczsKICAgICBib29sIG1fY291bGRUYWtlU2xvd1BhdGg7CiAg
ICAgYm9vbCBtX2lzUHJvdmVkOworICAgIGJvb2wgbV9jYW5UcnVzdENvdW50czsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxWYXJpYW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbFZhcmlhbnQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxWYXJpYW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJDYWxsVmFyaWFudC5oIgorCituYW1lc3BhY2UgSlNDIHsK
Kwordm9pZCBDYWxsVmFyaWFudDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAg
IGlmICghKnRoaXMpIHsKKyAgICAgICAgb3V0LnByaW50KCJudWxsIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgaWYgKEludGVybmFsRnVuY3Rpb24qIGludGVybmFsRnVuY3Rp
b24gPSB0aGlzLT5pbnRlcm5hbEZ1bmN0aW9uKCkpIHsKKyAgICAgICAgb3V0LnByaW50KCJJbnRl
cm5hbEZ1bmN0aW9uOiAiLCBKU1ZhbHVlKGludGVybmFsRnVuY3Rpb24pKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoSlNGdW5jdGlvbiogZnVuY3Rpb24gPSB0aGlzLT5m
dW5jdGlvbigpKSB7CisgICAgICAgIG91dC5wcmludCgiKEZ1bmN0aW9uOiAiLCBKU1ZhbHVlKGZ1
bmN0aW9uKSwgIjsgRXhlY3V0YWJsZTogIiwgKmV4ZWN1dGFibGUoKSwgIikiKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAKKyAgICBvdXQucHJpbnQoIkV4ZWN1dGFibGU6ICIsICpleGVj
dXRhYmxlKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDE2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIENhbGxWYXJpYW50X2gKKyNkZWZpbmUgQ2FsbFZhcmlhbnRfaAorCisj
aW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIENhbGxWYXJpYW50IHsKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCBDYWxsVmFyaWFudChKU0NlbGwqIGNhbGxlZSA9IG51bGxwdHIp
CisgICAgICAgIDogbV9jYWxsZWUoY2FsbGVlKQorICAgIHsKKyAgICB9CisgICAgCisgICAgQ2Fs
bFZhcmlhbnQoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQorICAgICAgICA6IG1fY2Fs
bGVlKGRlbGV0ZWRUb2tlbigpKQorICAgIHsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRv
ciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7IH0KKyAgICAKKyAgICAvLyBJZiB0aGlzIHZh
cmlhbnQgcmVmZXJzIHRvIGEgZnVuY3Rpb24sIGNoYW5nZSBpdCB0byByZWZlciB0byBpdHMgZXhl
Y3V0YWJsZS4KKyAgICBBTFdBWVNfSU5MSU5FIENhbGxWYXJpYW50IGRlc3BlY2lmaWVkQ2xvc3Vy
ZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9jYWxsZWUtPnR5cGUoKSA9PSBKU0Z1bmN0
aW9uVHlwZSkKKyAgICAgICAgICAgIHJldHVybiBDYWxsVmFyaWFudChqc0Nhc3Q8SlNGdW5jdGlv
bio+KG1fY2FsbGVlKS0+ZXhlY3V0YWJsZSgpKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAg
IH0KKyAgICAKKyAgICBKU0NlbGwqIHJhd0NhbGxlZUNlbGwoKSBjb25zdCB7IHJldHVybiBtX2Nh
bGxlZTsgfQorICAgIAorICAgIEludGVybmFsRnVuY3Rpb24qIGludGVybmFsRnVuY3Rpb24oKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SW50ZXJuYWxGdW5jdGlv
bio+KG1fY2FsbGVlKTsKKyAgICB9CisgICAgCisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24oKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KG1f
Y2FsbGVlKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0Nsb3N1cmVDYWxsKCkgY29uc3QgeyBy
ZXR1cm4gISFqc0R5bmFtaWNDYXN0PEV4ZWN1dGFibGVCYXNlKj4obV9jYWxsZWUpOyB9CisgICAg
CisgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
aWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gdGhpcy0+ZnVuY3Rpb24oKSkKKyAgICAgICAgICAg
IHJldHVybiBmdW5jdGlvbi0+ZXhlY3V0YWJsZSgpOworICAgICAgICByZXR1cm4ganNEeW5hbWlj
Q2FzdDxFeGVjdXRhYmxlQmFzZSo+KG1fY2FsbGVlKTsKKyAgICB9CisgICAgCisgICAgSlNDZWxs
KiBub25FeGVjdXRhYmxlQ2FsbGVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCFpc0Nsb3N1cmVDYWxsKCkpOworICAgICAgICByZXR1cm4gbV9jYWxsZWU7CisgICAgfQor
ICAgIAorICAgIEludHJpbnNpYyBpbnRyaW5zaWNGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxl
ID0gdGhpcy0+ZXhlY3V0YWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIGV4ZWN1dGFibGUtPmlu
dHJpbnNpY0ZvcihraW5kKTsKKyAgICAgICAgcmV0dXJuIE5vSW50cmluc2ljOworICAgIH0KKyAg
ICAKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihl
eGVjdXRhYmxlKCkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3Q7CisgICAgCisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9jYWxsZWUgPT0gZGVsZXRlZFRva2VuKCk7CisgICAg
fQorICAgIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDYWxsVmFyaWFudCYgb3RoZXIpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9jYWxsZWUgPT0gb3RoZXIubV9jYWxsZWU7Cisg
ICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDYWxsVmFyaWFudCYgb3RoZXIp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQor
ICAgIAorICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2NhbGxlZSA8IG90aGVyLm1fY2FsbGVlOworICAgIH0K
KyAgICAKKyAgICBib29sIG9wZXJhdG9yPihjb25zdCBDYWxsVmFyaWFudCYgb3RoZXIpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gb3RoZXIgPCAqdGhpczsKKyAgICB9CisgICAgCisgICAg
Ym9vbCBvcGVyYXRvcjw9KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiAhKCp0aGlzIDwgb3RoZXIpOworICAgIH0KKyAgICAKKyAgICBib29sIG9w
ZXJhdG9yPj0oY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG90aGVyIDw9ICp0aGlzOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBoYXNoKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBXVEY6OlB0ckhhc2g8SlNDZWxsKj46Omhhc2go
bV9jYWxsZWUpOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgc3RhdGljIEpTQ2VsbCogZGVs
ZXRlZFRva2VuKCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PEpTQ2VsbCo+KHN0YXRpY19jYXN0PHVp
bnRwdHJfdD4oMSkpOyB9CisgICAgICAgICAgICAgICAgICAgCisgICAgSlNDZWxsKiBtX2NhbGxl
ZTsKK307CisKK3N0cnVjdCBDYWxsVmFyaWFudEhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBo
YXNoKGNvbnN0IENhbGxWYXJpYW50JiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KKyAgICBz
dGF0aWMgYm9vbCBlcXVhbChjb25zdCBDYWxsVmFyaWFudCYgYSwgY29uc3QgQ2FsbFZhcmlhbnQm
IGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBh
cmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKK307CisKK3R5cGVkZWYgVmVjdG9yPENhbGxWYXJp
YW50LCAxPiBDYWxsVmFyaWFudExpc3Q7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3Bh
Y2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwordGVt
cGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpDYWxsVmFyaWFudD4geworICAgIHR5cGVk
ZWYgSlNDOjpDYWxsVmFyaWFudEhhc2ggSGFzaDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBIYXNoVHJhaXRzOwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6OkNh
bGxWYXJpYW50PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OkNhbGxWYXJpYW50PiB7IH07
CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gQ2FsbFZhcmlhbnRfaAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5jcHAJKHJldmlzaW9u
IDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDggKzM4LDggQEAgY29uc3QgY2hhciogZXhpdEtpbmRUb1N0
cmluZyhFeGl0S2luZCBraQogICAgICAgICByZXR1cm4gIlVuc2V0IjsKICAgICBjYXNlIEJhZFR5
cGU6CiAgICAgICAgIHJldHVybiAiQmFkVHlwZSI7Ci0gICAgY2FzZSBCYWRGdW5jdGlvbjoKLSAg
ICAgICAgcmV0dXJuICJCYWRGdW5jdGlvbiI7CisgICAgY2FzZSBCYWRDZWxsOgorICAgICAgICBy
ZXR1cm4gIkJhZENlbGwiOwogICAgIGNhc2UgQmFkRXhlY3V0YWJsZToKICAgICAgICAgcmV0dXJu
ICJCYWRFeGVjdXRhYmxlIjsKICAgICBjYXNlIEJhZENhY2hlOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmgJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw3ICszMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogZW51bSBFeGl0S2luZCA6IHVpbnQ4X3Qgewog
ICAgIEV4aXRLaW5kVW5zZXQsCiAgICAgQmFkVHlwZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2UgYSB0
eXBlIHByZWRpY3Rpb24gd2FzIHdyb25nLgotICAgIEJhZEZ1bmN0aW9uLCAvLyBXZSBleGl0ZWQg
YmVjYXVzZSB3ZSBtYWRlIGFuIGluY29ycmVjdCBhc3N1bXB0aW9uIGFib3V0IHdoYXQgZnVuY3Rp
b24gd2Ugd291bGQgc2VlLgorICAgIEJhZENlbGwsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIG1h
ZGUgYW4gaW5jb3JyZWN0IGFzc3VtcHRpb24gYWJvdXQgd2hhdCBjZWxsIHdlIHdvdWxkIHNlZS4g
VXN1YWxseSB1c2VkIGZvciBmdW5jdGlvbiBjaGVja3MuCiAgICAgQmFkRXhlY3V0YWJsZSwgLy8g
V2UgZXhpdGVkIGJlY2F1c2Ugd2UgbWFkZSBhbiBpbmNvcnJlY3QgYXNzdW1wdGlvbiBhYm91dCB3
aGF0IGV4ZWN1dGFibGUgd2Ugd291bGQgc2VlLgogICAgIEJhZENhY2hlLCAvLyBXZSBleGl0ZWQg
YmVjYXVzZSBhbiBpbmxpbmUgY2FjaGUgd2FzIHdyb25nLgogICAgIEJhZENvbnN0YW50Q2FjaGUs
IC8vIFdlIGV4aXRlZCBiZWNhdXNlIGEgY2FjaGUgb24gYSB3ZWFrIGNvbnN0YW50ICh1c3VhbGx5
IGEgcHJvdG90eXBlKSB3YXMgd3JvbmcuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lv
biAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NjAsMTQgKzE0NjAsNiBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgY2Fz
ZSBDaGVja0V4ZWN1dGFibGU6IHsKLSAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIHRyYWNrIGV4
ZWN1dGFibGVzIGluIEFic3RyYWN0VmFsdWUsIHdoaWNoIHdvdWxkIGFsbG93IHVzIHRvIGdldCBy
aWQgb2YgdGhlc2UgY2hlY2tzCi0gICAgICAgIC8vIG1vcmUgdGhvcm91Z2hseS4gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjIwMAotICAgICAgICAvLyBGSVhNRTog
V2UgY291bGQgZWxpbWluYXRlIHRoZXNlIGVudGlyZWx5IGlmIHdlIGtub3cgdGhlIGV4YWN0IHZh
bHVlIHRoYXQgZmxvd3MgaW50byB0aGlzLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MjAxCi0gICAgICAgIGJyZWFrOwotICAgIH0KLQogICAg
IGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6IHsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBh
YmxlIHRvIHByb3BhZ2F0ZSB0aGUgc3RydWN0dXJlIHNldHMgb2YgY29uc3RhbnRzIChpLmUuIHBy
b3RvdHlwZXMpLgogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpOwpAQCAtMTcyNywxNiArMTcxOSwyOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2Up
OwogICAgICAgICBicmVhazsKICAgICB9CisgICAgICAgIAorICAgIGNhc2UgR2V0RXhlY3V0YWJs
ZTogeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFs
dWUoKTsKKyAgICAgICAgaWYgKHZhbHVlKSB7CisgICAgICAgICAgICBKU0Z1bmN0aW9uKiBmdW5j
dGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZhbHVlKTsKKyAgICAgICAgICAgIGlm
IChmdW5jdGlvbikgeworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsICptX2dyYXBo
LmZyZWV6ZShmdW5jdGlvbi0+ZXhlY3V0YWJsZSgpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBl
KFNwZWNDZWxsT3RoZXIpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgCi0gICAgY2FzZSBD
aGVja0Z1bmN0aW9uOiB7CisgICAgY2FzZSBDaGVja0NlbGw6IHsKICAgICAgICAgSlNWYWx1ZSB2
YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7Ci0gICAgICAgIGlmICh2YWx1
ZSA9PSBub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpKSB7CisgICAgICAgIGlmICh2YWx1ZSA9PSBu
b2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpKSB7CiAgICAgICAgICAgICBtX3N0YXRlLnNldEZv
dW5kQ29uc3RhbnRzKHRydWUpOwogICAgICAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBmaWx0ZXJCeVZhbHVlKG5v
ZGUtPmNoaWxkMSgpLCAqbm9kZS0+ZnVuY3Rpb24oKSk7CisgICAgICAgIGZpbHRlckJ5VmFsdWUo
bm9kZS0+Y2hpbGQxKCksICpub2RlLT5jZWxsT3BlcmFuZCgpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgICAgICAKQEAgLTE5MDIsNiArMTkwNyw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEZvcmNlT1NS
RXhpdDoKKyAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlk
KGZhbHNlKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2Uu
Y3BwCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jh
Y2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODksNiArMzg5
LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgLy8gdGhlbiAtMCBhbmQgMCBhcmUgdHJl
YXRlZCB0aGUgc2FtZS4KICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKS0+bWVyZ2VGbGFn
cyhOb2RlQnl0ZWNvZGVVc2VzQXNOdW1iZXIgfCBOb2RlQnl0ZWNvZGVVc2VzQXNPdGhlcik7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFN3aXRjaENlbGw6CisgICAg
ICAgICAgICAgICAgLy8gVGhlcmUgaXMgY3VycmVudGx5IG5vIHBvaW50IHRvIGJlaW5nIGNsZXZl
ciBoZXJlIHNpbmNlIHRoaXMgaXMgdXNlZCBmb3Igc3dpdGNoaW5nCisgICAgICAgICAgICAgICAg
Ly8gb24gb2JqZWN0cy4KKyAgICAgICAgICAgICAgICBtZXJnZURlZmF1bHRGbGFncyhub2RlKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxv
Y2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxv
Y2suaAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
YXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAgc3RydWN0IEJhc2lj
QmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIE5vZGUqJiBvcGVyYXRvcltdKHNpemVf
dCBpKSB7IHJldHVybiBhdChpKTsgfQogICAgIE5vZGUqIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNv
bnN0IHsgcmV0dXJuIGF0KGkpOyB9CiAgICAgTm9kZSogbGFzdCgpIGNvbnN0IHsgcmV0dXJuIGF0
KHNpemUoKSAtIDEpOyB9CisgICAgTm9kZSogdGFrZUxhc3QoKSB7IHJldHVybiBtX25vZGVzLnRh
a2VMYXN0KCk7IH0KICAgICB2b2lkIHJlc2l6ZShzaXplX3Qgc2l6ZSkgeyBtX25vZGVzLnJlc2l6
ZShzaXplKTsgfQogICAgIHZvaWQgZ3JvdyhzaXplX3Qgc2l6ZSkgeyBtX25vZGVzLmdyb3coc2l6
ZSk7IH0KICAgICAKQEAgLTEwNiw2ICsxMDcsMTMgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZD
b3VudGVkPEJhc2ljQmxvYwogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBj
b25zdDsKICAgICAKKyAgICB2b2lkIGRpZExpbmsoKQorICAgIHsKKyNpZiAhQVNTRVJUX0RJU0FC
TEVECisgICAgICAgIGlzTGlua2VkID0gdHJ1ZTsKKyNlbmRpZgorICAgIH0KKyAgICAKICAgICAv
LyBUaGlzIHZhbHVlIGlzIHVzZWQgaW50ZXJuYWxseSBmb3IgYmxvY2sgbGlua2luZyBhbmQgT1NS
IGVudHJ5LiBJdCBpcyBtb3N0bHkgbWVhbmluZ2xlc3MKICAgICAvLyBmb3Igb3RoZXIgcHVycG9z
ZXMgZHVlIHRvIGlubGluaW5nLgogICAgIHVuc2lnbmVkIGJ5dGVjb2RlQmVnaW47CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2
aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OCwxNCArMTc4LDIwIEBAIHByaXZhdGU6CiAg
ICAgICAgIE5vZGUqIGNhbGxUYXJnZXQsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBDYWxsTGlua1N0YXR1cyk7CiAgICAgdm9pZCBoYW5kbGVDYWxsKGludCByZXN1bHQsIE5vZGVU
eXBlIG9wLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUs
IGludCBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0KTsKICAgICB2b2lk
IGhhbmRsZUNhbGwoSW5zdHJ1Y3Rpb24qIHBjLCBOb2RlVHlwZSBvcCwgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCk7Ci0gICAgdm9pZCBlbWl0RnVuY3Rpb25DaGVja3MoY29uc3QgQ2FsbExpbmtTdGF0
dXMmLCBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQpOworICAgIHZvaWQgZW1pdEZ1bmN0aW9uQ2hlY2tzKENhbGxWYXJpYW50LCBOb2Rl
KiBjYWxsVGFyZ2V0LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENvZGVTcGVjaWFsaXphdGlvbktpbmQp
OworICAgIHZvaWQgdW5kb0Z1bmN0aW9uQ2hlY2tzKENhbGxWYXJpYW50KTsKICAgICB2b2lkIGVt
aXRBcmd1bWVudFBoYW50b21zKGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICB1bnNpZ25lZCBpbmxp
bmluZ0Nvc3QoQ2FsbFZhcmlhbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCk7IC8vIFJldHVybiBVSU5UX01BWCBpZiBpdCdzIG5vdCBhbiBp
bmxpbmluZyBjYW5kaWRhdGUuIEJ5IGNvbnZlbnRpb24sIGludHJpbnNpY3MgaGF2ZSBhIGNvc3Qg
b2YgMS4KICAgICAvLyBIYW5kbGUgaW5saW5pbmcuIFJldHVybiB0cnVlIGlmIGl0IHN1Y2NlZWRl
ZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCi0gICAgYm9vbCBoYW5kbGVJbmxp
bmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IENhbGxM
aW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2luZCk7CisgICAg
Ym9vbCBoYW5kbGVJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJh
bmQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIE5vZGVUeXBlIGNhbGxP
cCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKKyAg
ICBlbnVtIENhbGxlckxpbmthYmlsaXR5IHsgQ2FsbGVyRG9lc05vcm1hbExpbmtpbmcsIENhbGxl
ckxpbmtzTWFudWFsbHkgfTsKKyAgICBib29sIGF0dGVtcHRUb0lubGluZUNhbGwoTm9kZSogY2Fs
bFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVy
T2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZz
ZXQsIElubGluZUNhbGxGcmFtZTo6S2luZCwgQ2FsbGVyTGlua2FiaWxpdHksIFNwZWN1bGF0ZWRU
eXBlIHByZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxpbmluZ0JhbGFuY2UpOworICAgIHZvaWQgaW5s
aW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENhbGxWYXJp
YW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
dW5zaWduZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBDYWxsZXJMaW5rYWJp
bGl0eSk7CisgICAgdm9pZCBjYW5jZWxMaW5raW5nRm9yQmxvY2soSW5saW5lU3RhY2tFbnRyeSos
IEJhc2ljQmxvY2sqKTsgLy8gT25seSB3b3JrcyB3aGVuIHRoZSBnaXZlbiBibG9jayBpcyB0aGUg
bGFzdCBvbmUgdG8gaGF2ZSBiZWVuIGFkZGVkIGZvciB0aGF0IGlubGluZSBzdGFjayBlbnRyeS4K
ICAgICAvLyBIYW5kbGUgaW50cmluc2ljIGZ1bmN0aW9ucy4gUmV0dXJuIHRydWUgaWYgaXQgc3Vj
Y2VlZGVkLCBmYWxzZSBpZiB3ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4KICAgICBib29sIGhhbmRs
ZUludHJpbnNpYyhpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZz
ZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
dGlvbik7CiAgICAgYm9vbCBoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IoaW50IHJlc3VsdE9w
ZXJhbmQsIEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgVHlwZWRBcnJheVR5cGUpOwotICAgIGJvb2wgaGFuZGxlQ29u
c3RhbnRJbnRlcm5hbEZ1bmN0aW9uKGludCByZXN1bHRPcGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9u
KiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNw
ZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOworICAgIGJv
b2wgaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKGludCByZXN1bHRPcGVyYW5kLCBJbnRl
cm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwogICAgIE5vZGUqIGhhbmRsZVB1dEJ5
T2Zmc2V0KE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBO
b2RlKiB2YWx1ZSk7CiAgICAgTm9kZSogaGFuZGxlR2V0QnlPZmZzZXQoU3BlY3VsYXRlZFR5cGUs
IE5vZGUqIGJhc2UsIGNvbnN0IFN0cnVjdHVyZVNldCYsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1i
ZXIsIFByb3BlcnR5T2Zmc2V0LCBOb2RlVHlwZSBvcCA9IEdldEJ5T2Zmc2V0KTsKICAgICB2b2lk
IGhhbmRsZUdldEJ5SWQoCkBAIC02MzcsNiArNjQzLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIAog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKyAgICAKKyAgICB2b2lkIHJlbW92ZUxhc3RO
b2RlRnJvbUdyYXBoKE5vZGVUeXBlIGV4cGVjdGVkTm9kZVR5cGUpCisgICAgeworICAgICAgICBO
b2RlKiBub2RlID0gbV9jdXJyZW50QmxvY2stPnRha2VMYXN0KCk7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG5vZGUtPm9wKCkgPT0gZXhwZWN0ZWROb2RlVHlwZSk7CisgICAgICAgIG1fZ3JhcGgu
bV9hbGxvY2F0b3IuZnJlZShub2RlKTsKKyAgICB9CiAKICAgICB2b2lkIGFkZFZhckFyZ0NoaWxk
KE5vZGUqIGNoaWxkKQogICAgIHsKQEAgLTY0NSw3ICs2NTgsNyBAQCBwcml2YXRlOgogICAgIH0K
ICAgICAKICAgICBOb2RlKiBhZGRDYWxsV2l0aG91dFNldHRpbmdSZXN1bHQoCi0gICAgICAgIE5v
ZGVUeXBlIG9wLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0
LAorICAgICAgICBOb2RlVHlwZSBvcCwgT3BJbmZvIG9wSW5mbywgTm9kZSogY2FsbGVlLCBpbnQg
YXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCwKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljdGlvbikKICAgICB7CiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGNhbGxlZSk7CkBAIC02NTcs
MTUgKzY3MCwxNSBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKGludCBpID0gMCArIGR1bW15VGhp
c0FyZ3VtZW50OyBpIDwgYXJnQ291bnQ7ICsraSkKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxk
KGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpLCByZWdpc3Rlck9mZnNldCkpKTsKIAot
ICAgICAgICByZXR1cm4gYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIG9wLCBPcEluZm8oMCksIE9w
SW5mbyhwcmVkaWN0aW9uKSk7CisgICAgICAgIHJldHVybiBhZGRUb0dyYXBoKE5vZGU6OlZhckFy
Zywgb3AsIG9wSW5mbywgT3BJbmZvKHByZWRpY3Rpb24pKTsKICAgICB9CiAgICAgCiAgICAgTm9k
ZSogYWRkQ2FsbCgKLSAgICAgICAgaW50IHJlc3VsdCwgTm9kZVR5cGUgb3AsIE5vZGUqIGNhbGxl
ZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgICAgIGludCByZXN1bHQs
IE5vZGVUeXBlIG9wLCBPcEluZm8gb3BJbmZvLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwg
aW50IHJlZ2lzdGVyT2Zmc2V0LAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQog
ICAgIHsKICAgICAgICAgTm9kZSogY2FsbCA9IGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdCgK
LSAgICAgICAgICAgIG9wLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCwgcHJlZGlj
dGlvbik7CisgICAgICAgICAgICBvcCwgb3BJbmZvLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rl
ck9mZnNldCwgcHJlZGljdGlvbik7CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHRSZWco
cmVzdWx0KTsKICAgICAgICAgaWYgKHJlc3VsdFJlZy5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBz
ZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdCksIGNhbGwpOwpAQCAtODcxLDggKzg4NCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIFZlY3RvcjxVbmxpbmtlZEJsb2NrPiBtX3VubGlua2VkQmxvY2tzOwog
ICAgICAgICAKICAgICAgICAgLy8gUG90ZW50aWFsIGJsb2NrIGxpbmtpbmcgdGFyZ2V0cy4gTXVz
dCBiZSBzb3J0ZWQgYnkgYnl0ZWNvZGVCZWdpbiwgYW5kCi0gICAgICAgIC8vIGNhbm5vdCBoYXZl
IHR3byBibG9ja3MgdGhhdCBoYXZlIHRoZSBzYW1lIGJ5dGVjb2RlQmVnaW4uIEZvciB0aGlzIHZl
cnkKLSAgICAgICAgLy8gcmVhc29uLCB0aGlzIGlzIG5vdCBlcXVpdmFsZW50IHRvIAorICAgICAg
ICAvLyBjYW5ub3QgaGF2ZSB0d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRlY29kZUJl
Z2luLgogICAgICAgICBWZWN0b3I8QmFzaWNCbG9jayo+IG1fYmxvY2tMaW5raW5nVGFyZ2V0czsK
ICAgICAgICAgCiAgICAgICAgIC8vIElmIHRoZSBjYWxsc2l0ZSdzIGJhc2ljIGJsb2NrIHdhcyBz
cGxpdCBpbnRvIHR3bywgdGhlbiB0aGlzIHdpbGwgYmUKQEAgLTEwMjgsNTMgKzEwNDAsMjcgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCgKICAgICAgICAgLy8gT2RkbHksIHRoaXMg
Y29uZmxhdGVzIGNhbGxzIHRoYXQgaGF2ZW4ndCBleGVjdXRlZCB3aXRoIGNhbGxzIHRoYXQgYmVo
YXZlZCBzdWZmaWNpZW50bHkgcG9seW1vcnBoaWNhbGx5CiAgICAgICAgIC8vIHRoYXQgd2UgY2Fu
bm90IG9wdGltaXplIHRoZW0uCiAgICAgICAgIAotICAgICAgICBhZGRDYWxsKHJlc3VsdCwgb3As
IGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwg
cHJlZGljdGlvbik7CisgICAgICAgIGFkZENhbGwocmVzdWx0LCBvcCwgT3BJbmZvKCksIGNhbGxU
YXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGlj
dGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgbmV4dE9m
ZnNldCA9IG1fY3VycmVudEluZGV4ICsgaW5zdHJ1Y3Rpb25TaXplOworICAgIAorICAgIE9wSW5m
byBjYWxsT3BJbmZvOwogCi0gICAgaWYgKEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2Fs
bExpbmtTdGF0dXMuaW50ZXJuYWxGdW5jdGlvbigpKSB7Ci0gICAgICAgIGlmIChoYW5kbGVDb25z
dGFudEludGVybmFsRnVuY3Rpb24ocmVzdWx0LCBmdW5jdGlvbiwgcmVnaXN0ZXJPZmZzZXQsIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBwcmVkaWN0aW9uLCBzcGVjaWFsaXphdGlvbktpbmQp
KSB7Ci0gICAgICAgICAgICAvLyBUaGlzIHBoYW50b21pbmcgaGFzIHRvIGJlICphZnRlciogdGhl
IGNvZGUgZm9yIHRoZSBpbnRyaW5zaWMsIHRvIHNpZ25pZnkgdGhhdAotICAgICAgICAgICAgLy8g
dGhlIGlucHV0cyBtdXN0IGJlIGtlcHQgYWxpdmUgd2hhdGV2ZXIgZXhpdHMgdGhlIGludHJpbnNp
YyBtYXkgZG8uCi0gICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXQpOwot
ICAgICAgICAgICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBDYW4gb25seSBoYW5kbGUgdGhp
cyB1c2luZyB0aGUgZ2VuZXJpYyBjYWxsIGhhbmRsZXIuCi0gICAgICAgIGFkZENhbGwocmVzdWx0
LCBvcCwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zm
c2V0LCBwcmVkaWN0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAgICAgCi0gICAg
SW50cmluc2ljIGludHJpbnNpYyA9IGNhbGxMaW5rU3RhdHVzLmludHJpbnNpY0ZvcihzcGVjaWFs
aXphdGlvbktpbmQpOwotCi0gICAgSlNGdW5jdGlvbioga25vd25GdW5jdGlvbiA9IG51bGxwdHI7
Ci0gICAgaWYgKGludHJpbnNpYyAhPSBOb0ludHJpbnNpYykgewotICAgICAgICBlbWl0RnVuY3Rp
b25DaGVja3MoY2FsbExpbmtTdGF0dXMsIGNhbGxUYXJnZXQsIHJlZ2lzdGVyT2Zmc2V0LCBzcGVj
aWFsaXphdGlvbktpbmQpOwotICAgICAgICAgICAgCi0gICAgICAgIGlmIChoYW5kbGVJbnRyaW5z
aWMocmVzdWx0LCBpbnRyaW5zaWMsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgcHJlZGljdGlvbikpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgcGhhbnRvbWluZyBo
YXMgdG8gYmUgKmFmdGVyKiB0aGUgY29kZSBmb3IgdGhlIGludHJpbnNpYywgdG8gc2lnbmlmeSB0
aGF0Ci0gICAgICAgICAgICAvLyB0aGUgaW5wdXRzIG11c3QgYmUga2VwdCBhbGl2ZSB3aGF0ZXZl
ciBleGl0cyB0aGUgaW50cmluc2ljIG1heSBkby4KLSAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhh
bnRvbSwgY2FsbFRhcmdldCk7Ci0gICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdp
c3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2lu
ZCk7Ci0gICAgICAgICAgICBpZiAobV9ncmFwaC5jb21waWxhdGlvbigpKQotICAgICAgICAgICAg
ICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZENhbGwoKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoaGFuZGxlSW5saW5pbmcoY2Fs
bFRhcmdldCwgcmVzdWx0LCBjYWxsTGlua1N0YXR1cywgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zmc2V0LCBraW5kKSkgeworICAgIGlmIChoYW5kbGVJ
bmxpbmluZyhjYWxsVGFyZ2V0LCByZXN1bHQsIGNhbGxMaW5rU3RhdHVzLCByZWdpc3Rlck9mZnNl
dCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQsIG9wLCBraW5kLCBwcmVk
aWN0aW9uKSkgewogICAgICAgICBpZiAobV9ncmFwaC5jb21waWxhdGlvbigpKQogICAgICAgICAg
ICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkQ2FsbCgpOwogICAgICAgICBy
ZXR1cm47CiAjaWYgRU5BQkxFKEZUTF9OQVRJVkVfQ0FMTF9JTkxJTklORykKLSAgICB9IGVsc2Ug
aWYgKGlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpICYmIE9wdGlvbnM6Om9wdGltaXplTmF0aXZl
Q2FsbHMoKSkgewotICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxMaW5rU3RhdHVz
LmZ1bmN0aW9uKCk7CisgICAgfSBlbHNlIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSAm
JiBPcHRpb25zOjpvcHRpbWl6ZU5hdGl2ZUNhbGxzKCkgJiYgY2FsbExpbmtTdGF0dXMuc2l6ZSgp
ID09IDEgJiYgIWNhbGxMaW5rU3RhdHVzLmNvdWxkVGFrZVNsb3dQYXRoKCkpIHsKKyAgICAgICAg
Q2FsbFZhcmlhbnQgY2FsbGVlID0gY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVlKCk7CisgICAgICAg
IEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLmZ1bmN0aW9uKCk7CiAgICAgICAgIGlmIChm
dW5jdGlvbiAmJiBmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSkgewotICAgICAgICAgICAgZW1p
dEZ1bmN0aW9uQ2hlY2tzKGNhbGxMaW5rU3RhdHVzLCBjYWxsVGFyZ2V0LCByZWdpc3Rlck9mZnNl
dCwgc3BlY2lhbGl6YXRpb25LaW5kKTsKLSAgICAgICAgICAgIGtub3duRnVuY3Rpb24gPSBmdW5j
dGlvbjsKKyAgICAgICAgICAgIGVtaXRGdW5jdGlvbkNoZWNrcyhjYWxsZWUsIGNhbGxUYXJnZXQs
IHJlZ2lzdGVyT2Zmc2V0LCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgICAgICAgICAgY2FsbE9w
SW5mbyA9IE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShmdW5jdGlvbikpOwogCi0gICAgICAgICAgICBp
ZiAob3AgPT0gQ2FsbCkgCisgICAgICAgICAgICBpZiAob3AgPT0gQ2FsbCkKICAgICAgICAgICAg
ICAgICBvcCA9IE5hdGl2ZUNhbGw7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAg
ICBBU1NFUlQob3AgPT0gQ29uc3RydWN0KTsKQEAgLTEwODMsMTMgKzEwNjksMTEgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCgKICAgICAgICAgfQogI2VuZGlmCiAgICAgfQotICAg
IE5vZGUqIGNhbGwgPSBhZGRDYWxsKHJlc3VsdCwgb3AsIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7Ci0KLSAgICBpZiAo
a25vd25GdW5jdGlvbikgCi0gICAgICAgIGNhbGwtPmdpdmVLbm93bkZ1bmN0aW9uKGtub3duRnVu
Y3Rpb24pOworICAgIAorICAgIGFkZENhbGwocmVzdWx0LCBvcCwgY2FsbE9wSW5mbywgY2FsbFRh
cmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0
aW9uKTsKIH0KIAotdm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdEZ1bmN0aW9uQ2hlY2tzKGNvbnN0
IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgTm9kZSogY2FsbFRhcmdldCwgaW50IHJl
Z2lzdGVyT2Zmc2V0LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjplbWl0RnVuY3Rpb25DaGVja3MoQ2FsbFZhcmlhbnQgY2FsbGVlLCBOb2RlKiBjYWxs
VGFyZ2V0LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkK
IHsKICAgICBOb2RlKiB0aGlzQXJndW1lbnQ7CiAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwp
CkBAIC0xMDk3LDU4ICsxMDgxLDQ4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRGdW5jdGlv
bkNoZWNrcygKICAgICBlbHNlCiAgICAgICAgIHRoaXNBcmd1bWVudCA9IDA7CiAKLSAgICBpZiAo
Y2FsbExpbmtTdGF0dXMuaXNQcm92ZWQoKSkgewotICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20s
IGNhbGxUYXJnZXQsIHRoaXNBcmd1bWVudCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
Ci0gICAgQVNTRVJUKGNhbGxMaW5rU3RhdHVzLmNhbk9wdGltaXplKCkpOwotICAgIAotICAgIGlm
IChKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxMaW5rU3RhdHVzLmZ1bmN0aW9uKCkpCi0gICAg
ICAgIGFkZFRvR3JhcGgoQ2hlY2tGdW5jdGlvbiwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKGZ1bmN0
aW9uKSksIGNhbGxUYXJnZXQsIHRoaXNBcmd1bWVudCk7CisgICAgaWYgKCFjYWxsZWUuaXNDbG9z
dXJlQ2FsbCgpKQorICAgICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKG1fZ3JhcGgu
ZnJlZXplKGNhbGxlZS5mdW5jdGlvbigpKSksIGNhbGxUYXJnZXQsIHRoaXNBcmd1bWVudCk7CiAg
ICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChjYWxsTGlua1N0YXR1cy5leGVjdXRhYmxlKCkpOwot
ICAgICAgICAKLSAgICAgICAgYWRkVG9HcmFwaChDaGVja0V4ZWN1dGFibGUsIE9wSW5mbyhjYWxs
TGlua1N0YXR1cy5leGVjdXRhYmxlKCkpLCBjYWxsVGFyZ2V0LCB0aGlzQXJndW1lbnQpOworICAg
ICAgICBBU1NFUlQoY2FsbGVlLmV4ZWN1dGFibGUoKSk7CisgICAgICAgIGFkZFRvR3JhcGgoQ2hl
Y2tDZWxsLCBPcEluZm8obV9ncmFwaC5mcmVlemUoY2FsbGVlLmV4ZWN1dGFibGUoKSkpLCBhZGRU
b0dyYXBoKEdldEV4ZWN1dGFibGUsIGNhbGxUYXJnZXQpLCB0aGlzQXJndW1lbnQpOwogICAgIH0K
IH0KIAordm9pZCBCeXRlQ29kZVBhcnNlcjo6dW5kb0Z1bmN0aW9uQ2hlY2tzKENhbGxWYXJpYW50
IGNhbGxlZSkKK3sKKyAgICByZW1vdmVMYXN0Tm9kZUZyb21HcmFwaChDaGVja0NlbGwpOworICAg
IGlmIChjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKQorICAgICAgICByZW1vdmVMYXN0Tm9kZUZyb21H
cmFwaChHZXRFeGVjdXRhYmxlKTsKK30KKwogdm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdEFyZ3Vt
ZW50UGhhbnRvbXMoaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICBmb3IgKGludCBpID0g
a2luZCA9PSBDb2RlRm9yQ2FsbCA/IDAgOiAxOyBpIDwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXM7ICsraSkKICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBnZXQodmlydHVhbFJlZ2lzdGVy
Rm9yQXJndW1lbnQoaSwgcmVnaXN0ZXJPZmZzZXQpKSk7CiB9CiAKLWJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFu
ZCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBpbnQgcmVnaXN0ZXJPZmZz
ZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwg
SW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQpCit1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6aW5s
aW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgc3RhdGljIGNvbnN0IGJv
b2wgdmVyYm9zZSA9IGZhbHNlOwogICAgIAotICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3Bl
Y2lhbGl6YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXphdGlvbktpbmRGb3Io
a2luZCk7Ci0gICAgCiAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2coIkNvbnNpZGVy
aW5nIGlubGluaW5nICIsIGNhbGxMaW5rU3RhdHVzLCAiIGludG8gIiwgY3VycmVudENvZGVPcmln
aW4oKSwgIlxuIik7CisgICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nIGlubGluaW5nICIsIGNh
bGxlZSwgIiBpbnRvICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOwogICAgIAotICAgIC8v
IEZpcnN0LCB0aGUgcmVhbGx5IHNpbXBsZSBjaGVja3M6IGRvIHdlIGhhdmUgYW4gYWN0dWFsIEpT
IGZ1bmN0aW9uPwotICAgIGlmICghY2FsbExpbmtTdGF0dXMuZXhlY3V0YWJsZSgpKSB7CisgICAg
RnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY2FsbGVlLmZ1bmN0aW9uRXhlY3V0YWJs
ZSgpOworICAgIGlmICghZXhlY3V0YWJsZSkgewogICAgICAgICBpZiAodmVyYm9zZSkKLSAgICAg
ICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgdGhlcmUgaXMgbm8gZXhlY3V0YWJs
ZS5cbiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGlmIChjYWxsTGlua1N0
YXR1cy5leGVjdXRhYmxlKCktPmlzSG9zdEZ1bmN0aW9uKCkpIHsKLSAgICAgICAgaWYgKHZlcmJv
c2UpCi0gICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIGl0J3MgYSBob3N0
IGZ1bmN0aW9uLlxuIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGRhdGFM
b2coIiAgICBGYWlsaW5nIGJlY2F1c2UgdGhlcmUgaXMgbm8gZnVuY3Rpb24gZXhlY3V0YWJsZS4i
KTsKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgIH0KICAgICAKLSAgICBGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oY2FsbExp
bmtTdGF0dXMuZXhlY3V0YWJsZSgpKTsKLSAgICAKICAgICAvLyBEb2VzIHRoZSBudW1iZXIgb2Yg
YXJndW1lbnRzIHdlJ3JlIHBhc3NpbmcgbWF0Y2ggdGhlIGFyaXR5IG9mIHRoZSB0YXJnZXQ/IFdl
IGN1cnJlbnRseQogICAgIC8vIGlubGluZSBvbmx5IGlmIHRoZSBudW1iZXIgb2YgYXJndW1lbnRz
IHBhc3NlZCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG51bWJlcgogICAgIC8vIGFy
Z3VtZW50cyBleHBlY3RlZC4KICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihleGVjdXRhYmxlLT5w
YXJhbWV0ZXJDb3VudCgpKSArIDEgPiBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykgewogICAg
ICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1
c2Ugb2YgYXJpdHkgbWlzbWF0Y2guXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQogICAgIAogICAgIC8vIERvIHdlIGhhdmUgYSBjb2Rl
IGJsb2NrLCBhbmQgZG9lcyB0aGUgY29kZSBibG9jaydzIHNpemUgbWF0Y2ggdGhlIGhldXJpc3Rp
Y3MvcmVxdWlyZW1lbnRzIGZvcgpAQCAtMTE1NywxOCArMTEzMSwxOCBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgLy8gaWYgd2UgaGFkIGEgc3RhdGljIHBy
b29mIG9mIHdoYXQgd2FzIGJlaW5nIGNhbGxlZDsgdGhpcyBtaWdodCBoYXBwZW4gZm9yIGV4YW1w
bGUgaWYgeW91IGNhbGwgYQogICAgIC8vIGdsb2JhbCBmdW5jdGlvbiwgd2hlcmUgd2F0Y2hwb2lu
dGluZyBnaXZlcyB1cyBzdGF0aWMgaW5mb3JtYXRpb24uIE92ZXJhbGwsIGl0J3MgYSByYXJlIGNh
c2UKICAgICAvLyBiZWNhdXNlIHdlIGV4cGVjdCB0aGF0IGFueSBob3QgY2FsbGVlcyB3b3VsZCBo
YXZlIGFscmVhZHkgYmVlbiBjb21waWxlZC4KLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4
ZWN1dGFibGUtPmJhc2VsaW5lQ29kZUJsb2NrRm9yKHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5iYXNlbGluZUNvZGVCbG9ja0Zvcihr
aW5kKTsKICAgICBpZiAoIWNvZGVCbG9jaykgewogICAgICAgICBpZiAodmVyYm9zZSkKICAgICAg
ICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2Ugbm8gY29kZSBibG9jayBhdmFpbGFi
bGUuXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gVUlOVF9NQVg7
CiAgICAgfQogICAgIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwgPSBpbmxpbmVGdW5j
dGlvbkZvckNhcGFiaWxpdHlMZXZlbCgKLSAgICAgICAgY29kZUJsb2NrLCBzcGVjaWFsaXphdGlv
bktpbmQsIGNhbGxMaW5rU3RhdHVzLmlzQ2xvc3VyZUNhbGwoKSk7CisgICAgICAgIGNvZGVCbG9j
aywga2luZCwgY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSk7CiAgICAgaWYgKCFjYW5JbmxpbmUoY2Fw
YWJpbGl0eUxldmVsKSkgewogICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFM
b2coIiAgICBGYWlsaW5nIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGlzIG5vdCBpbmxpbmVhYmxlLlxu
Iik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAg
IH0KICAgICAKICAgICAvLyBDaGVjayBpZiB0aGUgY2FsbGVyIGlzIGFscmVhZHkgdG9vIGxhcmdl
LiBXZSBkbyB0aGlzIGNoZWNrIGhlcmUgYmVjYXVzZSB0aGF0J3MganVzdApAQCAtMTE3OCw3ICsx
MTUyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgICAg
ICBjb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID0gZmFsc2U7CiAgICAgICAgIGlm
ICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSB0aGUg
Y2FsbGVyIGlzIHRvbyBsYXJnZS5cbiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJldHVybiBVSU5UX01BWDsKICAgICB9CiAgICAgCiAgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxk
IGJlIGJldHRlciBhdCBwcmVkaWN0aW5nIGhvdyBtdWNoIGJsb2F0IHdlIHdpbGwgaW50cm9kdWNl
IGJ5IGlubGluaW5nCkBAIC0xMTk3LDcgKzExNzEsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVJbmxpbmluZyhOb2RlCiAgICAgICAgIGlmIChkZXB0aCA+PSBPcHRpb25zOjptYXhpbXVt
SW5saW5pbmdEZXB0aCgpKSB7CiAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIGRlcHRoIGV4Y2VlZGVkLlxuIik7Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChlbnRyeS0+ZXhlY3V0YWJsZSgpID09IGV4
ZWN1dGFibGUpIHsKQEAgLTEyMDUsMTkgKzExNzksMjYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlSW5saW5pbmcoTm9kZQogICAgICAgICAgICAgaWYgKHJlY3Vyc2lvbiA+PSBPcHRpb25z
OjptYXhpbXVtSW5saW5pbmdSZWN1cnNpb24oKSkgewogICAgICAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIHJl
Y3Vyc2lvbiBkZXRlY3RlZC5cbiIpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CiAgICAgCiAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2coIiAgICBDb21t
aXR0aW5nIHRvIGlubGluaW5nLlxuIik7CisgICAgICAgIGRhdGFMb2coIiAgICBJbmxpbmluZyBz
aG91bGQgYmUgcG9zc2libGUuXG4iKTsKICAgICAKLSAgICAvLyBOb3cgd2Uga25vdyB3aXRob3V0
IGEgZG91YnQgdGhhdCB3ZSBhcmUgY29tbWl0dGVkIHRvIGlubGluaW5nLiBTbyBiZWdpbiB0aGUg
cHJvY2VzcwotICAgIC8vIGJ5IGNoZWNraW5nIHRoZSBjYWxsZWUgKGlmIG5lY2Vzc2FyeSkgYW5k
IG1ha2luZyBzdXJlIHRoYXQgYXJndW1lbnRzIGFuZCB0aGUgY2FsbGVlCi0gICAgLy8gYXJlIGZs
dXNoZWQuCi0gICAgZW1pdEZ1bmN0aW9uQ2hlY2tzKGNhbGxMaW5rU3RhdHVzLCBjYWxsVGFyZ2V0
Tm9kZSwgcmVnaXN0ZXJPZmZzZXQsIHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgLy8gSXQgbWln
aHQgYmUgcG9zc2libGUgdG8gaW5saW5lLgorICAgIHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0
aW9uQ291bnQoKTsKK30KKwordm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2RlKiBj
YWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENhbGxWYXJpYW50IGNhbGxlZSwgaW50
IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVk
IG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBDYWxsZXJMaW5rYWJpbGl0
eSBjYWxsZXJMaW5rYWJpbGl0eSkKK3sKKyAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNp
YWxpemF0aW9uS2luZCA9IElubGluZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtp
bmQpOwogICAgIAorICAgIEFTU0VSVChpbmxpbmluZ0Nvc3QoY2FsbGVlLCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kKSAhPSBVSU5UX01BWCk7CisgICAgCisg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsZWUuZnVuY3Rpb25FeGVjdXRhYmxlKCktPmJh
c2VsaW5lQ29kZUJsb2NrRm9yKHNwZWNpYWxpemF0aW9uS2luZCk7CisKICAgICAvLyBGSVhNRTog
RG9uJ3QgZmx1c2ggY29uc3RhbnRzIQogICAgIAogICAgIGludCBpbmxpbmVDYWxsRnJhbWVTdGFy
dCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0
ZXJPZmZzZXQpKS5vZmZzZXQoKSArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7CkBAIC0x
MjMzLDcgKzEyMTQsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2Rl
CiAgICAgICAgIHJlc3VsdFJlZyA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChyZXN1
bHRSZWcpOwogICAgIAogICAgIElubGluZVN0YWNrRW50cnkgaW5saW5lU3RhY2tFbnRyeSgKLSAg
ICAgICAgdGhpcywgY29kZUJsb2NrLCBjb2RlQmxvY2ssIG1fZ3JhcGgubGFzdEJsb2NrKCksIGNh
bGxMaW5rU3RhdHVzLmZ1bmN0aW9uKCksIHJlc3VsdFJlZywKKyAgICAgICAgdGhpcywgY29kZUJs
b2NrLCBjb2RlQmxvY2ssIG1fZ3JhcGgubGFzdEJsb2NrKCksIGNhbGxlZS5mdW5jdGlvbigpLCBy
ZXN1bHRSZWcsCiAgICAgICAgIChWaXJ0dWFsUmVnaXN0ZXIpaW5saW5lQ2FsbEZyYW1lU3RhcnQs
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBraW5kKTsKICAgICAKICAgICAvLyBUaGlzIGlz
IHdoZXJlIHRoZSBhY3R1YWwgaW5saW5pbmcgcmVhbGx5IGhhcHBlbnMuCkBAIC0xMjQ3LDggKzEy
MjgsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgCiAg
ICAgUkVMRUFTRV9BU1NFUlQoCiAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2Fs
bEZyYW1lLT5pc0Nsb3N1cmVDYWxsCi0gICAgICAgID09IGNhbGxMaW5rU3RhdHVzLmlzQ2xvc3Vy
ZUNhbGwoKSk7Ci0gICAgaWYgKGNhbGxMaW5rU3RhdHVzLmlzQ2xvc3VyZUNhbGwoKSkgeworICAg
ICAgICA9PSBjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKTsKKyAgICBpZiAoY2FsbGVlLmlzQ2xvc3Vy
ZUNhbGwoKSkgewogICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGNhbGxlZVZhcmlhYmxlID0K
ICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6Q2FsbGVlKSwgY2FsbFRh
cmdldE5vZGUsIEltbWVkaWF0ZU5ha2VkU2V0KS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CiAgICAg
ICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogc2NvcGVWYXJpYWJsZSA9CkBAIC0xMjc2LDIwICsxMjU3
LDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxzaXRlQmxvY2tI
ZWFkLT5pc0xpbmtlZCk7CiAgICAgICAgIAotICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQg
dGhlIGNhbGxzaXRlIGJsb2NrIGhlYWQgaXMgbm90IG93bmVkIGJ5IHRoZSBjYWxsZXIuCi0gICAg
ICAgIGlmICghaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgICAgIC8vIEl0J3MgZGVmaW5pdGVseSBvd25lZCBieSB0aGUgY2Fs
bGVyLCBiZWNhdXNlIHRoZSBjYWxsZXIgY3JlYXRlZCBuZXcgYmxvY2tzLgotICAgICAgICAgICAg
Ly8gQXNzZXJ0IHRoYXQgdGhpcyBhbGwgYWRkcyB1cC4KLSAgICAgICAgICAgIEFTU0VSVChpbmxp
bmVTdGFja0VudHJ5Lm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX2Jsb2NrID09
IGlubGluZVN0YWNrRW50cnkubV9jYWxsc2l0ZUJsb2NrSGVhZCk7Ci0gICAgICAgICAgICBBU1NF
UlQoaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9u
ZWVkc05vcm1hbExpbmtpbmcpOwotICAgICAgICAgICAgaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxl
ci0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9uZWVkc05vcm1hbExpbmtpbmcgPSBmYWxzZTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIEl0J3MgZGVmaW5pdGVseSBub3Qgb3du
ZWQgYnkgdGhlIGNhbGxlci4gVGVsbCB0aGUgY2FsbGVyIHRoYXQgaGUgZG9lcyBub3QKLSAgICAg
ICAgICAgIC8vIG5lZWQgdG8gbGluayBoaXMgY2FsbHNpdGUgYmxvY2sgaGVhZCwgYmVjYXVzZSB3
ZSBkaWQgaXQgZm9yIGhpbS4KLSAgICAgICAgICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5Lm1f
Y2FsbGVyLT5tX2NhbGxzaXRlQmxvY2tIZWFkTmVlZHNMaW5raW5nKTsKLSAgICAgICAgICAgIEFT
U0VSVChpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLT5tX2NhbGxzaXRlQmxvY2tIZWFkID09IGlu
bGluZVN0YWNrRW50cnkubV9jYWxsc2l0ZUJsb2NrSGVhZCk7Ci0gICAgICAgICAgICBpbmxpbmVT
dGFja0VudHJ5Lm1fY2FsbGVyLT5tX2NhbGxzaXRlQmxvY2tIZWFkTmVlZHNMaW5raW5nID0gZmFs
c2U7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGNhbGxlckxpbmthYmlsaXR5ID09IENhbGxlckRv
ZXNOb3JtYWxMaW5raW5nKQorICAgICAgICAgICAgY2FuY2VsTGlua2luZ0ZvckJsb2NrKGlubGlu
ZVN0YWNrRW50cnkubV9jYWxsZXIsIGlubGluZVN0YWNrRW50cnkubV9jYWxsc2l0ZUJsb2NrSGVh
ZCk7CiAgICAgICAgIAogICAgICAgICBsaW5rQmxvY2tzKGlubGluZVN0YWNrRW50cnkubV91bmxp
bmtlZEJsb2NrcywgaW5saW5lU3RhY2tFbnRyeS5tX2Jsb2NrTGlua2luZ1RhcmdldHMpOwogICAg
IH0gZWxzZQpAQCAtMTMxMiwxMiArMTI4MSwxMSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVJbmxpbmluZyhOb2RlCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1fY3VycmVudEJs
b2NrID0gbV9ncmFwaC5sYXN0QmxvY2soKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCiAgICAgLy8gSWYgd2UgZ2V0IHRvIHRoaXMgcG9pbnQgdGhl
biBhbGwgYmxvY2tzIG11c3QgZW5kIGluIHNvbWUgc29ydCBvZiB0ZXJtaW5hbHMuCiAgICAgQVNT
RVJUKGxhc3RCbG9jay0+bGFzdCgpLT5pc1Rlcm1pbmFsKCkpOwotICAgIAogCiAgICAgLy8gTmVl
ZCB0byBjcmVhdGUgYSBuZXcgYmFzaWMgYmxvY2sgZm9yIHRoZSBjb250aW51YXRpb24gYXQgdGhl
IGNhbGxlci4KICAgICBSZWZQdHI8QmFzaWNCbG9jaz4gYmxvY2sgPSBhZG9wdFJlZihuZXcgQmFz
aWNCbG9jayhuZXh0T2Zmc2V0LCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIFBOYU4pKTsK
QEAgLTEzMzMsMjAgKzEzMDEsMjI4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGlu
aW5nKE5vZGUKICAgICAgICAgQVNTRVJUKCFub2RlLT50YXJnZXRCbG9jaygpKTsKICAgICAgICAg
bm9kZS0+dGFyZ2V0QmxvY2soKSA9IGJsb2NrLmdldCgpOwogICAgICAgICBpbmxpbmVTdGFja0Vu
dHJ5Lm1fdW5saW5rZWRCbG9ja3NbaV0ubV9uZWVkc0Vhcmx5UmV0dXJuTGlua2luZyA9IGZhbHNl
OwotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICAgICAgYmxvY2tUb0xpbmstPmlzTGlua2VkID0g
dHJ1ZTsKLSNlbmRpZgorICAgICAgICBibG9ja1RvTGluay0+ZGlkTGluaygpOwogICAgIH0KICAg
ICAKICAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrLmdldCgpOwogICAgIEFTU0VSVChtX2lubGlu
ZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmlzRW1wdHkoKSB8fCBt
X2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmxhc3QoKS0+
Ynl0ZWNvZGVCZWdpbiA8IG5leHRPZmZzZXQpOwogICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2Fs
bGVyLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLmdldCgpKSk7
Ci0gICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5h
cHBlbmQoYmxvY2suZ2V0KCkpOworICAgIGlmIChjYWxsZXJMaW5rYWJpbGl0eSA9PSBDYWxsZXJE
b2VzTm9ybWFsTGlua2luZykKKyAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1f
YmxvY2tMaW5raW5nVGFyZ2V0cy5hcHBlbmQoYmxvY2suZ2V0KCkpOwogICAgIG1fZ3JhcGguYXBw
ZW5kQmxvY2soYmxvY2spOwogICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKK30KKwordm9pZCBC
eXRlQ29kZVBhcnNlcjo6Y2FuY2VsTGlua2luZ0ZvckJsb2NrKElubGluZVN0YWNrRW50cnkqIGlu
bGluZVN0YWNrRW50cnksIEJhc2ljQmxvY2sqIGJsb2NrKQoreworICAgIC8vIEl0J3MgcG9zc2li
bGUgdGhhdCB0aGUgY2FsbHNpdGUgYmxvY2sgaGVhZCBpcyBub3Qgb3duZWQgYnkgdGhlIGNhbGxl
ci4KKyAgICBpZiAoIWlubGluZVN0YWNrRW50cnktPm1fdW5saW5rZWRCbG9ja3MuaXNFbXB0eSgp
KSB7CisgICAgICAgIC8vIEl0J3MgZGVmaW5pdGVseSBvd25lZCBieSB0aGUgY2FsbGVyLCBiZWNh
dXNlIHRoZSBjYWxsZXIgY3JlYXRlZCBuZXcgYmxvY2tzLgorICAgICAgICAvLyBBc3NlcnQgdGhh
dCB0aGlzIGFsbCBhZGRzIHVwLgorICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS0+bV91
bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9ibG9jayA9PSBibG9jayk7CisgICAgICAgIEFTU0VSVChp
bmxpbmVTdGFja0VudHJ5LT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX25lZWRzTm9ybWFsTGlu
a2luZyk7CisgICAgICAgIGlubGluZVN0YWNrRW50cnktPm1fdW5saW5rZWRCbG9ja3MubGFzdCgp
Lm1fbmVlZHNOb3JtYWxMaW5raW5nID0gZmFsc2U7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8g
SXQncyBkZWZpbml0ZWx5IG5vdCBvd25lZCBieSB0aGUgY2FsbGVyLiBUZWxsIHRoZSBjYWxsZXIg
dGhhdCBoZSBkb2VzIG5vdAorICAgICAgICAvLyBuZWVkIHRvIGxpbmsgaGlzIGNhbGxzaXRlIGJs
b2NrIGhlYWQsIGJlY2F1c2Ugd2UgZGlkIGl0IGZvciBoaW0uCisgICAgICAgIEFTU0VSVChpbmxp
bmVTdGFja0VudHJ5LT5tX2NhbGxzaXRlQmxvY2tIZWFkTmVlZHNMaW5raW5nKTsKKyAgICAgICAg
QVNTRVJUKGlubGluZVN0YWNrRW50cnktPm1fY2FsbHNpdGVCbG9ja0hlYWQgPT0gYmxvY2spOwor
ICAgICAgICBpbmxpbmVTdGFja0VudHJ5LT5tX2NhbGxzaXRlQmxvY2tIZWFkTmVlZHNMaW5raW5n
ID0gZmFsc2U7CisgICAgfQorfQorCitib29sIEJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9Jbmxp
bmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcmlh
bnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIENh
bGxlckxpbmthYmlsaXR5IGNhbGxlckxpbmthYmlsaXR5LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uLCB1bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlKQoreworICAgIENvZGVTcGVjaWFsaXphdGlv
bktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXphdGlv
bktpbmRGb3Ioa2luZCk7CisgICAgCisgICAgaWYgKCFpbmxpbmluZ0JhbGFuY2UpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24g
PSBjYWxsZWUuaW50ZXJuYWxGdW5jdGlvbigpKSB7CisgICAgICAgIGlmIChoYW5kbGVDb25zdGFu
dEludGVybmFsRnVuY3Rpb24ocmVzdWx0T3BlcmFuZCwgZnVuY3Rpb24sIHJlZ2lzdGVyT2Zmc2V0
LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kKSkgeworICAg
ICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0Tm9kZSk7CisgICAgICAgICAg
ICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgICAgICAgICBpbmxpbmluZ0JhbGFu
Y2UtLTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgCisgICAgSW50cmluc2ljIGludHJpbnNpYyA9IGNhbGxlZS5p
bnRyaW5zaWNGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICBpZiAoaW50cmluc2ljICE9IE5v
SW50cmluc2ljKSB7CisgICAgICAgIGlmIChoYW5kbGVJbnRyaW5zaWMocmVzdWx0T3BlcmFuZCwg
aW50cmluc2ljLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHBy
ZWRpY3Rpb24pKSB7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXRO
b2RlKTsKKyAgICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICAgICAg
ICAgIGlubGluaW5nQmFsYW5jZS0tOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBteUlu
bGluaW5nQ29zdCA9IGlubGluaW5nQ29zdChjYWxsZWUsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgIGlmIChteUlubGluaW5nQ29zdCA+IGlubGlu
aW5nQmFsYW5jZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlubGluZUNhbGwo
Y2FsbFRhcmdldE5vZGUsIHJlc3VsdE9wZXJhbmQsIGNhbGxlZSwgcmVnaXN0ZXJPZmZzZXQsIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zmc2V0LCBraW5kLCBjYWxsZXJMaW5rYWJp
bGl0eSk7CisgICAgaW5saW5pbmdCYWxhbmNlIC09IG15SW5saW5pbmdDb3N0OworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlKiBj
YWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBj
YWxsTGlua1N0YXR1cywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2Fs
bEZyYW1lOjpLaW5kIGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCit7CisgICAgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6
OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5kKTsKKyAgICAKKyAgICBpZiAoIWNhbGxMaW5rU3Rh
dHVzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHVuc2lnbmVkIGlu
bGluaW5nQmFsYW5jZSA9IE9wdGlvbnM6Om1heGltdW1GdW5jdGlvbkZvckNhbGxJbmxpbmVDYW5k
aWRhdGVJbnN0cnVjdGlvbkNvdW50KCk7CisgICAgaWYgKHNwZWNpYWxpemF0aW9uS2luZCA9PSBD
b2RlRm9yQ29uc3RydWN0KQorICAgICAgICBpbmxpbmluZ0JhbGFuY2UgPSBzdGQ6Om1pbihpbmxp
bmluZ0JhbGFuY2UsIE9wdGlvbnM6Om1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGluZUNh
bmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKSk7CisgICAgaWYgKGNhbGxMaW5rU3RhdHVzLmlzQ2xv
c3VyZUNhbGwoKSkKKyAgICAgICAgaW5saW5pbmdCYWxhbmNlID0gc3RkOjptaW4oaW5saW5pbmdC
YWxhbmNlLCBPcHRpb25zOjptYXhpbXVtRnVuY3Rpb25Gb3JDbG9zdXJlQ2FsbElubGluZUNhbmRp
ZGF0ZUluc3RydWN0aW9uQ291bnQoKSk7CisgICAgCisgICAgLy8gRmlyc3QgY2hlY2sgaWYgd2Ug
Y2FuIGF2b2lkIGNyZWF0aW5nIGNvbnRyb2wgZmxvdy4gT3VyIGlubGluZXIgZG9lcyBzb21lIENG
RworICAgIC8vIHNpbXBsaWZpY2F0aW9uIG9uIHRoZSBmbHkgYW5kIHRoaXMgaGVscHMgcmVkdWNl
IGNvbXBpbGUgdGltZXMsIGJ1dCB3ZSBjYW4gb25seSBsZXZlcmFnZQorICAgIC8vIHRoaXMgaW4g
Y2FzZXMgd2hlcmUgd2UgZG9uJ3QgbmVlZCBjb250cm9sIGZsb3cgZGlhbW9uZHMgdG8gY2hlY2sg
dGhlIGNhbGxlZS4KKyAgICBpZiAoIWNhbGxMaW5rU3RhdHVzLmNvdWxkVGFrZVNsb3dQYXRoKCkg
JiYgY2FsbExpbmtTdGF0dXMuc2l6ZSgpID09IDEpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uQ2hl
Y2tzKAorICAgICAgICAgICAgY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVlKCksIGNhbGxUYXJnZXRO
b2RlLCByZWdpc3Rlck9mZnNldCwgc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICAgICAgYm9vbCBy
ZXN1bHQgPSBhdHRlbXB0VG9JbmxpbmVDYWxsKAorICAgICAgICAgICAgY2FsbFRhcmdldE5vZGUs
IHJlc3VsdE9wZXJhbmQsIGNhbGxMaW5rU3RhdHVzWzBdLmNhbGxlZSgpLCByZWdpc3Rlck9mZnNl
dCwKKyAgICAgICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zmc2V0LCBr
aW5kLCBDYWxsZXJEb2VzTm9ybWFsTGlua2luZywgcHJlZGljdGlvbiwKKyAgICAgICAgICAgIGlu
bGluaW5nQmFsYW5jZSk7CisgICAgICAgIGlmICghcmVzdWx0ICYmICFjYWxsTGlua1N0YXR1cy5p
c1Byb3ZlZCgpKQorICAgICAgICAgICAgdW5kb0Z1bmN0aW9uQ2hlY2tzKGNhbGxMaW5rU3RhdHVz
WzBdLmNhbGxlZSgpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAg
Ly8gV2UgbmVlZCB0byBjcmVhdGUgc29tZSBraW5kIG9mIHN3aXRjaCBvdmVyIGNhbGxlZS4gRm9y
IG5vdyB3ZSBvbmx5IGRvIHRoaXMgaWYgd2UgYmVsaWV2ZSB0aGF0CisgICAgLy8gd2UncmUgaW4g
dGhlIHRvcCB0aWVyLiBXZSBoYXZlIHR3byByZWFzb25zIGZvciB0aGlzOiBmaXJzdCwgaXQgcHJv
dmlkZXMgdXMgYW4gb3Bwb3J0dW5pdHkgdG8KKyAgICAvLyBkbyBtb3JlIGRldGFpbGVkIHBvbHl2
YXJpYW50L3BvbHltb3JwaGljIHByb2ZpbGluZzsgYW5kIHNlY29uZCwgaXQgcmVkdWNlcyBjb21w
aWxlIHRpbWVzIGluCisgICAgLy8gdGhlIERGRy4gQW5kIGJ5IHBvbHl2YXJpYW50IHByb2ZpbGlu
ZyB3ZSBtZWFuIHBvbHl2YXJpYW50IHByb2ZpbGluZyBvZiAqdGhpcyogY2FsbC4gTm90ZSB0aGF0
CisgICAgLy8gd2UgY291bGQgaW1wcm92ZSB0aGF0IGFzcGVjdCBvZiB0aGlzIGJ5IGRvaW5nIHBv
bHltb3JwaGljIGlubGluaW5nIGJ1dCBoYXZpbmcgdGhlIHByb2ZpbGluZworICAgIC8vIGFsc28u
IEN1cnJlbnRseSB3ZSBvcHQgYWdhaW5zdCB0aGlzLCBidXQgaXQgY291bGQgYmUgaW50ZXJlc3Rp
bmcuIFRoYXQgd291bGQgcmVxdWlyZSBoYXZpbmcgYQorICAgIC8vIHNlcGFyYXRlIG5vZGUgZm9y
IGNhbGwgZWRnZSBwcm9maWxpbmcuCisgICAgLy8gRklYTUU6IEludHJvZHVjZSB0aGUgbm90aW9u
IG9mIGEgc2VwYXJhdGUgY2FsbCBlZGdlIHByb2ZpbGluZyBub2RlLgorICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYwMzMKKyAgICBpZiAoIWlzRlRMKG1f
Z3JhcGgubV9wbGFuLm1vZGUpIHx8ICFPcHRpb25zOjplbmFibGVQb2x5bW9ycGhpY0NhbGxJbmxp
bmluZygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgYm9vbCBhbGxBcmVDbG9z
dXJlQ2FsbHMgPSB0cnVlOworICAgIGJvb2wgYWxsQXJlRGlyZWN0Q2FsbHMgPSB0cnVlOworICAg
IGZvciAodW5zaWduZWQgaSA9IGNhbGxMaW5rU3RhdHVzLnNpemUoKTsgaS0tOykgeworICAgICAg
ICBpZiAoY2FsbExpbmtTdGF0dXNbaV0uY2FsbGVlKCkuaXNDbG9zdXJlQ2FsbCgpKQorICAgICAg
ICAgICAgYWxsQXJlRGlyZWN0Q2FsbHMgPSBmYWxzZTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgYWxsQXJlQ2xvc3VyZUNhbGxzID0gZmFsc2U7CisgICAgfQorICAgIAorICAgIE5vZGUqIHRo
aW5nVG9Td2l0Y2hPbjsKKyAgICBpZiAoYWxsQXJlRGlyZWN0Q2FsbHMpCisgICAgICAgIHRoaW5n
VG9Td2l0Y2hPbiA9IGNhbGxUYXJnZXROb2RlOworICAgIGVsc2UgaWYgKGFsbEFyZUNsb3N1cmVD
YWxscykKKyAgICAgICAgdGhpbmdUb1N3aXRjaE9uID0gYWRkVG9HcmFwaChHZXRFeGVjdXRhYmxl
LCBjYWxsVGFyZ2V0Tm9kZSk7CisgICAgZWxzZSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgYmUgYWJsZSB0byBoYW5kbGUgdGhpcyBjYXNlLCBidXQgaXQncyB0cmlja3kgYW5kIHdlIGRv
bid0IGtub3cgb2YgY2FzZXMKKyAgICAgICAgLy8gd2hlcmUgaXQgd291bGQgYmUgYmVuZWZpY2lh
bC4gQWxzbywgQ2FsbExpbmtTdGF0dXMgd291bGQgbWFrZSBhbGwgY2FsbGVlcyBhcHBlYXIgbGlr
ZQorICAgICAgICAvLyBjbG9zdXJlIGNhbGxzIGlmIGFueSBjYWxscyB3ZXJlIGNsb3N1cmUgY2Fs
bHMgLSBleGNlcHQgZm9yIGNhbGxzIHRvIGludGVybmFsIGZ1bmN0aW9ucy4KKyAgICAgICAgLy8g
U28gdGhpcyB3aWxsIG9ubHkgYXJpc2UgaWYgc29tZSBjYWxsZWVzIGFyZSBpbnRlcm5hbCBmdW5j
dGlvbnMgYW5kIG90aGVycyBhcmUgY2xvc3VyZXMuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYwMjAKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICAKKyAgICAvLyBUaGlzIG1ha2VzIG1lIHdpc2ggdGhhdCB3ZSB3ZXJlIGluIFNT
QSBhbGwgdGhlIHRpbWUuIFdlIG5lZWQgdG8gcGljayBhIHZhcmlhYmxlIGludG8gd2hpY2ggdG8K
KyAgICAvLyBzdG9yZSB0aGUgY2FsbGVlIHNvIHRoYXQgaXQgd2lsbCBiZSBhY2Nlc3NpYmxlIHRv
IGFsbCBvZiB0aGUgYmxvY2tzIHdlJ3JlIGFib3V0IHRvIGNyZWF0ZS4gV2UKKyAgICAvLyBnZXQg
YXdheSB3aXRoIGRvaW5nIGFuIGltbWVkaWF0ZS1zZXQgaGVyZSBiZWNhdXNlIHdlIHdvdWxkbid0
IGhhdmUgcGVyZm9ybWVkIGFueSBzaWRlIGVmZmVjdHMKKyAgICAvLyB5ZXQuCisgICAgVmlydHVh
bFJlZ2lzdGVyIGNhbGxlZVJlZyhyZWdpc3Rlck9mZnNldCArIEpTU3RhY2s6OkNhbGxlZSk7Cisg
ICAgc2V0RGlyZWN0KGNhbGxlZVJlZywgY2FsbFRhcmdldE5vZGUsIEltbWVkaWF0ZVNldFdpdGhG
bHVzaCk7CisgICAgCisgICAgU3dpdGNoRGF0YSYgZGF0YSA9ICptX2dyYXBoLm1fc3dpdGNoRGF0
YS5hZGQoKTsKKyAgICBkYXRhLmtpbmQgPSBTd2l0Y2hDZWxsOworICAgIGFkZFRvR3JhcGgoU3dp
dGNoLCBPcEluZm8oJmRhdGEpLCB0aGluZ1RvU3dpdGNoT24pOworICAgIAorICAgIEJhc2ljQmxv
Y2sqIG9yaWdpbkJsb2NrID0gbV9jdXJyZW50QmxvY2s7CisgICAgb3JpZ2luQmxvY2stPmRpZExp
bmsoKTsKKyAgICBjYW5jZWxMaW5raW5nRm9yQmxvY2sobV9pbmxpbmVTdGFja1RvcCwgb3JpZ2lu
QmxvY2spOworICAgIAorICAgIC8vIEVhY2ggaW5saW5lZCBjYWxsZWUgd2lsbCBoYXZlIGEgbGFu
ZGluZyBibG9jayB0aGF0IGl0IHJldHVybnMgYXQuIFRoZXkgc2hvdWxkIGFsbCBoYXZlIGp1bXBz
CisgICAgLy8gdG8gdGhlIGNvbnRpbnVhdGlvbiBibG9jaywgd2hpY2ggd2UgY3JlYXRlIGxhc3Qu
CisgICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBsYW5kaW5nQmxvY2tzOworICAgIAorICAgIC8vIFdl
IG1ha2UgZm9yY2UgdGhpcyB0cnVlIGlmIHdlIGdpdmUgdXAgb24gaW5saW5pbmcgYW55IG9mIHRo
ZSBlZGdlcy4KKyAgICBib29sIGNvdWxkVGFrZVNsb3dQYXRoID0gY2FsbExpbmtTdGF0dXMuY291
bGRUYWtlU2xvd1BhdGgoKTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2Fs
bExpbmtTdGF0dXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgUmVmUHRyPEJhc2ljQmxvY2s+IGJs
b2NrID0gYWRvcHRSZWYobmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIG1fbnVtQXJndW1lbnRzLCBt
X251bUxvY2FscywgUE5hTikpOworICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrLmdldCgp
OworICAgICAgICBtX2dyYXBoLmFwcGVuZEJsb2NrKGJsb2NrKTsKKyAgICAgICAgcHJlcGFyZVRv
UGFyc2VCbG9jaygpOworICAgICAgICAKKyAgICAgICAgTm9kZSogbXlDYWxsVGFyZ2V0Tm9kZSA9
IGdldERpcmVjdChjYWxsZWVSZWcpOworICAgICAgICAKKyAgICAgICAgYm9vbCBpbmxpbmluZ1Jl
c3VsdCA9IGF0dGVtcHRUb0lubGluZUNhbGwoCisgICAgICAgICAgICBteUNhbGxUYXJnZXROb2Rl
LCByZXN1bHRPcGVyYW5kLCBjYWxsTGlua1N0YXR1c1tpXS5jYWxsZWUoKSwgcmVnaXN0ZXJPZmZz
ZXQsCisgICAgICAgICAgICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbmV4dE9mZnNldCwg
a2luZCwgQ2FsbGVyTGlua3NNYW51YWxseSwgcHJlZGljdGlvbiwKKyAgICAgICAgICAgIGlubGlu
aW5nQmFsYW5jZSk7CisgICAgICAgIAorICAgICAgICBpZiAoIWlubGluaW5nUmVzdWx0KSB7Cisg
ICAgICAgICAgICAvLyBUaGF0IGZhaWxlZCBzbyB3ZSBsZXQgdGhlIGJsb2NrIGRpZS4gTm90aGlu
ZyBpbnRlcmVzdGluZyBzaG91bGQgaGF2ZSBiZWVuIGFkZGVkIHRvCisgICAgICAgICAgICAvLyB0
aGUgYmxvY2suIFdlIGFsc28gZ2l2ZSB1cCBvbiBpbmxpbmluZyBhbnkgb2YgdGhlIChsZXNzIGZy
ZXF1ZW50KSBjYWxsZWVzLgorICAgICAgICAgICAgQVNTRVJUKG1fY3VycmVudEJsb2NrID09IGJs
b2NrLmdldCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLm1fYmxvY2tzLmxhc3QoKSA9
PSBibG9jayk7CisgICAgICAgICAgICBtX2dyYXBoLmtpbGxCbG9ja0FuZEl0c0NvbnRlbnRzKGJs
b2NrLmdldCgpKTsKKyAgICAgICAgICAgIG1fZ3JhcGgubV9ibG9ja3MucmVtb3ZlTGFzdCgpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBUaGUgZmFjdCB0aGF0IGlubGluaW5nIGZhaWxl
ZCBtZWFucyB3ZSBuZWVkIGEgc2xvdyBwYXRoLgorICAgICAgICAgICAgY291bGRUYWtlU2xvd1Bh
dGggPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIEpTQ2VsbCogdGhpbmdUb0Nhc2VPbjsKKyAgICAgICAgaWYgKGFsbEFyZURpcmVjdENhbGxz
KQorICAgICAgICAgICAgdGhpbmdUb0Nhc2VPbiA9IGNhbGxMaW5rU3RhdHVzW2ldLmNhbGxlZSgp
Lm5vbkV4ZWN1dGFibGVDYWxsZWUoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NF
UlQoYWxsQXJlQ2xvc3VyZUNhbGxzKTsKKyAgICAgICAgICAgIHRoaW5nVG9DYXNlT24gPSBjYWxs
TGlua1N0YXR1c1tpXS5jYWxsZWUoKS5leGVjdXRhYmxlKCk7CisgICAgICAgIH0KKyAgICAgICAg
ZGF0YS5jYXNlcy5hcHBlbmQoU3dpdGNoQ2FzZShtX2dyYXBoLmZyZWV6ZSh0aGluZ1RvQ2FzZU9u
KSwgYmxvY2suZ2V0KCkpKTsKKyAgICAgICAgYWRkVG9HcmFwaChKdW1wKTsKKyAgICAgICAgbV9j
dXJyZW50QmxvY2stPmRpZExpbmsoKTsKKyAgICAgICAgbGFuZGluZ0Jsb2Nrcy5hcHBlbmQobV9j
dXJyZW50QmxvY2spOworICAgIH0KKyAgICAKKyAgICBSZWZQdHI8QmFzaWNCbG9jaz4gc2xvd1Bh
dGhCbG9jayA9IGFkb3B0UmVmKAorICAgICAgICBuZXcgQmFzaWNCbG9jayhVSU5UX01BWCwgbV9u
dW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCBQTmFOKSk7CisgICAgZGF0YS5mYWxsVGhyb3VnaCA9
IEJyYW5jaFRhcmdldChzbG93UGF0aEJsb2NrLmdldCgpKTsKKyAgICBtX2dyYXBoLmFwcGVuZEJs
b2NrKHNsb3dQYXRoQmxvY2spOworICAgIHNsb3dQYXRoQmxvY2stPmRpZExpbmsoKTsKKyAgICBw
cmVwYXJlVG9QYXJzZUJsb2NrKCk7CisgICAgbV9jdXJyZW50QmxvY2sgPSBzbG93UGF0aEJsb2Nr
LmdldCgpOworICAgIE5vZGUqIG15Q2FsbFRhcmdldE5vZGUgPSBnZXREaXJlY3QoY2FsbGVlUmVn
KTsKKyAgICBpZiAoY291bGRUYWtlU2xvd1BhdGgpIHsKKyAgICAgICAgYWRkQ2FsbCgKKyAgICAg
ICAgICAgIHJlc3VsdE9wZXJhbmQsIGNhbGxPcCwgT3BJbmZvKCksIG15Q2FsbFRhcmdldE5vZGUs
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAorICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXQs
IHByZWRpY3Rpb24pOworICAgIH0gZWxzZSB7CisgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tCYWRD
ZWxsKTsKKyAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBteUNhbGxUYXJnZXROb2RlKTsKKyAg
ICAgICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgIH0KKworICAgIGFkZFRvR3Jh
cGgoSnVtcCk7CisgICAgbGFuZGluZ0Jsb2Nrcy5hcHBlbmQobV9jdXJyZW50QmxvY2spOworICAg
IAorICAgIFJlZlB0cjxCYXNpY0Jsb2NrPiBjb250aW51YXRpb25CbG9jayA9IGFkb3B0UmVmKAor
ICAgICAgICBuZXcgQmFzaWNCbG9jayhVSU5UX01BWCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9j
YWxzLCBQTmFOKSk7CisgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhjb250aW51YXRpb25CbG9jayk7
CisgICAgbV9pbmxpbmVTdGFja1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5hcHBlbmQoVW5saW5rZWRC
bG9jayhjb250aW51YXRpb25CbG9jay5nZXQoKSkpOworICAgIHByZXBhcmVUb1BhcnNlQmxvY2so
KTsKKyAgICBtX2N1cnJlbnRCbG9jayA9IGNvbnRpbnVhdGlvbkJsb2NrLmdldCgpOworICAgIAor
ICAgIGZvciAodW5zaWduZWQgaSA9IGxhbmRpbmdCbG9ja3Muc2l6ZSgpOyBpLS07KQorICAgICAg
ICBsYW5kaW5nQmxvY2tzW2ldLT5sYXN0KCktPnRhcmdldEJsb2NrKCkgPSBjb250aW51YXRpb25C
bG9jay5nZXQoKTsKICAgICAKLSAgICAvLyBBdCB0aGlzIHBvaW50IHdlIHJldHVybiBhbmQgY29u
dGludWUgdG8gZ2VuZXJhdGUgY29kZSBmb3IgdGhlIGNhbGxlciwgYnV0Ci0gICAgLy8gaW4gdGhl
IG5ldyBiYXNpYyBibG9jay4KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTY0NSw3ICsxODIx
LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVHlwZWRBcnJheUNvbgogCiBib29sIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oCiAgICAgaW50IHJl
c3VsdE9wZXJhbmQsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgcmVnaXN0ZXJPZmZz
ZXQsCi0gICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBw
cmVkaWN0aW9uLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAg
Ly8gSWYgd2UgZXZlciBmaW5kIHRoYXQgd2UgaGF2ZSBhIGxvdCBvZiBpbnRlcm5hbCBmdW5jdGlv
bnMgdGhhdCB3ZSBzcGVjaWFsaXplIGZvciwKICAgICAvLyB0aGVuIHdlIHNob3VsZCBwcm9iYWJs
eSBoYXZlIHNvbWUgc29ydCBvZiBoYXNodGFibGUgZGlzcGF0Y2gsIG9yIG1heWJlIGV2ZW4KQEAg
LTE2NTQsOCArMTgzMCw2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50SW50
ZXIKICAgICAvLyB3ZSBrbm93IGFib3V0IGlzIHNtYWxsIGVub3VnaCwgdGhhdCBoYXZpbmcganVz
dCBhIGxpbmVhciBjYXNjYWRlIG9mIGlmIHN0YXRlbWVudHMKICAgICAvLyBpcyBnb29kIGVub3Vn
aC4KICAgICAKLSAgICBVTlVTRURfUEFSQU0ocHJlZGljdGlvbik7IC8vIFJlbW92ZSB0aGlzIG9u
Y2Ugd2UgZG8gbW9yZSB0aGluZ3MuCi0gICAgCiAgICAgaWYgKGZ1bmN0aW9uLT5jbGFzc0luZm8o
KSA9PSBBcnJheUNvbnN0cnVjdG9yOjppbmZvKCkpIHsKICAgICAgICAgaWYgKGZ1bmN0aW9uLT5n
bG9iYWxPYmplY3QoKSAhPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjA5LDEzICsyMzgzLDEzIEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIEpT
Q2VsbCogY2FjaGVkRnVuY3Rpb24gPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5qc0NlbGwuZ2V0
KCk7CiAgICAgICAgICAgICBpZiAoIWNhY2hlZEZ1bmN0aW9uIAogICAgICAgICAgICAgICAgIHx8
IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+Y291bGRUYWtlU2xvd0Nhc2UobV9j
dXJyZW50SW5kZXgpCi0gICAgICAgICAgICAgICAgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0
UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkRnVuY3Rpb24pKSB7CisgICAg
ICAgICAgICAgICAgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0
ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2VsbCkpIHsKICAgICAgICAgICAgICAgICBzZXQoVmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBnZXQoVmlydHVhbFJl
Z2lzdGVyKEpTU3RhY2s6OkNhbGxlZSkpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJlZXplKGNhY2hlZEZ1bmN0
aW9uKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoY2FjaGVkRnVuY3Rpb24tPmluaGVyaXRzKEpT
RnVuY3Rpb246OmluZm8oKSkpOwogICAgICAgICAgICAgICAgIE5vZGUqIGFjdHVhbENhbGxlZSA9
IGdldChWaXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6Q2FsbGVlKSk7Ci0gICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChDaGVja0Z1bmN0aW9uLCBPcEluZm8oZnJvemVuKSwgYWN0dWFsQ2FsbGVlKTsK
KyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKGZyb3plbiksIGFj
dHVhbENhbGxlZSk7CiAgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8o
ZnJvemVuKSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0
X2NhbGxlZSk7CkBAIC0yODk3LDcgKzMwNzEsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAvLyBhbHJlYWR5IGduYXJseSBlbm91Z2ggYXMg
aXQgaXMuCiAgICAgICAgICAgICBBU1NFUlQocG9pbnRlcklzRnVuY3Rpb24oY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUuc3BlY2lhbFBvaW50ZXIpKTsKICAgICAgICAgICAgIGFkZFRvR3JhcGgoCi0g
ICAgICAgICAgICAgICAgQ2hlY2tGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICBDaGVja0NlbGws
CiAgICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGguZnJlZXplKHN0YXRpY19jYXN0PEpTQ2Vs
bCo+KGFjdHVhbFBvaW50ZXJGb3IoCiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tU
b3AtPm1fY29kZUJsb2NrLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5zcGVjaWFsUG9pbnRlcikp
KSksCiAgICAgICAgICAgICAgICAgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kKSkpOwpAQCAtMzMyMiw5ICszNDk2LDcgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6bGlua0Jsb2NrKEJhc2ljQmxvYwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgCi0j
aWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIGJsb2NrLT5pc0xpbmtlZCA9IHRydWU7Ci0jZW5kaWYK
KyAgICBibG9jay0+ZGlkTGluaygpOwogfQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxv
Y2tzKFZlY3RvcjxVbmxpbmtlZEJsb2NrPiYgdW5saW5rZWRCbG9ja3MsIFZlY3RvcjxCYXNpY0Js
b2NrKj4mIHBvc3NpYmxlVGFyZ2V0cykKQEAgLTM1NjMsNyArMzczNSwxMSBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAgICAgICAgICAgICAgIC8vIDIpIElm
IHRoZSBieXRlY29kZUJlZ2luIGlzIGVxdWFsIHRvIHRoZSBjdXJyZW50SW5kZXgsIHRoZW4gd2Ug
ZmFpbGVkIHRvIGRvCiAgICAgICAgICAgICAgICAgICAgIC8vICAgIGEgcGVlcGhvbGUgY29hbGVz
Y2luZyBvZiB0aGlzIGJsb2NrIGluIHRoZSBpZiBzdGF0ZW1lbnQgYWJvdmUuIFNvLCB3ZSdyZQog
ICAgICAgICAgICAgICAgICAgICAvLyAgICBnZW5lcmF0aW5nIHN1Ym9wdGltYWwgY29kZSBhbmQg
bGVhdmluZyBtb3JlIHdvcmsgZm9yIHRoZSBDRkcgc2ltcGxpZmllci4KLSAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuaXNFbXB0eSgp
IHx8IG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MubGFzdCgpLm1fYmxvY2stPmJ5
dGVjb2RlQmVnaW4gPCBtX2N1cnJlbnRJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIGlmICgh
bV9pbmxpbmVTdGFja1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxhc3RCZWdpbiA9CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9ibG9j
ay0+Ynl0ZWNvZGVCZWdpbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChsYXN0QmVn
aW4gPT0gVUlOVF9NQVggfHwgbGFzdEJlZ2luIDwgbV9jdXJyZW50SW5kZXgpOworICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5s
aW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2suZ2V0KCkpKTsKICAgICAgICAg
ICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVu
ZChibG9jay5nZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBmaXJzdCBibG9jayBp
cyBkZWZpbml0ZWx5IGFuIE9TUiB0YXJnZXQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE3Mjc5
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDggKzkwLDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnNldENoaWxkMShFZGdlKCkpOwogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b206Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICghbm9kZS0+Y2hpbGQxKCkpCisgICAgICAgICAgICAgICAgICAgIGlmICgh
bm9kZS0+Y2hpbGQxKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxv
Y2F0b3IuZnJlZShub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hp
bGQxKCktPm9wKCkpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBQaGk6CiAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgU2V0QXJndW1lbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw2ICsxNDQs
NyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBG
aWF0SW50NTI6CiAgICAgY2FzZSBNYWtlUm9wZToKICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKKyAg
ICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSkpOwogICAg
ICAgICByZXR1cm47CiAgICAgICAgIApAQCAtMjM5LDEyICsyNDAsOCBAQCB2b2lkIGNsb2JiZXJp
emUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwg
bm9kZS0+YXJpdGhNb2RlKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBjYXNl
IENoZWNrRnVuY3Rpb246Ci0gICAgICAgIGRlZihQdXJlVmFsdWUoQ2hlY2tGdW5jdGlvbiwgQWRq
YWNlbmN5TGlzdChBZGphY2VuY3lMaXN0OjpGaXhlZCwgbm9kZS0+Y2hpbGQxKCkpLCBub2RlLT5m
dW5jdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgY2FzZSBDaGVja0V4
ZWN1dGFibGU6Ci0gICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwgbm9kZS0+ZXhlY3V0YWJsZSgp
KSk7CisgICAgY2FzZSBDaGVja0NlbGw6CisgICAgICAgIGRlZihQdXJlVmFsdWUoQ2hlY2tDZWxs
LCBBZGphY2VuY3lMaXN0KEFkamFjZW5jeUxpc3Q6OkZpeGVkLCBub2RlLT5jaGlsZDEoKSksIG5v
ZGUtPmNlbGxPcGVyYW5kKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNl
IENvbnN0YW50U3RvcmFnZVBvaW50ZXI6CkBAIC0yNjMsNiArMjYwLDcgQEAgdm9pZCBjbG9iYmVy
aXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgU3dpdGNoOgogICAgIGNhc2Ug
VGhyb3c6CiAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6CisgICAgY2FzZSBDaGVja0JhZENlbGw6CiAg
ICAgY2FzZSBSZXR1cm46CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICBjYXNlIENoZWNrVGll
clVwSW5Mb29wOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCShyZXZp
c2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2MywxMyBAQCBlbnVtIFJlZk5vZGVNb2RlIHsKICAgICBE
b250UmVmTm9kZQogfTsKIAorZW51bSBTd2l0Y2hLaW5kIHsKKyAgICBTd2l0Y2hJbW0sCisgICAg
U3dpdGNoQ2hhciwKKyAgICBTd2l0Y2hTdHJpbmcsCisgICAgU3dpdGNoQ2VsbAorfTsKKwogaW5s
aW5lIGJvb2wgdmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZChDb21waWxhdGlvbk1vZGUgbW9kZSA9
IERGR01vZGUpCiB7CiAgICAgcmV0dXJuIE9wdGlvbnM6OnZlcmJvc2VDb21waWxhdGlvbigpIHx8
IE9wdGlvbnM6OmR1bXBHcmFwaEF0RWFjaFBoYXNlKCkgfHwgKGlzRlRMKG1vZGUpICYmIE9wdGlv
bnM6OnZlcmJvc2VGVExDb21waWxhdGlvbigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAx
NzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1Bo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDggKzE0Miw4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICBjYXNlIENoZWNrRnVuY3Rpb246IHsKLSAgICAgICAgICAgICAgICBpZiAobV9zdGF0
ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpICE9IG5vZGUtPmZ1bmN0aW9uKCktPnZh
bHVlKCkpCisgICAgICAgICAgICBjYXNlIENoZWNrQ2VsbDogeworICAgICAgICAgICAgICAgIGlm
IChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCkgIT0gbm9kZS0+Y2VsbE9w
ZXJhbmQoKS0+dmFsdWUoKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOwogICAgICAgICAgICAgICAgIGVsaW1pbmF0
ZWQgPSB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAko
cmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAgICBjYXNlIFB1dEJ5
SWREaXJlY3Q6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKLSAgICBjYXNlIENoZWNrRXhlY3V0
YWJsZToKKyAgICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6CiAg
ICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgR2V0U2NvcGU6CkBAIC0xMDUsNyArMTA1LDcg
QEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0R2xv
YmFsVmFyOgogICAgIGNhc2UgVmFyaWFibGVXYXRjaHBvaW50OgogICAgIGNhc2UgVmFySW5qZWN0
aW9uV2F0Y2hwb2ludDoKLSAgICBjYXNlIENoZWNrRnVuY3Rpb246CisgICAgY2FzZSBDaGVja0Nl
bGw6CiAgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBSZWdF
eHBFeGVjOgogICAgIGNhc2UgUmVnRXhwVGVzdDoKQEAgLTE5Niw2ICsxOTYsNyBAQCBib29sIGRv
ZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXREaXJlY3RQbmFtZToK
ICAgICBjYXNlIEZpYXRJbnQ1MjoKICAgICBjYXNlIEJvb2xlYW5Ub051bWJlcjoKKyAgICBjYXNl
IENoZWNrQmFkQ2VsbDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY2FzZSBDcmVhdGVB
Y3RpdmF0aW9uOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAko
cmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSw5IEBAIHN0YXRpYyBDb21waWxhdGlvblJl
c3VsdCBjb21waWxlSW1wbCgKICAgICAgICAgdm0uZ2V0Q1RJU3R1Yih2aXJ0dWFsQ29uc3RydWN0
VGhhdFByZXNlcnZlc1JlZ3NUaHVua0dlbmVyYXRvcik7CiAgICAgfQogICAgIAorICAgIGlmIChD
YWxsRWRnZUxvZzo6aXNFbmFibGVkKCkpCisgICAgICAgIHZtLmVuc3VyZUNhbGxFZGdlTG9nKCku
cHJvY2Vzc0xvZygpOworICAgIAogICAgIFJlZlB0cjxQbGFuPiBwbGFuID0gYWRvcHRSZWYoCiAg
ICAgICAgIG5ldyBQbGFuKGNvZGVCbG9jaywgcHJvZmlsZWRERkdDb2RlQmxvY2ssIG1vZGUsIG9z
ckVudHJ5Qnl0ZWNvZGVJbmRleCwgbXVzdEhhbmRsZVZhbHVlcykpOwogICAgIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxNzI3
OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MzYsNiArNzM2LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKQogICAgICAg
ICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTd2l0Y2hDZWxsOgorICAgICAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKQorICAgICAg
ICAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgICAgICAvLyBlbHNlIGl0J3MgZmluZSBmb3IgdGhpcyB0byBoYXZlIFVudHlwZWRVc2U7IHdl
IHdpbGwgaGFuZGxlIHRoaXMgYnkganVzdCBtYWtpbmcKKyAgICAgICAgICAgICAgICAvLyBub24t
Y2VsbHMgdGFrZSB0aGUgZGVmYXVsdCBjYXNlLgorICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTg5OCwxMyArOTA0
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAg
IGNhc2UgQ2hlY2tFeGVjdXRhYmxlOiB7CisgICAgICAgIGNhc2UgR2V0RXhlY3V0YWJsZTogewog
ICAgICAgICAgICAgZml4RWRnZTxGdW5jdGlvblVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIENoZWNr
U3RydWN0dXJlOgotICAgICAgICBjYXNlIENoZWNrRnVuY3Rpb246CisgICAgICAgIGNhc2UgQ2hl
Y2tDZWxsOgogICAgICAgICBjYXNlIENoZWNrSGFzSW5zdGFuY2U6CiAgICAgICAgIGNhc2UgQ3Jl
YXRlVGhpczoKICAgICAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6IHsKQEAgLTExNTAsNiArMTE1Niw3
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVGhyb3dSZWZlcmVuY2VFcnJvcjoKICAgICAgICAg
Y2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6CisgICAgICAg
IGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgICAgICBjYXNlIENoZWNrV2F0Y2hkb2dUaW1lcjoKICAg
ICAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2Nh
bDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAx
NzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjksNiArNjksNyBAQCBHcmFwaDo6R3JhcGgoVk0mIHZtLCBQbGFuJiBwbGFu
LCBMb25nTGl2CiAgICAgLCBtX2Zvcm0oTG9hZFN0b3JlKQogICAgICwgbV91bmlmaWNhdGlvblN0
YXRlKExvY2FsbHlVbmlmaWVkKQogICAgICwgbV9yZWZDb3VudFN0YXRlKEV2ZXJ5dGhpbmdJc0xp
dmUpCisgICAgLCBtX3Nob3VsZFByb2ZpbGUoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fcHJvZmls
ZWRCbG9jayk7CiAgICAgCkBAIC0yMjIsMjQgKzIyMywxOSBAQCB2b2lkIEdyYXBoOjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQsIGNvbnN0CiAgICAgICAgIG91dC5wcmludChjb21tYSwgaW5Db250ZXh0
KCpub2RlLT5zdHJ1Y3R1cmUoKSwgY29udGV4dCkpOwogICAgIGlmIChub2RlLT5oYXNUcmFuc2l0
aW9uKCkpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgcG9pbnRlckR1bXBJbkNvbnRleHQobm9k
ZS0+dHJhbnNpdGlvbigpLCBjb250ZXh0KSk7Ci0gICAgaWYgKG5vZGUtPmhhc0Z1bmN0aW9uKCkp
IHsKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiZnVuY3Rpb24oIiwgcG9pbnRlckR1bXAobm9k
ZS0+ZnVuY3Rpb24oKSksICIsICIpOwotICAgICAgICBpZiAobm9kZS0+ZnVuY3Rpb24oKS0+dmFs
dWUoKS5pc0NlbGwoKQotICAgICAgICAgICAgJiYgbm9kZS0+ZnVuY3Rpb24oKS0+dmFsdWUoKS5h
c0NlbGwoKS0+aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkgewotICAgICAgICAgICAgSlNG
dW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG5vZGUtPmZ1bmN0aW9uKCkt
PnZhbHVlKCkuYXNDZWxsKCkpOwotICAgICAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RGdW5j
dGlvbigpKQotICAgICAgICAgICAgICAgIG91dC5wcmludCgiPGhvc3QgZnVuY3Rpb24+Iik7Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgb3V0LnByaW50KEZ1bmN0aW9uRXhlY3V0
YWJsZUR1bXAoZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpKSk7Ci0gICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgb3V0LnByaW50KCI8bm90IEpTRnVuY3Rpb24+Iik7Ci0gICAgICAgIG91dC5wcmlu
dCgiKSIpOwotICAgIH0KLSAgICBpZiAobm9kZS0+aGFzRXhlY3V0YWJsZSgpKSB7Ci0gICAgICAg
IGlmIChub2RlLT5leGVjdXRhYmxlKCktPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5m
bygpKSkKLSAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgImV4ZWN1dGFibGUoIiwgRnVuY3Rp
b25FeGVjdXRhYmxlRHVtcChqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4obm9kZS0+ZXhlY3V0
YWJsZSgpKSksICIpIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG91dC5wcmludChjb21t
YSwgImV4ZWN1dGFibGUobm90IGZ1bmN0aW9uOiAiLCBSYXdQb2ludGVyKG5vZGUtPmV4ZWN1dGFi
bGUoKSksICIpIik7CisgICAgaWYgKG5vZGUtPmhhc0NlbGxPcGVyYW5kKCkpIHsKKyAgICAgICAg
b3V0LnByaW50KGNvbW1hLCBwb2ludGVyRHVtcChub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgp
LmFzQ2VsbCgpKSk7CisgICAgICAgIGlmIChub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpLmlz
Q2VsbCgpKSB7CisgICAgICAgICAgICBDYWxsVmFyaWFudCB2YXJpYW50KG5vZGUtPmNlbGxPcGVy
YW5kKCktPnZhbHVlKCkuYXNDZWxsKCkpOworICAgICAgICAgICAgaWYgKEV4ZWN1dGFibGVCYXNl
KiBleGVjdXRhYmxlID0gdmFyaWFudC5leGVjdXRhYmxlKCkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgICAgICAgICAgICAgb3V0
LnByaW50KGNvbW1hLCAiPGhvc3QgZnVuY3Rpb24+Iik7CisgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBqc0R5bmFtaWNDYXN0
PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpKQorICAgICAgICAgICAgICAgICAgICBv
dXQucHJpbnQoY29tbWEsIEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAoZnVuY3Rpb25FeGVjdXRhYmxl
KSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQo
Y29tbWEsICI8bm9uLWZ1bmN0aW9uIGV4ZWN1dGFibGU+Iik7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KICAgICB9CiAgICAgaWYgKG5vZGUtPmhhc0Z1bmN0aW9uRGVjbEluZGV4KCkpIHsKICAg
ICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbV9jb2RlQmxvY2stPmZ1bmN0
aW9uRGVjbChub2RlLT5mdW5jdGlvbkRlY2xJbmRleCgpKTsKQEAgLTk4NSwxMCArOTgxLDYgQEAg
dm9pZCBHcmFwaDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdgogICAgICAgICAgICAgTm9k
ZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxl
OgotICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRSZWFkT25seVBvaW50
ZXIobm9kZS0+ZXhlY3V0YWJsZSgpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbm9kZS0+c3RydWN0dXJlU2V0KCkuc2l6ZSgpOyBpLS07KQog
ICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlQb2lu
dGVyKG5vZGUtPnN0cnVjdHVyZVNldCgpW2ldKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmgJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtNzYyLDYgKzc2Miw3IEBAIHB1YmxpYzoK
ICAgICBHcmFwaEZvcm0gbV9mb3JtOwogICAgIFVuaWZpY2F0aW9uU3RhdGUgbV91bmlmaWNhdGlv
blN0YXRlOwogICAgIFJlZkNvdW50U3RhdGUgbV9yZWZDb3VudFN0YXRlOworICAgIGJvb2wgbV9z
aG91bGRQcm9maWxlOwogcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGhhbmRsZVN1Y2Nlc3NvcihW
ZWN0b3I8QmFzaWNCbG9jayosIDE2PiYgd29ya2xpc3QsIEJhc2ljQmxvY2sqLCBCYXNpY0Jsb2Nr
KiBzdWNjZXNzb3IpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5jcHAJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNyArMTg0LDcgQEAg
dm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgICAgICAgICAgdGFi
bGUuY3RpT2Zmc2V0c1tqXSA9IHRhYmxlLmN0aURlZmF1bHQ7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaiA9IGRhdGEuY2FzZXMuc2l6ZSgpOyBqLS07KSB7CiAgICAgICAgICAgICBTd2l0Y2hDYXNl
JiBteUNhc2UgPSBkYXRhLmNhc2VzW2pdOwotICAgICAgICAgICAgdGFibGUuY3RpT2Zmc2V0c1tt
eUNhc2UudmFsdWUuc3dpdGNoTG9va3VwVmFsdWUoKSAtIHRhYmxlLm1pbl0gPQorICAgICAgICAg
ICAgdGFibGUuY3RpT2Zmc2V0c1tteUNhc2UudmFsdWUuc3dpdGNoTG9va3VwVmFsdWUoZGF0YS5r
aW5kKSAtIHRhYmxlLm1pbl0gPQogICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubG9jYXRpb25P
ZihtX2Jsb2NrSGVhZHNbbXlDYXNlLnRhcmdldC5ibG9jay0+aW5kZXhdKTsKICAgICAgICAgfQog
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUu
Y3BwCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xh
enlKU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMywzNiBAQCBUcmlTdGF0
ZSBMYXp5SlNWYWx1ZTo6c3RyaWN0RXF1YWwoY29uc3QgCiAgICAgcmV0dXJuIEZhbHNlVHJpU3Rh
dGU7CiB9CiAKK3VpbnRwdHJfdCBMYXp5SlNWYWx1ZTo6c3dpdGNoTG9va3VwVmFsdWUoU3dpdGNo
S2luZCBraW5kKSBjb25zdAoreworICAgIC8vIE5CLiBOb3QgZXZlcnkga2luZCBvZiBKU1ZhbHVl
IHdpbGwgYmUgYWJsZSB0byBnaXZlIHlvdSBhIHN3aXRjaCBsb29rdXAKKyAgICAvLyB2YWx1ZSwg
YW5kIHRoaXMgbWV0aG9kIHdpbGwgYXNzZXJ0LCBvciBkbyBiYWQgdGhpbmdzLCBpZiB5b3UgdXNl
IGl0CisgICAgLy8gZm9yIGEga2luZCBvZiB2YWx1ZSB0aGF0IGNhbid0LgorICAgIHN3aXRjaCAo
bV9raW5kKSB7CisgICAgY2FzZSBLbm93blZhbHVlOgorICAgICAgICBzd2l0Y2ggKGtpbmQpIHsK
KyAgICAgICAgY2FzZSBTd2l0Y2hJbW06CisgICAgICAgICAgICByZXR1cm4gdmFsdWUoKS0+dmFs
dWUoKS5hc0ludDMyKCk7CisgICAgICAgIGNhc2UgU3dpdGNoQ2VsbDoKKyAgICAgICAgICAgIHJl
dHVybiBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSgpLT52YWx1ZSgpLmFzQ2VsbCgpKTsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIGNhc2UgU2luZ2xlQ2hh
cmFjdGVyU3RyaW5nOgorICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgY2FzZSBTd2l0
Y2hDaGFyOgorICAgICAgICAgICAgcmV0dXJuIGNoYXJhY3RlcigpOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCiB2b2lkIExh
enlKU1ZhbHVlOjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBj
b250ZXh0KSBjb25zdAogewogICAgIHN3aXRjaCAobV9raW5kKSB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5oCShyZXZpc2lvbiAxNzI3OTQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVkZSAiREZH
Q29tbW9uLmgiCiAjaW5jbHVkZSAiREZHRnJvemVuVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdJbXBsLmg+CiAKQEAgLTk1LDIxICs5Niw3IEBAIHB1YmxpYzoKICAgICAKICAgICBU
cmlTdGF0ZSBzdHJpY3RFcXVhbChjb25zdCBMYXp5SlNWYWx1ZSYgb3RoZXIpIGNvbnN0OwogICAg
IAotICAgIHVuc2lnbmVkIHN3aXRjaExvb2t1cFZhbHVlKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IC8vIE5CLiBOb3QgZXZlcnkga2luZCBvZiBKU1ZhbHVlIHdpbGwgYmUgYWJsZSB0byBnaXZlIHlv
dSBhIHN3aXRjaCBsb29rdXAKLSAgICAgICAgLy8gdmFsdWUsIGFuZCB0aGlzIG1ldGhvZCB3aWxs
IGFzc2VydCwgb3IgZG8gYmFkIHRoaW5ncywgaWYgeW91IHVzZSBpdAotICAgICAgICAvLyBmb3Ig
YSBraW5kIG9mIHZhbHVlIHRoYXQgY2FuJ3QuCi0gICAgICAgIHN3aXRjaCAobV9raW5kKSB7Ci0g
ICAgICAgIGNhc2UgS25vd25WYWx1ZToKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZSgpLT52YWx1
ZSgpLmFzSW50MzIoKTsKLSAgICAgICAgY2FzZSBTaW5nbGVDaGFyYWN0ZXJTdHJpbmc6Ci0gICAg
ICAgICAgICByZXR1cm4gY2hhcmFjdGVyKCk7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgICAgIH0KLSAgICB9CisgICAgdWludHB0cl90IHN3aXRjaExvb2t1cFZhbHVlKFN3aXRjaEtp
bmQga2luZCkgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7
CiAgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25z
dDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkocmV2aXNpb24gMTcy
Nzk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTEzLDYgKzExMyw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBTd2kKICAgICBjYXNlIFN3aXRjaFN0cmluZzoKICAgICAgICAgb3V0LnByaW50KCJTd2l0
Y2hTdHJpbmciKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU3dpdGNoQ2VsbDoKKyAgICAg
ICAgb3V0LnByaW50KCJTd2l0Y2hDZWxsIik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDEyICsxNTcsNiBAQCBzdHJ1Y3Qg
U3dpdGNoQ2FzZSB7CiAgICAgQnJhbmNoVGFyZ2V0IHRhcmdldDsKIH07CiAKLWVudW0gU3dpdGNo
S2luZCB7Ci0gICAgU3dpdGNoSW1tLAotICAgIFN3aXRjaENoYXIsCi0gICAgU3dpdGNoU3RyaW5n
Ci19OwotCiBzdHJ1Y3QgU3dpdGNoRGF0YSB7CiAgICAgLy8gSW5pdGlhbGl6ZXMgbW9zdCBmaWVs
ZHMgdG8gb2J2aW91c2x5IGludmFsaWQgdmFsdWVzLiBBbnlvbmUKICAgICAvLyBjb25zdHJ1Y3Rp
bmcgdGhpcyBzaG91bGQgbWFrZSBzdXJlIHRvIGluaXRpYWxpemUgZXZlcnl0aGluZyB0aGV5CkBA
IC0xODUsNiArMTc5LDcgQEAgc3RydWN0IFN3aXRjaERhdGEgewogLy8gZGlzdGluZ3Vpc2hlcyBh
biBpbW1lZGlhdGUgdmFsdWUgKHR5cGljYWxseSBhbiBpbmRleCBpbnRvIGEgQ29kZUJsb2NrIGRh
dGEgc3RydWN0dXJlIC0gCiAvLyBhIGNvbnN0YW50IGluZGV4LCBhcmd1bWVudCwgb3IgaWRlbnRp
ZmllcikgZnJvbSBhIE5vZGUqLgogc3RydWN0IE9wSW5mbyB7CisgICAgT3BJbmZvKCkgOiBtX3Zh
bHVlKDApIHsgfQogICAgIGV4cGxpY2l0IE9wSW5mbyhpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUo
c3RhdGljX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkpIHsgfQogICAgIGV4cGxpY2l0IE9wSW5mbyh1
aW50MzJfdCB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7
IH0KICNpZiBPUyhEQVJXSU4pIHx8IFVTRShKU1ZBTFVFNjQpCkBAIC0xMDQ0LDkgKzEwMzksMTEg
QEAgc3RydWN0IE5vZGUgewogICAgICAgICBtX29wSW5mbzIgPSBwcmVkaWN0aW9uOwogICAgIH0K
ICAgICAKLSAgICBib29sIGNhbkJlS25vd25GdW5jdGlvbigpCisgICAgYm9vbCBoYXNDZWxsT3Bl
cmFuZCgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBBbGxv
Y2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6CisgICAgICAgIGNhc2UgQ2hlY2tDZWxsOgogICAgICAg
ICBjYXNlIE5hdGl2ZUNvbnN0cnVjdDoKICAgICAgICAgY2FzZSBOYXRpdmVDYWxsOgogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDU1LDU0ICsxMDUyLDE2IEBAIHN0cnVjdCBOb2RlIHsK
ICAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgaGFzS25vd25GdW5jdGlvbigpCi0gICAgewot
ICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKLSAgICAgICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6Ci0g
ICAgICAgIGNhc2UgTmF0aXZlQ2FsbDoKLSAgICAgICAgICAgIHJldHVybiAoYm9vbCltX29wSW5m
bzsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
fQotICAgIH0KLSAgICAKLSAgICBKU0Z1bmN0aW9uKiBrbm93bkZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChjYW5CZUtub3duRnVuY3Rpb24oKSk7Ci0gICAgICAgIHJldHVybiBiaXR3
aXNlX2Nhc3Q8SlNGdW5jdGlvbio+KG1fb3BJbmZvKTsKLSAgICB9Ci0KLSAgICB2b2lkIGdpdmVL
bm93bkZ1bmN0aW9uKEpTRnVuY3Rpb24qIGNhbGxEYXRhKSAKKyAgICBGcm96ZW5WYWx1ZSogY2Vs
bE9wZXJhbmQoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGNhbkJlS25vd25GdW5jdGlvbigpKTsK
LSAgICAgICAgbV9vcEluZm8gPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihjYWxsRGF0YSk7Ci0g
ICAgfQotCi0gICAgYm9vbCBoYXNGdW5jdGlvbigpCi0gICAgewotICAgICAgICBzd2l0Y2ggKG9w
KCkpIHsKLSAgICAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOgotICAgICAgICBjYXNlIEFsbG9jYXRp
b25Qcm9maWxlV2F0Y2hwb2ludDoKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgRnJvemVuVmFsdWUqIGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChoYXNGdW5j
dGlvbigpKTsKKyAgICAgICAgQVNTRVJUKGhhc0NlbGxPcGVyYW5kKCkpOwogICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxGcm96ZW5WYWx1ZSo+KG1fb3BJbmZvKTsKICAgICB9CiAgICAg
Ci0gICAgYm9vbCBoYXNFeGVjdXRhYmxlKCkKKyAgICB2b2lkIHNldENlbGxPcGVyYW5kKEZyb3pl
blZhbHVlKiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBvcCgpID09IENoZWNrRXhlY3V0
YWJsZTsKLSAgICB9Ci0gICAgCi0gICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUoKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGpzQ2FzdDxFeGVjdXRhYmxlQmFzZSo+KHJlaW50ZXJwcmV0X2Nh
c3Q8SlNDZWxsKj4obV9vcEluZm8pKTsKKyAgICAgICAgQVNTRVJUKGhhc0NlbGxPcGVyYW5kKCkp
OworICAgICAgICBtX29wSW5mbyA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKTsKICAg
ICB9CiAgICAgCiAgICAgYm9vbCBoYXNWYXJpYWJsZVdhdGNocG9pbnRTZXQoKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMTcyNzk0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTMsNyArMTUzLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1h
Y3JvKFB1dEJ5SWRGbHVzaCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVNdXN0R2VuZXJhdGUgfCBO
b2RlQ2xvYmJlcnNXb3JsZCkgXAogICAgIG1hY3JvKFB1dEJ5SWREaXJlY3QsIE5vZGVNdXN0R2Vu
ZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAogICAgIG1hY3JvKENoZWNrU3RydWN0dXJlLCBO
b2RlTXVzdEdlbmVyYXRlKSBcCi0gICAgbWFjcm8oQ2hlY2tFeGVjdXRhYmxlLCBOb2RlTXVzdEdl
bmVyYXRlKSBcCisgICAgbWFjcm8oR2V0RXhlY3V0YWJsZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAg
bWFjcm8oUHV0U3RydWN0dXJlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQWxsb2Nh
dGVQcm9wZXJ0eVN0b3JhZ2UsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0U3RvcmFnZSkg
XAogICAgIG1hY3JvKFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UsIE5vZGVNdXN0R2VuZXJhdGUg
fCBOb2RlUmVzdWx0U3RvcmFnZSkgXApAQCAtMTg2LDcgKzE4Niw4IEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhWYXJpYWJsZVdhdGNocG9pbnQsIE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBtYWNybyhWYXJJbmplY3Rpb25XYXRjaHBvaW50LCBOb2RlTXVzdEdl
bmVyYXRlKSBcCiAgICAgbWFjcm8oRnVuY3Rpb25SZWVudHJ5V2F0Y2hwb2ludCwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAotICAgIG1hY3JvKENoZWNrRnVuY3Rpb24sIE5vZGVNdXN0R2VuZXJhdGUpIFwK
KyAgICBtYWNybyhDaGVja0NlbGwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhDaGVj
a0JhZENlbGwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhBbGxvY2F0aW9uUHJvZmls
ZVdhdGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja0luQm91bmRz
LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2Uu
Y3BwCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Bo
YW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw4ICs5
MiwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5y
ZW1vdmVFZGdlKGktLSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpCisg
ICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9DaGVj
aygpOwogICAgICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcAkocmV2aXNpb24gMTcyNzk0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTI1LDYgKzEyNSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFw
aC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdl
ZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
ICAgICAgICAgfQpAQCAtMTQyLDYgKzE0Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTE0OSw4ICsxNTEsMTAgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
Y2FzZSBIYXJkUGhhbnRvbTogewotICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRy
ZW4uaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNF
bXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZy
ZWUobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlz
aW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNyArMTk2LDggQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAg
ICAgY2FzZSBHZXRHZXR0ZXJTZXR0ZXJCeU9mZnNldDogeworICAgICAgICBjYXNlIEdldEdldHRl
clNldHRlckJ5T2Zmc2V0OgorICAgICAgICBjYXNlIEdldEV4ZWN1dGFibGU6IHsKICAgICAgICAg
ICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihTcGVjQ2VsbE90aGVyKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CkBAIC02NDMsOCArNjQ0LDggQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBGb3JjZU9TUkV4aXQ6CiAgICAgICAgIGNhc2UgU2V0QXJndW1lbnQ6CiAgICAgICAgIGNh
c2UgQ2hlY2tTdHJ1Y3R1cmU6Ci0gICAgICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOgotICAgICAg
ICBjYXNlIENoZWNrRnVuY3Rpb246CisgICAgICAgIGNhc2UgQ2hlY2tDZWxsOgorICAgICAgICBj
YXNlIENoZWNrQmFkQ2VsbDoKICAgICAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgICAgIGNh
c2UgVGVhck9mZkFjdGl2YXRpb246CiAgICAgICAgIGNhc2UgVGVhck9mZkFyZ3VtZW50czoKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZp
c2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0
ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAgICBjYXNl
IFB1dEJ5SWREaXJlY3Q6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKLSAgICBjYXNlIENoZWNr
RXhlY3V0YWJsZToKKyAgICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRCdXR0ZXJm
bHk6CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgQXJyYXlpZnk6CkBAIC0xNzUsNyAr
MTc1LDggQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNh
c2UgUHV0R2xvYmFsVmFyOgogICAgIGNhc2UgVmFyaWFibGVXYXRjaHBvaW50OgogICAgIGNhc2Ug
VmFySW5qZWN0aW9uV2F0Y2hwb2ludDoKLSAgICBjYXNlIENoZWNrRnVuY3Rpb246CisgICAgY2Fz
ZSBDaGVja0NlbGw6CisgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgY2FzZSBBbGxvY2F0aW9u
UHJvZmlsZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBSZWdFeHBFeGVjOgogICAgIGNhc2UgUmVnRXhw
VGVzdDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Njg5LDYgKzY4OSwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2Rl
CiAKICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CiAgICAgCisgICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZENh
bGxMaW5rSW5mbygpOworCisgICAgaWYgKG1faml0LmdyYXBoKCkubV9zaG91bGRQcm9maWxlICYm
ICFtX3N0YXRlLmZvck5vZGUoY2FsbGVlRWRnZSkubV92YWx1ZSkgeworICAgICAgICBtX2ppdC52
bSgpLmNhbGxFZGdlTG9nLT5lbWl0TG9nQ29kZSgKKyAgICAgICAgICAgIG1faml0LCBjYWxsTGlu
a0luZm8tPmNhbGxFZGdlUHJvZmlsZSwgY2FsbGVlLmpzVmFsdWVSZWdzKCkpOworICAgIH0KKyAg
ICAKICAgICBzbG93UGF0aC5hcHBlbmQoYnJhbmNoTm90Q2VsbChjYWxsZWUuanNWYWx1ZVJlZ3Mo
KSkpOwogICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hQdHJXaXRoUGF0Y2goTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBjYWxsZWVQYXlsb2FkR1BSLCB0YXJnZXRUb0NoZWNrKSk7CiAg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjYWxsZWVQYXlsb2FkR1BS
LCBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9zY29wZSkpLCByZXN1bHRQYXlsb2FkR1BS
KTsKQEAgLTcxMyw3ICs3MjAsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2Rl
KiBub2RlCiAgICAgICAgIG1faml0Lm1vdmUoY2FsbGVlUGF5bG9hZEdQUiwgR1BSSW5mbzo6cmVn
VDApOwogICAgICAgICBtX2ppdC5tb3ZlKGNhbGxlZVRhZ0dQUiwgR1BSSW5mbzo6cmVnVDEpOwog
ICAgIH0KLSAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkQ2Fs
bExpbmtJbmZvKCk7CiAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihpbmZvKSwgR1BSSW5mbzo6cmVnVDIpOwogICAgIEpJVENvbXBpbGVyOjpDYWxsIHNsb3dDYWxs
ID0gbV9qaXQubmVhckNhbGwoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MjYsNyArNjI2LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1pc2NT
dHJpY3RFcQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogewot
CiAgICAgYm9vbCBpc0NhbGwgPSBub2RlLT5vcCgpID09IENhbGw7CiAgICAgaWYgKCFpc0NhbGwp
CiAgICAgICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+b3AoKSA9PSBD
b25zdHJ1Y3QpOwpAQCAtNjcwLDYgKzY2OSwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
Q2FsbChOb2RlKiBub2RlCiAKICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7CiAgICAgCisgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBt
X2ppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7CisgICAgCisgICAgaWYgKENhbGxF
ZGdlTG9nOjppc0VuYWJsZWQoKQorICAgICAgICAmJiBtX2ppdC5ncmFwaCgpLm1fc2hvdWxkUHJv
ZmlsZQorICAgICAgICAmJiAhbV9zdGF0ZS5mb3JOb2RlKGNhbGxlZUVkZ2UpLm1fdmFsdWUpIHsK
KyAgICAgICAgbV9qaXQudm0oKS0+Y2FsbEVkZ2VMb2ctPmVtaXRMb2dDb2RlKAorICAgICAgICAg
ICAgbV9qaXQsIGNhbGxMaW5rSW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBKU1ZhbHVlUmVncyhjYWxs
ZWVHUFIpKTsKKyAgICB9CisKICAgICBzbG93UGF0aCA9IG1faml0LmJyYW5jaFB0cldpdGhQYXRj
aChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxlZUdQUiwgdGFyZ2V0VG9DaGVjaywgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoMCkpOwogCiAgICAgbV9qaXQubG9hZFB0cihNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhjYWxsZWVHUFIsIE9CSkVDVF9PRkZTRVRPRihKU0Z1bmN0aW9u
LCBtX3Njb3BlKSksIHJlc3VsdEdQUik7CkBAIC02ODIsNyArNjkwLDYgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgIHNsb3dQYXRoLmxpbmsoJm1faml0KTsK
ICAgICAKICAgICBtX2ppdC5tb3ZlKGNhbGxlZUdQUiwgR1BSSW5mbzo6cmVnVDApOyAvLyBDYWxs
ZWUgbmVlZHMgdG8gYmUgaW4gcmVnVDAKLSAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9
IG1faml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKICAgICBtX2ppdC5tb3ZlKE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86OnJlZ1Qy
KTsgLy8gTGluayBpbmZvIG5lZWRzIHRvIGJlIGluIHJlZ1QyCiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgc2xvd0NhbGwgPSBtX2ppdC5uZWFyQ2FsbCgpOwogICAgIApAQCAtMzc3OCwxOCArMzc4NSwy
MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNv
bXBpbGVHZXRBcnJheUxlbmd0aChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAg
IGNhc2UgQ2hlY2tGdW5jdGlvbjogewotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmdW5j
dGlvbih0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
RnVuY3Rpb24sIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGZ1bmN0aW9uLmdwcigpKSwgbm9k
ZS0+Y2hpbGQxKCksIG1faml0LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBm
dW5jdGlvbi5ncHIoKSwgbm9kZS0+ZnVuY3Rpb24oKS0+dmFsdWUoKS5hc0NlbGwoKSkpOworICAg
IGNhc2UgQ2hlY2tDZWxsOiB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGNlbGwodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZENlbGwsIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGNlbGwuZ3ByKCkpLCBub2RlLT5jaGlsZDEoKSwgbV9q
aXQuYnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGNlbGwuZ3ByKCksIG5vZGUt
PmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuYXNDZWxsKCkpKTsKICAgICAgICAgbm9SZXN1bHQobm9k
ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBDaGVja0V4ZWN1
dGFibGU6IHsKKyAgICBjYXNlIEdldEV4ZWN1dGFibGU6IHsKICAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBzcGVjdWxh
dGVDZWxsVHlwZShub2RlLT5jaGlsZDEoKSwgZnVuY3Rpb24uZ3ByKCksIFNwZWNGdW5jdGlvbiwg
SlNGdW5jdGlvblR5cGUpOwotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZEV4ZWN1dGFibGUs
IEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGZ1bmN0aW9uLmdwcigpKSwgbm9kZS0+Y2hpbGQx
KCksIG1faml0LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxl
cjo6QWRkcmVzcyhmdW5jdGlvbi5ncHIoKSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxl
KCkpLCBub2RlLT5leGVjdXRhYmxlKCkpKTsKLSAgICAgICAgbm9SZXN1bHQobm9kZSk7CisgICAg
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGZ1bmN0aW9uKTsKKyAgICAgICAg
R1BSUmVnIGZ1bmN0aW9uR1BSID0gZnVuY3Rpb24uZ3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1
bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIHNwZWN1bGF0ZUNlbGxUeXBlKG5vZGUtPmNo
aWxkMSgpLCBmdW5jdGlvbkdQUiwgU3BlY0Z1bmN0aW9uLCBKU0Z1bmN0aW9uVHlwZSk7CisgICAg
ICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoZnVuY3Rpb25HUFIsIEpTRnVu
Y3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgY2VsbFJl
c3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApA
QCAtNDk4MCw3ICs0OTkwLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAgICBjYXNlIE11bHRpUHV0QnlPZmZz
ZXQ6CiAgICAgY2FzZSBGaWF0SW50NTI6Ci0gICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgp
LCBub2RlLCAiVW5leHBlY3RlZCBGVEwgbm9kZSIpOworICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgor
ICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwgIlVuZXhwZWN0ZWQgbm9kZSIp
OwogICAgICAgICBicmVhazsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTM1NCw2ICs1MzU0LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2go
Tm9kZSogbm8KICAgICBjYXNlIFN3aXRjaFN0cmluZzogewogICAgICAgICBlbWl0U3dpdGNoU3Ry
aW5nKG5vZGUsIGRhdGEpOwogICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2UgU3dpdGNo
Q2VsbDogeworICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwgIkJhZCBzd2l0
Y2gga2luZCIpOworICAgICAgICByZXR1cm47CiAgICAgfSB9CiAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Ry
dWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAx
NzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsMTAgKzYyLDYgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAg
ICAgICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOgotICAgICAgICAgICAgICAgICAgICByZWdpc3Rl
clN0cnVjdHVyZShub2RlLT5leGVjdXRhYmxlKCktPnN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY2FzZSBD
aGVja1N0cnVjdHVyZToKICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmVzKG5v
ZGUtPnN0cnVjdHVyZVNldCgpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJ
bmplY3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYxLDYgKzYxLDggQEAgcHVibGljOgogICAgICAgICBpZiAoIU9wdGlvbnM6OmVuYWJsZU9T
UkVudHJ5VG9GVEwoKSkKICAgICAgICAgICAgIGxldmVsID0gRlRMOjpDYW5Db21waWxlOwogICAg
ICAgICAKKyAgICAgICAgbV9ncmFwaC5tX3Nob3VsZFByb2ZpbGUgPSB0cnVlOworICAgICAgICAK
ICAgICAgICAgSW5zZXJ0aW9uU2V0IGluc2VydGlvblNldChtX2dyYXBoKTsKICAgICAgICAgZm9y
IChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4
LS07KSB7CiAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxv
Y2tJbmRleCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNw
cAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxp
ZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMCw3ICsyMDAsOCBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbWF5RXhpdCht
X2dyYXBoLCBub2RlKSB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdC5pc1NldCgpKTsKICAgICAgICAg
ICAgICAgICBWQUxJREFURSgobm9kZSksICFub2RlLT5oYXNTdHJ1Y3R1cmUoKSB8fCAhIW5vZGUt
PnN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFub2RlLT5o
YXNGdW5jdGlvbigpIHx8IG5vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkuaXNGdW5jdGlvbigpKTsK
KyAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFub2RlLT5oYXNDZWxsT3BlcmFuZCgp
IHx8IG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuaXNDZWxsKCkpOworICAgICAgICAgICAg
ICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhhc0NlbGxPcGVyYW5kKCkgfHwgISFub2RlLT5j
ZWxsT3BlcmFuZCgpLT52YWx1ZSgpKTsKICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgaWYgKCEobm9kZS0+ZmxhZ3MoKSAmIE5vZGVIYXNWYXJBcmdzKSkgewogICAgICAgICAgICAg
ICAgICAgICBpZiAoIW5vZGUtPmNoaWxkMigpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dhdGNocG9p
bnRDb2xsZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTQsNyArMTE0LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQWxs
b2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OgotICAgICAgICAgICAgYWRkTGF6aWx5KGpzQ2FzdDxK
U0Z1bmN0aW9uKj4obV9ub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpKS0+YWxsb2NhdGlvblByb2Zp
bGVXYXRjaHBvaW50U2V0KCkpOworICAgICAgICAgICAgYWRkTGF6aWx5KGpzQ2FzdDxKU0Z1bmN0
aW9uKj4obV9ub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpKS0+YWxsb2NhdGlvblByb2ZpbGVX
YXRjaHBvaW50U2V0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAg
ICAgY2FzZSBWYXJpYWJsZVdhdGNocG9pbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwNCw3ICsxMDQsOCBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSog
CiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAgIGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6CiAg
ICAgY2FzZSBTdHJpbmdDaGFyQXQ6Ci0gICAgY2FzZSBDaGVja0Z1bmN0aW9uOgorICAgIGNhc2Ug
Q2hlY2tDZWxsOgorICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgIGNhc2UgU3RyaW5nQ2hhckNv
ZGVBdDoKICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgUmVhbGxv
Y2F0ZVByb3BlcnR5U3RvcmFnZToKQEAgLTEyNiw3ICsxMjcsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0
eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVy
OgogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKLSAgICBjYXNlIENo
ZWNrRXhlY3V0YWJsZToKKyAgICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRTY29w
ZToKICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDoKICAgICBjYXNlIENoZWNr
QXJndW1lbnRzTm90Q3JlYXRlZDoKQEAgLTMyNiw2ICszMjcsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0
eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgICAgIHN3aXRjaCAobm9kZS0+c3dpdGNoRGF0
YSgpLT5raW5kKSB7CiAgICAgICAgIGNhc2UgU3dpdGNoSW1tOgogICAgICAgICBjYXNlIFN3aXRj
aENoYXI6CisgICAgICAgIGNhc2UgU3dpdGNoQ2VsbDoKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkocmV2
aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
TExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDYgQEAgTk9fUkVUVVJOX0RVRV9U
T19DUkFTSCBzdGF0aWMgdm9pZCBmdGxVbgogTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBzdGF0aWMg
dm9pZCBmdGxVbnJlYWNoYWJsZSgKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQmxvY2tJbmRl
eCBibG9ja0luZGV4LCB1bnNpZ25lZCBub2RlSW5kZXgpCiB7Ci0gICAgCiAgICAgZGF0YUxvZygi
Q3Jhc2hpbmcgaW4gdGhvdWdodC10by1iZS11bnJlYWNoYWJsZSBGVEwtZ2VuZXJhdGVkIGNvZGUg
Zm9yICIsIHBvaW50ZXJEdW1wKGNvZGVCbG9jayksICIgYXQgYmFzaWMgYmxvY2sgIyIsIGJsb2Nr
SW5kZXgpOwogICAgIGlmIChub2RlSW5kZXggIT0gVUlOVF9NQVgpCiAgICAgICAgIGRhdGFMb2co
Iiwgbm9kZSBAIiwgbm9kZUluZGV4KTsKQEAgLTE1MywxMSArMTUyLDE3IEBAIHB1YmxpYzoKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBibG9ja0luZGV4ID0gZGVwdGhGaXJzdC5zaXplKCk7IGJsb2Nr
SW5kZXgtLTsgKSB7CiAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IGRlcHRoRmlyc3Rb
YmxvY2tJbmRleF07CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIG5vZGVJbmRleCA9IGJsb2Nr
LT5zaXplKCk7IG5vZGVJbmRleC0tOyApIHsKLSAgICAgICAgICAgICAgICBOb2RlKiBtX25vZGUg
PSBibG9jay0+YXQobm9kZUluZGV4KTsKLSAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5oYXNL
bm93bkZ1bmN0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0
KG5vZGVJbmRleCk7CisgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAg
ICAgICAgICAgICAgY2FzZSBOYXRpdmVDYWxsOgorICAgICAgICAgICAgICAgIGNhc2UgTmF0aXZl
Q29uc3RydWN0OiB7CiAgICAgICAgICAgICAgICAgICAgIGludCBudW1BcmdzID0gbV9ub2RlLT5u
dW1DaGlsZHJlbigpOwogICAgICAgICAgICAgICAgICAgICBpZiAobnVtQXJncyA+IG1heE51bWJl
ck9mQXJndW1lbnRzKQogICAgICAgICAgICAgICAgICAgICAgICAgbWF4TnVtYmVyT2ZBcmd1bWVu
dHMgPSBudW1BcmdzOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00NjgsMTEg
KzQ3MywxNCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgICAg
ICAgICAgY29tcGlsZUNoZWNrU3RydWN0dXJlKCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBDaGVja0Z1bmN0aW9uOgotICAgICAgICAgICAgY29tcGlsZUNoZWNrRnVuY3Rpb24o
KTsKKyAgICAgICAgY2FzZSBDaGVja0NlbGw6CisgICAgICAgICAgICBjb21waWxlQ2hlY2tDZWxs
KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDaGVja0JhZENlbGw6CisgICAg
ICAgICAgICBjb21waWxlQ2hlY2tCYWRDZWxsKCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6Ci0gICAgICAgICAgICBjb21waWxlQ2hlY2tFeGVjdXRh
YmxlKCk7CisgICAgICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKKyAgICAgICAgICAgIGNvbXBpbGVH
ZXRFeGVjdXRhYmxlKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheWlm
eVRvU3RydWN0dXJlOgogICAgICAgICAgICAgY29tcGlsZUFycmF5aWZ5VG9TdHJ1Y3R1cmUoKTsK
QEAgLTE3NDMsMjYgKzE3NTEsMjUgQEAgcHJpdmF0ZToKICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
Y29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAgICAgfQogICAgIAotICAgIHZvaWQgY29tcGlsZUNo
ZWNrRnVuY3Rpb24oKQorICAgIHZvaWQgY29tcGlsZUNoZWNrQ2VsbCgpCiAgICAgewogICAgICAg
ICBMVmFsdWUgY2VsbCA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIAogICAg
ICAgICBzcGVjdWxhdGUoCi0gICAgICAgICAgICBCYWRGdW5jdGlvbiwganNWYWx1ZVZhbHVlKGNl
bGwpLCBtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSwKLSAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFs
KGNlbGwsIHdlYWtQb2ludGVyKG1fbm9kZS0+ZnVuY3Rpb24oKS0+dmFsdWUoKS5hc0NlbGwoKSkp
KTsKKyAgICAgICAgICAgIEJhZENlbGwsIGpzVmFsdWVWYWx1ZShjZWxsKSwgbV9ub2RlLT5jaGls
ZDEoKS5ub2RlKCksCisgICAgICAgICAgICBtX291dC5ub3RFcXVhbChjZWxsLCB3ZWFrUG9pbnRl
cihtX25vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuYXNDZWxsKCkpKSk7CiAgICAgfQogICAg
IAotICAgIHZvaWQgY29tcGlsZUNoZWNrRXhlY3V0YWJsZSgpCisgICAgdm9pZCBjb21waWxlQ2hl
Y2tCYWRDZWxsKCkKKyAgICB7CisgICAgICAgIHRlcm1pbmF0ZShCYWRDZWxsKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBjb21waWxlR2V0RXhlY3V0YWJsZSgpCiAgICAgewogICAgICAgICBMVmFs
dWUgY2VsbCA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIAogICAgICAgICBz
cGVjdWxhdGVGdW5jdGlvbihtX25vZGUtPmNoaWxkMSgpLCBjZWxsKTsKLSAgICAgICAgCi0gICAg
ICAgIHNwZWN1bGF0ZSgKLSAgICAgICAgICAgIEJhZEV4ZWN1dGFibGUsIGpzVmFsdWVWYWx1ZShj
ZWxsKSwgbV9ub2RlLT5jaGlsZDEoKS5ub2RlKCksCi0gICAgICAgICAgICBtX291dC5ub3RFcXVh
bCgKLSAgICAgICAgICAgICAgICBtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNGdW5jdGlv
bl9leGVjdXRhYmxlKSwKLSAgICAgICAgICAgICAgICB3ZWFrUG9pbnRlcihtX25vZGUtPmV4ZWN1
dGFibGUoKSkpKTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkUHRyKGNlbGwsIG1faGVh
cHMuSlNGdW5jdGlvbl9leGVjdXRhYmxlKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGls
ZUFycmF5aWZ5VG9TdHJ1Y3R1cmUoKQpAQCAtMzY3Myw5ICszNjgwLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgaW50IG51bVBhc3NlZEFyZ3MgPSBtX25vZGUtPm51bUNoaWxkcmVuKCkgLSAxOwogICAg
ICAgICBpbnQgbnVtQXJncyA9IG51bVBhc3NlZEFyZ3MgKyBkdW1teVRoaXNBcmd1bWVudDsKIAot
ICAgICAgICBBU1NFUlQobV9ub2RlLT5oYXNLbm93bkZ1bmN0aW9uKCkpOwotCi0gICAgICAgIEpT
RnVuY3Rpb24qIGtub3duRnVuY3Rpb24gPSBtX25vZGUtPmtub3duRnVuY3Rpb24oKTsKKyAgICAg
ICAgSlNGdW5jdGlvbioga25vd25GdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4obV9ub2Rl
LT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpLmFzQ2VsbCgpKTsKICAgICAgICAgTmF0aXZlRnVuY3Rp
b24gZnVuY3Rpb24gPSBrbm93bkZ1bmN0aW9uLT5uYXRpdmVGdW5jdGlvbigpOwogCiAgICAgICAg
IERsX2luZm8gaW5mbzsKQEAgLTM5MTgsMTAgKzM5MjMsMzcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgY2FzZSBTd2l0Y2hTdHJp
bmc6CisgICAgICAgIGNhc2UgU3dpdGNoU3RyaW5nOiB7CiAgICAgICAgICAgICBERkdfQ1JBU0go
bV9ncmFwaCwgbV9ub2RlLCAiVW5pbXBsZW1lbnRlZCIpOwotICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNl
IFN3aXRjaENlbGw6IHsKKyAgICAgICAgICAgIExWYWx1ZSBjZWxsOworICAgICAgICAgICAgc3dp
dGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgICAgICAgICAgY2FzZSBDZWxs
VXNlOiB7CisgICAgICAgICAgICAgICAgY2VsbCA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgICAgICAgICBMVmFsdWUg
dmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIExC
YXNpY0Jsb2NrIGNlbGxDYXNlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJTd2l0Y2gvU3dpdGNo
Q2VsbCBjZWxsIGNhc2UiKSk7CisgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAg
ICAgICAgICAgICAgICBpc0NlbGwodmFsdWUpLCB1bnN1cmUoY2VsbENhc2UpLCB1bnN1cmUobG93
QmxvY2soZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spKSk7CisgICAgICAgICAgICAgICAgbV9vdXQu
YXBwZW5kVG8oY2VsbENhc2UpOworICAgICAgICAgICAgICAgIGNlbGwgPSB2YWx1ZTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9k
ZSwgIkJhZCB1c2Uga2luZCIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgYnVpbGRTd2l0Y2gobV9ub2RlLT5zd2l0Y2hE
YXRhKCksIG1fb3V0LmludFB0ciwgY2VsbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0gfQogICAgICAgICAKICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkJhZCBz
d2l0Y2gga2luZCIpOwogICAgIH0KQEAgLTUxODYsNyArNTIxOCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIFZlY3RvcjxTd2l0Y2hDYXNlPiBjYXNlczsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGRhdGEtPmNhc2VzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBjYXNlcy5hcHBl
bmQoU3dpdGNoQ2FzZSgKLSAgICAgICAgICAgICAgICBjb25zdEludCh0eXBlLCBkYXRhLT5jYXNl
c1tpXS52YWx1ZS5zd2l0Y2hMb29rdXBWYWx1ZSgpKSwKKyAgICAgICAgICAgICAgICBjb25zdElu
dCh0eXBlLCBkYXRhLT5jYXNlc1tpXS52YWx1ZS5zd2l0Y2hMb29rdXBWYWx1ZShkYXRhLT5raW5k
KSksCiAgICAgICAgICAgICAgICAgbG93QmxvY2soZGF0YS0+Y2FzZXNbaV0udGFyZ2V0LmJsb2Nr
KSwgV2VpZ2h0KGRhdGEtPmNhc2VzW2ldLnRhcmdldC5jb3VudCkpKTsKICAgICAgICAgfQogICAg
ICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxNzI3
OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTg0LDYgKzk4NCwxMSBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoSGVhcE9wZXJhdGlvbiBj
b2xsZWN0CiAgICAgICAgIHZtKCktPmhpZ2hGaWRlbGl0eUxvZygpLT5wcm9jZXNzSGlnaEZpZGVs
aXR5TG9nKCJHQyIpOwogICAgIH0KICAgICAKKyAgICBpZiAodm0oKS0+Y2FsbEVkZ2VMb2cpIHsK
KyAgICAgICAgRGVmZXJHQ0ZvckFXaGlsZSBhd2hpbGUoKnRoaXMpOworICAgICAgICB2bSgpLT5j
YWxsRWRnZUxvZy0+cHJvY2Vzc0xvZygpOworICAgIH0KKyAgICAKICAgICBSRUxFQVNFX0FTU0VS
VCghbV9kZWZlcnJhbERlcHRoKTsKICAgICBBU1NFUlQodm0oKS0+Y3VycmVudFRocmVhZElzSG9s
ZGluZ0FQSUxvY2soKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0oKS0+YXRvbWljU3RyaW5nVGFi
bGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDE3Mjc5
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTg4LDYgKzg4LDIxIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KICAgICAK
KyAgICB2b2lkIGxvYWRWYWx1ZShBZGRyZXNzIGFkZHJlc3MsIEpTVmFsdWVSZWdzIHJlZ3MpCisg
ICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGxvYWQ2NChhZGRyZXNzLCByZWdzLmdw
cigpKTsKKyNlbHNlCisgICAgICAgIGlmIChhZGRyZXNzLmJhc2UgPT0gcmVncy5wYXlsb2FkR1BS
KCkpIHsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoVGFnT2Zmc2V0KSwg
cmVncy50YWdHUFIoKSk7CisgICAgICAgICAgICBsb2FkMzIoYWRkcmVzcy53aXRoT2Zmc2V0KFBh
eWxvYWRPZmZzZXQpLCByZWdzLnBheWxvYWRHUFIoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBsb2FkMzIoYWRkcmVzcy53aXRoT2Zmc2V0KFBheWxvYWRPZmZzZXQpLCByZWdzLnBh
eWxvYWRHUFIoKSk7CisgICAgICAgICAgICBsb2FkMzIoYWRkcmVzcy53aXRoT2Zmc2V0KFRhZ09m
ZnNldCksIHJlZ3MudGFnR1BSKCkpOworICAgICAgICB9CisjZW5kaWYKKyAgICB9CisgICAgCiAg
ICAgdm9pZCBtb3ZlVHJ1c3RlZFZhbHVlKEpTVmFsdWUgdmFsdWUsIEpTVmFsdWVSZWdzIHJlZ3Mp
CiAgICAgewogI2lmIFVTRShKU1ZBTFVFNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0NDYWxsSGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQ0NhbGxIZWxwZXJzLmgJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2NjYsNiArMTY2Niwx
NSBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoYXJnNCwgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsK
ICAgICB9CiAjZW5kaWYKKyAgICAKKyAgICB2b2lkIHNldHVwQXJndW1lbnRzKEpTVmFsdWVSZWdz
IGFyZzEpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIHNldHVwQXJndW1lbnRz
KGFyZzEuZ3ByKCkpOworI2Vsc2UKKyAgICAgICAgc2V0dXBBcmd1bWVudHMoYXJnMS5wYXlsb2Fk
R1BSKCksIGFyZzEudGFnR1BSKCkpOworI2VuZGlmCisgICAgfQogCiAgICAgdm9pZCBzZXR1cFJl
c3VsdHMoR1BSUmVnIGRlc3RBLCBHUFJSZWcgZGVzdEIpCiAgICAgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9HUFJJbmZvLmgJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvR1BSSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw4IEBAIHB1
YmxpYzoKICAgICBHUFJSZWcgdGFnR1BSKCkgY29uc3QgeyByZXR1cm4gSW52YWxpZEdQUlJlZzsg
fQogICAgIEdQUlJlZyBwYXlsb2FkR1BSKCkgY29uc3QgeyByZXR1cm4gbV9ncHI7IH0KICAgICAK
KyAgICBib29sIHVzZXMoR1BSUmVnIGdwcikgY29uc3QgeyByZXR1cm4gbV9ncHIgPT0gZ3ByOyB9
CisgICAgCiBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwcjsKIH07CkBAIC0xNjksNiArMTcxLDgg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gdGFnR1BSKCk7CiAgICAgfQogCisgICAgYm9vbCB1
c2VzKEdQUlJlZyBncHIpIGNvbnN0IHsgcmV0dXJuIG1fdGFnR1BSID09IGdwciB8fCBtX3BheWxv
YWRHUFIgPT0gZ3ByOyB9CisgICAgCiBwcml2YXRlOgogICAgIGludDhfdCBtX3RhZ0dQUjsKICAg
ICBpbnQ4X3QgbV9wYXlsb2FkR1BSOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDYWxsMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQ2FsbDMyXzY0LmNwcAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDAsNiArMzAwLDEz
IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICBzdG9yZTMy
KHJlZ1QwLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBKU1N0YWNrOjpDYWxsZWUgKiBz
dGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVv
ZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogICAgIHN0b3JlMzIocmVnVDEsIEFkZHJlc3Moc3RhY2tQ
b2ludGVyUmVnaXN0ZXIsIEpTU3RhY2s6OkNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9m
KFJlZ2lzdGVyKSkgKyBUYWdPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKIAor
ICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsK
KworICAgIGlmIChDYWxsRWRnZUxvZzo6aXNFbmFibGVkKCkgJiYgc2hvdWxkRW1pdFByb2ZpbGlu
ZygpKSB7CisgICAgICAgIG1fdm0tPmVuc3VyZUNhbExFZGdlTG9nKCkuZW1pdExvZ0NvZGUoCisg
ICAgICAgICAgICAqdGhpcywgaW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBKU1ZhbHVlUmVncyhyZWdU
MSwgcmVnVDApKTsKKyAgICB9CisKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbF9ldmFsKSB7
CiAgICAgICAgIGNvbXBpbGVDYWxsRXZhbChpbnN0cnVjdGlvbik7CiAgICAgICAgIHJldHVybjsK
QEAgLTMxMyw3ICszMjAsNiBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNv
ZGVJCiAgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2UpOwogCiAgICAgQVNTRVJUKG1fY2FsbENvbXBp
bGF0aW9uSW5mby5zaXplKCkgPT0gY2FsbExpbmtJbmZvSW5kZXgpOwotICAgIENhbGxMaW5rSW5m
byogaW5mbyA9IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsKICAgICBpbmZvLT5jYWxs
VHlwZSA9IENhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3Iob3Bjb2RlSUQpOwogICAgIGluZm8tPmNv
ZGVPcmlnaW4gPSBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpOwogICAgIGluZm8tPmNhbGxl
ZUdQUiA9IHJlZ1QwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCShy
ZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsNiArMjEyLDExIEBAIHZvaWQgSklUOjpjb21waWxlT3BD
YWxsKE9wY29kZUlEIG9wY29kZUkKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSwg
cmVnVDApOyAvLyByZWdUMCBob2xkcyBjYWxsZWUuCiAKICAgICBzdG9yZTY0KHJlZ1QwLCBBZGRy
ZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBKU1N0YWNrOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxp
bnQ+KHNpemVvZihSZWdpc3RlcikpIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CisgICAg
CisgICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5mbygp
OworCisgICAgaWYgKENhbGxFZGdlTG9nOjppc0VuYWJsZWQoKSAmJiBzaG91bGRFbWl0UHJvZmls
aW5nKCkpCisgICAgICAgIG1fdm0tPmVuc3VyZUNhbGxFZGdlTG9nKCkuZW1pdExvZ0NvZGUoKnRo
aXMsIGluZm8tPmNhbGxFZGdlUHJvZmlsZSwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKIAogICAgIGlm
IChvcGNvZGVJRCA9PSBvcF9jYWxsX2V2YWwpIHsKICAgICAgICAgY29tcGlsZUNhbGxFdmFsKGlu
c3RydWN0aW9uKTsKQEAgLTIyMyw3ICsyMjgsNiBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChP
cGNvZGVJRCBvcGNvZGVJCiAgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2UpOwogCiAgICAgQVNTRVJU
KG1fY2FsbENvbXBpbGF0aW9uSW5mby5zaXplKCkgPT0gY2FsbExpbmtJbmZvSW5kZXgpOwotICAg
IENhbGxMaW5rSW5mbyogaW5mbyA9IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsKICAg
ICBpbmZvLT5jYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3Iob3Bjb2RlSUQpOwog
ICAgIGluZm8tPmNvZGVPcmlnaW4gPSBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpOwogICAg
IGluZm8tPmNhbGxlZUdQUiA9IHJlZ1QwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsNiArMTY3LDggQEAgdHlw
ZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAgdihib29sLCBlbmFibGVBY2Nlc3NJ
bmxpbmluZywgdHJ1ZSkgXAogICAgIHYoYm9vbCwgZW5hYmxlUG9seXZhcmlhbnREZXZpcnR1YWxp
emF0aW9uLCB0cnVlKSBcCiAgICAgdihib29sLCBlbmFibGVQb2x5bW9ycGhpY0FjY2Vzc0lubGlu
aW5nLCB0cnVlKSBcCisgICAgdihib29sLCBlbmFibGVQb2x5bW9ycGhpY0NhbGxJbmxpbmluZywg
dHJ1ZSkgXAorICAgIHYoYm9vbCwgZW5hYmxlQ2FsbEVkZ2VQcm9maWxpbmcsIHRydWUpIFwKICAg
ICB2KGJvb2wsIG9wdGltaXplTmF0aXZlQ2FsbHMsIGZhbHNlKSBcCiAgICAgXAogICAgIHYoYm9v
bCwgZW5hYmxlQ29uY3VycmVudEpJVCwgdHJ1ZSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzMsNiArMzczLDEzIEBAIFZNKiYg
Vk06OnNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKQogICAgIHJldHVybiBzaGFyZWRJbnN0YW5jZTsK
IH0KIAorQ2FsbEVkZ2VMb2cmIFZNOjplbnN1cmVDYWxsRWRnZUxvZygpCit7CisgICAgaWYgKCFj
YWxsRWRnZUxvZykKKyAgICAgICAgY2FsbEVkZ2VMb2cgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxF
ZGdlTG9nPigpOworICAgIHJldHVybiAqY2FsbEVkZ2VMb2c7Cit9CisKICNpZiBFTkFCTEUoSklU
KQogc3RhdGljIFRodW5rR2VuZXJhdG9yIHRodW5rR2VuZXJhdG9yRm9ySW50cmluc2ljKEludHJp
bnNpYyBpbnRyaW5zaWMpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJl
dmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdv
cmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBBcml0eUNoZWNrRmFpbFJldHVyblRodW5rczsKICAgICBjbGFzcyBCdWlsdGluRXhlY3V0YWJs
ZXM7CisgICAgY2xhc3MgQ2FsbEVkZ2VMb2c7CiAgICAgY2xhc3MgQ29kZUJsb2NrOwogICAgIGNs
YXNzIENvZGVDYWNoZTsKICAgICBjbGFzcyBDb21tb25JZGVudGlmaWVyczsKQEAgLTIzMyw2ICsy
MzQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgT3du
UHRyPERGRzo6TG9uZ0xpdmVkU3RhdGU+IGRmZ1N0YXRlOwogI2VuZGlmIC8vIEVOQUJMRShERkdf
SklUKQorICAgICAgICAKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxFZGdlTG9nPiBjYWxs
RWRnZUxvZzsKKyAgICAgICAgQ2FsbEVkZ2VMb2cmIGVuc3VyZUNhbGxFZGdlTG9nKCk7CiAKICAg
ICAgICAgVk1UeXBlIHZtVHlwZTsKICAgICAgICAgQ2xpZW50RGF0YSogY2xpZW50RGF0YTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbmV3LWFycmF5LXRoZW4tZXhp
dC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL25l
dy1hcnJheS10aGVuLWV4aXQuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL25ldy1hcnJheS10aGVuLWV4aXQuanMJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxNCBAQAorZnVuY3Rpb24gZm9vKGYpIHsKKyAgICByZXR1cm4gbmV3IGYoKTsKK30K
Kworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKQorICAg
IGZvbyhBcnJheSk7CisKK3ZhciBkaWRDYWxsID0gZmFsc2U7Citmb28oZnVuY3Rpb24oKSB7IGRp
ZENhbGwgPSB0cnVlOyB9KTsKKworaWYgKCFkaWRDYWxsKQorICAgIHRocm93ICJFcnJvcjogZGlk
bid0IGNhbGwgbXkgZnVuY3Rpb24uIjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQtdGhpcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3BvbHktY2FsbC1leGl0LXRoaXMuanMJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3BvbHktY2FsbC1leGl0
LXRoaXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOSBAQAorKGZ1bmN0aW9uKCkgewor
ICAgIGZ1bmN0aW9uIGZvbyh4KSB7IHJldHVybiAxICsgdGhpcy5mOyB9CisgICAgZnVuY3Rpb24g
YmFyKHgpIHsgcmV0dXJuIHggKyB0aGlzLmY7IH0KKyAgICBmdW5jdGlvbiBiYXooeCkgeyByZXR1
cm4geCArIDEgKyB0aGlzLmY7IH0KKyAgICAKKyAgICB2YXIgbiA9IDEwMDAwMDA7CisgICAgCisg
ICAgdmFyIHJlc3VsdCA9IChmdW5jdGlvbihvKSB7CisgICAgICAgIHZhciBmID0ge2Z1bjpmb28s
IGY6MX07CisgICAgICAgIHZhciBnID0ge2Z1bjpiYXIsIGY6Mn07CisgICAgICAgIHZhciBoID0g
e2Z1bjpiYXosIGY6M307CisgICAgICAgIAorICAgICAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChpID09IG4g
LSAxKQorICAgICAgICAgICAgICAgIGYgPSBoOworICAgICAgICAgICAgcmVzdWx0ICs9IGYuZnVu
KG8uZik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciB0bXAgPSBmOworICAgICAgICAg
ICAgZiA9IGc7CisgICAgICAgICAgICBnID0gdG1wOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIH0pKHtmOjQyfSk7CisgICAgCisgICAgaWYgKHJlc3Vs
dCAhPSAoKG4gLyAyIC0gMSkgKiAoNDIgKyAyKSkgKyAobiAvIDIgKiAoMSArIDEpICsgKDQyICsg
MSArIDMpKSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0Owor
fSkoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcG9seS1jYWxs
LWV4aXQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9wb2x5LWNhbGwtZXhpdC5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwyOSBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIGZvbyh4KSB7IHJldHVybiAxOyB9
CisgICAgZnVuY3Rpb24gYmFyKHgpIHsgcmV0dXJuIHg7IH0KKyAgICBmdW5jdGlvbiBiYXooeCkg
eyByZXR1cm4geCArIDE7IH0KKyAgICAKKyAgICB2YXIgbiA9IDEwMDAwMDA7CisgICAgCisgICAg
dmFyIHJlc3VsdCA9IChmdW5jdGlvbihvKSB7CisgICAgICAgIHZhciBmID0gZm9vOworICAgICAg
ICB2YXIgZyA9IGJhcjsKKyAgICAgICAgdmFyIGggPSBiYXo7CisgICAgICAgIAorICAgICAgICB2
YXIgcmVzdWx0ID0gMDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAg
ICAgICAgICAgIGlmIChpID09IG4gLSAxKQorICAgICAgICAgICAgICAgIGYgPSBoOworICAgICAg
ICAgICAgcmVzdWx0ICs9IGYoby5mKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIHRt
cCA9IGY7CisgICAgICAgICAgICBmID0gZzsKKyAgICAgICAgICAgIGcgPSB0bXA7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSkoe2Y6NDJ9KTsKKyAg
ICAKKyAgICBpZiAocmVzdWx0ICE9ICgobiAvIDIgLSAxKSAqIDQyKSArIChuIC8gMiAqIDEpICsg
KDQyICsgMSkpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsK
K30pKCk7CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyODAxKQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAxNC0wOC0yMCAgRmlsaXAgUGl6bG8g
IDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIERGRyAob3IgRlRMKSBzaG91bGQgYmUgYWJs
ZSB0byBkbyBwb2x5bW9ycGhpYyBjYWxsIGlubGluaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUxNDUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFkZCBzb21lIHBvd2VyIHRoYXQgSSBu
ZWVkIGZvciBjYWxsIGVkZ2UgcHJvZmlsaW5nLgorCisgICAgICAgICogd3RmL093blB0ci5oOgor
ICAgICAgICAoV1RGOjpPd25QdHI8VD46OmNyZWF0ZVRyYW5zYWN0aW9uYWxseSk6CisgICAgICAg
ICogd3RmL1NwZWN0cnVtLmg6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjphZGQpOgorICAgICAg
ICAoV1RGOjpTcGVjdHJ1bTo6YWRkQWxsKToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OmdldCk6
CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpzaXplKToKKyAgICAgICAgKFdURjo6U3BlY3RydW06
OktleUFuZENvdW50OjpLZXlBbmRDb3VudCk6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpjbGVh
cik6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpyZW1vdmVJZik6CisKIDIwMTQtMDgtMjAgIEFr
b3MgS2lzcyAgPGFraXNzQGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBFbmFibGUgQVJNNjQg
ZGlzYXNzZW1ibGVyIG9uIEVGTApJbmRleDogU291cmNlL1dURi93dGYvT3duUHRyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvT3duUHRyLmgJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNv
dXJjZS9XVEYvd3RmL093blB0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAw
OCwgMjAwOSwgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBXVEZfT3duUHRyX2gK
IAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4K
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyQ29tbW9u
Lmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgpAQCAtNzIsNiArNzMsMTQgQEAgbmFtZXNwYWNlIFdU
RiB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IE93blB0ciYgb3BlcmF0b3I9KE93blB0
cjxVPiYmKTsKIAogICAgICAgICB2b2lkIHN3YXAoT3duUHRyJiBvKSB7IHN0ZDo6c3dhcChtX3B0
ciwgby5tX3B0cik7IH0KKyAgICAgICAgCisgICAgICAgIC8vIENvbnN0cnVjdCBhbiBvYmplY3Qg
dG8gc3RvcmUgaW50byB0aGlzIE93blB0ciwgYnV0IG9ubHkgc28gbG9uZyBhcyB0aGlzIE93blB0
cgorICAgICAgICAvLyBkb2Vzbid0IGFscmVhZHkgcG9pbnQgdG8gYW4gb2JqZWN0LiBUaGlzIHdp
bGwgZW5zdXJlIHRoYXQgYWZ0ZXIgeW91IGNhbGwgdGhpcywKKyAgICAgICAgLy8gdGhlIE93blB0
ciB3aWxsIHBvaW50IHRvIGFuIGluc3RhbmNlIG9mIFQuIFRoaXMgaW5zdGFuY2UgbWF5IG9yIG1h
eSBub3QgaGF2ZSBiZWVuCisgICAgICAgIC8vIGNyZWF0ZWQgYnkgdGhpcyBjYWxsLiBNb3Jlb3Zl
ciwgdGhpcyBjYWxsIHVzZXMgYW4gb3Bwb3J0dW5pc3RpYyB0cmFuc2FjdGlvbiwgaW4KKyAgICAg
ICAgLy8gdGhhdCB3ZSBtYXkgY3JlYXRlIGFuIGluc3RhbmNlIG9mIFQgYW5kIHRoZW4gaW1tZWRp
YXRlbHkgdGhyb3cgaXQgYXdheS4KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4K
KyAgICAgICAgdm9pZCBjcmVhdGVUcmFuc2FjdGlvbmFsbHkoQXJncy4uLiBhcmdzKTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IE93blB0cihQdHJUeXBlIHB0cikgOiBtX3B0cihw
dHIpIHsgfQpAQCAtMTg2LDYgKzE5NSwyOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0
dXJuIHAuZ2V0KCk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdGVtcGxhdGU8
dHlwZW5hbWUuLi4gQXJncz4gaW5saW5lIHZvaWQgT3duUHRyPFQ+OjpjcmVhdGVUcmFuc2FjdGlv
bmFsbHkoQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgaWYgKG1fcHRyKSB7CisgICAgICAg
ICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgVCogbmV3T2JqZWN0ID0gbmV3IFQoYXJncy4uLik7CisgICAg
ICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CisjaWYgRU5BQkxFKENPTVBBUkVfQU5EX1NXQVAp
CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGlmIChtX3B0cikgeworICAgICAgICAgICAgICAg
IGRlbGV0ZSBuZXdPYmplY3Q7CisgICAgICAgICAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9IHdoaWxl
ICghV1RGOjp3ZWFrQ29tcGFyZUFuZFN3YXAoYml0d2lzZV9jYXN0PHZvaWQqdm9sYXRpbGUqPigm
bV9wdHIpLCBudWxscHRyLCBuZXdPYmplY3QpKTsKKyNlbHNlCisgICAgICAgIG1fcHRyID0gbmV3
T2JqZWN0OworI2VuZGlmCisgICAgfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RG
OjpPd25QdHI7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9X
VEYvd3RmL1NwZWN0cnVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDIyICszMiwzMSBAQAogCiBuYW1l
c3BhY2UgV1RGIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KK3RlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIENvdW50ZXJUeXBlID0gdW5zaWduZWQ+CiBjbGFzcyBTcGVjdHJ1bSB7CiBwdWJs
aWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPFQsIHVuc2lnbmVkIGxvbmc+OjppdGVy
YXRvciBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgdW5zaWduZWQg
bG9uZz46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOworICAgIHR5cGVkZWYgdHlwZW5h
bWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46Oml0ZXJhdG9yIGl0ZXJhdG9yOworICAgIHR5cGVk
ZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0
X2l0ZXJhdG9yOwogICAgIAogICAgIFNwZWN0cnVtKCkgeyB9CiAgICAgCi0gICAgdm9pZCBhZGQo
Y29uc3QgVCYga2V5LCB1bnNpZ25lZCBsb25nIGNvdW50ID0gMSkKKyAgICB2b2lkIGFkZChjb25z
dCBUJiBrZXksIENvdW50ZXJUeXBlIGNvdW50ID0gMSkKICAgICB7Ci0gICAgICAgIHR5cGVuYW1l
IEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz46OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQo
a2V5LCBjb3VudCk7CisgICAgICAgIGlmICghY291bnQpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+OjpBZGRSZXN1bHQgcmVzdWx0
ID0gbV9tYXAuYWRkKGtleSwgY291bnQpOwogICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5
KQogICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSArPSBjb3VudDsKICAgICB9CiAg
ICAgCi0gICAgdW5zaWduZWQgbG9uZyBnZXQoY29uc3QgVCYga2V5KSBjb25zdAorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFU+CisgICAgdm9pZCBhZGRBbGwoY29uc3QgU3BlY3RydW08VCwgVT4mIG90
aGVyU3BlY3RydW0pCisgICAgeworICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBvdGhlclNwZWN0
cnVtKQorICAgICAgICAgICAgYWRkKGVudHJ5LmtleSwgZW50cnkuY291bnQpOworICAgIH0KKyAg
ICAKKyAgICBDb3VudGVyVHlwZSBnZXQoY29uc3QgVCYga2V5KSBjb25zdAogICAgIHsKICAgICAg
ICAgY29uc3RfaXRlcmF0b3IgaXRlciA9IG1fbWFwLmZpbmQoa2V5KTsKICAgICAgICAgaWYgKGl0
ZXIgPT0gbV9tYXAuZW5kKCkpCkBAIC01NSw2ICs2NCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGl0ZXItPnZhbHVlOwogICAgIH0KICAgICAKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbWFwLnNpemUoKTsgfQorICAgIAogICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1
cm4gbV9tYXAuYmVnaW4oKTsgfQogICAgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIG1fbWFwLmVu
ZCgpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX21hcC5i
ZWdpbigpOyB9CkBAIC02Myw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgS2V5QW5kQ291
bnQgewogICAgICAgICBLZXlBbmRDb3VudCgpIHsgfQogICAgICAgICAKLSAgICAgICAgS2V5QW5k
Q291bnQoY29uc3QgVCYga2V5LCB1bnNpZ25lZCBsb25nIGNvdW50KQorICAgICAgICBLZXlBbmRD
b3VudChjb25zdCBUJiBrZXksIENvdW50ZXJUeXBlIGNvdW50KQogICAgICAgICAgICAgOiBrZXko
a2V5KQogICAgICAgICAgICAgLCBjb3VudChjb3VudCkKICAgICAgICAgewpAQCAtODAsNyArOTEs
NyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBUIGtleTsKLSAgICAgICAgdW5zaWdu
ZWQgbG9uZyBjb3VudDsKKyAgICAgICAgQ291bnRlclR5cGUgY291bnQ7CiAgICAgfTsKICAgICAK
ICAgICAvLyBSZXR1cm5zIGEgbGlzdCBvcmRlcmVkIGZyb20gbG93ZXN0LWNvdW50IHRvIGhpZ2hl
c3QtY291bnQuCkBAIC05NCw4ICsxMDUsMTggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbGlz
dDsKICAgICB9CiAgICAgCisgICAgdm9pZCBjbGVhcigpIHsgbV9tYXAuY2xlYXIoKTsgfQorICAg
IAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgdm9pZCByZW1vdmVJZihjb25z
dCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAgICAgICAgbV9tYXAucmVtb3ZlSWYoW2Z1bmN0
b3JdICh0eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6S2V5VmFsdWVQYWlyVHlwZSYg
cGFpcikgeworICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdG9yKEtleUFuZENvdW50KHBhaXIu
a2V5LCBwYWlyLnZhbHVlKSk7CisgICAgICAgICAgICB9KTsKKyAgICB9CisgICAgCiBwcml2YXRl
OgotICAgIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz4gbV9tYXA7CisgICAgSGFzaE1hcDxULCBD
b3VudGVyVHlwZT4gbV9tYXA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE3MjgwMSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE3IEBACisyMDE0LTA4LTIwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgREZHIChvciBGVEwpIHNob3VsZCBiZSBhYmxlIHRvIGRvIHBvbHltb3Jw
aGljIGNhbGwgaW5saW5pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzNTE0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXBvbHktY2FsbC1uZXN0
ZWQuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1w
b2x5LWNhbGwuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2Fs
bC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHkt
Y2FsbC1uZXN0ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3Np
bXBsZS1wb2x5LWNhbGwtbmVzdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mv
c2ltcGxlLXBvbHktY2FsbC5odG1sOiBBZGRlZC4KKwogMjAxNC0wOC0yMCAgQWxleGV5IFByb3Nr
dXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBmYXN0L211bHRpY29sL21peGVkLW9w
YWNpdHktZml4ZWQtdGVzdC5odG1sIGZhaWxzIGluIGNvbXBvc2l0aW5nIG1vZGUKSW5kZXg6IExh
eW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcG9seS1jYWxsLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHkt
Y2FsbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdy
ZXNzL3NpbXBsZS1wb2x5LWNhbGwKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBv
bHktY2FsbC1uZXN0ZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcG9seS1jYWxsLW5lc3RlZC1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3NpbXBs
ZS1wb2x5LWNhbGwtbmVzdGVkCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5
LWNhbGwtbmVzdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
aW1wbGUtcG9seS1jYWxsLW5lc3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zaW1wbGUtcG9seS1jYWxsLW5lc3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0
LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcG9seS1j
YWxsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc2ltcGxlLXBvbHktY2FsbC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9zaW1wbGUtcG9seS1jYWxsLW5lc3RlZC5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcG9seS1jYWxsLW5lc3RlZC5q
cwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3Np
bXBsZS1wb2x5LWNhbGwtbmVzdGVkLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjUgQEAK
KyhmdW5jdGlvbigpIHsKKyAgICBmdW5jdGlvbiBmb28oeCkgeyByZXR1cm4gMTsgfQorICAgIGZ1
bmN0aW9uIGJhcih4KSB7IHJldHVybiB4OyB9CisgICAgCisgICAgdmFyIG4gPSAxMDAwMDAwOwor
ICAgIAorICAgIHZhciByZXN1bHQgPSAoZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBmID0gZm9v
OworICAgICAgICB2YXIgZyA9IGJhcjsKKyAgICAgICAgCisgICAgICAgIHZhciByZXN1bHQgPSAw
OworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkgeworICAgICAgICAgICAgcmVz
dWx0ICs9IGYoNDIpOworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgdG1wID0gZjsKKyAg
ICAgICAgICAgIGYgPSBnOworICAgICAgICAgICAgZyA9IHRtcDsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9KSgpOworICAgIAorICAgIGlmIChyZXN1
bHQgIT0gbiAvIDIgKiA0MiArIG4gLyAyICogMSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQg
cmVzdWx0OiAiICsgcmVzdWx0OworfSkoKTsKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
c2NyaXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXBvbHktY2FsbC5qcwkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNh
bGwuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMCBAQAorKGZ1bmN0aW9uKCkgeworICAg
IGZ1bmN0aW9uIGZvbyh4KSB7IHJldHVybiAxOyB9CisgICAgZnVuY3Rpb24gYmFyKHgpIHsgcmV0
dXJuIHg7IH0KKyAgICAKKyAgICB2YXIgZiA9IGZvbzsKKyAgICB2YXIgZyA9IGJhcjsKKyAgICAK
KyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICB2YXIgbiA9IDEwMDAwMDsKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IG47ICsraSkgeworICAgICAgICByZXN1bHQgKz0gZig0Mik7CisgICAgICAgIAor
ICAgICAgICB2YXIgdG1wID0gZjsKKyAgICAgICAgZiA9IGc7CisgICAgICAgIGcgPSB0bXA7Cisg
ICAgfQorICAgIAorICAgIGlmIChyZXN1bHQgIT0gbiAvIDIgKiA0MiArIG4gLyAyICogMSkKKyAg
ICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfSkoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236909</attachid>
            <date>2014-08-20 20:04:45 -0700</date>
            <delta_ts>2014-08-21 14:46:59 -0700</delta_ts>
            <desc>passing more tests than ever!</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>168263</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyODAxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyNiBA
QAorMjAxNC0wOC0yMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyAob3IgRlRMKSBzaG91bGQgYmUgYWJsZSB0byBkbyBwb2x5bW9ycGhpYyBjYWxsIGlubGlu
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUx
NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIEFkZCBhIGxvZy1iYXNlZCBoaWdoLWZpZGVsaXR5IGNhbGwgZWRnZSBwcm9maWxlciB0aGF0
IHJ1bnMgaW4gYmFzZWxpbmUgSklUIGFuZCBERkcgSklUIGNvZGUuCisgICAgICAgIFVzZSBpdCB0
byBkbyBwcmVjaXNlIHBvbHltb3JwaGljIGlubGluaW5nIGluIHRoZSBGVEwsIGFuZCB0byBtYWtl
IHRoZSBERkcncyBtb25vbW9ycGhpYworICAgICAgICBpbmxpbmVyIGEgYml0IG1vcmUgaW50ZWxs
aWdlbnQuIFBvdGVudGlhbCBpbmxpbmluZyBzaXRlcyB3aWxsIHVzZSB0aGUgY2FsbCBlZGdlIHBy
b2ZpbGUgaWYKKyAgICAgICAgaXQgaXMgYXZhaWxhYmxlIGJ1dCB0aGV5IHdpbGwgc3RpbGwgZmFs
bCBiYWNrIG9uIHRoZSBjYWxsIGlubGluZSBjYWNoZSBhbmQgcmFyZSBjYXNlIGNvdW50cworICAg
ICAgICBpZiB0aGF0J3Mgbm90IGF2YWlsYWJsZS4KKyAgICAgICAgCisgICAgICAgIFdvcmsgaW4g
cHJvZ3Jlc3MuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxFZGdlLmNwcDogQWRkZWQuCisgICAgICAg
IChKU0M6OkNhbGxFZGdlOjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsRWRnZS5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2U6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6
OkNhbGxFZGdlOjpjYWxsZWUpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZTo6Y291bnQpOgorICAg
ICAgICAoSlNDOjpDYWxsRWRnZTo6ZGVzcGVjaWZpZWRDbG9zdXJlKToKKyAgICAgICAgKEpTQzo6
Q2FsbEVkZ2U6OkNhbGxFZGdlKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VQcm9maWxlOjpjYWxsRWRnZXMpOgor
ICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6Om51bUNhbGxzVG9Lbm93bkNlbGxzKToKKyAg
ICAgICAgKEpTQzo6d29ydGhEZXNwZWNpZnlpbmcpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZVBy
b2ZpbGU6OndvcnRoRGVzcGVjaWZ5aW5nKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VQcm9maWxl
Ojp2aXNpdFdlYWspOgorICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6OmFkZFNsb3cpOgor
ICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6Om1lcmdlQmFjayk6CisgICAgICAgIChKU0M6
OkNhbGxFZGdlUHJvZmlsZTo6ZmFkZUJ5SGFsZik6CisgICAgICAgIChKU0M6OkNhbGxFZGdlTG9n
OjpDYWxsRWRnZUxvZyk6CisgICAgICAgIChKU0M6OkNhbGxFZGdlTG9nOjp+Q2FsbEVkZ2VMb2cp
OgorICAgICAgICAoSlNDOjpDYWxsRWRnZUxvZzo6aXNFbmFibGVkKToKKyAgICAgICAgKEpTQzo6
b3BlcmF0aW9uUHJvY2Vzc0NhbGxFZGdlTG9nKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VMb2c6
OmVtaXRMb2dDb2RlKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VMb2c6OnByb2Nlc3NMb2cpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6Q2FsbEVkZ2VQcm9maWxlOjpudW1DYWxsc1RvTm90Q2VsbCk6CisgICAgICAgIChKU0M6OkNh
bGxFZGdlUHJvZmlsZTo6bnVtQ2FsbHNUb1Vua25vd25DZWxsKToKKyAgICAgICAgKiBieXRlY29k
ZS9DYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpDYWxsRWRn
ZVByb2ZpbGU6OkNhbGxFZGdlUHJvZmlsZSk6CisgICAgICAgIChKU0M6OkNhbGxFZGdlUHJvZmls
ZTo6YWRkKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAo
SlNDOjpDYWxsTGlua0luZm86OnZpc2l0V2Vhayk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmg6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAg
ICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Q2FsbExpbmtTdGF0dXMpOgorICAgICAgICAoSlNDOjpD
YWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5r
U3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZy
b21DYWxsRWRnZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6aXNDbG9z
dXJlQ2FsbCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjptYWtlQ2xvc3VyZUNhbGwp
OgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNh
bGxMaW5rU3RhdHVzOjpmdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNhbGxMaW5r
U3RhdHVzOjppbnRlcm5hbEZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbExp
bmtTdGF0dXM6OmludHJpbnNpY0Zvcik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ2Fs
bExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OkNhbGxMaW5rU3Rh
dHVzKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmlzU2V0KToKKyAgICAgICAgKEpT
Qzo6Q2FsbExpbmtTdGF0dXM6OmNvdWxkVGFrZVNsb3dQYXRoKToKKyAgICAgICAgKEpTQzo6Q2Fs
bExpbmtTdGF0dXM6OmVkZ2VzKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OnNpemUp
OgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6YXQpOgorICAgICAgICAoSlNDOjpDYWxs
TGlua1N0YXR1czo6b3BlcmF0b3JbXSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpj
YW5PcHRpbWl6ZSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjYW5UcnVzdENvdW50
cyk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjppc0Nsb3N1cmVDYWxsKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNhbGxUYXJnZXQpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6ZXhlY3V0YWJsZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjptYWtlQ2xvc3VyZUNhbGwpOiBEZWxldGVkLgorICAg
ICAgICAqIGJ5dGVjb2RlL0NhbGxWYXJpYW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkNh
bGxWYXJpYW50OjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsVmFyaWFudC5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OkNhbGxWYXJpYW50KToKKyAgICAgICAgKEpT
Qzo6Q2FsbFZhcmlhbnQ6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50Ojpk
ZXNwZWNpZmllZENsb3N1cmUpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6cmF3Q2FsbGVl
Q2VsbCk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjppbnRlcm5hbEZ1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OmZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Q2FsbFZh
cmlhbnQ6OmlzQ2xvc3VyZUNhbGwpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZXhlY3V0
YWJsZSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50Ojpub25FeGVjdXRhYmxlQ2FsbGVlKToK
KyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OmludHJpbnNpY0Zvcik6CisgICAgICAgIChKU0M6
OkNhbGxWYXJpYW50OjpmdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpDYWxsVmFy
aWFudDo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFu
dDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpvcGVyYXRvciE9KToK
KyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om9wZXJhdG9yPCk6CisgICAgICAgIChKU0M6OkNh
bGxWYXJpYW50OjpvcGVyYXRvcj4pOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6b3BlcmF0
b3I8PSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpvcGVyYXRvcj49KToKKyAgICAgICAg
KEpTQzo6Q2FsbFZhcmlhbnQ6Omhhc2gpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZGVs
ZXRlZFRva2VuKToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnRIYXNoOjpoYXNoKToKKyAgICAg
ICAgKEpTQzo6Q2FsbFZhcmlhbnRIYXNoOjplcXVhbCk6CisgICAgICAgICogYnl0ZWNvZGUvRXhp
dEtpbmQuY3BwOgorICAgICAgICAoSlNDOjpleGl0S2luZFRvU3RyaW5nKToKKyAgICAgICAgKiBi
eXRlY29kZS9FeGl0S2luZC5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0JhY2t3YXJk
c1Byb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJhY2t3YXJkc1Byb3Bh
Z2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR0Jhc2ljQmxvY2suaDoK
KyAgICAgICAgKEpTQzo6REZHOjpCYXNpY0Jsb2NrOjp0YWtlTGFzdCk6CisgICAgICAgIChKU0M6
OkRGRzo6QmFzaWNCbG9jazo6ZGlkTGluayk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cmVtb3ZlTGFzdE5v
ZGVGcm9tR3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphZGRDYWxs
V2l0aG91dFNldHRpbmdSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjphZGRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmVtaXRGdW5jdGlvbkNoZWNr
cyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnVuZG9GdW5jdGlvbkNoZWNr
cyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpjYW5jZWxMaW5raW5nRm9yQmxvY2spOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdD
UFNSZXRocmVhZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDUFNSZXRocmVhZGlu
Z1BoYXNlOjpmcmVlVW5uZWNlc3NhcnlOb2Rlcyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJp
emUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZH
Q29tbW9uLmg6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6Cisg
ICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToK
KyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxl
SW1wbCk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6R3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6Okdy
YXBoOjpkdW1wKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZn
L0RGR0xhenlKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpMYXp5SlNWYWx1ZTo6c3dp
dGNoTG9va3VwVmFsdWUpOgorICAgICAgICAqIGRmZy9ERkdMYXp5SlNWYWx1ZS5oOgorICAgICAg
ICAoSlNDOjpERkc6OkxhenlKU1ZhbHVlOjpzd2l0Y2hMb29rdXBWYWx1ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogZGZnL0RGR05vZGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToK
KyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok9wSW5mbzo6T3BJ
bmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNDZWxsT3BlcmFuZCk6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6Y2VsbE9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
OnNldENlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjYW5CZUtub3duRnVu
Y3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0tub3duRnVuY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omtub3duRnVuY3Rpb24pOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdpdmVLbm93bkZ1bmN0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNGdW5jdGlvbik6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6ZnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6Omhhc0V4ZWN1dGFibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6OmV4ZWN1dGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5o
OgorICAgICAgICAqIGRmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlOjpydW4pOgorICAg
ICAgICAqIGRmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpQaGFudG9tUmVtb3ZhbFBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpl
bWl0U3dpdGNoKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZTo6cnVuKToKKyAg
ICAgICAgKiBkZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6VGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcv
REZHVmFsaWRhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlZhbGlkYXRlOjp2YWxpZGF0ZSk6
CisgICAgICAgICogZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OldhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2U6OmhhbmRsZSk6CisgICAgICAg
ICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGls
ZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpmdGxVbnJlYWNoYWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
Omxvd2VyKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5vZGUp
OgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ2hlY2tDZWxsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNoZWNrQmFkQ2VsbCk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVHZXRFeGVjdXRhYmxl
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5hdGl2ZUNhbGxP
ckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVT
d2l0Y2gpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpidWlsZFN3aXRjaCk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVDaGVja0Z1bmN0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNo
ZWNrRXhlY3V0YWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAg
ICAgKEpTQzo6SGVhcDo6Y29sbGVjdCk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5o
OgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRWYWx1ZSk6CisgICAgICAgICog
aml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJn
dW1lbnRzKToKKyAgICAgICAgKiBqaXQvR1BSSW5mby5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
UmVnczo6dXNlcyk6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9u
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6ZW5zdXJl
Q2FsbEVkZ2VMb2cpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvbmV3LWFycmF5LXRoZW4tZXhpdC5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9wb2x5LWNhbGwtZXhpdC10aGlzLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiB0ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQuanM6IEFkZGVkLgorCiAyMDE0LTA4LTIw
ICBwZWF2b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIFtXaW5d
IEFzc2VydGlvbiBmYWlscyB3aGVuIHJ1bm5pbmcgSlNDIHN0cmVzcyB0ZXN0cy4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMjY1LDYgKzI2NSwxMyBAQAogCQkwRjNCM0EyODE1NDRDOTk3MDAzRUQw
RkYgLyogREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjNBMjUxNTQ0Qzk5MTAwM0VEMEZGIC8qIERGR0NG
R1NpbXBsaWZpY2F0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjNCM0EyQjE1NDc1MDAwMDAzRUQwRkYgLyogREZHVmFsaWRhdGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjNB
MjkxNTQ3NEZGNDAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmNwcCAqLzsgfTsKIAkJMEYzQjNBMkMx
NTQ3NTAwMjAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCM0EyQTE1NDc0RkY0MDAzRUQwRkYgLyogREZHVmFs
aWRhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjNCN0UyNjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTIwMTlBMTFCODAwMEQ5QkM1NiAv
KiBDYWxsRWRnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGM0I3RTI3MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMjExOUEx
MUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAgKi87IH07CisJCTBGM0I3RTI4MTlB
MTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTIyMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxs
RWRnZVByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRjNCN0UyOTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlSW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdF
MjMxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZUlubGluZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjNCN0UyQTE5QTExQjgw
MDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMjQxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50
LmNwcCAqLzsgfTsKKwkJMEYzQjdFMkIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCN0UyNTE5
QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjNCN0UyRDE5QTEyQUFFMDBEOUJDNTYgLyogQ2Fs
bEVkZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYzQjdFMkMxOUExMkFBRTAwRDlCQzU2IC8qIENhbGxFZGdlLmNwcCAqLzsgfTsKIAkJMEYzRDBC
QkMxOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRDBCQkExOTRBNDE0MzAw
RkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suY3BwICovOyB9OwogCQkwRjNEMEJCRDE5
NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRDBCQkIxOTRBNDE0MzAwRkM5Q0Y5
IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQyNkE0ODE0NjBDQkIzMDAxMzFGOEYgLyogVmFsdWVS
ZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY0MjZBNDUxNDYwQ0JBQjAwMTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjE2OSw2ICsyMTc2LDEzIEBA
CiAJCTBGM0IzQTI1MTU0NEM5OTEwMDNFRDBGRiAvKiBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NGR1NpbXBsaWZpY2F0aW9u
UGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0IzQTI5MTU0NzRGRjQwMDNFRDBGRiAvKiBERkdWYWxp
ZGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdWYWxpZGF0
ZS5jcHA7IHBhdGggPSBkZmcvREZHVmFsaWRhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjNCM0EyQTE1NDc0RkY0MDAzRUQwRkYgLyogREZHVmFsaWRhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVmFsaWRhdGUuaDsgcGF0aCA9IGRmZy9ERkdW
YWxpZGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyMDE5QTExQjgw
MDBEOUJDNTYgLyogQ2FsbEVkZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q2FsbEVkZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzQjdFMjExOUExMUI4
MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDYWxsRWRnZVByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjNCN0UyMjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxFZGdlUHJvZmlsZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyMzE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVk
Z2VQcm9maWxlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxs
RWRnZVByb2ZpbGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGM0I3
RTI0MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsVmFyaWFudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGM0I3RTI1MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsVmFyaWFudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjNCN0UyQzE5QTEyQUFFMDBEOUJDNTYgLyogQ2FsbEVkZ2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbEVkZ2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNEMEJCQTE5NEE0MTQzMDBGQzlDRjkgLyogQ29u
c3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDb25zdGFudFN0cnVjdHVyZUNoZWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEYzRDBCQkIxOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2su
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RhbnRTdHJ1Y3R1cmVDaGVj
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFG
OEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBW
YWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MTQ0LDExICs1
MTU4LDE4IEBACiAJCQkJMEY2NjZFQkUxODM1NjZGOTAwRDAxN0YxIC8qIEJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpc0lubGluZXMuaCAqLywKIAkJCQkwRjg4NUUxMDE4NDlBM0JFMDBGMUUzRkEgLyog
Qnl0ZWNvZGVVc2VEZWYuaCAqLywKIAkJCQkwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlW
YWxJbmZvLmggKi8sCisJCQkJMEYzQjdFMkMxOUExMkFBRTAwRDlCQzU2IC8qIENhbGxFZGdlLmNw
cCAqLywKKwkJCQkwRjNCN0UyMDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2UuaCAqLywKKwkJ
CQkwRjNCN0UyMTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmNwcCAqLywKKwkJ
CQkwRjNCN0UyMjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmggKi8sCisJCQkJ
MEYzQjdFMjMxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZUlubGluZXMuaCAqLywK
IAkJCQkwRjBCODNBRTE0QkNGNzE0MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmNwcCAqLywKIAkJ
CQkwRjBCODNBRjE0QkNGNzE0MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmggKi8sCiAJCQkJMEY5
MzMyOTMxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmNwcCAqLywKIAkJCQkwRjkz
MzI5NDE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuaCAqLywKIAkJCQkwRjBCODNC
ODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAq
LywKKwkJCQkwRjNCN0UyNDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuY3BwICovLAor
CQkJCTBGM0I3RTI1MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5oICovLAogCQkJCTk2
OUEwNzkwMEVEMUQzQUUwMEYxRjY4MSAvKiBDb2RlQmxvY2suY3BwICovLAogCQkJCTk2OUEwNzkx
MEVEMUQzQUUwMEYxRjY4MSAvKiBDb2RlQmxvY2suaCAqLywKIAkJCQkwRjhGOTQzRDE2Njc2MzJE
MDBENjE5NzEgLyogQ29kZUJsb2NrSGFzaC5jcHAgKi8sCkBAIC01ODc3LDYgKzU4OTgsNyBAQAog
CQkJCTBGRkZDOTVBMTRFRjkwQTkwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYyRkM3NzMxNkUxMkY3NDAwMzhEOTc2IC8qIERGR0RDRVBoYXNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjhGMkI5QTE3MkYwNTAxMDA3REJEQTUgLyogREZHRGVzaXJlZElkZW50
aWZpZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjNCN0UyODE5QTExQjgwMDBEOUJDNTYgLyog
Q2FsbEVkZ2VQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkMwRjdDRTE3QkJGQzVCMDA0
NjRGRTQgLyogREZHRGVzaXJlZFRyYW5zaXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU4
NTM0QzE3MjNDREE1MDBCNjE4RjUgLyogREZHRGVzaXJlZFdhdGNocG9pbnRzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDMjk4MUZEOTE3QkFFRTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZl
cmVuY2VzLmggaW4gSGVhZGVycyAqLywKQEAgLTYxNDYsNiArNjE2OCw3IEBACiAJCQkJMEY3NjZE
MzExNUFBODExMjAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjc2NkQyQzE1QThDQzNBMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0QzUyNDJCMEY1MzU1RTkwMEJBM0QwNCAvKiBKSVRTdHVicy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEYzQjdFMkIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRUY2ODM1RTE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1YnNB
Uk0uaCBpbiBIZWFkZXJzICovLAogCQkJCUZFRjY4MzVGMTc0MzQzQ0MwMEEzMkUyNSAvKiBKSVRT
dHVic0FSTXY3LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUY2ODM2MTE3NDM0M0NDMDBBMzJFMjUg
LyogSklUU3R1YnNYODYuaCBpbiBIZWFkZXJzICovLApAQCAtNjE1Nyw2ICs2MTgwLDcgQEAKIAkJ
CQlBNzZGNTRBMzEzQjI4QUFCMDBFRjJCQ0UgLyogSklUV3JpdGVCYXJyaWVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzE4QzQxNjBFMTZGNUNEMDBCMzQ0NjAgLyogSlNBY3RpdmF0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NDA0ODAxMzEwMjFBMUQ5MDA4RTdGMDEgLyogSlNBUElWYWx1ZVdy
YXBwZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGM0I3RTI5MTlBMTFCODAwMEQ5QkM1NiAvKiBD
YWxsRWRnZVByb2ZpbGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkNGMzlDMjE2RTE1
QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NzYxNDBEMjE4Mjk4MkNCMDA3NTA2MjQgLyogSlNBcmd1bWVudHNJdGVyYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEM0MTcwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQXJyYXkuaCBpbiBIZWFk
ZXJzICovLApAQCAtNjQ3MSw2ICs2NDk1LDcgQEAKIAkJCQlFNDlEQzE2QzEyRUYyOTRFMDAxODRB
MUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ5REMxNkQx
MkVGMjk1MzAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkI3RjM5RTE1RUQ4RTQ2MDBGMTY3QjIgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEYzQjdFMjYxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzM4NjU1NDExODY5N0I0MDA1NDAyNzkgLyogU3BlY2lh
bGl6ZWRUaHVua0pJVC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NTQxQjIxNjEzQzFGQjAwQ0Uz
RTI1IC8qIFNwZWNpYWxQb2ludGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4MkU1NDE0MURB
RUVFMDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtNzMyNCw2
ICs3MzQ5LDcgQEAKIAkJCQkwRjIzNUJENTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3Vt
ZW50Rm9yT3BlcmFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJEODE3MTc4RTFDMDA2
OTBDN0YgLyogRlRMRXhpdFRodW5rR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MjM1QkRBMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMEYzQjdFMjcxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBN0YyOTk2QjE3QTBCQjY3MDAxMDQxN0EgLyogRlRMRmFpbC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkQ4QTMxOTE3RDUxRjIyMDBDQTJDNDAgLyogRlRMRm9yT1NS
RW50cnlKSVRDb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjVGMUFGMTgxNjM1RjMwMDUy
MkYzOSAvKiBGVExJbmxpbmVDYWNoZVNpemUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03NTEwLDYg
Kzc1MzYsNyBAQAogCQkJCTBGNDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAvKiBMTEludERhdGEuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzOEIwMTExN0NGMDc4MDAwQjE0NEQzIC8qIExMSW50RW50
cnlwb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIg
LyogTExJbnRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGM0I3RTJEMTlBMTJB
QUUwMEQ5QkM1NiAvKiBDYWxsRWRnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ2ODBBNDE0
QkE3RjhEMDBCRkUyNzIgLyogTExJbnRTbG93UGF0aHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGQ0VGQUNEMTgwNUU3NTUwMDQ3MkNFNCAvKiBMTFZNQVBJLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtNzY3MCw2ICs3Njk3LDcgQEAKIAkJCQkxNEU4NEZBMDE0RUUxQUNDMDBENkQ1RDQg
LyogV2Vha1NldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyQTRFQzkwQjE4NjBENkMyMDA5NEY3
ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzgxNTBC
MTQwNDNDMEUwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTBGM0I3RTJBMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBN0U1QUIzQTE3OTlFNEIyMDBEMjgzM0QgLyogWDg2RGlzYXNzZW1ibGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2M0M2RDlDMTUyMTExMUEwMDU4NUU0RSAvKiBZYXJy
Q2Fub25pY2FsaXplVUNTMi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI4NDEyREJBMzM3
MDBBOUZFN0IgLyogWWFyckludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDYWxsRWRnZS5oIgor
CituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBDYWxsRWRnZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdAoreworICAgIG91dC5wcmludCgiPCIsIG1fY2FsbGVlLCAiLCBjb3VudDogIiwgbV9j
b3VudCwgIj4iKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIENhbGxFZGdlX2gKKyNkZWZpbmUgQ2FsbEVkZ2VfaAorCisjaW5jbHVkZSAiQ2FsbFZh
cmlhbnQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3R5cGVkZWYgdWludDE2X3QgQ2FsbEVkZ2VD
b3VudFR5cGU7CisKK2NsYXNzIENhbGxFZGdlIHsKK3B1YmxpYzoKKyAgICBDYWxsRWRnZSgpOwor
ICAgIENhbGxFZGdlKENhbGxWYXJpYW50IGNhbGxlZSwgQ2FsbEVkZ2VDb3VudFR5cGUgY291bnQp
OworICAgIAorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fY2FsbGVlOyB9
CisgICAgCisgICAgQ2FsbFZhcmlhbnQgY2FsbGVlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsZWU7
IH0KKyAgICBDYWxsRWRnZUNvdW50VHlwZSBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnQ7
IH0KKyAgICAKKyAgICBDYWxsRWRnZSBkZXNwZWNpZmllZENsb3N1cmUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIENhbGxFZGdlKG1fY2FsbGVlLmRlc3BlY2lmaWVkQ2xvc3VyZSgpLCBt
X2NvdW50KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7
CisgICAgCitwdWJsaWM6CisgICAgQ2FsbFZhcmlhbnQgbV9jYWxsZWU7CisgICAgQ2FsbEVkZ2VD
b3VudFR5cGUgbV9jb3VudDsKK307CisKK2lubGluZSBDYWxsRWRnZTo6Q2FsbEVkZ2UoQ2FsbFZh
cmlhbnQgY2FsbGVlLCBDYWxsRWRnZUNvdW50VHlwZSBjb3VudCkKKyAgICA6IG1fY2FsbGVlKGNh
bGxlZSkKKyAgICAsIG1fY291bnQoY291bnQpCit7Cit9CisKK2lubGluZSBDYWxsRWRnZTo6Q2Fs
bEVkZ2UoKQorICAgIDogQ2FsbEVkZ2UoQ2FsbFZhcmlhbnQoKSwgMCkKK3sKK30KKwordHlwZWRl
ZiBWZWN0b3I8Q2FsbEVkZ2UsIDE+IENhbGxFZGdlTGlzdDsKKworfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBDYWxsRWRnZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwzNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNhbGxFZGdlUHJv
ZmlsZS5oIgorCisjaW5jbHVkZSAiQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oIgorI2luY2x1ZGUg
IkNDYWxsSGVscGVycy5oIgorI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitDYWxsRWRnZUxpc3QgQ2FsbEVkZ2VQ
cm9maWxlOjpjYWxsRWRnZXMoKSBjb25zdAoreworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9j
a2VyKG1fbG9jayk7CisgICAgCisgICAgQ2FsbEVkZ2VMaXN0IHJlc3VsdDsKKyAgICAKKyAgICBD
YWxsVmFyaWFudCBwcmltYXJ5Q2FsbGVlID0gbV9wcmltYXJ5Q2FsbGVlOworICAgIGZsb2F0IG51
bUNhbGxzVG9QcmltYXJ5ID0gbV9udW1DYWxsc1RvUHJpbWFyeTsKKyAgICAvLyBEZWZlbmQgYWdh
aW5zdCByYWNlcy4gVGhlc2UgZmllbGRzIGFyZSBtb2RpZmllZCBieSB0aGUgbG9nIHByb2Nlc3Nv
ciB3aXRob3V0IGxvY2tpbmcuCisgICAgaWYgKCEhcHJpbWFyeUNhbGxlZSAmJiBudW1DYWxsc1Rv
UHJpbWFyeSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZChDYWxsRWRnZShwcmltYXJ5Q2FsbGVlLCBu
dW1DYWxsc1RvUHJpbWFyeSkpOworICAgIAorICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhhdCBpZiB0aGUgcHJpbWFyeSB0aHJlYWQgaGFkIGp1c3QgY3Jl
YXRlZCBhIG1fb3RoZXJDYWxsZXMgd2hpbGUgbG9nCisgICAgICAgIC8vIHByb2Nlc3NpbmcsIHdl
IHNlZSBhIGNvbnNpc3RlbnRseSBjcmVhdGVkIG9uZS4gVGhlIGxvY2sgYmVpbmcgaGVsZCBpcyBp
bnN1ZmZpY2llbnQgZm9yCisgICAgICAgIC8vIHRoaXMsIHNpbmNlIHRoZSBsb2cgcHJvY2Vzc29y
IHdpbGwgb25seSBncmFiIHRoZSBsb2NrIHdoZW4gbWVyZ2luZyB0aGUgc2Vjb25kYXJ5CisgICAg
ICAgIC8vIHNwZWN0cnVtIGludG8gdGhlIHByaW1hcnkgb25lIGJ1dCBtYXkgc3RpbGwgY3JlYXRl
IHRoZSBkYXRhIHN0cnVjdHVyZSB3aXRob3V0IGhvbGRpbmcKKyAgICAgICAgLy8gbG9ja3MuCisg
ICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOworICAgICAgICBmb3IgKENhbGxFZGdlIGVudHJ5
IDogbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkKSB7CisgICAgICAgICAgICAvLyBEZWZlbmQg
YWdhaW5zdCB0aGUgcG9zc2liaWxpdHkgdGhhdCB0aGUgcHJpbWFyeSBkdXBsaWNhdGVzIGFuIGVu
dHJ5IGluIHRoZSBzZWNvbmRhcnkKKyAgICAgICAgICAgIC8vIHNwZWN0cnVtLiBUaGF0IGNhbiBo
YXBwZW4gd2hlbiB0aGUgR0MgcmVtb3ZlcyB0aGUgcHJpbWFyeS4gV2UgY291bGQgaGF2ZSB0aGUg
R0MgZml4CisgICAgICAgICAgICAvLyB0aGUgc2l0dWF0aW9uIGJ5IGNoYW5naW5nIHRoZSBwcmlt
YXJ5IHRvIGJlIHNvbWV0aGluZyBmcm9tIHRoZSBzZWNvbmRhcnkgc3BlY3RydW0sCisgICAgICAg
ICAgICAvLyBidXQgdGhpcyBmaXggc2VlbXMgc2ltcGxlciB0byBpbXBsZW1lbnQgYW5kIGFsc28g
Y2hlYXBlci4KKyAgICAgICAgICAgIGlmIChlbnRyeS5jYWxsZWUoKSA9PSByZXN1bHRbMF0uY2Fs
bGVlKCkpIHsKKyAgICAgICAgICAgICAgICByZXN1bHRbMF0gPSBDYWxsRWRnZShyZXN1bHRbMF0u
Y2FsbGVlKCksIGVudHJ5LmNvdW50KCkgKyByZXN1bHRbMF0uY291bnQoKSk7CisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoZW50cnkpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHN0ZDo6
c29ydChyZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpLCBbXSAoY29uc3QgQ2FsbEVkZ2UmIGEs
IGNvbnN0IENhbGxFZGdlJiBiKSAtPiBib29sIHsKKyAgICAgICAgICAgIHJldHVybiBhLmNvdW50
KCkgPiBiLmNvdW50KCk7CisgICAgICAgIH0pOworICAgIAorICAgIGlmIChyZXN1bHQuc2l6ZSgp
ID49IDIpCisgICAgICAgIEFTU0VSVChyZXN1bHRbMF0uY291bnQoKSA+PSByZXN1bHQubGFzdCgp
LmNvdW50KCkpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0NhbGxFZGdlQ291bnRU
eXBlIENhbGxFZGdlUHJvZmlsZTo6bnVtQ2FsbHNUb0tub3duQ2VsbHMoKSBjb25zdAoreworICAg
IENhbGxFZGdlQ291bnRUeXBlIHJlc3VsdCA9IDA7CisgICAgZm9yIChDYWxsRWRnZSBlZGdlIDog
Y2FsbEVkZ2VzKCkpCisgICAgICAgIHJlc3VsdCArPSBlZGdlLmNvdW50KCk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworc3RhdGljIGJvb2wgd29ydGhEZXNwZWNpZnlpbmcoY29uc3QgQ2FsbFZh
cmlhbnQmIHZhcmlhbnQpCit7CisgICAgcmV0dXJuICFIZWFwOjppc01hcmtlZCh2YXJpYW50LnJh
d0NhbGxlZUNlbGwoKSkKKyAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQodmFyaWFudC5kZXNwZWNp
ZmllZENsb3N1cmUoKS5yYXdDYWxsZWVDZWxsKCkpOworfQorCitib29sIENhbGxFZGdlUHJvZmls
ZTo6d29ydGhEZXNwZWNpZnlpbmcoKQoreworICAgIGlmIChtX2Nsb3N1cmVzQXJlRGVzcGVjaWZp
ZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoISFtX3ByaW1hcnlDYWxs
ZWUgJiYgIUpTQzo6d29ydGhEZXNwZWNpZnlpbmcobV9wcmltYXJ5Q2FsbGVlKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpLS07
KSB7CisgICAgICAgICAgICBpZiAoIUpTQzo6d29ydGhEZXNwZWNpZnlpbmcobV9vdGhlckNhbGxl
ZXMtPm1fcHJvY2Vzc2VkW2ldLmNhbGxlZSgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
Q2FsbEVkZ2VQcm9maWxlOjp2aXNpdFdlYWsoKQoreworICAgIGlmICghbV9wcmltYXJ5Q2FsbGVl
ICYmICFtX290aGVyQ2FsbGVlcykKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIENvbmN1cnJl
bnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCisgICAgLy8gU2VlIGlmIGFueXRoaW5n
IGlzIGRlYWQgYW5kIGlmIHRoYXQgY2FuIGJlIHJlY3RpZmllZCBieSBkZXNwZWNpZnlpbmcuCisg
ICAgaWYgKHdvcnRoRGVzcGVjaWZ5aW5nKCkpIHsKKyAgICAgICAgQ2FsbFNwZWN0cnVtIG5ld1Nw
ZWN0cnVtOworICAgICAgICAKKyAgICAgICAgaWYgKCEhbV9wcmltYXJ5Q2FsbGVlKQorICAgICAg
ICAgICAgbmV3U3BlY3RydW0uYWRkKG1fcHJpbWFyeUNhbGxlZS5kZXNwZWNpZmllZENsb3N1cmUo
KSwgbV9udW1DYWxsc1RvUHJpbWFyeSk7CisgICAgICAgIAorICAgICAgICBpZiAobV9vdGhlckNh
bGxlZXMpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fb3RoZXJDYWxsZWVzLT5t
X3Byb2Nlc3NlZC5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICBuZXdTcGVjdHJ1bS5h
ZGQoCisgICAgICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5j
YWxsZWUoKS5kZXNwZWNpZmllZENsb3N1cmUoKSwKKyAgICAgICAgICAgICAgICAgICAgbV9vdGhl
ckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNvdW50KCkpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIFZlY3RvcjxDYWxsU3Bl
Y3RydW06OktleUFuZENvdW50PiBsaXN0ID0gbmV3U3BlY3RydW0uYnVpbGRMaXN0KCk7CisgICAg
ICAgIEFTU0VSVChsaXN0LnNpemUoKSk7CisgICAgICAgIG1fcHJpbWFyeUNhbGxlZSA9IGxpc3Qu
bGFzdCgpLmtleTsKKyAgICAgICAgbV9udW1DYWxsc1RvUHJpbWFyeSA9IGxpc3QubGFzdCgpLmNv
dW50OworICAgICAgICAKKyAgICAgICAgQVNTRVJUKCEhbV9vdGhlckNhbGxlZXMgPT0gKGxpc3Qu
c2l6ZSgpID49IDIpKTsKKyAgICAgICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgICAg
ICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuY2xlYXIoKTsKKyAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IGxpc3Quc2l6ZSgpIC0gMTsgaS0tOykKKyAgICAgICAgICAgICAgICBtX290
aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuYXBwZW5kKENhbGxFZGdlKGxpc3RbaV0ua2V5LCBsaXN0
W2ldLmNvdW50KSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG1fY2xvc3VyZXNBcmVE
ZXNwZWNpZmllZCA9IHRydWU7CisgICAgICAgIAorICAgICAgICByZXR1cm47CisgICAgfQorICAg
IAorICAgIGlmICghIW1fcHJpbWFyeUNhbGxlZSAmJiAhSGVhcDo6aXNNYXJrZWQobV9wcmltYXJ5
Q2FsbGVlLnJhd0NhbGxlZUNlbGwoKSkpIHsKKyAgICAgICAgbV9udW1DYWxsc1RvVW5rbm93bkNl
bGwgKz0gbV9udW1DYWxsc1RvUHJpbWFyeTsKKyAgICAgICAgCisgICAgICAgIG1fcHJpbWFyeUNh
bGxlZSA9IENhbGxWYXJpYW50KCk7CisgICAgICAgIG1fbnVtQ2FsbHNUb1ByaW1hcnkgPSAwOwor
ICAgIH0KKyAgICAKKyAgICBpZiAobV9vdGhlckNhbGxlZXMpIHsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5zaXplKCk7IGkrKykg
eworICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nl
c3NlZFtpXS5jYWxsZWUoKS5yYXdDYWxsZWVDZWxsKCkpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBtX251bUNhbGxzVG9Vbmtub3duQ2VsbCAr
PSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQoKTsKKyAgICAgICAgICAgIG1f
b3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpLS1dID0gbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vz
c2VkLmxhc3QoKTsKKyAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5yZW1v
dmVMYXN0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIE9ubHkgZXhpc3RzIHdo
aWxlIHdlIGFyZSBwcm9jZXNzaW5nIHRoZSBsb2cuCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFt
X290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSk7CisgICAgfQorfQorCit2b2lkIENh
bGxFZGdlUHJvZmlsZTo6YWRkU2xvdyhDYWxsVmFyaWFudCBjYWxsZWUsIENhbGxFZGdlUHJvZmls
ZVZlY3RvciYgbWVyZ2VCYWNrTG9nKQoreworICAgIC8vIFRoaXMgZXhpc3RzIHRvIGhhbmRsZSBj
YXNlcyB3aGVyZSB0aGUgc3BlY3RydW0gd2Fzbid0IGNyZWF0ZWQgeWV0LCBvciB3ZSdyZSBzdG9y
aW5nIHRvIGEKKyAgICAvLyBwYXJ0aWN1bGFyIHNwZWN0cnVtIGZvciB0aGUgZmlyc3QgdGltZSBk
dXJpbmcgYSBsb2cgcHJvY2Vzc2luZyBpdGVyYXRpb24uCisgICAgCisgICAgaWYgKCFtX290aGVy
Q2FsbGVlcykgeworICAgICAgICBtX290aGVyQ2FsbGVlcyA9IHN0ZDo6bWFrZV91bmlxdWU8U2Vj
b25kYXJ5PigpOworICAgICAgICAvLyBJZiBhIGNvbXBpbGVyIHRocmVhZCBub3RpY2VzIHRoZSBt
X290aGVyQ2FsbGVlcyBiZWluZyBub24tbnVsbCwgd2Ugd2FudCB0byBtYWtlIHN1cmUKKyAgICAg
ICAgLy8gdGhhdCBpdCBzZWVzIGEgZnVsbHkgY3JlYXRlZCBvbmUuCisgICAgICAgIFdURjo6c3Rv
cmVTdG9yZUZlbmNlKCk7CisgICAgfQorICAgIAorICAgIGlmICghbV9vdGhlckNhbGxlZXMtPm1f
dGVtcG9yYXJ5U3BlY3RydW0pIHsKKyAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5
U3BlY3RydW0gPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxTcGVjdHJ1bT4oKTsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLnNpemUoKTsgaS0tOykg
eworICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0tPmFkZCgK
KyAgICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCks
CisgICAgICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNvdW50KCkp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgdGhpcyBp
cyB0aGUgZmlyc3QgdGltZSB3ZSdyZSBzZWVpbmcgdGhpcyBwcm9maWxlIGR1cmluZyB0aGlzIGxv
ZworICAgICAgICAvLyBwcm9jZXNzaW5nIGl0ZXJhdGlvbi4KKyAgICAgICAgbWVyZ2VCYWNrTG9n
LmFwcGVuZCh0aGlzKTsKKyAgICB9CisgICAgCisgICAgbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9y
YXJ5U3BlY3RydW0tPmFkZChjYWxsZWUpOworfQorCit2b2lkIENhbGxFZGdlUHJvZmlsZTo6bWVy
Z2VCYWNrKCkKK3sKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAg
IAorICAgIEFTU0VSVChtX290aGVyQ2FsbGVlcyk7CisgICAgQVNTRVJUKG1fb3RoZXJDYWxsZWVz
LT5tX3RlbXBvcmFyeVNwZWN0cnVtKTsKKyAgICAKKyAgICBpZiAoISFtX3ByaW1hcnlDYWxsZWUp
CisgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5hZGQobV9wcmlt
YXJ5Q2FsbGVlLCBtX251bUNhbGxzVG9QcmltYXJ5KTsKKyAgICAKKyAgICBpZiAoIW1fY2xvc3Vy
ZXNBcmVEZXNwZWNpZmllZCkgeworICAgICAgICBDYWxsU3BlY3RydW0gbmV3U3BlY3RydW07Cisg
ICAgICAgIGZvciAoYXV0byBlbnRyeSA6ICptX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVj
dHJ1bSkKKyAgICAgICAgICAgIG5ld1NwZWN0cnVtLmFkZChlbnRyeS5rZXkuZGVzcGVjaWZpZWRD
bG9zdXJlKCksIGVudHJ5LnZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChuZXdTcGVjdHJ1
bS5zaXplKCkgPCBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+c2l6ZSgpKSB7
CisgICAgICAgICAgICAqbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0gPSBuZXdT
cGVjdHJ1bTsKKyAgICAgICAgICAgIG1fY2xvc3VyZXNBcmVEZXNwZWNpZmllZCA9IHRydWU7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgCisgICAgVmVjdG9yPENhbGxTcGVjdHJ1bTo6S2V5QW5kQ291
bnQ+IGxpc3QgPSBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+YnVpbGRMaXN0
KCk7CisgICAgbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0gPSBudWxscHRyOwor
ICAgIAorICAgIG1fcHJpbWFyeUNhbGxlZSA9IGxpc3QubGFzdCgpLmtleTsKKyAgICBtX251bUNh
bGxzVG9QcmltYXJ5ID0gbGlzdC5sYXN0KCkuY291bnQ7CisgICAgbGlzdC5yZW1vdmVMYXN0KCk7
CisgICAgCisgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLmNsZWFyKCk7CisgICAgZm9y
ICh1bnNpZ25lZCBjb3VudCA9IG1heEtub3duQ2FsbGVlczsgY291bnQtLSAmJiAhbGlzdC5pc0Vt
cHR5KCk7KSB7CisgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5hcHBlbmQoQ2Fs
bEVkZ2UobGlzdC5sYXN0KCkua2V5LCBsaXN0Lmxhc3QoKS5jb3VudCkpOworICAgICAgICBsaXN0
LnJlbW92ZUxhc3QoKTsKKyAgICB9CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gbGlzdC5z
aXplKCk7IGktLTspCisgICAgICAgIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxsICs9IGxpc3RbaV0u
Y291bnQ7Cit9CisKK3ZvaWQgQ2FsbEVkZ2VQcm9maWxlOjpmYWRlQnlIYWxmKCkKK3sKKyAgICBt
X251bUNhbGxzVG9QcmltYXJ5ID4+PSAxOworICAgIG1fbnVtQ2FsbHNUb05vdENlbGwgPj49IDE7
CisgICAgbV9udW1DYWxsc1RvVW5rbm93bkNlbGwgPj49IDE7CisgICAgbV90b3RhbENvdW50ID4+
PSAxOworICAgIAorICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpLS07KSB7CisgICAg
ICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0gPSBDYWxsRWRnZSgKKyAgICAg
ICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCksCisgICAg
ICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNvdW50KCkgPj4gMSk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChtX290aGVyQ2FsbGVlcy0+bV90ZW1w
b3JhcnlTcGVjdHJ1bSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGVudHJ5IDogKm1fb3RoZXJD
YWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtKQorICAgICAgICAgICAgICAgIGVudHJ5LnZhbHVl
ID4+PSAxOworICAgICAgICB9CisgICAgfQorfQorCitDYWxsRWRnZUxvZzo6Q2FsbEVkZ2VMb2co
KQorICAgIDogbV9zY2FsZWRMb2dJbmRleChsb2dTaXplICogc2l6ZW9mKEVudHJ5KSkKK3sKKyAg
ICBBU1NFUlQoIShtX3NjYWxlZExvZ0luZGV4ICUgc2l6ZW9mKEVudHJ5KSkpOworfQorCitDYWxs
RWRnZUxvZzo6fkNhbGxFZGdlTG9nKCkgeyB9CisKK2Jvb2wgQ2FsbEVkZ2VMb2c6OmlzRW5hYmxl
ZCgpCit7CisgICAgcmV0dXJuIE9wdGlvbnM6OmVuYWJsZUNhbGxFZGdlUHJvZmlsaW5nKCkgJiYg
T3B0aW9uczo6dXNlRlRMSklUKCk7Cit9CisKKyNpZiBFTkFCTEUoSklUKQorCitleHRlcm4gIkMi
IEpJVF9PUEVSQVRJT04gdm9pZCBvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2coQ2FsbEVkZ2VM
b2cqKSBXVEZfSU5URVJOQUw7CitleHRlcm4gIkMiIEpJVF9PUEVSQVRJT04gdm9pZCBvcGVyYXRp
b25Qcm9jZXNzQ2FsbEVkZ2VMb2coQ2FsbEVkZ2VMb2cqIGxvZykKK3sKKyAgICBsb2ctPnByb2Nl
c3NMb2coKTsKK30KKwordm9pZCBDYWxsRWRnZUxvZzo6ZW1pdExvZ0NvZGUoQ0NhbGxIZWxwZXJz
JiBqaXQsIENhbGxFZGdlUHJvZmlsZSYgcHJvZmlsZSwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncykK
K3sKKyAgICBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50cyA9IDE7CisgICAgCisgICAg
R1BSUmVnIHNjcmF0Y2hHUFI7CisgICAgaWYgKCFjYWxsZWVSZWdzLnVzZXMoR1BSSW5mbzo6cmVn
VDApKQorICAgICAgICBzY3JhdGNoR1BSID0gR1BSSW5mbzo6cmVnVDA7CisgICAgZWxzZSBpZiAo
IWNhbGxlZVJlZ3MudXNlcyhHUFJJbmZvOjpyZWdUMSkpCisgICAgICAgIHNjcmF0Y2hHUFIgPSBH
UFJJbmZvOjpyZWdUMTsKKyAgICBlbHNlCisgICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJbmZvOjpy
ZWdUMjsKKyAgICAKKyAgICBqaXQubG9hZDMyKCZtX3NjYWxlZExvZ0luZGV4LCBzY3JhdGNoR1BS
KTsKKyAgICAKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgb2sgPSBqaXQuYnJhbmNoVGVzdDMyKEND
YWxsSGVscGVyczo6Tm9uWmVybywgc2NyYXRjaEdQUik7CisgICAgCisgICAgQVNTRVJUKHN0YWNr
QWxpZ25tZW50UmVnaXN0ZXJzKCkgPj0gMSArIG51bWJlck9mQXJndW1lbnRzKTsKKyAgICAKKyAg
ICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHN0YWNrQWxpZ25tZW50Qnl0
ZXMoKSksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIAorICAgIGpp
dC5zdG9yZVZhbHVlKGNhbGxlZVJlZ3MsIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBl
cnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzaXplb2YoSlNWYWx1ZSkpKTsKKyAgICBqaXQuc2V0
dXBBcmd1bWVudHMoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRoaXMpKTsKKyAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihvcGVy
YXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2cpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgaml0
LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgaml0LmxvYWRWYWx1ZShDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2l6ZW9mKEpT
VmFsdWUpKSwgY2FsbGVlUmVncyk7CisgICAgCisgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihzdGFja0FsaWdubWVudEJ5dGVzKCkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKKyAgICAKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihsb2dTaXplICogc2l6ZW9mKEVudHJ5KSksIHNjcmF0Y2hHUFIpOworICAgIG9rLmxp
bmsoJmppdCk7CisKKyAgICBqaXQuc3ViMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2l6
ZW9mKEVudHJ5KSksIHNjcmF0Y2hHUFIpOworICAgIGppdC5zdG9yZTMyKHNjcmF0Y2hHUFIsICZt
X3NjYWxlZExvZ0luZGV4KTsKKyAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihtX2xvZyksIHNjcmF0Y2hHUFIpOworICAgIGppdC5zdG9yZVZhbHVlKGNhbGxlZVJlZ3Ms
IENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW50cnks
IG1fdmFsdWUpKSk7CisgICAgaml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cigmcHJvZmlsZSksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZG
U0VUT0YoRW50cnksIG1fcHJvZmlsZSkpKTsKK30KKwordm9pZCBDYWxsRWRnZUxvZzo6ZW1pdExv
Z0NvZGUoCisgICAgQ0NhbGxIZWxwZXJzJiBqaXQsIE93blB0cjxDYWxsRWRnZVByb2ZpbGU+JiBw
cm9maWxlUG9pbnRlciwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncykKK3sKKyAgICBpZiAoIWlzRW5h
YmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgcHJvZmlsZVBvaW50ZXIuY3JlYXRl
VHJhbnNhY3Rpb25hbGx5KCk7CisgICAgZW1pdExvZ0NvZGUoaml0LCAqcHJvZmlsZVBvaW50ZXIs
IGNhbGxlZVJlZ3MpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKwordm9pZCBDYWxsRWRn
ZUxvZzo6cHJvY2Vzc0xvZygpCit7CisgICAgQVNTRVJUKCEobV9zY2FsZWRMb2dJbmRleCAlIHNp
emVvZihFbnRyeSkpKTsKKyAgICAKKyAgICBDYWxsRWRnZVByb2ZpbGVWZWN0b3IgbWVyZ2VCYWNr
TG9nOworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IG1fc2NhbGVkTG9nSW5kZXggLyBzaXpl
b2YoRW50cnkpOyBpIDwgbG9nU2l6ZTsgKytpKQorICAgICAgICBtX2xvZ1tpXS5tX3Byb2ZpbGUt
PmFkZChtX2xvZ1tpXS5tX3ZhbHVlLCBtZXJnZUJhY2tMb2cpOworICAgIAorICAgIG1fc2NhbGVk
TG9nSW5kZXggPSBsb2dTaXplICogc2l6ZW9mKEVudHJ5KTsKKyAgICAKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSBtZXJnZUJhY2tMb2cuc2l6ZSgpOyBpLS07KQorICAgICAgICBtZXJnZUJhY2tMb2db
aV0tPm1lcmdlQmFjaygpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENhbGxFZGdlUHJvZmlsZV9oCisjZGVm
aW5lIENhbGxFZGdlUHJvZmlsZV9oCisKKyNpbmNsdWRlICJDYWxsRWRnZS5oIgorI2luY2x1ZGUg
IkNhbGxWYXJpYW50LmgiCisjaW5jbHVkZSAiQ29uY3VycmVudEpJVExvY2suaCIKKyNpbmNsdWRl
ICJKU0NlbGwuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBDQ2FsbEhlbHBlcnM7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKK2Ns
YXNzIENhbGxFZGdlTG9nOworY2xhc3MgQ2FsbEVkZ2VQcm9maWxlOwordHlwZWRlZiBWZWN0b3I8
Q2FsbEVkZ2VQcm9maWxlKiwgMTA+IENhbGxFZGdlUHJvZmlsZVZlY3RvcjsKKworY2xhc3MgQ2Fs
bEVkZ2VQcm9maWxlIHsKK3B1YmxpYzoKKyAgICBDYWxsRWRnZVByb2ZpbGUoKTsKKyAgICAKKyAg
ICBDYWxsRWRnZUNvdW50VHlwZSBudW1DYWxsc1RvTm90Q2VsbCgpIGNvbnN0IHsgcmV0dXJuIG1f
bnVtQ2FsbHNUb05vdENlbGw7IH0KKyAgICBDYWxsRWRnZUNvdW50VHlwZSBudW1DYWxsc1RvVW5r
bm93bkNlbGwoKSBjb25zdCB7IHJldHVybiBtX251bUNhbGxzVG9Vbmtub3duQ2VsbDsgfQorICAg
IENhbGxFZGdlQ291bnRUeXBlIG51bUNhbGxzVG9Lbm93bkNlbGxzKCkgY29uc3Q7CisgICAgCisg
ICAgLy8gQ2FsbCB3aGlsZSBob2xkaW5nIHRoZSBvd25pbmcgQ29kZUJsb2NrJ3MgbG9jay4KKyAg
ICBDYWxsRWRnZUxpc3QgY2FsbEVkZ2VzKCkgY29uc3Q7CisgICAgCisgICAgdm9pZCB2aXNpdFdl
YWsoKTsKKyAgICAKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIENhbGxFZGdlTG9nOworICAg
IAorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhLbm93bkNhbGxlZXMgPSA1OworICAgIAor
ICAgIHZvaWQgYWRkKEpTVmFsdWUsIENhbGxFZGdlUHJvZmlsZVZlY3RvciYgbWVyZ2VCYWNrTG9n
KTsKKyAgICAKKyAgICBib29sIHdvcnRoRGVzcGVjaWZ5aW5nKCk7CisgICAgdm9pZCBhZGRTbG93
KENhbGxWYXJpYW50LCBDYWxsRWRnZVByb2ZpbGVWZWN0b3ImIG1lcmdlQmFja0xvZyk7CisgICAg
dm9pZCBtZXJnZUJhY2soKTsKKyAgICB2b2lkIGZhZGVCeUhhbGYoKTsKKyAgICAKKyAgICAvLyBJ
dCdzIGNoZWFwZXIgdG8gbGV0IHRoaXMgaGF2ZSBpdHMgb3duIGxvY2suIEl0IG5lZWRzIHRvIGJl
IGFibGUgdG8gZmluZCB3aGljaCBsb2NrIHRvCisgICAgLy8gbG9jay4gTm9ybWFsbHkgaXQgd291
bGQgbG9jayB0aGUgb3duaW5nIENvZGVCbG9jaydzIGxvY2ssIGJ1dCB0aGF0IHdvdWxkIHJlcXVp
cmUgYQorICAgIC8vIHBvaW50ZXItd2lkdGggd29yZCB0byBwb2ludCBhdCB0aGUgQ29kZUJsb2Nr
LiBIYXZpbmcgdGhlIGJ5dGUtc2l6ZWQgbG9jayBoZXJlIGlzCisgICAgLy8gY2hlYXBlci4gSG93
ZXZlciwgdGhpcyBtZWFucyB0aGF0IHRoZSByZWxhdGlvbnNoaXAgd2l0aCB0aGUgQ29kZUJsb2Nr
IGxvY2sgaXM6CisgICAgLy8gYWNxdWlyZSB0aGUgQ29kZUJsb2NrIGxvY2sgYmVmb3JlIHRoaXMg
b25lLgorICAgIG11dGFibGUgQ29uY3VycmVudEpJVExvY2sgbV9sb2NrOworICAgIAorICAgIGJv
b2wgbV9jbG9zdXJlc0FyZURlc3BlY2lmaWVkOworICAgIAorICAgIENhbGxFZGdlQ291bnRUeXBl
IG1fbnVtQ2FsbHNUb1ByaW1hcnk7CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbV9udW1DYWxsc1Rv
Tm90Q2VsbDsKKyAgICBDYWxsRWRnZUNvdW50VHlwZSBtX251bUNhbGxzVG9Vbmtub3duQ2VsbDsK
KyAgICBDYWxsRWRnZUNvdW50VHlwZSBtX3RvdGFsQ291bnQ7CisgICAgQ2FsbFZhcmlhbnQgbV9w
cmltYXJ5Q2FsbGVlOworICAgIAorICAgIHR5cGVkZWYgU3BlY3RydW08Q2FsbFZhcmlhbnQsIENh
bGxFZGdlQ291bnRUeXBlPiBDYWxsU3BlY3RydW07CisgICAgCisgICAgc3RydWN0IFNlY29uZGFy
eSB7CisgICAgICAgIFZlY3RvcjxDYWxsRWRnZT4gbV9wcm9jZXNzZWQ7IC8vIFByb2Nlc3NlZCBi
dXQgbm90IG5lY2Vzc2FyaWx5IHNvcnRlZC4KKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxT
cGVjdHJ1bT4gbV90ZW1wb3JhcnlTcGVjdHJ1bTsKKyAgICB9OworICAgIAorICAgIHN0ZDo6dW5p
cXVlX3B0cjxTZWNvbmRhcnk+IG1fb3RoZXJDYWxsZWVzOworfTsKKworY2xhc3MgQ2FsbEVkZ2VM
b2cgeworcHVibGljOgorICAgIENhbGxFZGdlTG9nKCk7CisgICAgfkNhbGxFZGdlTG9nKCk7CisK
KyAgICBzdGF0aWMgYm9vbCBpc0VuYWJsZWQoKTsKKyAgICAKKyNpZiBFTkFCTEUoSklUKQorICAg
IHZvaWQgZW1pdExvZ0NvZGUoQ0NhbGxIZWxwZXJzJiwgQ2FsbEVkZ2VQcm9maWxlJiwgSlNWYWx1
ZVJlZ3MgY2FsbGVlUmVncyk7IC8vIEFzc3VtZXMgdGhhdCBzdGFjayBpcyBhbGlnbmVkLCBhbGwg
dm9sYXRpbGUgcmVnaXN0ZXJzIC0gb3RoZXIgdGhhbiBjYWxsZWVHUFIgLSBhcmUgY2xvYmJlcmFi
bGUsIGFuZCB0aGUgcGFyYW1ldGVyIHNwYWNlIGlzIGluIHVzZS4KKyAgICAKKyAgICAvLyBTYW1l
IGFzIGFib3ZlIGJ1dCBjcmVhdGVzIGEgQ2FsbEVkZ2VQcm9maWxlIGluc3RhbmNlIGlmIG9uZSBk
aWQgbm90IGFscmVhZHkgZXhpc3QuIERvZXMKKyAgICAvLyB0aGlzIGluIGEgdGhyZWFkLXNhZmUg
bWFubmVyIGJ5IGNhbGxpbmcgT3duUHRyOjpjcmVhdGVUcmFuc2FjdGlvbmFsbHkuCisgICAgdm9p
ZCBlbWl0TG9nQ29kZShDQ2FsbEhlbHBlcnMmLCBPd25QdHI8Q2FsbEVkZ2VQcm9maWxlPiYsIEpT
VmFsdWVSZWdzIGNhbGxlZVJlZ3MpOworI2VuZGlmIC8vIEVOQUJMRShKSVQpCisgICAgCisgICAg
dm9pZCBwcm9jZXNzTG9nKCk7CisgICAgCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9nU2l6ZSA9
IDEwMDAwOworICAgIAorICAgIHN0cnVjdCBFbnRyeSB7CisgICAgICAgIEpTVmFsdWUgbV92YWx1
ZTsKKyAgICAgICAgQ2FsbEVkZ2VQcm9maWxlKiBtX3Byb2ZpbGU7CisgICAgfTsKKyAgICAKKyAg
ICB1bnNpZ25lZCBtX3NjYWxlZExvZ0luZGV4OworICAgIEVudHJ5IG1fbG9nW2xvZ1NpemVdOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDYWxsRWRnZVByb2ZpbGVfaAor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlSW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
RWRnZVByb2ZpbGVJbmxpbmVzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzX2gKKyNkZWZpbmUgQ2FsbEVkZ2VQcm9m
aWxlSW5saW5lc19oCisKKyNpbmNsdWRlICJDYWxsRWRnZVByb2ZpbGUuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2lubGluZSBDYWxsRWRnZVByb2ZpbGU6OkNhbGxFZGdlUHJvZmlsZSgpCisgICAg
OiBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQoZmFsc2UpCisgICAgLCBtX251bUNhbGxzVG9Qcmlt
YXJ5KDApCisgICAgLCBtX251bUNhbGxzVG9Ob3RDZWxsKDApCisgICAgLCBtX251bUNhbGxzVG9V
bmtub3duQ2VsbCgwKQorICAgICwgbV90b3RhbENvdW50KDApCisgICAgLCBtX3ByaW1hcnlDYWxs
ZWUobnVsbHB0cikKK3sKK30KKworQUxXQVlTX0lOTElORSB2b2lkIENhbGxFZGdlUHJvZmlsZTo6
YWRkKEpTVmFsdWUgdmFsdWUsIENhbGxFZGdlUHJvZmlsZVZlY3RvciYgbWVyZ2VCYWNrTG9nKQor
eworICAgIHVuc2lnbmVkIG5ld1RvdGFsQ291bnQgPSBtX3RvdGFsQ291bnQgKyAxOworICAgIGlm
IChVTkxJS0VMWSghbmV3VG90YWxDb3VudCkpIHsKKyAgICAgICAgZmFkZUJ5SGFsZigpOyAvLyBU
YWNrbGUgb3ZlcmZsb3dzIGJ5IGRpdmlkaW5nIGFsbCBjb3VudHMgYnkgdHdvLgorICAgICAgICBu
ZXdUb3RhbENvdW50ID0gbV90b3RhbENvdW50ICsgMTsKKyAgICB9CisgICAgQVNTRVJUKG5ld1Rv
dGFsQ291bnQpOworICAgIG1fdG90YWxDb3VudCA9IG5ld1RvdGFsQ291bnQ7CisgICAgCisgICAg
aWYgKFVOTElLRUxZKCF2YWx1ZS5pc0NlbGwoKSkpIHsKKyAgICAgICAgbV9udW1DYWxsc1RvTm90
Q2VsbCsrOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ2FsbFZhcmlhbnQgY2FsbGVl
ID0gQ2FsbFZhcmlhbnQodmFsdWUuYXNDZWxsKCkpOworICAgIAorICAgIGlmIChtX2Nsb3N1cmVz
QXJlRGVzcGVjaWZpZWQpCisgICAgICAgIGNhbGxlZSA9IGNhbGxlZS5kZXNwZWNpZmllZENsb3N1
cmUoKTsKKyAgICAKKyAgICBpZiAoVU5MSUtFTFkoIW1fcHJpbWFyeUNhbGxlZSkpIHsKKyAgICAg
ICAgbV9wcmltYXJ5Q2FsbGVlID0gY2FsbGVlOworICAgICAgICBtX251bUNhbGxzVG9QcmltYXJ5
ID0gMTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAgaWYgKExJS0VMWSht
X3ByaW1hcnlDYWxsZWUgPT0gY2FsbGVlKSkgeworICAgICAgICBtX251bUNhbGxzVG9QcmltYXJ5
Kys7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAorICAgIGlmIChVTkxJS0VMWSgh
bV9vdGhlckNhbGxlZXMpKSB7CisgICAgICAgIGFkZFNsb3coY2FsbGVlLCBtZXJnZUJhY2tMb2cp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBDYWxsU3BlY3RydW0qIHNl
Y29uZGFyeSA9IG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLmdldCgpOworICAg
IGlmICghc2Vjb25kYXJ5KSB7CisgICAgICAgIGFkZFNsb3coY2FsbGVlLCBtZXJnZUJhY2tMb2cp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBzZWNvbmRhcnktPmFkZChj
YWxsZWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIENhbGxFZGdlUHJv
ZmlsZUlubGluZXNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bExpbmtJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtJbmZvLmNwcAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYg
KzgzLDExIEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWsoUmVwYXRjaEJ1ZmYKICAgICB9
CiAgICAgaWYgKCEhbGFzdFNlZW5DYWxsZWUgJiYgIUhlYXA6OmlzTWFya2VkKGxhc3RTZWVuQ2Fs
bGVlLmdldCgpKSkKICAgICAgICAgbGFzdFNlZW5DYWxsZWUuY2xlYXIoKTsKKyAgICAKKyAgICBp
ZiAoY2FsbEVkZ2VQcm9maWxlKSB7CisgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOworICAg
ICAgICBjYWxsRWRnZVByb2ZpbGUtPnZpc2l0V2VhaygpOworICAgIH0KIH0KIAogQ2FsbExpbmtJ
bmZvJiBDYWxsTGlua0luZm86OmR1bW15KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNiArMjYsNyBAQAogI2lmbmRlZiBDYWxsTGlua0luZm9faAogI2RlZmluZSBDYWxsTGlua0lu
Zm9faAogCisjaW5jbHVkZSAiQ2FsbEVkZ2VQcm9maWxlLmgiCiAjaW5jbHVkZSAiQ2xvc3VyZUNh
bGxTdHViUm91dGluZS5oIgogI2luY2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkNv
ZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKQEAgLTMzLDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgi
CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TZW50aW5lbExpbmtlZExp
c3QuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC04OCw2ICs5MCw3IEBAIHN0cnVjdCBDYWxsTGlu
a0luZm8gOiBwdWJsaWMgQmFzaWNSYXdTZW4KICAgICB1bnNpZ25lZCBjYWxsZWVHUFIgOiA4Owog
ICAgIHVuc2lnbmVkIHNsb3dQYXRoQ291bnQ7CiAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luOwor
ICAgIE93blB0cjxDYWxsRWRnZVByb2ZpbGU+IGNhbGxFZGdlUHJvZmlsZTsKIAogICAgIGJvb2wg
aXNMaW5rZWQoKSB7IHJldHVybiBzdHViIHx8IGNhbGxlZTsgfQogICAgIHZvaWQgdW5saW5rKFJl
cGF0Y2hCdWZmZXImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TGlua1N0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIsNTQgKzMyLDIyIEBACiAjaW5jbHVkZSAiTExJbnRDYWxsTGlua0luZm8uaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgorI2luY2x1ZGUg
PHd0Zi9MaXN0RHVtcC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogc3RhdGljIGNvbnN0IGJvb2wg
dmVyYm9zZSA9IGZhbHNlOwogCiBDYWxsTGlua1N0YXR1czo6Q2FsbExpbmtTdGF0dXMoSlNWYWx1
ZSB2YWx1ZSkKLSAgICA6IG1fY2FsbFRhcmdldCh2YWx1ZSkKLSAgICAsIG1fZXhlY3V0YWJsZSgw
KQotICAgICwgbV9jb3VsZFRha2VTbG93UGF0aChmYWxzZSkKKyAgICA6IG1fY291bGRUYWtlU2xv
d1BhdGgoZmFsc2UpCiAgICAgLCBtX2lzUHJvdmVkKGZhbHNlKQogewotICAgIGlmICghdmFsdWUg
fHwgIXZhbHVlLmlzQ2VsbCgpKQorICAgIGlmICghdmFsdWUgfHwgIXZhbHVlLmlzQ2VsbCgpKSB7
CisgICAgICAgIG1fY291bGRUYWtlU2xvd1BhdGggPSB0cnVlOwogICAgICAgICByZXR1cm47Cisg
ICAgfQogICAgIAotICAgIGlmICghdmFsdWUuYXNDZWxsKCktPmluaGVyaXRzKEpTRnVuY3Rpb246
OmluZm8oKSkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBtX2V4ZWN1dGFibGUgPSBqc0Nh
c3Q8SlNGdW5jdGlvbio+KHZhbHVlLmFzQ2VsbCgpKS0+ZXhlY3V0YWJsZSgpOwotfQotCi1KU0Z1
bmN0aW9uKiBDYWxsTGlua1N0YXR1czo6ZnVuY3Rpb24oKSBjb25zdAotewotICAgIGlmICghbV9j
YWxsVGFyZ2V0IHx8ICFtX2NhbGxUYXJnZXQuaXNDZWxsKCkpCi0gICAgICAgIHJldHVybiAwOwot
ICAgIAotICAgIGlmICghbV9jYWxsVGFyZ2V0LmFzQ2VsbCgpLT5pbmhlcml0cyhKU0Z1bmN0aW9u
OjppbmZvKCkpKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICByZXR1cm4ganNDYXN0PEpT
RnVuY3Rpb24qPihtX2NhbGxUYXJnZXQuYXNDZWxsKCkpOwotfQotCi1JbnRlcm5hbEZ1bmN0aW9u
KiBDYWxsTGlua1N0YXR1czo6aW50ZXJuYWxGdW5jdGlvbigpIGNvbnN0Ci17Ci0gICAgaWYgKCFt
X2NhbGxUYXJnZXQgfHwgIW1fY2FsbFRhcmdldC5pc0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgCi0gICAgaWYgKCFtX2NhbGxUYXJnZXQuYXNDZWxsKCktPmluaGVyaXRzKEludGVybmFs
RnVuY3Rpb246OmluZm8oKSkpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIHJldHVybiBq
c0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KG1fY2FsbFRhcmdldC5hc0NlbGwoKSk7Ci19Ci0KLUlu
dHJpbnNpYyBDYWxsTGlua1N0YXR1czo6aW50cmluc2ljRm9yKENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCkgY29uc3QKLXsKLSAgICBpZiAoIW1fZXhlY3V0YWJsZSkKLSAgICAgICAgcmV0dXJu
IE5vSW50cmluc2ljOwotICAgIAotICAgIHJldHVybiBtX2V4ZWN1dGFibGUtPmludHJpbnNpY0Zv
cihraW5kKTsKKyAgICBtX2VkZ2VzLmFwcGVuZChDYWxsRWRnZShDYWxsVmFyaWFudCh2YWx1ZS5h
c0NlbGwoKSksIDEpKTsKIH0KIAogQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVGcm9tTExJbnQoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBDb2RlQmxvY2sq
IHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCkBAIC04Nyw3ICs1NSw3IEBA
IENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnIKICAgICBVTlVTRURfUEFS
QU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogI2lm
IEVOQUJMRShERkdfSklUKQotICAgIGlmIChwcm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0ZShsb2Nr
ZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRGdW5jdGlvbikpKSB7
CisgICAgaWYgKHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVu
dEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENlbGwpKSkgewogICAgICAgICAvLyBXZSBjb3Vs
ZCBmb3JjZSB0aGlzIHRvIGJlIGEgY2xvc3VyZSBjYWxsLCBidXQgaW5zdGVhZCB3ZSdsbCBqdXN0
IGFzc3VtZSB0aGF0IGl0CiAgICAgICAgIC8vIHRha2VzIHNsb3cgcGF0aC4KICAgICAgICAgcmV0
dXJuIHRha2VzU2xvd1BhdGgoKTsKQEAgLTEzOSwxMCArMTA3LDEwIEBAIENhbGxMaW5rU3RhdHVz
OjpFeGl0U2l0ZURhdGEgQ2FsbExpbmtTdGEKICAgICAKICNpZiBFTkFCTEUoREZHX0pJVCkKICAg
ICBleGl0U2l0ZURhdGEubV90YWtlc1Nsb3dQYXRoID0KLSAgICAgICAgcHJvZmlsZWRCbG9jay0+
aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwg
QmFkQ2FjaGUsIGV4aXRpbmdKSVRUeXBlKSkKKyAgICAgICAgcHJvZmlsZWRCbG9jay0+aGFzRXhp
dFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkVHlw
ZSwgZXhpdGluZ0pJVFR5cGUpKQogICAgICAgICB8fCBwcm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0
ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRFeGVjdXRh
YmxlLCBleGl0aW5nSklUVHlwZSkpOwogICAgIGV4aXRTaXRlRGF0YS5tX2JhZEZ1bmN0aW9uID0K
LSAgICAgICAgcHJvZmlsZWRCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50
RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkRnVuY3Rpb24sIGV4aXRpbmdKSVRUeXBlKSk7Cisg
ICAgICAgIHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4
aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENlbGwsIGV4aXRpbmdKSVRUeXBlKSk7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShsb2NrZXIpOwogICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2Nr
KTsKQEAgLTE1Niw2ICsxMjQsMTggQEAgQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBDYWxs
TGlua1N0YQogI2lmIEVOQUJMRShKSVQpCiBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6
Y29tcHV0ZUZvcihjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgQ2FsbExpbmtJbmZvJiBjYWxs
TGlua0luZm8pCiB7CisgICAgLy8gQWx3YXlzIHRydXN0IHRoZSBjYWxsIGVkZ2UgcHJvZmlsZSBv
dmVyIGFueXRoaW5nIGVsc2Ugc2luY2UgdGhpcyBoYXMgcHJlY2lzZSBjb3VudHMuCisgICAgLy8g
SXQgY2FuIG1ha2UgdGhlIGJlc3QgcG9zc2libGUgZGVjaXNpb24gYmVjYXVzZSBpdCBuZXZlciAi
Zm9yZ2V0cyIgd2hhdCBoYXBwZW5lZCBmb3IgYW55CisgICAgLy8gY2FsbCwgd2l0aCB0aGUgZXhj
ZXB0aW9uIG9mIGZhZGluZyBvdXQgdGhlIGNvdW50cyBvZiBvbGQgY2FsbHMgKGZvciBleGFtcGxl
IGlmIHRoZQorICAgIC8vIGNvdW50ZXIgdHlwZSBpcyAxNi1iaXQgdGhlbiBjYWxscyB0aGF0IGhh
cHBlbmVkIG1vcmUgdGhhbiAyXjE2IGNhbGxzIGFnbyBhcmUgZ2l2ZW4gaGFsZgorICAgIC8vIHdl
aWdodCwgYW5kIHRoaXMgY29tcG91bmRzIGZvciBldmVyeSAyXjE1IFtzaWNdIGNhbGxzIGFmdGVy
IHRoYXQpLiBUaGUgY29tYmluYXRpb24gb2YKKyAgICAvLyBoaWdoIGZpZGVsaXR5IGZvciByZWNl
bnQgY2FsbHMgYW5kIGZhZGluZyBmb3Igb2xkZXIgY2FsbHMgbWFrZXMgdGhpcyB0aGUgbW9zdCB1
c2VmdWwKKyAgICAvLyBtZWNoYW1pc20gb2YgY2hvb3NpbmcgaG93IHRvIG9wdGltaXplIGZ1dHVy
ZSBjYWxscy4KKyAgICBDYWxsRWRnZVByb2ZpbGUqIGVkZ2VQcm9maWxlID0gY2FsbExpbmtJbmZv
LmNhbGxFZGdlUHJvZmlsZS5nZXQoKTsKKyAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKKyAgICBp
ZiAoZWRnZVByb2ZpbGUpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUNhbGxFZGdlUHJvZmls
ZShlZGdlUHJvZmlsZSk7CisgICAgCiAgICAgLy8gTm90ZSB0aGF0IGRlc3BpdGUgcmVxdWlyaW5n
IHRoYXQgdGhlIGxvY2tlciBpcyBoZWxkLCB0aGlzIGNvZGUgaXMgcmFjeSB3aXRoIHJlc3BlY3QK
ICAgICAvLyB0byB0aGUgQ2FsbExpbmtJbmZvOiBpdCBtYXkgZ2V0IGNsZWFyZWQgd2hpbGUgdGhp
cyBjb2RlIHJ1bnMhIFRoaXMgaXMgYmVjYXVzZQogICAgIC8vIENhbGxMaW5rSW5mbzo6dW5saW5r
KCkgbWF5IGJlIGNhbGxlZCBmcm9tIGEgZGlmZmVyZW50IENvZGVCbG9jayB0aGFuIHRoZSBvbmUg
dGhhdCBvd25zCkBAIC0xNzcsNyArMTU3LDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVGbwogICAgIAogICAgIEpTRnVuY3Rpb24qIHRhcmdldCA9IGNhbGxMaW5rSW5m
by5sYXN0U2VlbkNhbGxlZS5nZXQoKTsKICAgICBpZiAoIXRhcmdldCkKLSAgICAgICAgcmV0dXJu
IENhbGxMaW5rU3RhdHVzKCk7CisgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7CiAgICAg
CiAgICAgaWYgKGNhbGxMaW5rSW5mby5oYXNTZWVuQ2xvc3VyZSkKICAgICAgICAgcmV0dXJuIENh
bGxMaW5rU3RhdHVzKHRhcmdldC0+ZXhlY3V0YWJsZSgpKTsKQEAgLTE4NSwxNSArMTY1LDMxIEBA
IENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICAgICByZXR1cm4gQ2Fs
bExpbmtTdGF0dXModGFyZ2V0KTsKIH0KIAotQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6
OmNvbXB1dGVGb3IoCi0gICAgY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBDYWxs
TGlua0luZm8mIGNhbGxMaW5rSW5mbywgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSkKK0NhbGxM
aW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUNhbGxFZGdlUHJvZmlsZShDYWxs
RWRnZVByb2ZpbGUqIGVkZ2VQcm9maWxlKQogewotICAgIGlmIChleGl0U2l0ZURhdGEubV90YWtl
c1Nsb3dQYXRoKQorICAgIC8vIFRvIGRvIGFueXRoaW5nIG1lYW5pbmdmdWwsIHdlIHJlcXVpcmUg
dGhhdCB0aGUgbWFqb3JpdHkgb2YgY2FsbHMgYXJlIHRvIHNvbWV0aGluZyB3ZQorICAgIC8vIGtu
b3cgaG93IHRvIGhhbmRsZS4KKyAgICB1bnNpZ25lZCBudW1DYWxsc1RvS25vd24gPSBlZGdlUHJv
ZmlsZS0+bnVtQ2FsbHNUb0tub3duQ2VsbHMoKTsKKyAgICB1bnNpZ25lZCBudW1DYWxsc1RvVW5r
bm93biA9IGVkZ2VQcm9maWxlLT5udW1DYWxsc1RvTm90Q2VsbCgpICsgZWRnZVByb2ZpbGUtPm51
bUNhbGxzVG9Vbmtub3duQ2VsbCgpOworICAgIGlmIChudW1DYWxsc1RvS25vd24gPD0gbnVtQ2Fs
bHNUb1Vua25vd24pCiAgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7CiAgICAgCisgICAg
Q2FsbExpbmtTdGF0dXMgcmVzdWx0OworICAgIHJlc3VsdC5tX2VkZ2VzID0gZWRnZVByb2ZpbGUt
PmNhbGxFZGdlcygpOworICAgIHJlc3VsdC5tX2NvdWxkVGFrZVNsb3dQYXRoID0gISFudW1DYWxs
c1RvVW5rbm93bjsKKyAgICByZXN1bHQubV9jYW5UcnVzdENvdW50cyA9IHRydWU7CisgICAgCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNv
bXB1dGVGb3IoCisgICAgY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBDYWxsTGlu
a0luZm8mIGNhbGxMaW5rSW5mbywgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSkKK3sKICAgICBD
YWxsTGlua1N0YXR1cyByZXN1bHQgPSBjb21wdXRlRm9yKGxvY2tlciwgY2FsbExpbmtJbmZvKTsK
ICAgICBpZiAoZXhpdFNpdGVEYXRhLm1fYmFkRnVuY3Rpb24pCiAgICAgICAgIHJlc3VsdC5tYWtl
Q2xvc3VyZUNhbGwoKTsKKyAgICBpZiAoZXhpdFNpdGVEYXRhLm1fdGFrZXNTbG93UGF0aCkKKyAg
ICAgICAgcmVzdWx0Lm1fY291bGRUYWtlU2xvd1BhdGggPSB0cnVlOwogICAgIAogICAgIHJldHVy
biByZXN1bHQ7CiB9CkBAIC0yNTYsNiArMjUyLDMyIEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5r
U3RhdHVzOjpjb21wdXRlRm8KICAgICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJsb2NrLCBj
b2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIGJhc2VsaW5lTWFwKTsKIH0KIAorYm9vbCBDYWxsTGlu
a1N0YXR1czo6aXNDbG9zdXJlQ2FsbCgpIGNvbnN0Cit7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
bV9lZGdlcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgaWYgKG1fZWRnZXNbaV0uY2FsbGVlKCku
aXNDbG9zdXJlQ2FsbCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKK30KKwordm9pZCBDYWxsTGlua1N0YXR1czo6bWFrZUNsb3N1cmVDYWxsKCkK
K3sKKyAgICBBU1NFUlQoIW1faXNQcm92ZWQpOworICAgIGZvciAodW5zaWduZWQgaSA9IG1fZWRn
ZXMuc2l6ZSgpOyBpLS07KQorICAgICAgICBtX2VkZ2VzW2ldID0gbV9lZGdlc1tpXS5kZXNwZWNp
ZmllZENsb3N1cmUoKTsKKyAgICAKKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAg
ICAvLyBEb2luZyB0aGlzIHNob3VsZCBub3QgaGF2ZSBjcmVhdGVkIGR1cGxpY2F0ZXMsIGJlY2F1
c2UgdGhlIENhbGxFZGdlUHJvZmlsZQorICAgICAgICAvLyBzaG91bGQgZGVzcGVjaWZ5IGNsb3N1
cmVzIGlmIGRvaW5nIHNvIHdvdWxkIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGtub3duIGNhbGxlZXMu
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2VkZ2VzLnNpemUoKTsgKytpKSB7
CisgICAgICAgICAgICBDYWxsVmFyaWFudCB2YXJpYW50ID0gbV9lZGdlc1tpXS5jYWxsZWUoKTsK
KyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IGkgKyAxOyBqIDwgbV9lZGdlcy5zaXplKCk7
ICsraikKKyAgICAgICAgICAgICAgICBBU1NFUlQodmFyaWFudCAhPSBtX2VkZ2VzW2pdLmNhbGxl
ZSgpKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCBDYWxsTGlua1N0YXR1czo6ZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIGlmICghaXNTZXQoKSkgewpAQCAtMjcxLDE0
ICsyOTMsNyBAQCB2b2lkIENhbGxMaW5rU3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBvCiAgICAg
aWYgKG1fY291bGRUYWtlU2xvd1BhdGgpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIkNvdWxk
IFRha2UgU2xvdyBQYXRoIik7CiAgICAgCi0gICAgaWYgKG1fY2FsbFRhcmdldCkKLSAgICAgICAg
b3V0LnByaW50KGNvbW1hLCAiS25vd24gdGFyZ2V0OiAiLCBtX2NhbGxUYXJnZXQpOwotICAgIAot
ICAgIGlmIChtX2V4ZWN1dGFibGUpIHsKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiRXhlY3V0
YWJsZS9DYWxsSGFzaDogIiwgUmF3UG9pbnRlcihtX2V4ZWN1dGFibGUpKTsKLSAgICAgICAgaWYg
KCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpCi0gICAgICAgICAgICBvdXQucHJpbnQoIi8iLCBtX2V4
ZWN1dGFibGUtPmhhc2hGb3IoQ29kZUZvckNhbGwpKTsKLSAgICB9CisgICAgb3V0LnByaW50KGxp
c3REdW1wKG1fZWRnZXMpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkocmV2aXNpb24g
MTcyNzk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDkgKzQ2LDkgQEAgc3RydWN0IENhbGxMaW5rSW5mbzsK
IGNsYXNzIENhbGxMaW5rU3RhdHVzIHsKIHB1YmxpYzoKICAgICBDYWxsTGlua1N0YXR1cygpCi0g
ICAgICAgIDogbV9leGVjdXRhYmxlKDApCi0gICAgICAgICwgbV9jb3VsZFRha2VTbG93UGF0aChm
YWxzZSkKKyAgICAgICAgOiBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQogICAgICAgICAsIG1f
aXNQcm92ZWQoZmFsc2UpCisgICAgICAgICwgbV9jYW5UcnVzdENvdW50cyhmYWxzZSkKICAgICB7
CiAgICAgfQogICAgIApAQCAtNjEsMTAgKzYxLDExIEBAIHB1YmxpYzoKICAgICAKICAgICBleHBs
aWNpdCBDYWxsTGlua1N0YXR1cyhKU1ZhbHVlKTsKICAgICAKLSAgICBDYWxsTGlua1N0YXR1cyhF
eGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSkKLSAgICAgICAgOiBtX2V4ZWN1dGFibGUoZXhlY3V0
YWJsZSkKKyAgICBDYWxsTGlua1N0YXR1cyhDYWxsVmFyaWFudCB2YXJpYW50KQorICAgICAgICA6
IG1fZWRnZXMoMSwgQ2FsbEVkZ2UodmFyaWFudCwgMSkpCiAgICAgICAgICwgbV9jb3VsZFRha2VT
bG93UGF0aChmYWxzZSkKICAgICAgICAgLCBtX2lzUHJvdmVkKGZhbHNlKQorICAgICAgICAsIG1f
Y2FuVHJ1c3RDb3VudHMoZmFsc2UpCiAgICAgewogICAgIH0KICAgICAKQEAgLTEwNywzNyArMTA4
LDM2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcigKICAg
ICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiwgY29u
c3QgQ29udGV4dE1hcCYpOwogICAgIAotICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBt
X2NhbGxUYXJnZXQgfHwgbV9leGVjdXRhYmxlIHx8IG1fY291bGRUYWtlU2xvd1BhdGg7IH0KKyAg
ICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gIW1fZWRnZXMuaXNFbXB0eSgpIHx8IG1fY291
bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0
dXJuICFpc1NldCgpOyB9CiAgICAgCiAgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fY291bGRUYWtlU2xvd1BhdGg7IH0KLSAgICBib29sIGlzQ2xvc3VyZUNhbGwo
KSBjb25zdCB7IHJldHVybiBtX2V4ZWN1dGFibGUgJiYgIW1fY2FsbFRhcmdldDsgfQogICAgIAot
ICAgIEpTVmFsdWUgY2FsbFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdldDsgfQot
ICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uKCkgY29uc3Q7Ci0gICAgSW50ZXJuYWxGdW5jdGlvbiog
aW50ZXJuYWxGdW5jdGlvbigpIGNvbnN0OwotICAgIEludHJpbnNpYyBpbnRyaW5zaWNGb3IoQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCkgY29uc3Q7Ci0gICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFi
bGUoKSBjb25zdCB7IHJldHVybiBtX2V4ZWN1dGFibGU7IH0KKyAgICBDYWxsRWRnZUxpc3QgZWRn
ZXMoKSBjb25zdCB7IHJldHVybiBtX2VkZ2VzOyB9CisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZWRnZXMuc2l6ZSgpOyB9CisgICAgQ2FsbEVkZ2UgYXQodW5zaWduZWQgaSkg
Y29uc3QgeyByZXR1cm4gbV9lZGdlc1tpXTsgfQorICAgIENhbGxFZGdlIG9wZXJhdG9yW10odW5z
aWduZWQgaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0KICAgICBib29sIGlzUHJvdmVkKCkgY29u
c3QgeyByZXR1cm4gbV9pc1Byb3ZlZDsgfQotICAgIGJvb2wgY2FuT3B0aW1pemUoKSBjb25zdCB7
IHJldHVybiAobV9jYWxsVGFyZ2V0IHx8IG1fZXhlY3V0YWJsZSkgJiYgIW1fY291bGRUYWtlU2xv
d1BhdGg7IH0KKyAgICBib29sIGNhbk9wdGltaXplKCkgY29uc3QgeyByZXR1cm4gIW1fZWRnZXMu
aXNFbXB0eSgpOyB9CisgICAgYm9vbCBjYW5UcnVzdENvdW50cygpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FuVHJ1c3RDb3VudHM7IH0KKyAgICAKKyAgICBib29sIGlzQ2xvc3VyZUNhbGwoKSBjb25zdDsg
Ly8gUmV0dXJucyB0cnVlIGlmIGFueSBjYWxsZWUgaXMgYSBjbG9zdXJlIGNhbGwuCiAgICAgCiAg
ICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgotICAgIHZv
aWQgbWFrZUNsb3N1cmVDYWxsKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9pc1Byb3ZlZCk7
Ci0gICAgICAgIC8vIFR1cm4gdGhpcyBpbnRvIGEgY2xvc3VyZSBjYWxsLgotICAgICAgICBtX2Nh
bGxUYXJnZXQgPSBKU1ZhbHVlKCk7Ci0gICAgfQorICAgIHZvaWQgbWFrZUNsb3N1cmVDYWxsKCk7
CiAgICAgCiAgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGcm9tTExJbnQoY29uc3Qg
Q29uY3VycmVudEpJVExvY2tlciYsIENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgp
OworI2lmIEVOQUJMRShKSVQpCisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGcm9t
Q2FsbEVkZ2VQcm9maWxlKENhbGxFZGdlUHJvZmlsZSopOworI2VuZGlmCiAgICAgCi0gICAgSlNW
YWx1ZSBtX2NhbGxUYXJnZXQ7Ci0gICAgRXhlY3V0YWJsZUJhc2UqIG1fZXhlY3V0YWJsZTsKKyAg
ICBDYWxsRWRnZUxpc3QgbV9lZGdlczsKICAgICBib29sIG1fY291bGRUYWtlU2xvd1BhdGg7CiAg
ICAgYm9vbCBtX2lzUHJvdmVkOworICAgIGJvb2wgbV9jYW5UcnVzdENvdW50czsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxWYXJpYW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbFZhcmlhbnQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxWYXJpYW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJDYWxsVmFyaWFudC5oIgorCituYW1lc3BhY2UgSlNDIHsK
Kwordm9pZCBDYWxsVmFyaWFudDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAg
IGlmICghKnRoaXMpIHsKKyAgICAgICAgb3V0LnByaW50KCJudWxsIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgaWYgKEludGVybmFsRnVuY3Rpb24qIGludGVybmFsRnVuY3Rp
b24gPSB0aGlzLT5pbnRlcm5hbEZ1bmN0aW9uKCkpIHsKKyAgICAgICAgb3V0LnByaW50KCJJbnRl
cm5hbEZ1bmN0aW9uOiAiLCBKU1ZhbHVlKGludGVybmFsRnVuY3Rpb24pKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoSlNGdW5jdGlvbiogZnVuY3Rpb24gPSB0aGlzLT5m
dW5jdGlvbigpKSB7CisgICAgICAgIG91dC5wcmludCgiKEZ1bmN0aW9uOiAiLCBKU1ZhbHVlKGZ1
bmN0aW9uKSwgIjsgRXhlY3V0YWJsZTogIiwgKmV4ZWN1dGFibGUoKSwgIikiKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAKKyAgICBvdXQucHJpbnQoIkV4ZWN1dGFibGU6ICIsICpleGVj
dXRhYmxlKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDE2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIENhbGxWYXJpYW50X2gKKyNkZWZpbmUgQ2FsbFZhcmlhbnRfaAorCisj
aW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIENhbGxWYXJpYW50IHsKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCBDYWxsVmFyaWFudChKU0NlbGwqIGNhbGxlZSA9IG51bGxwdHIp
CisgICAgICAgIDogbV9jYWxsZWUoY2FsbGVlKQorICAgIHsKKyAgICB9CisgICAgCisgICAgQ2Fs
bFZhcmlhbnQoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQorICAgICAgICA6IG1fY2Fs
bGVlKGRlbGV0ZWRUb2tlbigpKQorICAgIHsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRv
ciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7IH0KKyAgICAKKyAgICAvLyBJZiB0aGlzIHZh
cmlhbnQgcmVmZXJzIHRvIGEgZnVuY3Rpb24sIGNoYW5nZSBpdCB0byByZWZlciB0byBpdHMgZXhl
Y3V0YWJsZS4KKyAgICBBTFdBWVNfSU5MSU5FIENhbGxWYXJpYW50IGRlc3BlY2lmaWVkQ2xvc3Vy
ZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9jYWxsZWUtPnR5cGUoKSA9PSBKU0Z1bmN0
aW9uVHlwZSkKKyAgICAgICAgICAgIHJldHVybiBDYWxsVmFyaWFudChqc0Nhc3Q8SlNGdW5jdGlv
bio+KG1fY2FsbGVlKS0+ZXhlY3V0YWJsZSgpKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAg
IH0KKyAgICAKKyAgICBKU0NlbGwqIHJhd0NhbGxlZUNlbGwoKSBjb25zdCB7IHJldHVybiBtX2Nh
bGxlZTsgfQorICAgIAorICAgIEludGVybmFsRnVuY3Rpb24qIGludGVybmFsRnVuY3Rpb24oKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SW50ZXJuYWxGdW5jdGlv
bio+KG1fY2FsbGVlKTsKKyAgICB9CisgICAgCisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24oKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KG1f
Y2FsbGVlKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0Nsb3N1cmVDYWxsKCkgY29uc3QgeyBy
ZXR1cm4gISFqc0R5bmFtaWNDYXN0PEV4ZWN1dGFibGVCYXNlKj4obV9jYWxsZWUpOyB9CisgICAg
CisgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
aWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gdGhpcy0+ZnVuY3Rpb24oKSkKKyAgICAgICAgICAg
IHJldHVybiBmdW5jdGlvbi0+ZXhlY3V0YWJsZSgpOworICAgICAgICByZXR1cm4ganNEeW5hbWlj
Q2FzdDxFeGVjdXRhYmxlQmFzZSo+KG1fY2FsbGVlKTsKKyAgICB9CisgICAgCisgICAgSlNDZWxs
KiBub25FeGVjdXRhYmxlQ2FsbGVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCFpc0Nsb3N1cmVDYWxsKCkpOworICAgICAgICByZXR1cm4gbV9jYWxsZWU7CisgICAgfQor
ICAgIAorICAgIEludHJpbnNpYyBpbnRyaW5zaWNGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxl
ID0gdGhpcy0+ZXhlY3V0YWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIGV4ZWN1dGFibGUtPmlu
dHJpbnNpY0ZvcihraW5kKTsKKyAgICAgICAgcmV0dXJuIE5vSW50cmluc2ljOworICAgIH0KKyAg
ICAKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihl
eGVjdXRhYmxlKCkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3Q7CisgICAgCisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9jYWxsZWUgPT0gZGVsZXRlZFRva2VuKCk7CisgICAg
fQorICAgIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDYWxsVmFyaWFudCYgb3RoZXIpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9jYWxsZWUgPT0gb3RoZXIubV9jYWxsZWU7Cisg
ICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDYWxsVmFyaWFudCYgb3RoZXIp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQor
ICAgIAorICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2NhbGxlZSA8IG90aGVyLm1fY2FsbGVlOworICAgIH0K
KyAgICAKKyAgICBib29sIG9wZXJhdG9yPihjb25zdCBDYWxsVmFyaWFudCYgb3RoZXIpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gb3RoZXIgPCAqdGhpczsKKyAgICB9CisgICAgCisgICAg
Ym9vbCBvcGVyYXRvcjw9KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiAhKCp0aGlzIDwgb3RoZXIpOworICAgIH0KKyAgICAKKyAgICBib29sIG9w
ZXJhdG9yPj0oY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG90aGVyIDw9ICp0aGlzOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBoYXNoKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBXVEY6OlB0ckhhc2g8SlNDZWxsKj46Omhhc2go
bV9jYWxsZWUpOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgc3RhdGljIEpTQ2VsbCogZGVs
ZXRlZFRva2VuKCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PEpTQ2VsbCo+KHN0YXRpY19jYXN0PHVp
bnRwdHJfdD4oMSkpOyB9CisgICAgICAgICAgICAgICAgICAgCisgICAgSlNDZWxsKiBtX2NhbGxl
ZTsKK307CisKK3N0cnVjdCBDYWxsVmFyaWFudEhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBo
YXNoKGNvbnN0IENhbGxWYXJpYW50JiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KKyAgICBz
dGF0aWMgYm9vbCBlcXVhbChjb25zdCBDYWxsVmFyaWFudCYgYSwgY29uc3QgQ2FsbFZhcmlhbnQm
IGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBh
cmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKK307CisKK3R5cGVkZWYgVmVjdG9yPENhbGxWYXJp
YW50LCAxPiBDYWxsVmFyaWFudExpc3Q7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3Bh
Y2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwordGVt
cGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpDYWxsVmFyaWFudD4geworICAgIHR5cGVk
ZWYgSlNDOjpDYWxsVmFyaWFudEhhc2ggSGFzaDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBIYXNoVHJhaXRzOwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6OkNh
bGxWYXJpYW50PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OkNhbGxWYXJpYW50PiB7IH07
CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gQ2FsbFZhcmlhbnRfaAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5jcHAJKHJldmlzaW9u
IDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDggKzM4LDggQEAgY29uc3QgY2hhciogZXhpdEtpbmRUb1N0
cmluZyhFeGl0S2luZCBraQogICAgICAgICByZXR1cm4gIlVuc2V0IjsKICAgICBjYXNlIEJhZFR5
cGU6CiAgICAgICAgIHJldHVybiAiQmFkVHlwZSI7Ci0gICAgY2FzZSBCYWRGdW5jdGlvbjoKLSAg
ICAgICAgcmV0dXJuICJCYWRGdW5jdGlvbiI7CisgICAgY2FzZSBCYWRDZWxsOgorICAgICAgICBy
ZXR1cm4gIkJhZENlbGwiOwogICAgIGNhc2UgQmFkRXhlY3V0YWJsZToKICAgICAgICAgcmV0dXJu
ICJCYWRFeGVjdXRhYmxlIjsKICAgICBjYXNlIEJhZENhY2hlOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmgJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw3ICszMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogZW51bSBFeGl0S2luZCA6IHVpbnQ4X3Qgewog
ICAgIEV4aXRLaW5kVW5zZXQsCiAgICAgQmFkVHlwZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2UgYSB0
eXBlIHByZWRpY3Rpb24gd2FzIHdyb25nLgotICAgIEJhZEZ1bmN0aW9uLCAvLyBXZSBleGl0ZWQg
YmVjYXVzZSB3ZSBtYWRlIGFuIGluY29ycmVjdCBhc3N1bXB0aW9uIGFib3V0IHdoYXQgZnVuY3Rp
b24gd2Ugd291bGQgc2VlLgorICAgIEJhZENlbGwsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIG1h
ZGUgYW4gaW5jb3JyZWN0IGFzc3VtcHRpb24gYWJvdXQgd2hhdCBjZWxsIHdlIHdvdWxkIHNlZS4g
VXN1YWxseSB1c2VkIGZvciBmdW5jdGlvbiBjaGVja3MuCiAgICAgQmFkRXhlY3V0YWJsZSwgLy8g
V2UgZXhpdGVkIGJlY2F1c2Ugd2UgbWFkZSBhbiBpbmNvcnJlY3QgYXNzdW1wdGlvbiBhYm91dCB3
aGF0IGV4ZWN1dGFibGUgd2Ugd291bGQgc2VlLgogICAgIEJhZENhY2hlLCAvLyBXZSBleGl0ZWQg
YmVjYXVzZSBhbiBpbmxpbmUgY2FjaGUgd2FzIHdyb25nLgogICAgIEJhZENvbnN0YW50Q2FjaGUs
IC8vIFdlIGV4aXRlZCBiZWNhdXNlIGEgY2FjaGUgb24gYSB3ZWFrIGNvbnN0YW50ICh1c3VhbGx5
IGEgcHJvdG90eXBlKSB3YXMgd3JvbmcuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lv
biAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NjAsMTQgKzE0NjAsNiBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgY2Fz
ZSBDaGVja0V4ZWN1dGFibGU6IHsKLSAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIHRyYWNrIGV4
ZWN1dGFibGVzIGluIEFic3RyYWN0VmFsdWUsIHdoaWNoIHdvdWxkIGFsbG93IHVzIHRvIGdldCBy
aWQgb2YgdGhlc2UgY2hlY2tzCi0gICAgICAgIC8vIG1vcmUgdGhvcm91Z2hseS4gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjIwMAotICAgICAgICAvLyBGSVhNRTog
V2UgY291bGQgZWxpbWluYXRlIHRoZXNlIGVudGlyZWx5IGlmIHdlIGtub3cgdGhlIGV4YWN0IHZh
bHVlIHRoYXQgZmxvd3MgaW50byB0aGlzLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MjAxCi0gICAgICAgIGJyZWFrOwotICAgIH0KLQogICAg
IGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6IHsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBh
YmxlIHRvIHByb3BhZ2F0ZSB0aGUgc3RydWN0dXJlIHNldHMgb2YgY29uc3RhbnRzIChpLmUuIHBy
b3RvdHlwZXMpLgogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpOwpAQCAtMTcyNywxNiArMTcxOSwyOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2Up
OwogICAgICAgICBicmVhazsKICAgICB9CisgICAgICAgIAorICAgIGNhc2UgR2V0RXhlY3V0YWJs
ZTogeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFs
dWUoKTsKKyAgICAgICAgaWYgKHZhbHVlKSB7CisgICAgICAgICAgICBKU0Z1bmN0aW9uKiBmdW5j
dGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZhbHVlKTsKKyAgICAgICAgICAgIGlm
IChmdW5jdGlvbikgeworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsICptX2dyYXBo
LmZyZWV6ZShmdW5jdGlvbi0+ZXhlY3V0YWJsZSgpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBl
KFNwZWNDZWxsT3RoZXIpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgCi0gICAgY2FzZSBD
aGVja0Z1bmN0aW9uOiB7CisgICAgY2FzZSBDaGVja0NlbGw6IHsKICAgICAgICAgSlNWYWx1ZSB2
YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7Ci0gICAgICAgIGlmICh2YWx1
ZSA9PSBub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpKSB7CisgICAgICAgIGlmICh2YWx1ZSA9PSBu
b2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpKSB7CiAgICAgICAgICAgICBtX3N0YXRlLnNldEZv
dW5kQ29uc3RhbnRzKHRydWUpOwogICAgICAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBmaWx0ZXJCeVZhbHVlKG5v
ZGUtPmNoaWxkMSgpLCAqbm9kZS0+ZnVuY3Rpb24oKSk7CisgICAgICAgIGZpbHRlckJ5VmFsdWUo
bm9kZS0+Y2hpbGQxKCksICpub2RlLT5jZWxsT3BlcmFuZCgpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgICAgICAKQEAgLTE5MDIsNiArMTkwNyw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEZvcmNlT1NS
RXhpdDoKKyAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlk
KGZhbHNlKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2Uu
Y3BwCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jh
Y2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODksNiArMzg5
LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgLy8gdGhlbiAtMCBhbmQgMCBhcmUgdHJl
YXRlZCB0aGUgc2FtZS4KICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKS0+bWVyZ2VGbGFn
cyhOb2RlQnl0ZWNvZGVVc2VzQXNOdW1iZXIgfCBOb2RlQnl0ZWNvZGVVc2VzQXNPdGhlcik7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFN3aXRjaENlbGw6CisgICAg
ICAgICAgICAgICAgLy8gVGhlcmUgaXMgY3VycmVudGx5IG5vIHBvaW50IHRvIGJlaW5nIGNsZXZl
ciBoZXJlIHNpbmNlIHRoaXMgaXMgdXNlZCBmb3Igc3dpdGNoaW5nCisgICAgICAgICAgICAgICAg
Ly8gb24gb2JqZWN0cy4KKyAgICAgICAgICAgICAgICBtZXJnZURlZmF1bHRGbGFncyhub2RlKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxv
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNC
bG9jay5jcHAJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQmFzaWNCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDkgQEAgQmFzaWNC
bG9jazo6QmFzaWNCbG9jaygKIHsKIH0KIAotQmFzaWNCbG9jazo6fkJhc2ljQmxvY2soKSB7IH0K
K0Jhc2ljQmxvY2s6On5CYXNpY0Jsb2NrKCkKK3sKK30KIAogdm9pZCBCYXNpY0Jsb2NrOjplbnN1
cmVMb2NhbHModW5zaWduZWQgbmV3TnVtTG9jYWxzKQogewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2
ICs2Miw3IEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICBO
b2RlKiYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyByZXR1cm4gYXQoaSk7IH0KICAgICBOb2RlKiBv
cGVyYXRvcltdKHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBhdChpKTsgfQogICAgIE5vZGUqIGxh
c3QoKSBjb25zdCB7IHJldHVybiBhdChzaXplKCkgLSAxKTsgfQorICAgIE5vZGUqIHRha2VMYXN0
KCkgeyByZXR1cm4gbV9ub2Rlcy50YWtlTGFzdCgpOyB9CiAgICAgdm9pZCByZXNpemUoc2l6ZV90
IHNpemUpIHsgbV9ub2Rlcy5yZXNpemUoc2l6ZSk7IH0KICAgICB2b2lkIGdyb3coc2l6ZV90IHNp
emUpIHsgbV9ub2Rlcy5ncm93KHNpemUpOyB9CiAgICAgCkBAIC0xMDYsNiArMTA3LDEzIEBAIHN0
cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICAKICAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CiAgICAgCisgICAgdm9pZCBkaWRMaW5rKCkKKyAg
ICB7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICBpc0xpbmtlZCA9IHRydWU7CisjZW5k
aWYKKyAgICB9CisgICAgCiAgICAgLy8gVGhpcyB2YWx1ZSBpcyB1c2VkIGludGVybmFsbHkgZm9y
IGJsb2NrIGxpbmtpbmcgYW5kIE9TUiBlbnRyeS4gSXQgaXMgbW9zdGx5IG1lYW5pbmdsZXNzCiAg
ICAgLy8gZm9yIG90aGVyIHB1cnBvc2VzIGR1ZSB0byBpbmxpbmluZy4KICAgICB1bnNpZ25lZCBi
eXRlY29kZUJlZ2luOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1
MCw4IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAorc3RhdGljIGNvbnN0
IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworCiBjbGFzcyBDb25zdGFudEJ1ZmZlcktleSB7CiBwdWJs
aWM6CiAgICAgQ29uc3RhbnRCdWZmZXJLZXkoKQpAQCAtMTc4LDE0ICsxODAsMjAgQEAgcHJpdmF0
ZToKICAgICAgICAgTm9kZSogY2FsbFRhcmdldCwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJP
ZmZzZXQsIENhbGxMaW5rU3RhdHVzKTsKICAgICB2b2lkIGhhbmRsZUNhbGwoaW50IHJlc3VsdCwg
Tm9kZVR5cGUgb3AsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIHVuc2lnbmVkIGluc3RydWN0aW9u
U2l6ZSwgaW50IGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQpOwogICAg
IHZvaWQgaGFuZGxlQ2FsbChJbnN0cnVjdGlvbiogcGMsIE5vZGVUeXBlIG9wLCBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kKTsKLSAgICB2b2lkIGVtaXRGdW5jdGlvbkNoZWNrcyhjb25zdCBDYWxsTGlu
a1N0YXR1cyYsIE5vZGUqIGNhbGxUYXJnZXQsIGludCByZWdpc3Rlck9mZnNldCwgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCk7CisgICAgdm9pZCBlbWl0RnVuY3Rpb25DaGVja3MoQ2FsbFZhcmlhbnQs
IE5vZGUqIGNhbGxUYXJnZXQsIGludCByZWdpc3Rlck9mZnNldCwgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCk7CisgICAgdm9pZCB1bmRvRnVuY3Rpb25DaGVja3MoQ2FsbFZhcmlhbnQpOwogICAgIHZv
aWQgZW1pdEFyZ3VtZW50UGhhbnRvbXMoaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOworICAgIHVuc2lnbmVk
IGlubGluaW5nQ29zdChDYWxsVmFyaWFudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsgLy8gUmV0dXJuIFVJTlRfTUFYIGlmIGl0J3Mgbm90
IGFuIGlubGluaW5nIGNhbmRpZGF0ZS4gQnkgY29udmVudGlvbiwgaW50cmluc2ljcyBoYXZlIGEg
Y29zdCBvZiAxLgogICAgIC8vIEhhbmRsZSBpbmxpbmluZy4gUmV0dXJuIHRydWUgaWYgaXQgc3Vj
Y2VlZGVkLCBmYWxzZSBpZiB3ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4KLSAgICBib29sIGhhbmRs
ZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3Qg
Q2FsbExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kKTsK
KyAgICBib29sIGhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0
T3BlcmFuZCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgTm9kZVR5cGUg
Y2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24p
OworICAgIGVudW0gQ2FsbGVyTGlua2FiaWxpdHkgeyBDYWxsZXJEb2VzTm9ybWFsTGlua2luZywg
Q2FsbGVyTGlua3NNYW51YWxseSB9OworICAgIGJvb2wgYXR0ZW1wdFRvSW5saW5lQ2FsbChOb2Rl
KiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENhbGxWYXJpYW50LCBpbnQgcmVn
aXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4
dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBDYWxsZXJMaW5rYWJpbGl0eSwgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSk7CisgICAgdm9p
ZCBpbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2Fs
bFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIENhbGxlckxp
bmthYmlsaXR5KTsKKyAgICB2b2lkIGNhbmNlbExpbmtpbmdGb3JCbG9jayhJbmxpbmVTdGFja0Vu
dHJ5KiwgQmFzaWNCbG9jayopOyAvLyBPbmx5IHdvcmtzIHdoZW4gdGhlIGdpdmVuIGJsb2NrIGlz
IHRoZSBsYXN0IG9uZSB0byBoYXZlIGJlZW4gYWRkZWQgZm9yIHRoYXQgaW5saW5lIHN0YWNrIGVu
dHJ5LgogICAgIC8vIEhhbmRsZSBpbnRyaW5zaWMgZnVuY3Rpb25zLiBSZXR1cm4gdHJ1ZSBpZiBp
dCBzdWNjZWVkZWQsIGZhbHNlIGlmIHdlIG5lZWQgdG8gcGxhbnQgYSBjYWxsLgogICAgIGJvb2wg
aGFuZGxlSW50cmluc2ljKGludCByZXN1bHRPcGVyYW5kLCBJbnRyaW5zaWMsIGludCByZWdpc3Rl
ck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBw
cmVkaWN0aW9uKTsKICAgICBib29sIGhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihpbnQgcmVz
dWx0T3BlcmFuZCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBlZEFycmF5VHlwZSk7Ci0gICAgYm9vbCBoYW5k
bGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oaW50IHJlc3VsdE9wZXJhbmQsIEludGVybmFsRnVu
Y3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7Cisg
ICAgYm9vbCBoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oaW50IHJlc3VsdE9wZXJhbmQs
IEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7CiAgICAgTm9kZSogaGFuZGxl
UHV0QnlPZmZzZXQoTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllciwgUHJvcGVydHlPZmZz
ZXQsIE5vZGUqIHZhbHVlKTsKICAgICBOb2RlKiBoYW5kbGVHZXRCeU9mZnNldChTcGVjdWxhdGVk
VHlwZSwgTm9kZSogYmFzZSwgY29uc3QgU3RydWN0dXJlU2V0JiwgdW5zaWduZWQgaWRlbnRpZmll
ck51bWJlciwgUHJvcGVydHlPZmZzZXQsIE5vZGVUeXBlIG9wID0gR2V0QnlPZmZzZXQpOwogICAg
IHZvaWQgaGFuZGxlR2V0QnlJZCgKQEAgLTIwMCw4ICsyMDgsOSBAQCBwcml2YXRlOgogCiAgICAg
Tm9kZSogZ2V0U2NvcGUoYm9vbCBza2lwVG9wLCB1bnNpZ25lZCBza2lwQ291bnQpOwogICAgIAot
ICAgIC8vIFByZXBhcmUgdG8gcGFyc2UgYSBibG9jay4KICAgICB2b2lkIHByZXBhcmVUb1BhcnNl
QmxvY2soKTsKKyAgICB2b2lkIGNsZWFyQ2FjaGVzKCk7CisKICAgICAvLyBQYXJzZSBhIHNpbmds
ZSBiYXNpYyBibG9jayBvZiBieXRlY29kZSBpbnN0cnVjdGlvbnMuCiAgICAgYm9vbCBwYXJzZUJs
b2NrKHVuc2lnbmVkIGxpbWl0KTsKICAgICAvLyBMaW5rIGJsb2NrIHN1Y2Nlc3NvcnMuCkBAIC0y
OTYsNiArMzA1LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICByZXR1cm4gZGVsYXll
ZC5leGVjdXRlKHRoaXMsIHNldE1vZGUpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIHByb2Nlc3NT
ZXRMb2NhbFF1ZXVlKCkKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X3NldExvY2FsUXVldWUuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBtX3NldExvY2FsUXVldWVb
aV0uZXhlY3V0ZSh0aGlzKTsKKyAgICAgICAgbV9zZXRMb2NhbFF1ZXVlLnJlc2l6ZSgwKTsKKyAg
ICB9CiAKICAgICBOb2RlKiBzZXQoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQsIE5vZGUqIHZhbHVl
LCBTZXRNb2RlIHNldE1vZGUgPSBOb3JtYWxTZXQpCiAgICAgewpAQCAtNjM3LDYgKzY1MywxMyBA
QCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CisgICAg
CisgICAgdm9pZCByZW1vdmVMYXN0Tm9kZUZyb21HcmFwaChOb2RlVHlwZSBleHBlY3RlZE5vZGVU
eXBlKQorICAgIHsKKyAgICAgICAgTm9kZSogbm9kZSA9IG1fY3VycmVudEJsb2NrLT50YWtlTGFz
dCgpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5vcCgpID09IGV4cGVjdGVkTm9kZVR5
cGUpOworICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CisgICAgfQogCiAg
ICAgdm9pZCBhZGRWYXJBcmdDaGlsZChOb2RlKiBjaGlsZCkKICAgICB7CkBAIC02NDUsNyArNjY4
LDcgQEAgcHJpdmF0ZToKICAgICB9CiAgICAgCiAgICAgTm9kZSogYWRkQ2FsbFdpdGhvdXRTZXR0
aW5nUmVzdWx0KAotICAgICAgICBOb2RlVHlwZSBvcCwgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291
bnQsIGludCByZWdpc3Rlck9mZnNldCwKKyAgICAgICAgTm9kZVR5cGUgb3AsIE9wSW5mbyBvcElu
Zm8sIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAg
ICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiAgICAgewogICAgICAgICBhZGRWYXJBcmdD
aGlsZChjYWxsZWUpOwpAQCAtNjU3LDE1ICs2ODAsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgZm9y
IChpbnQgaSA9IDAgKyBkdW1teVRoaXNBcmd1bWVudDsgaSA8IGFyZ0NvdW50OyArK2kpCiAgICAg
ICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSwg
cmVnaXN0ZXJPZmZzZXQpKSk7CiAKLSAgICAgICAgcmV0dXJuIGFkZFRvR3JhcGgoTm9kZTo6VmFy
QXJnLCBvcCwgT3BJbmZvKDApLCBPcEluZm8ocHJlZGljdGlvbikpOworICAgICAgICByZXR1cm4g
YWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIG9wLCBvcEluZm8sIE9wSW5mbyhwcmVkaWN0aW9uKSk7
CiAgICAgfQogICAgIAogICAgIE5vZGUqIGFkZENhbGwoCi0gICAgICAgIGludCByZXN1bHQsIE5v
ZGVUeXBlIG9wLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0
LAorICAgICAgICBpbnQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgT3BJbmZvIG9wSW5mbywgTm9kZSog
Y2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCwKICAgICAgICAgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljdGlvbikKICAgICB7CiAgICAgICAgIE5vZGUqIGNhbGwgPSBhZGRDYWxs
V2l0aG91dFNldHRpbmdSZXN1bHQoCi0gICAgICAgICAgICBvcCwgY2FsbGVlLCBhcmdDb3VudCwg
cmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOworICAgICAgICAgICAgb3AsIG9wSW5mbywgY2Fs
bGVlLCBhcmdDb3VudCwgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwogICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgcmVzdWx0UmVnKHJlc3VsdCk7CiAgICAgICAgIGlmIChyZXN1bHRSZWcuaXNW
YWxpZCgpKQogICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHQpLCBjYWxsKTsK
QEAgLTg3MSw4ICs4OTQsNyBAQCBwcml2YXRlOgogICAgICAgICBWZWN0b3I8VW5saW5rZWRCbG9j
az4gbV91bmxpbmtlZEJsb2NrczsKICAgICAgICAgCiAgICAgICAgIC8vIFBvdGVudGlhbCBibG9j
ayBsaW5raW5nIHRhcmdldHMuIE11c3QgYmUgc29ydGVkIGJ5IGJ5dGVjb2RlQmVnaW4sIGFuZAot
ICAgICAgICAvLyBjYW5ub3QgaGF2ZSB0d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRl
Y29kZUJlZ2luLiBGb3IgdGhpcyB2ZXJ5Ci0gICAgICAgIC8vIHJlYXNvbiwgdGhpcyBpcyBub3Qg
ZXF1aXZhbGVudCB0byAKKyAgICAgICAgLy8gY2Fubm90IGhhdmUgdHdvIGJsb2NrcyB0aGF0IGhh
dmUgdGhlIHNhbWUgYnl0ZWNvZGVCZWdpbi4KICAgICAgICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBt
X2Jsb2NrTGlua2luZ1RhcmdldHM7CiAgICAgICAgIAogICAgICAgICAvLyBJZiB0aGUgY2FsbHNp
dGUncyBiYXNpYyBibG9jayB3YXMgc3BsaXQgaW50byB0d28sIHRoZW4gdGhpcyB3aWxsIGJlCkBA
IC0xMDI4LDUzICsxMDUwLDI3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoCiAg
ICAgICAgIC8vIE9kZGx5LCB0aGlzIGNvbmZsYXRlcyBjYWxscyB0aGF0IGhhdmVuJ3QgZXhlY3V0
ZWQgd2l0aCBjYWxscyB0aGF0IGJlaGF2ZWQgc3VmZmljaWVudGx5IHBvbHltb3JwaGljYWxseQog
ICAgICAgICAvLyB0aGF0IHdlIGNhbm5vdCBvcHRpbWl6ZSB0aGVtLgogICAgICAgICAKLSAgICAg
ICAgYWRkQ2FsbChyZXN1bHQsIG9wLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOworICAgICAgICBhZGRDYWxsKHJlc3Vs
dCwgb3AsIE9wSW5mbygpLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
cmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IAogICAgIHVuc2lnbmVkIG5leHRPZmZzZXQgPSBtX2N1cnJlbnRJbmRleCArIGluc3RydWN0aW9u
U2l6ZTsKKyAgICAKKyAgICBPcEluZm8gY2FsbE9wSW5mbzsKIAotICAgIGlmIChJbnRlcm5hbEZ1
bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxMaW5rU3RhdHVzLmludGVybmFsRnVuY3Rpb24oKSkgewot
ICAgICAgICBpZiAoaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKHJlc3VsdCwgZnVuY3Rp
b24sIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlv
biwgc3BlY2lhbGl6YXRpb25LaW5kKSkgewotICAgICAgICAgICAgLy8gVGhpcyBwaGFudG9taW5n
IGhhcyB0byBiZSAqYWZ0ZXIqIHRoZSBjb2RlIGZvciB0aGUgaW50cmluc2ljLCB0byBzaWduaWZ5
IHRoYXQKLSAgICAgICAgICAgIC8vIHRoZSBpbnB1dHMgbXVzdCBiZSBrZXB0IGFsaXZlIHdoYXRl
dmVyIGV4aXRzIHRoZSBpbnRyaW5zaWMgbWF5IGRvLgotICAgICAgICAgICAgYWRkVG9HcmFwaChQ
aGFudG9tLCBjYWxsVGFyZ2V0KTsKLSAgICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJl
Z2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25L
aW5kKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
Ly8gQ2FuIG9ubHkgaGFuZGxlIHRoaXMgdXNpbmcgdGhlIGdlbmVyaWMgY2FsbCBoYW5kbGVyLgot
ICAgICAgICBhZGRDYWxsKHJlc3VsdCwgb3AsIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgICAgIAotICAgIEludHJpbnNpYyBpbnRyaW5zaWMgPSBjYWxsTGlua1N0YXR1
cy5pbnRyaW5zaWNGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKLQotICAgIEpTRnVuY3Rpb24qIGtu
b3duRnVuY3Rpb24gPSBudWxscHRyOwotICAgIGlmIChpbnRyaW5zaWMgIT0gTm9JbnRyaW5zaWMp
IHsKLSAgICAgICAgZW1pdEZ1bmN0aW9uQ2hlY2tzKGNhbGxMaW5rU3RhdHVzLCBjYWxsVGFyZ2V0
LCByZWdpc3Rlck9mZnNldCwgc3BlY2lhbGl6YXRpb25LaW5kKTsKLSAgICAgICAgICAgIAotICAg
ICAgICBpZiAoaGFuZGxlSW50cmluc2ljKHJlc3VsdCwgaW50cmluc2ljLCByZWdpc3Rlck9mZnNl
dCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHByZWRpY3Rpb24pKSB7Ci0gICAgICAgICAg
ICAvLyBUaGlzIHBoYW50b21pbmcgaGFzIHRvIGJlICphZnRlciogdGhlIGNvZGUgZm9yIHRoZSBp
bnRyaW5zaWMsIHRvIHNpZ25pZnkgdGhhdAotICAgICAgICAgICAgLy8gdGhlIGlucHV0cyBtdXN0
IGJlIGtlcHQgYWxpdmUgd2hhdGV2ZXIgZXhpdHMgdGhlIGludHJpbnNpYyBtYXkgZG8uCi0gICAg
ICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXQpOwotICAgICAgICAgICAgZW1p
dEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBzcGVjaWFsaXphdGlvbktpbmQpOwotICAgICAgICAgICAgaWYgKG1fZ3JhcGguY29tcGls
YXRpb24oKSkKLSAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5vdGljZUlu
bGluZWRDYWxsKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9IGVsc2Ug
aWYgKGhhbmRsZUlubGluaW5nKGNhbGxUYXJnZXQsIHJlc3VsdCwgY2FsbExpbmtTdGF0dXMsIHJl
Z2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbmV4dE9mZnNldCwga2lu
ZCkpIHsKKyAgICBpZiAoaGFuZGxlSW5saW5pbmcoY2FsbFRhcmdldCwgcmVzdWx0LCBjYWxsTGlu
a1N0YXR1cywgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBuZXh0
T2Zmc2V0LCBvcCwga2luZCwgcHJlZGljdGlvbikpIHsKICAgICAgICAgaWYgKG1fZ3JhcGguY29t
cGlsYXRpb24oKSkKICAgICAgICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5s
aW5lZENhbGwoKTsKICAgICAgICAgcmV0dXJuOwogI2lmIEVOQUJMRShGVExfTkFUSVZFX0NBTExf
SU5MSU5JTkcpCi0gICAgfSBlbHNlIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSAmJiBP
cHRpb25zOjpvcHRpbWl6ZU5hdGl2ZUNhbGxzKCkpIHsKLSAgICAgICAgSlNGdW5jdGlvbiogZnVu
Y3Rpb24gPSBjYWxsTGlua1N0YXR1cy5mdW5jdGlvbigpOworICAgIH0gZWxzZSBpZiAoaXNGVEwo
bV9ncmFwaC5tX3BsYW4ubW9kZSkgJiYgT3B0aW9uczo6b3B0aW1pemVOYXRpdmVDYWxscygpICYm
IGNhbGxMaW5rU3RhdHVzLnNpemUoKSA9PSAxICYmICFjYWxsTGlua1N0YXR1cy5jb3VsZFRha2VT
bG93UGF0aCgpKSB7CisgICAgICAgIENhbGxWYXJpYW50IGNhbGxlZSA9IGNhbGxMaW5rU3RhdHVz
WzBdLmNhbGxlZSgpOworICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS5mdW5j
dGlvbigpOwogICAgICAgICBpZiAoZnVuY3Rpb24gJiYgZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9u
KCkpIHsKLSAgICAgICAgICAgIGVtaXRGdW5jdGlvbkNoZWNrcyhjYWxsTGlua1N0YXR1cywgY2Fs
bFRhcmdldCwgcmVnaXN0ZXJPZmZzZXQsIHNwZWNpYWxpemF0aW9uS2luZCk7Ci0gICAgICAgICAg
ICBrbm93bkZ1bmN0aW9uID0gZnVuY3Rpb247CisgICAgICAgICAgICBlbWl0RnVuY3Rpb25DaGVj
a3MoY2FsbGVlLCBjYWxsVGFyZ2V0LCByZWdpc3Rlck9mZnNldCwgc3BlY2lhbGl6YXRpb25LaW5k
KTsKKyAgICAgICAgICAgIGNhbGxPcEluZm8gPSBPcEluZm8obV9ncmFwaC5mcmVlemUoZnVuY3Rp
b24pKTsKIAotICAgICAgICAgICAgaWYgKG9wID09IENhbGwpIAorICAgICAgICAgICAgaWYgKG9w
ID09IENhbGwpCiAgICAgICAgICAgICAgICAgb3AgPSBOYXRpdmVDYWxsOwogICAgICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKG9wID09IENvbnN0cnVjdCk7CkBAIC0xMDgz
LDEzICsxMDc5LDExIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoCiAgICAgICAg
IH0KICNlbmRpZgogICAgIH0KLSAgICBOb2RlKiBjYWxsID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBj
YWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHBy
ZWRpY3Rpb24pOwotCi0gICAgaWYgKGtub3duRnVuY3Rpb24pIAotICAgICAgICBjYWxsLT5naXZl
S25vd25GdW5jdGlvbihrbm93bkZ1bmN0aW9uKTsKKyAgICAKKyAgICBhZGRDYWxsKHJlc3VsdCwg
b3AsIGNhbGxPcEluZm8sIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBy
ZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CiB9CiAKLXZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVt
aXRGdW5jdGlvbkNoZWNrcyhjb25zdCBDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsIE5v
ZGUqIGNhbGxUYXJnZXQsIGludCByZWdpc3Rlck9mZnNldCwgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBraW5kKQordm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdEZ1bmN0aW9uQ2hlY2tzKENhbGxWYXJp
YW50IGNhbGxlZSwgTm9kZSogY2FsbFRhcmdldCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgTm9kZSogdGhpc0FyZ3VtZW50OwogICAgIGlm
IChraW5kID09IENvZGVGb3JDYWxsKQpAQCAtMTA5NywyMCArMTA5MSwyNSBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjplbWl0RnVuY3Rpb25DaGVja3MoCiAgICAgZWxzZQogICAgICAgICB0aGlzQXJn
dW1lbnQgPSAwOwogCi0gICAgaWYgKGNhbGxMaW5rU3RhdHVzLmlzUHJvdmVkKCkpIHsKLSAgICAg
ICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0LCB0aGlzQXJndW1lbnQpOwotICAgICAg
ICByZXR1cm47CisgICAgSlNDZWxsKiBjYWxsZWVDZWxsOworICAgIE5vZGUqIGNhbGxUYXJnZXRG
b3JDaGVjazsKKyAgICBpZiAoY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSkgeworICAgICAgICBjYWxs
ZWVDZWxsID0gY2FsbGVlLmV4ZWN1dGFibGUoKTsKKyAgICAgICAgY2FsbFRhcmdldEZvckNoZWNr
ID0gYWRkVG9HcmFwaChHZXRFeGVjdXRhYmxlLCBjYWxsVGFyZ2V0KTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBjYWxsZWVDZWxsID0gY2FsbGVlLm5vbkV4ZWN1dGFibGVDYWxsZWUoKTsKKyAgICAg
ICAgY2FsbFRhcmdldEZvckNoZWNrID0gY2FsbFRhcmdldDsKICAgICB9CiAgICAgCi0gICAgQVNT
RVJUKGNhbGxMaW5rU3RhdHVzLmNhbk9wdGltaXplKCkpOwotICAgIAotICAgIGlmIChKU0Z1bmN0
aW9uKiBmdW5jdGlvbiA9IGNhbGxMaW5rU3RhdHVzLmZ1bmN0aW9uKCkpCi0gICAgICAgIGFkZFRv
R3JhcGgoQ2hlY2tGdW5jdGlvbiwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKGZ1bmN0aW9uKSksIGNh
bGxUYXJnZXQsIHRoaXNBcmd1bWVudCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChjYWxs
TGlua1N0YXR1cy5leGVjdXRhYmxlKCkpOwotICAgICAgICAKLSAgICAgICAgYWRkVG9HcmFwaChD
aGVja0V4ZWN1dGFibGUsIE9wSW5mbyhjYWxsTGlua1N0YXR1cy5leGVjdXRhYmxlKCkpLCBjYWxs
VGFyZ2V0LCB0aGlzQXJndW1lbnQpOwotICAgIH0KKyAgICBBU1NFUlQoY2FsbGVlQ2VsbCk7Cisg
ICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShjYWxsZWVDZWxs
KSksIGNhbGxUYXJnZXRGb3JDaGVjaywgdGhpc0FyZ3VtZW50KTsKK30KKwordm9pZCBCeXRlQ29k
ZVBhcnNlcjo6dW5kb0Z1bmN0aW9uQ2hlY2tzKENhbGxWYXJpYW50IGNhbGxlZSkKK3sKKyAgICBy
ZW1vdmVMYXN0Tm9kZUZyb21HcmFwaChDaGVja0NlbGwpOworICAgIGlmIChjYWxsZWUuaXNDbG9z
dXJlQ2FsbCgpKQorICAgICAgICByZW1vdmVMYXN0Tm9kZUZyb21HcmFwaChHZXRFeGVjdXRhYmxl
KTsKIH0KIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdEFyZ3VtZW50UGhhbnRvbXMoaW50IHJl
Z2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCkKQEAgLTExMTksMzYgKzExMTgsMjUgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6ZW1pdEFyZ3VtZW50UGhhbnRvbQogICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGdl
dCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpLCByZWdpc3Rlck9mZnNldCkpKTsKIH0KIAot
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUs
IGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMs
IGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNp
Z25lZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCkKK3Vuc2lnbmVkIEJ5
dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKLSAg
ICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Ci0gICAgCi0gICAgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNp
YWxpemF0aW9uS2luZEZvcihraW5kKTsKLSAgICAKICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAg
ZGF0YUxvZygiQ29uc2lkZXJpbmcgaW5saW5pbmcgIiwgY2FsbExpbmtTdGF0dXMsICIgaW50byAi
LCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKKyAgICAgICAgZGF0YUxvZygiQ29uc2lkZXJp
bmcgaW5saW5pbmcgIiwgY2FsbGVlLCAiIGludG8gIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxu
Iik7CiAgICAgCi0gICAgLy8gRmlyc3QsIHRoZSByZWFsbHkgc2ltcGxlIGNoZWNrczogZG8gd2Ug
aGF2ZSBhbiBhY3R1YWwgSlMgZnVuY3Rpb24/Ci0gICAgaWYgKCFjYWxsTGlua1N0YXR1cy5leGVj
dXRhYmxlKCkpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAgICBkYXRhTG9nKCIg
ICAgRmFpbGluZyBiZWNhdXNlIHRoZXJlIGlzIG5vIGV4ZWN1dGFibGUuXG4iKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBpZiAoY2FsbExpbmtTdGF0dXMuZXhlY3V0YWJsZSgp
LT5pc0hvc3RGdW5jdGlvbigpKSB7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxl
ID0gY2FsbGVlLmZ1bmN0aW9uRXhlY3V0YWJsZSgpOworICAgIGlmICghZXhlY3V0YWJsZSkgewog
ICAgICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJl
Y2F1c2UgaXQncyBhIGhvc3QgZnVuY3Rpb24uXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSB0aGVyZSBpcyBubyBmdW5j
dGlvbiBleGVjdXRhYmxlLiIpOworICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQogICAg
IAotICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4
ZWN1dGFibGUqPihjYWxsTGlua1N0YXR1cy5leGVjdXRhYmxlKCkpOwotICAgIAogICAgIC8vIERv
ZXMgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgd2UncmUgcGFzc2luZyBtYXRjaCB0aGUgYXJpdHkg
b2YgdGhlIHRhcmdldD8gV2UgY3VycmVudGx5CiAgICAgLy8gaW5saW5lIG9ubHkgaWYgdGhlIG51
bWJlciBvZiBhcmd1bWVudHMgcGFzc2VkIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUg
bnVtYmVyCiAgICAgLy8gYXJndW1lbnRzIGV4cGVjdGVkLgogICAgIGlmIChzdGF0aWNfY2FzdDxp
bnQ+KGV4ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCkpICsgMSA+IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygi
ICAgIEZhaWxpbmcgYmVjYXVzZSBvZiBhcml0eSBtaXNtYXRjaC5cbiIpOwotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CiAgICAgCiAgICAgLy8g
RG8gd2UgaGF2ZSBhIGNvZGUgYmxvY2ssIGFuZCBkb2VzIHRoZSBjb2RlIGJsb2NrJ3Mgc2l6ZSBt
YXRjaCB0aGUgaGV1cmlzdGljcy9yZXF1aXJlbWVudHMgZm9yCkBAIC0xMTU3LDE4ICsxMTQ1LDE4
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAvLyBpZiB3
ZSBoYWQgYSBzdGF0aWMgcHJvb2Ygb2Ygd2hhdCB3YXMgYmVpbmcgY2FsbGVkOyB0aGlzIG1pZ2h0
IGhhcHBlbiBmb3IgZXhhbXBsZSBpZiB5b3UgY2FsbCBhCiAgICAgLy8gZ2xvYmFsIGZ1bmN0aW9u
LCB3aGVyZSB3YXRjaHBvaW50aW5nIGdpdmVzIHVzIHN0YXRpYyBpbmZvcm1hdGlvbi4gT3ZlcmFs
bCwgaXQncyBhIHJhcmUgY2FzZQogICAgIC8vIGJlY2F1c2Ugd2UgZXhwZWN0IHRoYXQgYW55IGhv
dCBjYWxsZWVzIHdvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNvbXBpbGVkLgotICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Ioc3BlY2lhbGl6
YXRpb25LaW5kKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmJhc2Vs
aW5lQ29kZUJsb2NrRm9yKGtpbmQpOwogICAgIGlmICghY29kZUJsb2NrKSB7CiAgICAgICAgIGlm
ICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSBubyBj
b2RlIGJsb2NrIGF2YWlsYWJsZS5cbiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJldHVybiBVSU5UX01BWDsKICAgICB9CiAgICAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbCA9IGlubGluZUZ1bmN0aW9uRm9yQ2FwYWJpbGl0eUxldmVsKAotICAgICAgICBjb2RlQmxv
Y2ssIHNwZWNpYWxpemF0aW9uS2luZCwgY2FsbExpbmtTdGF0dXMuaXNDbG9zdXJlQ2FsbCgpKTsK
KyAgICAgICAgY29kZUJsb2NrLCBraW5kLCBjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKTsKICAgICBp
ZiAoIWNhbklubGluZShjYXBhYmlsaXR5TGV2ZWwpKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQog
ICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSB0aGUgZnVuY3Rpb24gaXMg
bm90IGlubGluZWFibGUuXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm4gVUlOVF9NQVg7CiAgICAgfQogICAgIAogICAgIC8vIENoZWNrIGlmIHRoZSBjYWxsZXIgaXMg
YWxyZWFkeSB0b28gbGFyZ2UuIFdlIGRvIHRoaXMgY2hlY2sgaGVyZSBiZWNhdXNlIHRoYXQncyBq
dXN0CkBAIC0xMTc4LDcgKzExNjYsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxp
bmluZyhOb2RlCiAgICAgICAgIGNvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBm
YWxzZTsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFp
bGluZyBiZWNhdXNlIHRoZSBjYWxsZXIgaXMgdG9vIGxhcmdlLlxuIik7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgIH0KICAgICAKICAgICAvLyBG
SVhNRTogdGhpcyBzaG91bGQgYmUgYmV0dGVyIGF0IHByZWRpY3RpbmcgaG93IG11Y2ggYmxvYXQg
d2Ugd2lsbCBpbnRyb2R1Y2UgYnkgaW5saW5pbmcKQEAgLTExOTcsNyArMTE4NSw3IEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAgICAgaWYgKGRlcHRoID49
IE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ0RlcHRoKCkpIHsKICAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgZGVwdGgg
ZXhjZWVkZWQuXG4iKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJl
dHVybiBVSU5UX01BWDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGVudHJ5LT5l
eGVjdXRhYmxlKCkgPT0gZXhlY3V0YWJsZSkgewpAQCAtMTIwNSwxOSArMTE5MywyNiBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgICAgICAgICBpZiAocmVj
dXJzaW9uID49IE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ1JlY3Vyc2lvbigpKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBG
YWlsaW5nIGJlY2F1c2UgcmVjdXJzaW9uIGRldGVjdGVkLlxuIik7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICAKICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAg
ZGF0YUxvZygiICAgIENvbW1pdHRpbmcgdG8gaW5saW5pbmcuXG4iKTsKKyAgICAgICAgZGF0YUxv
ZygiICAgIElubGluaW5nIHNob3VsZCBiZSBwb3NzaWJsZS5cbiIpOwogICAgIAotICAgIC8vIE5v
dyB3ZSBrbm93IHdpdGhvdXQgYSBkb3VidCB0aGF0IHdlIGFyZSBjb21taXR0ZWQgdG8gaW5saW5p
bmcuIFNvIGJlZ2luIHRoZSBwcm9jZXNzCi0gICAgLy8gYnkgY2hlY2tpbmcgdGhlIGNhbGxlZSAo
aWYgbmVjZXNzYXJ5KSBhbmQgbWFraW5nIHN1cmUgdGhhdCBhcmd1bWVudHMgYW5kIHRoZSBjYWxs
ZWUKLSAgICAvLyBhcmUgZmx1c2hlZC4KLSAgICBlbWl0RnVuY3Rpb25DaGVja3MoY2FsbExpbmtT
dGF0dXMsIGNhbGxUYXJnZXROb2RlLCByZWdpc3Rlck9mZnNldCwgc3BlY2lhbGl6YXRpb25LaW5k
KTsKKyAgICAvLyBJdCBtaWdodCBiZSBwb3NzaWJsZSB0byBpbmxpbmUuCisgICAgcmV0dXJuIGNv
ZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpOworfQorCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpp
bmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZh
cmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQs
IENhbGxlckxpbmthYmlsaXR5IGNhbGxlckxpbmthYmlsaXR5KQoreworICAgIENvZGVTcGVjaWFs
aXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVjaWFs
aXphdGlvbktpbmRGb3Ioa2luZCk7CisgICAgCisgICAgQVNTRVJUKGlubGluaW5nQ29zdChjYWxs
ZWUsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQpICE9IFVJ
TlRfTUFYKTsKICAgICAKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxlZS5mdW5jdGlv
bkV4ZWN1dGFibGUoKS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsK
KwogICAgIC8vIEZJWE1FOiBEb24ndCBmbHVzaCBjb25zdGFudHMhCiAgICAgCiAgICAgaW50IGlu
bGluZUNhbGxGcmFtZVN0YXJ0ID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKFZpcnR1
YWxSZWdpc3RlcihyZWdpc3Rlck9mZnNldCkpLm9mZnNldCgpICsgSlNTdGFjazo6Q2FsbEZyYW1l
SGVhZGVyU2l6ZTsKQEAgLTEyMzMsNyArMTIyOCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUlubGluaW5nKE5vZGUKICAgICAgICAgcmVzdWx0UmVnID0gbV9pbmxpbmVTdGFja1RvcC0+
cmVtYXBPcGVyYW5kKHJlc3VsdFJlZyk7CiAgICAgCiAgICAgSW5saW5lU3RhY2tFbnRyeSBpbmxp
bmVTdGFja0VudHJ5KAotICAgICAgICB0aGlzLCBjb2RlQmxvY2ssIGNvZGVCbG9jaywgbV9ncmFw
aC5sYXN0QmxvY2soKSwgY2FsbExpbmtTdGF0dXMuZnVuY3Rpb24oKSwgcmVzdWx0UmVnLAorICAg
ICAgICB0aGlzLCBjb2RlQmxvY2ssIGNvZGVCbG9jaywgbV9ncmFwaC5sYXN0QmxvY2soKSwgY2Fs
bGVlLmZ1bmN0aW9uKCksIHJlc3VsdFJlZywKICAgICAgICAgKFZpcnR1YWxSZWdpc3Rlcilpbmxp
bmVDYWxsRnJhbWVTdGFydCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGtpbmQpOwogICAg
IAogICAgIC8vIFRoaXMgaXMgd2hlcmUgdGhlIGFjdHVhbCBpbmxpbmluZyByZWFsbHkgaGFwcGVu
cy4KQEAgLTEyNDcsOCArMTI0Miw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGlu
aW5nKE5vZGUKICAgICAKICAgICBSRUxFQVNFX0FTU0VSVCgKICAgICAgICAgbV9pbmxpbmVTdGFj
a1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwKLSAgICAgICAgPT0gY2FsbExp
bmtTdGF0dXMuaXNDbG9zdXJlQ2FsbCgpKTsKLSAgICBpZiAoY2FsbExpbmtTdGF0dXMuaXNDbG9z
dXJlQ2FsbCgpKSB7CisgICAgICAgID09IGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpOworICAgIGlm
IChjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKSB7CiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSog
Y2FsbGVlVmFyaWFibGUgPQogICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihKU1N0YWNr
OjpDYWxsZWUpLCBjYWxsVGFyZ2V0Tm9kZSwgSW1tZWRpYXRlTmFrZWRTZXQpLT52YXJpYWJsZUFj
Y2Vzc0RhdGEoKTsKICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBzY29wZVZhcmlhYmxlID0K
QEAgLTEyNjMsNyArMTI1OCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5n
KE5vZGUKICAgICBtX2dyYXBoLm1faW5saW5lVmFyaWFibGVEYXRhLmFwcGVuZChpbmxpbmVWYXJp
YWJsZURhdGEpOwogICAgIAogICAgIHBhcnNlQ29kZUJsb2NrKCk7Ci0gICAgcHJlcGFyZVRvUGFy
c2VCbG9jaygpOyAvLyBSZXNldCBvdXIgc3RhdGUgbm93IHRoYXQgd2UncmUgYmFjayB0byB0aGUg
b3V0ZXIgY29kZS4KKyAgICBjbGVhckNhY2hlcygpOyAvLyBSZXNldCBvdXIgc3RhdGUgbm93IHRo
YXQgd2UncmUgYmFjayB0byB0aGUgb3V0ZXIgY29kZS4KICAgICAKICAgICBtX2N1cnJlbnRJbmRl
eCA9IG9sZEluZGV4OwogICAgIApAQCAtMTI3NiwyMCArMTI3MSw4IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAgICAgZWxzZQogICAgICAgICAgICAgQVNT
RVJUKGlubGluZVN0YWNrRW50cnkubV9jYWxsc2l0ZUJsb2NrSGVhZC0+aXNMaW5rZWQpOwogICAg
ICAgICAKLSAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHRoZSBjYWxsc2l0ZSBibG9jayBo
ZWFkIGlzIG5vdCBvd25lZCBieSB0aGUgY2FsbGVyLgotICAgICAgICBpZiAoIWlubGluZVN0YWNr
RW50cnkubV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAg
ICAvLyBJdCdzIGRlZmluaXRlbHkgb3duZWQgYnkgdGhlIGNhbGxlciwgYmVjYXVzZSB0aGUgY2Fs
bGVyIGNyZWF0ZWQgbmV3IGJsb2Nrcy4KLSAgICAgICAgICAgIC8vIEFzc2VydCB0aGF0IHRoaXMg
YWxsIGFkZHMgdXAuCi0gICAgICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxl
ci0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9ibG9jayA9PSBpbmxpbmVTdGFja0VudHJ5Lm1f
Y2FsbHNpdGVCbG9ja0hlYWQpOwotICAgICAgICAgICAgQVNTRVJUKGlubGluZVN0YWNrRW50cnku
bV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MubGFzdCgpLm1fbmVlZHNOb3JtYWxMaW5raW5nKTsK
LSAgICAgICAgICAgIGlubGluZVN0YWNrRW50cnkubV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3Mu
bGFzdCgpLm1fbmVlZHNOb3JtYWxMaW5raW5nID0gZmFsc2U7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAvLyBJdCdzIGRlZmluaXRlbHkgbm90IG93bmVkIGJ5IHRoZSBjYWxsZXIuIFRl
bGwgdGhlIGNhbGxlciB0aGF0IGhlIGRvZXMgbm90Ci0gICAgICAgICAgICAvLyBuZWVkIHRvIGxp
bmsgaGlzIGNhbGxzaXRlIGJsb2NrIGhlYWQsIGJlY2F1c2Ugd2UgZGlkIGl0IGZvciBoaW0uCi0g
ICAgICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+bV9jYWxsc2l0ZUJs
b2NrSGVhZE5lZWRzTGlua2luZyk7Ci0gICAgICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRy
eS5tX2NhbGxlci0+bV9jYWxsc2l0ZUJsb2NrSGVhZCA9PSBpbmxpbmVTdGFja0VudHJ5Lm1fY2Fs
bHNpdGVCbG9ja0hlYWQpOwotICAgICAgICAgICAgaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+
bV9jYWxsc2l0ZUJsb2NrSGVhZE5lZWRzTGlua2luZyA9IGZhbHNlOwotICAgICAgICB9CisgICAg
ICAgIGlmIChjYWxsZXJMaW5rYWJpbGl0eSA9PSBDYWxsZXJEb2VzTm9ybWFsTGlua2luZykKKyAg
ICAgICAgICAgIGNhbmNlbExpbmtpbmdGb3JCbG9jayhpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVy
LCBpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbHNpdGVCbG9ja0hlYWQpOwogICAgICAgICAKICAgICAg
ICAgbGlua0Jsb2NrcyhpbmxpbmVTdGFja0VudHJ5Lm1fdW5saW5rZWRCbG9ja3MsIGlubGluZVN0
YWNrRW50cnkubV9ibG9ja0xpbmtpbmdUYXJnZXRzKTsKICAgICB9IGVsc2UKQEAgLTEzMDgsMTYg
KzEyOTEsMTkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAg
ICAgICAgICAgLy8gZm9yIHJlbGVhc2UgYnVpbGRzIGJlY2F1c2UgdGhpcyBibG9jayB3aWxsIG5l
dmVyIHNlcnZlIGFzIGEgcG90ZW50aWFsIHRhcmdldAogICAgICAgICAgICAgLy8gaW4gdGhlIGxp
bmtlcidzIGJpbmFyeSBzZWFyY2guCiAgICAgICAgICAgICBsYXN0QmxvY2stPmJ5dGVjb2RlQmVn
aW4gPSBtX2N1cnJlbnRJbmRleDsKLSAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2Fs
bGVyLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKG1fZ3JhcGgubGFzdEJs
b2NrKCkpKTsKKyAgICAgICAgICAgIGlmIChjYWxsZXJMaW5rYWJpbGl0eSA9PSBDYWxsZXJEb2Vz
Tm9ybWFsTGlua2luZykgeworICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCJBZGRpbmcgdW5saW5rZWQgYmxvY2sgIiwgUmF3UG9pbnRlciht
X2dyYXBoLmxhc3RCbG9jaygpKSwgIiAob25lIHJldHVybilcbiIpOworICAgICAgICAgICAgICAg
IG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxp
bmtlZEJsb2NrKG1fZ3JhcGgubGFzdEJsb2NrKCkpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgICAgICAKICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBtX2dyYXBoLmxhc3RCbG9jaygp
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAg
ICAvLyBJZiB3ZSBnZXQgdG8gdGhpcyBwb2ludCB0aGVuIGFsbCBibG9ja3MgbXVzdCBlbmQgaW4g
c29tZSBzb3J0IG9mIHRlcm1pbmFscy4KICAgICBBU1NFUlQobGFzdEJsb2NrLT5sYXN0KCktPmlz
VGVybWluYWwoKSk7Ci0gICAgCiAKICAgICAvLyBOZWVkIHRvIGNyZWF0ZSBhIG5ldyBiYXNpYyBi
bG9jayBmb3IgdGhlIGNvbnRpbnVhdGlvbiBhdCB0aGUgY2FsbGVyLgogICAgIFJlZlB0cjxCYXNp
Y0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKG5ldyBCYXNpY0Jsb2NrKG5leHRPZmZzZXQsIG1fbnVt
QXJndW1lbnRzLCBtX251bUxvY2FscywgUE5hTikpOwpAQCAtMTMzMywyMCArMTMxOSwyODIgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgICAgICBBU1NFUlQo
IW5vZGUtPnRhcmdldEJsb2NrKCkpOwogICAgICAgICBub2RlLT50YXJnZXRCbG9jaygpID0gYmxv
Y2suZ2V0KCk7CiAgICAgICAgIGlubGluZVN0YWNrRW50cnkubV91bmxpbmtlZEJsb2Nrc1tpXS5t
X25lZWRzRWFybHlSZXR1cm5MaW5raW5nID0gZmFsc2U7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAot
ICAgICAgICBibG9ja1RvTGluay0+aXNMaW5rZWQgPSB0cnVlOwotI2VuZGlmCisgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgZGF0YUxvZygiTWFya2luZyAiLCBSYXdQb2ludGVyKGJs
b2NrVG9MaW5rKSwgIiBhcyBsaW5rZWQgKGp1bXBzIHRvIHJldHVybilcbiIpOworICAgICAgICBi
bG9ja1RvTGluay0+ZGlkTGluaygpOwogICAgIH0KICAgICAKICAgICBtX2N1cnJlbnRCbG9jayA9
IGJsb2NrLmdldCgpOwogICAgIEFTU0VSVChtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9i
bG9ja0xpbmtpbmdUYXJnZXRzLmlzRW1wdHkoKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxl
ci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmxhc3QoKS0+Ynl0ZWNvZGVCZWdpbiA8IG5leHRPZmZz
ZXQpOwotICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tzLmFw
cGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLmdldCgpKSk7Ci0gICAgbV9pbmxpbmVTdGFja1RvcC0+
bV9jYWxsZXItPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5hcHBlbmQoYmxvY2suZ2V0KCkpOworICAg
IGlmICh2ZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJBZGRpbmcgdW5saW5rZWQgYmxvY2sgIiwg
UmF3UG9pbnRlcihibG9jay5nZXQoKSksICIgKG1hbnkgcmV0dXJucylcbiIpOworICAgIGlmIChj
YWxsZXJMaW5rYWJpbGl0eSA9PSBDYWxsZXJEb2VzTm9ybWFsTGlua2luZykgeworICAgICAgICBt
X2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5hcHBlbmQoVW5saW5r
ZWRCbG9jayhibG9jay5nZXQoKSkpOworICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxl
ci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9jay5nZXQoKSk7CisgICAgfQogICAg
IG1fZ3JhcGguYXBwZW5kQmxvY2soYmxvY2spOwogICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsK
K30KKwordm9pZCBCeXRlQ29kZVBhcnNlcjo6Y2FuY2VsTGlua2luZ0ZvckJsb2NrKElubGluZVN0
YWNrRW50cnkqIGlubGluZVN0YWNrRW50cnksIEJhc2ljQmxvY2sqIGJsb2NrKQoreworICAgIC8v
IEl0J3MgcG9zc2libGUgdGhhdCB0aGUgY2FsbHNpdGUgYmxvY2sgaGVhZCBpcyBub3Qgb3duZWQg
YnkgdGhlIGNhbGxlci4KKyAgICBpZiAoIWlubGluZVN0YWNrRW50cnktPm1fdW5saW5rZWRCbG9j
a3MuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIEl0J3MgZGVmaW5pdGVseSBvd25lZCBieSB0aGUg
Y2FsbGVyLCBiZWNhdXNlIHRoZSBjYWxsZXIgY3JlYXRlZCBuZXcgYmxvY2tzLgorICAgICAgICAv
LyBBc3NlcnQgdGhhdCB0aGlzIGFsbCBhZGRzIHVwLgorICAgICAgICBBU1NFUlQoaW5saW5lU3Rh
Y2tFbnRyeS0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9ibG9jayA9PSBibG9jayk7CisgICAg
ICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5LT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX25l
ZWRzTm9ybWFsTGlua2luZyk7CisgICAgICAgIGlubGluZVN0YWNrRW50cnktPm1fdW5saW5rZWRC
bG9ja3MubGFzdCgpLm1fbmVlZHNOb3JtYWxMaW5raW5nID0gZmFsc2U7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgLy8gSXQncyBkZWZpbml0ZWx5IG5vdCBvd25lZCBieSB0aGUgY2FsbGVyLiBUZWxs
IHRoZSBjYWxsZXIgdGhhdCBoZSBkb2VzIG5vdAorICAgICAgICAvLyBuZWVkIHRvIGxpbmsgaGlz
IGNhbGxzaXRlIGJsb2NrIGhlYWQsIGJlY2F1c2Ugd2UgZGlkIGl0IGZvciBoaW0uCisgICAgICAg
IEFTU0VSVChpbmxpbmVTdGFja0VudHJ5LT5tX2NhbGxzaXRlQmxvY2tIZWFkTmVlZHNMaW5raW5n
KTsKKyAgICAgICAgQVNTRVJUKGlubGluZVN0YWNrRW50cnktPm1fY2FsbHNpdGVCbG9ja0hlYWQg
PT0gYmxvY2spOworICAgICAgICBpbmxpbmVTdGFja0VudHJ5LT5tX2NhbGxzaXRlQmxvY2tIZWFk
TmVlZHNMaW5raW5nID0gZmFsc2U7CisgICAgfQorfQorCitib29sIEJ5dGVDb2RlUGFyc2VyOjph
dHRlbXB0VG9JbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFu
ZCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpL
aW5kIGtpbmQsIENhbGxlckxpbmthYmlsaXR5IGNhbGxlckxpbmthYmlsaXR5LCBTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0aW9uLCB1bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlKQoreworICAgIENvZGVT
cGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1lOjpz
cGVjaWFsaXphdGlvbktpbmRGb3Ioa2luZCk7CisgICAgCisgICAgaWYgKCFpbmxpbmluZ0JhbGFu
Y2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICAvLyBBdCB0aGlzIHBvaW50IHdl
IHJldHVybiBhbmQgY29udGludWUgdG8gZ2VuZXJhdGUgY29kZSBmb3IgdGhlIGNhbGxlciwgYnV0
Ci0gICAgLy8gaW4gdGhlIG5ldyBiYXNpYyBibG9jay4KKyAgICBpZiAoSW50ZXJuYWxGdW5jdGlv
biogZnVuY3Rpb24gPSBjYWxsZWUuaW50ZXJuYWxGdW5jdGlvbigpKSB7CisgICAgICAgIGlmICho
YW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24ocmVzdWx0T3BlcmFuZCwgZnVuY3Rpb24sIHJl
Z2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25L
aW5kKSkgeworICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0Tm9kZSk7
CisgICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgICAgICAgICBp
bmxpbmluZ0JhbGFuY2UtLTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgSW50cmluc2ljIGludHJpbnNp
YyA9IGNhbGxlZS5pbnRyaW5zaWNGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICBpZiAoaW50
cmluc2ljICE9IE5vSW50cmluc2ljKSB7CisgICAgICAgIGlmIChoYW5kbGVJbnRyaW5zaWMocmVz
dWx0T3BlcmFuZCwgaW50cmluc2ljLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIHByZWRpY3Rpb24pKSB7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20s
IGNhbGxUYXJnZXROb2RlKTsKKyAgICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lz
dGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5k
KTsKKyAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZS0tOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICB1
bnNpZ25lZCBteUlubGluaW5nQ29zdCA9IGlubGluaW5nQ29zdChjYWxsZWUsIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgIGlmIChteUlubGluaW5n
Q29zdCA+IGlubGluaW5nQmFsYW5jZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAg
IGlubGluZUNhbGwoY2FsbFRhcmdldE5vZGUsIHJlc3VsdE9wZXJhbmQsIGNhbGxlZSwgcmVnaXN0
ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zmc2V0LCBraW5kLCBj
YWxsZXJMaW5rYWJpbGl0eSk7CisgICAgaW5saW5pbmdCYWxhbmNlIC09IG15SW5saW5pbmdDb3N0
OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxp
bmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IENhbGxM
aW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIE5vZGVUeXBlIGNhbGxP
cCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24p
Cit7CisgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgZGF0YUxvZygiSGFuZGxpbmcgaW5saW5p
bmcuLi5cbiIpOworICAgICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4o
KSwgIlxuIik7CisgICAgfQorICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRp
b25LaW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXphdGlvbktpbmRGb3Ioa2luZCk7Cisg
ICAgCisgICAgaWYgKCFjYWxsTGlua1N0YXR1cy5zaXplKCkpIHsKKyAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgICAgICBkYXRhTG9nKCJCYWlsaW5nIGlubGluaW5nLlxuIik7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgaW5saW5pbmdCYWxhbmNl
ID0gT3B0aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0
aW9uQ291bnQoKTsKKyAgICBpZiAoc3BlY2lhbGl6YXRpb25LaW5kID09IENvZGVGb3JDb25zdHJ1
Y3QpCisgICAgICAgIGlubGluaW5nQmFsYW5jZSA9IHN0ZDo6bWluKGlubGluaW5nQmFsYW5jZSwg
T3B0aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saW5lQ2FuZGlkYXRlSW5zdHJ1
Y3Rpb25Db3VudCgpKTsKKyAgICBpZiAoY2FsbExpbmtTdGF0dXMuaXNDbG9zdXJlQ2FsbCgpKQor
ICAgICAgICBpbmxpbmluZ0JhbGFuY2UgPSBzdGQ6Om1pbihpbmxpbmluZ0JhbGFuY2UsIE9wdGlv
bnM6Om1heGltdW1GdW5jdGlvbkZvckNsb3N1cmVDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rp
b25Db3VudCgpKTsKKyAgICAKKyAgICAvLyBGaXJzdCBjaGVjayBpZiB3ZSBjYW4gYXZvaWQgY3Jl
YXRpbmcgY29udHJvbCBmbG93LiBPdXIgaW5saW5lciBkb2VzIHNvbWUgQ0ZHCisgICAgLy8gc2lt
cGxpZmljYXRpb24gb24gdGhlIGZseSBhbmQgdGhpcyBoZWxwcyByZWR1Y2UgY29tcGlsZSB0aW1l
cywgYnV0IHdlIGNhbiBvbmx5IGxldmVyYWdlCisgICAgLy8gdGhpcyBpbiBjYXNlcyB3aGVyZSB3
ZSBkb24ndCBuZWVkIGNvbnRyb2wgZmxvdyBkaWFtb25kcyB0byBjaGVjayB0aGUgY2FsbGVlLgor
ICAgIGlmICghY2FsbExpbmtTdGF0dXMuY291bGRUYWtlU2xvd1BhdGgoKSAmJiBjYWxsTGlua1N0
YXR1cy5zaXplKCkgPT0gMSkgeworICAgICAgICBlbWl0RnVuY3Rpb25DaGVja3MoCisgICAgICAg
ICAgICBjYWxsTGlua1N0YXR1c1swXS5jYWxsZWUoKSwgY2FsbFRhcmdldE5vZGUsIHJlZ2lzdGVy
T2Zmc2V0LCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgICAgICBib29sIHJlc3VsdCA9IGF0dGVt
cHRUb0lubGluZUNhbGwoCisgICAgICAgICAgICBjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0T3BlcmFu
ZCwgY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVlKCksIHJlZ2lzdGVyT2Zmc2V0LAorICAgICAgICAg
ICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQsIGtpbmQsIENhbGxlckRv
ZXNOb3JtYWxMaW5raW5nLCBwcmVkaWN0aW9uLAorICAgICAgICAgICAgaW5saW5pbmdCYWxhbmNl
KTsKKyAgICAgICAgaWYgKCFyZXN1bHQgJiYgIWNhbGxMaW5rU3RhdHVzLmlzUHJvdmVkKCkpCisg
ICAgICAgICAgICB1bmRvRnVuY3Rpb25DaGVja3MoY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVlKCkp
OworICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgZGF0YUxvZygiRG9uZSBpbmxp
bmluZyAoc2ltcGxlKS5cbiIpOworICAgICAgICAgICAgZGF0YUxvZygiU3RhY2s6ICIsIGN1cnJl
bnRDb2RlT3JpZ2luKCksICJcbiIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorICAgIAorICAgIC8vIFdlIG5lZWQgdG8gY3JlYXRlIHNvbWUga2luZCBvZiBzd2l0
Y2ggb3ZlciBjYWxsZWUuIEZvciBub3cgd2Ugb25seSBkbyB0aGlzIGlmIHdlIGJlbGlldmUgdGhh
dAorICAgIC8vIHdlJ3JlIGluIHRoZSB0b3AgdGllci4gV2UgaGF2ZSB0d28gcmVhc29ucyBmb3Ig
dGhpczogZmlyc3QsIGl0IHByb3ZpZGVzIHVzIGFuIG9wcG9ydHVuaXR5IHRvCisgICAgLy8gZG8g
bW9yZSBkZXRhaWxlZCBwb2x5dmFyaWFudC9wb2x5bW9ycGhpYyBwcm9maWxpbmc7IGFuZCBzZWNv
bmQsIGl0IHJlZHVjZXMgY29tcGlsZSB0aW1lcyBpbgorICAgIC8vIHRoZSBERkcuIEFuZCBieSBw
b2x5dmFyaWFudCBwcm9maWxpbmcgd2UgbWVhbiBwb2x5dmFyaWFudCBwcm9maWxpbmcgb2YgKnRo
aXMqIGNhbGwuIE5vdGUgdGhhdAorICAgIC8vIHdlIGNvdWxkIGltcHJvdmUgdGhhdCBhc3BlY3Qg
b2YgdGhpcyBieSBkb2luZyBwb2x5bW9ycGhpYyBpbmxpbmluZyBidXQgaGF2aW5nIHRoZSBwcm9m
aWxpbmcKKyAgICAvLyBhbHNvLiBDdXJyZW50bHkgd2Ugb3B0IGFnYWluc3QgdGhpcywgYnV0IGl0
IGNvdWxkIGJlIGludGVyZXN0aW5nLiBUaGF0IHdvdWxkIHJlcXVpcmUgaGF2aW5nIGEKKyAgICAv
LyBzZXBhcmF0ZSBub2RlIGZvciBjYWxsIGVkZ2UgcHJvZmlsaW5nLgorICAgIC8vIEZJWE1FOiBJ
bnRyb2R1Y2UgdGhlIG5vdGlvbiBvZiBhIHNlcGFyYXRlIGNhbGwgZWRnZSBwcm9maWxpbmcgbm9k
ZS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MDMz
CisgICAgaWYgKCFpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSB8fCAhT3B0aW9uczo6ZW5hYmxl
UG9seW1vcnBoaWNDYWxsSW5saW5pbmcoKSkgeworICAgICAgICBpZiAodmVyYm9zZSkgeworICAg
ICAgICAgICAgZGF0YUxvZygiQmFpbGluZyBpbmxpbmluZyAoaGFyZCkuXG4iKTsKKyAgICAgICAg
ICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIG9s
ZE9mZnNldCA9IG1fY3VycmVudEluZGV4OworICAgIG1fY3VycmVudEluZGV4ID0gbmV4dE9mZnNl
dDsKKyAgICAKKyAgICBib29sIGFsbEFyZUNsb3N1cmVDYWxscyA9IHRydWU7CisgICAgYm9vbCBh
bGxBcmVEaXJlY3RDYWxscyA9IHRydWU7CisgICAgZm9yICh1bnNpZ25lZCBpID0gY2FsbExpbmtT
dGF0dXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIGlmIChjYWxsTGlua1N0YXR1c1tpXS5jYWxs
ZWUoKS5pc0Nsb3N1cmVDYWxsKCkpCisgICAgICAgICAgICBhbGxBcmVEaXJlY3RDYWxscyA9IGZh
bHNlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhbGxBcmVDbG9zdXJlQ2FsbHMgPSBmYWxz
ZTsKKyAgICB9CisgICAgCisgICAgTm9kZSogdGhpbmdUb1N3aXRjaE9uOworICAgIGlmIChhbGxB
cmVEaXJlY3RDYWxscykKKyAgICAgICAgdGhpbmdUb1N3aXRjaE9uID0gY2FsbFRhcmdldE5vZGU7
CisgICAgZWxzZSBpZiAoYWxsQXJlQ2xvc3VyZUNhbGxzKQorICAgICAgICB0aGluZ1RvU3dpdGNo
T24gPSBhZGRUb0dyYXBoKEdldEV4ZWN1dGFibGUsIGNhbGxUYXJnZXROb2RlKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGhhbmRsZSB0aGlzIGNh
c2UsIGJ1dCBpdCdzIHRyaWNreSBhbmQgd2UgZG9uJ3Qga25vdyBvZiBjYXNlcworICAgICAgICAv
LyB3aGVyZSBpdCB3b3VsZCBiZSBiZW5lZmljaWFsLiBBbHNvLCBDYWxsTGlua1N0YXR1cyB3b3Vs
ZCBtYWtlIGFsbCBjYWxsZWVzIGFwcGVhciBsaWtlCisgICAgICAgIC8vIGNsb3N1cmUgY2FsbHMg
aWYgYW55IGNhbGxzIHdlcmUgY2xvc3VyZSBjYWxscyAtIGV4Y2VwdCBmb3IgY2FsbHMgdG8gaW50
ZXJuYWwgZnVuY3Rpb25zLgorICAgICAgICAvLyBTbyB0aGlzIHdpbGwgb25seSBhcmlzZSBpZiBz
b21lIGNhbGxlZXMgYXJlIGludGVybmFsIGZ1bmN0aW9ucyBhbmQgb3RoZXJzIGFyZSBjbG9zdXJl
cy4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
NjAyMAorICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgZGF0YUxvZygiQmFpbGlu
ZyBpbmxpbmluZyAobWl4KS5cbiIpOworICAgICAgICAgICAgZGF0YUxvZygiU3RhY2s6ICIsIGN1
cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgCisgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgZGF0YUxvZygiRG9p
bmcgaGFyZCBpbmxpbmluZy4uLlxuIik7CisgICAgICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJy
ZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKKyAgICB9CisgICAgCisgICAgLy8gVGhpcyBtYWtlcyBt
ZSB3aXNoIHRoYXQgd2Ugd2VyZSBpbiBTU0EgYWxsIHRoZSB0aW1lLiBXZSBuZWVkIHRvIHBpY2sg
YSB2YXJpYWJsZSBpbnRvIHdoaWNoIHRvCisgICAgLy8gc3RvcmUgdGhlIGNhbGxlZSBzbyB0aGF0
IGl0IHdpbGwgYmUgYWNjZXNzaWJsZSB0byBhbGwgb2YgdGhlIGJsb2NrcyB3ZSdyZSBhYm91dCB0
byBjcmVhdGUuIFdlCisgICAgLy8gZ2V0IGF3YXkgd2l0aCBkb2luZyBhbiBpbW1lZGlhdGUtc2V0
IGhlcmUgYmVjYXVzZSB3ZSB3b3VsZG4ndCBoYXZlIHBlcmZvcm1lZCBhbnkgc2lkZSBlZmZlY3Rz
CisgICAgLy8geWV0LgorICAgIGlmICh2ZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJSZWdpc3Rl
ciBvZmZzZXQ6ICIsIHJlZ2lzdGVyT2Zmc2V0KTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVl
UmVnKHJlZ2lzdGVyT2Zmc2V0ICsgSlNTdGFjazo6Q2FsbGVlKTsKKyAgICBjYWxsZWVSZWcgPSBt
X2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQoY2FsbGVlUmVnKTsKKyAgICBpZiAodmVyYm9z
ZSkKKyAgICAgICAgZGF0YUxvZygiQ2FsbGVlIGlzIGdvaW5nIHRvIGJlICIsIGNhbGxlZVJlZywg
IlxuIik7CisgICAgc2V0RGlyZWN0KGNhbGxlZVJlZywgY2FsbFRhcmdldE5vZGUsIEltbWVkaWF0
ZVNldFdpdGhGbHVzaCk7CisgICAgCisgICAgU3dpdGNoRGF0YSYgZGF0YSA9ICptX2dyYXBoLm1f
c3dpdGNoRGF0YS5hZGQoKTsKKyAgICBkYXRhLmtpbmQgPSBTd2l0Y2hDZWxsOworICAgIGFkZFRv
R3JhcGgoU3dpdGNoLCBPcEluZm8oJmRhdGEpLCB0aGluZ1RvU3dpdGNoT24pOworICAgIAorICAg
IEJhc2ljQmxvY2sqIG9yaWdpbkJsb2NrID0gbV9jdXJyZW50QmxvY2s7CisgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgIGRhdGFMb2coIk1hcmtpbmcgIiwgUmF3UG9pbnRlcihvcmlnaW5CbG9jayks
ICIgYXMgbGlua2VkIChvcmlnaW4gb2YgcG9seSBpbmxpbmUpXG4iKTsKKyAgICBvcmlnaW5CbG9j
ay0+ZGlkTGluaygpOworICAgIGNhbmNlbExpbmtpbmdGb3JCbG9jayhtX2lubGluZVN0YWNrVG9w
LCBvcmlnaW5CbG9jayk7CisgICAgCisgICAgLy8gRWFjaCBpbmxpbmVkIGNhbGxlZSB3aWxsIGhh
dmUgYSBsYW5kaW5nIGJsb2NrIHRoYXQgaXQgcmV0dXJucyBhdC4gVGhleSBzaG91bGQgYWxsIGhh
dmUganVtcHMKKyAgICAvLyB0byB0aGUgY29udGludWF0aW9uIGJsb2NrLCB3aGljaCB3ZSBjcmVh
dGUgbGFzdC4KKyAgICBWZWN0b3I8QmFzaWNCbG9jayo+IGxhbmRpbmdCbG9ja3M7CisgICAgCisg
ICAgLy8gV2UgbWFrZSBmb3JjZSB0aGlzIHRydWUgaWYgd2UgZ2l2ZSB1cCBvbiBpbmxpbmluZyBh
bnkgb2YgdGhlIGVkZ2VzLgorICAgIGJvb2wgY291bGRUYWtlU2xvd1BhdGggPSBjYWxsTGlua1N0
YXR1cy5jb3VsZFRha2VTbG93UGF0aCgpOworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBjYWxsTGlua1N0YXR1cy5zaXplKCk7ICsraSkgeworICAgICAgICBSZWZQdHI8QmFzaWNC
bG9jaz4gYmxvY2sgPSBhZG9wdFJlZihuZXcgQmFzaWNCbG9jayhVSU5UX01BWCwgbV9udW1Bcmd1
bWVudHMsIG1fbnVtTG9jYWxzLCBQTmFOKSk7CisgICAgICAgIG1fY3VycmVudEJsb2NrID0gYmxv
Y2suZ2V0KCk7CisgICAgICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soYmxvY2spOworICAgICAgICBw
cmVwYXJlVG9QYXJzZUJsb2NrKCk7CisgICAgICAgIAorICAgICAgICBOb2RlKiBteUNhbGxUYXJn
ZXROb2RlID0gZ2V0RGlyZWN0KGNhbGxlZVJlZyk7CisgICAgICAgIAorICAgICAgICBib29sIGlu
bGluaW5nUmVzdWx0ID0gYXR0ZW1wdFRvSW5saW5lQ2FsbCgKKyAgICAgICAgICAgIG15Q2FsbFRh
cmdldE5vZGUsIHJlc3VsdE9wZXJhbmQsIGNhbGxMaW5rU3RhdHVzW2ldLmNhbGxlZSgpLCByZWdp
c3Rlck9mZnNldCwKKyAgICAgICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBuZXh0
T2Zmc2V0LCBraW5kLCBDYWxsZXJMaW5rc01hbnVhbGx5LCBwcmVkaWN0aW9uLAorICAgICAgICAg
ICAgaW5saW5pbmdCYWxhbmNlKTsKKyAgICAgICAgCisgICAgICAgIGlmICghaW5saW5pbmdSZXN1
bHQpIHsKKyAgICAgICAgICAgIC8vIFRoYXQgZmFpbGVkIHNvIHdlIGxldCB0aGUgYmxvY2sgZGll
LiBOb3RoaW5nIGludGVyZXN0aW5nIHNob3VsZCBoYXZlIGJlZW4gYWRkZWQgdG8KKyAgICAgICAg
ICAgIC8vIHRoZSBibG9jay4gV2UgYWxzbyBnaXZlIHVwIG9uIGlubGluaW5nIGFueSBvZiB0aGUg
KGxlc3MgZnJlcXVlbnQpIGNhbGxlZXMuCisgICAgICAgICAgICBBU1NFUlQobV9jdXJyZW50Qmxv
Y2sgPT0gYmxvY2suZ2V0KCkpOworICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9ibG9ja3Mu
bGFzdCgpID09IGJsb2NrKTsKKyAgICAgICAgICAgIG1fZ3JhcGgua2lsbEJsb2NrQW5kSXRzQ29u
dGVudHMoYmxvY2suZ2V0KCkpOworICAgICAgICAgICAgbV9ncmFwaC5tX2Jsb2Nrcy5yZW1vdmVM
YXN0KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFRoZSBmYWN0IHRoYXQgaW5saW5p
bmcgZmFpbGVkIG1lYW5zIHdlIG5lZWQgYSBzbG93IHBhdGguCisgICAgICAgICAgICBjb3VsZFRh
a2VTbG93UGF0aCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgSlNDZWxsKiB0aGluZ1RvQ2FzZU9uOworICAgICAgICBpZiAoYWxsQXJlRGly
ZWN0Q2FsbHMpCisgICAgICAgICAgICB0aGluZ1RvQ2FzZU9uID0gY2FsbExpbmtTdGF0dXNbaV0u
Y2FsbGVlKCkubm9uRXhlY3V0YWJsZUNhbGxlZSgpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIEFTU0VSVChhbGxBcmVDbG9zdXJlQ2FsbHMpOworICAgICAgICAgICAgdGhpbmdUb0Nhc2VP
biA9IGNhbGxMaW5rU3RhdHVzW2ldLmNhbGxlZSgpLmV4ZWN1dGFibGUoKTsKKyAgICAgICAgfQor
ICAgICAgICBkYXRhLmNhc2VzLmFwcGVuZChTd2l0Y2hDYXNlKG1fZ3JhcGguZnJlZXplKHRoaW5n
VG9DYXNlT24pLCBibG9jay5nZXQoKSkpOworICAgICAgICBhZGRUb0dyYXBoKEp1bXApOworICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGRhdGFMb2coIk1hcmtpbmcgIiwgUmF3UG9p
bnRlcihtX2N1cnJlbnRCbG9jayksICIgYXMgbGlua2VkICh0YWlsIG9mIHBvbHkgaW5saW5lZSlc
biIpOworICAgICAgICBtX2N1cnJlbnRCbG9jay0+ZGlkTGluaygpOworICAgICAgICBsYW5kaW5n
QmxvY2tzLmFwcGVuZChtX2N1cnJlbnRCbG9jayk7CisgICAgfQorICAgIAorICAgIFJlZlB0cjxC
YXNpY0Jsb2NrPiBzbG93UGF0aEJsb2NrID0gYWRvcHRSZWYoCisgICAgICAgIG5ldyBCYXNpY0Js
b2NrKFVJTlRfTUFYLCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIFBOYU4pKTsKKyAgICBk
YXRhLmZhbGxUaHJvdWdoID0gQnJhbmNoVGFyZ2V0KHNsb3dQYXRoQmxvY2suZ2V0KCkpOworICAg
IG1fZ3JhcGguYXBwZW5kQmxvY2soc2xvd1BhdGhCbG9jayk7CisgICAgaWYgKHZlcmJvc2UpCisg
ICAgICAgIGRhdGFMb2coIk1hcmtpbmcgIiwgUmF3UG9pbnRlcihzbG93UGF0aEJsb2NrLmdldCgp
KSwgIiBhcyBsaW5rZWQgKHNsb3cgcGF0aCBibG9jaylcbiIpOworICAgIHNsb3dQYXRoQmxvY2st
PmRpZExpbmsoKTsKKyAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CisgICAgbV9jdXJyZW50Qmxv
Y2sgPSBzbG93UGF0aEJsb2NrLmdldCgpOworICAgIE5vZGUqIG15Q2FsbFRhcmdldE5vZGUgPSBn
ZXREaXJlY3QoY2FsbGVlUmVnKTsKKyAgICBpZiAoY291bGRUYWtlU2xvd1BhdGgpIHsKKyAgICAg
ICAgYWRkQ2FsbCgKKyAgICAgICAgICAgIHJlc3VsdE9wZXJhbmQsIGNhbGxPcCwgT3BJbmZvKCks
IG15Q2FsbFRhcmdldE5vZGUsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAorICAgICAgICAg
ICAgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOworICAgICAgICAKKyAgICAgICAgcHJvY2Vz
c1NldExvY2FsUXVldWUoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBhZGRUb0dyYXBoKENoZWNr
QmFkQ2VsbCk7CisgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgbXlDYWxsVGFyZ2V0Tm9kZSk7
CisgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICB9CisKKyAgICBhZGRU
b0dyYXBoKEp1bXApOworICAgIGxhbmRpbmdCbG9ja3MuYXBwZW5kKG1fY3VycmVudEJsb2NrKTsK
KyAgICAKKyAgICBSZWZQdHI8QmFzaWNCbG9jaz4gY29udGludWF0aW9uQmxvY2sgPSBhZG9wdFJl
ZigKKyAgICAgICAgbmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIG1fbnVtQXJndW1lbnRzLCBtX251
bUxvY2FscywgUE5hTikpOworICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soY29udGludWF0aW9uQmxv
Y2spOworICAgIGlmICh2ZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJBZGRpbmcgdW5saW5rZWQg
YmxvY2sgIiwgUmF3UG9pbnRlcihjb250aW51YXRpb25CbG9jay5nZXQoKSksICIgKGNvbnRpbnVh
dGlvbilcbiIpOworICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5k
KFVubGlua2VkQmxvY2soY29udGludWF0aW9uQmxvY2suZ2V0KCkpKTsKKyAgICBwcmVwYXJlVG9Q
YXJzZUJsb2NrKCk7CisgICAgbV9jdXJyZW50QmxvY2sgPSBjb250aW51YXRpb25CbG9jay5nZXQo
KTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBsYW5kaW5nQmxvY2tzLnNpemUoKTsgaS0t
OykKKyAgICAgICAgbGFuZGluZ0Jsb2Nrc1tpXS0+bGFzdCgpLT50YXJnZXRCbG9jaygpID0gY29u
dGludWF0aW9uQmxvY2suZ2V0KCk7CisgICAgCisgICAgbV9jdXJyZW50SW5kZXggPSBvbGRPZmZz
ZXQ7CisgICAgCisgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgZGF0YUxvZygiRG9uZSBpbmxp
bmluZyAoaGFyZCkuXG4iKTsKKyAgICAgICAgZGF0YUxvZygiU3RhY2s6ICIsIGN1cnJlbnRDb2Rl
T3JpZ2luKCksICJcbiIpOworICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTY0NSw3
ICsxODkzLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVHlwZWRBcnJheUNvbgogCiBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oCiAgICAg
aW50IHJlc3VsdE9wZXJhbmQsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgcmVnaXN0
ZXJPZmZzZXQsCi0gICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0aW9uLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7
CiAgICAgLy8gSWYgd2UgZXZlciBmaW5kIHRoYXQgd2UgaGF2ZSBhIGxvdCBvZiBpbnRlcm5hbCBm
dW5jdGlvbnMgdGhhdCB3ZSBzcGVjaWFsaXplIGZvciwKICAgICAvLyB0aGVuIHdlIHNob3VsZCBw
cm9iYWJseSBoYXZlIHNvbWUgc29ydCBvZiBoYXNodGFibGUgZGlzcGF0Y2gsIG9yIG1heWJlIGV2
ZW4KQEAgLTE2NTQsOCArMTkwMiw2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0
YW50SW50ZXIKICAgICAvLyB3ZSBrbm93IGFib3V0IGlzIHNtYWxsIGVub3VnaCwgdGhhdCBoYXZp
bmcganVzdCBhIGxpbmVhciBjYXNjYWRlIG9mIGlmIHN0YXRlbWVudHMKICAgICAvLyBpcyBnb29k
IGVub3VnaC4KICAgICAKLSAgICBVTlVTRURfUEFSQU0ocHJlZGljdGlvbik7IC8vIFJlbW92ZSB0
aGlzIG9uY2Ugd2UgZG8gbW9yZSB0aGluZ3MuCi0gICAgCiAgICAgaWYgKGZ1bmN0aW9uLT5jbGFz
c0luZm8oKSA9PSBBcnJheUNvbnN0cnVjdG9yOjppbmZvKCkpIHsKICAgICAgICAgaWYgKGZ1bmN0
aW9uLT5nbG9iYWxPYmplY3QoKSAhPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMDIwLDYgKzIyNjYs
MTIgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKIAogdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6cHJlcGFyZVRvUGFyc2VCbG9jaygpCiB7CisgICAgY2xlYXJDYWNoZXMoKTsKKyAg
ICBBU1NFUlQobV9zZXRMb2NhbFF1ZXVlLmlzRW1wdHkoKSk7Cit9CisKK3ZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OmNsZWFyQ2FjaGVzKCkKK3sKICAgICBtX2NvbnN0YW50cy5yZXNpemUoMCk7CiB9CiAK
QEAgLTIwNjMsOSArMjMxNSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5z
aWduZWQKICAgICB9CiAKICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9zZXRMb2NhbFF1ZXVlLnNpemUoKTsgKytpKQotICAgICAgICAgICAgbV9z
ZXRMb2NhbFF1ZXVlW2ldLmV4ZWN1dGUodGhpcyk7Ci0gICAgICAgIG1fc2V0TG9jYWxRdWV1ZS5y
ZXNpemUoMCk7CisgICAgICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7CiAgICAgICAgIAogICAg
ICAgICAvLyBEb24ndCBleHRlbmQgb3ZlciBqdW1wIGRlc3RpbmF0aW9ucy4KICAgICAgICAgaWYg
KG1fY3VycmVudEluZGV4ID09IGxpbWl0KSB7CkBAIC0yMjA5LDEzICsyNDU5LDEzIEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIEpTQ2VsbCog
Y2FjaGVkRnVuY3Rpb24gPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5qc0NlbGwuZ2V0KCk7CiAg
ICAgICAgICAgICBpZiAoIWNhY2hlZEZ1bmN0aW9uIAogICAgICAgICAgICAgICAgIHx8IG1faW5s
aW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+Y291bGRUYWtlU2xvd0Nhc2UobV9jdXJyZW50
SW5kZXgpCi0gICAgICAgICAgICAgICAgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmls
ZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkRnVuY3Rpb24pKSB7CisgICAgICAgICAg
ICAgICAgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1
cnJlbnRJbmRleCwgQmFkQ2VsbCkpIHsKICAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBnZXQoVmlydHVhbFJlZ2lzdGVy
KEpTU3RhY2s6OkNhbGxlZSkpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJlZXplKGNhY2hlZEZ1bmN0aW9uKTsK
ICAgICAgICAgICAgICAgICBBU1NFUlQoY2FjaGVkRnVuY3Rpb24tPmluaGVyaXRzKEpTRnVuY3Rp
b246OmluZm8oKSkpOwogICAgICAgICAgICAgICAgIE5vZGUqIGFjdHVhbENhbGxlZSA9IGdldChW
aXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6Q2FsbGVlKSk7Ci0gICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChDaGVja0Z1bmN0aW9uLCBPcEluZm8oZnJvemVuKSwgYWN0dWFsQ2FsbGVlKTsKKyAgICAg
ICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKGZyb3plbiksIGFjdHVhbENh
bGxlZSk7CiAgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8oZnJvemVu
KSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2NhbGxl
ZSk7CkBAIC0yODk3LDcgKzMxNDcsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KHVuc2lnbmVkCiAgICAgICAgICAgICAvLyBhbHJlYWR5IGduYXJseSBlbm91Z2ggYXMgaXQgaXMu
CiAgICAgICAgICAgICBBU1NFUlQocG9pbnRlcklzRnVuY3Rpb24oY3VycmVudEluc3RydWN0aW9u
WzJdLnUuc3BlY2lhbFBvaW50ZXIpKTsKICAgICAgICAgICAgIGFkZFRvR3JhcGgoCi0gICAgICAg
ICAgICAgICAgQ2hlY2tGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICBDaGVja0NlbGwsCiAgICAg
ICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGguZnJlZXplKHN0YXRpY19jYXN0PEpTQ2VsbCo+KGFj
dHVhbFBvaW50ZXJGb3IoCiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1f
Y29kZUJsb2NrLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5zcGVjaWFsUG9pbnRlcikpKSksCiAg
ICAgICAgICAgICAgICAgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKSkpOwpAQCAtMzMyMiwxNSArMzU3MiwxOSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpsaW5rQmxvY2soQmFzaWNCbG9jCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECi0gICAgYmxvY2stPmlzTGlua2VkID0gdHJ1ZTsKLSNlbmRpZgorICAg
IGlmICh2ZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJNYXJraW5nICIsIFJhd1BvaW50ZXIoYmxv
Y2spLCAiIGFzIGxpbmtlZCAoYWN0dWFsbHkgZGlkIGxpbmtpbmcpXG4iKTsKKyAgICBibG9jay0+
ZGlkTGluaygpOwogfQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2tzKFZlY3RvcjxV
bmxpbmtlZEJsb2NrPiYgdW5saW5rZWRCbG9ja3MsIFZlY3RvcjxCYXNpY0Jsb2NrKj4mIHBvc3Np
YmxlVGFyZ2V0cykKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHVubGlua2VkQmxvY2tz
LnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgZGF0YUxv
ZygiQXR0ZW1wdGluZyB0byBsaW5rICIsIFJhd1BvaW50ZXIodW5saW5rZWRCbG9ja3NbaV0ubV9i
bG9jayksICJcbiIpOwogICAgICAgICBpZiAodW5saW5rZWRCbG9ja3NbaV0ubV9uZWVkc05vcm1h
bExpbmtpbmcpIHsKKyAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGRh
dGFMb2coIiAgICBEb2VzIG5lZWQgbm9ybWFsIGxpbmtpbmcuXG4iKTsKICAgICAgICAgICAgIGxp
bmtCbG9jayh1bmxpbmtlZEJsb2Nrc1tpXS5tX2Jsb2NrLCBwb3NzaWJsZVRhcmdldHMpOwogICAg
ICAgICAgICAgdW5saW5rZWRCbG9ja3NbaV0ubV9uZWVkc05vcm1hbExpbmtpbmcgPSBmYWxzZTsK
ICAgICAgICAgfQpAQCAtMzQ5Nyw3ICszNzUxLDcgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0
YWNrRW50cnk6OklubGluZQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygp
CiB7Ci0gICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOworICAgIGNsZWFyQ2FjaGVzKCk7CiAgICAg
CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9j
azsKICAgICAKQEAgLTM1NjMsNyArMzgxNywxMSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUNvZGVCbG9jaygpCiAgICAgICAgICAgICAgICAgICAgIC8vIDIpIElmIHRoZSBieXRlY29kZUJl
Z2luIGlzIGVxdWFsIHRvIHRoZSBjdXJyZW50SW5kZXgsIHRoZW4gd2UgZmFpbGVkIHRvIGRvCiAg
ICAgICAgICAgICAgICAgICAgIC8vICAgIGEgcGVlcGhvbGUgY29hbGVzY2luZyBvZiB0aGlzIGJs
b2NrIGluIHRoZSBpZiBzdGF0ZW1lbnQgYWJvdmUuIFNvLCB3ZSdyZQogICAgICAgICAgICAgICAg
ICAgICAvLyAgICBnZW5lcmF0aW5nIHN1Ym9wdGltYWwgY29kZSBhbmQgbGVhdmluZyBtb3JlIHdv
cmsgZm9yIHRoZSBDRkcgc2ltcGxpZmllci4KLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1f
aW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuaXNFbXB0eSgpIHx8IG1faW5saW5lU3Rh
Y2tUb3AtPm1fdW5saW5rZWRCbG9ja3MubGFzdCgpLm1fYmxvY2stPmJ5dGVjb2RlQmVnaW4gPCBt
X2N1cnJlbnRJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghbV9pbmxpbmVTdGFja1Rv
cC0+bV91bmxpbmtlZEJsb2Nrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxhc3RCZWdpbiA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxp
bmVTdGFja1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9ibG9jay0+Ynl0ZWNvZGVCZWdp
bjsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChsYXN0QmVnaW4gPT0gVUlOVF9NQVgg
fHwgbGFzdEJlZ2luIDwgbV9jdXJyZW50SW5kZXgpOworICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBw
ZW5kKFVubGlua2VkQmxvY2soYmxvY2suZ2V0KCkpKTsKICAgICAgICAgICAgICAgICAgICAgbV9p
bmxpbmVTdGFja1RvcC0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9jay5nZXQoKSk7
CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBmaXJzdCBibG9jayBpcyBkZWZpbml0ZWx5IGFu
IE9TUiB0YXJnZXQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhy
ZWFkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTkwLDggKzkwLDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PmNoaWxkcmVuLnNldENoaWxkMShFZGdlKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b206Ci0gICAgICAgICAgICAgICAgICAgIGlmICgh
bm9kZS0+Y2hpbGQxKCkpCisgICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS0+Y2hpbGQxKCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2Rl
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCktPm9wKCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBQaGk6CiAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
U2V0QXJndW1lbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw2ICsxNDQsNyBAQCB2b2lkIGNsb2Ji
ZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBGaWF0SW50NTI6CiAgICAg
Y2FzZSBNYWtlUm9wZToKICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKKyAgICBjYXNlIEdldEV4ZWN1
dGFibGU6CiAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSkpOwogICAgICAgICByZXR1cm47CiAg
ICAgICAgIApAQCAtMjM5LDEyICsyNDAsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlCiAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwgbm9kZS0+YXJpdGhNb2Rl
KCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBjYXNlIENoZWNrRnVuY3Rpb246
Ci0gICAgICAgIGRlZihQdXJlVmFsdWUoQ2hlY2tGdW5jdGlvbiwgQWRqYWNlbmN5TGlzdChBZGph
Y2VuY3lMaXN0OjpGaXhlZCwgbm9kZS0+Y2hpbGQxKCkpLCBub2RlLT5mdW5jdGlvbigpKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6Ci0gICAg
ICAgIGRlZihQdXJlVmFsdWUobm9kZSwgbm9kZS0+ZXhlY3V0YWJsZSgpKSk7CisgICAgY2FzZSBD
aGVja0NlbGw6CisgICAgICAgIGRlZihQdXJlVmFsdWUoQ2hlY2tDZWxsLCBBZGphY2VuY3lMaXN0
KEFkamFjZW5jeUxpc3Q6OkZpeGVkLCBub2RlLT5jaGlsZDEoKSksIG5vZGUtPmNlbGxPcGVyYW5k
KCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIENvbnN0YW50U3RvcmFn
ZVBvaW50ZXI6CkBAIC0yNjMsNiArMjYwLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZQogICAgIGNhc2UgU3dpdGNoOgogICAgIGNhc2UgVGhyb3c6CiAgICAgY2Fz
ZSBGb3JjZU9TUkV4aXQ6CisgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgY2FzZSBSZXR1cm46
CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lvbiAxNzI3OTQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC02Myw2ICs2MywxMyBAQCBlbnVtIFJlZk5vZGVNb2RlIHsKICAgICBEb250UmVmTm9kZQogfTsK
IAorZW51bSBTd2l0Y2hLaW5kIHsKKyAgICBTd2l0Y2hJbW0sCisgICAgU3dpdGNoQ2hhciwKKyAg
ICBTd2l0Y2hTdHJpbmcsCisgICAgU3dpdGNoQ2VsbAorfTsKKwogaW5saW5lIGJvb2wgdmVyYm9z
ZUNvbXBpbGF0aW9uRW5hYmxlZChDb21waWxhdGlvbk1vZGUgbW9kZSA9IERGR01vZGUpCiB7CiAg
ICAgcmV0dXJuIE9wdGlvbnM6OnZlcmJvc2VDb21waWxhdGlvbigpIHx8IE9wdGlvbnM6OmR1bXBH
cmFwaEF0RWFjaFBoYXNlKCkgfHwgKGlzRlRMKG1vZGUpICYmIE9wdGlvbnM6OnZlcmJvc2VGVExD
b21waWxhdGlvbigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQyLDggKzE0Miw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlIENo
ZWNrRnVuY3Rpb246IHsKLSAgICAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKS52YWx1ZSgpICE9IG5vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkpCisgICAgICAg
ICAgICBjYXNlIENoZWNrQ2VsbDogeworICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCkgIT0gbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUo
KSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y29u
dmVydFRvUGhhbnRvbSgpOwogICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMTcyNzk0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZSkKICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAg
Y2FzZSBDaGVja1N0cnVjdHVyZToKLSAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToKKyAgICBjYXNl
IEdldEV4ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6CiAgICAgY2FzZSBDaGVja0Fy
cmF5OgogICAgIGNhc2UgR2V0U2NvcGU6CkBAIC0xMDUsNyArMTA1LDcgQEAgYm9vbCBkb2VzR0Mo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0R2xvYmFsVmFyOgogICAgIGNh
c2UgVmFyaWFibGVXYXRjaHBvaW50OgogICAgIGNhc2UgVmFySW5qZWN0aW9uV2F0Y2hwb2ludDoK
LSAgICBjYXNlIENoZWNrRnVuY3Rpb246CisgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgY2FzZSBB
bGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBSZWdFeHBFeGVjOgogICAgIGNh
c2UgUmVnRXhwVGVzdDoKQEAgLTE5Niw2ICsxOTYsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXREaXJlY3RQbmFtZToKICAgICBjYXNlIEZpYXRJ
bnQ1MjoKICAgICBjYXNlIEJvb2xlYW5Ub051bWJlcjoKKyAgICBjYXNlIENoZWNrQmFkQ2VsbDoK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkocmV2aXNpb24gMTcyNzk0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04OSw2ICs4OSw5IEBAIHN0YXRpYyBDb21waWxhdGlvblJlc3VsdCBjb21waWxlSW1w
bCgKICAgICAgICAgdm0uZ2V0Q1RJU3R1Yih2aXJ0dWFsQ29uc3RydWN0VGhhdFByZXNlcnZlc1Jl
Z3NUaHVua0dlbmVyYXRvcik7CiAgICAgfQogICAgIAorICAgIGlmIChDYWxsRWRnZUxvZzo6aXNF
bmFibGVkKCkpCisgICAgICAgIHZtLmVuc3VyZUNhbGxFZGdlTG9nKCkucHJvY2Vzc0xvZygpOwor
ICAgIAogICAgIFJlZlB0cjxQbGFuPiBwbGFuID0gYWRvcHRSZWYoCiAgICAgICAgIG5ldyBQbGFu
KGNvZGVCbG9jaywgcHJvZmlsZWRERkdDb2RlQmxvY2ssIG1vZGUsIG9zckVudHJ5Qnl0ZWNvZGVJ
bmRleCwgbXVzdEhhbmRsZVZhbHVlcykpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
MzYsNiArNzM2LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+
Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKQogICAgICAgICAgICAgICAgICAgICBm
aXhFZGdlPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBTd2l0Y2hDZWxsOgorICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKQorICAgICAgICAgICAgICAgICAgICBm
aXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAvLyBlbHNl
IGl0J3MgZmluZSBmb3IgdGhpcyB0byBoYXZlIFVudHlwZWRVc2U7IHdlIHdpbGwgaGFuZGxlIHRo
aXMgYnkganVzdCBtYWtpbmcKKyAgICAgICAgICAgICAgICAvLyBub24tY2VsbHMgdGFrZSB0aGUg
ZGVmYXVsdCBjYXNlLgorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTg5OCwxMyArOTA0LDEzIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgQ2hlY2tFeGVj
dXRhYmxlOiB7CisgICAgICAgIGNhc2UgR2V0RXhlY3V0YWJsZTogewogICAgICAgICAgICAgZml4
RWRnZTxGdW5jdGlvblVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgotICAg
ICAgICBjYXNlIENoZWNrRnVuY3Rpb246CisgICAgICAgIGNhc2UgQ2hlY2tDZWxsOgogICAgICAg
ICBjYXNlIENoZWNrSGFzSW5zdGFuY2U6CiAgICAgICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICAg
ICAgY2FzZSBHZXRCdXR0ZXJmbHk6IHsKQEAgLTExNTAsNiArMTE1Niw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgVGhyb3dSZWZlcmVuY2VFcnJvcjoKICAgICAgICAgY2FzZSBDb3VudEV4ZWN1
dGlvbjoKICAgICAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6CisgICAgICAgIGNhc2UgQ2hlY2tCYWRD
ZWxsOgogICAgICAgICBjYXNlIENoZWNrV2F0Y2hkb2dUaW1lcjoKICAgICAgICAgY2FzZSBVbnJl
YWNoYWJsZToKICAgICAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjks
NiArNjksNyBAQCBHcmFwaDo6R3JhcGgoVk0mIHZtLCBQbGFuJiBwbGFuLCBMb25nTGl2CiAgICAg
LCBtX2Zvcm0oTG9hZFN0b3JlKQogICAgICwgbV91bmlmaWNhdGlvblN0YXRlKExvY2FsbHlVbmlm
aWVkKQogICAgICwgbV9yZWZDb3VudFN0YXRlKEV2ZXJ5dGhpbmdJc0xpdmUpCisgICAgLCBtX3No
b3VsZFByb2ZpbGUoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fcHJvZmlsZWRCbG9jayk7CiAgICAg
CkBAIC0yMjIsMjQgKzIyMywyMyBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQs
IGNvbnN0CiAgICAgICAgIG91dC5wcmludChjb21tYSwgaW5Db250ZXh0KCpub2RlLT5zdHJ1Y3R1
cmUoKSwgY29udGV4dCkpOwogICAgIGlmIChub2RlLT5oYXNUcmFuc2l0aW9uKCkpCiAgICAgICAg
IG91dC5wcmludChjb21tYSwgcG9pbnRlckR1bXBJbkNvbnRleHQobm9kZS0+dHJhbnNpdGlvbigp
LCBjb250ZXh0KSk7Ci0gICAgaWYgKG5vZGUtPmhhc0Z1bmN0aW9uKCkpIHsKLSAgICAgICAgb3V0
LnByaW50KGNvbW1hLCAiZnVuY3Rpb24oIiwgcG9pbnRlckR1bXAobm9kZS0+ZnVuY3Rpb24oKSks
ICIsICIpOwotICAgICAgICBpZiAobm9kZS0+ZnVuY3Rpb24oKS0+dmFsdWUoKS5pc0NlbGwoKQot
ICAgICAgICAgICAgJiYgbm9kZS0+ZnVuY3Rpb24oKS0+dmFsdWUoKS5hc0NlbGwoKS0+aW5oZXJp
dHMoSlNGdW5jdGlvbjo6aW5mbygpKSkgewotICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rp
b24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG5vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkuYXNDZWxs
KCkpOwotICAgICAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKQotICAgICAg
ICAgICAgICAgIG91dC5wcmludCgiPGhvc3QgZnVuY3Rpb24+Iik7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50KEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAoZnVuY3Rp
b24tPmpzRXhlY3V0YWJsZSgpKSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgb3V0LnBy
aW50KCI8bm90IEpTRnVuY3Rpb24+Iik7Ci0gICAgICAgIG91dC5wcmludCgiKSIpOwotICAgIH0K
LSAgICBpZiAobm9kZS0+aGFzRXhlY3V0YWJsZSgpKSB7Ci0gICAgICAgIGlmIChub2RlLT5leGVj
dXRhYmxlKCktPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKSkKLSAgICAgICAg
ICAgIG91dC5wcmludChjb21tYSwgImV4ZWN1dGFibGUoIiwgRnVuY3Rpb25FeGVjdXRhYmxlRHVt
cChqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4obm9kZS0+ZXhlY3V0YWJsZSgpKSksICIpIik7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgImV4ZWN1dGFibGUo
bm90IGZ1bmN0aW9uOiAiLCBSYXdQb2ludGVyKG5vZGUtPmV4ZWN1dGFibGUoKSksICIpIik7Cisg
ICAgaWYgKG5vZGUtPmhhc0NlbGxPcGVyYW5kKCkpIHsKKyAgICAgICAgaWYgKCFub2RlLT5jZWxs
T3BlcmFuZCgpLT52YWx1ZSgpIHx8ICFub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpLmlzQ2Vs
bCgpKQorICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiaW52YWxpZCBjZWxsIG9wZXJhbmQ6
ICIsIG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkpOworICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIG91dC5wcmludChjb21tYSwgcG9pbnRlckR1bXAobm9kZS0+Y2VsbE9wZXJhbmQoKS0+
dmFsdWUoKS5hc0NlbGwoKSkpOworICAgICAgICAgICAgaWYgKG5vZGUtPmNlbGxPcGVyYW5kKCkt
PnZhbHVlKCkuaXNDZWxsKCkpIHsKKyAgICAgICAgICAgICAgICBDYWxsVmFyaWFudCB2YXJpYW50
KG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuYXNDZWxsKCkpOworICAgICAgICAgICAgICAg
IGlmIChFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IHZhcmlhbnQuZXhlY3V0YWJsZSgpKSB7
CisgICAgICAgICAgICAgICAgICAgIGlmIChleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiPGhvc3QgZnVuY3Rpb24+
Iik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVu
Y3Rpb25FeGVjdXRhYmxlID0ganNEeW5hbWljQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVj
dXRhYmxlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgRnVuY3Rp
b25FeGVjdXRhYmxlRHVtcChmdW5jdGlvbkV4ZWN1dGFibGUpKTsKKyAgICAgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiPG5vbi1m
dW5jdGlvbiBleGVjdXRhYmxlPiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQogICAgIH0KICAgICBpZiAobm9kZS0+aGFzRnVuY3Rpb25EZWNsSW5kZXgoKSkg
ewogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX2NvZGVCbG9jay0+
ZnVuY3Rpb25EZWNsKG5vZGUtPmZ1bmN0aW9uRGVjbEluZGV4KCkpOwpAQCAtOTg1LDEwICs5ODUs
NiBAQCB2b2lkIEdyYXBoOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2CiAgICAgICAgICAg
ICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAgICAgY2FzZSBDaGVja0V4ZWN1
dGFibGU6Ci0gICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFJlYWRPbmx5
UG9pbnRlcihub2RlLT5leGVjdXRhYmxlKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5zaXplKCk7IGkt
LTspCiAgICAgICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRSZWFkT25s
eVBvaW50ZXIobm9kZS0+c3RydWN0dXJlU2V0KClbaV0pOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NjIsNiArNzYyLDcgQEAgcHVi
bGljOgogICAgIEdyYXBoRm9ybSBtX2Zvcm07CiAgICAgVW5pZmljYXRpb25TdGF0ZSBtX3VuaWZp
Y2F0aW9uU3RhdGU7CiAgICAgUmVmQ291bnRTdGF0ZSBtX3JlZkNvdW50U3RhdGU7CisgICAgYm9v
bCBtX3Nob3VsZFByb2ZpbGU7CiBwcml2YXRlOgogICAgIAogICAgIHZvaWQgaGFuZGxlU3VjY2Vz
c29yKFZlY3RvcjxCYXNpY0Jsb2NrKiwgMTY+JiB3b3JrbGlzdCwgQmFzaWNCbG9jayosIEJhc2lj
QmxvY2sqIHN1Y2Nlc3Nvcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw3ICsxODQs
NyBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAgICAgICAgICAg
ICB0YWJsZS5jdGlPZmZzZXRzW2pdID0gdGFibGUuY3RpRGVmYXVsdDsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBqID0gZGF0YS5jYXNlcy5zaXplKCk7IGotLTspIHsKICAgICAgICAgICAgIFN3aXRj
aENhc2UmIG15Q2FzZSA9IGRhdGEuY2FzZXNbal07Ci0gICAgICAgICAgICB0YWJsZS5jdGlPZmZz
ZXRzW215Q2FzZS52YWx1ZS5zd2l0Y2hMb29rdXBWYWx1ZSgpIC0gdGFibGUubWluXSA9CisgICAg
ICAgICAgICB0YWJsZS5jdGlPZmZzZXRzW215Q2FzZS52YWx1ZS5zd2l0Y2hMb29rdXBWYWx1ZShk
YXRhLmtpbmQpIC0gdGFibGUubWluXSA9CiAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5sb2Nh
dGlvbk9mKG1fYmxvY2tIZWFkc1tteUNhc2UudGFyZ2V0LmJsb2NrLT5pbmRleF0pOwogICAgICAg
ICB9CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNW
YWx1ZS5jcHAJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTGF6eUpTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNiArMTEzLDM2IEBAIFRy
aVN0YXRlIExhenlKU1ZhbHVlOjpzdHJpY3RFcXVhbChjb25zdCAKICAgICByZXR1cm4gRmFsc2VU
cmlTdGF0ZTsKIH0KIAordWludHB0cl90IExhenlKU1ZhbHVlOjpzd2l0Y2hMb29rdXBWYWx1ZShT
d2l0Y2hLaW5kIGtpbmQpIGNvbnN0Cit7CisgICAgLy8gTkIuIE5vdCBldmVyeSBraW5kIG9mIEpT
VmFsdWUgd2lsbCBiZSBhYmxlIHRvIGdpdmUgeW91IGEgc3dpdGNoIGxvb2t1cAorICAgIC8vIHZh
bHVlLCBhbmQgdGhpcyBtZXRob2Qgd2lsbCBhc3NlcnQsIG9yIGRvIGJhZCB0aGluZ3MsIGlmIHlv
dSB1c2UgaXQKKyAgICAvLyBmb3IgYSBraW5kIG9mIHZhbHVlIHRoYXQgY2FuJ3QuCisgICAgc3dp
dGNoIChtX2tpbmQpIHsKKyAgICBjYXNlIEtub3duVmFsdWU6CisgICAgICAgIHN3aXRjaCAoa2lu
ZCkgeworICAgICAgICBjYXNlIFN3aXRjaEltbToKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZSgp
LT52YWx1ZSgpLmFzSW50MzIoKTsKKyAgICAgICAgY2FzZSBTd2l0Y2hDZWxsOgorICAgICAgICAg
ICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKCktPnZhbHVlKCkuYXNDZWxs
KCkpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgY2FzZSBTaW5n
bGVDaGFyYWN0ZXJTdHJpbmc6CisgICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBjYXNl
IFN3aXRjaENoYXI6CisgICAgICAgICAgICByZXR1cm4gY2hhcmFjdGVyKCk7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKIHZv
aWQgTGF6eUpTVmFsdWU6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRl
eHQqIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChtX2tpbmQpIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmgJKHJldmlzaW9uIDE3Mjc5NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuaAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKKyNpbmNsdWRl
ICJERkdDb21tb24uaCIKICNpbmNsdWRlICJERkdGcm96ZW5WYWx1ZS5oIgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIApAQCAtOTUsMjEgKzk2LDcgQEAgcHVibGljOgogICAgIAog
ICAgIFRyaVN0YXRlIHN0cmljdEVxdWFsKGNvbnN0IExhenlKU1ZhbHVlJiBvdGhlcikgY29uc3Q7
CiAgICAgCi0gICAgdW5zaWduZWQgc3dpdGNoTG9va3VwVmFsdWUoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgLy8gTkIuIE5vdCBldmVyeSBraW5kIG9mIEpTVmFsdWUgd2lsbCBiZSBhYmxlIHRvIGdp
dmUgeW91IGEgc3dpdGNoIGxvb2t1cAotICAgICAgICAvLyB2YWx1ZSwgYW5kIHRoaXMgbWV0aG9k
IHdpbGwgYXNzZXJ0LCBvciBkbyBiYWQgdGhpbmdzLCBpZiB5b3UgdXNlIGl0Ci0gICAgICAgIC8v
IGZvciBhIGtpbmQgb2YgdmFsdWUgdGhhdCBjYW4ndC4KLSAgICAgICAgc3dpdGNoIChtX2tpbmQp
IHsKLSAgICAgICAgY2FzZSBLbm93blZhbHVlOgotICAgICAgICAgICAgcmV0dXJuIHZhbHVlKCkt
PnZhbHVlKCkuYXNJbnQzMigpOwotICAgICAgICBjYXNlIFNpbmdsZUNoYXJhY3RlclN0cmluZzoK
LSAgICAgICAgICAgIHJldHVybiBjaGFyYWN0ZXIoKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4g
MDsKLSAgICAgICAgfQotICAgIH0KKyAgICB1aW50cHRyX3Qgc3dpdGNoTG9va3VwVmFsdWUoU3dp
dGNoS2luZCBraW5kKSBjb25zdDsKICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBj
b25zdDsKICAgICB2b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29udGV4dCop
IGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCShyZXZpc2lv
biAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTMsNiArMTEzLDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiBvdXQsIFN3aQogICAgIGNhc2UgU3dpdGNoU3RyaW5nOgogICAgICAgICBvdXQucHJpbnQo
IlN3aXRjaFN0cmluZyIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBTd2l0Y2hDZWxsOgor
ICAgICAgICBvdXQucHJpbnQoIlN3aXRjaENlbGwiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsMTIgKzE1Nyw2IEBAIHN0
cnVjdCBTd2l0Y2hDYXNlIHsKICAgICBCcmFuY2hUYXJnZXQgdGFyZ2V0OwogfTsKIAotZW51bSBT
d2l0Y2hLaW5kIHsKLSAgICBTd2l0Y2hJbW0sCi0gICAgU3dpdGNoQ2hhciwKLSAgICBTd2l0Y2hT
dHJpbmcKLX07Ci0KIHN0cnVjdCBTd2l0Y2hEYXRhIHsKICAgICAvLyBJbml0aWFsaXplcyBtb3N0
IGZpZWxkcyB0byBvYnZpb3VzbHkgaW52YWxpZCB2YWx1ZXMuIEFueW9uZQogICAgIC8vIGNvbnN0
cnVjdGluZyB0aGlzIHNob3VsZCBtYWtlIHN1cmUgdG8gaW5pdGlhbGl6ZSBldmVyeXRoaW5nIHRo
ZXkKQEAgLTE4NSw2ICsxNzksNyBAQCBzdHJ1Y3QgU3dpdGNoRGF0YSB7CiAvLyBkaXN0aW5ndWlz
aGVzIGFuIGltbWVkaWF0ZSB2YWx1ZSAodHlwaWNhbGx5IGFuIGluZGV4IGludG8gYSBDb2RlQmxv
Y2sgZGF0YSBzdHJ1Y3R1cmUgLSAKIC8vIGEgY29uc3RhbnQgaW5kZXgsIGFyZ3VtZW50LCBvciBp
ZGVudGlmaWVyKSBmcm9tIGEgTm9kZSouCiBzdHJ1Y3QgT3BJbmZvIHsKKyAgICBPcEluZm8oKSA6
IG1fdmFsdWUoMCkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKGludDMyX3QgdmFsdWUpIDogbV92
YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9CiAgICAgZXhwbGljaXQgT3BJ
bmZvKHVpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih2YWx1
ZSkpIHsgfQogI2lmIE9TKERBUldJTikgfHwgVVNFKEpTVkFMVUU2NCkKQEAgLTEwNDQsOSArMTAz
OSwxMSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIG1fb3BJbmZvMiA9IHByZWRpY3Rpb247CiAg
ICAgfQogICAgIAotICAgIGJvb2wgY2FuQmVLbm93bkZ1bmN0aW9uKCkKKyAgICBib29sIGhhc0Nl
bGxPcGVyYW5kKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNl
IEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDoKKyAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAg
ICAgICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OgogICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwNTUsNTQgKzEwNTIsMTYgQEAgc3RydWN0IE5v
ZGUgewogICAgICAgICB9CiAgICAgfQogCi0gICAgYm9vbCBoYXNLbm93bkZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIHN3aXRjaCAob3AoKSkgewotICAgICAgICBjYXNlIE5hdGl2ZUNvbnN0cnVj
dDoKLSAgICAgICAgY2FzZSBOYXRpdmVDYWxsOgotICAgICAgICAgICAgcmV0dXJuIChib29sKW1f
b3BJbmZvOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICB9Ci0gICAgfQotICAgIAotICAgIEpTRnVuY3Rpb24qIGtub3duRnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKGNhbkJlS25vd25GdW5jdGlvbigpKTsKLSAgICAgICAgcmV0dXJu
IGJpdHdpc2VfY2FzdDxKU0Z1bmN0aW9uKj4obV9vcEluZm8pOwotICAgIH0KLQotICAgIHZvaWQg
Z2l2ZUtub3duRnVuY3Rpb24oSlNGdW5jdGlvbiogY2FsbERhdGEpIAorICAgIEZyb3plblZhbHVl
KiBjZWxsT3BlcmFuZCgpCiAgICAgewotICAgICAgICBBU1NFUlQoY2FuQmVLbm93bkZ1bmN0aW9u
KCkpOwotICAgICAgICBtX29wSW5mbyA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGNhbGxEYXRh
KTsKLSAgICB9Ci0KLSAgICBib29sIGhhc0Z1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHN3aXRj
aCAob3AoKSkgewotICAgICAgICBjYXNlIENoZWNrRnVuY3Rpb246Ci0gICAgICAgIGNhc2UgQWxs
b2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBGcm96ZW5WYWx1ZSogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGhh
c0Z1bmN0aW9uKCkpOworICAgICAgICBBU1NFUlQoaGFzQ2VsbE9wZXJhbmQoKSk7CiAgICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PEZyb3plblZhbHVlKj4obV9vcEluZm8pOwogICAgIH0K
ICAgICAKLSAgICBib29sIGhhc0V4ZWN1dGFibGUoKQorICAgIHZvaWQgc2V0Q2VsbE9wZXJhbmQo
RnJvemVuVmFsdWUqIHZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ2hlY2tF
eGVjdXRhYmxlOwotICAgIH0KLSAgICAKLSAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSgp
Ci0gICAgewotICAgICAgICByZXR1cm4ganNDYXN0PEV4ZWN1dGFibGVCYXNlKj4ocmVpbnRlcnBy
ZXRfY2FzdDxKU0NlbGwqPihtX29wSW5mbykpOworICAgICAgICBBU1NFUlQoaGFzQ2VsbE9wZXJh
bmQoKSk7CisgICAgICAgIG1fb3BJbmZvID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4odmFsdWUp
OwogICAgIH0KICAgICAKICAgICBib29sIGhhc1ZhcmlhYmxlV2F0Y2hwb2ludFNldCgpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxNzI3OTQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAg
ICAgbWFjcm8oUHV0QnlJZEZsdXNoLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZU11c3RHZW5lcmF0
ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCiAgICAgbWFjcm8oUHV0QnlJZERpcmVjdCwgTm9kZU11
c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCiAgICAgbWFjcm8oQ2hlY2tTdHJ1Y3R1
cmUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKLSAgICBtYWNybyhDaGVja0V4ZWN1dGFibGUsIE5vZGVN
dXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhHZXRFeGVjdXRhYmxlLCBOb2RlUmVzdWx0SlMpIFwK
ICAgICBtYWNybyhQdXRTdHJ1Y3R1cmUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhB
bGxvY2F0ZVByb3BlcnR5U3RvcmFnZSwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRTdG9y
YWdlKSBcCiAgICAgbWFjcm8oUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSwgTm9kZU11c3RHZW5l
cmF0ZSB8IE5vZGVSZXN1bHRTdG9yYWdlKSBcCkBAIC0xODYsNyArMTg2LDggQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFZhcmlhYmxlV2F0Y2hwb2ludCwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFZhckluamVjdGlvbldhdGNocG9pbnQsIE5vZGVN
dXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhGdW5jdGlvblJlZW50cnlXYXRjaHBvaW50LCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCi0gICAgbWFjcm8oQ2hlY2tGdW5jdGlvbiwgTm9kZU11c3RHZW5lcmF0
ZSkgXAorICAgIG1hY3JvKENoZWNrQ2VsbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3Jv
KENoZWNrQmFkQ2VsbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEFsbG9jYXRpb25Q
cm9maWxlV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrSW5C
b3VuZHMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25Q
aGFzZS5jcHAJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTky
LDggKzkyLDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxk
cmVuLnJlbW92ZUVkZ2UoaS0tKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHko
KSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRU
b0NoZWNrKCk7CiAgICAgICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21SZW1vdmFsUGhhc2UuY3BwCShyZXZpc2lvbiAxNzI3
OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21SZW1vdmFsUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNiArMTI1LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBt
X2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgICAgICAgICB9CkBAIC0xNDIsNiArMTQzLDcgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTQ5LDggKzE1MSwxMCBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBjYXNlIEhhcmRQaGFudG9tOiB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZHJlbi5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJl
bi5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0
b3IuZnJlZShub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAko
cmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw3ICsxOTYsOCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAot
ICAgICAgICBjYXNlIEdldEdldHRlclNldHRlckJ5T2Zmc2V0OiB7CisgICAgICAgIGNhc2UgR2V0
R2V0dGVyU2V0dGVyQnlPZmZzZXQ6CisgICAgICAgIGNhc2UgR2V0RXhlY3V0YWJsZTogewogICAg
ICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNDZWxsT3RoZXIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTY0Myw4ICs2NDQsOCBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIEZvcmNlT1NSRXhpdDoKICAgICAgICAgY2FzZSBTZXRBcmd1bWVudDoKICAgICAg
ICAgY2FzZSBDaGVja1N0cnVjdHVyZToKLSAgICAgICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6Ci0g
ICAgICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBDaGVja0NlbGw6CisgICAg
ICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgICAgICBjYXNlIFB1dFN0cnVjdHVyZToKICAgICAg
ICAgY2FzZSBUZWFyT2ZmQWN0aXZhdGlvbjoKICAgICAgICAgY2FzZSBUZWFyT2ZmQXJndW1lbnRz
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJ
KHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBzYWZlVG9F
eGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgUHV0QnlJZEZsdXNoOgogICAg
IGNhc2UgUHV0QnlJZERpcmVjdDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgotICAgIGNhc2Ug
Q2hlY2tFeGVjdXRhYmxlOgorICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNlIEdldEJ1
dHRlcmZseToKICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgY2FzZSBBcnJheWlmeToKQEAgLTE3
NSw3ICsxNzUsOCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAg
ICAgY2FzZSBQdXRHbG9iYWxWYXI6CiAgICAgY2FzZSBWYXJpYWJsZVdhdGNocG9pbnQ6CiAgICAg
Y2FzZSBWYXJJbmplY3Rpb25XYXRjaHBvaW50OgotICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKKyAg
ICBjYXNlIENoZWNrQ2VsbDoKKyAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICBjYXNlIEFsbG9j
YXRpb25Qcm9maWxlV2F0Y2hwb2ludDoKICAgICBjYXNlIFJlZ0V4cEV4ZWM6CiAgICAgY2FzZSBS
ZWdFeHBUZXN0OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02ODksNiArNjg5LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUq
IG5vZGUKIAogICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4obm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKICAgICAKKyAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+
YWRkQ2FsbExpbmtJbmZvKCk7CisKKyAgICBpZiAobV9qaXQuZ3JhcGgoKS5tX3Nob3VsZFByb2Zp
bGUgJiYgIW1fc3RhdGUuZm9yTm9kZShjYWxsZWVFZGdlKS5tX3ZhbHVlKSB7CisgICAgICAgIG1f
aml0LnZtKCkuY2FsbEVkZ2VMb2ctPmVtaXRMb2dDb2RlKAorICAgICAgICAgICAgbV9qaXQsIGNh
bGxMaW5rSW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBjYWxsZWUuanNWYWx1ZVJlZ3MoKSk7CisgICAg
fQorICAgIAogICAgIHNsb3dQYXRoLmFwcGVuZChicmFuY2hOb3RDZWxsKGNhbGxlZS5qc1ZhbHVl
UmVncygpKSk7CiAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFB0cldpdGhQYXRjaChN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxlZVBheWxvYWRHUFIsIHRhcmdldFRvQ2hlY2sp
KTsKICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNhbGxlZVBheWxv
YWRHUFIsIE9CSkVDVF9PRkZTRVRPRihKU0Z1bmN0aW9uLCBtX3Njb3BlKSksIHJlc3VsdFBheWxv
YWRHUFIpOwpAQCAtNzEzLDcgKzcyMCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxs
KE5vZGUqIG5vZGUKICAgICAgICAgbV9qaXQubW92ZShjYWxsZWVQYXlsb2FkR1BSLCBHUFJJbmZv
OjpyZWdUMCk7CiAgICAgICAgIG1faml0Lm1vdmUoY2FsbGVlVGFnR1BSLCBHUFJJbmZvOjpyZWdU
MSk7CiAgICAgfQotICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1faml0LmNvZGVCbG9jaygpLT5h
ZGRDYWxsTGlua0luZm8oKTsKICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKGluZm8pLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgc2xv
d0NhbGwgPSBtX2ppdC5uZWFyQ2FsbCgpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE3Mjc5NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYyNiw3ICs2MjYsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
TWlzY1N0cmljdEVxCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUp
CiB7Ci0KICAgICBib29sIGlzQ2FsbCA9IG5vZGUtPm9wKCkgPT0gQ2FsbDsKICAgICBpZiAoIWlz
Q2FsbCkKICAgICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5vcCgp
ID09IENvbnN0cnVjdCk7CkBAIC02NzAsNiArNjY5LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRDYWxsKE5vZGUqIG5vZGUKIAogICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4obm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAKKyAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5m
byA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKKyAgICAKKyAgICBpZiAo
Q2FsbEVkZ2VMb2c6OmlzRW5hYmxlZCgpCisgICAgICAgICYmIG1faml0LmdyYXBoKCkubV9zaG91
bGRQcm9maWxlCisgICAgICAgICYmICFtX3N0YXRlLmZvck5vZGUoY2FsbGVlRWRnZSkubV92YWx1
ZSkgeworICAgICAgICBtX2ppdC52bSgpLT5jYWxsRWRnZUxvZy0+ZW1pdExvZ0NvZGUoCisgICAg
ICAgICAgICBtX2ppdCwgY2FsbExpbmtJbmZvLT5jYWxsRWRnZVByb2ZpbGUsIEpTVmFsdWVSZWdz
KGNhbGxlZUdQUikpOworICAgIH0KKwogICAgIHNsb3dQYXRoID0gbV9qaXQuYnJhbmNoUHRyV2l0
aFBhdGNoKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgY2FsbGVlR1BSLCB0YXJnZXRUb0NoZWNr
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigwKSk7CiAKICAgICBtX2ppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNhbGxlZUdQUiwgT0JKRUNUX09GRlNFVE9GKEpTRnVu
Y3Rpb24sIG1fc2NvcGUpKSwgcmVzdWx0R1BSKTsKQEAgLTY4Miw3ICs2OTAsNiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgc2xvd1BhdGgubGluaygmbV9q
aXQpOwogICAgIAogICAgIG1faml0Lm1vdmUoY2FsbGVlR1BSLCBHUFJJbmZvOjpyZWdUMCk7IC8v
IENhbGxlZSBuZWVkcyB0byBiZSBpbiByZWdUMAotICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJ
bmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbygpOwogICAgIG1faml0Lm1v
dmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6
cmVnVDIpOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8gYmUgaW4gcmVnVDIKICAgICBKSVRDb21waWxl
cjo6Q2FsbCBzbG93Q2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7CiAgICAgCkBAIC0zNzc4LDE4ICsz
Nzg1LDIxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgY29tcGlsZUdldEFycmF5TGVuZ3RoKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICAgICAg
Ci0gICAgY2FzZSBDaGVja0Z1bmN0aW9uOiB7Ci0gICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGZ1bmN0aW9uKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRGdW5jdGlvbiwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoZnVuY3Rpb24uZ3ByKCkp
LCBub2RlLT5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6Tm90RXF1
YWwsIGZ1bmN0aW9uLmdwcigpLCBub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpLmFzQ2VsbCgpKSk7
CisgICAgY2FzZSBDaGVja0NlbGw6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2Vs
bCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkQ2Vs
bCwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbC5ncHIoKSksIG5vZGUtPmNoaWxkMSgp
LCBtX2ppdC5icmFuY2hXZWFrUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgY2VsbC5ncHIoKSwg
bm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5hc0NlbGwoKSkpOwogICAgICAgICBub1Jlc3Vs
dChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIENoZWNr
RXhlY3V0YWJsZTogeworICAgIGNhc2UgR2V0RXhlY3V0YWJsZTogewogICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBmdW5jdGlvbih0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIHNw
ZWN1bGF0ZUNlbGxUeXBlKG5vZGUtPmNoaWxkMSgpLCBmdW5jdGlvbi5ncHIoKSwgU3BlY0Z1bmN0
aW9uLCBKU0Z1bmN0aW9uVHlwZSk7Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkRXhlY3V0
YWJsZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoZnVuY3Rpb24uZ3ByKCkpLCBub2RlLT5j
aGlsZDEoKSwgbV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJVENv
bXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1
dGFibGUoKSksIG5vZGUtPmV4ZWN1dGFibGUoKSkpOwotICAgICAgICBub1Jlc3VsdChub2RlKTsK
KyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgZnVuY3Rpb24pOworICAg
ICAgICBHUFJSZWcgZnVuY3Rpb25HUFIgPSBmdW5jdGlvbi5ncHIoKTsKKyAgICAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgc3BlY3VsYXRlQ2VsbFR5cGUobm9k
ZS0+Y2hpbGQxKCksIGZ1bmN0aW9uR1BSLCBTcGVjRnVuY3Rpb24sIEpTRnVuY3Rpb25UeXBlKTsK
KyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhmdW5jdGlvbkdQUiwg
SlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCByZXN1bHRHUFIpOworICAgICAgICBj
ZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAg
ICAgCkBAIC00OTgwLDcgKzQ5OTAsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgIGNhc2UgTXVsdGlQdXRC
eU9mZnNldDoKICAgICBjYXNlIEZpYXRJbnQ1MjoKLSAgICAgICAgREZHX0NSQVNIKG1faml0Lmdy
YXBoKCksIG5vZGUsICJVbmV4cGVjdGVkIEZUTCBub2RlIik7CisgICAgY2FzZSBDaGVja0JhZENl
bGw6CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiVW5leHBlY3RlZCBu
b2RlIik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE3Mjc5NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MzU0LDYgKzUzNTQsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3
aXRjaChOb2RlKiBubwogICAgIGNhc2UgU3dpdGNoU3RyaW5nOiB7CiAgICAgICAgIGVtaXRTd2l0
Y2hTdHJpbmcobm9kZSwgZGF0YSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FzZSBT
d2l0Y2hDZWxsOiB7CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiQmFk
IHN3aXRjaCBraW5kIik7CisgICAgICAgIHJldHVybjsKICAgICB9IH0KICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAJKHJldmlz
aW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVn
aXN0cmF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MiwxMCArNjIsNiBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAg
ICAgICAgICAgICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6Ci0gICAgICAgICAgICAgICAgICAgIHJl
Z2lzdGVyU3RydWN0dXJlKG5vZGUtPmV4ZWN1dGFibGUoKS0+c3RydWN0dXJlKCkpOwotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBj
YXNlIENoZWNrU3RydWN0dXJlOgogICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVy
ZXMobm9kZS0+c3RydWN0dXJlU2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBD
aGVja0luamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjEsNiArNjEsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghT3B0aW9uczo6ZW5h
YmxlT1NSRW50cnlUb0ZUTCgpKQogICAgICAgICAgICAgbGV2ZWwgPSBGVEw6OkNhbkNvbXBpbGU7
CiAgICAgICAgIAorICAgICAgICBtX2dyYXBoLm1fc2hvdWxkUHJvZmlsZSA9IHRydWU7CisgICAg
ICAgIAogICAgICAgICBJbnNlcnRpb25TZXQgaW5zZXJ0aW9uU2V0KG1fZ3JhcGgpOwogICAgICAg
ICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2Nr
SW5kZXgtLTspIHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9j
ayhibG9ja0luZGV4KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRh
dGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRh
dGUuY3BwCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAwLDcgKzIwMCw4IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFtYXlF
eGl0KG1fZ3JhcGgsIG5vZGUpIHx8IG5vZGUtPm9yaWdpbi5mb3JFeGl0LmlzU2V0KCkpOwogICAg
ICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhhc1N0cnVjdHVyZSgpIHx8ICEh
bm9kZS0+c3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW5v
ZGUtPmhhc0Z1bmN0aW9uKCkgfHwgbm9kZS0+ZnVuY3Rpb24oKS0+dmFsdWUoKS5pc0Z1bmN0aW9u
KCkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhhc0NlbGxPcGVy
YW5kKCkgfHwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5pc0NlbGwoKSk7CisgICAgICAg
ICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+aGFzQ2VsbE9wZXJhbmQoKSB8fCAhIW5v
ZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkpOwogICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBpZiAoIShub2RlLT5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGlmICghbm9kZS0+Y2hpbGQyKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5j
cHAJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0
Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExNCw3ICsxMTQsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2Fz
ZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6Ci0gICAgICAgICAgICBhZGRMYXppbHkoanND
YXN0PEpTRnVuY3Rpb24qPihtX25vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkpLT5hbGxvY2F0aW9u
UHJvZmlsZVdhdGNocG9pbnRTZXQoKSk7CisgICAgICAgICAgICBhZGRMYXppbHkoanNDYXN0PEpT
RnVuY3Rpb24qPihtX25vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkpLT5hbGxvY2F0aW9uUHJv
ZmlsZVdhdGNocG9pbnRTZXQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIFZhcmlhYmxlV2F0Y2hwb2ludDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA0LDcgKzEwNCw4IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShO
b2RlKiAKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CiAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2lu
dDoKICAgICBjYXNlIFN0cmluZ0NoYXJBdDoKLSAgICBjYXNlIENoZWNrRnVuY3Rpb246CisgICAg
Y2FzZSBDaGVja0NlbGw6CisgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgY2FzZSBTdHJpbmdD
aGFyQ29kZUF0OgogICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBS
ZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgpAQCAtMTI2LDcgKzEyNyw3IEBAIGlubGluZSBDYXBh
YmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBv
aW50ZXI6CiAgICAgY2FzZSBDaGVjazoKICAgICBjYXNlIENvdW50RXhlY3V0aW9uOgotICAgIGNh
c2UgQ2hlY2tFeGVjdXRhYmxlOgorICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNlIEdl
dFNjb3BlOgogICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OgogICAgIGNhc2Ug
Q2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkOgpAQCAtMzI2LDYgKzMyNyw3IEBAIGlubGluZSBDYXBh
YmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICAgICAgc3dpdGNoIChub2RlLT5zd2l0
Y2hEYXRhKCktPmtpbmQpIHsKICAgICAgICAgY2FzZSBTd2l0Y2hJbW06CiAgICAgICAgIGNhc2Ug
U3dpdGNoQ2hhcjoKKyAgICAgICAgY2FzZSBTd2l0Y2hDZWxsOgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3Bw
CShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNiBAQCBOT19SRVRVUk5f
RFVFX1RPX0NSQVNIIHN0YXRpYyB2b2lkIGZ0bFVuCiBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHN0
YXRpYyB2b2lkIGZ0bFVucmVhY2hhYmxlKAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBCbG9j
a0luZGV4IGJsb2NrSW5kZXgsIHVuc2lnbmVkIG5vZGVJbmRleCkKIHsKLSAgICAKICAgICBkYXRh
TG9nKCJDcmFzaGluZyBpbiB0aG91Z2h0LXRvLWJlLXVucmVhY2hhYmxlIEZUTC1nZW5lcmF0ZWQg
Y29kZSBmb3IgIiwgcG9pbnRlckR1bXAoY29kZUJsb2NrKSwgIiBhdCBiYXNpYyBibG9jayAjIiwg
YmxvY2tJbmRleCk7CiAgICAgaWYgKG5vZGVJbmRleCAhPSBVSU5UX01BWCkKICAgICAgICAgZGF0
YUxvZygiLCBub2RlIEAiLCBub2RlSW5kZXgpOwpAQCAtMTUzLDExICsxNTIsMTcgQEAgcHVibGlj
OgogICAgICAgICBmb3IgKHVuc2lnbmVkIGJsb2NrSW5kZXggPSBkZXB0aEZpcnN0LnNpemUoKTsg
YmxvY2tJbmRleC0tOyApIHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gZGVwdGhG
aXJzdFtibG9ja0luZGV4XTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4ID0g
YmxvY2stPnNpemUoKTsgbm9kZUluZGV4LS07ICkgewotICAgICAgICAgICAgICAgIE5vZGUqIG1f
bm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOwotICAgICAgICAgICAgICAgIGlmIChtX25vZGUt
Pmhhc0tub3duRnVuY3Rpb24oKSkgeworICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9j
ay0+YXQobm9kZUluZGV4KTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsK
KyAgICAgICAgICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6CisgICAgICAgICAgICAgICAgY2FzZSBO
YXRpdmVDb25zdHJ1Y3Q6IHsKICAgICAgICAgICAgICAgICAgICAgaW50IG51bUFyZ3MgPSBtX25v
ZGUtPm51bUNoaWxkcmVuKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChudW1BcmdzID4gbWF4
TnVtYmVyT2ZBcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgICAgICAgICBtYXhOdW1iZXJPZkFy
Z3VtZW50cyA9IG51bUFyZ3M7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ2
OCwxMSArNDczLDE0IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAg
ICAgICAgICAgICBjb21waWxlQ2hlY2tTdHJ1Y3R1cmUoKTsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIENoZWNrRnVuY3Rpb246Ci0gICAgICAgICAgICBjb21waWxlQ2hlY2tGdW5j
dGlvbigpOworICAgICAgICBjYXNlIENoZWNrQ2VsbDoKKyAgICAgICAgICAgIGNvbXBpbGVDaGVj
a0NlbGwoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENoZWNrQmFkQ2VsbDoK
KyAgICAgICAgICAgIGNvbXBpbGVDaGVja0JhZENlbGwoKTsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToKLSAgICAgICAgICAgIGNvbXBpbGVDaGVja0V4
ZWN1dGFibGUoKTsKKyAgICAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgorICAgICAgICAgICAgY29t
cGlsZUdldEV4ZWN1dGFibGUoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFy
cmF5aWZ5VG9TdHJ1Y3R1cmU6CiAgICAgICAgICAgICBjb21waWxlQXJyYXlpZnlUb1N0cnVjdHVy
ZSgpOwpAQCAtMTc0MywyNiArMTc1MSwyNSBAQCBwcml2YXRlOgogICAgICAgICBtX291dC5hcHBl
bmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21w
aWxlQ2hlY2tGdW5jdGlvbigpCisgICAgdm9pZCBjb21waWxlQ2hlY2tDZWxsKCkKICAgICB7CiAg
ICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
CiAgICAgICAgIHNwZWN1bGF0ZSgKLSAgICAgICAgICAgIEJhZEZ1bmN0aW9uLCBqc1ZhbHVlVmFs
dWUoY2VsbCksIG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpLAotICAgICAgICAgICAgbV9vdXQubm90
RXF1YWwoY2VsbCwgd2Vha1BvaW50ZXIobV9ub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpLmFzQ2Vs
bCgpKSkpOworICAgICAgICAgICAgQmFkQ2VsbCwganNWYWx1ZVZhbHVlKGNlbGwpLCBtX25vZGUt
PmNoaWxkMSgpLm5vZGUoKSwKKyAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKGNlbGwsIHdlYWtQ
b2ludGVyKG1fbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5hc0NlbGwoKSkpKTsKICAgICB9
CiAgICAgCi0gICAgdm9pZCBjb21waWxlQ2hlY2tFeGVjdXRhYmxlKCkKKyAgICB2b2lkIGNvbXBp
bGVDaGVja0JhZENlbGwoKQorICAgIHsKKyAgICAgICAgdGVybWluYXRlKEJhZENlbGwpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGNvbXBpbGVHZXRFeGVjdXRhYmxlKCkKICAgICB7CiAgICAgICAg
IExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgCiAgICAg
ICAgIHNwZWN1bGF0ZUZ1bmN0aW9uKG1fbm9kZS0+Y2hpbGQxKCksIGNlbGwpOwotICAgICAgICAK
LSAgICAgICAgc3BlY3VsYXRlKAotICAgICAgICAgICAgQmFkRXhlY3V0YWJsZSwganNWYWx1ZVZh
bHVlKGNlbGwpLCBtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSwKLSAgICAgICAgICAgIG1fb3V0Lm5v
dEVxdWFsKAotICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0Z1
bmN0aW9uX2V4ZWN1dGFibGUpLAotICAgICAgICAgICAgICAgIHdlYWtQb2ludGVyKG1fbm9kZS0+
ZXhlY3V0YWJsZSgpKSkpOworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIoY2VsbCwg
bV9oZWFwcy5KU0Z1bmN0aW9uX2V4ZWN1dGFibGUpKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBj
b21waWxlQXJyYXlpZnlUb1N0cnVjdHVyZSgpCkBAIC0zNjczLDkgKzM2ODAsNyBAQCBwcml2YXRl
OgogICAgICAgICBpbnQgbnVtUGFzc2VkQXJncyA9IG1fbm9kZS0+bnVtQ2hpbGRyZW4oKSAtIDE7
CiAgICAgICAgIGludCBudW1BcmdzID0gbnVtUGFzc2VkQXJncyArIGR1bW15VGhpc0FyZ3VtZW50
OwogCi0gICAgICAgIEFTU0VSVChtX25vZGUtPmhhc0tub3duRnVuY3Rpb24oKSk7Ci0KLSAgICAg
ICAgSlNGdW5jdGlvbioga25vd25GdW5jdGlvbiA9IG1fbm9kZS0+a25vd25GdW5jdGlvbigpOwor
ICAgICAgICBKU0Z1bmN0aW9uKiBrbm93bkZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPiht
X25vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuYXNDZWxsKCkpOwogICAgICAgICBOYXRpdmVG
dW5jdGlvbiBmdW5jdGlvbiA9IGtub3duRnVuY3Rpb24tPm5hdGl2ZUZ1bmN0aW9uKCk7CiAKICAg
ICAgICAgRGxfaW5mbyBpbmZvOwpAQCAtMzkxOCwxMCArMzkyMywzNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBjYXNlIFN3aXRj
aFN0cmluZzoKKyAgICAgICAgY2FzZSBTd2l0Y2hTdHJpbmc6IHsKICAgICAgICAgICAgIERGR19D
UkFTSChtX2dyYXBoLCBtX25vZGUsICJVbmltcGxlbWVudGVkIik7Ci0gICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAg
IGNhc2UgU3dpdGNoQ2VsbDogeworICAgICAgICAgICAgTFZhbHVlIGNlbGw7CisgICAgICAgICAg
ICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgICAgICAgICBjYXNl
IENlbGxVc2U6IHsKKyAgICAgICAgICAgICAgICBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICAgICAgICAgIExW
YWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgY2VsbENhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIlN3aXRjaC9T
d2l0Y2hDZWxsIGNlbGwgY2FzZSIpKTsKKyAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCisg
ICAgICAgICAgICAgICAgICAgIGlzQ2VsbCh2YWx1ZSksIHVuc3VyZShjZWxsQ2FzZSksIHVuc3Vy
ZShsb3dCbG9jayhkYXRhLT5mYWxsVGhyb3VnaC5ibG9jaykpKTsKKyAgICAgICAgICAgICAgICBt
X291dC5hcHBlbmRUbyhjZWxsQ2FzZSk7CisgICAgICAgICAgICAgICAgY2VsbCA9IHZhbHVlOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwg
bV9ub2RlLCAiQmFkIHVzZSBraW5kIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBidWlsZFN3aXRjaChtX25vZGUtPnN3
aXRjaERhdGEoKSwgbV9vdXQuaW50UHRyLCBjZWxsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfSB9CiAgICAgICAgIAogICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAi
QmFkIHN3aXRjaCBraW5kIik7CiAgICAgfQpAQCAtNTE4Niw3ICs1MjE4LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgVmVjdG9yPFN3aXRjaENhc2U+IGNhc2VzOwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZGF0YS0+Y2FzZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGNhc2Vz
LmFwcGVuZChTd2l0Y2hDYXNlKAotICAgICAgICAgICAgICAgIGNvbnN0SW50KHR5cGUsIGRhdGEt
PmNhc2VzW2ldLnZhbHVlLnN3aXRjaExvb2t1cFZhbHVlKCkpLAorICAgICAgICAgICAgICAgIGNv
bnN0SW50KHR5cGUsIGRhdGEtPmNhc2VzW2ldLnZhbHVlLnN3aXRjaExvb2t1cFZhbHVlKGRhdGEt
PmtpbmQpKSwKICAgICAgICAgICAgICAgICBsb3dCbG9jayhkYXRhLT5jYXNlc1tpXS50YXJnZXQu
YmxvY2spLCBXZWlnaHQoZGF0YS0+Y2FzZXNbaV0udGFyZ2V0LmNvdW50KSkpOwogICAgICAgICB9
CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9u
IDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05ODQsNiArOTg0LDExIEBAIHZvaWQgSGVhcDo6Y29sbGVjdChIZWFwT3BlcmF0
aW9uIGNvbGxlY3QKICAgICAgICAgdm0oKS0+aGlnaEZpZGVsaXR5TG9nKCktPnByb2Nlc3NIaWdo
RmlkZWxpdHlMb2coIkdDIik7CiAgICAgfQogICAgIAorICAgIGlmICh2bSgpLT5jYWxsRWRnZUxv
ZykgeworICAgICAgICBEZWZlckdDRm9yQVdoaWxlIGF3aGlsZSgqdGhpcyk7CisgICAgICAgIHZt
KCktPmNhbGxFZGdlTG9nLT5wcm9jZXNzTG9nKCk7CisgICAgfQorICAgIAogICAgIFJFTEVBU0Vf
QVNTRVJUKCFtX2RlZmVycmFsRGVwdGgpOwogICAgIEFTU0VSVCh2bSgpLT5jdXJyZW50VGhyZWFk
SXNIb2xkaW5nQVBJTG9jaygpKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLT5hdG9taWNTdHJp
bmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24g
MTcyNzk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAko
d29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsMjEgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQog
ICAgIAorICAgIHZvaWQgbG9hZFZhbHVlKEFkZHJlc3MgYWRkcmVzcywgSlNWYWx1ZVJlZ3MgcmVn
cykKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbG9hZDY0KGFkZHJlc3MsIHJl
Z3MuZ3ByKCkpOworI2Vsc2UKKyAgICAgICAgaWYgKGFkZHJlc3MuYmFzZSA9PSByZWdzLnBheWxv
YWRHUFIoKSkgeworICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldChUYWdPZmZz
ZXQpLCByZWdzLnRhZ0dQUigpKTsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZz
ZXQoUGF5bG9hZE9mZnNldCksIHJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCksIHJl
Z3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQo
VGFnT2Zmc2V0KSwgcmVncy50YWdHUFIoKSk7CisgICAgICAgIH0KKyNlbmRpZgorICAgIH0KKyAg
ICAKICAgICB2b2lkIG1vdmVUcnVzdGVkVmFsdWUoSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZVJlZ3Mg
cmVncykKICAgICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTY2Niw2ICsx
NjY2LDE1IEBAIHB1YmxpYzoKICAgICAgICAgbW92ZShhcmc0LCBHUFJJbmZvOjphcmd1bWVudEdQ
UjMpOwogICAgIH0KICNlbmRpZgorICAgIAorICAgIHZvaWQgc2V0dXBBcmd1bWVudHMoSlNWYWx1
ZVJlZ3MgYXJnMSkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgc2V0dXBBcmd1
bWVudHMoYXJnMS5ncHIoKSk7CisjZWxzZQorICAgICAgICBzZXR1cEFyZ3VtZW50cyhhcmcxLnBh
eWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSk7CisjZW5kaWYKKyAgICB9CiAKICAgICB2b2lkIHNl
dHVwUmVzdWx0cyhHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QikKICAgICB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDgg
QEAgcHVibGljOgogICAgIEdQUlJlZyB0YWdHUFIoKSBjb25zdCB7IHJldHVybiBJbnZhbGlkR1BS
UmVnOyB9CiAgICAgR1BSUmVnIHBheWxvYWRHUFIoKSBjb25zdCB7IHJldHVybiBtX2dwcjsgfQog
ICAgIAorICAgIGJvb2wgdXNlcyhHUFJSZWcgZ3ByKSBjb25zdCB7IHJldHVybiBtX2dwciA9PSBn
cHI7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByOwogfTsKQEAgLTE2OSw2ICsx
NzEsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0YWdHUFIoKTsKICAgICB9CiAKKyAgICBi
b29sIHVzZXMoR1BSUmVnIGdwcikgY29uc3QgeyByZXR1cm4gbV90YWdHUFIgPT0gZ3ByIHx8IG1f
cGF5bG9hZEdQUiA9PSBncHI7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgaW50OF90IG1fdGFnR1BS
OwogICAgIGludDhfdCBtX3BheWxvYWRHUFI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENhbGwzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDYWxsMzJfNjQuY3BwCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMCw2ICsz
MDAsMTMgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIHN0
b3JlMzIocmVnVDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpTU3RhY2s6OkNhbGxl
ZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0g
c2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAgICAgc3RvcmUzMihyZWdUMSwgQWRkcmVzcyhz
dGFja1BvaW50ZXJSZWdpc3RlciwgSlNTdGFjazo6Q2FsbGVlICogc3RhdGljX2Nhc3Q8aW50Pihz
aXplb2YoUmVnaXN0ZXIpKSArIFRhZ09mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkp
OwogCisgICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5m
bygpOworCisgICAgaWYgKENhbGxFZGdlTG9nOjppc0VuYWJsZWQoKSAmJiBzaG91bGRFbWl0UHJv
ZmlsaW5nKCkpIHsKKyAgICAgICAgbV92bS0+ZW5zdXJlQ2FsTEVkZ2VMb2coKS5lbWl0TG9nQ29k
ZSgKKyAgICAgICAgICAgICp0aGlzLCBpbmZvLT5jYWxsRWRnZVByb2ZpbGUsIEpTVmFsdWVSZWdz
KHJlZ1QxLCByZWdUMCkpOworICAgIH0KKwogICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsX2V2
YWwpIHsKICAgICAgICAgY29tcGlsZUNhbGxFdmFsKGluc3RydWN0aW9uKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMzEzLDcgKzMyMCw2IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlE
IG9wY29kZUkKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZSk7CiAKICAgICBBU1NFUlQobV9jYWxs
Q29tcGlsYXRpb25JbmZvLnNpemUoKSA9PSBjYWxsTGlua0luZm9JbmRleCk7Ci0gICAgQ2FsbExp
bmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5mbygpOwogICAgIGluZm8t
PmNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJRCk7CiAgICAgaW5m
by0+Y29kZU9yaWdpbiA9IENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCk7CiAgICAgaW5mby0+
Y2FsbGVlR1BSID0gcmVnVDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENh
bGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5j
cHAJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2Fs
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMiw2ICsyMTIsMTEgQEAgdm9pZCBKSVQ6OmNvbXBp
bGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY2Fs
bGVlLCByZWdUMCk7IC8vIHJlZ1QwIGhvbGRzIGNhbGxlZS4KIAogICAgIHN0b3JlNjQocmVnVDAs
IEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpTU3RhY2s6OkNhbGxlZSAqIHN0YXRpY19j
YXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsK
KyAgICAKKyAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2NvZGVCbG9jay0+YWRkQ2FsbExpbmtJ
bmZvKCk7CisKKyAgICBpZiAoQ2FsbEVkZ2VMb2c6OmlzRW5hYmxlZCgpICYmIHNob3VsZEVtaXRQ
cm9maWxpbmcoKSkKKyAgICAgICAgbV92bS0+ZW5zdXJlQ2FsbEVkZ2VMb2coKS5lbWl0TG9nQ29k
ZSgqdGhpcywgaW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBKU1ZhbHVlUmVncyhyZWdUMCkpOwogCiAg
ICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCkgewogICAgICAgICBjb21waWxlQ2FsbEV2
YWwoaW5zdHJ1Y3Rpb24pOwpAQCAtMjIzLDcgKzIyOCw2IEBAIHZvaWQgSklUOjpjb21waWxlT3BD
YWxsKE9wY29kZUlEIG9wY29kZUkKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZSk7CiAKICAgICBB
U1NFUlQobV9jYWxsQ29tcGlsYXRpb25JbmZvLnNpemUoKSA9PSBjYWxsTGlua0luZm9JbmRleCk7
Ci0gICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5mbygp
OwogICAgIGluZm8tPmNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJ
RCk7CiAgICAgaW5mby0+Y29kZU9yaWdpbiA9IENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCk7
CiAgICAgaW5mby0+Y2FsbGVlR1BSID0gcmVnVDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Nyw2ICsxNjcsOCBA
QCB0eXBlZGVmIGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICB2KGJvb2wsIGVuYWJsZUFj
Y2Vzc0lubGluaW5nLCB0cnVlKSBcCiAgICAgdihib29sLCBlbmFibGVQb2x5dmFyaWFudERldmly
dHVhbGl6YXRpb24sIHRydWUpIFwKICAgICB2KGJvb2wsIGVuYWJsZVBvbHltb3JwaGljQWNjZXNz
SW5saW5pbmcsIHRydWUpIFwKKyAgICB2KGJvb2wsIGVuYWJsZVBvbHltb3JwaGljQ2FsbElubGlu
aW5nLCB0cnVlKSBcCisgICAgdihib29sLCBlbmFibGVDYWxsRWRnZVByb2ZpbGluZywgdHJ1ZSkg
XAogICAgIHYoYm9vbCwgb3B0aW1pemVOYXRpdmVDYWxscywgZmFsc2UpIFwKICAgICBcCiAgICAg
dihib29sLCBlbmFibGVDb25jdXJyZW50SklULCB0cnVlKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Myw2ICszNzMsMTMgQEAg
Vk0qJiBWTTo6c2hhcmVkSW5zdGFuY2VJbnRlcm5hbCgpCiAgICAgcmV0dXJuIHNoYXJlZEluc3Rh
bmNlOwogfQogCitDYWxsRWRnZUxvZyYgVk06OmVuc3VyZUNhbGxFZGdlTG9nKCkKK3sKKyAgICBp
ZiAoIWNhbGxFZGdlTG9nKQorICAgICAgICBjYWxsRWRnZUxvZyA9IHN0ZDo6bWFrZV91bmlxdWU8
Q2FsbEVkZ2VMb2c+KCk7CisgICAgcmV0dXJuICpjYWxsRWRnZUxvZzsKK30KKwogI2lmIEVOQUJM
RShKSVQpCiBzdGF0aWMgVGh1bmtHZW5lcmF0b3IgdGh1bmtHZW5lcmF0b3JGb3JJbnRyaW5zaWMo
SW50cmluc2ljIGludHJpbnNpYykKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzOwogICAgIGNsYXNzIEJ1aWx0aW5FeGVj
dXRhYmxlczsKKyAgICBjbGFzcyBDYWxsRWRnZUxvZzsKICAgICBjbGFzcyBDb2RlQmxvY2s7CiAg
ICAgY2xhc3MgQ29kZUNhY2hlOwogICAgIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwpAQCAtMjMz
LDYgKzIzNCw5IEBAIG5hbWVzcGFjZSBKU0MgewogI2lmIEVOQUJMRShERkdfSklUKQogICAgICAg
ICBPd25QdHI8REZHOjpMb25nTGl2ZWRTdGF0ZT4gZGZnU3RhdGU7CiAjZW5kaWYgLy8gRU5BQkxF
KERGR19KSVQpCisgICAgICAgIAorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbEVkZ2VMb2c+
IGNhbGxFZGdlTG9nOworICAgICAgICBDYWxsRWRnZUxvZyYgZW5zdXJlQ2FsbEVkZ2VMb2coKTsK
IAogICAgICAgICBWTVR5cGUgdm1UeXBlOwogICAgICAgICBDbGllbnREYXRhKiBjbGllbnREYXRh
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9uZXctYXJyYXktdGhl
bi1leGl0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvbmV3LWFycmF5LXRoZW4tZXhpdC5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvbmV3LWFycmF5LXRoZW4tZXhpdC5qcwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE0IEBACitmdW5jdGlvbiBmb28oZikgeworICAgIHJldHVybiBuZXcgZigp
OworfQorCitub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kp
CisgICAgZm9vKEFycmF5KTsKKwordmFyIGRpZENhbGwgPSBmYWxzZTsKK2ZvbyhmdW5jdGlvbigp
IHsgZGlkQ2FsbCA9IHRydWU7IH0pOworCitpZiAoIWRpZENhbGwpCisgICAgdGhyb3cgIkVycm9y
OiBkaWRuJ3QgY2FsbCBteSBmdW5jdGlvbi4iOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9wb2x5LWNhbGwtZXhpdC10aGlzLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQtdGhpcy5qcwkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcG9seS1jYWxs
LWV4aXQtdGhpcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5IEBACisoZnVuY3Rpb24o
KSB7CisgICAgZnVuY3Rpb24gZm9vKHgpIHsgcmV0dXJuIDEgKyB0aGlzLmY7IH0KKyAgICBmdW5j
dGlvbiBiYXIoeCkgeyByZXR1cm4geCArIHRoaXMuZjsgfQorICAgIGZ1bmN0aW9uIGJheih4KSB7
IHJldHVybiB4ICsgMSArIHRoaXMuZjsgfQorICAgIAorICAgIHZhciBuID0gMTAwMDAwMDsKKyAg
ICAKKyAgICB2YXIgcmVzdWx0ID0gKGZ1bmN0aW9uKG8pIHsKKyAgICAgICAgdmFyIGYgPSB7ZnVu
OmZvbywgZjoxfTsKKyAgICAgICAgdmFyIGcgPSB7ZnVuOmJhciwgZjoyfTsKKyAgICAgICAgdmFy
IGggPSB7ZnVuOmJheiwgZjozfTsKKyAgICAgICAgCisgICAgICAgIHZhciByZXN1bHQgPSAwOwor
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkgeworICAgICAgICAgICAgaWYgKGkg
PT0gbiAtIDEpCisgICAgICAgICAgICAgICAgZiA9IGg7CisgICAgICAgICAgICByZXN1bHQgKz0g
Zi5mdW4oby5mKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIHRtcCA9IGY7CisgICAg
ICAgICAgICBmID0gZzsKKyAgICAgICAgICAgIGcgPSB0bXA7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSkoe2Y6NDJ9KTsKKyAgICAKKyAgICBpZiAo
cmVzdWx0ICE9ICgobiAvIDIgLSAxKSAqICg0MiArIDIpKSArIChuIC8gMiAqICgxICsgMSkgKyAo
NDIgKyAxICsgMykpKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1
bHQ7Cit9KSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wb2x5
LWNhbGwtZXhpdC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL3BvbHktY2FsbC1leGl0LmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9wb2x5LWNhbGwtZXhpdC5qcwkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDI5IEBACisoZnVuY3Rpb24oKSB7CisgICAgZnVuY3Rpb24gZm9vKHgpIHsgcmV0dXJu
IDE7IH0KKyAgICBmdW5jdGlvbiBiYXIoeCkgeyByZXR1cm4geDsgfQorICAgIGZ1bmN0aW9uIGJh
eih4KSB7IHJldHVybiB4ICsgMTsgfQorICAgIAorICAgIHZhciBuID0gMTAwMDAwMDsKKyAgICAK
KyAgICB2YXIgcmVzdWx0ID0gKGZ1bmN0aW9uKG8pIHsKKyAgICAgICAgdmFyIGYgPSBmb287Cisg
ICAgICAgIHZhciBnID0gYmFyOworICAgICAgICB2YXIgaCA9IGJhejsKKyAgICAgICAgCisgICAg
ICAgIHZhciByZXN1bHQgPSAwOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkg
eworICAgICAgICAgICAgaWYgKGkgPT0gbiAtIDEpCisgICAgICAgICAgICAgICAgZiA9IGg7Cisg
ICAgICAgICAgICByZXN1bHQgKz0gZihvLmYpOworICAgICAgICAgICAgCisgICAgICAgICAgICB2
YXIgdG1wID0gZjsKKyAgICAgICAgICAgIGYgPSBnOworICAgICAgICAgICAgZyA9IHRtcDsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9KSh7Zjo0Mn0p
OworICAgIAorICAgIGlmIChyZXN1bHQgIT0gKChuIC8gMiAtIDEpICogNDIpICsgKG4gLyAyICog
MSkgKyAoNDIgKyAxKSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVz
dWx0OworfSkoKTsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzI4MDEpCisrKyBTb3VyY2UvV1RGL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE0LTA4LTIwICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgREZHIChvciBGVEwpIHNob3VsZCBi
ZSBhYmxlIHRvIGRvIHBvbHltb3JwaGljIGNhbGwgaW5saW5pbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTE0NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkIHNvbWUgcG93ZXIgdGhh
dCBJIG5lZWQgZm9yIGNhbGwgZWRnZSBwcm9maWxpbmcuCisKKyAgICAgICAgKiB3dGYvT3duUHRy
Lmg6CisgICAgICAgIChXVEY6Ok93blB0cjxUPjo6Y3JlYXRlVHJhbnNhY3Rpb25hbGx5KToKKyAg
ICAgICAgKiB3dGYvU3BlY3RydW0uaDoKKyAgICAgICAgKFdURjo6U3BlY3RydW06OmFkZCk6Cisg
ICAgICAgIChXVEY6OlNwZWN0cnVtOjphZGRBbGwpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6
Z2V0KToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OnNpemUpOgorICAgICAgICAoV1RGOjpTcGVj
dHJ1bTo6S2V5QW5kQ291bnQ6OktleUFuZENvdW50KToKKyAgICAgICAgKFdURjo6U3BlY3RydW06
OmNsZWFyKToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OnJlbW92ZUlmKToKKwogMjAxNC0wOC0y
MCAgQWtvcyBLaXNzICA8YWtpc3NAaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIEVuYWJsZSBB
Uk02NCBkaXNhc3NlbWJsZXIgb24gRUZMCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Pd25QdHIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Pd25QdHIuaAkocmV2aXNpb24gMTcyNzk0KQor
KysgU291cmNlL1dURi93dGYvT3duUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3
LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMiw2ICsyMiw3IEBACiAjZGVmaW5lIFdURl9Pd25Q
dHJfaAogCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvQXRvbWlj
cy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHJD
b21tb24uaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CkBAIC03Miw2ICs3MywxNCBAQCBuYW1lc3Bh
Y2UgV1RGIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gT3duUHRyJiBvcGVyYXRvcj0o
T3duUHRyPFU+JiYpOwogCiAgICAgICAgIHZvaWQgc3dhcChPd25QdHImIG8pIHsgc3RkOjpzd2Fw
KG1fcHRyLCBvLm1fcHRyKTsgfQorICAgICAgICAKKyAgICAgICAgLy8gQ29uc3RydWN0IGFuIG9i
amVjdCB0byBzdG9yZSBpbnRvIHRoaXMgT3duUHRyLCBidXQgb25seSBzbyBsb25nIGFzIHRoaXMg
T3duUHRyCisgICAgICAgIC8vIGRvZXNuJ3QgYWxyZWFkeSBwb2ludCB0byBhbiBvYmplY3QuIFRo
aXMgd2lsbCBlbnN1cmUgdGhhdCBhZnRlciB5b3UgY2FsbCB0aGlzLAorICAgICAgICAvLyB0aGUg
T3duUHRyIHdpbGwgcG9pbnQgdG8gYW4gaW5zdGFuY2Ugb2YgVC4gVGhpcyBpbnN0YW5jZSBtYXkg
b3IgbWF5IG5vdCBoYXZlIGJlZW4KKyAgICAgICAgLy8gY3JlYXRlZCBieSB0aGlzIGNhbGwuIE1v
cmVvdmVyLCB0aGlzIGNhbGwgdXNlcyBhbiBvcHBvcnR1bmlzdGljIHRyYW5zYWN0aW9uLCBpbgor
ICAgICAgICAvLyB0aGF0IHdlIG1heSBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgVCBhbmQgdGhlbiBp
bW1lZGlhdGVseSB0aHJvdyBpdCBhd2F5LgorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBB
cmdzPgorICAgICAgICB2b2lkIGNyZWF0ZVRyYW5zYWN0aW9uYWxseShBcmdzLi4uIGFyZ3MpOwog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgZXhwbGljaXQgT3duUHRyKFB0clR5cGUgcHRyKSA6IG1f
cHRyKHB0cikgeyB9CkBAIC0xODYsNiArMTk1LDI4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAg
ICByZXR1cm4gcC5nZXQoKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1w
bGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBpbmxpbmUgdm9pZCBPd25QdHI8VD46OmNyZWF0ZVRyYW5z
YWN0aW9uYWxseShBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICBpZiAobV9wdHIpIHsKKyAg
ICAgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBUKiBuZXdPYmplY3QgPSBuZXcgVChhcmdzLi4uKTsK
KyAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKKyNpZiBFTkFCTEUoQ09NUEFSRV9BTkRf
U1dBUCkKKyAgICAgICAgZG8geworICAgICAgICAgICAgaWYgKG1fcHRyKSB7CisgICAgICAgICAg
ICAgICAgZGVsZXRlIG5ld09iamVjdDsKKyAgICAgICAgICAgICAgICBXVEY6OmxvYWRMb2FkRmVu
Y2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0g
d2hpbGUgKCFXVEY6OndlYWtDb21wYXJlQW5kU3dhcChiaXR3aXNlX2Nhc3Q8dm9pZCp2b2xhdGls
ZSo+KCZtX3B0ciksIG51bGxwdHIsIG5ld09iamVjdCkpOworI2Vsc2UKKyAgICAgICAgbV9wdHIg
PSBuZXdPYmplY3Q7CisjZW5kaWYKKyAgICB9CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2lu
ZyBXVEY6Ok93blB0cjsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvU3BlY3RydW0uaAkocmV2aXNpb24gMTcyNzk0KQorKysgU291
cmNlL1dURi93dGYvU3BlY3RydW0uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMjIgKzMyLDMxIEBACiAK
IG5hbWVzcGFjZSBXVEYgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgQ291bnRlclR5cGUgPSB1bnNpZ25lZD4KIGNsYXNzIFNwZWN0cnVtIHsK
IHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz46
Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCB1bnNp
Z25lZCBsb25nPjo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CisgICAgdHlwZWRlZiB0
eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6aXRlcmF0b3IgaXRlcmF0b3I7CisgICAg
dHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6Y29uc3RfaXRlcmF0b3Ig
Y29uc3RfaXRlcmF0b3I7CiAgICAgCiAgICAgU3BlY3RydW0oKSB7IH0KICAgICAKLSAgICB2b2lk
IGFkZChjb25zdCBUJiBrZXksIHVuc2lnbmVkIGxvbmcgY291bnQgPSAxKQorICAgIHZvaWQgYWRk
KGNvbnN0IFQmIGtleSwgQ291bnRlclR5cGUgY291bnQgPSAxKQogICAgIHsKLSAgICAgICAgdHlw
ZW5hbWUgSGFzaE1hcDxULCB1bnNpZ25lZCBsb25nPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFw
LmFkZChrZXksIGNvdW50KTsKKyAgICAgICAgaWYgKCFjb3VudCkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgdHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46OkFkZFJlc3VsdCBy
ZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBjb3VudCk7CiAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3
RW50cnkpCiAgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlICs9IGNvdW50OwogICAg
IH0KICAgICAKLSAgICB1bnNpZ25lZCBsb25nIGdldChjb25zdCBUJiBrZXkpIGNvbnN0CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVT4KKyAgICB2b2lkIGFkZEFsbChjb25zdCBTcGVjdHJ1bTxULCBV
PiYgb3RoZXJTcGVjdHJ1bSkKKyAgICB7CisgICAgICAgIGZvciAoYXV0byBlbnRyeSA6IG90aGVy
U3BlY3RydW0pCisgICAgICAgICAgICBhZGQoZW50cnkua2V5LCBlbnRyeS5jb3VudCk7CisgICAg
fQorICAgIAorICAgIENvdW50ZXJUeXBlIGdldChjb25zdCBUJiBrZXkpIGNvbnN0CiAgICAgewog
ICAgICAgICBjb25zdF9pdGVyYXRvciBpdGVyID0gbV9tYXAuZmluZChrZXkpOwogICAgICAgICBp
ZiAoaXRlciA9PSBtX21hcC5lbmQoKSkKQEAgLTU1LDYgKzY0LDggQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gaXRlci0+dmFsdWU7CiAgICAgfQogICAgIAorICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9CisgICAgCiAgICAgaXRlcmF0b3IgYmVnaW4oKSB7
IHJldHVybiBtX21hcC5iZWdpbigpOyB9CiAgICAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gbV9t
YXAuZW5kKCk7IH0KICAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1f
bWFwLmJlZ2luKCk7IH0KQEAgLTYzLDcgKzc0LDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBLZXlB
bmRDb3VudCB7CiAgICAgICAgIEtleUFuZENvdW50KCkgeyB9CiAgICAgICAgIAotICAgICAgICBL
ZXlBbmRDb3VudChjb25zdCBUJiBrZXksIHVuc2lnbmVkIGxvbmcgY291bnQpCisgICAgICAgIEtl
eUFuZENvdW50KGNvbnN0IFQmIGtleSwgQ291bnRlclR5cGUgY291bnQpCiAgICAgICAgICAgICA6
IGtleShrZXkpCiAgICAgICAgICAgICAsIGNvdW50KGNvdW50KQogICAgICAgICB7CkBAIC04MCw3
ICs5MSw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIFQga2V5OwotICAgICAgICB1
bnNpZ25lZCBsb25nIGNvdW50OworICAgICAgICBDb3VudGVyVHlwZSBjb3VudDsKICAgICB9Owog
ICAgIAogICAgIC8vIFJldHVybnMgYSBsaXN0IG9yZGVyZWQgZnJvbSBsb3dlc3QtY291bnQgdG8g
aGlnaGVzdC1jb3VudC4KQEAgLTk0LDggKzEwNSwxOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBsaXN0OwogICAgIH0KICAgICAKKyAgICB2b2lkIGNsZWFyKCkgeyBtX21hcC5jbGVhcigpOyB9
CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICB2b2lkIHJlbW92ZUlm
KGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgeworICAgICAgICBtX21hcC5yZW1vdmVJZihb
ZnVuY3Rvcl0gKHR5cGVuYW1lIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+OjpLZXlWYWx1ZVBhaXJU
eXBlJiBwYWlyKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0b3IoS2V5QW5kQ291bnQo
cGFpci5rZXksIHBhaXIudmFsdWUpKTsKKyAgICAgICAgICAgIH0pOworICAgIH0KKyAgICAKIHBy
aXZhdGU6Ci0gICAgSGFzaE1hcDxULCB1bnNpZ25lZCBsb25nPiBtX21hcDsKKyAgICBIYXNoTWFw
PFQsIENvdW50ZXJUeXBlPiBtX21hcDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTcyODAxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDgtMjAgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KKworICAgICAgICBERkcgKG9yIEZUTCkgc2hvdWxkIGJlIGFibGUgdG8gZG8gcG9s
eW1vcnBoaWMgY2FsbCBpbmxpbmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM1MTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcG9seS1jYWxs
LW5lc3RlZC5qczogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2lt
cGxlLXBvbHktY2FsbC5qczogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zaW1wbGUtcG9s
eS1jYWxsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zaW1wbGUt
cG9seS1jYWxsLW5lc3RlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jl
c3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVn
cmVzcy9zaW1wbGUtcG9seS1jYWxsLmh0bWw6IEFkZGVkLgorCiAyMDE0LTA4LTIwICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIGZhc3QvbXVsdGljb2wvbWl4
ZWQtb3BhY2l0eS1maXhlZC10ZXN0Lmh0bWwgZmFpbHMgaW4gY29tcG9zaXRpbmcgbW9kZQpJbmRl
eDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcG9seS1jYWxsLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUt
cG9seS1jYWxsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitK
U1JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1w
bGUtcG9seS1jYWxsLW5lc3RlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9zaW1wbGUtcG9seS1jYWxsLW5lc3RlZC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVk
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mv
c2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxl
LXBvbHktY2FsbC1uZXN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVkLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJz
Y3JpcHQtdGVzdHMvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcG9seS1jYWxs
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcG9seS1j
YWxsLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1w
b2x5LWNhbGwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zaW1wbGUtcG9seS1jYWxsLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jl
c3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVkLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwtbmVz
dGVkLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVz
dHMvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwy
NSBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIGZvbyh4KSB7IHJldHVybiAxOyB9Cisg
ICAgZnVuY3Rpb24gYmFyKHgpIHsgcmV0dXJuIHg7IH0KKyAgICAKKyAgICB2YXIgbiA9IDEwMDAw
MDA7CisgICAgCisgICAgdmFyIHJlc3VsdCA9IChmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGYg
PSBmb287CisgICAgICAgIHZhciBnID0gYmFyOworICAgICAgICAKKyAgICAgICAgdmFyIHJlc3Vs
dCA9IDA7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgICAg
ICByZXN1bHQgKz0gZig0Mik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciB0bXAgPSBm
OworICAgICAgICAgICAgZiA9IGc7CisgICAgICAgICAgICBnID0gdG1wOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0pKCk7CisgICAgCisgICAgaWYg
KHJlc3VsdCAhPSBuIC8gMiAqIDQyICsgbiAvIDIgKiAxKQorICAgICAgICB0aHJvdyAiRXJyb3I6
IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9KSgpOwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXBvbHktY2FsbC5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcG9seS1jYWxsLmpzCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXBv
bHktY2FsbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIwIEBACisoZnVuY3Rpb24oKSB7
CisgICAgZnVuY3Rpb24gZm9vKHgpIHsgcmV0dXJuIDE7IH0KKyAgICBmdW5jdGlvbiBiYXIoeCkg
eyByZXR1cm4geDsgfQorICAgIAorICAgIHZhciBmID0gZm9vOworICAgIHZhciBnID0gYmFyOwor
ICAgIAorICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBuID0gMTAwMDAwOworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgIHJlc3VsdCArPSBmKDQyKTsKKyAgICAg
ICAgCisgICAgICAgIHZhciB0bXAgPSBmOworICAgICAgICBmID0gZzsKKyAgICAgICAgZyA9IHRt
cDsKKyAgICB9CisgICAgCisgICAgaWYgKHJlc3VsdCAhPSBuIC8gMiAqIDQyICsgbiAvIDIgKiAx
KQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9KSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236938</attachid>
            <date>2014-08-21 14:46:59 -0700</date>
            <delta_ts>2014-08-21 19:30:25 -0700</delta_ts>
            <desc>passing tests</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>171088</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyODAxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyNiBA
QAorMjAxNC0wOC0yMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyAob3IgRlRMKSBzaG91bGQgYmUgYWJsZSB0byBkbyBwb2x5bW9ycGhpYyBjYWxsIGlubGlu
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUx
NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIEFkZCBhIGxvZy1iYXNlZCBoaWdoLWZpZGVsaXR5IGNhbGwgZWRnZSBwcm9maWxlciB0aGF0
IHJ1bnMgaW4gYmFzZWxpbmUgSklUIGFuZCBERkcgSklUIGNvZGUuCisgICAgICAgIFVzZSBpdCB0
byBkbyBwcmVjaXNlIHBvbHltb3JwaGljIGlubGluaW5nIGluIHRoZSBGVEwsIGFuZCB0byBtYWtl
IHRoZSBERkcncyBtb25vbW9ycGhpYworICAgICAgICBpbmxpbmVyIGEgYml0IG1vcmUgaW50ZWxs
aWdlbnQuIFBvdGVudGlhbCBpbmxpbmluZyBzaXRlcyB3aWxsIHVzZSB0aGUgY2FsbCBlZGdlIHBy
b2ZpbGUgaWYKKyAgICAgICAgaXQgaXMgYXZhaWxhYmxlIGJ1dCB0aGV5IHdpbGwgc3RpbGwgZmFs
bCBiYWNrIG9uIHRoZSBjYWxsIGlubGluZSBjYWNoZSBhbmQgcmFyZSBjYXNlIGNvdW50cworICAg
ICAgICBpZiB0aGF0J3Mgbm90IGF2YWlsYWJsZS4KKyAgICAgICAgCisgICAgICAgIFdvcmsgaW4g
cHJvZ3Jlc3MuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxFZGdlLmNwcDogQWRkZWQuCisgICAgICAg
IChKU0M6OkNhbGxFZGdlOjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsRWRnZS5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2U6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6
OkNhbGxFZGdlOjpjYWxsZWUpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZTo6Y291bnQpOgorICAg
ICAgICAoSlNDOjpDYWxsRWRnZTo6ZGVzcGVjaWZpZWRDbG9zdXJlKToKKyAgICAgICAgKEpTQzo6
Q2FsbEVkZ2U6OkNhbGxFZGdlKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VQcm9maWxlOjpjYWxsRWRnZXMpOgor
ICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6Om51bUNhbGxzVG9Lbm93bkNlbGxzKToKKyAg
ICAgICAgKEpTQzo6d29ydGhEZXNwZWNpZnlpbmcpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZVBy
b2ZpbGU6OndvcnRoRGVzcGVjaWZ5aW5nKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VQcm9maWxl
Ojp2aXNpdFdlYWspOgorICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6OmFkZFNsb3cpOgor
ICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6Om1lcmdlQmFjayk6CisgICAgICAgIChKU0M6
OkNhbGxFZGdlUHJvZmlsZTo6ZmFkZUJ5SGFsZik6CisgICAgICAgIChKU0M6OkNhbGxFZGdlTG9n
OjpDYWxsRWRnZUxvZyk6CisgICAgICAgIChKU0M6OkNhbGxFZGdlTG9nOjp+Q2FsbEVkZ2VMb2cp
OgorICAgICAgICAoSlNDOjpDYWxsRWRnZUxvZzo6aXNFbmFibGVkKToKKyAgICAgICAgKEpTQzo6
b3BlcmF0aW9uUHJvY2Vzc0NhbGxFZGdlTG9nKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VMb2c6
OmVtaXRMb2dDb2RlKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VMb2c6OnByb2Nlc3NMb2cpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6Q2FsbEVkZ2VQcm9maWxlOjpudW1DYWxsc1RvTm90Q2VsbCk6CisgICAgICAgIChKU0M6OkNh
bGxFZGdlUHJvZmlsZTo6bnVtQ2FsbHNUb1Vua25vd25DZWxsKToKKyAgICAgICAgKiBieXRlY29k
ZS9DYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpDYWxsRWRn
ZVByb2ZpbGU6OkNhbGxFZGdlUHJvZmlsZSk6CisgICAgICAgIChKU0M6OkNhbGxFZGdlUHJvZmls
ZTo6YWRkKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAo
SlNDOjpDYWxsTGlua0luZm86OnZpc2l0V2Vhayk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmg6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAg
ICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Q2FsbExpbmtTdGF0dXMpOgorICAgICAgICAoSlNDOjpD
YWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5r
U3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZy
b21DYWxsRWRnZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6aXNDbG9z
dXJlQ2FsbCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjptYWtlQ2xvc3VyZUNhbGwp
OgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNh
bGxMaW5rU3RhdHVzOjpmdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNhbGxMaW5r
U3RhdHVzOjppbnRlcm5hbEZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbExp
bmtTdGF0dXM6OmludHJpbnNpY0Zvcik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ2Fs
bExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OkNhbGxMaW5rU3Rh
dHVzKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmlzU2V0KToKKyAgICAgICAgKEpT
Qzo6Q2FsbExpbmtTdGF0dXM6OmNvdWxkVGFrZVNsb3dQYXRoKToKKyAgICAgICAgKEpTQzo6Q2Fs
bExpbmtTdGF0dXM6OmVkZ2VzKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OnNpemUp
OgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6YXQpOgorICAgICAgICAoSlNDOjpDYWxs
TGlua1N0YXR1czo6b3BlcmF0b3JbXSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpj
YW5PcHRpbWl6ZSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjYW5UcnVzdENvdW50
cyk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjppc0Nsb3N1cmVDYWxsKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNhbGxUYXJnZXQpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6ZXhlY3V0YWJsZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjptYWtlQ2xvc3VyZUNhbGwpOiBEZWxldGVkLgorICAg
ICAgICAqIGJ5dGVjb2RlL0NhbGxWYXJpYW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkNh
bGxWYXJpYW50OjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsVmFyaWFudC5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OkNhbGxWYXJpYW50KToKKyAgICAgICAgKEpT
Qzo6Q2FsbFZhcmlhbnQ6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50Ojpk
ZXNwZWNpZmllZENsb3N1cmUpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6cmF3Q2FsbGVl
Q2VsbCk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjppbnRlcm5hbEZ1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OmZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Q2FsbFZh
cmlhbnQ6OmlzQ2xvc3VyZUNhbGwpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZXhlY3V0
YWJsZSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50Ojpub25FeGVjdXRhYmxlQ2FsbGVlKToK
KyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OmludHJpbnNpY0Zvcik6CisgICAgICAgIChKU0M6
OkNhbGxWYXJpYW50OjpmdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpDYWxsVmFy
aWFudDo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFu
dDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpvcGVyYXRvciE9KToK
KyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om9wZXJhdG9yPCk6CisgICAgICAgIChKU0M6OkNh
bGxWYXJpYW50OjpvcGVyYXRvcj4pOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6b3BlcmF0
b3I8PSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpvcGVyYXRvcj49KToKKyAgICAgICAg
KEpTQzo6Q2FsbFZhcmlhbnQ6Omhhc2gpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZGVs
ZXRlZFRva2VuKToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnRIYXNoOjpoYXNoKToKKyAgICAg
ICAgKEpTQzo6Q2FsbFZhcmlhbnRIYXNoOjplcXVhbCk6CisgICAgICAgICogYnl0ZWNvZGUvRXhp
dEtpbmQuY3BwOgorICAgICAgICAoSlNDOjpleGl0S2luZFRvU3RyaW5nKToKKyAgICAgICAgKiBi
eXRlY29kZS9FeGl0S2luZC5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0JhY2t3YXJk
c1Byb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJhY2t3YXJkc1Byb3Bh
Z2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR0Jhc2ljQmxvY2suaDoK
KyAgICAgICAgKEpTQzo6REZHOjpCYXNpY0Jsb2NrOjp0YWtlTGFzdCk6CisgICAgICAgIChKU0M6
OkRGRzo6QmFzaWNCbG9jazo6ZGlkTGluayk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cmVtb3ZlTGFzdE5v
ZGVGcm9tR3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphZGRDYWxs
V2l0aG91dFNldHRpbmdSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjphZGRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmVtaXRGdW5jdGlvbkNoZWNr
cyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnVuZG9GdW5jdGlvbkNoZWNr
cyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpjYW5jZWxMaW5raW5nRm9yQmxvY2spOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdD
UFNSZXRocmVhZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDUFNSZXRocmVhZGlu
Z1BoYXNlOjpmcmVlVW5uZWNlc3NhcnlOb2Rlcyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJp
emUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZH
Q29tbW9uLmg6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6Cisg
ICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToK
KyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxl
SW1wbCk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6R3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6Okdy
YXBoOjpkdW1wKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZn
L0RGR0xhenlKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpMYXp5SlNWYWx1ZTo6c3dp
dGNoTG9va3VwVmFsdWUpOgorICAgICAgICAqIGRmZy9ERkdMYXp5SlNWYWx1ZS5oOgorICAgICAg
ICAoSlNDOjpERkc6OkxhenlKU1ZhbHVlOjpzd2l0Y2hMb29rdXBWYWx1ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogZGZnL0RGR05vZGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToK
KyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok9wSW5mbzo6T3BJ
bmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNDZWxsT3BlcmFuZCk6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6Y2VsbE9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
OnNldENlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjYW5CZUtub3duRnVu
Y3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0tub3duRnVuY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omtub3duRnVuY3Rpb24pOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdpdmVLbm93bkZ1bmN0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNGdW5jdGlvbik6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6ZnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6Omhhc0V4ZWN1dGFibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6OmV4ZWN1dGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5o
OgorICAgICAgICAqIGRmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlOjpydW4pOgorICAg
ICAgICAqIGRmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpQaGFudG9tUmVtb3ZhbFBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpl
bWl0U3dpdGNoKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZTo6cnVuKToKKyAg
ICAgICAgKiBkZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6VGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcv
REZHVmFsaWRhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlZhbGlkYXRlOjp2YWxpZGF0ZSk6
CisgICAgICAgICogZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OldhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2U6OmhhbmRsZSk6CisgICAgICAg
ICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGls
ZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpmdGxVbnJlYWNoYWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
Omxvd2VyKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5vZGUp
OgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ2hlY2tDZWxsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNoZWNrQmFkQ2VsbCk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVHZXRFeGVjdXRhYmxl
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5hdGl2ZUNhbGxP
ckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVT
d2l0Y2gpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpidWlsZFN3aXRjaCk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVDaGVja0Z1bmN0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNo
ZWNrRXhlY3V0YWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAg
ICAgKEpTQzo6SGVhcDo6Y29sbGVjdCk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5o
OgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRWYWx1ZSk6CisgICAgICAgICog
aml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJn
dW1lbnRzKToKKyAgICAgICAgKiBqaXQvR1BSSW5mby5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
UmVnczo6dXNlcyk6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9u
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6ZW5zdXJl
Q2FsbEVkZ2VMb2cpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvbmV3LWFycmF5LXRoZW4tZXhpdC5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9wb2x5LWNhbGwtZXhpdC10aGlzLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiB0ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQuanM6IEFkZGVkLgorCiAyMDE0LTA4LTIw
ICBwZWF2b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIFtXaW5d
IEFzc2VydGlvbiBmYWlscyB3aGVuIHJ1bm5pbmcgSlNDIHN0cmVzcyB0ZXN0cy4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMjY1LDYgKzI2NSwxMyBAQAogCQkwRjNCM0EyODE1NDRDOTk3MDAzRUQw
RkYgLyogREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjNBMjUxNTQ0Qzk5MTAwM0VEMEZGIC8qIERGR0NG
R1NpbXBsaWZpY2F0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjNCM0EyQjE1NDc1MDAwMDAzRUQwRkYgLyogREZHVmFsaWRhdGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjNB
MjkxNTQ3NEZGNDAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmNwcCAqLzsgfTsKIAkJMEYzQjNBMkMx
NTQ3NTAwMjAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCM0EyQTE1NDc0RkY0MDAzRUQwRkYgLyogREZHVmFs
aWRhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjNCN0UyNjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTIwMTlBMTFCODAwMEQ5QkM1NiAv
KiBDYWxsRWRnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGM0I3RTI3MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMjExOUEx
MUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAgKi87IH07CisJCTBGM0I3RTI4MTlB
MTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTIyMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxs
RWRnZVByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRjNCN0UyOTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlSW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdF
MjMxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZUlubGluZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjNCN0UyQTE5QTExQjgw
MDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMjQxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50
LmNwcCAqLzsgfTsKKwkJMEYzQjdFMkIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCN0UyNTE5
QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjNCN0UyRDE5QTEyQUFFMDBEOUJDNTYgLyogQ2Fs
bEVkZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYzQjdFMkMxOUExMkFBRTAwRDlCQzU2IC8qIENhbGxFZGdlLmNwcCAqLzsgfTsKIAkJMEYzRDBC
QkMxOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRDBCQkExOTRBNDE0MzAw
RkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suY3BwICovOyB9OwogCQkwRjNEMEJCRDE5
NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRDBCQkIxOTRBNDE0MzAwRkM5Q0Y5
IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQyNkE0ODE0NjBDQkIzMDAxMzFGOEYgLyogVmFsdWVS
ZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY0MjZBNDUxNDYwQ0JBQjAwMTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjE2OSw2ICsyMTc2LDEzIEBA
CiAJCTBGM0IzQTI1MTU0NEM5OTEwMDNFRDBGRiAvKiBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NGR1NpbXBsaWZpY2F0aW9u
UGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0IzQTI5MTU0NzRGRjQwMDNFRDBGRiAvKiBERkdWYWxp
ZGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdWYWxpZGF0
ZS5jcHA7IHBhdGggPSBkZmcvREZHVmFsaWRhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjNCM0EyQTE1NDc0RkY0MDAzRUQwRkYgLyogREZHVmFsaWRhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVmFsaWRhdGUuaDsgcGF0aCA9IGRmZy9ERkdW
YWxpZGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyMDE5QTExQjgw
MDBEOUJDNTYgLyogQ2FsbEVkZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q2FsbEVkZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzQjdFMjExOUExMUI4
MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDYWxsRWRnZVByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjNCN0UyMjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxFZGdlUHJvZmlsZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyMzE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVk
Z2VQcm9maWxlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxs
RWRnZVByb2ZpbGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGM0I3
RTI0MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsVmFyaWFudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGM0I3RTI1MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsVmFyaWFudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjNCN0UyQzE5QTEyQUFFMDBEOUJDNTYgLyogQ2FsbEVkZ2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbEVkZ2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNEMEJCQTE5NEE0MTQzMDBGQzlDRjkgLyogQ29u
c3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDb25zdGFudFN0cnVjdHVyZUNoZWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEYzRDBCQkIxOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2su
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RhbnRTdHJ1Y3R1cmVDaGVj
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFG
OEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBW
YWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MTQ0LDExICs1
MTU4LDE4IEBACiAJCQkJMEY2NjZFQkUxODM1NjZGOTAwRDAxN0YxIC8qIEJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpc0lubGluZXMuaCAqLywKIAkJCQkwRjg4NUUxMDE4NDlBM0JFMDBGMUUzRkEgLyog
Qnl0ZWNvZGVVc2VEZWYuaCAqLywKIAkJCQkwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlW
YWxJbmZvLmggKi8sCisJCQkJMEYzQjdFMkMxOUExMkFBRTAwRDlCQzU2IC8qIENhbGxFZGdlLmNw
cCAqLywKKwkJCQkwRjNCN0UyMDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2UuaCAqLywKKwkJ
CQkwRjNCN0UyMTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmNwcCAqLywKKwkJ
CQkwRjNCN0UyMjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmggKi8sCisJCQkJ
MEYzQjdFMjMxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZUlubGluZXMuaCAqLywK
IAkJCQkwRjBCODNBRTE0QkNGNzE0MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmNwcCAqLywKIAkJ
CQkwRjBCODNBRjE0QkNGNzE0MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmggKi8sCiAJCQkJMEY5
MzMyOTMxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmNwcCAqLywKIAkJCQkwRjkz
MzI5NDE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuaCAqLywKIAkJCQkwRjBCODNC
ODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAq
LywKKwkJCQkwRjNCN0UyNDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuY3BwICovLAor
CQkJCTBGM0I3RTI1MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5oICovLAogCQkJCTk2
OUEwNzkwMEVEMUQzQUUwMEYxRjY4MSAvKiBDb2RlQmxvY2suY3BwICovLAogCQkJCTk2OUEwNzkx
MEVEMUQzQUUwMEYxRjY4MSAvKiBDb2RlQmxvY2suaCAqLywKIAkJCQkwRjhGOTQzRDE2Njc2MzJE
MDBENjE5NzEgLyogQ29kZUJsb2NrSGFzaC5jcHAgKi8sCkBAIC01ODc3LDYgKzU4OTgsNyBAQAog
CQkJCTBGRkZDOTVBMTRFRjkwQTkwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYyRkM3NzMxNkUxMkY3NDAwMzhEOTc2IC8qIERGR0RDRVBoYXNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjhGMkI5QTE3MkYwNTAxMDA3REJEQTUgLyogREZHRGVzaXJlZElkZW50
aWZpZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjNCN0UyODE5QTExQjgwMDBEOUJDNTYgLyog
Q2FsbEVkZ2VQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkMwRjdDRTE3QkJGQzVCMDA0
NjRGRTQgLyogREZHRGVzaXJlZFRyYW5zaXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU4
NTM0QzE3MjNDREE1MDBCNjE4RjUgLyogREZHRGVzaXJlZFdhdGNocG9pbnRzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDMjk4MUZEOTE3QkFFRTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZl
cmVuY2VzLmggaW4gSGVhZGVycyAqLywKQEAgLTYxNDYsNiArNjE2OCw3IEBACiAJCQkJMEY3NjZE
MzExNUFBODExMjAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjc2NkQyQzE1QThDQzNBMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0QzUyNDJCMEY1MzU1RTkwMEJBM0QwNCAvKiBKSVRTdHVicy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEYzQjdFMkIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRUY2ODM1RTE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1YnNB
Uk0uaCBpbiBIZWFkZXJzICovLAogCQkJCUZFRjY4MzVGMTc0MzQzQ0MwMEEzMkUyNSAvKiBKSVRT
dHVic0FSTXY3LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUY2ODM2MTE3NDM0M0NDMDBBMzJFMjUg
LyogSklUU3R1YnNYODYuaCBpbiBIZWFkZXJzICovLApAQCAtNjE1Nyw2ICs2MTgwLDcgQEAKIAkJ
CQlBNzZGNTRBMzEzQjI4QUFCMDBFRjJCQ0UgLyogSklUV3JpdGVCYXJyaWVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzE4QzQxNjBFMTZGNUNEMDBCMzQ0NjAgLyogSlNBY3RpdmF0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NDA0ODAxMzEwMjFBMUQ5MDA4RTdGMDEgLyogSlNBUElWYWx1ZVdy
YXBwZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGM0I3RTI5MTlBMTFCODAwMEQ5QkM1NiAvKiBD
YWxsRWRnZVByb2ZpbGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkNGMzlDMjE2RTE1
QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NzYxNDBEMjE4Mjk4MkNCMDA3NTA2MjQgLyogSlNBcmd1bWVudHNJdGVyYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEM0MTcwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQXJyYXkuaCBpbiBIZWFk
ZXJzICovLApAQCAtNjQ3MSw2ICs2NDk1LDcgQEAKIAkJCQlFNDlEQzE2QzEyRUYyOTRFMDAxODRB
MUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ5REMxNkQx
MkVGMjk1MzAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkI3RjM5RTE1RUQ4RTQ2MDBGMTY3QjIgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEYzQjdFMjYxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzM4NjU1NDExODY5N0I0MDA1NDAyNzkgLyogU3BlY2lh
bGl6ZWRUaHVua0pJVC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NTQxQjIxNjEzQzFGQjAwQ0Uz
RTI1IC8qIFNwZWNpYWxQb2ludGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4MkU1NDE0MURB
RUVFMDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtNzMyNCw2
ICs3MzQ5LDcgQEAKIAkJCQkwRjIzNUJENTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3Vt
ZW50Rm9yT3BlcmFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJEODE3MTc4RTFDMDA2
OTBDN0YgLyogRlRMRXhpdFRodW5rR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MjM1QkRBMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMEYzQjdFMjcxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBN0YyOTk2QjE3QTBCQjY3MDAxMDQxN0EgLyogRlRMRmFpbC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkQ4QTMxOTE3RDUxRjIyMDBDQTJDNDAgLyogRlRMRm9yT1NS
RW50cnlKSVRDb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjVGMUFGMTgxNjM1RjMwMDUy
MkYzOSAvKiBGVExJbmxpbmVDYWNoZVNpemUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03NTEwLDYg
Kzc1MzYsNyBAQAogCQkJCTBGNDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAvKiBMTEludERhdGEuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzOEIwMTExN0NGMDc4MDAwQjE0NEQzIC8qIExMSW50RW50
cnlwb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIg
LyogTExJbnRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGM0I3RTJEMTlBMTJB
QUUwMEQ5QkM1NiAvKiBDYWxsRWRnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ2ODBBNDE0
QkE3RjhEMDBCRkUyNzIgLyogTExJbnRTbG93UGF0aHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGQ0VGQUNEMTgwNUU3NTUwMDQ3MkNFNCAvKiBMTFZNQVBJLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtNzY3MCw2ICs3Njk3LDcgQEAKIAkJCQkxNEU4NEZBMDE0RUUxQUNDMDBENkQ1RDQg
LyogV2Vha1NldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyQTRFQzkwQjE4NjBENkMyMDA5NEY3
ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzgxNTBC
MTQwNDNDMEUwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTBGM0I3RTJBMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBN0U1QUIzQTE3OTlFNEIyMDBEMjgzM0QgLyogWDg2RGlzYXNzZW1ibGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2M0M2RDlDMTUyMTExMUEwMDU4NUU0RSAvKiBZYXJy
Q2Fub25pY2FsaXplVUNTMi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI4NDEyREJBMzM3
MDBBOUZFN0IgLyogWWFyckludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDYWxsRWRnZS5oIgor
CituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBDYWxsRWRnZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdAoreworICAgIG91dC5wcmludCgiPCIsIG1fY2FsbGVlLCAiLCBjb3VudDogIiwgbV9j
b3VudCwgIj4iKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIENhbGxFZGdlX2gKKyNkZWZpbmUgQ2FsbEVkZ2VfaAorCisjaW5jbHVkZSAiQ2FsbFZh
cmlhbnQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3R5cGVkZWYgdWludDE2X3QgQ2FsbEVkZ2VD
b3VudFR5cGU7CisKK2NsYXNzIENhbGxFZGdlIHsKK3B1YmxpYzoKKyAgICBDYWxsRWRnZSgpOwor
ICAgIENhbGxFZGdlKENhbGxWYXJpYW50IGNhbGxlZSwgQ2FsbEVkZ2VDb3VudFR5cGUgY291bnQp
OworICAgIAorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fY2FsbGVlOyB9
CisgICAgCisgICAgQ2FsbFZhcmlhbnQgY2FsbGVlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsZWU7
IH0KKyAgICBDYWxsRWRnZUNvdW50VHlwZSBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnQ7
IH0KKyAgICAKKyAgICBDYWxsRWRnZSBkZXNwZWNpZmllZENsb3N1cmUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIENhbGxFZGdlKG1fY2FsbGVlLmRlc3BlY2lmaWVkQ2xvc3VyZSgpLCBt
X2NvdW50KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7
CisgICAgCitwdWJsaWM6CisgICAgQ2FsbFZhcmlhbnQgbV9jYWxsZWU7CisgICAgQ2FsbEVkZ2VD
b3VudFR5cGUgbV9jb3VudDsKK307CisKK2lubGluZSBDYWxsRWRnZTo6Q2FsbEVkZ2UoQ2FsbFZh
cmlhbnQgY2FsbGVlLCBDYWxsRWRnZUNvdW50VHlwZSBjb3VudCkKKyAgICA6IG1fY2FsbGVlKGNh
bGxlZSkKKyAgICAsIG1fY291bnQoY291bnQpCit7Cit9CisKK2lubGluZSBDYWxsRWRnZTo6Q2Fs
bEVkZ2UoKQorICAgIDogQ2FsbEVkZ2UoQ2FsbFZhcmlhbnQoKSwgMCkKK3sKK30KKwordHlwZWRl
ZiBWZWN0b3I8Q2FsbEVkZ2UsIDE+IENhbGxFZGdlTGlzdDsKKworfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBDYWxsRWRnZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwzNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNhbGxFZGdlUHJv
ZmlsZS5oIgorCisjaW5jbHVkZSAiQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oIgorI2luY2x1ZGUg
IkNDYWxsSGVscGVycy5oIgorI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitDYWxsRWRnZUxpc3QgQ2FsbEVkZ2VQ
cm9maWxlOjpjYWxsRWRnZXMoKSBjb25zdAoreworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9j
a2VyKG1fbG9jayk7CisgICAgCisgICAgQ2FsbEVkZ2VMaXN0IHJlc3VsdDsKKyAgICAKKyAgICBD
YWxsVmFyaWFudCBwcmltYXJ5Q2FsbGVlID0gbV9wcmltYXJ5Q2FsbGVlOworICAgIGZsb2F0IG51
bUNhbGxzVG9QcmltYXJ5ID0gbV9udW1DYWxsc1RvUHJpbWFyeTsKKyAgICAvLyBEZWZlbmQgYWdh
aW5zdCByYWNlcy4gVGhlc2UgZmllbGRzIGFyZSBtb2RpZmllZCBieSB0aGUgbG9nIHByb2Nlc3Nv
ciB3aXRob3V0IGxvY2tpbmcuCisgICAgaWYgKCEhcHJpbWFyeUNhbGxlZSAmJiBudW1DYWxsc1Rv
UHJpbWFyeSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZChDYWxsRWRnZShwcmltYXJ5Q2FsbGVlLCBu
dW1DYWxsc1RvUHJpbWFyeSkpOworICAgIAorICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhhdCBpZiB0aGUgcHJpbWFyeSB0aHJlYWQgaGFkIGp1c3QgY3Jl
YXRlZCBhIG1fb3RoZXJDYWxsZXMgd2hpbGUgbG9nCisgICAgICAgIC8vIHByb2Nlc3NpbmcsIHdl
IHNlZSBhIGNvbnNpc3RlbnRseSBjcmVhdGVkIG9uZS4gVGhlIGxvY2sgYmVpbmcgaGVsZCBpcyBp
bnN1ZmZpY2llbnQgZm9yCisgICAgICAgIC8vIHRoaXMsIHNpbmNlIHRoZSBsb2cgcHJvY2Vzc29y
IHdpbGwgb25seSBncmFiIHRoZSBsb2NrIHdoZW4gbWVyZ2luZyB0aGUgc2Vjb25kYXJ5CisgICAg
ICAgIC8vIHNwZWN0cnVtIGludG8gdGhlIHByaW1hcnkgb25lIGJ1dCBtYXkgc3RpbGwgY3JlYXRl
IHRoZSBkYXRhIHN0cnVjdHVyZSB3aXRob3V0IGhvbGRpbmcKKyAgICAgICAgLy8gbG9ja3MuCisg
ICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOworICAgICAgICBmb3IgKENhbGxFZGdlIGVudHJ5
IDogbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkKSB7CisgICAgICAgICAgICAvLyBEZWZlbmQg
YWdhaW5zdCB0aGUgcG9zc2liaWxpdHkgdGhhdCB0aGUgcHJpbWFyeSBkdXBsaWNhdGVzIGFuIGVu
dHJ5IGluIHRoZSBzZWNvbmRhcnkKKyAgICAgICAgICAgIC8vIHNwZWN0cnVtLiBUaGF0IGNhbiBo
YXBwZW4gd2hlbiB0aGUgR0MgcmVtb3ZlcyB0aGUgcHJpbWFyeS4gV2UgY291bGQgaGF2ZSB0aGUg
R0MgZml4CisgICAgICAgICAgICAvLyB0aGUgc2l0dWF0aW9uIGJ5IGNoYW5naW5nIHRoZSBwcmlt
YXJ5IHRvIGJlIHNvbWV0aGluZyBmcm9tIHRoZSBzZWNvbmRhcnkgc3BlY3RydW0sCisgICAgICAg
ICAgICAvLyBidXQgdGhpcyBmaXggc2VlbXMgc2ltcGxlciB0byBpbXBsZW1lbnQgYW5kIGFsc28g
Y2hlYXBlci4KKyAgICAgICAgICAgIGlmIChlbnRyeS5jYWxsZWUoKSA9PSByZXN1bHRbMF0uY2Fs
bGVlKCkpIHsKKyAgICAgICAgICAgICAgICByZXN1bHRbMF0gPSBDYWxsRWRnZShyZXN1bHRbMF0u
Y2FsbGVlKCksIGVudHJ5LmNvdW50KCkgKyByZXN1bHRbMF0uY291bnQoKSk7CisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoZW50cnkpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHN0ZDo6
c29ydChyZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpLCBbXSAoY29uc3QgQ2FsbEVkZ2UmIGEs
IGNvbnN0IENhbGxFZGdlJiBiKSAtPiBib29sIHsKKyAgICAgICAgICAgIHJldHVybiBhLmNvdW50
KCkgPiBiLmNvdW50KCk7CisgICAgICAgIH0pOworICAgIAorICAgIGlmIChyZXN1bHQuc2l6ZSgp
ID49IDIpCisgICAgICAgIEFTU0VSVChyZXN1bHRbMF0uY291bnQoKSA+PSByZXN1bHQubGFzdCgp
LmNvdW50KCkpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0NhbGxFZGdlQ291bnRU
eXBlIENhbGxFZGdlUHJvZmlsZTo6bnVtQ2FsbHNUb0tub3duQ2VsbHMoKSBjb25zdAoreworICAg
IENhbGxFZGdlQ291bnRUeXBlIHJlc3VsdCA9IDA7CisgICAgZm9yIChDYWxsRWRnZSBlZGdlIDog
Y2FsbEVkZ2VzKCkpCisgICAgICAgIHJlc3VsdCArPSBlZGdlLmNvdW50KCk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworc3RhdGljIGJvb2wgd29ydGhEZXNwZWNpZnlpbmcoY29uc3QgQ2FsbFZh
cmlhbnQmIHZhcmlhbnQpCit7CisgICAgcmV0dXJuICFIZWFwOjppc01hcmtlZCh2YXJpYW50LnJh
d0NhbGxlZUNlbGwoKSkKKyAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQodmFyaWFudC5kZXNwZWNp
ZmllZENsb3N1cmUoKS5yYXdDYWxsZWVDZWxsKCkpOworfQorCitib29sIENhbGxFZGdlUHJvZmls
ZTo6d29ydGhEZXNwZWNpZnlpbmcoKQoreworICAgIGlmIChtX2Nsb3N1cmVzQXJlRGVzcGVjaWZp
ZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoISFtX3ByaW1hcnlDYWxs
ZWUgJiYgIUpTQzo6d29ydGhEZXNwZWNpZnlpbmcobV9wcmltYXJ5Q2FsbGVlKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpLS07
KSB7CisgICAgICAgICAgICBpZiAoIUpTQzo6d29ydGhEZXNwZWNpZnlpbmcobV9vdGhlckNhbGxl
ZXMtPm1fcHJvY2Vzc2VkW2ldLmNhbGxlZSgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
Q2FsbEVkZ2VQcm9maWxlOjp2aXNpdFdlYWsoKQoreworICAgIGlmICghbV9wcmltYXJ5Q2FsbGVl
ICYmICFtX290aGVyQ2FsbGVlcykKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIENvbmN1cnJl
bnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCisgICAgLy8gU2VlIGlmIGFueXRoaW5n
IGlzIGRlYWQgYW5kIGlmIHRoYXQgY2FuIGJlIHJlY3RpZmllZCBieSBkZXNwZWNpZnlpbmcuCisg
ICAgaWYgKHdvcnRoRGVzcGVjaWZ5aW5nKCkpIHsKKyAgICAgICAgQ2FsbFNwZWN0cnVtIG5ld1Nw
ZWN0cnVtOworICAgICAgICAKKyAgICAgICAgaWYgKCEhbV9wcmltYXJ5Q2FsbGVlKQorICAgICAg
ICAgICAgbmV3U3BlY3RydW0uYWRkKG1fcHJpbWFyeUNhbGxlZS5kZXNwZWNpZmllZENsb3N1cmUo
KSwgbV9udW1DYWxsc1RvUHJpbWFyeSk7CisgICAgICAgIAorICAgICAgICBpZiAobV9vdGhlckNh
bGxlZXMpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fb3RoZXJDYWxsZWVzLT5t
X3Byb2Nlc3NlZC5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICBuZXdTcGVjdHJ1bS5h
ZGQoCisgICAgICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5j
YWxsZWUoKS5kZXNwZWNpZmllZENsb3N1cmUoKSwKKyAgICAgICAgICAgICAgICAgICAgbV9vdGhl
ckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNvdW50KCkpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIFZlY3RvcjxDYWxsU3Bl
Y3RydW06OktleUFuZENvdW50PiBsaXN0ID0gbmV3U3BlY3RydW0uYnVpbGRMaXN0KCk7CisgICAg
ICAgIEFTU0VSVChsaXN0LnNpemUoKSk7CisgICAgICAgIG1fcHJpbWFyeUNhbGxlZSA9IGxpc3Qu
bGFzdCgpLmtleTsKKyAgICAgICAgbV9udW1DYWxsc1RvUHJpbWFyeSA9IGxpc3QubGFzdCgpLmNv
dW50OworICAgICAgICAKKyAgICAgICAgQVNTRVJUKCEhbV9vdGhlckNhbGxlZXMgPT0gKGxpc3Qu
c2l6ZSgpID49IDIpKTsKKyAgICAgICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgICAg
ICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuY2xlYXIoKTsKKyAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IGxpc3Quc2l6ZSgpIC0gMTsgaS0tOykKKyAgICAgICAgICAgICAgICBtX290
aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuYXBwZW5kKENhbGxFZGdlKGxpc3RbaV0ua2V5LCBsaXN0
W2ldLmNvdW50KSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG1fY2xvc3VyZXNBcmVE
ZXNwZWNpZmllZCA9IHRydWU7CisgICAgICAgIAorICAgICAgICByZXR1cm47CisgICAgfQorICAg
IAorICAgIGlmICghIW1fcHJpbWFyeUNhbGxlZSAmJiAhSGVhcDo6aXNNYXJrZWQobV9wcmltYXJ5
Q2FsbGVlLnJhd0NhbGxlZUNlbGwoKSkpIHsKKyAgICAgICAgbV9udW1DYWxsc1RvVW5rbm93bkNl
bGwgKz0gbV9udW1DYWxsc1RvUHJpbWFyeTsKKyAgICAgICAgCisgICAgICAgIG1fcHJpbWFyeUNh
bGxlZSA9IENhbGxWYXJpYW50KCk7CisgICAgICAgIG1fbnVtQ2FsbHNUb1ByaW1hcnkgPSAwOwor
ICAgIH0KKyAgICAKKyAgICBpZiAobV9vdGhlckNhbGxlZXMpIHsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5zaXplKCk7IGkrKykg
eworICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nl
c3NlZFtpXS5jYWxsZWUoKS5yYXdDYWxsZWVDZWxsKCkpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBtX251bUNhbGxzVG9Vbmtub3duQ2VsbCAr
PSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQoKTsKKyAgICAgICAgICAgIG1f
b3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpLS1dID0gbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vz
c2VkLmxhc3QoKTsKKyAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5yZW1v
dmVMYXN0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIE9ubHkgZXhpc3RzIHdo
aWxlIHdlIGFyZSBwcm9jZXNzaW5nIHRoZSBsb2cuCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFt
X290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSk7CisgICAgfQorfQorCit2b2lkIENh
bGxFZGdlUHJvZmlsZTo6YWRkU2xvdyhDYWxsVmFyaWFudCBjYWxsZWUsIENhbGxFZGdlUHJvZmls
ZVZlY3RvciYgbWVyZ2VCYWNrTG9nKQoreworICAgIC8vIFRoaXMgZXhpc3RzIHRvIGhhbmRsZSBj
YXNlcyB3aGVyZSB0aGUgc3BlY3RydW0gd2Fzbid0IGNyZWF0ZWQgeWV0LCBvciB3ZSdyZSBzdG9y
aW5nIHRvIGEKKyAgICAvLyBwYXJ0aWN1bGFyIHNwZWN0cnVtIGZvciB0aGUgZmlyc3QgdGltZSBk
dXJpbmcgYSBsb2cgcHJvY2Vzc2luZyBpdGVyYXRpb24uCisgICAgCisgICAgaWYgKCFtX290aGVy
Q2FsbGVlcykgeworICAgICAgICBtX290aGVyQ2FsbGVlcyA9IHN0ZDo6bWFrZV91bmlxdWU8U2Vj
b25kYXJ5PigpOworICAgICAgICAvLyBJZiBhIGNvbXBpbGVyIHRocmVhZCBub3RpY2VzIHRoZSBt
X290aGVyQ2FsbGVlcyBiZWluZyBub24tbnVsbCwgd2Ugd2FudCB0byBtYWtlIHN1cmUKKyAgICAg
ICAgLy8gdGhhdCBpdCBzZWVzIGEgZnVsbHkgY3JlYXRlZCBvbmUuCisgICAgICAgIFdURjo6c3Rv
cmVTdG9yZUZlbmNlKCk7CisgICAgfQorICAgIAorICAgIGlmICghbV9vdGhlckNhbGxlZXMtPm1f
dGVtcG9yYXJ5U3BlY3RydW0pIHsKKyAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5
U3BlY3RydW0gPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxTcGVjdHJ1bT4oKTsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLnNpemUoKTsgaS0tOykg
eworICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0tPmFkZCgK
KyAgICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCks
CisgICAgICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNvdW50KCkp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgdGhpcyBp
cyB0aGUgZmlyc3QgdGltZSB3ZSdyZSBzZWVpbmcgdGhpcyBwcm9maWxlIGR1cmluZyB0aGlzIGxv
ZworICAgICAgICAvLyBwcm9jZXNzaW5nIGl0ZXJhdGlvbi4KKyAgICAgICAgbWVyZ2VCYWNrTG9n
LmFwcGVuZCh0aGlzKTsKKyAgICB9CisgICAgCisgICAgbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9y
YXJ5U3BlY3RydW0tPmFkZChjYWxsZWUpOworfQorCit2b2lkIENhbGxFZGdlUHJvZmlsZTo6bWVy
Z2VCYWNrKCkKK3sKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAg
IAorICAgIEFTU0VSVChtX290aGVyQ2FsbGVlcyk7CisgICAgQVNTRVJUKG1fb3RoZXJDYWxsZWVz
LT5tX3RlbXBvcmFyeVNwZWN0cnVtKTsKKyAgICAKKyAgICBpZiAoISFtX3ByaW1hcnlDYWxsZWUp
CisgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5hZGQobV9wcmlt
YXJ5Q2FsbGVlLCBtX251bUNhbGxzVG9QcmltYXJ5KTsKKyAgICAKKyAgICBpZiAoIW1fY2xvc3Vy
ZXNBcmVEZXNwZWNpZmllZCkgeworICAgICAgICBDYWxsU3BlY3RydW0gbmV3U3BlY3RydW07Cisg
ICAgICAgIGZvciAoYXV0byBlbnRyeSA6ICptX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVj
dHJ1bSkKKyAgICAgICAgICAgIG5ld1NwZWN0cnVtLmFkZChlbnRyeS5rZXkuZGVzcGVjaWZpZWRD
bG9zdXJlKCksIGVudHJ5LnZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChuZXdTcGVjdHJ1
bS5zaXplKCkgPCBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+c2l6ZSgpKSB7
CisgICAgICAgICAgICAqbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0gPSBuZXdT
cGVjdHJ1bTsKKyAgICAgICAgICAgIG1fY2xvc3VyZXNBcmVEZXNwZWNpZmllZCA9IHRydWU7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgCisgICAgVmVjdG9yPENhbGxTcGVjdHJ1bTo6S2V5QW5kQ291
bnQ+IGxpc3QgPSBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+YnVpbGRMaXN0
KCk7CisgICAgbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0gPSBudWxscHRyOwor
ICAgIAorICAgIG1fcHJpbWFyeUNhbGxlZSA9IGxpc3QubGFzdCgpLmtleTsKKyAgICBtX251bUNh
bGxzVG9QcmltYXJ5ID0gbGlzdC5sYXN0KCkuY291bnQ7CisgICAgbGlzdC5yZW1vdmVMYXN0KCk7
CisgICAgCisgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLmNsZWFyKCk7CisgICAgZm9y
ICh1bnNpZ25lZCBjb3VudCA9IG1heEtub3duQ2FsbGVlczsgY291bnQtLSAmJiAhbGlzdC5pc0Vt
cHR5KCk7KSB7CisgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5hcHBlbmQoQ2Fs
bEVkZ2UobGlzdC5sYXN0KCkua2V5LCBsaXN0Lmxhc3QoKS5jb3VudCkpOworICAgICAgICBsaXN0
LnJlbW92ZUxhc3QoKTsKKyAgICB9CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gbGlzdC5z
aXplKCk7IGktLTspCisgICAgICAgIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxsICs9IGxpc3RbaV0u
Y291bnQ7Cit9CisKK3ZvaWQgQ2FsbEVkZ2VQcm9maWxlOjpmYWRlQnlIYWxmKCkKK3sKKyAgICBt
X251bUNhbGxzVG9QcmltYXJ5ID4+PSAxOworICAgIG1fbnVtQ2FsbHNUb05vdENlbGwgPj49IDE7
CisgICAgbV9udW1DYWxsc1RvVW5rbm93bkNlbGwgPj49IDE7CisgICAgbV90b3RhbENvdW50ID4+
PSAxOworICAgIAorICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpLS07KSB7CisgICAg
ICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0gPSBDYWxsRWRnZSgKKyAgICAg
ICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCksCisgICAg
ICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNvdW50KCkgPj4gMSk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChtX290aGVyQ2FsbGVlcy0+bV90ZW1w
b3JhcnlTcGVjdHJ1bSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGVudHJ5IDogKm1fb3RoZXJD
YWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtKQorICAgICAgICAgICAgICAgIGVudHJ5LnZhbHVl
ID4+PSAxOworICAgICAgICB9CisgICAgfQorfQorCitDYWxsRWRnZUxvZzo6Q2FsbEVkZ2VMb2co
KQorICAgIDogbV9zY2FsZWRMb2dJbmRleChsb2dTaXplICogc2l6ZW9mKEVudHJ5KSkKK3sKKyAg
ICBBU1NFUlQoIShtX3NjYWxlZExvZ0luZGV4ICUgc2l6ZW9mKEVudHJ5KSkpOworfQorCitDYWxs
RWRnZUxvZzo6fkNhbGxFZGdlTG9nKCkgeyB9CisKK2Jvb2wgQ2FsbEVkZ2VMb2c6OmlzRW5hYmxl
ZCgpCit7CisgICAgcmV0dXJuIE9wdGlvbnM6OmVuYWJsZUNhbGxFZGdlUHJvZmlsaW5nKCkgJiYg
T3B0aW9uczo6dXNlRlRMSklUKCk7Cit9CisKKyNpZiBFTkFCTEUoSklUKQorCitleHRlcm4gIkMi
IEpJVF9PUEVSQVRJT04gdm9pZCBvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2coQ2FsbEVkZ2VM
b2cqKSBXVEZfSU5URVJOQUw7CitleHRlcm4gIkMiIEpJVF9PUEVSQVRJT04gdm9pZCBvcGVyYXRp
b25Qcm9jZXNzQ2FsbEVkZ2VMb2coQ2FsbEVkZ2VMb2cqIGxvZykKK3sKKyAgICBsb2ctPnByb2Nl
c3NMb2coKTsKK30KKwordm9pZCBDYWxsRWRnZUxvZzo6ZW1pdExvZ0NvZGUoQ0NhbGxIZWxwZXJz
JiBqaXQsIENhbGxFZGdlUHJvZmlsZSYgcHJvZmlsZSwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncykK
K3sKKyAgICBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50cyA9IDE7CisgICAgCisgICAg
R1BSUmVnIHNjcmF0Y2hHUFI7CisgICAgaWYgKCFjYWxsZWVSZWdzLnVzZXMoR1BSSW5mbzo6cmVn
VDApKQorICAgICAgICBzY3JhdGNoR1BSID0gR1BSSW5mbzo6cmVnVDA7CisgICAgZWxzZSBpZiAo
IWNhbGxlZVJlZ3MudXNlcyhHUFJJbmZvOjpyZWdUMSkpCisgICAgICAgIHNjcmF0Y2hHUFIgPSBH
UFJJbmZvOjpyZWdUMTsKKyAgICBlbHNlCisgICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJbmZvOjpy
ZWdUMjsKKyAgICAKKyAgICBqaXQubG9hZDMyKCZtX3NjYWxlZExvZ0luZGV4LCBzY3JhdGNoR1BS
KTsKKyAgICAKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgb2sgPSBqaXQuYnJhbmNoVGVzdDMyKEND
YWxsSGVscGVyczo6Tm9uWmVybywgc2NyYXRjaEdQUik7CisgICAgCisgICAgQVNTRVJUKHN0YWNr
QWxpZ25tZW50UmVnaXN0ZXJzKCkgPj0gMSArIG51bWJlck9mQXJndW1lbnRzKTsKKyAgICAKKyAg
ICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHN0YWNrQWxpZ25tZW50Qnl0
ZXMoKSksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIAorICAgIGpp
dC5zdG9yZVZhbHVlKGNhbGxlZVJlZ3MsIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBl
cnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzaXplb2YoSlNWYWx1ZSkpKTsKKyAgICBqaXQuc2V0
dXBBcmd1bWVudHMoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRoaXMpKTsKKyAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihvcGVy
YXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2cpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgaml0
LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgaml0LmxvYWRWYWx1ZShDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2l6ZW9mKEpT
VmFsdWUpKSwgY2FsbGVlUmVncyk7CisgICAgCisgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihzdGFja0FsaWdubWVudEJ5dGVzKCkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKKyAgICAKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihsb2dTaXplICogc2l6ZW9mKEVudHJ5KSksIHNjcmF0Y2hHUFIpOworICAgIG9rLmxp
bmsoJmppdCk7CisKKyAgICBqaXQuc3ViMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2l6
ZW9mKEVudHJ5KSksIHNjcmF0Y2hHUFIpOworICAgIGppdC5zdG9yZTMyKHNjcmF0Y2hHUFIsICZt
X3NjYWxlZExvZ0luZGV4KTsKKyAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihtX2xvZyksIHNjcmF0Y2hHUFIpOworICAgIGppdC5zdG9yZVZhbHVlKGNhbGxlZVJlZ3Ms
IENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW50cnks
IG1fdmFsdWUpKSk7CisgICAgaml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cigmcHJvZmlsZSksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZG
U0VUT0YoRW50cnksIG1fcHJvZmlsZSkpKTsKK30KKwordm9pZCBDYWxsRWRnZUxvZzo6ZW1pdExv
Z0NvZGUoCisgICAgQ0NhbGxIZWxwZXJzJiBqaXQsIE93blB0cjxDYWxsRWRnZVByb2ZpbGU+JiBw
cm9maWxlUG9pbnRlciwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncykKK3sKKyAgICBpZiAoIWlzRW5h
YmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgcHJvZmlsZVBvaW50ZXIuY3JlYXRl
VHJhbnNhY3Rpb25hbGx5KCk7CisgICAgZW1pdExvZ0NvZGUoaml0LCAqcHJvZmlsZVBvaW50ZXIs
IGNhbGxlZVJlZ3MpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKwordm9pZCBDYWxsRWRn
ZUxvZzo6cHJvY2Vzc0xvZygpCit7CisgICAgQVNTRVJUKCEobV9zY2FsZWRMb2dJbmRleCAlIHNp
emVvZihFbnRyeSkpKTsKKyAgICAKKyAgICBDYWxsRWRnZVByb2ZpbGVWZWN0b3IgbWVyZ2VCYWNr
TG9nOworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IG1fc2NhbGVkTG9nSW5kZXggLyBzaXpl
b2YoRW50cnkpOyBpIDwgbG9nU2l6ZTsgKytpKQorICAgICAgICBtX2xvZ1tpXS5tX3Byb2ZpbGUt
PmFkZChtX2xvZ1tpXS5tX3ZhbHVlLCBtZXJnZUJhY2tMb2cpOworICAgIAorICAgIG1fc2NhbGVk
TG9nSW5kZXggPSBsb2dTaXplICogc2l6ZW9mKEVudHJ5KTsKKyAgICAKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSBtZXJnZUJhY2tMb2cuc2l6ZSgpOyBpLS07KQorICAgICAgICBtZXJnZUJhY2tMb2db
aV0tPm1lcmdlQmFjaygpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENhbGxFZGdlUHJvZmlsZV9oCisjZGVm
aW5lIENhbGxFZGdlUHJvZmlsZV9oCisKKyNpbmNsdWRlICJDYWxsRWRnZS5oIgorI2luY2x1ZGUg
IkNhbGxWYXJpYW50LmgiCisjaW5jbHVkZSAiQ29uY3VycmVudEpJVExvY2suaCIKKyNpbmNsdWRl
ICJKU0NlbGwuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBDQ2FsbEhlbHBlcnM7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKK2Ns
YXNzIENhbGxFZGdlTG9nOworY2xhc3MgQ2FsbEVkZ2VQcm9maWxlOwordHlwZWRlZiBWZWN0b3I8
Q2FsbEVkZ2VQcm9maWxlKiwgMTA+IENhbGxFZGdlUHJvZmlsZVZlY3RvcjsKKworY2xhc3MgQ2Fs
bEVkZ2VQcm9maWxlIHsKK3B1YmxpYzoKKyAgICBDYWxsRWRnZVByb2ZpbGUoKTsKKyAgICAKKyAg
ICBDYWxsRWRnZUNvdW50VHlwZSBudW1DYWxsc1RvTm90Q2VsbCgpIGNvbnN0IHsgcmV0dXJuIG1f
bnVtQ2FsbHNUb05vdENlbGw7IH0KKyAgICBDYWxsRWRnZUNvdW50VHlwZSBudW1DYWxsc1RvVW5r
bm93bkNlbGwoKSBjb25zdCB7IHJldHVybiBtX251bUNhbGxzVG9Vbmtub3duQ2VsbDsgfQorICAg
IENhbGxFZGdlQ291bnRUeXBlIG51bUNhbGxzVG9Lbm93bkNlbGxzKCkgY29uc3Q7CisgICAgCisg
ICAgLy8gQ2FsbCB3aGlsZSBob2xkaW5nIHRoZSBvd25pbmcgQ29kZUJsb2NrJ3MgbG9jay4KKyAg
ICBDYWxsRWRnZUxpc3QgY2FsbEVkZ2VzKCkgY29uc3Q7CisgICAgCisgICAgdm9pZCB2aXNpdFdl
YWsoKTsKKyAgICAKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIENhbGxFZGdlTG9nOworICAg
IAorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhLbm93bkNhbGxlZXMgPSA1OworICAgIAor
ICAgIHZvaWQgYWRkKEpTVmFsdWUsIENhbGxFZGdlUHJvZmlsZVZlY3RvciYgbWVyZ2VCYWNrTG9n
KTsKKyAgICAKKyAgICBib29sIHdvcnRoRGVzcGVjaWZ5aW5nKCk7CisgICAgdm9pZCBhZGRTbG93
KENhbGxWYXJpYW50LCBDYWxsRWRnZVByb2ZpbGVWZWN0b3ImIG1lcmdlQmFja0xvZyk7CisgICAg
dm9pZCBtZXJnZUJhY2soKTsKKyAgICB2b2lkIGZhZGVCeUhhbGYoKTsKKyAgICAKKyAgICAvLyBJ
dCdzIGNoZWFwZXIgdG8gbGV0IHRoaXMgaGF2ZSBpdHMgb3duIGxvY2suIEl0IG5lZWRzIHRvIGJl
IGFibGUgdG8gZmluZCB3aGljaCBsb2NrIHRvCisgICAgLy8gbG9jay4gTm9ybWFsbHkgaXQgd291
bGQgbG9jayB0aGUgb3duaW5nIENvZGVCbG9jaydzIGxvY2ssIGJ1dCB0aGF0IHdvdWxkIHJlcXVp
cmUgYQorICAgIC8vIHBvaW50ZXItd2lkdGggd29yZCB0byBwb2ludCBhdCB0aGUgQ29kZUJsb2Nr
LiBIYXZpbmcgdGhlIGJ5dGUtc2l6ZWQgbG9jayBoZXJlIGlzCisgICAgLy8gY2hlYXBlci4gSG93
ZXZlciwgdGhpcyBtZWFucyB0aGF0IHRoZSByZWxhdGlvbnNoaXAgd2l0aCB0aGUgQ29kZUJsb2Nr
IGxvY2sgaXM6CisgICAgLy8gYWNxdWlyZSB0aGUgQ29kZUJsb2NrIGxvY2sgYmVmb3JlIHRoaXMg
b25lLgorICAgIG11dGFibGUgQ29uY3VycmVudEpJVExvY2sgbV9sb2NrOworICAgIAorICAgIGJv
b2wgbV9jbG9zdXJlc0FyZURlc3BlY2lmaWVkOworICAgIAorICAgIENhbGxFZGdlQ291bnRUeXBl
IG1fbnVtQ2FsbHNUb1ByaW1hcnk7CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbV9udW1DYWxsc1Rv
Tm90Q2VsbDsKKyAgICBDYWxsRWRnZUNvdW50VHlwZSBtX251bUNhbGxzVG9Vbmtub3duQ2VsbDsK
KyAgICBDYWxsRWRnZUNvdW50VHlwZSBtX3RvdGFsQ291bnQ7CisgICAgQ2FsbFZhcmlhbnQgbV9w
cmltYXJ5Q2FsbGVlOworICAgIAorICAgIHR5cGVkZWYgU3BlY3RydW08Q2FsbFZhcmlhbnQsIENh
bGxFZGdlQ291bnRUeXBlPiBDYWxsU3BlY3RydW07CisgICAgCisgICAgc3RydWN0IFNlY29uZGFy
eSB7CisgICAgICAgIFZlY3RvcjxDYWxsRWRnZT4gbV9wcm9jZXNzZWQ7IC8vIFByb2Nlc3NlZCBi
dXQgbm90IG5lY2Vzc2FyaWx5IHNvcnRlZC4KKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxT
cGVjdHJ1bT4gbV90ZW1wb3JhcnlTcGVjdHJ1bTsKKyAgICB9OworICAgIAorICAgIHN0ZDo6dW5p
cXVlX3B0cjxTZWNvbmRhcnk+IG1fb3RoZXJDYWxsZWVzOworfTsKKworY2xhc3MgQ2FsbEVkZ2VM
b2cgeworcHVibGljOgorICAgIENhbGxFZGdlTG9nKCk7CisgICAgfkNhbGxFZGdlTG9nKCk7CisK
KyAgICBzdGF0aWMgYm9vbCBpc0VuYWJsZWQoKTsKKyAgICAKKyNpZiBFTkFCTEUoSklUKQorICAg
IHZvaWQgZW1pdExvZ0NvZGUoQ0NhbGxIZWxwZXJzJiwgQ2FsbEVkZ2VQcm9maWxlJiwgSlNWYWx1
ZVJlZ3MgY2FsbGVlUmVncyk7IC8vIEFzc3VtZXMgdGhhdCBzdGFjayBpcyBhbGlnbmVkLCBhbGwg
dm9sYXRpbGUgcmVnaXN0ZXJzIC0gb3RoZXIgdGhhbiBjYWxsZWVHUFIgLSBhcmUgY2xvYmJlcmFi
bGUsIGFuZCB0aGUgcGFyYW1ldGVyIHNwYWNlIGlzIGluIHVzZS4KKyAgICAKKyAgICAvLyBTYW1l
IGFzIGFib3ZlIGJ1dCBjcmVhdGVzIGEgQ2FsbEVkZ2VQcm9maWxlIGluc3RhbmNlIGlmIG9uZSBk
aWQgbm90IGFscmVhZHkgZXhpc3QuIERvZXMKKyAgICAvLyB0aGlzIGluIGEgdGhyZWFkLXNhZmUg
bWFubmVyIGJ5IGNhbGxpbmcgT3duUHRyOjpjcmVhdGVUcmFuc2FjdGlvbmFsbHkuCisgICAgdm9p
ZCBlbWl0TG9nQ29kZShDQ2FsbEhlbHBlcnMmLCBPd25QdHI8Q2FsbEVkZ2VQcm9maWxlPiYsIEpT
VmFsdWVSZWdzIGNhbGxlZVJlZ3MpOworI2VuZGlmIC8vIEVOQUJMRShKSVQpCisgICAgCisgICAg
dm9pZCBwcm9jZXNzTG9nKCk7CisgICAgCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9nU2l6ZSA9
IDEwMDAwOworICAgIAorICAgIHN0cnVjdCBFbnRyeSB7CisgICAgICAgIEpTVmFsdWUgbV92YWx1
ZTsKKyAgICAgICAgQ2FsbEVkZ2VQcm9maWxlKiBtX3Byb2ZpbGU7CisgICAgfTsKKyAgICAKKyAg
ICB1bnNpZ25lZCBtX3NjYWxlZExvZ0luZGV4OworICAgIEVudHJ5IG1fbG9nW2xvZ1NpemVdOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDYWxsRWRnZVByb2ZpbGVfaAor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlSW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
RWRnZVByb2ZpbGVJbmxpbmVzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzX2gKKyNkZWZpbmUgQ2FsbEVkZ2VQcm9m
aWxlSW5saW5lc19oCisKKyNpbmNsdWRlICJDYWxsRWRnZVByb2ZpbGUuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2lubGluZSBDYWxsRWRnZVByb2ZpbGU6OkNhbGxFZGdlUHJvZmlsZSgpCisgICAg
OiBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQoZmFsc2UpCisgICAgLCBtX251bUNhbGxzVG9Qcmlt
YXJ5KDApCisgICAgLCBtX251bUNhbGxzVG9Ob3RDZWxsKDApCisgICAgLCBtX251bUNhbGxzVG9V
bmtub3duQ2VsbCgwKQorICAgICwgbV90b3RhbENvdW50KDApCisgICAgLCBtX3ByaW1hcnlDYWxs
ZWUobnVsbHB0cikKK3sKK30KKworQUxXQVlTX0lOTElORSB2b2lkIENhbGxFZGdlUHJvZmlsZTo6
YWRkKEpTVmFsdWUgdmFsdWUsIENhbGxFZGdlUHJvZmlsZVZlY3RvciYgbWVyZ2VCYWNrTG9nKQor
eworICAgIHVuc2lnbmVkIG5ld1RvdGFsQ291bnQgPSBtX3RvdGFsQ291bnQgKyAxOworICAgIGlm
IChVTkxJS0VMWSghbmV3VG90YWxDb3VudCkpIHsKKyAgICAgICAgZmFkZUJ5SGFsZigpOyAvLyBU
YWNrbGUgb3ZlcmZsb3dzIGJ5IGRpdmlkaW5nIGFsbCBjb3VudHMgYnkgdHdvLgorICAgICAgICBu
ZXdUb3RhbENvdW50ID0gbV90b3RhbENvdW50ICsgMTsKKyAgICB9CisgICAgQVNTRVJUKG5ld1Rv
dGFsQ291bnQpOworICAgIG1fdG90YWxDb3VudCA9IG5ld1RvdGFsQ291bnQ7CisgICAgCisgICAg
aWYgKFVOTElLRUxZKCF2YWx1ZS5pc0NlbGwoKSkpIHsKKyAgICAgICAgbV9udW1DYWxsc1RvTm90
Q2VsbCsrOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ2FsbFZhcmlhbnQgY2FsbGVl
ID0gQ2FsbFZhcmlhbnQodmFsdWUuYXNDZWxsKCkpOworICAgIAorICAgIGlmIChtX2Nsb3N1cmVz
QXJlRGVzcGVjaWZpZWQpCisgICAgICAgIGNhbGxlZSA9IGNhbGxlZS5kZXNwZWNpZmllZENsb3N1
cmUoKTsKKyAgICAKKyAgICBpZiAoVU5MSUtFTFkoIW1fcHJpbWFyeUNhbGxlZSkpIHsKKyAgICAg
ICAgbV9wcmltYXJ5Q2FsbGVlID0gY2FsbGVlOworICAgICAgICBtX251bUNhbGxzVG9QcmltYXJ5
ID0gMTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAgaWYgKExJS0VMWSht
X3ByaW1hcnlDYWxsZWUgPT0gY2FsbGVlKSkgeworICAgICAgICBtX251bUNhbGxzVG9QcmltYXJ5
Kys7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAorICAgIGlmIChVTkxJS0VMWSgh
bV9vdGhlckNhbGxlZXMpKSB7CisgICAgICAgIGFkZFNsb3coY2FsbGVlLCBtZXJnZUJhY2tMb2cp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBDYWxsU3BlY3RydW0qIHNl
Y29uZGFyeSA9IG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLmdldCgpOworICAg
IGlmICghc2Vjb25kYXJ5KSB7CisgICAgICAgIGFkZFNsb3coY2FsbGVlLCBtZXJnZUJhY2tMb2cp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBzZWNvbmRhcnktPmFkZChj
YWxsZWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIENhbGxFZGdlUHJv
ZmlsZUlubGluZXNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bExpbmtJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtJbmZvLmNwcAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYg
KzgzLDExIEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWsoUmVwYXRjaEJ1ZmYKICAgICB9
CiAgICAgaWYgKCEhbGFzdFNlZW5DYWxsZWUgJiYgIUhlYXA6OmlzTWFya2VkKGxhc3RTZWVuQ2Fs
bGVlLmdldCgpKSkKICAgICAgICAgbGFzdFNlZW5DYWxsZWUuY2xlYXIoKTsKKyAgICAKKyAgICBp
ZiAoY2FsbEVkZ2VQcm9maWxlKSB7CisgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOworICAg
ICAgICBjYWxsRWRnZVByb2ZpbGUtPnZpc2l0V2VhaygpOworICAgIH0KIH0KIAogQ2FsbExpbmtJ
bmZvJiBDYWxsTGlua0luZm86OmR1bW15KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNiArMjYsNyBAQAogI2lmbmRlZiBDYWxsTGlua0luZm9faAogI2RlZmluZSBDYWxsTGlua0lu
Zm9faAogCisjaW5jbHVkZSAiQ2FsbEVkZ2VQcm9maWxlLmgiCiAjaW5jbHVkZSAiQ2xvc3VyZUNh
bGxTdHViUm91dGluZS5oIgogI2luY2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkNv
ZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKQEAgLTMzLDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgi
CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TZW50aW5lbExpbmtlZExp
c3QuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC04OCw2ICs5MCw3IEBAIHN0cnVjdCBDYWxsTGlu
a0luZm8gOiBwdWJsaWMgQmFzaWNSYXdTZW4KICAgICB1bnNpZ25lZCBjYWxsZWVHUFIgOiA4Owog
ICAgIHVuc2lnbmVkIHNsb3dQYXRoQ291bnQ7CiAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luOwor
ICAgIE93blB0cjxDYWxsRWRnZVByb2ZpbGU+IGNhbGxFZGdlUHJvZmlsZTsKIAogICAgIGJvb2wg
aXNMaW5rZWQoKSB7IHJldHVybiBzdHViIHx8IGNhbGxlZTsgfQogICAgIHZvaWQgdW5saW5rKFJl
cGF0Y2hCdWZmZXImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TGlua1N0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIsNTQgKzMyLDIyIEBACiAjaW5jbHVkZSAiTExJbnRDYWxsTGlua0luZm8uaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgorI2luY2x1ZGUg
PHd0Zi9MaXN0RHVtcC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogc3RhdGljIGNvbnN0IGJvb2wg
dmVyYm9zZSA9IGZhbHNlOwogCiBDYWxsTGlua1N0YXR1czo6Q2FsbExpbmtTdGF0dXMoSlNWYWx1
ZSB2YWx1ZSkKLSAgICA6IG1fY2FsbFRhcmdldCh2YWx1ZSkKLSAgICAsIG1fZXhlY3V0YWJsZSgw
KQotICAgICwgbV9jb3VsZFRha2VTbG93UGF0aChmYWxzZSkKKyAgICA6IG1fY291bGRUYWtlU2xv
d1BhdGgoZmFsc2UpCiAgICAgLCBtX2lzUHJvdmVkKGZhbHNlKQogewotICAgIGlmICghdmFsdWUg
fHwgIXZhbHVlLmlzQ2VsbCgpKQorICAgIGlmICghdmFsdWUgfHwgIXZhbHVlLmlzQ2VsbCgpKSB7
CisgICAgICAgIG1fY291bGRUYWtlU2xvd1BhdGggPSB0cnVlOwogICAgICAgICByZXR1cm47Cisg
ICAgfQogICAgIAotICAgIGlmICghdmFsdWUuYXNDZWxsKCktPmluaGVyaXRzKEpTRnVuY3Rpb246
OmluZm8oKSkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBtX2V4ZWN1dGFibGUgPSBqc0Nh
c3Q8SlNGdW5jdGlvbio+KHZhbHVlLmFzQ2VsbCgpKS0+ZXhlY3V0YWJsZSgpOwotfQotCi1KU0Z1
bmN0aW9uKiBDYWxsTGlua1N0YXR1czo6ZnVuY3Rpb24oKSBjb25zdAotewotICAgIGlmICghbV9j
YWxsVGFyZ2V0IHx8ICFtX2NhbGxUYXJnZXQuaXNDZWxsKCkpCi0gICAgICAgIHJldHVybiAwOwot
ICAgIAotICAgIGlmICghbV9jYWxsVGFyZ2V0LmFzQ2VsbCgpLT5pbmhlcml0cyhKU0Z1bmN0aW9u
OjppbmZvKCkpKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICByZXR1cm4ganNDYXN0PEpT
RnVuY3Rpb24qPihtX2NhbGxUYXJnZXQuYXNDZWxsKCkpOwotfQotCi1JbnRlcm5hbEZ1bmN0aW9u
KiBDYWxsTGlua1N0YXR1czo6aW50ZXJuYWxGdW5jdGlvbigpIGNvbnN0Ci17Ci0gICAgaWYgKCFt
X2NhbGxUYXJnZXQgfHwgIW1fY2FsbFRhcmdldC5pc0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgCi0gICAgaWYgKCFtX2NhbGxUYXJnZXQuYXNDZWxsKCktPmluaGVyaXRzKEludGVybmFs
RnVuY3Rpb246OmluZm8oKSkpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIHJldHVybiBq
c0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KG1fY2FsbFRhcmdldC5hc0NlbGwoKSk7Ci19Ci0KLUlu
dHJpbnNpYyBDYWxsTGlua1N0YXR1czo6aW50cmluc2ljRm9yKENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCkgY29uc3QKLXsKLSAgICBpZiAoIW1fZXhlY3V0YWJsZSkKLSAgICAgICAgcmV0dXJu
IE5vSW50cmluc2ljOwotICAgIAotICAgIHJldHVybiBtX2V4ZWN1dGFibGUtPmludHJpbnNpY0Zv
cihraW5kKTsKKyAgICBtX2VkZ2VzLmFwcGVuZChDYWxsRWRnZShDYWxsVmFyaWFudCh2YWx1ZS5h
c0NlbGwoKSksIDEpKTsKIH0KIAogQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVGcm9tTExJbnQoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBDb2RlQmxvY2sq
IHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCkBAIC04Nyw3ICs1NSw3IEBA
IENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnIKICAgICBVTlVTRURfUEFS
QU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogI2lm
IEVOQUJMRShERkdfSklUKQotICAgIGlmIChwcm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0ZShsb2Nr
ZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRGdW5jdGlvbikpKSB7
CisgICAgaWYgKHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVu
dEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENlbGwpKSkgewogICAgICAgICAvLyBXZSBjb3Vs
ZCBmb3JjZSB0aGlzIHRvIGJlIGEgY2xvc3VyZSBjYWxsLCBidXQgaW5zdGVhZCB3ZSdsbCBqdXN0
IGFzc3VtZSB0aGF0IGl0CiAgICAgICAgIC8vIHRha2VzIHNsb3cgcGF0aC4KICAgICAgICAgcmV0
dXJuIHRha2VzU2xvd1BhdGgoKTsKQEAgLTEzOSwxMCArMTA3LDEwIEBAIENhbGxMaW5rU3RhdHVz
OjpFeGl0U2l0ZURhdGEgQ2FsbExpbmtTdGEKICAgICAKICNpZiBFTkFCTEUoREZHX0pJVCkKICAg
ICBleGl0U2l0ZURhdGEubV90YWtlc1Nsb3dQYXRoID0KLSAgICAgICAgcHJvZmlsZWRCbG9jay0+
aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwg
QmFkQ2FjaGUsIGV4aXRpbmdKSVRUeXBlKSkKKyAgICAgICAgcHJvZmlsZWRCbG9jay0+aGFzRXhp
dFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkVHlw
ZSwgZXhpdGluZ0pJVFR5cGUpKQogICAgICAgICB8fCBwcm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0
ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRFeGVjdXRh
YmxlLCBleGl0aW5nSklUVHlwZSkpOwogICAgIGV4aXRTaXRlRGF0YS5tX2JhZEZ1bmN0aW9uID0K
LSAgICAgICAgcHJvZmlsZWRCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50
RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkRnVuY3Rpb24sIGV4aXRpbmdKSVRUeXBlKSk7Cisg
ICAgICAgIHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4
aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENlbGwsIGV4aXRpbmdKSVRUeXBlKSk7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShsb2NrZXIpOwogICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2Nr
KTsKQEAgLTE1Niw2ICsxMjQsMTggQEAgQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBDYWxs
TGlua1N0YQogI2lmIEVOQUJMRShKSVQpCiBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6
Y29tcHV0ZUZvcihjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgQ2FsbExpbmtJbmZvJiBjYWxs
TGlua0luZm8pCiB7CisgICAgLy8gQWx3YXlzIHRydXN0IHRoZSBjYWxsIGVkZ2UgcHJvZmlsZSBv
dmVyIGFueXRoaW5nIGVsc2Ugc2luY2UgdGhpcyBoYXMgcHJlY2lzZSBjb3VudHMuCisgICAgLy8g
SXQgY2FuIG1ha2UgdGhlIGJlc3QgcG9zc2libGUgZGVjaXNpb24gYmVjYXVzZSBpdCBuZXZlciAi
Zm9yZ2V0cyIgd2hhdCBoYXBwZW5lZCBmb3IgYW55CisgICAgLy8gY2FsbCwgd2l0aCB0aGUgZXhj
ZXB0aW9uIG9mIGZhZGluZyBvdXQgdGhlIGNvdW50cyBvZiBvbGQgY2FsbHMgKGZvciBleGFtcGxl
IGlmIHRoZQorICAgIC8vIGNvdW50ZXIgdHlwZSBpcyAxNi1iaXQgdGhlbiBjYWxscyB0aGF0IGhh
cHBlbmVkIG1vcmUgdGhhbiAyXjE2IGNhbGxzIGFnbyBhcmUgZ2l2ZW4gaGFsZgorICAgIC8vIHdl
aWdodCwgYW5kIHRoaXMgY29tcG91bmRzIGZvciBldmVyeSAyXjE1IFtzaWNdIGNhbGxzIGFmdGVy
IHRoYXQpLiBUaGUgY29tYmluYXRpb24gb2YKKyAgICAvLyBoaWdoIGZpZGVsaXR5IGZvciByZWNl
bnQgY2FsbHMgYW5kIGZhZGluZyBmb3Igb2xkZXIgY2FsbHMgbWFrZXMgdGhpcyB0aGUgbW9zdCB1
c2VmdWwKKyAgICAvLyBtZWNoYW1pc20gb2YgY2hvb3NpbmcgaG93IHRvIG9wdGltaXplIGZ1dHVy
ZSBjYWxscy4KKyAgICBDYWxsRWRnZVByb2ZpbGUqIGVkZ2VQcm9maWxlID0gY2FsbExpbmtJbmZv
LmNhbGxFZGdlUHJvZmlsZS5nZXQoKTsKKyAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKKyAgICBp
ZiAoZWRnZVByb2ZpbGUpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUNhbGxFZGdlUHJvZmls
ZShlZGdlUHJvZmlsZSk7CisgICAgCiAgICAgLy8gTm90ZSB0aGF0IGRlc3BpdGUgcmVxdWlyaW5n
IHRoYXQgdGhlIGxvY2tlciBpcyBoZWxkLCB0aGlzIGNvZGUgaXMgcmFjeSB3aXRoIHJlc3BlY3QK
ICAgICAvLyB0byB0aGUgQ2FsbExpbmtJbmZvOiBpdCBtYXkgZ2V0IGNsZWFyZWQgd2hpbGUgdGhp
cyBjb2RlIHJ1bnMhIFRoaXMgaXMgYmVjYXVzZQogICAgIC8vIENhbGxMaW5rSW5mbzo6dW5saW5r
KCkgbWF5IGJlIGNhbGxlZCBmcm9tIGEgZGlmZmVyZW50IENvZGVCbG9jayB0aGFuIHRoZSBvbmUg
dGhhdCBvd25zCkBAIC0xNzcsNyArMTU3LDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVGbwogICAgIAogICAgIEpTRnVuY3Rpb24qIHRhcmdldCA9IGNhbGxMaW5rSW5m
by5sYXN0U2VlbkNhbGxlZS5nZXQoKTsKICAgICBpZiAoIXRhcmdldCkKLSAgICAgICAgcmV0dXJu
IENhbGxMaW5rU3RhdHVzKCk7CisgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7CiAgICAg
CiAgICAgaWYgKGNhbGxMaW5rSW5mby5oYXNTZWVuQ2xvc3VyZSkKICAgICAgICAgcmV0dXJuIENh
bGxMaW5rU3RhdHVzKHRhcmdldC0+ZXhlY3V0YWJsZSgpKTsKQEAgLTE4NSwxNSArMTY1LDMxIEBA
IENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICAgICByZXR1cm4gQ2Fs
bExpbmtTdGF0dXModGFyZ2V0KTsKIH0KIAotQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6
OmNvbXB1dGVGb3IoCi0gICAgY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBDYWxs
TGlua0luZm8mIGNhbGxMaW5rSW5mbywgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSkKK0NhbGxM
aW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUNhbGxFZGdlUHJvZmlsZShDYWxs
RWRnZVByb2ZpbGUqIGVkZ2VQcm9maWxlKQogewotICAgIGlmIChleGl0U2l0ZURhdGEubV90YWtl
c1Nsb3dQYXRoKQorICAgIC8vIFRvIGRvIGFueXRoaW5nIG1lYW5pbmdmdWwsIHdlIHJlcXVpcmUg
dGhhdCB0aGUgbWFqb3JpdHkgb2YgY2FsbHMgYXJlIHRvIHNvbWV0aGluZyB3ZQorICAgIC8vIGtu
b3cgaG93IHRvIGhhbmRsZS4KKyAgICB1bnNpZ25lZCBudW1DYWxsc1RvS25vd24gPSBlZGdlUHJv
ZmlsZS0+bnVtQ2FsbHNUb0tub3duQ2VsbHMoKTsKKyAgICB1bnNpZ25lZCBudW1DYWxsc1RvVW5r
bm93biA9IGVkZ2VQcm9maWxlLT5udW1DYWxsc1RvTm90Q2VsbCgpICsgZWRnZVByb2ZpbGUtPm51
bUNhbGxzVG9Vbmtub3duQ2VsbCgpOworICAgIGlmIChudW1DYWxsc1RvS25vd24gPD0gbnVtQ2Fs
bHNUb1Vua25vd24pCiAgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7CiAgICAgCisgICAg
Q2FsbExpbmtTdGF0dXMgcmVzdWx0OworICAgIHJlc3VsdC5tX2VkZ2VzID0gZWRnZVByb2ZpbGUt
PmNhbGxFZGdlcygpOworICAgIHJlc3VsdC5tX2NvdWxkVGFrZVNsb3dQYXRoID0gISFudW1DYWxs
c1RvVW5rbm93bjsKKyAgICByZXN1bHQubV9jYW5UcnVzdENvdW50cyA9IHRydWU7CisgICAgCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNv
bXB1dGVGb3IoCisgICAgY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBDYWxsTGlu
a0luZm8mIGNhbGxMaW5rSW5mbywgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSkKK3sKICAgICBD
YWxsTGlua1N0YXR1cyByZXN1bHQgPSBjb21wdXRlRm9yKGxvY2tlciwgY2FsbExpbmtJbmZvKTsK
ICAgICBpZiAoZXhpdFNpdGVEYXRhLm1fYmFkRnVuY3Rpb24pCiAgICAgICAgIHJlc3VsdC5tYWtl
Q2xvc3VyZUNhbGwoKTsKKyAgICBpZiAoZXhpdFNpdGVEYXRhLm1fdGFrZXNTbG93UGF0aCkKKyAg
ICAgICAgcmVzdWx0Lm1fY291bGRUYWtlU2xvd1BhdGggPSB0cnVlOwogICAgIAogICAgIHJldHVy
biByZXN1bHQ7CiB9CkBAIC0yNTYsNiArMjUyLDMyIEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5r
U3RhdHVzOjpjb21wdXRlRm8KICAgICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJsb2NrLCBj
b2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIGJhc2VsaW5lTWFwKTsKIH0KIAorYm9vbCBDYWxsTGlu
a1N0YXR1czo6aXNDbG9zdXJlQ2FsbCgpIGNvbnN0Cit7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
bV9lZGdlcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgaWYgKG1fZWRnZXNbaV0uY2FsbGVlKCku
aXNDbG9zdXJlQ2FsbCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKK30KKwordm9pZCBDYWxsTGlua1N0YXR1czo6bWFrZUNsb3N1cmVDYWxsKCkK
K3sKKyAgICBBU1NFUlQoIW1faXNQcm92ZWQpOworICAgIGZvciAodW5zaWduZWQgaSA9IG1fZWRn
ZXMuc2l6ZSgpOyBpLS07KQorICAgICAgICBtX2VkZ2VzW2ldID0gbV9lZGdlc1tpXS5kZXNwZWNp
ZmllZENsb3N1cmUoKTsKKyAgICAKKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAg
ICAvLyBEb2luZyB0aGlzIHNob3VsZCBub3QgaGF2ZSBjcmVhdGVkIGR1cGxpY2F0ZXMsIGJlY2F1
c2UgdGhlIENhbGxFZGdlUHJvZmlsZQorICAgICAgICAvLyBzaG91bGQgZGVzcGVjaWZ5IGNsb3N1
cmVzIGlmIGRvaW5nIHNvIHdvdWxkIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGtub3duIGNhbGxlZXMu
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2VkZ2VzLnNpemUoKTsgKytpKSB7
CisgICAgICAgICAgICBDYWxsVmFyaWFudCB2YXJpYW50ID0gbV9lZGdlc1tpXS5jYWxsZWUoKTsK
KyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IGkgKyAxOyBqIDwgbV9lZGdlcy5zaXplKCk7
ICsraikKKyAgICAgICAgICAgICAgICBBU1NFUlQodmFyaWFudCAhPSBtX2VkZ2VzW2pdLmNhbGxl
ZSgpKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCBDYWxsTGlua1N0YXR1czo6ZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIGlmICghaXNTZXQoKSkgewpAQCAtMjcxLDE0
ICsyOTMsNyBAQCB2b2lkIENhbGxMaW5rU3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBvCiAgICAg
aWYgKG1fY291bGRUYWtlU2xvd1BhdGgpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIkNvdWxk
IFRha2UgU2xvdyBQYXRoIik7CiAgICAgCi0gICAgaWYgKG1fY2FsbFRhcmdldCkKLSAgICAgICAg
b3V0LnByaW50KGNvbW1hLCAiS25vd24gdGFyZ2V0OiAiLCBtX2NhbGxUYXJnZXQpOwotICAgIAot
ICAgIGlmIChtX2V4ZWN1dGFibGUpIHsKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiRXhlY3V0
YWJsZS9DYWxsSGFzaDogIiwgUmF3UG9pbnRlcihtX2V4ZWN1dGFibGUpKTsKLSAgICAgICAgaWYg
KCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpCi0gICAgICAgICAgICBvdXQucHJpbnQoIi8iLCBtX2V4
ZWN1dGFibGUtPmhhc2hGb3IoQ29kZUZvckNhbGwpKTsKLSAgICB9CisgICAgb3V0LnByaW50KGxp
c3REdW1wKG1fZWRnZXMpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkocmV2aXNpb24g
MTcyNzk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDkgKzQ2LDkgQEAgc3RydWN0IENhbGxMaW5rSW5mbzsK
IGNsYXNzIENhbGxMaW5rU3RhdHVzIHsKIHB1YmxpYzoKICAgICBDYWxsTGlua1N0YXR1cygpCi0g
ICAgICAgIDogbV9leGVjdXRhYmxlKDApCi0gICAgICAgICwgbV9jb3VsZFRha2VTbG93UGF0aChm
YWxzZSkKKyAgICAgICAgOiBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQogICAgICAgICAsIG1f
aXNQcm92ZWQoZmFsc2UpCisgICAgICAgICwgbV9jYW5UcnVzdENvdW50cyhmYWxzZSkKICAgICB7
CiAgICAgfQogICAgIApAQCAtNjEsMTAgKzYxLDExIEBAIHB1YmxpYzoKICAgICAKICAgICBleHBs
aWNpdCBDYWxsTGlua1N0YXR1cyhKU1ZhbHVlKTsKICAgICAKLSAgICBDYWxsTGlua1N0YXR1cyhF
eGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSkKLSAgICAgICAgOiBtX2V4ZWN1dGFibGUoZXhlY3V0
YWJsZSkKKyAgICBDYWxsTGlua1N0YXR1cyhDYWxsVmFyaWFudCB2YXJpYW50KQorICAgICAgICA6
IG1fZWRnZXMoMSwgQ2FsbEVkZ2UodmFyaWFudCwgMSkpCiAgICAgICAgICwgbV9jb3VsZFRha2VT
bG93UGF0aChmYWxzZSkKICAgICAgICAgLCBtX2lzUHJvdmVkKGZhbHNlKQorICAgICAgICAsIG1f
Y2FuVHJ1c3RDb3VudHMoZmFsc2UpCiAgICAgewogICAgIH0KICAgICAKQEAgLTEwNywzNyArMTA4
LDM2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcigKICAg
ICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiwgY29u
c3QgQ29udGV4dE1hcCYpOwogICAgIAotICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBt
X2NhbGxUYXJnZXQgfHwgbV9leGVjdXRhYmxlIHx8IG1fY291bGRUYWtlU2xvd1BhdGg7IH0KKyAg
ICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gIW1fZWRnZXMuaXNFbXB0eSgpIHx8IG1fY291
bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0
dXJuICFpc1NldCgpOyB9CiAgICAgCiAgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fY291bGRUYWtlU2xvd1BhdGg7IH0KLSAgICBib29sIGlzQ2xvc3VyZUNhbGwo
KSBjb25zdCB7IHJldHVybiBtX2V4ZWN1dGFibGUgJiYgIW1fY2FsbFRhcmdldDsgfQogICAgIAot
ICAgIEpTVmFsdWUgY2FsbFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdldDsgfQot
ICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uKCkgY29uc3Q7Ci0gICAgSW50ZXJuYWxGdW5jdGlvbiog
aW50ZXJuYWxGdW5jdGlvbigpIGNvbnN0OwotICAgIEludHJpbnNpYyBpbnRyaW5zaWNGb3IoQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCkgY29uc3Q7Ci0gICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFi
bGUoKSBjb25zdCB7IHJldHVybiBtX2V4ZWN1dGFibGU7IH0KKyAgICBDYWxsRWRnZUxpc3QgZWRn
ZXMoKSBjb25zdCB7IHJldHVybiBtX2VkZ2VzOyB9CisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZWRnZXMuc2l6ZSgpOyB9CisgICAgQ2FsbEVkZ2UgYXQodW5zaWduZWQgaSkg
Y29uc3QgeyByZXR1cm4gbV9lZGdlc1tpXTsgfQorICAgIENhbGxFZGdlIG9wZXJhdG9yW10odW5z
aWduZWQgaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0KICAgICBib29sIGlzUHJvdmVkKCkgY29u
c3QgeyByZXR1cm4gbV9pc1Byb3ZlZDsgfQotICAgIGJvb2wgY2FuT3B0aW1pemUoKSBjb25zdCB7
IHJldHVybiAobV9jYWxsVGFyZ2V0IHx8IG1fZXhlY3V0YWJsZSkgJiYgIW1fY291bGRUYWtlU2xv
d1BhdGg7IH0KKyAgICBib29sIGNhbk9wdGltaXplKCkgY29uc3QgeyByZXR1cm4gIW1fZWRnZXMu
aXNFbXB0eSgpOyB9CisgICAgYm9vbCBjYW5UcnVzdENvdW50cygpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FuVHJ1c3RDb3VudHM7IH0KKyAgICAKKyAgICBib29sIGlzQ2xvc3VyZUNhbGwoKSBjb25zdDsg
Ly8gUmV0dXJucyB0cnVlIGlmIGFueSBjYWxsZWUgaXMgYSBjbG9zdXJlIGNhbGwuCiAgICAgCiAg
ICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgotICAgIHZv
aWQgbWFrZUNsb3N1cmVDYWxsKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9pc1Byb3ZlZCk7
Ci0gICAgICAgIC8vIFR1cm4gdGhpcyBpbnRvIGEgY2xvc3VyZSBjYWxsLgotICAgICAgICBtX2Nh
bGxUYXJnZXQgPSBKU1ZhbHVlKCk7Ci0gICAgfQorICAgIHZvaWQgbWFrZUNsb3N1cmVDYWxsKCk7
CiAgICAgCiAgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGcm9tTExJbnQoY29uc3Qg
Q29uY3VycmVudEpJVExvY2tlciYsIENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgp
OworI2lmIEVOQUJMRShKSVQpCisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGcm9t
Q2FsbEVkZ2VQcm9maWxlKENhbGxFZGdlUHJvZmlsZSopOworI2VuZGlmCiAgICAgCi0gICAgSlNW
YWx1ZSBtX2NhbGxUYXJnZXQ7Ci0gICAgRXhlY3V0YWJsZUJhc2UqIG1fZXhlY3V0YWJsZTsKKyAg
ICBDYWxsRWRnZUxpc3QgbV9lZGdlczsKICAgICBib29sIG1fY291bGRUYWtlU2xvd1BhdGg7CiAg
ICAgYm9vbCBtX2lzUHJvdmVkOworICAgIGJvb2wgbV9jYW5UcnVzdENvdW50czsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxWYXJpYW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbFZhcmlhbnQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxWYXJpYW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJDYWxsVmFyaWFudC5oIgorCituYW1lc3BhY2UgSlNDIHsK
Kwordm9pZCBDYWxsVmFyaWFudDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAg
IGlmICghKnRoaXMpIHsKKyAgICAgICAgb3V0LnByaW50KCJudWxsIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgaWYgKEludGVybmFsRnVuY3Rpb24qIGludGVybmFsRnVuY3Rp
b24gPSB0aGlzLT5pbnRlcm5hbEZ1bmN0aW9uKCkpIHsKKyAgICAgICAgb3V0LnByaW50KCJJbnRl
cm5hbEZ1bmN0aW9uOiAiLCBKU1ZhbHVlKGludGVybmFsRnVuY3Rpb24pKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoSlNGdW5jdGlvbiogZnVuY3Rpb24gPSB0aGlzLT5m
dW5jdGlvbigpKSB7CisgICAgICAgIG91dC5wcmludCgiKEZ1bmN0aW9uOiAiLCBKU1ZhbHVlKGZ1
bmN0aW9uKSwgIjsgRXhlY3V0YWJsZTogIiwgKmV4ZWN1dGFibGUoKSwgIikiKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAKKyAgICBvdXQucHJpbnQoIkV4ZWN1dGFibGU6ICIsICpleGVj
dXRhYmxlKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDE2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIENhbGxWYXJpYW50X2gKKyNkZWZpbmUgQ2FsbFZhcmlhbnRfaAorCisj
aW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIENhbGxWYXJpYW50IHsKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCBDYWxsVmFyaWFudChKU0NlbGwqIGNhbGxlZSA9IG51bGxwdHIp
CisgICAgICAgIDogbV9jYWxsZWUoY2FsbGVlKQorICAgIHsKKyAgICB9CisgICAgCisgICAgQ2Fs
bFZhcmlhbnQoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQorICAgICAgICA6IG1fY2Fs
bGVlKGRlbGV0ZWRUb2tlbigpKQorICAgIHsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRv
ciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7IH0KKyAgICAKKyAgICAvLyBJZiB0aGlzIHZh
cmlhbnQgcmVmZXJzIHRvIGEgZnVuY3Rpb24sIGNoYW5nZSBpdCB0byByZWZlciB0byBpdHMgZXhl
Y3V0YWJsZS4KKyAgICBBTFdBWVNfSU5MSU5FIENhbGxWYXJpYW50IGRlc3BlY2lmaWVkQ2xvc3Vy
ZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9jYWxsZWUtPnR5cGUoKSA9PSBKU0Z1bmN0
aW9uVHlwZSkKKyAgICAgICAgICAgIHJldHVybiBDYWxsVmFyaWFudChqc0Nhc3Q8SlNGdW5jdGlv
bio+KG1fY2FsbGVlKS0+ZXhlY3V0YWJsZSgpKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAg
IH0KKyAgICAKKyAgICBKU0NlbGwqIHJhd0NhbGxlZUNlbGwoKSBjb25zdCB7IHJldHVybiBtX2Nh
bGxlZTsgfQorICAgIAorICAgIEludGVybmFsRnVuY3Rpb24qIGludGVybmFsRnVuY3Rpb24oKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SW50ZXJuYWxGdW5jdGlv
bio+KG1fY2FsbGVlKTsKKyAgICB9CisgICAgCisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24oKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KG1f
Y2FsbGVlKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0Nsb3N1cmVDYWxsKCkgY29uc3QgeyBy
ZXR1cm4gISFqc0R5bmFtaWNDYXN0PEV4ZWN1dGFibGVCYXNlKj4obV9jYWxsZWUpOyB9CisgICAg
CisgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
aWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gdGhpcy0+ZnVuY3Rpb24oKSkKKyAgICAgICAgICAg
IHJldHVybiBmdW5jdGlvbi0+ZXhlY3V0YWJsZSgpOworICAgICAgICByZXR1cm4ganNEeW5hbWlj
Q2FzdDxFeGVjdXRhYmxlQmFzZSo+KG1fY2FsbGVlKTsKKyAgICB9CisgICAgCisgICAgSlNDZWxs
KiBub25FeGVjdXRhYmxlQ2FsbGVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCFpc0Nsb3N1cmVDYWxsKCkpOworICAgICAgICByZXR1cm4gbV9jYWxsZWU7CisgICAgfQor
ICAgIAorICAgIEludHJpbnNpYyBpbnRyaW5zaWNGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxl
ID0gdGhpcy0+ZXhlY3V0YWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIGV4ZWN1dGFibGUtPmlu
dHJpbnNpY0ZvcihraW5kKTsKKyAgICAgICAgcmV0dXJuIE5vSW50cmluc2ljOworICAgIH0KKyAg
ICAKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSgpIGNvbnN0Cisg
ICAgeworICAgICAgICBpZiAoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSB0aGlzLT5leGVj
dXRhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxGdW5jdGlvbkV4ZWN1
dGFibGUqPihleGVjdXRhYmxlKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAg
IAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKKyAgICAKKyAgICBib29s
IGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2NhbGxlZSA9PSBkZWxldGVkVG9rZW4oKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2NhbGxlZSA9PSBvdGhlci5tX2NhbGxlZTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvcjwo
Y29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
Y2FsbGVlIDwgb3RoZXIubV9jYWxsZWU7CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3I+
KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBv
dGhlciA8ICp0aGlzOworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgQ2Fs
bFZhcmlhbnQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPCBv
dGhlcik7CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBDYWxsVmFyaWFu
dCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gb3RoZXIgPD0gKnRoaXM7Cisg
ICAgfQorICAgIAorICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIFdURjo6UHRySGFzaDxKU0NlbGwqPjo6aGFzaChtX2NhbGxlZSk7CisgICAgfQorICAgIAor
cHJpdmF0ZToKKyAgICBzdGF0aWMgSlNDZWxsKiBkZWxldGVkVG9rZW4oKSB7IHJldHVybiBiaXR3
aXNlX2Nhc3Q8SlNDZWxsKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSk7IH0KKyAgICAgICAg
ICAgICAgICAgICAKKyAgICBKU0NlbGwqIG1fY2FsbGVlOworfTsKKworc3RydWN0IENhbGxWYXJp
YW50SGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgQ2FsbFZhcmlhbnQmIGtl
eSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENh
bGxWYXJpYW50JiBhLCBjb25zdCBDYWxsVmFyaWFudCYgYikgeyByZXR1cm4gYSA9PSBiOyB9Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVl
OworfTsKKwordHlwZWRlZiBWZWN0b3I8Q2FsbFZhcmlhbnQsIDE+IENhbGxWYXJpYW50TGlzdDsK
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFz
aDxKU0M6OkNhbGxWYXJpYW50PiB7CisgICAgdHlwZWRlZiBKU0M6OkNhbGxWYXJpYW50SGFzaCBI
YXNoOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM7Cit0ZW1w
bGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6Q2FsbFZhcmlhbnQ+IDogU2ltcGxlQ2xhc3NI
YXNoVHJhaXRzPEpTQzo6Q2FsbFZhcmlhbnQ+IHsgfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisK
KyNlbmRpZiAvLyBDYWxsVmFyaWFudF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGl0S2luZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V4aXRLaW5kLmNwcAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsOCAr
MzgsOCBAQCBjb25zdCBjaGFyKiBleGl0S2luZFRvU3RyaW5nKEV4aXRLaW5kIGtpCiAgICAgICAg
IHJldHVybiAiVW5zZXQiOwogICAgIGNhc2UgQmFkVHlwZToKICAgICAgICAgcmV0dXJuICJCYWRU
eXBlIjsKLSAgICBjYXNlIEJhZEZ1bmN0aW9uOgotICAgICAgICByZXR1cm4gIkJhZEZ1bmN0aW9u
IjsKKyAgICBjYXNlIEJhZENlbGw6CisgICAgICAgIHJldHVybiAiQmFkQ2VsbCI7CiAgICAgY2Fz
ZSBCYWRFeGVjdXRhYmxlOgogICAgICAgICByZXR1cm4gIkJhZEV4ZWN1dGFibGUiOwogICAgIGNh
c2UgQmFkQ2FjaGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtp
bmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtp
bmQuaAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4aXRLaW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiBlbnVtIEV4aXRLaW5kIDogdWludDhfdCB7CiAgICAgRXhpdEtpbmRVbnNldCwKICAgICBC
YWRUeXBlLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSBhIHR5cGUgcHJlZGljdGlvbiB3YXMgd3Jvbmcu
Ci0gICAgQmFkRnVuY3Rpb24sIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIG1hZGUgYW4gaW5jb3Jy
ZWN0IGFzc3VtcHRpb24gYWJvdXQgd2hhdCBmdW5jdGlvbiB3ZSB3b3VsZCBzZWUuCisgICAgQmFk
Q2VsbCwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2UgbWFkZSBhbiBpbmNvcnJlY3QgYXNzdW1wdGlv
biBhYm91dCB3aGF0IGNlbGwgd2Ugd291bGQgc2VlLiBVc3VhbGx5IHVzZWQgZm9yIGZ1bmN0aW9u
IGNoZWNrcy4KICAgICBCYWRFeGVjdXRhYmxlLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSB3ZSBtYWRl
IGFuIGluY29ycmVjdCBhc3N1bXB0aW9uIGFib3V0IHdoYXQgZXhlY3V0YWJsZSB3ZSB3b3VsZCBz
ZWUuCiAgICAgQmFkQ2FjaGUsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIGFuIGlubGluZSBjYWNoZSB3
YXMgd3JvbmcuCiAgICAgQmFkQ29uc3RhbnRDYWNoZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2UgYSBj
YWNoZSBvbiBhIHdlYWsgY29uc3RhbnQgKHVzdWFsbHkgYSBwcm90b3R5cGUpIHdhcyB3cm9uZy4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMTQ2MCwxNCArMTQ2MCw2IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHkKICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CiAg
ICAgICAgIGJyZWFrOwogICAgICAgICAKLSAgICBjYXNlIENoZWNrRXhlY3V0YWJsZTogewotICAg
ICAgICAvLyBGSVhNRTogV2UgY291bGQgdHJhY2sgZXhlY3V0YWJsZXMgaW4gQWJzdHJhY3RWYWx1
ZSwgd2hpY2ggd291bGQgYWxsb3cgdXMgdG8gZ2V0IHJpZCBvZiB0aGVzZSBjaGVja3MKLSAgICAg
ICAgLy8gbW9yZSB0aG9yb3VnaGx5LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA2MjAwCi0gICAgICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBlbGltaW5hdGUgdGhlc2Ug
ZW50aXJlbHkgaWYgd2Uga25vdyB0aGUgZXhhY3QgdmFsdWUgdGhhdCBmbG93cyBpbnRvIHRoaXMu
Ci0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYy
MDEKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZTogewog
ICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gcHJvcGFnYXRlIHRoZSBzdHJ1
Y3R1cmUgc2V0cyBvZiBjb25zdGFudHMgKGkuZS4gcHJvdG90eXBlcykuCiAgICAgICAgIEFic3Ry
YWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CkBAIC0xNzI3LDE2ICsx
NzE5LDI5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAg
ICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
KyAgICAgICAgCisgICAgY2FzZSBHZXRFeGVjdXRhYmxlOiB7CisgICAgICAgIEpTVmFsdWUgdmFs
dWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICBpZiAodmFsdWUp
IHsKKyAgICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1
bmN0aW9uKj4odmFsdWUpOworICAgICAgICAgICAgaWYgKGZ1bmN0aW9uKSB7CisgICAgICAgICAg
ICAgICAgc2V0Q29uc3RhbnQobm9kZSwgKm1fZ3JhcGguZnJlZXplKGZ1bmN0aW9uLT5leGVjdXRh
YmxlKCkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0NlbGxPdGhlcik7CisgICAgICAg
IGJyZWFrOworICAgIH0KICAgICAKLSAgICBjYXNlIENoZWNrRnVuY3Rpb246IHsKKyAgICBjYXNl
IENoZWNrQ2VsbDogewogICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGls
ZDEoKSkudmFsdWUoKTsKLSAgICAgICAgaWYgKHZhbHVlID09IG5vZGUtPmZ1bmN0aW9uKCktPnZh
bHVlKCkpIHsKKyAgICAgICAgaWYgKHZhbHVlID09IG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVl
KCkpIHsKICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CiAgICAg
ICAgICAgICBBU1NFUlQodmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgCi0gICAgICAgIGZpbHRlckJ5VmFsdWUobm9kZS0+Y2hpbGQxKCksICpub2RlLT5mdW5j
dGlvbigpKTsKKyAgICAgICAgZmlsdGVyQnlWYWx1ZShub2RlLT5jaGlsZDEoKSwgKm5vZGUtPmNl
bGxPcGVyYW5kKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAtMTkwMiw2
ICsxOTA3LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAg
ICAgICBicmVhazsKIAogICAgIGNhc2UgRm9yY2VPU1JFeGl0OgorICAgIGNhc2UgQ2hlY2tCYWRD
ZWxsOgogICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwogICAgICAgICBicmVhazsK
ICAgICAgICAgCkBAIC0xOTU2LDcgKzE5NjIsOCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5CiAgICAgY2FzZSBMYXN0Tm9kZVR5cGU6CiAgICAgY2FzZSBBcml0aElN
dWw6CiAgICAgY2FzZSBGaWF0SW50NTI6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgY2FzZSBCb3R0b21WYWx1ZToKKyAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgs
IG5vZGUsICJVbmV4cGVjdGVkIG5vZGUgdHlwZSIpOwogICAgICAgICBicmVhazsKICAgICB9CiAg
ICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0
aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM4OSw2ICszODksMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAvLyB0aGVuIC0wIGFuZCAwIGFyZSB0cmVhdGVkIHRoZSBzYW1lLgogICAgICAgICAgICAgICAg
IG5vZGUtPmNoaWxkMSgpLT5tZXJnZUZsYWdzKE5vZGVCeXRlY29kZVVzZXNBc051bWJlciB8IE5v
ZGVCeXRlY29kZVVzZXNBc090aGVyKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgU3dpdGNoQ2VsbDoKKyAgICAgICAgICAgICAgICAvLyBUaGVyZSBpcyBjdXJyZW50
bHkgbm8gcG9pbnQgdG8gYmVpbmcgY2xldmVyIGhlcmUgc2luY2UgdGhpcyBpcyB1c2VkIGZvciBz
d2l0Y2hpbmcKKyAgICAgICAgICAgICAgICAvLyBvbiBvYmplY3RzLgorICAgICAgICAgICAgICAg
IG1lcmdlRGVmYXVsdEZsYWdzKG5vZGUpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMTcyNzk0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTgsNyArNTgsOSBAQCBCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrKAogewogfQogCi1CYXNp
Y0Jsb2NrOjp+QmFzaWNCbG9jaygpIHsgfQorQmFzaWNCbG9jazo6fkJhc2ljQmxvY2soKQorewor
fQogCiB2b2lkIEJhc2ljQmxvY2s6OmVuc3VyZUxvY2Fscyh1bnNpZ25lZCBuZXdOdW1Mb2NhbHMp
CiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkocmV2
aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2Nr
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBS
ZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIE5vZGUqJiBvcGVyYXRvcltdKHNpemVfdCBpKSB7IHJl
dHVybiBhdChpKTsgfQogICAgIE5vZGUqIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0
dXJuIGF0KGkpOyB9CiAgICAgTm9kZSogbGFzdCgpIGNvbnN0IHsgcmV0dXJuIGF0KHNpemUoKSAt
IDEpOyB9CisgICAgTm9kZSogdGFrZUxhc3QoKSB7IHJldHVybiBtX25vZGVzLnRha2VMYXN0KCk7
IH0KICAgICB2b2lkIHJlc2l6ZShzaXplX3Qgc2l6ZSkgeyBtX25vZGVzLnJlc2l6ZShzaXplKTsg
fQogICAgIHZvaWQgZ3JvdyhzaXplX3Qgc2l6ZSkgeyBtX25vZGVzLmdyb3coc2l6ZSk7IH0KICAg
ICAKQEAgLTEwNiw2ICsxMDcsMTMgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJh
c2ljQmxvYwogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKICAg
ICAKKyAgICB2b2lkIGRpZExpbmsoKQorICAgIHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAg
ICAgIGlzTGlua2VkID0gdHJ1ZTsKKyNlbmRpZgorICAgIH0KKyAgICAKICAgICAvLyBUaGlzIHZh
bHVlIGlzIHVzZWQgaW50ZXJuYWxseSBmb3IgYmxvY2sgbGlua2luZyBhbmQgT1NSIGVudHJ5LiBJ
dCBpcyBtb3N0bHkgbWVhbmluZ2xlc3MKICAgICAvLyBmb3Igb3RoZXIgcHVycG9zZXMgZHVlIHRv
IGlubGluaW5nLgogICAgIHVuc2lnbmVkIGJ5dGVjb2RlQmVnaW47CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTcy
Nzk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogCitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CisKIGNsYXNz
IENvbnN0YW50QnVmZmVyS2V5IHsKIHB1YmxpYzoKICAgICBDb25zdGFudEJ1ZmZlcktleSgpCkBA
IC0xNzgsMTQgKzE4MCwyMCBAQCBwcml2YXRlOgogICAgICAgICBOb2RlKiBjYWxsVGFyZ2V0LCBp
bnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCwgQ2FsbExpbmtTdGF0dXMpOwogICAgIHZv
aWQgaGFuZGxlQ2FsbChpbnQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplLCBpbnQgY2FsbGVlLCBpbnQgYXJnQ291bnQs
IGludCByZWdpc3Rlck9mZnNldCk7CiAgICAgdm9pZCBoYW5kbGVDYWxsKEluc3RydWN0aW9uKiBw
YywgTm9kZVR5cGUgb3AsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwotICAgIHZvaWQgZW1pdEZ1
bmN0aW9uQ2hlY2tzKGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgTm9kZSogY2FsbFRhcmdldCwgaW50
IHJlZ2lzdGVyT2Zmc2V0LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICB2b2lkIGVtaXRG
dW5jdGlvbkNoZWNrcyhDYWxsVmFyaWFudCwgTm9kZSogY2FsbFRhcmdldCwgaW50IHJlZ2lzdGVy
T2Zmc2V0LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICB2b2lkIHVuZG9GdW5jdGlvbkNo
ZWNrcyhDYWxsVmFyaWFudCk7CiAgICAgdm9pZCBlbWl0QXJndW1lbnRQaGFudG9tcyhpbnQgcmVn
aXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCk7CisgICAgdW5zaWduZWQgaW5saW5pbmdDb3N0KENhbGxWYXJpYW50LCBpbnQg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOyAvLyBS
ZXR1cm4gVUlOVF9NQVggaWYgaXQncyBub3QgYW4gaW5saW5pbmcgY2FuZGlkYXRlLiBCeSBjb252
ZW50aW9uLCBpbnRyaW5zaWNzIGhhdmUgYSBjb3N0IG9mIDEuCiAgICAgLy8gSGFuZGxlIGlubGlu
aW5nLiBSZXR1cm4gdHJ1ZSBpZiBpdCBzdWNjZWVkZWQsIGZhbHNlIGlmIHdlIG5lZWQgdG8gcGxh
bnQgYSBjYWxsLgotICAgIGJvb2wgaGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUs
IGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9m
ZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0
LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQpOworICAgIGJvb2wgaGFuZGxlSW5saW5pbmcoTm9kZSog
Y2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBDYWxsTGlua1N0YXR1cyYs
IGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNp
Z25lZCBuZXh0T2Zmc2V0LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCwg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CisgICAgZW51bSBDYWxsZXJMaW5rYWJpbGl0eSB7
IENhbGxlckRvZXNOb3JtYWxMaW5raW5nLCBDYWxsZXJMaW5rc01hbnVhbGx5IH07CisgICAgYm9v
bCBhdHRlbXB0VG9JbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3Bl
cmFuZCwgQ2FsbFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQs
IENhbGxlckxpbmthYmlsaXR5LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCB1bnNpZ25lZCYg
aW5saW5pbmdCYWxhbmNlKTsKKyAgICB2b2lkIGlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5v
ZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBp
bnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGlu
ZUNhbGxGcmFtZTo6S2luZCwgQ2FsbGVyTGlua2FiaWxpdHkpOworICAgIHZvaWQgY2FuY2VsTGlu
a2luZ0ZvckJsb2NrKElubGluZVN0YWNrRW50cnkqLCBCYXNpY0Jsb2NrKik7IC8vIE9ubHkgd29y
a3Mgd2hlbiB0aGUgZ2l2ZW4gYmxvY2sgaXMgdGhlIGxhc3Qgb25lIHRvIGhhdmUgYmVlbiBhZGRl
ZCBmb3IgdGhhdCBpbmxpbmUgc3RhY2sgZW50cnkuCiAgICAgLy8gSGFuZGxlIGludHJpbnNpYyBm
dW5jdGlvbnMuIFJldHVybiB0cnVlIGlmIGl0IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0
byBwbGFudCBhIGNhbGwuCiAgICAgYm9vbCBoYW5kbGVJbnRyaW5zaWMoaW50IHJlc3VsdE9wZXJh
bmQsIEludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pOwogICAgIGJvb2wgaGFuZGxlVHlw
ZWRBcnJheUNvbnN0cnVjdG9yKGludCByZXN1bHRPcGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiwg
aW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFR5cGVk
QXJyYXlUeXBlKTsKLSAgICBib29sIGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihpbnQg
cmVzdWx0T3BlcmFuZCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICBib29sIGhhbmRsZUNvbnN0YW50SW50ZXJuYWxG
dW5jdGlvbihpbnQgcmVzdWx0T3BlcmFuZCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rl
ck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kKTsKICAgICBOb2RlKiBoYW5kbGVQdXRCeU9mZnNldChOb2RlKiBiYXNlLCB1bnNpZ25l
ZCBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgTm9kZSogdmFsdWUpOwogICAgIE5vZGUqIGhh
bmRsZUdldEJ5T2Zmc2V0KFNwZWN1bGF0ZWRUeXBlLCBOb2RlKiBiYXNlLCBjb25zdCBTdHJ1Y3R1
cmVTZXQmLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBQcm9wZXJ0eU9mZnNldCwgTm9kZVR5
cGUgb3AgPSBHZXRCeU9mZnNldCk7CiAgICAgdm9pZCBoYW5kbGVHZXRCeUlkKApAQCAtMjAwLDgg
KzIwOCw5IEBAIHByaXZhdGU6CiAKICAgICBOb2RlKiBnZXRTY29wZShib29sIHNraXBUb3AsIHVu
c2lnbmVkIHNraXBDb3VudCk7CiAgICAgCi0gICAgLy8gUHJlcGFyZSB0byBwYXJzZSBhIGJsb2Nr
LgogICAgIHZvaWQgcHJlcGFyZVRvUGFyc2VCbG9jaygpOworICAgIHZvaWQgY2xlYXJDYWNoZXMo
KTsKKwogICAgIC8vIFBhcnNlIGEgc2luZ2xlIGJhc2ljIGJsb2NrIG9mIGJ5dGVjb2RlIGluc3Ry
dWN0aW9ucy4KICAgICBib29sIHBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpOwogICAgIC8vIExp
bmsgYmxvY2sgc3VjY2Vzc29ycy4KQEAgLTI5Niw2ICszMDUsMTMgQEAgcHJpdmF0ZToKICAgICAg
ICAgCiAgICAgICAgIHJldHVybiBkZWxheWVkLmV4ZWN1dGUodGhpcywgc2V0TW9kZSk7CiAgICAg
fQorICAgIAorICAgIHZvaWQgcHJvY2Vzc1NldExvY2FsUXVldWUoKQorICAgIHsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2V0TG9jYWxRdWV1ZS5zaXplKCk7ICsraSkKKyAg
ICAgICAgICAgIG1fc2V0TG9jYWxRdWV1ZVtpXS5leGVjdXRlKHRoaXMpOworICAgICAgICBtX3Nl
dExvY2FsUXVldWUucmVzaXplKDApOworICAgIH0KIAogICAgIE5vZGUqIHNldChWaXJ0dWFsUmVn
aXN0ZXIgb3BlcmFuZCwgTm9kZSogdmFsdWUsIFNldE1vZGUgc2V0TW9kZSA9IE5vcm1hbFNldCkK
ICAgICB7CkBAIC02MzcsNiArNjUzLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KKyAgICAKKyAgICB2b2lkIHJlbW92ZUxhc3ROb2RlRnJvbUdy
YXBoKE5vZGVUeXBlIGV4cGVjdGVkTm9kZVR5cGUpCisgICAgeworICAgICAgICBOb2RlKiBub2Rl
ID0gbV9jdXJyZW50QmxvY2stPnRha2VMYXN0KCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG5v
ZGUtPm9wKCkgPT0gZXhwZWN0ZWROb2RlVHlwZSk7CisgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0
b3IuZnJlZShub2RlKTsKKyAgICB9CiAKICAgICB2b2lkIGFkZFZhckFyZ0NoaWxkKE5vZGUqIGNo
aWxkKQogICAgIHsKQEAgLTY0NSw3ICs2NjgsNyBAQCBwcml2YXRlOgogICAgIH0KICAgICAKICAg
ICBOb2RlKiBhZGRDYWxsV2l0aG91dFNldHRpbmdSZXN1bHQoCi0gICAgICAgIE5vZGVUeXBlIG9w
LCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAorICAgICAg
ICBOb2RlVHlwZSBvcCwgT3BJbmZvIG9wSW5mbywgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQs
IGludCByZWdpc3Rlck9mZnNldCwKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikK
ICAgICB7CiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGNhbGxlZSk7CkBAIC02NTcsMTUgKzY4MCwx
NSBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKGludCBpID0gMCArIGR1bW15VGhpc0FyZ3VtZW50
OyBpIDwgYXJnQ291bnQ7ICsraSkKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldCh2aXJ0
dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpLCByZWdpc3Rlck9mZnNldCkpKTsKIAotICAgICAgICBy
ZXR1cm4gYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIG9wLCBPcEluZm8oMCksIE9wSW5mbyhwcmVk
aWN0aW9uKSk7CisgICAgICAgIHJldHVybiBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgb3AsIG9w
SW5mbywgT3BJbmZvKHByZWRpY3Rpb24pKTsKICAgICB9CiAgICAgCiAgICAgTm9kZSogYWRkQ2Fs
bCgKLSAgICAgICAgaW50IHJlc3VsdCwgTm9kZVR5cGUgb3AsIE5vZGUqIGNhbGxlZSwgaW50IGFy
Z0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgICAgIGludCByZXN1bHQsIE5vZGVUeXBl
IG9wLCBPcEluZm8gb3BJbmZvLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lz
dGVyT2Zmc2V0LAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogICAgIHsKICAg
ICAgICAgTm9kZSogY2FsbCA9IGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdCgKLSAgICAgICAg
ICAgIG9wLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7Cisg
ICAgICAgICAgICBvcCwgb3BJbmZvLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCwg
cHJlZGljdGlvbik7CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHRSZWcocmVzdWx0KTsK
ICAgICAgICAgaWYgKHJlc3VsdFJlZy5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBzZXQoVmlydHVh
bFJlZ2lzdGVyKHJlc3VsdCksIGNhbGwpOwpAQCAtODcxLDggKzg5NCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIFZlY3RvcjxVbmxpbmtlZEJsb2NrPiBtX3VubGlua2VkQmxvY2tzOwogICAgICAgICAK
ICAgICAgICAgLy8gUG90ZW50aWFsIGJsb2NrIGxpbmtpbmcgdGFyZ2V0cy4gTXVzdCBiZSBzb3J0
ZWQgYnkgYnl0ZWNvZGVCZWdpbiwgYW5kCi0gICAgICAgIC8vIGNhbm5vdCBoYXZlIHR3byBibG9j
a3MgdGhhdCBoYXZlIHRoZSBzYW1lIGJ5dGVjb2RlQmVnaW4uIEZvciB0aGlzIHZlcnkKLSAgICAg
ICAgLy8gcmVhc29uLCB0aGlzIGlzIG5vdCBlcXVpdmFsZW50IHRvIAorICAgICAgICAvLyBjYW5u
b3QgaGF2ZSB0d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRlY29kZUJlZ2luLgogICAg
ICAgICBWZWN0b3I8QmFzaWNCbG9jayo+IG1fYmxvY2tMaW5raW5nVGFyZ2V0czsKICAgICAgICAg
CiAgICAgICAgIC8vIElmIHRoZSBjYWxsc2l0ZSdzIGJhc2ljIGJsb2NrIHdhcyBzcGxpdCBpbnRv
IHR3bywgdGhlbiB0aGlzIHdpbGwgYmUKQEAgLTEwMjgsNTMgKzEwNTAsMjcgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlQ2FsbCgKICAgICAgICAgLy8gT2RkbHksIHRoaXMgY29uZmxhdGVz
IGNhbGxzIHRoYXQgaGF2ZW4ndCBleGVjdXRlZCB3aXRoIGNhbGxzIHRoYXQgYmVoYXZlZCBzdWZm
aWNpZW50bHkgcG9seW1vcnBoaWNhbGx5CiAgICAgICAgIC8vIHRoYXQgd2UgY2Fubm90IG9wdGlt
aXplIHRoZW0uCiAgICAgICAgIAotICAgICAgICBhZGRDYWxsKHJlc3VsdCwgb3AsIGNhbGxUYXJn
ZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlv
bik7CisgICAgICAgIGFkZENhbGwocmVzdWx0LCBvcCwgT3BJbmZvKCksIGNhbGxUYXJnZXQsIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgbmV4dE9mZnNldCA9IG1f
Y3VycmVudEluZGV4ICsgaW5zdHJ1Y3Rpb25TaXplOworICAgIAorICAgIE9wSW5mbyBjYWxsT3BJ
bmZvOwogCi0gICAgaWYgKEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbExpbmtTdGF0
dXMuaW50ZXJuYWxGdW5jdGlvbigpKSB7Ci0gICAgICAgIGlmIChoYW5kbGVDb25zdGFudEludGVy
bmFsRnVuY3Rpb24ocmVzdWx0LCBmdW5jdGlvbiwgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCBwcmVkaWN0aW9uLCBzcGVjaWFsaXphdGlvbktpbmQpKSB7Ci0gICAg
ICAgICAgICAvLyBUaGlzIHBoYW50b21pbmcgaGFzIHRvIGJlICphZnRlciogdGhlIGNvZGUgZm9y
IHRoZSBpbnRyaW5zaWMsIHRvIHNpZ25pZnkgdGhhdAotICAgICAgICAgICAgLy8gdGhlIGlucHV0
cyBtdXN0IGJlIGtlcHQgYWxpdmUgd2hhdGV2ZXIgZXhpdHMgdGhlIGludHJpbnNpYyBtYXkgZG8u
Ci0gICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXQpOwotICAgICAgICAg
ICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBDYW4gb25seSBoYW5kbGUgdGhpcyB1c2luZyB0
aGUgZ2VuZXJpYyBjYWxsIGhhbmRsZXIuCi0gICAgICAgIGFkZENhbGwocmVzdWx0LCBvcCwgY2Fs
bFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVk
aWN0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAgICAgCi0gICAgSW50cmluc2lj
IGludHJpbnNpYyA9IGNhbGxMaW5rU3RhdHVzLmludHJpbnNpY0ZvcihzcGVjaWFsaXphdGlvbktp
bmQpOwotCi0gICAgSlNGdW5jdGlvbioga25vd25GdW5jdGlvbiA9IG51bGxwdHI7Ci0gICAgaWYg
KGludHJpbnNpYyAhPSBOb0ludHJpbnNpYykgewotICAgICAgICBlbWl0RnVuY3Rpb25DaGVja3Mo
Y2FsbExpbmtTdGF0dXMsIGNhbGxUYXJnZXQsIHJlZ2lzdGVyT2Zmc2V0LCBzcGVjaWFsaXphdGlv
bktpbmQpOwotICAgICAgICAgICAgCi0gICAgICAgIGlmIChoYW5kbGVJbnRyaW5zaWMocmVzdWx0
LCBpbnRyaW5zaWMsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
cHJlZGljdGlvbikpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgcGhhbnRvbWluZyBoYXMgdG8gYmUg
KmFmdGVyKiB0aGUgY29kZSBmb3IgdGhlIGludHJpbnNpYywgdG8gc2lnbmlmeSB0aGF0Ci0gICAg
ICAgICAgICAvLyB0aGUgaW5wdXRzIG11c3QgYmUga2VwdCBhbGl2ZSB3aGF0ZXZlciBleGl0cyB0
aGUgaW50cmluc2ljIG1heSBkby4KLSAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2Fs
bFRhcmdldCk7Ci0gICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNl
dCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7Ci0gICAg
ICAgICAgICBpZiAobV9ncmFwaC5jb21waWxhdGlvbigpKQotICAgICAgICAgICAgICAgIG1fZ3Jh
cGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZENhbGwoKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoaGFuZGxlSW5saW5pbmcoY2FsbFRhcmdldCwg
cmVzdWx0LCBjYWxsTGlua1N0YXR1cywgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBuZXh0T2Zmc2V0LCBraW5kKSkgeworICAgIGlmIChoYW5kbGVJbmxpbmluZyhj
YWxsVGFyZ2V0LCByZXN1bHQsIGNhbGxMaW5rU3RhdHVzLCByZWdpc3Rlck9mZnNldCwgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQsIG9wLCBraW5kLCBwcmVkaWN0aW9uKSkg
ewogICAgICAgICBpZiAobV9ncmFwaC5jb21waWxhdGlvbigpKQogICAgICAgICAgICAgbV9ncmFw
aC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkQ2FsbCgpOwogICAgICAgICByZXR1cm47CiAj
aWYgRU5BQkxFKEZUTF9OQVRJVkVfQ0FMTF9JTkxJTklORykKLSAgICB9IGVsc2UgaWYgKGlzRlRM
KG1fZ3JhcGgubV9wbGFuLm1vZGUpICYmIE9wdGlvbnM6Om9wdGltaXplTmF0aXZlQ2FsbHMoKSkg
ewotICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxMaW5rU3RhdHVzLmZ1bmN0aW9u
KCk7CisgICAgfSBlbHNlIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSAmJiBPcHRpb25z
OjpvcHRpbWl6ZU5hdGl2ZUNhbGxzKCkgJiYgY2FsbExpbmtTdGF0dXMuc2l6ZSgpID09IDEgJiYg
IWNhbGxMaW5rU3RhdHVzLmNvdWxkVGFrZVNsb3dQYXRoKCkpIHsKKyAgICAgICAgQ2FsbFZhcmlh
bnQgY2FsbGVlID0gY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVlKCk7CisgICAgICAgIEpTRnVuY3Rp
b24qIGZ1bmN0aW9uID0gY2FsbGVlLmZ1bmN0aW9uKCk7CiAgICAgICAgIGlmIChmdW5jdGlvbiAm
JiBmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSkgewotICAgICAgICAgICAgZW1pdEZ1bmN0aW9u
Q2hlY2tzKGNhbGxMaW5rU3RhdHVzLCBjYWxsVGFyZ2V0LCByZWdpc3Rlck9mZnNldCwgc3BlY2lh
bGl6YXRpb25LaW5kKTsKLSAgICAgICAgICAgIGtub3duRnVuY3Rpb24gPSBmdW5jdGlvbjsKKyAg
ICAgICAgICAgIGVtaXRGdW5jdGlvbkNoZWNrcyhjYWxsZWUsIGNhbGxUYXJnZXQsIHJlZ2lzdGVy
T2Zmc2V0LCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgICAgICAgICAgY2FsbE9wSW5mbyA9IE9w
SW5mbyhtX2dyYXBoLmZyZWV6ZShmdW5jdGlvbikpOwogCi0gICAgICAgICAgICBpZiAob3AgPT0g
Q2FsbCkgCisgICAgICAgICAgICBpZiAob3AgPT0gQ2FsbCkKICAgICAgICAgICAgICAgICBvcCA9
IE5hdGl2ZUNhbGw7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQo
b3AgPT0gQ29uc3RydWN0KTsKQEAgLTEwODMsMTMgKzEwNzksMTEgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlQ2FsbCgKICAgICAgICAgfQogI2VuZGlmCiAgICAgfQotICAgIE5vZGUqIGNh
bGwgPSBhZGRDYWxsKHJlc3VsdCwgb3AsIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7Ci0KLSAgICBpZiAoa25vd25GdW5j
dGlvbikgCi0gICAgICAgIGNhbGwtPmdpdmVLbm93bkZ1bmN0aW9uKGtub3duRnVuY3Rpb24pOwor
ICAgIAorICAgIGFkZENhbGwocmVzdWx0LCBvcCwgY2FsbE9wSW5mbywgY2FsbFRhcmdldCwgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKIH0K
IAotdm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdEZ1bmN0aW9uQ2hlY2tzKGNvbnN0IENhbGxMaW5r
U3RhdHVzJiBjYWxsTGlua1N0YXR1cywgTm9kZSogY2FsbFRhcmdldCwgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpl
bWl0RnVuY3Rpb25DaGVja3MoQ2FsbFZhcmlhbnQgY2FsbGVlLCBOb2RlKiBjYWxsVGFyZ2V0LCBp
bnQgcmVnaXN0ZXJPZmZzZXQsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICBO
b2RlKiB0aGlzQXJndW1lbnQ7CiAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpCkBAIC0xMDk3
LDIwICsxMDkxLDI1IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRGdW5jdGlvbkNoZWNrcygK
ICAgICBlbHNlCiAgICAgICAgIHRoaXNBcmd1bWVudCA9IDA7CiAKLSAgICBpZiAoY2FsbExpbmtT
dGF0dXMuaXNQcm92ZWQoKSkgewotICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJn
ZXQsIHRoaXNBcmd1bWVudCk7Ci0gICAgICAgIHJldHVybjsKKyAgICBKU0NlbGwqIGNhbGxlZUNl
bGw7CisgICAgTm9kZSogY2FsbFRhcmdldEZvckNoZWNrOworICAgIGlmIChjYWxsZWUuaXNDbG9z
dXJlQ2FsbCgpKSB7CisgICAgICAgIGNhbGxlZUNlbGwgPSBjYWxsZWUuZXhlY3V0YWJsZSgpOwor
ICAgICAgICBjYWxsVGFyZ2V0Rm9yQ2hlY2sgPSBhZGRUb0dyYXBoKEdldEV4ZWN1dGFibGUsIGNh
bGxUYXJnZXQpOworICAgIH0gZWxzZSB7CisgICAgICAgIGNhbGxlZUNlbGwgPSBjYWxsZWUubm9u
RXhlY3V0YWJsZUNhbGxlZSgpOworICAgICAgICBjYWxsVGFyZ2V0Rm9yQ2hlY2sgPSBjYWxsVGFy
Z2V0OwogICAgIH0KICAgICAKLSAgICBBU1NFUlQoY2FsbExpbmtTdGF0dXMuY2FuT3B0aW1pemUo
KSk7Ci0gICAgCi0gICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbExpbmtTdGF0dXMu
ZnVuY3Rpb24oKSkKLSAgICAgICAgYWRkVG9HcmFwaChDaGVja0Z1bmN0aW9uLCBPcEluZm8obV9n
cmFwaC5mcmVlemUoZnVuY3Rpb24pKSwgY2FsbFRhcmdldCwgdGhpc0FyZ3VtZW50KTsKLSAgICBl
bHNlIHsKLSAgICAgICAgQVNTRVJUKGNhbGxMaW5rU3RhdHVzLmV4ZWN1dGFibGUoKSk7Ci0gICAg
ICAgIAotICAgICAgICBhZGRUb0dyYXBoKENoZWNrRXhlY3V0YWJsZSwgT3BJbmZvKGNhbGxMaW5r
U3RhdHVzLmV4ZWN1dGFibGUoKSksIGNhbGxUYXJnZXQsIHRoaXNBcmd1bWVudCk7Ci0gICAgfQor
ICAgIEFTU0VSVChjYWxsZWVDZWxsKTsKKyAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZv
KG1fZ3JhcGguZnJlZXplKGNhbGxlZUNlbGwpKSwgY2FsbFRhcmdldEZvckNoZWNrLCB0aGlzQXJn
dW1lbnQpOworfQorCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjp1bmRvRnVuY3Rpb25DaGVja3MoQ2Fs
bFZhcmlhbnQgY2FsbGVlKQoreworICAgIHJlbW92ZUxhc3ROb2RlRnJvbUdyYXBoKENoZWNrQ2Vs
bCk7CisgICAgaWYgKGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpCisgICAgICAgIHJlbW92ZUxhc3RO
b2RlRnJvbUdyYXBoKEdldEV4ZWN1dGFibGUpOwogfQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpl
bWl0QXJndW1lbnRQaGFudG9tcyhpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpAQCAtMTExOSwzNiAr
MTExOCwyNSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0QXJndW1lbnRQaGFudG9tCiAgICAg
ICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGks
IHJlZ2lzdGVyT2Zmc2V0KSkpOwogfQogCi1ib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxp
bmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IENhbGxM
aW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFt
ZTo6S2luZCBraW5kKQordW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxs
VmFyaWFudCBjYWxsZWUsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kKQogewotICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBm
YWxzZTsKLSAgICAKLSAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2lu
ZCA9IElubGluZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOwotICAgIAog
ICAgIGlmICh2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyBpbmxpbmluZyAi
LCBjYWxsTGlua1N0YXR1cywgIiBpbnRvICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOwor
ICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyBpbmxpbmluZyAiLCBjYWxsZWUsICIgaW50byAi
LCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKICAgICAKLSAgICAvLyBGaXJzdCwgdGhlIHJl
YWxseSBzaW1wbGUgY2hlY2tzOiBkbyB3ZSBoYXZlIGFuIGFjdHVhbCBKUyBmdW5jdGlvbj8KLSAg
ICBpZiAoIWNhbGxMaW5rU3RhdHVzLmV4ZWN1dGFibGUoKSkgeworICAgIEZ1bmN0aW9uRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS5mdW5jdGlvbkV4ZWN1dGFibGUoKTsKKyAgICBpZiAo
IWV4ZWN1dGFibGUpIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAgICBkYXRhTG9n
KCIgICAgRmFpbGluZyBiZWNhdXNlIHRoZXJlIGlzIG5vIGV4ZWN1dGFibGUuXG4iKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBpZiAoY2FsbExpbmtTdGF0dXMuZXhlY3V0YWJs
ZSgpLT5pc0hvc3RGdW5jdGlvbigpKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAg
ICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSBpdCdzIGEgaG9zdCBmdW5jdGlvbi5cbiIp
OwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGlu
ZyBiZWNhdXNlIHRoZXJlIGlzIG5vIGZ1bmN0aW9uIGV4ZWN1dGFibGUuIik7CisgICAgICAgIHJl
dHVybiBVSU5UX01BWDsKICAgICB9CiAgICAgCi0gICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVj
dXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNhbGxMaW5rU3RhdHVzLmV4ZWN1
dGFibGUoKSk7Ci0gICAgCiAgICAgLy8gRG9lcyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyB3ZSdy
ZSBwYXNzaW5nIG1hdGNoIHRoZSBhcml0eSBvZiB0aGUgdGFyZ2V0PyBXZSBjdXJyZW50bHkKICAg
ICAvLyBpbmxpbmUgb25seSBpZiB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgaXMgZ3Jl
YXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBudW1iZXIKICAgICAvLyBhcmd1bWVudHMgZXhwZWN0
ZWQuCiAgICAgaWYgKHN0YXRpY19jYXN0PGludD4oZXhlY3V0YWJsZS0+cGFyYW1ldGVyQ291bnQo
KSkgKyAxID4gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpIHsKICAgICAgICAgaWYgKHZlcmJv
c2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIG9mIGFyaXR5IG1p
c21hdGNoLlxuIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFVJTlRf
TUFYOwogICAgIH0KICAgICAKICAgICAvLyBEbyB3ZSBoYXZlIGEgY29kZSBibG9jaywgYW5kIGRv
ZXMgdGhlIGNvZGUgYmxvY2sncyBzaXplIG1hdGNoIHRoZSBoZXVyaXN0aWNzL3JlcXVpcmVtZW50
cyBmb3IKQEAgLTExNTcsMTggKzExNDUsMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW5saW5pbmcoTm9kZQogICAgIC8vIGlmIHdlIGhhZCBhIHN0YXRpYyBwcm9vZiBvZiB3aGF0IHdh
cyBiZWluZyBjYWxsZWQ7IHRoaXMgbWlnaHQgaGFwcGVuIGZvciBleGFtcGxlIGlmIHlvdSBjYWxs
IGEKICAgICAvLyBnbG9iYWwgZnVuY3Rpb24sIHdoZXJlIHdhdGNocG9pbnRpbmcgZ2l2ZXMgdXMg
c3RhdGljIGluZm9ybWF0aW9uLiBPdmVyYWxsLCBpdCdzIGEgcmFyZSBjYXNlCiAgICAgLy8gYmVj
YXVzZSB3ZSBleHBlY3QgdGhhdCBhbnkgaG90IGNhbGxlZXMgd291bGQgaGF2ZSBhbHJlYWR5IGJl
ZW4gY29tcGlsZWQuCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5iYXNl
bGluZUNvZGVCbG9ja0ZvcihzcGVjaWFsaXphdGlvbktpbmQpOworICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gZXhlY3V0YWJsZS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Ioa2luZCk7CiAgICAgaWYg
KCFjb2RlQmxvY2spIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9n
KCIgICAgRmFpbGluZyBiZWNhdXNlIG5vIGNvZGUgYmxvY2sgYXZhaWxhYmxlLlxuIik7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgIH0KICAgICBD
YXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsID0gaW5saW5lRnVuY3Rpb25Gb3JDYXBhYmls
aXR5TGV2ZWwoCi0gICAgICAgIGNvZGVCbG9jaywgc3BlY2lhbGl6YXRpb25LaW5kLCBjYWxsTGlu
a1N0YXR1cy5pc0Nsb3N1cmVDYWxsKCkpOworICAgICAgICBjb2RlQmxvY2ssIGtpbmQsIGNhbGxl
ZS5pc0Nsb3N1cmVDYWxsKCkpOwogICAgIGlmICghY2FuSW5saW5lKGNhcGFiaWxpdHlMZXZlbCkp
IHsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGlu
ZyBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpcyBub3QgaW5saW5lYWJsZS5cbiIpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CiAgICAgCiAgICAg
Ly8gQ2hlY2sgaWYgdGhlIGNhbGxlciBpcyBhbHJlYWR5IHRvbyBsYXJnZS4gV2UgZG8gdGhpcyBj
aGVjayBoZXJlIGJlY2F1c2UgdGhhdCdzIGp1c3QKQEAgLTExNzgsNyArMTE2Niw3IEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAgICAgY29kZUJsb2NrLT5t
X3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNlOwogICAgICAgICBpZiAodmVyYm9zZSkKICAg
ICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgdGhlIGNhbGxlciBpcyB0b28g
bGFyZ2UuXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gVUlOVF9N
QVg7CiAgICAgfQogICAgIAogICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBiZXR0ZXIgYXQg
cHJlZGljdGluZyBob3cgbXVjaCBibG9hdCB3ZSB3aWxsIGludHJvZHVjZSBieSBpbmxpbmluZwpA
QCAtMTE5Nyw3ICsxMTg1LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmco
Tm9kZQogICAgICAgICBpZiAoZGVwdGggPj0gT3B0aW9uczo6bWF4aW11bUlubGluaW5nRGVwdGgo
KSkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygi
ICAgIEZhaWxpbmcgYmVjYXVzZSBkZXB0aCBleGNlZWRlZC5cbiIpOwotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICBpZiAoZW50cnktPmV4ZWN1dGFibGUoKSA9PSBleGVjdXRhYmxlKSB7CkBA
IC0xMjA1LDE5ICsxMTkzLDI2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5n
KE5vZGUKICAgICAgICAgICAgIGlmIChyZWN1cnNpb24gPj0gT3B0aW9uczo6bWF4aW11bUlubGlu
aW5nUmVjdXJzaW9uKCkpIHsKICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSByZWN1cnNpb24gZGV0ZWN0
ZWQuXG4iKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
cmV0dXJuIFVJTlRfTUFYOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIAog
ICAgIGlmICh2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKCIgICAgQ29tbWl0dGluZyB0byBpbmxp
bmluZy5cbiIpOworICAgICAgICBkYXRhTG9nKCIgICAgSW5saW5pbmcgc2hvdWxkIGJlIHBvc3Np
YmxlLlxuIik7CiAgICAgCi0gICAgLy8gTm93IHdlIGtub3cgd2l0aG91dCBhIGRvdWJ0IHRoYXQg
d2UgYXJlIGNvbW1pdHRlZCB0byBpbmxpbmluZy4gU28gYmVnaW4gdGhlIHByb2Nlc3MKLSAgICAv
LyBieSBjaGVja2luZyB0aGUgY2FsbGVlIChpZiBuZWNlc3NhcnkpIGFuZCBtYWtpbmcgc3VyZSB0
aGF0IGFyZ3VtZW50cyBhbmQgdGhlIGNhbGxlZQotICAgIC8vIGFyZSBmbHVzaGVkLgotICAgIGVt
aXRGdW5jdGlvbkNoZWNrcyhjYWxsTGlua1N0YXR1cywgY2FsbFRhcmdldE5vZGUsIHJlZ2lzdGVy
T2Zmc2V0LCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgIC8vIEl0IG1pZ2h0IGJlIHBvc3NpYmxl
IHRvIGlubGluZS4KKyAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCk7Cit9
CisKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUs
IGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyaWFudCBjYWxsZWUsIGludCByZWdpc3Rlck9mZnNl
dCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBJ
bmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgQ2FsbGVyTGlua2FiaWxpdHkgY2FsbGVyTGlua2Fi
aWxpdHkpCit7CisgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQg
PSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5kKTsKICAgICAKKyAg
ICBBU1NFUlQoaW5saW5pbmdDb3N0KGNhbGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IHNwZWNpYWxpemF0aW9uS2luZCkgIT0gVUlOVF9NQVgpOworICAgIAorICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gY2FsbGVlLmZ1bmN0aW9uRXhlY3V0YWJsZSgpLT5iYXNlbGluZUNvZGVCbG9j
a0ZvcihzcGVjaWFsaXphdGlvbktpbmQpOworCiAgICAgLy8gRklYTUU6IERvbid0IGZsdXNoIGNv
bnN0YW50cyEKICAgICAKICAgICBpbnQgaW5saW5lQ2FsbEZyYW1lU3RhcnQgPSBtX2lubGluZVN0
YWNrVG9wLT5yZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0KSkub2Zm
c2V0KCkgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOwpAQCAtMTIzMyw3ICsxMjI4LDcg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgICAgICByZXN1
bHRSZWcgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQocmVzdWx0UmVnKTsKICAgICAK
ICAgICBJbmxpbmVTdGFja0VudHJ5IGlubGluZVN0YWNrRW50cnkoCi0gICAgICAgIHRoaXMsIGNv
ZGVCbG9jaywgY29kZUJsb2NrLCBtX2dyYXBoLmxhc3RCbG9jaygpLCBjYWxsTGlua1N0YXR1cy5m
dW5jdGlvbigpLCByZXN1bHRSZWcsCisgICAgICAgIHRoaXMsIGNvZGVCbG9jaywgY29kZUJsb2Nr
LCBtX2dyYXBoLmxhc3RCbG9jaygpLCBjYWxsZWUuZnVuY3Rpb24oKSwgcmVzdWx0UmVnLAogICAg
ICAgICAoVmlydHVhbFJlZ2lzdGVyKWlubGluZUNhbGxGcmFtZVN0YXJ0LCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywga2luZCk7CiAgICAgCiAgICAgLy8gVGhpcyBpcyB3aGVyZSB0aGUgYWN0
dWFsIGlubGluaW5nIHJlYWxseSBoYXBwZW5zLgpAQCAtMTI0Nyw4ICsxMjQyLDggQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgIAogICAgIFJFTEVBU0VfQVNT
RVJUKAogICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxGcmFtZS0+aXNDbG9z
dXJlQ2FsbAotICAgICAgICA9PSBjYWxsTGlua1N0YXR1cy5pc0Nsb3N1cmVDYWxsKCkpOwotICAg
IGlmIChjYWxsTGlua1N0YXR1cy5pc0Nsb3N1cmVDYWxsKCkpIHsKKyAgICAgICAgPT0gY2FsbGVl
LmlzQ2xvc3VyZUNhbGwoKSk7CisgICAgaWYgKGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpIHsKICAg
ICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBjYWxsZWVWYXJpYWJsZSA9CiAgICAgICAgICAgICBz
ZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkNhbGxlZSksIGNhbGxUYXJnZXROb2RlLCBJbW1l
ZGlhdGVOYWtlZFNldCktPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwogICAgICAgICBWYXJpYWJsZUFj
Y2Vzc0RhdGEqIHNjb3BlVmFyaWFibGUgPQpAQCAtMTI2Myw3ICsxMjU4LDcgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgIG1fZ3JhcGgubV9pbmxpbmVWYXJp
YWJsZURhdGEuYXBwZW5kKGlubGluZVZhcmlhYmxlRGF0YSk7CiAgICAgCiAgICAgcGFyc2VDb2Rl
QmxvY2soKTsKLSAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7IC8vIFJlc2V0IG91ciBzdGF0ZSBu
b3cgdGhhdCB3ZSdyZSBiYWNrIHRvIHRoZSBvdXRlciBjb2RlLgorICAgIGNsZWFyQ2FjaGVzKCk7
IC8vIFJlc2V0IG91ciBzdGF0ZSBub3cgdGhhdCB3ZSdyZSBiYWNrIHRvIHRoZSBvdXRlciBjb2Rl
LgogICAgIAogICAgIG1fY3VycmVudEluZGV4ID0gb2xkSW5kZXg7CiAgICAgCkBAIC0xMjc2LDIw
ICsxMjcxLDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxzaXRl
QmxvY2tIZWFkLT5pc0xpbmtlZCk7CiAgICAgICAgIAotICAgICAgICAvLyBJdCdzIHBvc3NpYmxl
IHRoYXQgdGhlIGNhbGxzaXRlIGJsb2NrIGhlYWQgaXMgbm90IG93bmVkIGJ5IHRoZSBjYWxsZXIu
Ci0gICAgICAgIGlmICghaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nr
cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIC8vIEl0J3MgZGVmaW5pdGVseSBvd25lZCBieSB0
aGUgY2FsbGVyLCBiZWNhdXNlIHRoZSBjYWxsZXIgY3JlYXRlZCBuZXcgYmxvY2tzLgotICAgICAg
ICAgICAgLy8gQXNzZXJ0IHRoYXQgdGhpcyBhbGwgYWRkcyB1cC4KLSAgICAgICAgICAgIEFTU0VS
VChpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX2Js
b2NrID09IGlubGluZVN0YWNrRW50cnkubV9jYWxsc2l0ZUJsb2NrSGVhZCk7Ci0gICAgICAgICAg
ICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0
KCkubV9uZWVkc05vcm1hbExpbmtpbmcpOwotICAgICAgICAgICAgaW5saW5lU3RhY2tFbnRyeS5t
X2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9uZWVkc05vcm1hbExpbmtpbmcgPSBm
YWxzZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIEl0J3MgZGVmaW5pdGVseSBu
b3Qgb3duZWQgYnkgdGhlIGNhbGxlci4gVGVsbCB0aGUgY2FsbGVyIHRoYXQgaGUgZG9lcyBub3QK
LSAgICAgICAgICAgIC8vIG5lZWQgdG8gbGluayBoaXMgY2FsbHNpdGUgYmxvY2sgaGVhZCwgYmVj
YXVzZSB3ZSBkaWQgaXQgZm9yIGhpbS4KLSAgICAgICAgICAgIEFTU0VSVChpbmxpbmVTdGFja0Vu
dHJ5Lm1fY2FsbGVyLT5tX2NhbGxzaXRlQmxvY2tIZWFkTmVlZHNMaW5raW5nKTsKLSAgICAgICAg
ICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLT5tX2NhbGxzaXRlQmxvY2tIZWFk
ID09IGlubGluZVN0YWNrRW50cnkubV9jYWxsc2l0ZUJsb2NrSGVhZCk7Ci0gICAgICAgICAgICBp
bmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLT5tX2NhbGxzaXRlQmxvY2tIZWFkTmVlZHNMaW5raW5n
ID0gZmFsc2U7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGNhbGxlckxpbmthYmlsaXR5ID09IENh
bGxlckRvZXNOb3JtYWxMaW5raW5nKQorICAgICAgICAgICAgY2FuY2VsTGlua2luZ0ZvckJsb2Nr
KGlubGluZVN0YWNrRW50cnkubV9jYWxsZXIsIGlubGluZVN0YWNrRW50cnkubV9jYWxsc2l0ZUJs
b2NrSGVhZCk7CiAgICAgICAgIAogICAgICAgICBsaW5rQmxvY2tzKGlubGluZVN0YWNrRW50cnku
bV91bmxpbmtlZEJsb2NrcywgaW5saW5lU3RhY2tFbnRyeS5tX2Jsb2NrTGlua2luZ1RhcmdldHMp
OwogICAgIH0gZWxzZQpAQCAtMTMwOCwxNiArMTI5MSwxOSBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgICAgICAgICAvLyBmb3IgcmVsZWFzZSBidWlsZHMg
YmVjYXVzZSB0aGlzIGJsb2NrIHdpbGwgbmV2ZXIgc2VydmUgYXMgYSBwb3RlbnRpYWwgdGFyZ2V0
CiAgICAgICAgICAgICAvLyBpbiB0aGUgbGlua2VyJ3MgYmluYXJ5IHNlYXJjaC4KICAgICAgICAg
ICAgIGxhc3RCbG9jay0+Ynl0ZWNvZGVCZWdpbiA9IG1fY3VycmVudEluZGV4OwotICAgICAgICAg
ICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVu
bGlua2VkQmxvY2sobV9ncmFwaC5sYXN0QmxvY2soKSkpOworICAgICAgICAgICAgaWYgKGNhbGxl
ckxpbmthYmlsaXR5ID09IENhbGxlckRvZXNOb3JtYWxMaW5raW5nKSB7CisgICAgICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkFkZGluZyB1bmxp
bmtlZCBibG9jayAiLCBSYXdQb2ludGVyKG1fZ3JhcGgubGFzdEJsb2NrKCkpLCAiIChvbmUgcmV0
dXJuKVxuIik7CisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1f
dW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2sobV9ncmFwaC5sYXN0QmxvY2soKSkp
OworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBtX2N1cnJlbnRC
bG9jayA9IG1fZ3JhcGgubGFzdEJsb2NrKCk7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIAogICAgIC8vIElmIHdlIGdldCB0byB0aGlzIHBvaW50IHRo
ZW4gYWxsIGJsb2NrcyBtdXN0IGVuZCBpbiBzb21lIHNvcnQgb2YgdGVybWluYWxzLgogICAgIEFT
U0VSVChsYXN0QmxvY2stPmxhc3QoKS0+aXNUZXJtaW5hbCgpKTsKLSAgICAKIAogICAgIC8vIE5l
ZWQgdG8gY3JlYXRlIGEgbmV3IGJhc2ljIGJsb2NrIGZvciB0aGUgY29udGludWF0aW9uIGF0IHRo
ZSBjYWxsZXIuCiAgICAgUmVmUHRyPEJhc2ljQmxvY2s+IGJsb2NrID0gYWRvcHRSZWYobmV3IEJh
c2ljQmxvY2sobmV4dE9mZnNldCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCBQTmFOKSk7
CkBAIC0xMzMzLDIwICsxMzE5LDI5MyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxp
bmluZyhOb2RlCiAgICAgICAgIEFTU0VSVCghbm9kZS0+dGFyZ2V0QmxvY2soKSk7CiAgICAgICAg
IG5vZGUtPnRhcmdldEJsb2NrKCkgPSBibG9jay5nZXQoKTsKICAgICAgICAgaW5saW5lU3RhY2tF
bnRyeS5tX3VubGlua2VkQmxvY2tzW2ldLm1fbmVlZHNFYXJseVJldHVybkxpbmtpbmcgPSBmYWxz
ZTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgICAgIGJsb2NrVG9MaW5rLT5pc0xpbmtlZCA9
IHRydWU7Ci0jZW5kaWYKKyAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBkYXRhTG9n
KCJNYXJraW5nICIsIFJhd1BvaW50ZXIoYmxvY2tUb0xpbmspLCAiIGFzIGxpbmtlZCAoanVtcHMg
dG8gcmV0dXJuKVxuIik7CisgICAgICAgIGJsb2NrVG9MaW5rLT5kaWRMaW5rKCk7CiAgICAgfQog
ICAgIAogICAgIG1fY3VycmVudEJsb2NrID0gYmxvY2suZ2V0KCk7CiAgICAgQVNTRVJUKG1faW5s
aW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuaXNFbXB0eSgpIHx8
IG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMubGFzdCgp
LT5ieXRlY29kZUJlZ2luIDwgbmV4dE9mZnNldCk7Ci0gICAgbV9pbmxpbmVTdGFja1RvcC0+bV9j
YWxsZXItPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2suZ2V0KCkp
KTsKLSAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRz
LmFwcGVuZChibG9jay5nZXQoKSk7CisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGRhdGFMb2co
IkFkZGluZyB1bmxpbmtlZCBibG9jayAiLCBSYXdQb2ludGVyKGJsb2NrLmdldCgpKSwgIiAobWFu
eSByZXR1cm5zKVxuIik7CisgICAgaWYgKGNhbGxlckxpbmthYmlsaXR5ID09IENhbGxlckRvZXNO
b3JtYWxMaW5raW5nKSB7CisgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX3Vu
bGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLmdldCgpKSk7CisgICAgICAg
IG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuYXBwZW5k
KGJsb2NrLmdldCgpKTsKKyAgICB9CiAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhibG9jayk7CiAg
ICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOworfQorCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpjYW5j
ZWxMaW5raW5nRm9yQmxvY2soSW5saW5lU3RhY2tFbnRyeSogaW5saW5lU3RhY2tFbnRyeSwgQmFz
aWNCbG9jayogYmxvY2spCit7CisgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHRoZSBjYWxsc2l0
ZSBibG9jayBoZWFkIGlzIG5vdCBvd25lZCBieSB0aGUgY2FsbGVyLgorICAgIGlmICghaW5saW5l
U3RhY2tFbnRyeS0+bV91bmxpbmtlZEJsb2Nrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gSXQn
cyBkZWZpbml0ZWx5IG93bmVkIGJ5IHRoZSBjYWxsZXIsIGJlY2F1c2UgdGhlIGNhbGxlciBjcmVh
dGVkIG5ldyBibG9ja3MuCisgICAgICAgIC8vIEFzc2VydCB0aGF0IHRoaXMgYWxsIGFkZHMgdXAu
CisgICAgICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5LT5tX3VubGlua2VkQmxvY2tzLmxhc3Qo
KS5tX2Jsb2NrID09IGJsb2NrKTsKKyAgICAgICAgQVNTRVJUKGlubGluZVN0YWNrRW50cnktPm1f
dW5saW5rZWRCbG9ja3MubGFzdCgpLm1fbmVlZHNOb3JtYWxMaW5raW5nKTsKKyAgICAgICAgaW5s
aW5lU3RhY2tFbnRyeS0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9uZWVkc05vcm1hbExpbmtp
bmcgPSBmYWxzZTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBJdCdzIGRlZmluaXRlbHkgbm90
IG93bmVkIGJ5IHRoZSBjYWxsZXIuIFRlbGwgdGhlIGNhbGxlciB0aGF0IGhlIGRvZXMgbm90Cisg
ICAgICAgIC8vIG5lZWQgdG8gbGluayBoaXMgY2FsbHNpdGUgYmxvY2sgaGVhZCwgYmVjYXVzZSB3
ZSBkaWQgaXQgZm9yIGhpbS4KKyAgICAgICAgQVNTRVJUKGlubGluZVN0YWNrRW50cnktPm1fY2Fs
bHNpdGVCbG9ja0hlYWROZWVkc0xpbmtpbmcpOworICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tF
bnRyeS0+bV9jYWxsc2l0ZUJsb2NrSGVhZCA9PSBibG9jayk7CisgICAgICAgIGlubGluZVN0YWNr
RW50cnktPm1fY2FsbHNpdGVCbG9ja0hlYWROZWVkc0xpbmtpbmcgPSBmYWxzZTsKKyAgICB9Cit9
CisKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmF0dGVtcHRUb0lubGluZUNhbGwoTm9kZSogY2FsbFRh
cmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyaWFudCBjYWxsZWUsIGludCByZWdp
c3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0
T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgQ2FsbGVyTGlua2FiaWxpdHkgY2Fs
bGVyTGlua2FiaWxpdHksIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxp
bmluZ0JhbGFuY2UpCit7CisgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlv
bktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5kKTsKKyAg
ICAKKyAgICBpZiAoIWlubGluaW5nQmFsYW5jZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IAorICAgIGlmIChJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS5pbnRlcm5hbEZ1
bmN0aW9uKCkpIHsKKyAgICAgICAgaWYgKGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihy
ZXN1bHRPcGVyYW5kLCBmdW5jdGlvbiwgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQpKSB7CisgICAgICAgICAgICBhZGRUb0dyYXBo
KFBoYW50b20sIGNhbGxUYXJnZXROb2RlKTsKKyAgICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50
b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6
YXRpb25LaW5kKTsKKyAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZS0tOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAg
ICAKLSAgICAvLyBBdCB0aGlzIHBvaW50IHdlIHJldHVybiBhbmQgY29udGludWUgdG8gZ2VuZXJh
dGUgY29kZSBmb3IgdGhlIGNhbGxlciwgYnV0Ci0gICAgLy8gaW4gdGhlIG5ldyBiYXNpYyBibG9j
ay4KKyAgICBJbnRyaW5zaWMgaW50cmluc2ljID0gY2FsbGVlLmludHJpbnNpY0ZvcihzcGVjaWFs
aXphdGlvbktpbmQpOworICAgIGlmIChpbnRyaW5zaWMgIT0gTm9JbnRyaW5zaWMpIHsKKyAgICAg
ICAgaWYgKGhhbmRsZUludHJpbnNpYyhyZXN1bHRPcGVyYW5kLCBpbnRyaW5zaWMsIHJlZ2lzdGVy
T2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbikpIHsKKyAgICAg
ICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldE5vZGUpOworICAgICAgICAgICAg
ZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgICAgICAgICAgaW5saW5pbmdCYWxhbmNl
LS07CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIG15SW5saW5pbmdDb3N0ID0gaW5saW5p
bmdDb3N0KGNhbGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9u
S2luZCk7CisgICAgaWYgKG15SW5saW5pbmdDb3N0ID4gaW5saW5pbmdCYWxhbmNlKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaW5saW5lQ2FsbChjYWxsVGFyZ2V0Tm9kZSwgcmVz
dWx0T3BlcmFuZCwgY2FsbGVlLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIG5leHRPZmZzZXQsIGtpbmQsIGNhbGxlckxpbmthYmlsaXR5KTsKKyAgICBpbmxpbmlu
Z0JhbGFuY2UgLT0gbXlJbmxpbmluZ0Nvc3Q7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQg
cmVzdWx0T3BlcmFuZCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBpbnQg
cmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQg
bmV4dE9mZnNldCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKK3sKKyAgICBpZiAodmVyYm9zZSkgeworICAgICAg
ICBkYXRhTG9nKCJIYW5kbGluZyBpbmxpbmluZy4uLlxuIik7CisgICAgICAgIGRhdGFMb2coIlN0
YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKKyAgICB9CisgICAgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNp
YWxpemF0aW9uS2luZEZvcihraW5kKTsKKyAgICAKKyAgICBpZiAoIWNhbGxMaW5rU3RhdHVzLnNp
emUoKSkgeworICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGRhdGFMb2coIkJhaWxp
bmcgaW5saW5pbmcuXG4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAg
ICB1bnNpZ25lZCBpbmxpbmluZ0JhbGFuY2UgPSBPcHRpb25zOjptYXhpbXVtRnVuY3Rpb25Gb3JD
YWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgpOworICAgIGlmIChzcGVjaWFsaXph
dGlvbktpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCkKKyAgICAgICAgaW5saW5pbmdCYWxhbmNlID0g
c3RkOjptaW4oaW5saW5pbmdCYWxhbmNlLCBPcHRpb25zOjptYXhpbXVtRnVuY3Rpb25Gb3JDb25z
dHJ1Y3RJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCkpOworICAgIGlmIChjYWxsTGlu
a1N0YXR1cy5pc0Nsb3N1cmVDYWxsKCkpCisgICAgICAgIGlubGluaW5nQmFsYW5jZSA9IHN0ZDo6
bWluKGlubGluaW5nQmFsYW5jZSwgT3B0aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9yQ2xvc3VyZUNh
bGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCkpOworICAgIAorICAgIC8vIEZpcnN0
IGNoZWNrIGlmIHdlIGNhbiBhdm9pZCBjcmVhdGluZyBjb250cm9sIGZsb3cuIE91ciBpbmxpbmVy
IGRvZXMgc29tZSBDRkcKKyAgICAvLyBzaW1wbGlmaWNhdGlvbiBvbiB0aGUgZmx5IGFuZCB0aGlz
IGhlbHBzIHJlZHVjZSBjb21waWxlIHRpbWVzLCBidXQgd2UgY2FuIG9ubHkgbGV2ZXJhZ2UKKyAg
ICAvLyB0aGlzIGluIGNhc2VzIHdoZXJlIHdlIGRvbid0IG5lZWQgY29udHJvbCBmbG93IGRpYW1v
bmRzIHRvIGNoZWNrIHRoZSBjYWxsZWUuCisgICAgaWYgKCFjYWxsTGlua1N0YXR1cy5jb3VsZFRh
a2VTbG93UGF0aCgpICYmIGNhbGxMaW5rU3RhdHVzLnNpemUoKSA9PSAxKSB7CisgICAgICAgIGVt
aXRGdW5jdGlvbkNoZWNrcygKKyAgICAgICAgICAgIGNhbGxMaW5rU3RhdHVzWzBdLmNhbGxlZSgp
LCBjYWxsVGFyZ2V0Tm9kZSwgcmVnaXN0ZXJPZmZzZXQsIHNwZWNpYWxpemF0aW9uS2luZCk7Cisg
ICAgICAgIGJvb2wgcmVzdWx0ID0gYXR0ZW1wdFRvSW5saW5lQ2FsbCgKKyAgICAgICAgICAgIGNh
bGxUYXJnZXROb2RlLCByZXN1bHRPcGVyYW5kLCBjYWxsTGlua1N0YXR1c1swXS5jYWxsZWUoKSwg
cmVnaXN0ZXJPZmZzZXQsCisgICAgICAgICAgICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
bmV4dE9mZnNldCwga2luZCwgQ2FsbGVyRG9lc05vcm1hbExpbmtpbmcsIHByZWRpY3Rpb24sCisg
ICAgICAgICAgICBpbmxpbmluZ0JhbGFuY2UpOworICAgICAgICBpZiAoIXJlc3VsdCAmJiAhY2Fs
bExpbmtTdGF0dXMuaXNQcm92ZWQoKSkKKyAgICAgICAgICAgIHVuZG9GdW5jdGlvbkNoZWNrcyhj
YWxsTGlua1N0YXR1c1swXS5jYWxsZWUoKSk7CisgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAg
ICAgICAgICBkYXRhTG9nKCJEb25lIGlubGluaW5nIChzaW1wbGUpLlxuIik7CisgICAgICAgICAg
ICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgLy8gV2UgbmVlZCB0
byBjcmVhdGUgc29tZSBraW5kIG9mIHN3aXRjaCBvdmVyIGNhbGxlZS4gRm9yIG5vdyB3ZSBvbmx5
IGRvIHRoaXMgaWYgd2UgYmVsaWV2ZSB0aGF0CisgICAgLy8gd2UncmUgaW4gdGhlIHRvcCB0aWVy
LiBXZSBoYXZlIHR3byByZWFzb25zIGZvciB0aGlzOiBmaXJzdCwgaXQgcHJvdmlkZXMgdXMgYW4g
b3Bwb3J0dW5pdHkgdG8KKyAgICAvLyBkbyBtb3JlIGRldGFpbGVkIHBvbHl2YXJpYW50L3BvbHlt
b3JwaGljIHByb2ZpbGluZzsgYW5kIHNlY29uZCwgaXQgcmVkdWNlcyBjb21waWxlIHRpbWVzIGlu
CisgICAgLy8gdGhlIERGRy4gQW5kIGJ5IHBvbHl2YXJpYW50IHByb2ZpbGluZyB3ZSBtZWFuIHBv
bHl2YXJpYW50IHByb2ZpbGluZyBvZiAqdGhpcyogY2FsbC4gTm90ZSB0aGF0CisgICAgLy8gd2Ug
Y291bGQgaW1wcm92ZSB0aGF0IGFzcGVjdCBvZiB0aGlzIGJ5IGRvaW5nIHBvbHltb3JwaGljIGlu
bGluaW5nIGJ1dCBoYXZpbmcgdGhlIHByb2ZpbGluZworICAgIC8vIGFsc28uIEN1cnJlbnRseSB3
ZSBvcHQgYWdhaW5zdCB0aGlzLCBidXQgaXQgY291bGQgYmUgaW50ZXJlc3RpbmcuIFRoYXQgd291
bGQgcmVxdWlyZSBoYXZpbmcgYQorICAgIC8vIHNlcGFyYXRlIG5vZGUgZm9yIGNhbGwgZWRnZSBw
cm9maWxpbmcuCisgICAgLy8gRklYTUU6IEludHJvZHVjZSB0aGUgbm90aW9uIG9mIGEgc2VwYXJh
dGUgY2FsbCBlZGdlIHByb2ZpbGluZyBub2RlLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYwMzMKKyAgICBpZiAoIWlzRlRMKG1fZ3JhcGgubV9wbGFu
Lm1vZGUpIHx8ICFPcHRpb25zOjplbmFibGVQb2x5bW9ycGhpY0NhbGxJbmxpbmluZygpKSB7Cisg
ICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICBkYXRhTG9nKCJCYWlsaW5nIGlubGlu
aW5nIChoYXJkKS5cbiIpOworICAgICAgICAgICAgZGF0YUxvZygiU3RhY2s6ICIsIGN1cnJlbnRD
b2RlT3JpZ2luKCksICJcbiIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgCisgICAgdW5zaWduZWQgb2xkT2Zmc2V0ID0gbV9jdXJyZW50SW5kZXg7CisgICAg
CisgICAgYm9vbCBhbGxBcmVDbG9zdXJlQ2FsbHMgPSB0cnVlOworICAgIGJvb2wgYWxsQXJlRGly
ZWN0Q2FsbHMgPSB0cnVlOworICAgIGZvciAodW5zaWduZWQgaSA9IGNhbGxMaW5rU3RhdHVzLnNp
emUoKTsgaS0tOykgeworICAgICAgICBpZiAoY2FsbExpbmtTdGF0dXNbaV0uY2FsbGVlKCkuaXND
bG9zdXJlQ2FsbCgpKQorICAgICAgICAgICAgYWxsQXJlRGlyZWN0Q2FsbHMgPSBmYWxzZTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgYWxsQXJlQ2xvc3VyZUNhbGxzID0gZmFsc2U7CisgICAg
fQorICAgIAorICAgIE5vZGUqIHRoaW5nVG9Td2l0Y2hPbjsKKyAgICBpZiAoYWxsQXJlRGlyZWN0
Q2FsbHMpCisgICAgICAgIHRoaW5nVG9Td2l0Y2hPbiA9IGNhbGxUYXJnZXROb2RlOworICAgIGVs
c2UgaWYgKGFsbEFyZUNsb3N1cmVDYWxscykKKyAgICAgICAgdGhpbmdUb1N3aXRjaE9uID0gYWRk
VG9HcmFwaChHZXRFeGVjdXRhYmxlLCBjYWxsVGFyZ2V0Tm9kZSk7CisgICAgZWxzZSB7CisgICAg
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgdGhpcyBjYXNlLCBidXQg
aXQncyB0cmlja3kgYW5kIHdlIGRvbid0IGtub3cgb2YgY2FzZXMKKyAgICAgICAgLy8gd2hlcmUg
aXQgd291bGQgYmUgYmVuZWZpY2lhbC4gQWxzbywgQ2FsbExpbmtTdGF0dXMgd291bGQgbWFrZSBh
bGwgY2FsbGVlcyBhcHBlYXIgbGlrZQorICAgICAgICAvLyBjbG9zdXJlIGNhbGxzIGlmIGFueSBj
YWxscyB3ZXJlIGNsb3N1cmUgY2FsbHMgLSBleGNlcHQgZm9yIGNhbGxzIHRvIGludGVybmFsIGZ1
bmN0aW9ucy4KKyAgICAgICAgLy8gU28gdGhpcyB3aWxsIG9ubHkgYXJpc2UgaWYgc29tZSBjYWxs
ZWVzIGFyZSBpbnRlcm5hbCBmdW5jdGlvbnMgYW5kIG90aGVycyBhcmUgY2xvc3VyZXMuCisgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYwMjAKKyAg
ICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgIGRhdGFMb2coIkJhaWxpbmcgaW5saW5p
bmcgKG1peCkuXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29k
ZU9yaWdpbigpLCAiXG4iKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIAorICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGRhdGFMb2coIkRvaW5nIGhhcmQg
aW5saW5pbmcuLi5cbiIpOworICAgICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVP
cmlnaW4oKSwgIlxuIik7CisgICAgfQorICAgIAorICAgIC8vIFRoaXMgbWFrZXMgbWUgd2lzaCB0
aGF0IHdlIHdlcmUgaW4gU1NBIGFsbCB0aGUgdGltZS4gV2UgbmVlZCB0byBwaWNrIGEgdmFyaWFi
bGUgaW50byB3aGljaCB0bworICAgIC8vIHN0b3JlIHRoZSBjYWxsZWUgc28gdGhhdCBpdCB3aWxs
IGJlIGFjY2Vzc2libGUgdG8gYWxsIG9mIHRoZSBibG9ja3Mgd2UncmUgYWJvdXQgdG8gY3JlYXRl
LiBXZQorICAgIC8vIGdldCBhd2F5IHdpdGggZG9pbmcgYW4gaW1tZWRpYXRlLXNldCBoZXJlIGJl
Y2F1c2Ugd2Ugd291bGRuJ3QgaGF2ZSBwZXJmb3JtZWQgYW55IHNpZGUgZWZmZWN0cworICAgIC8v
IHlldC4KKyAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygiUmVnaXN0ZXIgb2Zmc2V0
OiAiLCByZWdpc3Rlck9mZnNldCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZVJlZyhyZWdp
c3Rlck9mZnNldCArIEpTU3RhY2s6OkNhbGxlZSk7CisgICAgY2FsbGVlUmVnID0gbV9pbmxpbmVT
dGFja1RvcC0+cmVtYXBPcGVyYW5kKGNhbGxlZVJlZyk7CisgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgIGRhdGFMb2coIkNhbGxlZSBpcyBnb2luZyB0byBiZSAiLCBjYWxsZWVSZWcsICJcbiIpOwor
ICAgIHNldERpcmVjdChjYWxsZWVSZWcsIGNhbGxUYXJnZXROb2RlLCBJbW1lZGlhdGVTZXRXaXRo
Rmx1c2gpOworICAgIAorICAgIFN3aXRjaERhdGEmIGRhdGEgPSAqbV9ncmFwaC5tX3N3aXRjaERh
dGEuYWRkKCk7CisgICAgZGF0YS5raW5kID0gU3dpdGNoQ2VsbDsKKyAgICBhZGRUb0dyYXBoKFN3
aXRjaCwgT3BJbmZvKCZkYXRhKSwgdGhpbmdUb1N3aXRjaE9uKTsKKyAgICAKKyAgICBCYXNpY0Js
b2NrKiBvcmlnaW5CbG9jayA9IG1fY3VycmVudEJsb2NrOworICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICBkYXRhTG9nKCJNYXJraW5nICIsIFJhd1BvaW50ZXIob3JpZ2luQmxvY2spLCAiIGFzIGxp
bmtlZCAob3JpZ2luIG9mIHBvbHkgaW5saW5lKVxuIik7CisgICAgb3JpZ2luQmxvY2stPmRpZExp
bmsoKTsKKyAgICBjYW5jZWxMaW5raW5nRm9yQmxvY2sobV9pbmxpbmVTdGFja1RvcCwgb3JpZ2lu
QmxvY2spOworICAgIAorICAgIC8vIEVhY2ggaW5saW5lZCBjYWxsZWUgd2lsbCBoYXZlIGEgbGFu
ZGluZyBibG9jayB0aGF0IGl0IHJldHVybnMgYXQuIFRoZXkgc2hvdWxkIGFsbCBoYXZlIGp1bXBz
CisgICAgLy8gdG8gdGhlIGNvbnRpbnVhdGlvbiBibG9jaywgd2hpY2ggd2UgY3JlYXRlIGxhc3Qu
CisgICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBsYW5kaW5nQmxvY2tzOworICAgIAorICAgIC8vIFdl
IG1ha2UgZm9yY2UgdGhpcyB0cnVlIGlmIHdlIGdpdmUgdXAgb24gaW5saW5pbmcgYW55IG9mIHRo
ZSBlZGdlcy4KKyAgICBib29sIGNvdWxkVGFrZVNsb3dQYXRoID0gY2FsbExpbmtTdGF0dXMuY291
bGRUYWtlU2xvd1BhdGgoKTsKKyAgICAKKyAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgZGF0YUxv
ZygiQWJvdXQgdG8gbG9vcCBvdmVyIGZ1bmN0aW9ucyBhdCAiLCBjdXJyZW50Q29kZU9yaWdpbigp
LCAiLlxuIik7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxMaW5rU3Rh
dHVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIG1fY3VycmVudEluZGV4ID0gb2xkT2Zmc2V0Owor
ICAgICAgICBSZWZQdHI8QmFzaWNCbG9jaz4gYmxvY2sgPSBhZG9wdFJlZihuZXcgQmFzaWNCbG9j
ayhVSU5UX01BWCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCBQTmFOKSk7CisgICAgICAg
IG1fY3VycmVudEJsb2NrID0gYmxvY2suZ2V0KCk7CisgICAgICAgIG1fZ3JhcGguYXBwZW5kQmxv
Y2soYmxvY2spOworICAgICAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CisgICAgICAgIAorICAg
ICAgICBOb2RlKiBteUNhbGxUYXJnZXROb2RlID0gZ2V0RGlyZWN0KGNhbGxlZVJlZyk7CisgICAg
ICAgIAorICAgICAgICBib29sIGlubGluaW5nUmVzdWx0ID0gYXR0ZW1wdFRvSW5saW5lQ2FsbCgK
KyAgICAgICAgICAgIG15Q2FsbFRhcmdldE5vZGUsIHJlc3VsdE9wZXJhbmQsIGNhbGxMaW5rU3Rh
dHVzW2ldLmNhbGxlZSgpLCByZWdpc3Rlck9mZnNldCwKKyAgICAgICAgICAgIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zmc2V0LCBraW5kLCBDYWxsZXJMaW5rc01hbnVhbGx5LCBw
cmVkaWN0aW9uLAorICAgICAgICAgICAgaW5saW5pbmdCYWxhbmNlKTsKKyAgICAgICAgCisgICAg
ICAgIGlmICghaW5saW5pbmdSZXN1bHQpIHsKKyAgICAgICAgICAgIC8vIFRoYXQgZmFpbGVkIHNv
IHdlIGxldCB0aGUgYmxvY2sgZGllLiBOb3RoaW5nIGludGVyZXN0aW5nIHNob3VsZCBoYXZlIGJl
ZW4gYWRkZWQgdG8KKyAgICAgICAgICAgIC8vIHRoZSBibG9jay4gV2UgYWxzbyBnaXZlIHVwIG9u
IGlubGluaW5nIGFueSBvZiB0aGUgKGxlc3MgZnJlcXVlbnQpIGNhbGxlZXMuCisgICAgICAgICAg
ICBBU1NFUlQobV9jdXJyZW50QmxvY2sgPT0gYmxvY2suZ2V0KCkpOworICAgICAgICAgICAgQVNT
RVJUKG1fZ3JhcGgubV9ibG9ja3MubGFzdCgpID09IGJsb2NrKTsKKyAgICAgICAgICAgIG1fZ3Jh
cGgua2lsbEJsb2NrQW5kSXRzQ29udGVudHMoYmxvY2suZ2V0KCkpOworICAgICAgICAgICAgbV9n
cmFwaC5tX2Jsb2Nrcy5yZW1vdmVMYXN0KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8v
IFRoZSBmYWN0IHRoYXQgaW5saW5pbmcgZmFpbGVkIG1lYW5zIHdlIG5lZWQgYSBzbG93IHBhdGgu
CisgICAgICAgICAgICBjb3VsZFRha2VTbG93UGF0aCA9IHRydWU7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgSlNDZWxsKiB0aGluZ1RvQ2FzZU9uOwor
ICAgICAgICBpZiAoYWxsQXJlRGlyZWN0Q2FsbHMpCisgICAgICAgICAgICB0aGluZ1RvQ2FzZU9u
ID0gY2FsbExpbmtTdGF0dXNbaV0uY2FsbGVlKCkubm9uRXhlY3V0YWJsZUNhbGxlZSgpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChhbGxBcmVDbG9zdXJlQ2FsbHMpOworICAg
ICAgICAgICAgdGhpbmdUb0Nhc2VPbiA9IGNhbGxMaW5rU3RhdHVzW2ldLmNhbGxlZSgpLmV4ZWN1
dGFibGUoKTsKKyAgICAgICAgfQorICAgICAgICBkYXRhLmNhc2VzLmFwcGVuZChTd2l0Y2hDYXNl
KG1fZ3JhcGguZnJlZXplKHRoaW5nVG9DYXNlT24pLCBibG9jay5nZXQoKSkpOworICAgICAgICBt
X2N1cnJlbnRJbmRleCA9IG5leHRPZmZzZXQ7CisgICAgICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVl
KCk7IC8vIFRoaXMgb25seSBjb21lcyBpbnRvIHBsYXkgZm9yIGludHJpbnNpY3MsIHNpbmNlIG5v
cm1hbCBpbmxpbmVkIGNvZGUgd2lsbCBsZWF2ZSBhbiBlbXB0eSBxdWV1ZS4KKyAgICAgICAgYWRk
VG9HcmFwaChKdW1wKTsKKyAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBkYXRhTG9n
KCJNYXJraW5nICIsIFJhd1BvaW50ZXIobV9jdXJyZW50QmxvY2spLCAiIGFzIGxpbmtlZCAodGFp
bCBvZiBwb2x5IGlubGluZWUpXG4iKTsKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmRpZExpbmso
KTsKKyAgICAgICAgbGFuZGluZ0Jsb2Nrcy5hcHBlbmQobV9jdXJyZW50QmxvY2spOworCisgICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgZGF0YUxvZygiRmluaXNoZWQgaW5saW5pbmcg
IiwgY2FsbExpbmtTdGF0dXNbaV0uY2FsbGVlKCksICIgYXQgIiwgY3VycmVudENvZGVPcmlnaW4o
KSwgIi5cbiIpOworICAgIH0KKyAgICAKKyAgICBSZWZQdHI8QmFzaWNCbG9jaz4gc2xvd1BhdGhC
bG9jayA9IGFkb3B0UmVmKAorICAgICAgICBuZXcgQmFzaWNCbG9jayhVSU5UX01BWCwgbV9udW1B
cmd1bWVudHMsIG1fbnVtTG9jYWxzLCBQTmFOKSk7CisgICAgbV9jdXJyZW50SW5kZXggPSBvbGRP
ZmZzZXQ7CisgICAgZGF0YS5mYWxsVGhyb3VnaCA9IEJyYW5jaFRhcmdldChzbG93UGF0aEJsb2Nr
LmdldCgpKTsKKyAgICBtX2dyYXBoLmFwcGVuZEJsb2NrKHNsb3dQYXRoQmxvY2spOworICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJNYXJraW5nICIsIFJhd1BvaW50ZXIoc2xvd1Bh
dGhCbG9jay5nZXQoKSksICIgYXMgbGlua2VkIChzbG93IHBhdGggYmxvY2spXG4iKTsKKyAgICBz
bG93UGF0aEJsb2NrLT5kaWRMaW5rKCk7CisgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOworICAg
IG1fY3VycmVudEJsb2NrID0gc2xvd1BhdGhCbG9jay5nZXQoKTsKKyAgICBOb2RlKiBteUNhbGxU
YXJnZXROb2RlID0gZ2V0RGlyZWN0KGNhbGxlZVJlZyk7CisgICAgaWYgKGNvdWxkVGFrZVNsb3dQ
YXRoKSB7CisgICAgICAgIGFkZENhbGwoCisgICAgICAgICAgICByZXN1bHRPcGVyYW5kLCBjYWxs
T3AsIE9wSW5mbygpLCBteUNhbGxUYXJnZXROb2RlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywKKyAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBhZGRUb0dyYXBoKENoZWNrQmFkQ2VsbCk7CisgICAgICAgIGFkZFRvR3JhcGgo
UGhhbnRvbSwgbXlDYWxsVGFyZ2V0Tm9kZSk7CisgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21z
KHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRp
b25LaW5kKTsKKyAgICAgICAgCisgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3Bl
cmFuZCksIGFkZFRvR3JhcGgoQm90dG9tVmFsdWUpKTsKKyAgICB9CisKKyAgICBtX2N1cnJlbnRJ
bmRleCA9IG5leHRPZmZzZXQ7CisgICAgcHJvY2Vzc1NldExvY2FsUXVldWUoKTsKKyAgICBhZGRU
b0dyYXBoKEp1bXApOworICAgIGxhbmRpbmdCbG9ja3MuYXBwZW5kKG1fY3VycmVudEJsb2NrKTsK
KyAgICAKKyAgICBSZWZQdHI8QmFzaWNCbG9jaz4gY29udGludWF0aW9uQmxvY2sgPSBhZG9wdFJl
ZigKKyAgICAgICAgbmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIG1fbnVtQXJndW1lbnRzLCBtX251
bUxvY2FscywgUE5hTikpOworICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soY29udGludWF0aW9uQmxv
Y2spOworICAgIGlmICh2ZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJBZGRpbmcgdW5saW5rZWQg
YmxvY2sgIiwgUmF3UG9pbnRlcihjb250aW51YXRpb25CbG9jay5nZXQoKSksICIgKGNvbnRpbnVh
dGlvbilcbiIpOworICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5k
KFVubGlua2VkQmxvY2soY29udGludWF0aW9uQmxvY2suZ2V0KCkpKTsKKyAgICBwcmVwYXJlVG9Q
YXJzZUJsb2NrKCk7CisgICAgbV9jdXJyZW50QmxvY2sgPSBjb250aW51YXRpb25CbG9jay5nZXQo
KTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBsYW5kaW5nQmxvY2tzLnNpemUoKTsgaS0t
OykKKyAgICAgICAgbGFuZGluZ0Jsb2Nrc1tpXS0+bGFzdCgpLT50YXJnZXRCbG9jaygpID0gY29u
dGludWF0aW9uQmxvY2suZ2V0KCk7CisgICAgCisgICAgbV9jdXJyZW50SW5kZXggPSBvbGRPZmZz
ZXQ7CisgICAgCisgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgZGF0YUxvZygiRG9uZSBpbmxp
bmluZyAoaGFyZCkuXG4iKTsKKyAgICAgICAgZGF0YUxvZygiU3RhY2s6ICIsIGN1cnJlbnRDb2Rl
T3JpZ2luKCksICJcbiIpOworICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTY0NSw3
ICsxOTA0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVHlwZWRBcnJheUNvbgogCiBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oCiAgICAg
aW50IHJlc3VsdE9wZXJhbmQsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgcmVnaXN0
ZXJPZmZzZXQsCi0gICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0aW9uLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7
CiAgICAgLy8gSWYgd2UgZXZlciBmaW5kIHRoYXQgd2UgaGF2ZSBhIGxvdCBvZiBpbnRlcm5hbCBm
dW5jdGlvbnMgdGhhdCB3ZSBzcGVjaWFsaXplIGZvciwKICAgICAvLyB0aGVuIHdlIHNob3VsZCBw
cm9iYWJseSBoYXZlIHNvbWUgc29ydCBvZiBoYXNodGFibGUgZGlzcGF0Y2gsIG9yIG1heWJlIGV2
ZW4KQEAgLTE2NTQsOCArMTkxMyw2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0
YW50SW50ZXIKICAgICAvLyB3ZSBrbm93IGFib3V0IGlzIHNtYWxsIGVub3VnaCwgdGhhdCBoYXZp
bmcganVzdCBhIGxpbmVhciBjYXNjYWRlIG9mIGlmIHN0YXRlbWVudHMKICAgICAvLyBpcyBnb29k
IGVub3VnaC4KICAgICAKLSAgICBVTlVTRURfUEFSQU0ocHJlZGljdGlvbik7IC8vIFJlbW92ZSB0
aGlzIG9uY2Ugd2UgZG8gbW9yZSB0aGluZ3MuCi0gICAgCiAgICAgaWYgKGZ1bmN0aW9uLT5jbGFz
c0luZm8oKSA9PSBBcnJheUNvbnN0cnVjdG9yOjppbmZvKCkpIHsKICAgICAgICAgaWYgKGZ1bmN0
aW9uLT5nbG9iYWxPYmplY3QoKSAhPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMDIwLDYgKzIyNzcs
MTIgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKIAogdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6cHJlcGFyZVRvUGFyc2VCbG9jaygpCiB7CisgICAgY2xlYXJDYWNoZXMoKTsKKyAg
ICBBU1NFUlQobV9zZXRMb2NhbFF1ZXVlLmlzRW1wdHkoKSk7Cit9CisKK3ZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OmNsZWFyQ2FjaGVzKCkKK3sKICAgICBtX2NvbnN0YW50cy5yZXNpemUoMCk7CiB9CiAK
QEAgLTIwNjMsOSArMjMyNiw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5z
aWduZWQKICAgICB9CiAKICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9zZXRMb2NhbFF1ZXVlLnNpemUoKTsgKytpKQotICAgICAgICAgICAgbV9z
ZXRMb2NhbFF1ZXVlW2ldLmV4ZWN1dGUodGhpcyk7Ci0gICAgICAgIG1fc2V0TG9jYWxRdWV1ZS5y
ZXNpemUoMCk7CisgICAgICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7CiAgICAgICAgIAogICAg
ICAgICAvLyBEb24ndCBleHRlbmQgb3ZlciBqdW1wIGRlc3RpbmF0aW9ucy4KICAgICAgICAgaWYg
KG1fY3VycmVudEluZGV4ID09IGxpbWl0KSB7CkBAIC0yMjA5LDEzICsyNDcwLDEzIEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIEpTQ2VsbCog
Y2FjaGVkRnVuY3Rpb24gPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5qc0NlbGwuZ2V0KCk7CiAg
ICAgICAgICAgICBpZiAoIWNhY2hlZEZ1bmN0aW9uIAogICAgICAgICAgICAgICAgIHx8IG1faW5s
aW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+Y291bGRUYWtlU2xvd0Nhc2UobV9jdXJyZW50
SW5kZXgpCi0gICAgICAgICAgICAgICAgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmls
ZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkRnVuY3Rpb24pKSB7CisgICAgICAgICAg
ICAgICAgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1
cnJlbnRJbmRleCwgQmFkQ2VsbCkpIHsKICAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBnZXQoVmlydHVhbFJlZ2lzdGVy
KEpTU3RhY2s6OkNhbGxlZSkpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJlZXplKGNhY2hlZEZ1bmN0aW9uKTsK
ICAgICAgICAgICAgICAgICBBU1NFUlQoY2FjaGVkRnVuY3Rpb24tPmluaGVyaXRzKEpTRnVuY3Rp
b246OmluZm8oKSkpOwogICAgICAgICAgICAgICAgIE5vZGUqIGFjdHVhbENhbGxlZSA9IGdldChW
aXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6Q2FsbGVlKSk7Ci0gICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChDaGVja0Z1bmN0aW9uLCBPcEluZm8oZnJvemVuKSwgYWN0dWFsQ2FsbGVlKTsKKyAgICAg
ICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKGZyb3plbiksIGFjdHVhbENh
bGxlZSk7CiAgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8oZnJvemVu
KSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2NhbGxl
ZSk7CkBAIC0yODk3LDcgKzMxNTgsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KHVuc2lnbmVkCiAgICAgICAgICAgICAvLyBhbHJlYWR5IGduYXJseSBlbm91Z2ggYXMgaXQgaXMu
CiAgICAgICAgICAgICBBU1NFUlQocG9pbnRlcklzRnVuY3Rpb24oY3VycmVudEluc3RydWN0aW9u
WzJdLnUuc3BlY2lhbFBvaW50ZXIpKTsKICAgICAgICAgICAgIGFkZFRvR3JhcGgoCi0gICAgICAg
ICAgICAgICAgQ2hlY2tGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICBDaGVja0NlbGwsCiAgICAg
ICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGguZnJlZXplKHN0YXRpY19jYXN0PEpTQ2VsbCo+KGFj
dHVhbFBvaW50ZXJGb3IoCiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1f
Y29kZUJsb2NrLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5zcGVjaWFsUG9pbnRlcikpKSksCiAg
ICAgICAgICAgICAgICAgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKSkpOwpAQCAtMzMyMiwxNSArMzU4MywxOSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpsaW5rQmxvY2soQmFzaWNCbG9jCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECi0gICAgYmxvY2stPmlzTGlua2VkID0gdHJ1ZTsKLSNlbmRpZgorICAg
IGlmICh2ZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJNYXJraW5nICIsIFJhd1BvaW50ZXIoYmxv
Y2spLCAiIGFzIGxpbmtlZCAoYWN0dWFsbHkgZGlkIGxpbmtpbmcpXG4iKTsKKyAgICBibG9jay0+
ZGlkTGluaygpOwogfQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2tzKFZlY3RvcjxV
bmxpbmtlZEJsb2NrPiYgdW5saW5rZWRCbG9ja3MsIFZlY3RvcjxCYXNpY0Jsb2NrKj4mIHBvc3Np
YmxlVGFyZ2V0cykKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHVubGlua2VkQmxvY2tz
LnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgZGF0YUxv
ZygiQXR0ZW1wdGluZyB0byBsaW5rICIsIFJhd1BvaW50ZXIodW5saW5rZWRCbG9ja3NbaV0ubV9i
bG9jayksICJcbiIpOwogICAgICAgICBpZiAodW5saW5rZWRCbG9ja3NbaV0ubV9uZWVkc05vcm1h
bExpbmtpbmcpIHsKKyAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGRh
dGFMb2coIiAgICBEb2VzIG5lZWQgbm9ybWFsIGxpbmtpbmcuXG4iKTsKICAgICAgICAgICAgIGxp
bmtCbG9jayh1bmxpbmtlZEJsb2Nrc1tpXS5tX2Jsb2NrLCBwb3NzaWJsZVRhcmdldHMpOwogICAg
ICAgICAgICAgdW5saW5rZWRCbG9ja3NbaV0ubV9uZWVkc05vcm1hbExpbmtpbmcgPSBmYWxzZTsK
ICAgICAgICAgfQpAQCAtMzQ5Nyw3ICszNzYyLDcgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0
YWNrRW50cnk6OklubGluZQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygp
CiB7Ci0gICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOworICAgIGNsZWFyQ2FjaGVzKCk7CiAgICAg
CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9j
azsKICAgICAKQEAgLTM1NjMsNyArMzgyOCwxMSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUNvZGVCbG9jaygpCiAgICAgICAgICAgICAgICAgICAgIC8vIDIpIElmIHRoZSBieXRlY29kZUJl
Z2luIGlzIGVxdWFsIHRvIHRoZSBjdXJyZW50SW5kZXgsIHRoZW4gd2UgZmFpbGVkIHRvIGRvCiAg
ICAgICAgICAgICAgICAgICAgIC8vICAgIGEgcGVlcGhvbGUgY29hbGVzY2luZyBvZiB0aGlzIGJs
b2NrIGluIHRoZSBpZiBzdGF0ZW1lbnQgYWJvdmUuIFNvLCB3ZSdyZQogICAgICAgICAgICAgICAg
ICAgICAvLyAgICBnZW5lcmF0aW5nIHN1Ym9wdGltYWwgY29kZSBhbmQgbGVhdmluZyBtb3JlIHdv
cmsgZm9yIHRoZSBDRkcgc2ltcGxpZmllci4KLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1f
aW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuaXNFbXB0eSgpIHx8IG1faW5saW5lU3Rh
Y2tUb3AtPm1fdW5saW5rZWRCbG9ja3MubGFzdCgpLm1fYmxvY2stPmJ5dGVjb2RlQmVnaW4gPCBt
X2N1cnJlbnRJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghbV9pbmxpbmVTdGFja1Rv
cC0+bV91bmxpbmtlZEJsb2Nrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxhc3RCZWdpbiA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxp
bmVTdGFja1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9ibG9jay0+Ynl0ZWNvZGVCZWdp
bjsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChsYXN0QmVnaW4gPT0gVUlOVF9NQVgg
fHwgbGFzdEJlZ2luIDwgbV9jdXJyZW50SW5kZXgpOworICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBw
ZW5kKFVubGlua2VkQmxvY2soYmxvY2suZ2V0KCkpKTsKICAgICAgICAgICAgICAgICAgICAgbV9p
bmxpbmVTdGFja1RvcC0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9jay5nZXQoKSk7
CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBmaXJzdCBibG9jayBpcyBkZWZpbml0ZWx5IGFu
IE9TUiB0YXJnZXQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhy
ZWFkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTkwLDggKzkwLDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PmNoaWxkcmVuLnNldENoaWxkMShFZGdlKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b206Ci0gICAgICAgICAgICAgICAgICAgIGlmICgh
bm9kZS0+Y2hpbGQxKCkpCisgICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS0+Y2hpbGQxKCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2Rl
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCktPm9wKCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBQaGk6CiAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
U2V0QXJndW1lbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw2ICsxNDQsOCBAQCB2b2lkIGNsb2Ji
ZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBGaWF0SW50NTI6CiAgICAg
Y2FzZSBNYWtlUm9wZToKICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKKyAgICBjYXNlIEdldEV4ZWN1
dGFibGU6CisgICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2Rl
KSk7CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCkBAIC0yMzksMTIgKzI0MSw4IEBAIHZvaWQg
Y2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgZGVmKFB1cmVWYWx1
ZShub2RlLCBub2RlLT5hcml0aE1vZGUoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIAot
ICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKLSAgICAgICAgZGVmKFB1cmVWYWx1ZShDaGVja0Z1bmN0
aW9uLCBBZGphY2VuY3lMaXN0KEFkamFjZW5jeUxpc3Q6OkZpeGVkLCBub2RlLT5jaGlsZDEoKSks
IG5vZGUtPmZ1bmN0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICBjYXNl
IENoZWNrRXhlY3V0YWJsZToKLSAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlLCBub2RlLT5leGVj
dXRhYmxlKCkpKTsKKyAgICBjYXNlIENoZWNrQ2VsbDoKKyAgICAgICAgZGVmKFB1cmVWYWx1ZShD
aGVja0NlbGwsIEFkamFjZW5jeUxpc3QoQWRqYWNlbmN5TGlzdDo6Rml4ZWQsIG5vZGUtPmNoaWxk
MSgpKSwgbm9kZS0+Y2VsbE9wZXJhbmQoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIAog
ICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKQEAgLTI2Myw2ICsyNjEsNyBAQCB2b2lk
IGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBTd2l0Y2g6CiAg
ICAgY2FzZSBUaHJvdzoKICAgICBjYXNlIEZvcmNlT1NSRXhpdDoKKyAgICBjYXNlIENoZWNrQmFk
Q2VsbDoKICAgICBjYXNlIFJldHVybjoKICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgIGNhc2Ug
Q2hlY2tUaWVyVXBJbkxvb3A6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9u
LmgJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29t
bW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDEzIEBAIGVudW0gUmVmTm9kZU1vZGUg
ewogICAgIERvbnRSZWZOb2RlCiB9OwogCitlbnVtIFN3aXRjaEtpbmQgeworICAgIFN3aXRjaElt
bSwKKyAgICBTd2l0Y2hDaGFyLAorICAgIFN3aXRjaFN0cmluZywKKyAgICBTd2l0Y2hDZWxsCit9
OworCiBpbmxpbmUgYm9vbCB2ZXJib3NlQ29tcGlsYXRpb25FbmFibGVkKENvbXBpbGF0aW9uTW9k
ZSBtb2RlID0gREZHTW9kZSkKIHsKICAgICByZXR1cm4gT3B0aW9uczo6dmVyYm9zZUNvbXBpbGF0
aW9uKCkgfHwgT3B0aW9uczo6ZHVtcEdyYXBoQXRFYWNoUGhhc2UoKSB8fCAoaXNGVEwobW9kZSkg
JiYgT3B0aW9uczo6dmVyYm9zZUZUTENvbXBpbGF0aW9uKCkpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHJl
dmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsOCArMTQyLDggQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjogewotICAgICAgICAgICAgICAgIGlm
IChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCkgIT0gbm9kZS0+ZnVuY3Rp
b24oKS0+dmFsdWUoKSkKKyAgICAgICAgICAgIGNhc2UgQ2hlY2tDZWxsOiB7CisgICAgICAgICAg
ICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKSAhPSBub2Rl
LT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CiAgICAgICAgICAgICAgICAg
ZWxpbWluYXRlZCA9IHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBkb2VzR0Mo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0QnlJZEZsdXNoOgogICAgIGNh
c2UgUHV0QnlJZERpcmVjdDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgotICAgIGNhc2UgQ2hl
Y2tFeGVjdXRhYmxlOgorICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNlIEdldEJ1dHRl
cmZseToKICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgY2FzZSBHZXRTY29wZToKQEAgLTEwNSw3
ICsxMDUsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBQdXRHbG9iYWxWYXI6CiAgICAgY2FzZSBWYXJpYWJsZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBW
YXJJbmplY3Rpb25XYXRjaHBvaW50OgotICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKKyAgICBjYXNl
IENoZWNrQ2VsbDoKICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDoKICAgICBj
YXNlIFJlZ0V4cEV4ZWM6CiAgICAgY2FzZSBSZWdFeHBUZXN0OgpAQCAtMTk2LDYgKzE5Niw4IEBA
IGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEdldERpcmVj
dFBuYW1lOgogICAgIGNhc2UgRmlhdEludDUyOgogICAgIGNhc2UgQm9vbGVhblRvTnVtYmVyOgor
ICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgorICAgIGNhc2UgQm90dG9tVmFsdWU6CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjoKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODks
NiArODksOSBAQCBzdGF0aWMgQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZUltcGwoCiAgICAgICAg
IHZtLmdldENUSVN0dWIodmlydHVhbENvbnN0cnVjdFRoYXRQcmVzZXJ2ZXNSZWdzVGh1bmtHZW5l
cmF0b3IpOwogICAgIH0KICAgICAKKyAgICBpZiAoQ2FsbEVkZ2VMb2c6OmlzRW5hYmxlZCgpKQor
ICAgICAgICB2bS5lbnN1cmVDYWxsRWRnZUxvZygpLnByb2Nlc3NMb2coKTsKKyAgICAKICAgICBS
ZWZQdHI8UGxhbj4gcGxhbiA9IGFkb3B0UmVmKAogICAgICAgICBuZXcgUGxhbihjb2RlQmxvY2ss
IHByb2ZpbGVkREZHQ29kZUJsb2NrLCBtb2RlLCBvc3JFbnRyeUJ5dGVjb2RlSW5kZXgsIG11c3RI
YW5kbGVWYWx1ZXMpKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzM2LDYgKzczNiwx
MiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5z
aG91bGRTcGVjdWxhdGVTdHJpbmcoKSkKICAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxTdHJp
bmdVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgU3dpdGNoQ2VsbDoKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkt
PnNob3VsZFNwZWN1bGF0ZUNlbGwoKSkKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxDZWxs
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgLy8gZWxzZSBpdCdzIGZpbmUg
Zm9yIHRoaXMgdG8gaGF2ZSBVbnR5cGVkVXNlOyB3ZSB3aWxsIGhhbmRsZSB0aGlzIGJ5IGp1c3Qg
bWFraW5nCisgICAgICAgICAgICAgICAgLy8gbm9uLWNlbGxzIHRha2UgdGhlIGRlZmF1bHQgY2Fz
ZS4KKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CkBAIC04OTgsMTMgKzkwNCwxMyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIENoZWNrRXhlY3V0YWJsZTogewor
ICAgICAgICBjYXNlIEdldEV4ZWN1dGFibGU6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8RnVuY3Rp
b25Vc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgICAgICAKICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKLSAgICAgICAgY2FzZSBD
aGVja0Z1bmN0aW9uOgorICAgICAgICBjYXNlIENoZWNrQ2VsbDoKICAgICAgICAgY2FzZSBDaGVj
a0hhc0luc3RhbmNlOgogICAgICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgICAgIGNhc2UgR2V0
QnV0dGVyZmx5OiB7CkBAIC0xMTUwLDYgKzExNTYsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IFRocm93UmVmZXJlbmNlRXJyb3I6CiAgICAgICAgIGNhc2UgQ291bnRFeGVjdXRpb246CiAgICAg
ICAgIGNhc2UgRm9yY2VPU1JFeGl0OgorICAgICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICAg
ICAgY2FzZSBDaGVja1dhdGNoZG9nVGltZXI6CiAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CiAg
ICAgICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CkBAIC0xMTYwLDYgKzExNjcsNyBAQCBw
cml2YXRlOgogICAgICAgICBjYXNlIFR5cGVkQXJyYXlXYXRjaHBvaW50OgogICAgICAgICBjYXNl
IE1vdkhpbnQ6CiAgICAgICAgIGNhc2UgWm9tYmllSGludDoKKyAgICAgICAgY2FzZSBCb3R0b21W
YWx1ZToKICAgICAgICAgICAgIGJyZWFrOwogI2Vsc2UKICAgICAgICAgZGVmYXVsdDoKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAxNzI3OTQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjksNiArNjksNyBAQCBHcmFwaDo6R3JhcGgoVk0mIHZtLCBQbGFuJiBwbGFuLCBMb25nTGl2
CiAgICAgLCBtX2Zvcm0oTG9hZFN0b3JlKQogICAgICwgbV91bmlmaWNhdGlvblN0YXRlKExvY2Fs
bHlVbmlmaWVkKQogICAgICwgbV9yZWZDb3VudFN0YXRlKEV2ZXJ5dGhpbmdJc0xpdmUpCisgICAg
LCBtX3Nob3VsZFByb2ZpbGUoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fcHJvZmlsZWRCbG9jayk7
CiAgICAgCkBAIC0yMjIsMjQgKzIyMywyMyBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFt
JiBvdXQsIGNvbnN0CiAgICAgICAgIG91dC5wcmludChjb21tYSwgaW5Db250ZXh0KCpub2RlLT5z
dHJ1Y3R1cmUoKSwgY29udGV4dCkpOwogICAgIGlmIChub2RlLT5oYXNUcmFuc2l0aW9uKCkpCiAg
ICAgICAgIG91dC5wcmludChjb21tYSwgcG9pbnRlckR1bXBJbkNvbnRleHQobm9kZS0+dHJhbnNp
dGlvbigpLCBjb250ZXh0KSk7Ci0gICAgaWYgKG5vZGUtPmhhc0Z1bmN0aW9uKCkpIHsKLSAgICAg
ICAgb3V0LnByaW50KGNvbW1hLCAiZnVuY3Rpb24oIiwgcG9pbnRlckR1bXAobm9kZS0+ZnVuY3Rp
b24oKSksICIsICIpOwotICAgICAgICBpZiAobm9kZS0+ZnVuY3Rpb24oKS0+dmFsdWUoKS5pc0Nl
bGwoKQotICAgICAgICAgICAgJiYgbm9kZS0+ZnVuY3Rpb24oKS0+dmFsdWUoKS5hc0NlbGwoKS0+
aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkgewotICAgICAgICAgICAgSlNGdW5jdGlvbiog
ZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG5vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCku
YXNDZWxsKCkpOwotICAgICAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKQot
ICAgICAgICAgICAgICAgIG91dC5wcmludCgiPGhvc3QgZnVuY3Rpb24+Iik7Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgb3V0LnByaW50KEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAo
ZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpKSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
b3V0LnByaW50KCI8bm90IEpTRnVuY3Rpb24+Iik7Ci0gICAgICAgIG91dC5wcmludCgiKSIpOwot
ICAgIH0KLSAgICBpZiAobm9kZS0+aGFzRXhlY3V0YWJsZSgpKSB7Ci0gICAgICAgIGlmIChub2Rl
LT5leGVjdXRhYmxlKCktPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKSkKLSAg
ICAgICAgICAgIG91dC5wcmludChjb21tYSwgImV4ZWN1dGFibGUoIiwgRnVuY3Rpb25FeGVjdXRh
YmxlRHVtcChqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4obm9kZS0+ZXhlY3V0YWJsZSgpKSks
ICIpIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgImV4ZWN1
dGFibGUobm90IGZ1bmN0aW9uOiAiLCBSYXdQb2ludGVyKG5vZGUtPmV4ZWN1dGFibGUoKSksICIp
Iik7CisgICAgaWYgKG5vZGUtPmhhc0NlbGxPcGVyYW5kKCkpIHsKKyAgICAgICAgaWYgKCFub2Rl
LT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpIHx8ICFub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgp
LmlzQ2VsbCgpKQorICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiaW52YWxpZCBjZWxsIG9w
ZXJhbmQ6ICIsIG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkpOworICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgcG9pbnRlckR1bXAobm9kZS0+Y2VsbE9wZXJh
bmQoKS0+dmFsdWUoKS5hc0NlbGwoKSkpOworICAgICAgICAgICAgaWYgKG5vZGUtPmNlbGxPcGVy
YW5kKCktPnZhbHVlKCkuaXNDZWxsKCkpIHsKKyAgICAgICAgICAgICAgICBDYWxsVmFyaWFudCB2
YXJpYW50KG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuYXNDZWxsKCkpOworICAgICAgICAg
ICAgICAgIGlmIChFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IHZhcmlhbnQuZXhlY3V0YWJs
ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlv
bigpKQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiPGhvc3QgZnVu
Y3Rpb24+Iik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZnVuY3Rpb25FeGVjdXRhYmxlID0ganNEeW5hbWljQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUq
PihleGVjdXRhYmxlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwg
RnVuY3Rpb25FeGVjdXRhYmxlRHVtcChmdW5jdGlvbkV4ZWN1dGFibGUpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAi
PG5vbi1mdW5jdGlvbiBleGVjdXRhYmxlPiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQogICAgIH0KICAgICBpZiAobm9kZS0+aGFzRnVuY3Rpb25EZWNsSW5k
ZXgoKSkgewogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX2NvZGVC
bG9jay0+ZnVuY3Rpb25EZWNsKG5vZGUtPmZ1bmN0aW9uRGVjbEluZGV4KCkpOwpAQCAtOTg1LDEw
ICs5ODUsNiBAQCB2b2lkIEdyYXBoOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2CiAgICAg
ICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAgICAgY2FzZSBDaGVj
a0V4ZWN1dGFibGU6Ci0gICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFJl
YWRPbmx5UG9pbnRlcihub2RlLT5leGVjdXRhYmxlKCkpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAg
ICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5zaXpl
KCk7IGktLTspCiAgICAgICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRS
ZWFkT25seVBvaW50ZXIobm9kZS0+c3RydWN0dXJlU2V0KClbaV0pOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NjIsNiArNzYyLDcg
QEAgcHVibGljOgogICAgIEdyYXBoRm9ybSBtX2Zvcm07CiAgICAgVW5pZmljYXRpb25TdGF0ZSBt
X3VuaWZpY2F0aW9uU3RhdGU7CiAgICAgUmVmQ291bnRTdGF0ZSBtX3JlZkNvdW50U3RhdGU7Cisg
ICAgYm9vbCBtX3Nob3VsZFByb2ZpbGU7CiBwcml2YXRlOgogICAgIAogICAgIHZvaWQgaGFuZGxl
U3VjY2Vzc29yKFZlY3RvcjxCYXNpY0Jsb2NrKiwgMTY+JiB3b3JrbGlzdCwgQmFzaWNCbG9jayos
IEJhc2ljQmxvY2sqIHN1Y2Nlc3Nvcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw3
ICsxODQsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAgICAg
ICAgICAgICB0YWJsZS5jdGlPZmZzZXRzW2pdID0gdGFibGUuY3RpRGVmYXVsdDsKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBqID0gZGF0YS5jYXNlcy5zaXplKCk7IGotLTspIHsKICAgICAgICAgICAg
IFN3aXRjaENhc2UmIG15Q2FzZSA9IGRhdGEuY2FzZXNbal07Ci0gICAgICAgICAgICB0YWJsZS5j
dGlPZmZzZXRzW215Q2FzZS52YWx1ZS5zd2l0Y2hMb29rdXBWYWx1ZSgpIC0gdGFibGUubWluXSA9
CisgICAgICAgICAgICB0YWJsZS5jdGlPZmZzZXRzW215Q2FzZS52YWx1ZS5zd2l0Y2hMb29rdXBW
YWx1ZShkYXRhLmtpbmQpIC0gdGFibGUubWluXSA9CiAgICAgICAgICAgICAgICAgbGlua0J1ZmZl
ci5sb2NhdGlvbk9mKG1fYmxvY2tIZWFkc1tteUNhc2UudGFyZ2V0LmJsb2NrLT5pbmRleF0pOwog
ICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5
SlNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdM
YXp5SlNWYWx1ZS5jcHAJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNiArMTEzLDM2
IEBAIFRyaVN0YXRlIExhenlKU1ZhbHVlOjpzdHJpY3RFcXVhbChjb25zdCAKICAgICByZXR1cm4g
RmFsc2VUcmlTdGF0ZTsKIH0KIAordWludHB0cl90IExhenlKU1ZhbHVlOjpzd2l0Y2hMb29rdXBW
YWx1ZShTd2l0Y2hLaW5kIGtpbmQpIGNvbnN0Cit7CisgICAgLy8gTkIuIE5vdCBldmVyeSBraW5k
IG9mIEpTVmFsdWUgd2lsbCBiZSBhYmxlIHRvIGdpdmUgeW91IGEgc3dpdGNoIGxvb2t1cAorICAg
IC8vIHZhbHVlLCBhbmQgdGhpcyBtZXRob2Qgd2lsbCBhc3NlcnQsIG9yIGRvIGJhZCB0aGluZ3Ms
IGlmIHlvdSB1c2UgaXQKKyAgICAvLyBmb3IgYSBraW5kIG9mIHZhbHVlIHRoYXQgY2FuJ3QuCisg
ICAgc3dpdGNoIChtX2tpbmQpIHsKKyAgICBjYXNlIEtub3duVmFsdWU6CisgICAgICAgIHN3aXRj
aCAoa2luZCkgeworICAgICAgICBjYXNlIFN3aXRjaEltbToKKyAgICAgICAgICAgIHJldHVybiB2
YWx1ZSgpLT52YWx1ZSgpLmFzSW50MzIoKTsKKyAgICAgICAgY2FzZSBTd2l0Y2hDZWxsOgorICAg
ICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKCktPnZhbHVlKCku
YXNDZWxsKCkpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgY2Fz
ZSBTaW5nbGVDaGFyYWN0ZXJTdHJpbmc6CisgICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAg
ICBjYXNlIFN3aXRjaENoYXI6CisgICAgICAgICAgICByZXR1cm4gY2hhcmFjdGVyKCk7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9
CisKIHZvaWQgTGF6eUpTVmFsdWU6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVt
cENvbnRleHQqIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChtX2tpbmQpIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmgJKHJldmlzaW9uIDE3
Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuaAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKKyNp
bmNsdWRlICJERkdDb21tb24uaCIKICNpbmNsdWRlICJERkdGcm96ZW5WYWx1ZS5oIgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIApAQCAtOTUsMjEgKzk2LDcgQEAgcHVibGljOgog
ICAgIAogICAgIFRyaVN0YXRlIHN0cmljdEVxdWFsKGNvbnN0IExhenlKU1ZhbHVlJiBvdGhlcikg
Y29uc3Q7CiAgICAgCi0gICAgdW5zaWduZWQgc3dpdGNoTG9va3VwVmFsdWUoKSBjb25zdAotICAg
IHsKLSAgICAgICAgLy8gTkIuIE5vdCBldmVyeSBraW5kIG9mIEpTVmFsdWUgd2lsbCBiZSBhYmxl
IHRvIGdpdmUgeW91IGEgc3dpdGNoIGxvb2t1cAotICAgICAgICAvLyB2YWx1ZSwgYW5kIHRoaXMg
bWV0aG9kIHdpbGwgYXNzZXJ0LCBvciBkbyBiYWQgdGhpbmdzLCBpZiB5b3UgdXNlIGl0Ci0gICAg
ICAgIC8vIGZvciBhIGtpbmQgb2YgdmFsdWUgdGhhdCBjYW4ndC4KLSAgICAgICAgc3dpdGNoICht
X2tpbmQpIHsKLSAgICAgICAgY2FzZSBLbm93blZhbHVlOgotICAgICAgICAgICAgcmV0dXJuIHZh
bHVlKCktPnZhbHVlKCkuYXNJbnQzMigpOwotICAgICAgICBjYXNlIFNpbmdsZUNoYXJhY3RlclN0
cmluZzoKLSAgICAgICAgICAgIHJldHVybiBjaGFyYWN0ZXIoKTsKLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gMDsKLSAgICAgICAgfQotICAgIH0KKyAgICB1aW50cHRyX3Qgc3dpdGNoTG9va3VwVmFs
dWUoU3dpdGNoS2luZCBraW5kKSBjb25zdDsKICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdDsKICAgICB2b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29u
dGV4dCopIGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCShy
ZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNiArMTEzLDkgQEAgdm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiBvdXQsIFN3aQogICAgIGNhc2UgU3dpdGNoU3RyaW5nOgogICAgICAgICBvdXQu
cHJpbnQoIlN3aXRjaFN0cmluZyIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBTd2l0Y2hD
ZWxsOgorICAgICAgICBvdXQucHJpbnQoIlN3aXRjaENlbGwiKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsMTIgKzE1Nyw2
IEBAIHN0cnVjdCBTd2l0Y2hDYXNlIHsKICAgICBCcmFuY2hUYXJnZXQgdGFyZ2V0OwogfTsKIAot
ZW51bSBTd2l0Y2hLaW5kIHsKLSAgICBTd2l0Y2hJbW0sCi0gICAgU3dpdGNoQ2hhciwKLSAgICBT
d2l0Y2hTdHJpbmcKLX07Ci0KIHN0cnVjdCBTd2l0Y2hEYXRhIHsKICAgICAvLyBJbml0aWFsaXpl
cyBtb3N0IGZpZWxkcyB0byBvYnZpb3VzbHkgaW52YWxpZCB2YWx1ZXMuIEFueW9uZQogICAgIC8v
IGNvbnN0cnVjdGluZyB0aGlzIHNob3VsZCBtYWtlIHN1cmUgdG8gaW5pdGlhbGl6ZSBldmVyeXRo
aW5nIHRoZXkKQEAgLTE4NSw2ICsxNzksNyBAQCBzdHJ1Y3QgU3dpdGNoRGF0YSB7CiAvLyBkaXN0
aW5ndWlzaGVzIGFuIGltbWVkaWF0ZSB2YWx1ZSAodHlwaWNhbGx5IGFuIGluZGV4IGludG8gYSBD
b2RlQmxvY2sgZGF0YSBzdHJ1Y3R1cmUgLSAKIC8vIGEgY29uc3RhbnQgaW5kZXgsIGFyZ3VtZW50
LCBvciBpZGVudGlmaWVyKSBmcm9tIGEgTm9kZSouCiBzdHJ1Y3QgT3BJbmZvIHsKKyAgICBPcElu
Zm8oKSA6IG1fdmFsdWUoMCkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKGludDMyX3QgdmFsdWUp
IDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9CiAgICAgZXhwbGlj
aXQgT3BJbmZvKHVpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90
Pih2YWx1ZSkpIHsgfQogI2lmIE9TKERBUldJTikgfHwgVVNFKEpTVkFMVUU2NCkKQEAgLTEwNDQs
OSArMTAzOSwxMSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIG1fb3BJbmZvMiA9IHByZWRpY3Rp
b247CiAgICAgfQogICAgIAotICAgIGJvb2wgY2FuQmVLbm93bkZ1bmN0aW9uKCkKKyAgICBib29s
IGhhc0NlbGxPcGVyYW5kKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgeworICAgICAg
ICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDoKKyAgICAgICAgY2FzZSBDaGVja0Nl
bGw6CiAgICAgICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OgogICAgICAgICBjYXNlIE5hdGl2ZUNh
bGw6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwNTUsNTQgKzEwNTIsMTYgQEAgc3Ry
dWN0IE5vZGUgewogICAgICAgICB9CiAgICAgfQogCi0gICAgYm9vbCBoYXNLbm93bkZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAob3AoKSkgewotICAgICAgICBjYXNlIE5hdGl2ZUNv
bnN0cnVjdDoKLSAgICAgICAgY2FzZSBOYXRpdmVDYWxsOgotICAgICAgICAgICAgcmV0dXJuIChi
b29sKW1fb3BJbmZvOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIEpTRnVuY3Rpb24qIGtub3duRnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNhbkJlS25vd25GdW5jdGlvbigpKTsKLSAgICAgICAg
cmV0dXJuIGJpdHdpc2VfY2FzdDxKU0Z1bmN0aW9uKj4obV9vcEluZm8pOwotICAgIH0KLQotICAg
IHZvaWQgZ2l2ZUtub3duRnVuY3Rpb24oSlNGdW5jdGlvbiogY2FsbERhdGEpIAorICAgIEZyb3pl
blZhbHVlKiBjZWxsT3BlcmFuZCgpCiAgICAgewotICAgICAgICBBU1NFUlQoY2FuQmVLbm93bkZ1
bmN0aW9uKCkpOwotICAgICAgICBtX29wSW5mbyA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGNh
bGxEYXRhKTsKLSAgICB9Ci0KLSAgICBib29sIGhhc0Z1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAg
IHN3aXRjaCAob3AoKSkgewotICAgICAgICBjYXNlIENoZWNrRnVuY3Rpb246Ci0gICAgICAgIGNh
c2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OgotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICBGcm96ZW5WYWx1ZSogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKGhhc0Z1bmN0aW9uKCkpOworICAgICAgICBBU1NFUlQoaGFzQ2VsbE9wZXJhbmQoKSk7CiAg
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEZyb3plblZhbHVlKj4obV9vcEluZm8pOwog
ICAgIH0KICAgICAKLSAgICBib29sIGhhc0V4ZWN1dGFibGUoKQorICAgIHZvaWQgc2V0Q2VsbE9w
ZXJhbmQoRnJvemVuVmFsdWUqIHZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG9wKCkgPT0g
Q2hlY2tFeGVjdXRhYmxlOwotICAgIH0KLSAgICAKLSAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0
YWJsZSgpCi0gICAgewotICAgICAgICByZXR1cm4ganNDYXN0PEV4ZWN1dGFibGVCYXNlKj4ocmVp
bnRlcnByZXRfY2FzdDxKU0NlbGwqPihtX29wSW5mbykpOworICAgICAgICBBU1NFUlQoaGFzQ2Vs
bE9wZXJhbmQoKSk7CisgICAgICAgIG1fb3BJbmZvID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4o
dmFsdWUpOwogICAgIH0KICAgICAKICAgICBib29sIGhhc1ZhcmlhYmxlV2F0Y2hwb2ludFNldCgp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAx
NzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAgICAgbWFjcm8oUHV0QnlJZEZsdXNoLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZU11c3RH
ZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCiAgICAgbWFjcm8oUHV0QnlJZERpcmVjdCwg
Tm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCiAgICAgbWFjcm8oQ2hlY2tT
dHJ1Y3R1cmUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKLSAgICBtYWNybyhDaGVja0V4ZWN1dGFibGUs
IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhHZXRFeGVjdXRhYmxlLCBOb2RlUmVzdWx0
SlMpIFwKICAgICBtYWNybyhQdXRTdHJ1Y3R1cmUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBt
YWNybyhBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1
bHRTdG9yYWdlKSBcCiAgICAgbWFjcm8oUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSwgTm9kZU11
c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRTdG9yYWdlKSBcCkBAIC0xODYsNyArMTg2LDggQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFZhcmlhYmxlV2F0Y2hwb2lu
dCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFZhckluamVjdGlvbldhdGNocG9pbnQs
IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhGdW5jdGlvblJlZW50cnlXYXRjaHBvaW50
LCBOb2RlTXVzdEdlbmVyYXRlKSBcCi0gICAgbWFjcm8oQ2hlY2tGdW5jdGlvbiwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAorICAgIG1hY3JvKENoZWNrQ2VsbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAg
IG1hY3JvKENoZWNrQmFkQ2VsbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEFsbG9j
YXRpb25Qcm9maWxlV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENo
ZWNrSW5Cb3VuZHMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBcCkBAIC0yODcsNiArMjg4LDEx
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBkaWZmZXJlbnQgY29t
cGlsZXIuICovXAogICAgIG1hY3JvKEZvcmNlT1NSRXhpdCwgTm9kZU11c3RHZW5lcmF0ZSkgXAog
ICAgIFwKKyAgICAvKiBWZW5kcyBhIGJvdHRvbSBKUyB2YWx1ZS4gSXQgaXMgaW52YWxpZCB0byBl
dmVyIGV4ZWN1dGUgdGhpcy4gVXNlZnVsIGZvciBjYXNlcyAqL1wKKyAgICAvKiB3aGVyZSB3ZSBr
bm93IHRoYXQgd2Ugd291bGQgaGF2ZSBleGl0ZWQgYnV0IHdlJ2QgbGlrZSB0byBzdGlsbCB0cmFj
ayB0aGUgY29udHJvbCAqL1wKKyAgICAvKiBmbG93LiAqL1wKKyAgICBtYWNybyhCb3R0b21WYWx1
ZSwgTm9kZVJlc3VsdEpTKSBcCisgICAgXAogICAgIC8qIENoZWNrcyB0aGUgd2F0Y2hkb2cgdGlt
ZXIuIElmIHRoZSB0aW1lciBoYXMgZmlyZWQsIHdlIE9TUiBleGl0IHRvIHRoZSAqLyBcCiAgICAg
LyogYmFzZWxpbmUgSklUIHRvIHJlZG8gdGhlIHdhdGNoZG9nIHRpbWVyIGNoZWNrLCBhbmQgc2Vy
dmljZSB0aGUgdGltZXIuICovIFwKICAgICBtYWNybyhDaGVja1dhdGNoZG9nVGltZXIsIE5vZGVN
dXN0R2VuZXJhdGUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRv
bUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcAkocmV2aXNpb24g
MTcyNzk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tQ2Fub25pY2Fs
aXphdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsOCArOTIsMTAgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4ucmVtb3ZlRWRnZShpLS0p
OwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKQorICAgICAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvQ2hlY2soKTsKICAgICAgICAg
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21SZW1v
dmFsUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UGhhbnRvbVJlbW92YWxQaGFzZS5jcHAJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyNSw2ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3Iu
ZnJlZShub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAg
LTE0Miw2ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2Vk
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFu
Z2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgICAgICAgICB9CkBAIC0xNDksOCArMTUxLDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNhc2UgSGFyZFBoYW50
b206IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNzI3OTQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDcgKzE5Niw4IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgR2V0R2V0
dGVyU2V0dGVyQnlPZmZzZXQ6IHsKKyAgICAgICAgY2FzZSBHZXRHZXR0ZXJTZXR0ZXJCeU9mZnNl
dDoKKyAgICAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9
IHNldFByZWRpY3Rpb24oU3BlY0NlbGxPdGhlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQpAQCAtNjQzLDggKzY0NCw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRm9yY2VPU1JF
eGl0OgogICAgICAgICBjYXNlIFNldEFyZ3VtZW50OgogICAgICAgICBjYXNlIENoZWNrU3RydWN0
dXJlOgotICAgICAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToKLSAgICAgICAgY2FzZSBDaGVja0Z1
bmN0aW9uOgorICAgICAgICBjYXNlIENoZWNrQ2VsbDoKKyAgICAgICAgY2FzZSBDaGVja0JhZENl
bGw6CiAgICAgICAgIGNhc2UgUHV0U3RydWN0dXJlOgogICAgICAgICBjYXNlIFRlYXJPZmZBY3Rp
dmF0aW9uOgogICAgICAgICBjYXNlIFRlYXJPZmZBcmd1bWVudHM6CkBAIC02NjYsNiArNjY3LDEw
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgWm9tYmllSGludDoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgCisgICAgICAgIC8vIFRoaXMgZ2V0cyBpZ25vcmVkIGJlY2F1c2UgaXQg
b25seSBwcmV0ZW5kcyB0byBwcm9kdWNlIGEgdmFsdWUuCisgICAgICAgIGNhc2UgQm90dG9tVmFs
dWU6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgICAgICAvLyBUaGlzIGdl
dHMgaWdub3JlZCBiZWNhdXNlIGl0IGFscmVhZHkgaGFzIGEgcHJlZGljdGlvbi4KICAgICAgICAg
Y2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDE3
Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3Ry
YWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgUHV0QnlJZEZsdXNoOgogICAgIGNhc2UgUHV0QnlJ
ZERpcmVjdDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgotICAgIGNhc2UgQ2hlY2tFeGVjdXRh
YmxlOgorICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNlIEdldEJ1dHRlcmZseToKICAg
ICBjYXNlIENoZWNrQXJyYXk6CiAgICAgY2FzZSBBcnJheWlmeToKQEAgLTE3NSw3ICsxNzUsOCBA
QCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBQdXRH
bG9iYWxWYXI6CiAgICAgY2FzZSBWYXJpYWJsZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBWYXJJbmpl
Y3Rpb25XYXRjaHBvaW50OgotICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKKyAgICBjYXNlIENoZWNr
Q2VsbDoKKyAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxl
V2F0Y2hwb2ludDoKICAgICBjYXNlIFJlZ0V4cEV4ZWM6CiAgICAgY2FzZSBSZWdFeHBUZXN0OgpA
QCAtMjc0LDYgKzI3NSwxMSBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUm
IHN0CiAgICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6CiAgICAgICAgIHJldHVybiBmYWxzZTsgLy8g
VE9ETzogYWRkIGEgY2hlY2sgZm9yIGFscmVhZHkgY2hlY2tlZC4gIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM3NjkKIAorICAgIGNhc2UgQm90dG9tVmFsdWU6Cisg
ICAgICAgIC8vIElmIGluIGRvdWJ0LCBhc3N1bWUgdGhhdCB0aGlzIGlzbid0IHNhZmUgdG8gZXhl
Y3V0ZSwganVzdCBiZWNhdXNlIHdlIGhhdmUgbm8gd2F5IG9mCisgICAgICAgIC8vIGNvbXBpbGlu
ZyB0aGlzIG5vZGUuCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGNhc2UgR2V0QnlWYWw6
CiAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgR2V0QXJyYXlM
ZW5ndGg6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY4OSw2ICs2ODksMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9k
ZQogCiAgICAgbV9qaXQuZW1pdFN0b3JlQ29kZU9yaWdpbihub2RlLT5vcmlnaW4uc2VtYW50aWMp
OwogICAgIAorICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRD
YWxsTGlua0luZm8oKTsKKworICAgIGlmIChtX2ppdC5ncmFwaCgpLm1fc2hvdWxkUHJvZmlsZSAm
JiAhbV9zdGF0ZS5mb3JOb2RlKGNhbGxlZUVkZ2UpLm1fdmFsdWUpIHsKKyAgICAgICAgbV9qaXQu
dm0oKS5jYWxsRWRnZUxvZy0+ZW1pdExvZ0NvZGUoCisgICAgICAgICAgICBtX2ppdCwgY2FsbExp
bmtJbmZvLT5jYWxsRWRnZVByb2ZpbGUsIGNhbGxlZS5qc1ZhbHVlUmVncygpKTsKKyAgICB9Cisg
ICAgCiAgICAgc2xvd1BhdGguYXBwZW5kKGJyYW5jaE5vdENlbGwoY2FsbGVlLmpzVmFsdWVSZWdz
KCkpKTsKICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoUHRyV2l0aFBhdGNoKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgY2FsbGVlUGF5bG9hZEdQUiwgdGFyZ2V0VG9DaGVjaykpOwog
ICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2FsbGVlUGF5bG9hZEdQ
UiwgT0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rpb24sIG1fc2NvcGUpKSwgcmVzdWx0UGF5bG9hZEdQ
Uik7CkBAIC03MTMsNyArNzIwLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9k
ZSogbm9kZQogICAgICAgICBtX2ppdC5tb3ZlKGNhbGxlZVBheWxvYWRHUFIsIEdQUkluZm86OnJl
Z1QwKTsKICAgICAgICAgbV9qaXQubW92ZShjYWxsZWVUYWdHUFIsIEdQUkluZm86OnJlZ1QxKTsK
ICAgICB9Ci0gICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZENh
bGxMaW5rSW5mbygpOwogICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIoaW5mbyksIEdQUkluZm86OnJlZ1QyKTsKICAgICBKSVRDb21waWxlcjo6Q2FsbCBzbG93Q2Fs
bCA9IG1faml0Lm5lYXJDYWxsKCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTcyNzk0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjI2LDcgKzYyNiw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNaXNj
U3RyaWN0RXEKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKIHsK
LQogICAgIGJvb2wgaXNDYWxsID0gbm9kZS0+b3AoKSA9PSBDYWxsOwogICAgIGlmICghaXNDYWxs
KQogICAgICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPm9wKCkgPT0g
Q29uc3RydWN0KTsKQEAgLTY3MCw2ICs2NjksMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1p
dENhbGwoTm9kZSogbm9kZQogCiAgICAgbV9qaXQuZW1pdFN0b3JlQ29kZU9yaWdpbihub2RlLT5v
cmlnaW4uc2VtYW50aWMpOwogICAgIAorICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0g
bV9qaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbygpOworICAgIAorICAgIGlmIChDYWxs
RWRnZUxvZzo6aXNFbmFibGVkKCkKKyAgICAgICAgJiYgbV9qaXQuZ3JhcGgoKS5tX3Nob3VsZFBy
b2ZpbGUKKyAgICAgICAgJiYgIW1fc3RhdGUuZm9yTm9kZShjYWxsZWVFZGdlKS5tX3ZhbHVlKSB7
CisgICAgICAgIG1faml0LnZtKCktPmNhbGxFZGdlTG9nLT5lbWl0TG9nQ29kZSgKKyAgICAgICAg
ICAgIG1faml0LCBjYWxsTGlua0luZm8tPmNhbGxFZGdlUHJvZmlsZSwgSlNWYWx1ZVJlZ3MoY2Fs
bGVlR1BSKSk7CisgICAgfQorCiAgICAgc2xvd1BhdGggPSBtX2ppdC5icmFuY2hQdHJXaXRoUGF0
Y2goTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBjYWxsZWVHUFIsIHRhcmdldFRvQ2hlY2ssIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKDApKTsKIAogICAgIG1faml0LmxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2FsbGVlR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlv
biwgbV9zY29wZSkpLCByZXN1bHRHUFIpOwpAQCAtNjgyLDcgKzY5MCw2IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICBzbG93UGF0aC5saW5rKCZtX2ppdCk7
CiAgICAgCiAgICAgbV9qaXQubW92ZShjYWxsZWVHUFIsIEdQUkluZm86OnJlZ1QwKTsgLy8gQ2Fs
bGVlIG5lZWRzIHRvIGJlIGluIHJlZ1QwCi0gICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8g
PSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7CiAgICAgbV9qaXQubW92ZShN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpyZWdU
Mik7IC8vIExpbmsgaW5mbyBuZWVkcyB0byBiZSBpbiByZWdUMgogICAgIEpJVENvbXBpbGVyOjpD
YWxsIHNsb3dDYWxsID0gbV9qaXQubmVhckNhbGwoKTsKICAgICAKQEAgLTM3NzgsMTggKzM3ODUs
MjEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBj
b21waWxlR2V0QXJyYXlMZW5ndGgobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKLSAg
ICBjYXNlIENoZWNrRnVuY3Rpb246IHsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVu
Y3Rpb24odGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJh
ZEZ1bmN0aW9uLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChmdW5jdGlvbi5ncHIoKSksIG5v
ZGUtPmNoaWxkMSgpLCBtX2ppdC5icmFuY2hXZWFrUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwg
ZnVuY3Rpb24uZ3ByKCksIG5vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkuYXNDZWxsKCkpKTsKKyAg
ICBjYXNlIENoZWNrQ2VsbDogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBjZWxsKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRDZWxsLCBK
U1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsLmdwcigpKSwgbm9kZS0+Y2hpbGQxKCksIG1f
aml0LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBjZWxsLmdwcigpLCBub2Rl
LT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpLmFzQ2VsbCgpKSk7CiAgICAgICAgIG5vUmVzdWx0KG5v
ZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgQ2hlY2tFeGVj
dXRhYmxlOiB7CisgICAgY2FzZSBHZXRFeGVjdXRhYmxlOiB7CiAgICAgICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGZ1bmN0aW9uKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgc3BlY3Vs
YXRlQ2VsbFR5cGUobm9kZS0+Y2hpbGQxKCksIGZ1bmN0aW9uLmdwcigpLCBTcGVjRnVuY3Rpb24s
IEpTRnVuY3Rpb25UeXBlKTsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRFeGVjdXRhYmxl
LCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChmdW5jdGlvbi5ncHIoKSksIG5vZGUtPmNoaWxk
MSgpLCBtX2ppdC5icmFuY2hXZWFrUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGls
ZXI6OkFkZHJlc3MoZnVuY3Rpb24uZ3ByKCksIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJs
ZSgpKSwgbm9kZS0+ZXhlY3V0YWJsZSgpKSk7Ci0gICAgICAgIG5vUmVzdWx0KG5vZGUpOworICAg
ICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBmdW5jdGlvbik7CisgICAgICAg
IEdQUlJlZyBmdW5jdGlvbkdQUiA9IGZ1bmN0aW9uLmdwcigpOworICAgICAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICBzcGVjdWxhdGVDZWxsVHlwZShub2RlLT5j
aGlsZDEoKSwgZnVuY3Rpb25HUFIsIFNwZWNGdW5jdGlvbiwgSlNGdW5jdGlvblR5cGUpOworICAg
ICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uR1BSLCBKU0Z1
bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIHJlc3VsdEdQUik7CisgICAgICAgIGNlbGxS
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAK
QEAgLTQ5ODAsNyArNDk5MCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zm
c2V0OgogICAgIGNhc2UgRmlhdEludDUyOgotICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgo
KSwgbm9kZSwgIlVuZXhwZWN0ZWQgRlRMIG5vZGUiKTsKKyAgICBjYXNlIENoZWNrQmFkQ2VsbDoK
KyAgICBjYXNlIEJvdHRvbVZhbHVlOgorICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwg
bm9kZSwgIlVuZXhwZWN0ZWQgbm9kZSIpOwogICAgICAgICBicmVhazsKICAgICB9CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShy
ZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTM1NCw2ICs1MzU0LDEwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2goTm9kZSogbm8KICAgICBjYXNlIFN3aXRjaFN0cmluZzog
ewogICAgICAgICBlbWl0U3dpdGNoU3RyaW5nKG5vZGUsIGRhdGEpOwogICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGNhc2UgU3dpdGNoQ2VsbDogeworICAgICAgICBERkdfQ1JBU0gobV9qaXQu
Z3JhcGgoKSwgbm9kZSwgIkJhZCBzd2l0Y2gga2luZCIpOworICAgICAgICByZXR1cm47CiAgICAg
fSB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0
aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjIsMTAgKzYyLDYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9j
ay0+YXQobm9kZUluZGV4KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHN3aXRjaCAo
bm9kZS0+b3AoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOgotICAg
ICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShub2RlLT5leGVjdXRhYmxlKCktPnN0
cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICAgICAgICAgICAgICAg
ICAgcmVnaXN0ZXJTdHJ1Y3R1cmVzKG5vZGUtPnN0cnVjdHVyZVNldCgpKTsKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJV
cENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE3Mjc5
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25Q
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDggQEAgcHVibGljOgogICAgICAg
ICBpZiAoIU9wdGlvbnM6OmVuYWJsZU9TUkVudHJ5VG9GVEwoKSkKICAgICAgICAgICAgIGxldmVs
ID0gRlRMOjpDYW5Db21waWxlOwogICAgICAgICAKKyAgICAgICAgbV9ncmFwaC5tX3Nob3VsZFBy
b2ZpbGUgPSB0cnVlOworICAgICAgICAKICAgICAgICAgSW5zZXJ0aW9uU2V0IGluc2VydGlvblNl
dChtX2dyYXBoKTsKICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBo
Lm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CiAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBi
bG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMCw3
ICsyMDAsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgVkFM
SURBVEUoKG5vZGUpLCAhbWF5RXhpdChtX2dyYXBoLCBub2RlKSB8fCBub2RlLT5vcmlnaW4uZm9y
RXhpdC5pc1NldCgpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFub2RlLT5o
YXNTdHJ1Y3R1cmUoKSB8fCAhIW5vZGUtPnN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAgICBW
QUxJREFURSgobm9kZSksICFub2RlLT5oYXNGdW5jdGlvbigpIHx8IG5vZGUtPmZ1bmN0aW9uKCkt
PnZhbHVlKCkuaXNGdW5jdGlvbigpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSks
ICFub2RlLT5oYXNDZWxsT3BlcmFuZCgpIHx8IG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCku
aXNDZWxsKCkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhhc0Nl
bGxPcGVyYW5kKCkgfHwgISFub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpKTsKICAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKCEobm9kZS0+ZmxhZ3MoKSAmIE5vZGVIYXNW
YXJBcmdzKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmNoaWxkMigpKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dhdGNocG9p
bnRDb2xsZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0xMTQsNyArMTE0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgCiAgICAgICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OgotICAgICAg
ICAgICAgYWRkTGF6aWx5KGpzQ2FzdDxKU0Z1bmN0aW9uKj4obV9ub2RlLT5mdW5jdGlvbigpLT52
YWx1ZSgpKS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkpOworICAgICAgICAgICAg
YWRkTGF6aWx5KGpzQ2FzdDxKU0Z1bmN0aW9uKj4obV9ub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1
ZSgpKS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBWYXJpYWJsZVdhdGNocG9pbnQ6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShyZXZp
c2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGll
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsOCBAQCBpbmxpbmUgQ2FwYWJpbGl0
eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAgIGNh
c2UgSW52YWxpZGF0aW9uUG9pbnQ6CiAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6Ci0gICAgY2FzZSBD
aGVja0Z1bmN0aW9uOgorICAgIGNhc2UgQ2hlY2tDZWxsOgorICAgIGNhc2UgQ2hlY2tCYWRDZWxs
OgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlT
dG9yYWdlOgogICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKQEAgLTEyNiw3ICsx
MjcsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2Fz
ZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBDb3Vu
dEV4ZWN1dGlvbjoKLSAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToKKyAgICBjYXNlIEdldEV4ZWN1
dGFibGU6CiAgICAgY2FzZSBHZXRTY29wZToKICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0
Y2hwb2ludDoKICAgICBjYXNlIENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZDoKQEAgLTE2Niw2ICsx
NjcsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2Fz
ZSBHZXRHZW5lcmljUHJvcGVydHlFbnVtZXJhdG9yOgogICAgIGNhc2UgR2V0RW51bWVyYXRvclBu
YW1lOgogICAgIGNhc2UgVG9JbmRleFN0cmluZzoKKyAgICBjYXNlIEJvdHRvbVZhbHVlOgogICAg
ICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSWRlbnRpdHk6
CkBAIC0zMjYsNiArMzI4LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5v
ZGUqIAogICAgICAgICBzd2l0Y2ggKG5vZGUtPnN3aXRjaERhdGEoKS0+a2luZCkgewogICAgICAg
ICBjYXNlIFN3aXRjaEltbToKICAgICAgICAgY2FzZSBTd2l0Y2hDaGFyOgorICAgICAgICBjYXNl
IFN3aXRjaENlbGw6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIHJldHVybiBDYW5ub3RDb21waWxlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE3Mjc5NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02Nyw3ICs2Nyw2IEBAIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggc3RhdGljIHZvaWQg
ZnRsVW4KIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggc3RhdGljIHZvaWQgZnRsVW5yZWFjaGFibGUo
CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJsb2NrSW5kZXggYmxvY2tJbmRleCwgdW5zaWdu
ZWQgbm9kZUluZGV4KQogewotICAgIAogICAgIGRhdGFMb2coIkNyYXNoaW5nIGluIHRob3VnaHQt
dG8tYmUtdW5yZWFjaGFibGUgRlRMLWdlbmVyYXRlZCBjb2RlIGZvciAiLCBwb2ludGVyRHVtcChj
b2RlQmxvY2spLCAiIGF0IGJhc2ljIGJsb2NrICMiLCBibG9ja0luZGV4KTsKICAgICBpZiAobm9k
ZUluZGV4ICE9IFVJTlRfTUFYKQogICAgICAgICBkYXRhTG9nKCIsIG5vZGUgQCIsIG5vZGVJbmRl
eCk7CkBAIC0xNTMsMTEgKzE1MiwxNyBAQCBwdWJsaWM6CiAgICAgICAgIGZvciAodW5zaWduZWQg
YmxvY2tJbmRleCA9IGRlcHRoRmlyc3Quc2l6ZSgpOyBibG9ja0luZGV4LS07ICkgewogICAgICAg
ICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBkZXB0aEZpcnN0W2Jsb2NrSW5kZXhdOwogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBub2RlSW5kZXggPSBibG9jay0+c2l6ZSgpOyBub2RlSW5kZXgt
LTsgKSB7Ci0gICAgICAgICAgICAgICAgTm9kZSogbV9ub2RlID0gYmxvY2stPmF0KG5vZGVJbmRl
eCk7Ci0gICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+aGFzS25vd25GdW5jdGlvbigpKSB7Cisg
ICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOworICAgICAg
ICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgTmF0
aXZlQ2FsbDoKKyAgICAgICAgICAgICAgICBjYXNlIE5hdGl2ZUNvbnN0cnVjdDogewogICAgICAg
ICAgICAgICAgICAgICBpbnQgbnVtQXJncyA9IG1fbm9kZS0+bnVtQ2hpbGRyZW4oKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKG51bUFyZ3MgPiBtYXhOdW1iZXJPZkFyZ3VtZW50cykKICAgICAg
ICAgICAgICAgICAgICAgICAgIG1heE51bWJlck9mQXJndW1lbnRzID0gbnVtQXJnczsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDY4LDExICs0NzMsMTQgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICAgICAgICAgIGNvbXBpbGVDaGVja1N0
cnVjdHVyZSgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2hlY2tGdW5jdGlv
bjoKLSAgICAgICAgICAgIGNvbXBpbGVDaGVja0Z1bmN0aW9uKCk7CisgICAgICAgIGNhc2UgQ2hl
Y2tDZWxsOgorICAgICAgICAgICAgY29tcGlsZUNoZWNrQ2VsbCgpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgorICAgICAgICAgICAgY29tcGlsZUNoZWNr
QmFkQ2VsbCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2hlY2tFeGVjdXRh
YmxlOgotICAgICAgICAgICAgY29tcGlsZUNoZWNrRXhlY3V0YWJsZSgpOworICAgICAgICBjYXNl
IEdldEV4ZWN1dGFibGU6CisgICAgICAgICAgICBjb21waWxlR2V0RXhlY3V0YWJsZSgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKICAgICAg
ICAgICAgIGNvbXBpbGVBcnJheWlmeVRvU3RydWN0dXJlKCk7CkBAIC0xNzQzLDI2ICsxNzUxLDI1
IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5l
eHQpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGNvbXBpbGVDaGVja0Z1bmN0aW9uKCkKKyAgICB2
b2lkIGNvbXBpbGVDaGVja0NlbGwoKQogICAgIHsKICAgICAgICAgTFZhbHVlIGNlbGwgPSBsb3dD
ZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAKICAgICAgICAgc3BlY3VsYXRlKAotICAg
ICAgICAgICAgQmFkRnVuY3Rpb24sIGpzVmFsdWVWYWx1ZShjZWxsKSwgbV9ub2RlLT5jaGlsZDEo
KS5ub2RlKCksCi0gICAgICAgICAgICBtX291dC5ub3RFcXVhbChjZWxsLCB3ZWFrUG9pbnRlciht
X25vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkuYXNDZWxsKCkpKSk7CisgICAgICAgICAgICBCYWRD
ZWxsLCBqc1ZhbHVlVmFsdWUoY2VsbCksIG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpLAorICAgICAg
ICAgICAgbV9vdXQubm90RXF1YWwoY2VsbCwgd2Vha1BvaW50ZXIobV9ub2RlLT5jZWxsT3BlcmFu
ZCgpLT52YWx1ZSgpLmFzQ2VsbCgpKSkpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGNvbXBpbGVD
aGVja0V4ZWN1dGFibGUoKQorICAgIHZvaWQgY29tcGlsZUNoZWNrQmFkQ2VsbCgpCisgICAgewor
ICAgICAgICB0ZXJtaW5hdGUoQmFkQ2VsbCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY29tcGls
ZUdldEV4ZWN1dGFibGUoKQogICAgIHsKICAgICAgICAgTFZhbHVlIGNlbGwgPSBsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAKICAgICAgICAgc3BlY3VsYXRlRnVuY3Rpb24obV9u
b2RlLT5jaGlsZDEoKSwgY2VsbCk7Ci0gICAgICAgIAotICAgICAgICBzcGVjdWxhdGUoCi0gICAg
ICAgICAgICBCYWRFeGVjdXRhYmxlLCBqc1ZhbHVlVmFsdWUoY2VsbCksIG1fbm9kZS0+Y2hpbGQx
KCkubm9kZSgpLAotICAgICAgICAgICAgbV9vdXQubm90RXF1YWwoCi0gICAgICAgICAgICAgICAg
bV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTRnVuY3Rpb25fZXhlY3V0YWJsZSksCi0gICAg
ICAgICAgICAgICAgd2Vha1BvaW50ZXIobV9ub2RlLT5leGVjdXRhYmxlKCkpKSk7CisgICAgICAg
IHNldEpTVmFsdWUobV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTRnVuY3Rpb25fZXhlY3V0
YWJsZSkpOwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVBcnJheWlmeVRvU3RydWN0dXJl
KCkKQEAgLTM2NzMsOSArMzY4MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGludCBudW1QYXNzZWRB
cmdzID0gbV9ub2RlLT5udW1DaGlsZHJlbigpIC0gMTsKICAgICAgICAgaW50IG51bUFyZ3MgPSBu
dW1QYXNzZWRBcmdzICsgZHVtbXlUaGlzQXJndW1lbnQ7CiAKLSAgICAgICAgQVNTRVJUKG1fbm9k
ZS0+aGFzS25vd25GdW5jdGlvbigpKTsKLQotICAgICAgICBKU0Z1bmN0aW9uKiBrbm93bkZ1bmN0
aW9uID0gbV9ub2RlLT5rbm93bkZ1bmN0aW9uKCk7CisgICAgICAgIEpTRnVuY3Rpb24qIGtub3du
RnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFs
dWUoKS5hc0NlbGwoKSk7CiAgICAgICAgIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uID0ga25vd25G
dW5jdGlvbi0+bmF0aXZlRnVuY3Rpb24oKTsKIAogICAgICAgICBEbF9pbmZvIGluZm87CkBAIC0z
OTE4LDEwICszOTIzLDM3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIGNhc2UgU3dpdGNoU3RyaW5nOgorICAgICAgICBjYXNlIFN3
aXRjaFN0cmluZzogewogICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIlVu
aW1wbGVtZW50ZWQiKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBTd2l0Y2hDZWxsOiB7CisgICAg
ICAgICAgICBMVmFsdWUgY2VsbDsKKyAgICAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQ2VsbFVzZTogeworICAgICAgICAgICAg
ICAgIGNlbGwgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBV
bnR5cGVkVXNlOiB7CisgICAgICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZSht
X25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBjZWxsQ2FzZSA9
IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiU3dpdGNoL1N3aXRjaENlbGwgY2VsbCBjYXNlIikpOwor
ICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgICAgICAgICAgaXNDZWxs
KHZhbHVlKSwgdW5zdXJlKGNlbGxDYXNlKSwgdW5zdXJlKGxvd0Jsb2NrKGRhdGEtPmZhbGxUaHJv
dWdoLmJsb2NrKSkpOworICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNlbGxDYXNlKTsK
KyAgICAgICAgICAgICAgICBjZWxsID0gdmFsdWU7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJCYWQgdXNlIGtpbmQiKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGJ1aWxkU3dpdGNoKG1fbm9kZS0+c3dpdGNoRGF0YSgpLCBtX291dC5pbnRQdHIs
IGNlbGwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IH0KICAgICAgICAgCiAgICAg
ICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJCYWQgc3dpdGNoIGtpbmQiKTsKICAgICB9
CkBAIC01MTg2LDcgKzUyMTgsNyBAQCBwcml2YXRlOgogICAgICAgICBWZWN0b3I8U3dpdGNoQ2Fz
ZT4gY2FzZXM7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLT5jYXNlcy5z
aXplKCk7ICsraSkgewogICAgICAgICAgICAgY2FzZXMuYXBwZW5kKFN3aXRjaENhc2UoCi0gICAg
ICAgICAgICAgICAgY29uc3RJbnQodHlwZSwgZGF0YS0+Y2FzZXNbaV0udmFsdWUuc3dpdGNoTG9v
a3VwVmFsdWUoKSksCisgICAgICAgICAgICAgICAgY29uc3RJbnQodHlwZSwgZGF0YS0+Y2FzZXNb
aV0udmFsdWUuc3dpdGNoTG9va3VwVmFsdWUoZGF0YS0+a2luZCkpLAogICAgICAgICAgICAgICAg
IGxvd0Jsb2NrKGRhdGEtPmNhc2VzW2ldLnRhcmdldC5ibG9jayksIFdlaWdodChkYXRhLT5jYXNl
c1tpXS50YXJnZXQuY291bnQpKSk7CiAgICAgICAgIH0KICAgICAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTcyNzk0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4NCw2ICs5ODQsMTEg
QEAgdm9pZCBIZWFwOjpjb2xsZWN0KEhlYXBPcGVyYXRpb24gY29sbGVjdAogICAgICAgICB2bSgp
LT5oaWdoRmlkZWxpdHlMb2coKS0+cHJvY2Vzc0hpZ2hGaWRlbGl0eUxvZygiR0MiKTsKICAgICB9
CiAgICAgCisgICAgaWYgKHZtKCktPmNhbGxFZGdlTG9nKSB7CisgICAgICAgIERlZmVyR0NGb3JB
V2hpbGUgYXdoaWxlKCp0aGlzKTsKKyAgICAgICAgdm0oKS0+Y2FsbEVkZ2VMb2ctPnByb2Nlc3NM
b2coKTsKKyAgICB9CisgICAgCiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fZGVmZXJyYWxEZXB0aCk7
CiAgICAgQVNTRVJUKHZtKCktPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwogICAg
IFJFTEVBU0VfQVNTRVJUKHZtKCktPmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0
YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCw2ICs4
OCwyMSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAgICAgCisgICAgdm9pZCBsb2FkVmFsdWUo
QWRkcmVzcyBhZGRyZXNzLCBKU1ZhbHVlUmVncyByZWdzKQorICAgIHsKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgICAgICBsb2FkNjQoYWRkcmVzcywgcmVncy5ncHIoKSk7CisjZWxzZQorICAgICAg
ICBpZiAoYWRkcmVzcy5iYXNlID09IHJlZ3MucGF5bG9hZEdQUigpKSB7CisgICAgICAgICAgICBs
b2FkMzIoYWRkcmVzcy53aXRoT2Zmc2V0KFRhZ09mZnNldCksIHJlZ3MudGFnR1BSKCkpOworICAg
ICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldChQYXlsb2FkT2Zmc2V0KSwgcmVncy5w
YXlsb2FkR1BSKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9hZDMyKGFkZHJl
c3Mud2l0aE9mZnNldChQYXlsb2FkT2Zmc2V0KSwgcmVncy5wYXlsb2FkR1BSKCkpOworICAgICAg
ICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldChUYWdPZmZzZXQpLCByZWdzLnRhZ0dQUigp
KTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorICAgIAogICAgIHZvaWQgbW92ZVRydXN0ZWRW
YWx1ZShKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlUmVncyByZWdzKQogICAgIHsKICNpZiBVU0UoSlNW
QUxVRTY0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCShy
ZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVy
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjY2LDYgKzE2NjYsMTUgQEAgcHVibGljOgogICAgICAg
ICBtb3ZlKGFyZzQsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CiAgICAgfQogI2VuZGlmCisgICAg
CisgICAgdm9pZCBzZXR1cEFyZ3VtZW50cyhKU1ZhbHVlUmVncyBhcmcxKQorICAgIHsKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgICAgICBzZXR1cEFyZ3VtZW50cyhhcmcxLmdwcigpKTsKKyNlbHNl
CisgICAgICAgIHNldHVwQXJndW1lbnRzKGFyZzEucGF5bG9hZEdQUigpLCBhcmcxLnRhZ0dQUigp
KTsKKyNlbmRpZgorICAgIH0KIAogICAgIHZvaWQgc2V0dXBSZXN1bHRzKEdQUlJlZyBkZXN0QSwg
R1BSUmVnIGRlc3RCKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BS
SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5o
CShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8u
aAkod29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsOCBAQCBwdWJsaWM6CiAgICAgR1BSUmVnIHRh
Z0dQUigpIGNvbnN0IHsgcmV0dXJuIEludmFsaWRHUFJSZWc7IH0KICAgICBHUFJSZWcgcGF5bG9h
ZEdQUigpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByOyB9CiAgICAgCisgICAgYm9vbCB1c2VzKEdQUlJl
ZyBncHIpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByID09IGdwcjsgfQorICAgIAogcHJpdmF0ZToKICAg
ICBHUFJSZWcgbV9ncHI7CiB9OwpAQCAtMTY5LDYgKzE3MSw4IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIHRhZ0dQUigpOwogICAgIH0KIAorICAgIGJvb2wgdXNlcyhHUFJSZWcgZ3ByKSBjb25z
dCB7IHJldHVybiBtX3RhZ0dQUiA9PSBncHIgfHwgbV9wYXlsb2FkR1BSID09IGdwcjsgfQorICAg
IAogcHJpdmF0ZToKICAgICBpbnQ4X3QgbV90YWdHUFI7CiAgICAgaW50OF90IG1fcGF5bG9hZEdQ
UjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHJl
dmlzaW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAwLDYgKzMwMCwxMyBAQCB2b2lkIEpJVDo6Y29tcGls
ZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgc3RvcmUzMihyZWdUMCwgQWRkcmVzcyhzdGFj
a1BvaW50ZXJSZWdpc3RlciwgSlNTdGFjazo6Q2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXpl
b2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykp
KTsKICAgICBzdG9yZTMyKHJlZ1QxLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBKU1N0
YWNrOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgVGFnT2Zm
c2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAKKyAgICBDYWxsTGlua0luZm8qIGlu
Zm8gPSBtX2NvZGVCbG9jay0+YWRkQ2FsbExpbmtJbmZvKCk7CisKKyAgICBpZiAoQ2FsbEVkZ2VM
b2c6OmlzRW5hYmxlZCgpICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgeworICAgICAgICBtX3Zt
LT5lbnN1cmVDYWxMRWRnZUxvZygpLmVtaXRMb2dDb2RlKAorICAgICAgICAgICAgKnRoaXMsIGlu
Zm8tPmNhbGxFZGdlUHJvZmlsZSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7CisgICAgfQor
CiAgICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCkgewogICAgICAgICBjb21waWxlQ2Fs
bEV2YWwoaW5zdHJ1Y3Rpb24pOwogICAgICAgICByZXR1cm47CkBAIC0zMTMsNyArMzIwLDYgQEAg
dm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIGFkZFNsb3dDYXNl
KHNsb3dDYXNlKTsKIAogICAgIEFTU0VSVChtX2NhbGxDb21waWxhdGlvbkluZm8uc2l6ZSgpID09
IGNhbGxMaW5rSW5mb0luZGV4KTsKLSAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2NvZGVCbG9j
ay0+YWRkQ2FsbExpbmtJbmZvKCk7CiAgICAgaW5mby0+Y2FsbFR5cGUgPSBDYWxsTGlua0luZm86
OmNhbGxUeXBlRm9yKG9wY29kZUlEKTsKICAgICBpbmZvLT5jb2RlT3JpZ2luID0gQ29kZU9yaWdp
bihtX2J5dGVjb2RlT2Zmc2V0KTsKICAgICBpbmZvLT5jYWxsZWVHUFIgPSByZWdUMDsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAkocmV2aXNpb24gMTcyNzk0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjEyLDYgKzIxMiwxMSBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJ
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjYWxsZWUsIHJlZ1QwKTsgLy8gcmVnVDAgaG9s
ZHMgY2FsbGVlLgogCiAgICAgc3RvcmU2NChyZWdUMCwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdp
c3RlciwgSlNTdGFjazo6Q2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOworICAgIAorICAgIENhbGxMaW5rSW5mbyog
aW5mbyA9IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsKKworICAgIGlmIChDYWxsRWRn
ZUxvZzo6aXNFbmFibGVkKCkgJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKQorICAgICAgICBtX3Zt
LT5lbnN1cmVDYWxsRWRnZUxvZygpLmVtaXRMb2dDb2RlKCp0aGlzLCBpbmZvLT5jYWxsRWRnZVBy
b2ZpbGUsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CiAKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2Fs
bF9ldmFsKSB7CiAgICAgICAgIGNvbXBpbGVDYWxsRXZhbChpbnN0cnVjdGlvbik7CkBAIC0yMjMs
NyArMjI4LDYgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAg
IGFkZFNsb3dDYXNlKHNsb3dDYXNlKTsKIAogICAgIEFTU0VSVChtX2NhbGxDb21waWxhdGlvbklu
Zm8uc2l6ZSgpID09IGNhbGxMaW5rSW5mb0luZGV4KTsKLSAgICBDYWxsTGlua0luZm8qIGluZm8g
PSBtX2NvZGVCbG9jay0+YWRkQ2FsbExpbmtJbmZvKCk7CiAgICAgaW5mby0+Y2FsbFR5cGUgPSBD
YWxsTGlua0luZm86OmNhbGxUeXBlRm9yKG9wY29kZUlEKTsKICAgICBpbmZvLT5jb2RlT3JpZ2lu
ID0gQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KTsKICAgICBpbmZvLT5jYWxsZWVHUFIgPSBy
ZWdUMDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlz
aW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAko
d29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2Nyw4IEBAIHR5cGVkZWYgY29uc3QgY2hhciogb3B0
aW9uU3RyaW5nOwogICAgIHYoYm9vbCwgZW5hYmxlQWNjZXNzSW5saW5pbmcsIHRydWUpIFwKICAg
ICB2KGJvb2wsIGVuYWJsZVBvbHl2YXJpYW50RGV2aXJ0dWFsaXphdGlvbiwgdHJ1ZSkgXAogICAg
IHYoYm9vbCwgZW5hYmxlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZywgdHJ1ZSkgXAorICAgIHYo
Ym9vbCwgZW5hYmxlUG9seW1vcnBoaWNDYWxsSW5saW5pbmcsIHRydWUpIFwKKyAgICB2KGJvb2ws
IGVuYWJsZUNhbGxFZGdlUHJvZmlsaW5nLCB0cnVlKSBcCiAgICAgdihib29sLCBvcHRpbWl6ZU5h
dGl2ZUNhbGxzLCBmYWxzZSkgXAogICAgIFwKICAgICB2KGJvb2wsIGVuYWJsZUNvbmN1cnJlbnRK
SVQsIHRydWUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlz
aW9uIDE3Mjc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzczLDYgKzM3MywxMyBAQCBWTSomIFZNOjpzaGFyZWRJbnN0YW5jZUlu
dGVybmFsKCkKICAgICByZXR1cm4gc2hhcmVkSW5zdGFuY2U7CiB9CiAKK0NhbGxFZGdlTG9nJiBW
TTo6ZW5zdXJlQ2FsbEVkZ2VMb2coKQoreworICAgIGlmICghY2FsbEVkZ2VMb2cpCisgICAgICAg
IGNhbGxFZGdlTG9nID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsRWRnZUxvZz4oKTsKKyAgICByZXR1
cm4gKmNhbGxFZGdlTG9nOworfQorCiAjaWYgRU5BQkxFKEpJVCkKIHN0YXRpYyBUaHVua0dlbmVy
YXRvciB0aHVua0dlbmVyYXRvckZvckludHJpbnNpYyhJbnRyaW5zaWMgaW50cmluc2ljKQogewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAxNzI3OTQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2
ICs3Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQXJpdHlDaGVja0ZhaWxSZXR1
cm5UaHVua3M7CiAgICAgY2xhc3MgQnVpbHRpbkV4ZWN1dGFibGVzOworICAgIGNsYXNzIENhbGxF
ZGdlTG9nOwogICAgIGNsYXNzIENvZGVCbG9jazsKICAgICBjbGFzcyBDb2RlQ2FjaGU7CiAgICAg
Y2xhc3MgQ29tbW9uSWRlbnRpZmllcnM7CkBAIC0yMzMsNiArMjM0LDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIE93blB0cjxERkc6OkxvbmdMaXZlZFN0
YXRlPiBkZmdTdGF0ZTsKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKyAgICAgICAgCisgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsRWRnZUxvZz4gY2FsbEVkZ2VMb2c7CisgICAgICAgIENh
bGxFZGdlTG9nJiBlbnN1cmVDYWxsRWRnZUxvZygpOwogCiAgICAgICAgIFZNVHlwZSB2bVR5cGU7
CiAgICAgICAgIENsaWVudERhdGEqIGNsaWVudERhdGE7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL25ldy1hcnJheS10aGVuLWV4aXQuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9uZXctYXJyYXktdGhlbi1leGl0Lmpz
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9uZXct
YXJyYXktdGhlbi1leGl0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKK2Z1bmN0
aW9uIGZvbyhmKSB7CisgICAgcmV0dXJuIG5ldyBmKCk7Cit9CisKK25vSW5saW5lKGZvbyk7CisK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKKyAgICBmb28oQXJyYXkpOworCit2YXIg
ZGlkQ2FsbCA9IGZhbHNlOworZm9vKGZ1bmN0aW9uKCkgeyBkaWRDYWxsID0gdHJ1ZTsgfSk7CisK
K2lmICghZGlkQ2FsbCkKKyAgICB0aHJvdyAiRXJyb3I6IGRpZG4ndCBjYWxsIG15IGZ1bmN0aW9u
LiI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3BvbHktY2FsbC1l
eGl0LXRoaXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9wb2x5LWNhbGwtZXhpdC10aGlzLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wb2x5LWNhbGwtZXhpdC10aGlzLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMjkgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBmdW5jdGlvbiBmb28oeCkg
eyByZXR1cm4gMSArIHRoaXMuZjsgfQorICAgIGZ1bmN0aW9uIGJhcih4KSB7IHJldHVybiB4ICsg
dGhpcy5mOyB9CisgICAgZnVuY3Rpb24gYmF6KHgpIHsgcmV0dXJuIHggKyAxICsgdGhpcy5mOyB9
CisgICAgCisgICAgdmFyIG4gPSAxMDAwMDAwOworICAgIAorICAgIHZhciByZXN1bHQgPSAoZnVu
Y3Rpb24obykgeworICAgICAgICB2YXIgZiA9IHtmdW46Zm9vLCBmOjF9OworICAgICAgICB2YXIg
ZyA9IHtmdW46YmFyLCBmOjJ9OworICAgICAgICB2YXIgaCA9IHtmdW46YmF6LCBmOjN9OworICAg
ICAgICAKKyAgICAgICAgdmFyIHJlc3VsdCA9IDA7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgbjsgKytpKSB7CisgICAgICAgICAgICBpZiAoaSA9PSBuIC0gMSkKKyAgICAgICAgICAgICAg
ICBmID0gaDsKKyAgICAgICAgICAgIHJlc3VsdCArPSBmLmZ1bihvLmYpOworICAgICAgICAgICAg
CisgICAgICAgICAgICB2YXIgdG1wID0gZjsKKyAgICAgICAgICAgIGYgPSBnOworICAgICAgICAg
ICAgZyA9IHRtcDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9KSh7Zjo0Mn0pOworICAgIAorICAgIGlmIChyZXN1bHQgIT0gKChuIC8gMiAtIDEpICog
KDQyICsgMikpICsgKG4gLyAyICogKDEgKyAxKSArICg0MiArIDEgKyAzKSkpCisgICAgICAgIHRo
cm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30pKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3BvbHktY2FsbC1leGl0LmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQuanMJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3BvbHkt
Y2FsbC1leGl0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjkgQEAKKyhmdW5jdGlvbigp
IHsKKyAgICBmdW5jdGlvbiBmb28oeCkgeyByZXR1cm4gMTsgfQorICAgIGZ1bmN0aW9uIGJhcih4
KSB7IHJldHVybiB4OyB9CisgICAgZnVuY3Rpb24gYmF6KHgpIHsgcmV0dXJuIHggKyAxOyB9Cisg
ICAgCisgICAgdmFyIG4gPSAxMDAwMDAwOworICAgIAorICAgIHZhciByZXN1bHQgPSAoZnVuY3Rp
b24obykgeworICAgICAgICB2YXIgZiA9IGZvbzsKKyAgICAgICAgdmFyIGcgPSBiYXI7CisgICAg
ICAgIHZhciBoID0gYmF6OworICAgICAgICAKKyAgICAgICAgdmFyIHJlc3VsdCA9IDA7CisgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgICAgICBpZiAoaSA9PSBu
IC0gMSkKKyAgICAgICAgICAgICAgICBmID0gaDsKKyAgICAgICAgICAgIHJlc3VsdCArPSBmKG8u
Zik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciB0bXAgPSBmOworICAgICAgICAgICAg
ZiA9IGc7CisgICAgICAgICAgICBnID0gdG1wOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0pKHtmOjQyfSk7CisgICAgCisgICAgaWYgKHJlc3VsdCAh
PSAoKG4gLyAyIC0gMSkgKiA0MikgKyAobiAvIDIgKiAxKSArICg0MiArIDEpKQorICAgICAgICB0
aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9KSgpOwpJbmRleDogU291cmNl
L1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlz
aW9uIDE3MjgwMSkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMTQtMDgtMjAgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
KworICAgICAgICBERkcgKG9yIEZUTCkgc2hvdWxkIGJlIGFibGUgdG8gZG8gcG9seW1vcnBoaWMg
Y2FsbCBpbmxpbmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTM1MTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAg
ICAgIAorICAgICAgICBBZGQgc29tZSBwb3dlciB0aGF0IEkgbmVlZCBmb3IgY2FsbCBlZGdlIHBy
b2ZpbGluZy4KKworICAgICAgICAqIHd0Zi9Pd25QdHIuaDoKKyAgICAgICAgKFdURjo6T3duUHRy
PFQ+OjpjcmVhdGVUcmFuc2FjdGlvbmFsbHkpOgorICAgICAgICAqIHd0Zi9TcGVjdHJ1bS5oOgor
ICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6YWRkKToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OmFk
ZEFsbCk6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpnZXQpOgorICAgICAgICAoV1RGOjpTcGVj
dHJ1bTo6c2l6ZSk6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpLZXlBbmRDb3VudDo6S2V5QW5k
Q291bnQpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6Y2xlYXIpOgorICAgICAgICAoV1RGOjpT
cGVjdHJ1bTo6cmVtb3ZlSWYpOgorCiAyMDE0LTA4LTIwICBBa29zIEtpc3MgIDxha2lzc0BpbmYu
dS1zemVnZWQuaHU+CiAKICAgICAgICAgRW5hYmxlIEFSTTY0IGRpc2Fzc2VtYmxlciBvbiBFRkwK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL093blB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL093blB0ci5oCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvV1RGL3d0Zi9Pd25QdHIu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgQ29weXJpZ2h0IChDKSAy
MDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAg
LTIyLDYgKzIyLDcgQEAKICNkZWZpbmUgV1RGX093blB0cl9oCiAKICNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ckNvbW1vbi5oPgogI2luY2x1ZGUgPGFsZ29y
aXRobT4KQEAgLTcyLDYgKzczLDE0IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPiBPd25QdHImIG9wZXJhdG9yPShPd25QdHI8VT4mJik7CiAKICAgICAgICAg
dm9pZCBzd2FwKE93blB0ciYgbykgeyBzdGQ6OnN3YXAobV9wdHIsIG8ubV9wdHIpOyB9CisgICAg
ICAgIAorICAgICAgICAvLyBDb25zdHJ1Y3QgYW4gb2JqZWN0IHRvIHN0b3JlIGludG8gdGhpcyBP
d25QdHIsIGJ1dCBvbmx5IHNvIGxvbmcgYXMgdGhpcyBPd25QdHIKKyAgICAgICAgLy8gZG9lc24n
dCBhbHJlYWR5IHBvaW50IHRvIGFuIG9iamVjdC4gVGhpcyB3aWxsIGVuc3VyZSB0aGF0IGFmdGVy
IHlvdSBjYWxsIHRoaXMsCisgICAgICAgIC8vIHRoZSBPd25QdHIgd2lsbCBwb2ludCB0byBhbiBp
bnN0YW5jZSBvZiBULiBUaGlzIGluc3RhbmNlIG1heSBvciBtYXkgbm90IGhhdmUgYmVlbgorICAg
ICAgICAvLyBjcmVhdGVkIGJ5IHRoaXMgY2FsbC4gTW9yZW92ZXIsIHRoaXMgY2FsbCB1c2VzIGFu
IG9wcG9ydHVuaXN0aWMgdHJhbnNhY3Rpb24sIGluCisgICAgICAgIC8vIHRoYXQgd2UgbWF5IGNy
ZWF0ZSBhbiBpbnN0YW5jZSBvZiBUIGFuZCB0aGVuIGltbWVkaWF0ZWx5IHRocm93IGl0IGF3YXku
CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgICAgIHZvaWQgY3JlYXRl
VHJhbnNhY3Rpb25hbGx5KEFyZ3MuLi4gYXJncyk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBl
eHBsaWNpdCBPd25QdHIoUHRyVHlwZSBwdHIpIDogbV9wdHIocHRyKSB7IH0KQEAgLTE4Niw2ICsx
OTUsMjggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJldHVybiBwLmdldCgpOwogICAgIH0K
IAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IGlu
bGluZSB2b2lkIE93blB0cjxUPjo6Y3JlYXRlVHJhbnNhY3Rpb25hbGx5KEFyZ3MuLi4gYXJncykK
KyAgICB7CisgICAgICAgIGlmIChtX3B0cikgeworICAgICAgICAgICAgV1RGOjpsb2FkTG9hZEZl
bmNlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IFQqIG5ld09iamVjdCA9IG5ldyBUKGFyZ3MuLi4pOworICAgICAgICBXVEY6OnN0b3JlU3RvcmVG
ZW5jZSgpOworI2lmIEVOQUJMRShDT01QQVJFX0FORF9TV0FQKQorICAgICAgICBkbyB7CisgICAg
ICAgICAgICBpZiAobV9wdHIpIHsKKyAgICAgICAgICAgICAgICBkZWxldGUgbmV3T2JqZWN0Owor
ICAgICAgICAgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSB3aGlsZSAoIVdURjo6d2Vha0NvbXBhcmVB
bmRTd2FwKGJpdHdpc2VfY2FzdDx2b2lkKnZvbGF0aWxlKj4oJm1fcHRyKSwgbnVsbHB0ciwgbmV3
T2JqZWN0KSk7CisjZWxzZQorICAgICAgICBtX3B0ciA9IG5ld09iamVjdDsKKyNlbmRpZgorICAg
IH0KKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6T3duUHRyOwpJbmRleDogU291
cmNlL1dURi93dGYvU3BlY3RydW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TcGVj
dHJ1bS5oCShyZXZpc2lvbiAxNzI3OTQpCisrKyBTb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zMiwyMiArMzIsMzEgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQ+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDb3VudGVyVHlw
ZSA9IHVuc2lnbmVkPgogY2xhc3MgU3BlY3RydW0gewogcHVibGljOgotICAgIHR5cGVkZWYgdHlw
ZW5hbWUgSGFzaE1hcDxULCB1bnNpZ25lZCBsb25nPjo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAg
dHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPFQsIHVuc2lnbmVkIGxvbmc+Ojpjb25zdF9pdGVyYXRv
ciBjb25zdF9pdGVyYXRvcjsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgQ291bnRl
clR5cGU+OjppdGVyYXRvciBpdGVyYXRvcjsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8
VCwgQ291bnRlclR5cGU+Ojpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKICAgICAKICAg
ICBTcGVjdHJ1bSgpIHsgfQogICAgIAotICAgIHZvaWQgYWRkKGNvbnN0IFQmIGtleSwgdW5zaWdu
ZWQgbG9uZyBjb3VudCA9IDEpCisgICAgdm9pZCBhZGQoY29uc3QgVCYga2V5LCBDb3VudGVyVHlw
ZSBjb3VudCA9IDEpCiAgICAgewotICAgICAgICB0eXBlbmFtZSBIYXNoTWFwPFQsIHVuc2lnbmVk
IGxvbmc+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgY291bnQpOworICAgICAg
ICBpZiAoIWNvdW50KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0eXBlbmFtZSBIYXNo
TWFwPFQsIENvdW50ZXJUeXBlPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGNv
dW50KTsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUgKz0gY291bnQ7CiAgICAgfQogICAgIAotICAgIHVuc2lnbmVkIGxv
bmcgZ2V0KGNvbnN0IFQmIGtleSkgY29uc3QKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAg
IHZvaWQgYWRkQWxsKGNvbnN0IFNwZWN0cnVtPFQsIFU+JiBvdGhlclNwZWN0cnVtKQorICAgIHsK
KyAgICAgICAgZm9yIChhdXRvIGVudHJ5IDogb3RoZXJTcGVjdHJ1bSkKKyAgICAgICAgICAgIGFk
ZChlbnRyeS5rZXksIGVudHJ5LmNvdW50KTsKKyAgICB9CisgICAgCisgICAgQ291bnRlclR5cGUg
Z2V0KGNvbnN0IFQmIGtleSkgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGl0
ZXIgPSBtX21hcC5maW5kKGtleSk7CiAgICAgICAgIGlmIChpdGVyID09IG1fbWFwLmVuZCgpKQpA
QCAtNTUsNiArNjQsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsKICAg
ICB9CiAgICAgCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCk7
IH0KKyAgICAKICAgICBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIG1fbWFwLmJlZ2luKCk7IH0K
ICAgICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBtX21hcC5lbmQoKTsgfQogICAgIGNvbnN0X2l0
ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQpAQCAtNjMsNyAr
NzQsNyBAQCBwdWJsaWM6CiAgICAgc3RydWN0IEtleUFuZENvdW50IHsKICAgICAgICAgS2V5QW5k
Q291bnQoKSB7IH0KICAgICAgICAgCi0gICAgICAgIEtleUFuZENvdW50KGNvbnN0IFQmIGtleSwg
dW5zaWduZWQgbG9uZyBjb3VudCkKKyAgICAgICAgS2V5QW5kQ291bnQoY29uc3QgVCYga2V5LCBD
b3VudGVyVHlwZSBjb3VudCkKICAgICAgICAgICAgIDoga2V5KGtleSkKICAgICAgICAgICAgICwg
Y291bnQoY291bnQpCiAgICAgICAgIHsKQEAgLTgwLDcgKzkxLDcgQEAgcHVibGljOgogICAgICAg
ICB9CiAKICAgICAgICAgVCBrZXk7Ci0gICAgICAgIHVuc2lnbmVkIGxvbmcgY291bnQ7CisgICAg
ICAgIENvdW50ZXJUeXBlIGNvdW50OwogICAgIH07CiAgICAgCiAgICAgLy8gUmV0dXJucyBhIGxp
c3Qgb3JkZXJlZCBmcm9tIGxvd2VzdC1jb3VudCB0byBoaWdoZXN0LWNvdW50LgpAQCAtOTQsOCAr
MTA1LDE4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgfQogICAgIAorICAg
IHZvaWQgY2xlYXIoKSB7IG1fbWFwLmNsZWFyKCk7IH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPgorICAgIHZvaWQgcmVtb3ZlSWYoY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
KyAgICB7CisgICAgICAgIG1fbWFwLnJlbW92ZUlmKFtmdW5jdG9yXSAodHlwZW5hbWUgSGFzaE1h
cDxULCBDb3VudGVyVHlwZT46OktleVZhbHVlUGFpclR5cGUmIHBhaXIpIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZnVuY3RvcihLZXlBbmRDb3VudChwYWlyLmtleSwgcGFpci52YWx1ZSkpOwor
ICAgICAgICAgICAgfSk7CisgICAgfQorICAgIAogcHJpdmF0ZToKLSAgICBIYXNoTWFwPFQsIHVu
c2lnbmVkIGxvbmc+IG1fbWFwOworICAgIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+IG1fbWFwOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzI4MDEpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAx
NC0wOC0yMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIERGRyAo
b3IgRlRMKSBzaG91bGQgYmUgYWJsZSB0byBkbyBwb2x5bW9ycGhpYyBjYWxsIGlubGluaW5nCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUxNDUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL3JlZ3Jl
c3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVkLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcG9seS1jYWxsLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVkLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zaW1wbGUtcG9seS1jYWxsLW5lc3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwuaHRt
bDogQWRkZWQuCisKIDIwMTQtMDgtMjAgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5j
b20+CiAKICAgICAgICAgZmFzdC9tdWx0aWNvbC9taXhlZC1vcGFjaXR5LWZpeGVkLXRlc3QuaHRt
bCBmYWlscyBpbiBjb21wb3NpdGluZyBtb2RlCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3NpbXBsZS1wb2x5LWNhbGwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zaW1wbGUtcG9seS1jYWxs
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJv
d24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCklu
ZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVkLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5
LWNhbGwtbmVzdGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zaW1wbGUtcG9seS1jYWxsLW5lc3RlZAor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3du
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcG9seS1jYWxsLW5lc3RlZC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0
ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBv
bHktY2FsbC1uZXN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zaW1wbGUtcG9seS1j
YWxsLW5lc3RlZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Jl
Z3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
c2NyaXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXBv
bHktY2FsbC1uZXN0ZWQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQuanMJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcG9seS1jYWxsLW5lc3Rl
ZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI1IEBACisoZnVuY3Rpb24oKSB7CisgICAg
ZnVuY3Rpb24gZm9vKHgpIHsgcmV0dXJuIDE7IH0KKyAgICBmdW5jdGlvbiBiYXIoeCkgeyByZXR1
cm4geDsgfQorICAgIAorICAgIHZhciBuID0gMTAwMDAwMDsKKyAgICAKKyAgICB2YXIgcmVzdWx0
ID0gKGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgZiA9IGZvbzsKKyAgICAgICAgdmFyIGcgPSBi
YXI7CisgICAgICAgIAorICAgICAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgICAgIHJlc3VsdCArPSBmKDQyKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgdmFyIHRtcCA9IGY7CisgICAgICAgICAgICBmID0gZzsKKyAg
ICAgICAgICAgIGcgPSB0bXA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfSkoKTsKKyAgICAKKyAgICBpZiAocmVzdWx0ICE9IG4gLyAyICogNDIgKyBu
IC8gMiAqIDEpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsK
K30pKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUt
cG9seS1jYWxsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0
LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcG9seS1jYWxsLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMjAgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBmdW5jdGlvbiBmb28oeCkgeyBy
ZXR1cm4gMTsgfQorICAgIGZ1bmN0aW9uIGJhcih4KSB7IHJldHVybiB4OyB9CisgICAgCisgICAg
dmFyIGYgPSBmb287CisgICAgdmFyIGcgPSBiYXI7CisgICAgCisgICAgdmFyIHJlc3VsdCA9IDA7
CisgICAgdmFyIG4gPSAxMDAwMDA7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsK
KyAgICAgICAgcmVzdWx0ICs9IGYoNDIpOworICAgICAgICAKKyAgICAgICAgdmFyIHRtcCA9IGY7
CisgICAgICAgIGYgPSBnOworICAgICAgICBnID0gdG1wOworICAgIH0KKyAgICAKKyAgICBpZiAo
cmVzdWx0ICE9IG4gLyAyICogNDIgKyBuIC8gMiAqIDEpCisgICAgICAgIHRocm93ICJFcnJvcjog
YmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30pKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236959</attachid>
            <date>2014-08-21 19:30:25 -0700</date>
            <delta_ts>2014-08-23 15:54:24 -0700</delta_ts>
            <desc>it works but needs some more love</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>171106</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyODM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyNiBA
QAorMjAxNC0wOC0yMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyAob3IgRlRMKSBzaG91bGQgYmUgYWJsZSB0byBkbyBwb2x5bW9ycGhpYyBjYWxsIGlubGlu
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUx
NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIEFkZCBhIGxvZy1iYXNlZCBoaWdoLWZpZGVsaXR5IGNhbGwgZWRnZSBwcm9maWxlciB0aGF0
IHJ1bnMgaW4gYmFzZWxpbmUgSklUIGFuZCBERkcgSklUIGNvZGUuCisgICAgICAgIFVzZSBpdCB0
byBkbyBwcmVjaXNlIHBvbHltb3JwaGljIGlubGluaW5nIGluIHRoZSBGVEwsIGFuZCB0byBtYWtl
IHRoZSBERkcncyBtb25vbW9ycGhpYworICAgICAgICBpbmxpbmVyIGEgYml0IG1vcmUgaW50ZWxs
aWdlbnQuIFBvdGVudGlhbCBpbmxpbmluZyBzaXRlcyB3aWxsIHVzZSB0aGUgY2FsbCBlZGdlIHBy
b2ZpbGUgaWYKKyAgICAgICAgaXQgaXMgYXZhaWxhYmxlIGJ1dCB0aGV5IHdpbGwgc3RpbGwgZmFs
bCBiYWNrIG9uIHRoZSBjYWxsIGlubGluZSBjYWNoZSBhbmQgcmFyZSBjYXNlIGNvdW50cworICAg
ICAgICBpZiB0aGF0J3Mgbm90IGF2YWlsYWJsZS4KKyAgICAgICAgCisgICAgICAgIFdvcmsgaW4g
cHJvZ3Jlc3MuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxFZGdlLmNwcDogQWRkZWQuCisgICAgICAg
IChKU0M6OkNhbGxFZGdlOjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsRWRnZS5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2U6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6
OkNhbGxFZGdlOjpjYWxsZWUpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZTo6Y291bnQpOgorICAg
ICAgICAoSlNDOjpDYWxsRWRnZTo6ZGVzcGVjaWZpZWRDbG9zdXJlKToKKyAgICAgICAgKEpTQzo6
Q2FsbEVkZ2U6OkNhbGxFZGdlKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VQcm9maWxlOjpjYWxsRWRnZXMpOgor
ICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6Om51bUNhbGxzVG9Lbm93bkNlbGxzKToKKyAg
ICAgICAgKEpTQzo6d29ydGhEZXNwZWNpZnlpbmcpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZVBy
b2ZpbGU6OndvcnRoRGVzcGVjaWZ5aW5nKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VQcm9maWxl
Ojp2aXNpdFdlYWspOgorICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6OmFkZFNsb3cpOgor
ICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6Om1lcmdlQmFjayk6CisgICAgICAgIChKU0M6
OkNhbGxFZGdlUHJvZmlsZTo6ZmFkZUJ5SGFsZik6CisgICAgICAgIChKU0M6OkNhbGxFZGdlTG9n
OjpDYWxsRWRnZUxvZyk6CisgICAgICAgIChKU0M6OkNhbGxFZGdlTG9nOjp+Q2FsbEVkZ2VMb2cp
OgorICAgICAgICAoSlNDOjpDYWxsRWRnZUxvZzo6aXNFbmFibGVkKToKKyAgICAgICAgKEpTQzo6
b3BlcmF0aW9uUHJvY2Vzc0NhbGxFZGdlTG9nKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VMb2c6
OmVtaXRMb2dDb2RlKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VMb2c6OnByb2Nlc3NMb2cpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6Q2FsbEVkZ2VQcm9maWxlOjpudW1DYWxsc1RvTm90Q2VsbCk6CisgICAgICAgIChKU0M6OkNh
bGxFZGdlUHJvZmlsZTo6bnVtQ2FsbHNUb1Vua25vd25DZWxsKToKKyAgICAgICAgKiBieXRlY29k
ZS9DYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpDYWxsRWRn
ZVByb2ZpbGU6OkNhbGxFZGdlUHJvZmlsZSk6CisgICAgICAgIChKU0M6OkNhbGxFZGdlUHJvZmls
ZTo6YWRkKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAo
SlNDOjpDYWxsTGlua0luZm86OnZpc2l0V2Vhayk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmg6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAg
ICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Q2FsbExpbmtTdGF0dXMpOgorICAgICAgICAoSlNDOjpD
YWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5r
U3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZy
b21DYWxsRWRnZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6aXNDbG9z
dXJlQ2FsbCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjptYWtlQ2xvc3VyZUNhbGwp
OgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNh
bGxMaW5rU3RhdHVzOjpmdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNhbGxMaW5r
U3RhdHVzOjppbnRlcm5hbEZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbExp
bmtTdGF0dXM6OmludHJpbnNpY0Zvcik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ2Fs
bExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OkNhbGxMaW5rU3Rh
dHVzKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmlzU2V0KToKKyAgICAgICAgKEpT
Qzo6Q2FsbExpbmtTdGF0dXM6OmNvdWxkVGFrZVNsb3dQYXRoKToKKyAgICAgICAgKEpTQzo6Q2Fs
bExpbmtTdGF0dXM6OmVkZ2VzKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OnNpemUp
OgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6YXQpOgorICAgICAgICAoSlNDOjpDYWxs
TGlua1N0YXR1czo6b3BlcmF0b3JbXSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpj
YW5PcHRpbWl6ZSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjYW5UcnVzdENvdW50
cyk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjppc0Nsb3N1cmVDYWxsKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNhbGxUYXJnZXQpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6ZXhlY3V0YWJsZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjptYWtlQ2xvc3VyZUNhbGwpOiBEZWxldGVkLgorICAg
ICAgICAqIGJ5dGVjb2RlL0NhbGxWYXJpYW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkNh
bGxWYXJpYW50OjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsVmFyaWFudC5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OkNhbGxWYXJpYW50KToKKyAgICAgICAgKEpT
Qzo6Q2FsbFZhcmlhbnQ6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50Ojpk
ZXNwZWNpZmllZENsb3N1cmUpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6cmF3Q2FsbGVl
Q2VsbCk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjppbnRlcm5hbEZ1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OmZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Q2FsbFZh
cmlhbnQ6OmlzQ2xvc3VyZUNhbGwpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZXhlY3V0
YWJsZSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50Ojpub25FeGVjdXRhYmxlQ2FsbGVlKToK
KyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OmludHJpbnNpY0Zvcik6CisgICAgICAgIChKU0M6
OkNhbGxWYXJpYW50OjpmdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpDYWxsVmFy
aWFudDo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFu
dDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpvcGVyYXRvciE9KToK
KyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om9wZXJhdG9yPCk6CisgICAgICAgIChKU0M6OkNh
bGxWYXJpYW50OjpvcGVyYXRvcj4pOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6b3BlcmF0
b3I8PSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpvcGVyYXRvcj49KToKKyAgICAgICAg
KEpTQzo6Q2FsbFZhcmlhbnQ6Omhhc2gpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZGVs
ZXRlZFRva2VuKToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnRIYXNoOjpoYXNoKToKKyAgICAg
ICAgKEpTQzo6Q2FsbFZhcmlhbnRIYXNoOjplcXVhbCk6CisgICAgICAgICogYnl0ZWNvZGUvRXhp
dEtpbmQuY3BwOgorICAgICAgICAoSlNDOjpleGl0S2luZFRvU3RyaW5nKToKKyAgICAgICAgKiBi
eXRlY29kZS9FeGl0S2luZC5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0JhY2t3YXJk
c1Byb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJhY2t3YXJkc1Byb3Bh
Z2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR0Jhc2ljQmxvY2suaDoK
KyAgICAgICAgKEpTQzo6REZHOjpCYXNpY0Jsb2NrOjp0YWtlTGFzdCk6CisgICAgICAgIChKU0M6
OkRGRzo6QmFzaWNCbG9jazo6ZGlkTGluayk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cmVtb3ZlTGFzdE5v
ZGVGcm9tR3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphZGRDYWxs
V2l0aG91dFNldHRpbmdSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjphZGRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmVtaXRGdW5jdGlvbkNoZWNr
cyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnVuZG9GdW5jdGlvbkNoZWNr
cyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpjYW5jZWxMaW5raW5nRm9yQmxvY2spOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdD
UFNSZXRocmVhZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDUFNSZXRocmVhZGlu
Z1BoYXNlOjpmcmVlVW5uZWNlc3NhcnlOb2Rlcyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJp
emUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZH
Q29tbW9uLmg6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6Cisg
ICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToK
KyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxl
SW1wbCk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6R3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6Okdy
YXBoOjpkdW1wKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZn
L0RGR0xhenlKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpMYXp5SlNWYWx1ZTo6c3dp
dGNoTG9va3VwVmFsdWUpOgorICAgICAgICAqIGRmZy9ERkdMYXp5SlNWYWx1ZS5oOgorICAgICAg
ICAoSlNDOjpERkc6OkxhenlKU1ZhbHVlOjpzd2l0Y2hMb29rdXBWYWx1ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogZGZnL0RGR05vZGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToK
KyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok9wSW5mbzo6T3BJ
bmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNDZWxsT3BlcmFuZCk6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6Y2VsbE9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
OnNldENlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjYW5CZUtub3duRnVu
Y3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0tub3duRnVuY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omtub3duRnVuY3Rpb24pOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdpdmVLbm93bkZ1bmN0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNGdW5jdGlvbik6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6ZnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6Omhhc0V4ZWN1dGFibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6OmV4ZWN1dGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5o
OgorICAgICAgICAqIGRmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlOjpydW4pOgorICAg
ICAgICAqIGRmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpQaGFudG9tUmVtb3ZhbFBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpl
bWl0U3dpdGNoKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZTo6cnVuKToKKyAg
ICAgICAgKiBkZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6VGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcv
REZHVmFsaWRhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlZhbGlkYXRlOjp2YWxpZGF0ZSk6
CisgICAgICAgICogZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OldhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2U6OmhhbmRsZSk6CisgICAgICAg
ICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGls
ZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpmdGxVbnJlYWNoYWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
Omxvd2VyKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5vZGUp
OgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ2hlY2tDZWxsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNoZWNrQmFkQ2VsbCk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVHZXRFeGVjdXRhYmxl
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5hdGl2ZUNhbGxP
ckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVT
d2l0Y2gpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpidWlsZFN3aXRjaCk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVDaGVja0Z1bmN0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNo
ZWNrRXhlY3V0YWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAg
ICAgKEpTQzo6SGVhcDo6Y29sbGVjdCk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5o
OgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRWYWx1ZSk6CisgICAgICAgICog
aml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJn
dW1lbnRzKToKKyAgICAgICAgKiBqaXQvR1BSSW5mby5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
UmVnczo6dXNlcyk6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9u
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6ZW5zdXJl
Q2FsbEVkZ2VMb2cpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvbmV3LWFycmF5LXRoZW4tZXhpdC5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9wb2x5LWNhbGwtZXhpdC10aGlzLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiB0ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQuanM6IEFkZGVkLgorCiAyMDE0LTA4LTIx
ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIFNBVFVS
QVRFRF9MQVlPVVRfQVJJVEhNRVRJQy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAxNzI4MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjYzLDYgKzI2
MywxMyBAQAogCQkwRjNCM0EyODE1NDRDOTk3MDAzRUQwRkYgLyogREZHQ0ZHU2ltcGxpZmljYXRp
b25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYzQjNBMjUxNTQ0Qzk5MTAwM0VEMEZGIC8qIERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjNCM0Ey
QjE1NDc1MDAwMDAzRUQwRkYgLyogREZHVmFsaWRhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjNBMjkxNTQ3NEZGNDAwM0VEMEZGIC8qIERG
R1ZhbGlkYXRlLmNwcCAqLzsgfTsKIAkJMEYzQjNBMkMxNTQ3NTAwMjAwM0VEMEZGIC8qIERGR1Zh
bGlkYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjNCM0EyQTE1NDc0RkY0MDAzRUQwRkYgLyogREZHVmFsaWRhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjNCN0UyNjE5QTExQjgwMDBEOUJD
NTYgLyogQ2FsbEVkZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGM0I3RTIwMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGM0I3RTI3MTlBMTFCODAw
MEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMjExOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdl
UHJvZmlsZS5jcHAgKi87IH07CisJCTBGM0I3RTI4MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRn
ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGM0I3RTIyMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjNCN0UyOTE5QTExQjgw
MDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMjMxOUExMUI4MDAwRDlCQzU2IC8qIENh
bGxFZGdlUHJvZmlsZUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRjNCN0UyQTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdF
MjQxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmNwcCAqLzsgfTsKKwkJMEYzQjdFMkIx
OUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCN0UyNTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZh
cmlhbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjNCN0UyRDE5QTEyQUFFMDBEOUJDNTYgLyogQ2FsbEVkZ2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMkMxOUExMkFBRTAwRDlCQzU2
IC8qIENhbGxFZGdlLmNwcCAqLzsgfTsKIAkJMEYzRDBCQkMxOTRBNDE0MzAwRkM5Q0Y5IC8qIENv
bnN0YW50U3RydWN0dXJlQ2hlY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYzRDBCQkExOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0
dXJlQ2hlY2suY3BwICovOyB9OwogCQkwRjNEMEJCRDE5NEE0MTQzMDBGQzlDRjkgLyogQ29uc3Rh
bnRTdHJ1Y3R1cmVDaGVjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYzRDBCQkIxOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hl
Y2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjQyNkE0ODE0NjBDQkIzMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MjZBNDUxNDYwQ0JBQjAwMTMxRjhG
IC8qIFZhbHVlUmVjb3ZlcnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMjE2Nyw2ICsyMTc0LDEzIEBACiAJCTBGM0IzQTI1MTU0NEM5OTEwMDNF
RDBGRiAvKiBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdD
RkdTaW1wbGlmaWNhdGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
M0IzQTI5MTU0NzRGRjQwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdWYWxpZGF0ZS5jcHA7IHBhdGggPSBkZmcvREZHVmFs
aWRhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNCM0EyQTE1NDc0RkY0
MDAzRUQwRkYgLyogREZHVmFsaWRhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gREZHVmFsaWRhdGUuaDsgcGF0aCA9IGRmZy9ERkdWYWxpZGF0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjNCN0UyMDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbEVkZ2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEYzQjdFMjExOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJv
ZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsRWRnZVBy
b2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyMjE5QTExQjgw
MDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENhbGxFZGdlUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjNCN0UyMzE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGM0I3RTI0MTlBMTFCODAwMEQ5QkM1NiAvKiBD
YWxsVmFyaWFudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxs
VmFyaWFudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGM0I3RTI1MTlBMTFC
ODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDYWxsVmFyaWFudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0Uy
QzE5QTEyQUFFMDBEOUJDNTYgLyogQ2FsbEVkZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ2FsbEVkZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjNEMEJCQTE5NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb25zdGFudFN0cnVjdHVyZUNo
ZWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzRDBCQkIxOTRBNDE0MzAw
RkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MTQ0LDExICs1MTU4LDE4IEBACiAJCQkJMEY2NjZFQkUx
ODM1NjZGOTAwRDAxN0YxIC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCAqLywK
IAkJCQkwRjg4NUUxMDE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VEZWYuaCAqLywKIAkJ
CQkwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8sCisJCQkJMEYzQjdF
MkMxOUExMkFBRTAwRDlCQzU2IC8qIENhbGxFZGdlLmNwcCAqLywKKwkJCQkwRjNCN0UyMDE5QTEx
QjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2UuaCAqLywKKwkJCQkwRjNCN0UyMTE5QTExQjgwMDBEOUJD
NTYgLyogQ2FsbEVkZ2VQcm9maWxlLmNwcCAqLywKKwkJCQkwRjNCN0UyMjE5QTExQjgwMDBEOUJD
NTYgLyogQ2FsbEVkZ2VQcm9maWxlLmggKi8sCisJCQkJMEYzQjdFMjMxOUExMUI4MDAwRDlCQzU2
IC8qIENhbGxFZGdlUHJvZmlsZUlubGluZXMuaCAqLywKIAkJCQkwRjBCODNBRTE0QkNGNzE0MDA4
ODVCNEYgLyogQ2FsbExpbmtJbmZvLmNwcCAqLywKIAkJCQkwRjBCODNBRjE0QkNGNzE0MDA4ODVC
NEYgLyogQ2FsbExpbmtJbmZvLmggKi8sCiAJCQkJMEY5MzMyOTMxNENBN0RDMTAwODVGM0M2IC8q
IENhbGxMaW5rU3RhdHVzLmNwcCAqLywKIAkJCQkwRjkzMzI5NDE0Q0E3REMxMDA4NUYzQzYgLyog
Q2FsbExpbmtTdGF0dXMuaCAqLywKIAkJCQkwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2Fs
bFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAqLywKKwkJCQkwRjNCN0UyNDE5QTExQjgw
MDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuY3BwICovLAorCQkJCTBGM0I3RTI1MTlBMTFCODAwMEQ5
QkM1NiAvKiBDYWxsVmFyaWFudC5oICovLAogCQkJCTk2OUEwNzkwMEVEMUQzQUUwMEYxRjY4MSAv
KiBDb2RlQmxvY2suY3BwICovLAogCQkJCTk2OUEwNzkxMEVEMUQzQUUwMEYxRjY4MSAvKiBDb2Rl
QmxvY2suaCAqLywKIAkJCQkwRjhGOTQzRDE2Njc2MzJEMDBENjE5NzEgLyogQ29kZUJsb2NrSGFz
aC5jcHAgKi8sCkBAIC01ODc3LDYgKzU4OTgsNyBAQAogCQkJCTBGRkZDOTVBMTRFRjkwQTkwMEM3
MjUzMiAvKiBERkdDU0VQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyRkM3NzMxNkUxMkY3
NDAwMzhEOTc2IC8qIERGR0RDRVBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjhGMkI5QTE3
MkYwNTAxMDA3REJEQTUgLyogREZHRGVzaXJlZElkZW50aWZpZXJzLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjNCN0UyODE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDMkMwRjdDRTE3QkJGQzVCMDA0NjRGRTQgLyogREZHRGVzaXJlZFRyYW5z
aXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU4NTM0QzE3MjNDREE1MDBCNjE4RjUgLyog
REZHRGVzaXJlZFdhdGNocG9pbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjk4MUZEOTE3QkFF
RTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLywK
QEAgLTYxNDUsNiArNjE2Nyw3IEBACiAJCQkJMEY3NjZEMzExNUFBODExMjAwOEYzNjNFIC8qIEpJ
VFN0dWJSb3V0aW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc2NkQyQzE1QThDQzNBMDA4RjM2
M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QzUyNDJCMEY1
MzU1RTkwMEJBM0QwNCAvKiBKSVRTdHVicy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYzQjdFMkIx
OUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUY2
ODM1RTE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1YnNBUk0uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZFRjY4MzVGMTc0MzQzQ0MwMEEzMkUyNSAvKiBKSVRTdHVic0FSTXY3LmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRUY2ODM2MTE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1YnNYODYuaCBpbiBIZWFk
ZXJzICovLApAQCAtNjE1Niw2ICs2MTc5LDcgQEAKIAkJCQlBNzZGNTRBMzEzQjI4QUFCMDBFRjJC
Q0UgLyogSklUV3JpdGVCYXJyaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxNjBFMTZG
NUNEMDBCMzQ0NjAgLyogSlNBY3RpdmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDA0ODAx
MzEwMjFBMUQ5MDA4RTdGMDEgLyogSlNBUElWYWx1ZVdyYXBwZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGM0I3RTI5MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDMkNGMzlDMjE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFw
cGVyT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzYxNDBEMjE4Mjk4MkNCMDA3NTA2MjQg
LyogSlNBcmd1bWVudHNJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTcwRTE2
RjVDRDAwQjM0NDYwIC8qIEpTQXJyYXkuaCBpbiBIZWFkZXJzICovLApAQCAtNjQ3MSw2ICs2NDk1
LDcgQEAKIAkJCQlFNDlEQzE2QzEyRUYyOTRFMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNo
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ5REMxNkQxMkVGMjk1MzAwMTg0QTFGIC8qIFNvdXJj
ZVByb3ZpZGVyQ2FjaGVJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5RTE1RUQ4RTQ2
MDBGMTY3QjIgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYz
QjdFMjYxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NzM4NjU1NDExODY5N0I0MDA1NDAyNzkgLyogU3BlY2lhbGl6ZWRUaHVua0pJVC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY1NTQxQjIxNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4MkU1NDE0MURBRUVFMDAxNzlDOTQgLyogU3BlY3VsYXRl
ZFR5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtNzMyMyw2ICs3MzQ4LDcgQEAKIAkJCQkwRjIzNUJE
NTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50Rm9yT3BlcmFuZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjIzNUJEODE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdFRodW5rR2Vu
ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkRBMTcxNzhFMUMwMDY5MEM3RiAv
KiBGVExFeGl0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYzQjdFMjcxOUExMUI4MDAw
RDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0YyOTk2
QjE3QTBCQjY3MDAxMDQxN0EgLyogRlRMRmFpbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4
QTMxOTE3RDUxRjIyMDBDQTJDNDAgLyogRlRMRm9yT1NSRW50cnlKSVRDb2RlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGMjVGMUFGMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExJbmxpbmVDYWNoZVNp
emUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03NTA5LDYgKzc1MzUsNyBAQAogCQkJCTBGNDY4MEQy
MTRCQkQxNjUwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYz
OEIwMTExN0NGMDc4MDAwQjE0NEQzIC8qIExMSW50RW50cnlwb2ludC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTBGM0I3RTJEMTlBMTJBQUUwMEQ5QkM1NiAvKiBDYWxsRWRnZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRT
bG93UGF0aHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRG
IC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0VGQUNEMTgwNUU3NTUw
MDQ3MkNFNCAvKiBMTFZNQVBJLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzY3MCw2ICs3Njk3LDcg
QEAKIAkJCQkxNEU4NEZBMDE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha1NldC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkyQTRFQzkwQjE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzgxNTBCMTQwNDNDMEUwMENGQTYwMyAvKiBXcml0
ZUJhcnJpZXJTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGM0I3RTJBMTlBMTFCODAw
MEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0U1QUIzQTE3
OTlFNEIyMDBEMjgzM0QgLyogWDg2RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTg2M0M2RDlDMTUyMTExMUEwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXplVUNTMi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4NjcwNEI4NDEyREJBMzM3MDBBOUZFN0IgLyogWWFyckludGVycHJl
dGVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxFZGdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbEVkZ2UuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxFZGdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJDYWxsRWRnZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordm9p
ZCBDYWxsRWRnZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmlu
dCgiPCIsIG1fY2FsbGVlLCAiLCBjb3VudDogIiwgbV9jb3VudCwgIj4iKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
RWRnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
RWRnZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxFZGdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENhbGxFZGdlX2gKKyNkZWZp
bmUgQ2FsbEVkZ2VfaAorCisjaW5jbHVkZSAiQ2FsbFZhcmlhbnQuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK3R5cGVkZWYgdWludDE2X3QgQ2FsbEVkZ2VDb3VudFR5cGU7CisKK2NsYXNzIENhbGxF
ZGdlIHsKK3B1YmxpYzoKKyAgICBDYWxsRWRnZSgpOworICAgIENhbGxFZGdlKENhbGxWYXJpYW50
IGNhbGxlZSwgQ2FsbEVkZ2VDb3VudFR5cGUgY291bnQpOworICAgIAorICAgIGJvb2wgb3BlcmF0
b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fY2FsbGVlOyB9CisgICAgCisgICAgQ2FsbFZhcmlhbnQg
Y2FsbGVlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsZWU7IH0KKyAgICBDYWxsRWRnZUNvdW50VHlw
ZSBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnQ7IH0KKyAgICAKKyAgICBDYWxsRWRnZSBk
ZXNwZWNpZmllZENsb3N1cmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIENhbGxFZGdl
KG1fY2FsbGVlLmRlc3BlY2lmaWVkQ2xvc3VyZSgpLCBtX2NvdW50KTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgCitwdWJsaWM6CisgICAgQ2Fs
bFZhcmlhbnQgbV9jYWxsZWU7CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbV9jb3VudDsKK307CisK
K2lubGluZSBDYWxsRWRnZTo6Q2FsbEVkZ2UoQ2FsbFZhcmlhbnQgY2FsbGVlLCBDYWxsRWRnZUNv
dW50VHlwZSBjb3VudCkKKyAgICA6IG1fY2FsbGVlKGNhbGxlZSkKKyAgICAsIG1fY291bnQoY291
bnQpCit7Cit9CisKK2lubGluZSBDYWxsRWRnZTo6Q2FsbEVkZ2UoKQorICAgIDogQ2FsbEVkZ2Uo
Q2FsbFZhcmlhbnQoKSwgMCkKK3sKK30KKwordHlwZWRlZiBWZWN0b3I8Q2FsbEVkZ2UsIDE+IENh
bGxFZGdlTGlzdDsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDYWxsRWRnZV9o
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRn
ZVByb2ZpbGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxFZGdlUHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNDYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkNhbGxFZGdlUHJvZmlsZS5oIgorCisjaW5jbHVkZSAiQ2Fs
bEVkZ2VQcm9maWxlSW5saW5lcy5oIgorI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgorI2luY2x1
ZGUgIkpJVE9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitDYWxsRWRnZUxpc3QgQ2FsbEVkZ2VQcm9maWxlOjpjYWxsRWRnZXMoKSBjb25z
dAoreworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCisgICAg
Q2FsbEVkZ2VMaXN0IHJlc3VsdDsKKyAgICAKKyAgICBDYWxsVmFyaWFudCBwcmltYXJ5Q2FsbGVl
ID0gbV9wcmltYXJ5Q2FsbGVlOworICAgIGZsb2F0IG51bUNhbGxzVG9QcmltYXJ5ID0gbV9udW1D
YWxsc1RvUHJpbWFyeTsKKyAgICAvLyBEZWZlbmQgYWdhaW5zdCByYWNlcy4gVGhlc2UgZmllbGRz
IGFyZSBtb2RpZmllZCBieSB0aGUgbG9nIHByb2Nlc3NvciB3aXRob3V0IGxvY2tpbmcuCisgICAg
aWYgKCEhcHJpbWFyeUNhbGxlZSAmJiBudW1DYWxsc1RvUHJpbWFyeSkKKyAgICAgICAgcmVzdWx0
LmFwcGVuZChDYWxsRWRnZShwcmltYXJ5Q2FsbGVlLCBudW1DYWxsc1RvUHJpbWFyeSkpOworICAg
IAorICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBp
ZiB0aGUgcHJpbWFyeSB0aHJlYWQgaGFkIGp1c3QgY3JlYXRlZCBhIG1fb3RoZXJDYWxsZXMgd2hp
bGUgbG9nCisgICAgICAgIC8vIHByb2Nlc3NpbmcsIHdlIHNlZSBhIGNvbnNpc3RlbnRseSBjcmVh
dGVkIG9uZS4gVGhlIGxvY2sgYmVpbmcgaGVsZCBpcyBpbnN1ZmZpY2llbnQgZm9yCisgICAgICAg
IC8vIHRoaXMsIHNpbmNlIHRoZSBsb2cgcHJvY2Vzc29yIHdpbGwgb25seSBncmFiIHRoZSBsb2Nr
IHdoZW4gbWVyZ2luZyB0aGUgc2Vjb25kYXJ5CisgICAgICAgIC8vIHNwZWN0cnVtIGludG8gdGhl
IHByaW1hcnkgb25lIGJ1dCBtYXkgc3RpbGwgY3JlYXRlIHRoZSBkYXRhIHN0cnVjdHVyZSB3aXRo
b3V0IGhvbGRpbmcKKyAgICAgICAgLy8gbG9ja3MuCisgICAgICAgIFdURjo6bG9hZExvYWRGZW5j
ZSgpOworICAgICAgICBmb3IgKENhbGxFZGdlIGVudHJ5IDogbV9vdGhlckNhbGxlZXMtPm1fcHJv
Y2Vzc2VkKSB7CisgICAgICAgICAgICAvLyBEZWZlbmQgYWdhaW5zdCB0aGUgcG9zc2liaWxpdHkg
dGhhdCB0aGUgcHJpbWFyeSBkdXBsaWNhdGVzIGFuIGVudHJ5IGluIHRoZSBzZWNvbmRhcnkKKyAg
ICAgICAgICAgIC8vIHNwZWN0cnVtLiBUaGF0IGNhbiBoYXBwZW4gd2hlbiB0aGUgR0MgcmVtb3Zl
cyB0aGUgcHJpbWFyeS4gV2UgY291bGQgaGF2ZSB0aGUgR0MgZml4CisgICAgICAgICAgICAvLyB0
aGUgc2l0dWF0aW9uIGJ5IGNoYW5naW5nIHRoZSBwcmltYXJ5IHRvIGJlIHNvbWV0aGluZyBmcm9t
IHRoZSBzZWNvbmRhcnkgc3BlY3RydW0sCisgICAgICAgICAgICAvLyBidXQgdGhpcyBmaXggc2Vl
bXMgc2ltcGxlciB0byBpbXBsZW1lbnQgYW5kIGFsc28gY2hlYXBlci4KKyAgICAgICAgICAgIGlm
IChlbnRyeS5jYWxsZWUoKSA9PSByZXN1bHRbMF0uY2FsbGVlKCkpIHsKKyAgICAgICAgICAgICAg
ICByZXN1bHRbMF0gPSBDYWxsRWRnZShyZXN1bHRbMF0uY2FsbGVlKCksIGVudHJ5LmNvdW50KCkg
KyByZXN1bHRbMF0uY291bnQoKSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZW50cnkpOwor
ICAgICAgICB9CisgICAgfQorICAgIAorICAgIHN0ZDo6c29ydChyZXN1bHQuYmVnaW4oKSwgcmVz
dWx0LmVuZCgpLCBbXSAoY29uc3QgQ2FsbEVkZ2UmIGEsIGNvbnN0IENhbGxFZGdlJiBiKSAtPiBi
b29sIHsKKyAgICAgICAgICAgIHJldHVybiBhLmNvdW50KCkgPiBiLmNvdW50KCk7CisgICAgICAg
IH0pOworICAgIAorICAgIGlmIChyZXN1bHQuc2l6ZSgpID49IDIpCisgICAgICAgIEFTU0VSVChy
ZXN1bHRbMF0uY291bnQoKSA+PSByZXN1bHQubGFzdCgpLmNvdW50KCkpOworICAgIAorICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK0NhbGxFZGdlQ291bnRUeXBlIENhbGxFZGdlUHJvZmlsZTo6bnVt
Q2FsbHNUb0tub3duQ2VsbHMoKSBjb25zdAoreworICAgIENhbGxFZGdlQ291bnRUeXBlIHJlc3Vs
dCA9IDA7CisgICAgZm9yIChDYWxsRWRnZSBlZGdlIDogY2FsbEVkZ2VzKCkpCisgICAgICAgIHJl
c3VsdCArPSBlZGdlLmNvdW50KCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGJv
b2wgd29ydGhEZXNwZWNpZnlpbmcoY29uc3QgQ2FsbFZhcmlhbnQmIHZhcmlhbnQpCit7CisgICAg
cmV0dXJuICFIZWFwOjppc01hcmtlZCh2YXJpYW50LnJhd0NhbGxlZUNlbGwoKSkKKyAgICAgICAg
JiYgSGVhcDo6aXNNYXJrZWQodmFyaWFudC5kZXNwZWNpZmllZENsb3N1cmUoKS5yYXdDYWxsZWVD
ZWxsKCkpOworfQorCitib29sIENhbGxFZGdlUHJvZmlsZTo6d29ydGhEZXNwZWNpZnlpbmcoKQor
eworICAgIGlmIChtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAKKyAgICBpZiAoISFtX3ByaW1hcnlDYWxsZWUgJiYgIUpTQzo6d29ydGhEZXNwZWNp
ZnlpbmcobV9wcmltYXJ5Q2FsbGVlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAg
IGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX290aGVy
Q2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBpZiAoIUpT
Qzo6d29ydGhEZXNwZWNpZnlpbmcobV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNhbGxl
ZSgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQ2FsbEVkZ2VQcm9maWxlOjp2aXNpdFdl
YWsoKQoreworICAgIGlmICghbV9wcmltYXJ5Q2FsbGVlICYmICFtX290aGVyQ2FsbGVlcykKKyAg
ICAgICAgcmV0dXJuOworICAgIAorICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9j
ayk7CisgICAgCisgICAgLy8gU2VlIGlmIGFueXRoaW5nIGlzIGRlYWQgYW5kIGlmIHRoYXQgY2Fu
IGJlIHJlY3RpZmllZCBieSBkZXNwZWNpZnlpbmcuCisgICAgaWYgKHdvcnRoRGVzcGVjaWZ5aW5n
KCkpIHsKKyAgICAgICAgQ2FsbFNwZWN0cnVtIG5ld1NwZWN0cnVtOworICAgICAgICAKKyAgICAg
ICAgaWYgKCEhbV9wcmltYXJ5Q2FsbGVlKQorICAgICAgICAgICAgbmV3U3BlY3RydW0uYWRkKG1f
cHJpbWFyeUNhbGxlZS5kZXNwZWNpZmllZENsb3N1cmUoKSwgbV9udW1DYWxsc1RvUHJpbWFyeSk7
CisgICAgICAgIAorICAgICAgICBpZiAobV9vdGhlckNhbGxlZXMpIHsKKyAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5zaXplKCk7IGktLTsp
IHsKKyAgICAgICAgICAgICAgICBuZXdTcGVjdHJ1bS5hZGQoCisgICAgICAgICAgICAgICAgICAg
IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jYWxsZWUoKS5kZXNwZWNpZmllZENsb3N1
cmUoKSwKKyAgICAgICAgICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ld
LmNvdW50KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCisgICAgICAgIFZlY3RvcjxDYWxsU3BlY3RydW06OktleUFuZENvdW50PiBsaXN0
ID0gbmV3U3BlY3RydW0uYnVpbGRMaXN0KCk7CisgICAgICAgIEFTU0VSVChsaXN0LnNpemUoKSk7
CisgICAgICAgIG1fcHJpbWFyeUNhbGxlZSA9IGxpc3QubGFzdCgpLmtleTsKKyAgICAgICAgbV9u
dW1DYWxsc1RvUHJpbWFyeSA9IGxpc3QubGFzdCgpLmNvdW50OworICAgICAgICAKKyAgICAgICAg
QVNTRVJUKCEhbV9vdGhlckNhbGxlZXMgPT0gKGxpc3Quc2l6ZSgpID49IDIpKTsKKyAgICAgICAg
aWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9j
ZXNzZWQuY2xlYXIoKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGxpc3Quc2l6ZSgp
IC0gMTsgaS0tOykKKyAgICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQu
YXBwZW5kKENhbGxFZGdlKGxpc3RbaV0ua2V5LCBsaXN0W2ldLmNvdW50KSk7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIG1fY2xvc3VyZXNBcmVEZXNwZWNpZmllZCA9IHRydWU7CisgICAg
ICAgIAorICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmICghIW1fcHJpbWFyeUNh
bGxlZSAmJiAhSGVhcDo6aXNNYXJrZWQobV9wcmltYXJ5Q2FsbGVlLnJhd0NhbGxlZUNlbGwoKSkp
IHsKKyAgICAgICAgbV9udW1DYWxsc1RvVW5rbm93bkNlbGwgKz0gbV9udW1DYWxsc1RvUHJpbWFy
eTsKKyAgICAgICAgCisgICAgICAgIG1fcHJpbWFyeUNhbGxlZSA9IENhbGxWYXJpYW50KCk7Cisg
ICAgICAgIG1fbnVtQ2FsbHNUb1ByaW1hcnkgPSAwOworICAgIH0KKyAgICAKKyAgICBpZiAobV9v
dGhlckNhbGxlZXMpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fb3RoZXJD
YWxsZWVzLT5tX3Byb2Nlc3NlZC5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgaWYgKEhlYXA6
OmlzTWFya2VkKG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jYWxsZWUoKS5yYXdDYWxs
ZWVDZWxsKCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBtX251bUNhbGxzVG9Vbmtub3duQ2VsbCArPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9j
ZXNzZWRbaV0uY291bnQoKTsKKyAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3Nl
ZFtpLS1dID0gbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLmxhc3QoKTsKKyAgICAgICAgICAg
IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5yZW1vdmVMYXN0KCk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIC8vIE9ubHkgZXhpc3RzIHdoaWxlIHdlIGFyZSBwcm9jZXNzaW5nIHRo
ZSBsb2cuCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3Jh
cnlTcGVjdHJ1bSk7CisgICAgfQorfQorCit2b2lkIENhbGxFZGdlUHJvZmlsZTo6YWRkU2xvdyhD
YWxsVmFyaWFudCBjYWxsZWUsIENhbGxFZGdlUHJvZmlsZVZlY3RvciYgbWVyZ2VCYWNrTG9nKQor
eworICAgIC8vIFRoaXMgZXhpc3RzIHRvIGhhbmRsZSBjYXNlcyB3aGVyZSB0aGUgc3BlY3RydW0g
d2Fzbid0IGNyZWF0ZWQgeWV0LCBvciB3ZSdyZSBzdG9yaW5nIHRvIGEKKyAgICAvLyBwYXJ0aWN1
bGFyIHNwZWN0cnVtIGZvciB0aGUgZmlyc3QgdGltZSBkdXJpbmcgYSBsb2cgcHJvY2Vzc2luZyBp
dGVyYXRpb24uCisgICAgCisgICAgaWYgKCFtX290aGVyQ2FsbGVlcykgeworICAgICAgICBtX290
aGVyQ2FsbGVlcyA9IHN0ZDo6bWFrZV91bmlxdWU8U2Vjb25kYXJ5PigpOworICAgICAgICAvLyBJ
ZiBhIGNvbXBpbGVyIHRocmVhZCBub3RpY2VzIHRoZSBtX290aGVyQ2FsbGVlcyBiZWluZyBub24t
bnVsbCwgd2Ugd2FudCB0byBtYWtlIHN1cmUKKyAgICAgICAgLy8gdGhhdCBpdCBzZWVzIGEgZnVs
bHkgY3JlYXRlZCBvbmUuCisgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CisgICAgfQor
ICAgIAorICAgIGlmICghbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0pIHsKKyAg
ICAgICAgbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0gPSBzdGQ6Om1ha2VfdW5p
cXVlPENhbGxTcGVjdHJ1bT4oKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9vdGhlckNh
bGxlZXMtPm1fcHJvY2Vzc2VkLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgbV9vdGhlckNh
bGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0tPmFkZCgKKyAgICAgICAgICAgICAgICBtX290aGVy
Q2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCksCisgICAgICAgICAgICAgICAgbV9vdGhl
ckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNvdW50KCkpOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgdGhpcyBpcyB0aGUgZmlyc3QgdGltZSB3ZSdyZSBz
ZWVpbmcgdGhpcyBwcm9maWxlIGR1cmluZyB0aGlzIGxvZworICAgICAgICAvLyBwcm9jZXNzaW5n
IGl0ZXJhdGlvbi4KKyAgICAgICAgbWVyZ2VCYWNrTG9nLmFwcGVuZCh0aGlzKTsKKyAgICB9Cisg
ICAgCisgICAgbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0tPmFkZChjYWxsZWUp
OworfQorCit2b2lkIENhbGxFZGdlUHJvZmlsZTo6bWVyZ2VCYWNrKCkKK3sKKyAgICBDb25jdXJy
ZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIAorICAgIEFTU0VSVChtX290aGVyQ2Fs
bGVlcyk7CisgICAgQVNTRVJUKG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtKTsK
KyAgICAKKyAgICBpZiAoISFtX3ByaW1hcnlDYWxsZWUpCisgICAgICAgIG1fb3RoZXJDYWxsZWVz
LT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5hZGQobV9wcmltYXJ5Q2FsbGVlLCBtX251bUNhbGxzVG9Q
cmltYXJ5KTsKKyAgICAKKyAgICBpZiAoIW1fY2xvc3VyZXNBcmVEZXNwZWNpZmllZCkgeworICAg
ICAgICBDYWxsU3BlY3RydW0gbmV3U3BlY3RydW07CisgICAgICAgIGZvciAoYXV0byBlbnRyeSA6
ICptX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSkKKyAgICAgICAgICAgIG5ld1Nw
ZWN0cnVtLmFkZChlbnRyeS5rZXkuZGVzcGVjaWZpZWRDbG9zdXJlKCksIGVudHJ5LnZhbHVlKTsK
KyAgICAgICAgCisgICAgICAgIGlmIChuZXdTcGVjdHJ1bS5zaXplKCkgPCBtX290aGVyQ2FsbGVl
cy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+c2l6ZSgpKSB7CisgICAgICAgICAgICAqbV9vdGhlckNh
bGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0gPSBuZXdTcGVjdHJ1bTsKKyAgICAgICAgICAgIG1f
Y2xvc3VyZXNBcmVEZXNwZWNpZmllZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgCisg
ICAgVmVjdG9yPENhbGxTcGVjdHJ1bTo6S2V5QW5kQ291bnQ+IGxpc3QgPSBtX290aGVyQ2FsbGVl
cy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+YnVpbGRMaXN0KCk7CisgICAgbV9vdGhlckNhbGxlZXMt
Pm1fdGVtcG9yYXJ5U3BlY3RydW0gPSBudWxscHRyOworICAgIAorICAgIG1fcHJpbWFyeUNhbGxl
ZSA9IGxpc3QubGFzdCgpLmtleTsKKyAgICBtX251bUNhbGxzVG9QcmltYXJ5ID0gbGlzdC5sYXN0
KCkuY291bnQ7CisgICAgbGlzdC5yZW1vdmVMYXN0KCk7CisgICAgCisgICAgbV9vdGhlckNhbGxl
ZXMtPm1fcHJvY2Vzc2VkLmNsZWFyKCk7CisgICAgZm9yICh1bnNpZ25lZCBjb3VudCA9IG1heEtu
b3duQ2FsbGVlczsgY291bnQtLSAmJiAhbGlzdC5pc0VtcHR5KCk7KSB7CisgICAgICAgIG1fb3Ro
ZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5hcHBlbmQoQ2FsbEVkZ2UobGlzdC5sYXN0KCkua2V5LCBs
aXN0Lmxhc3QoKS5jb3VudCkpOworICAgICAgICBsaXN0LnJlbW92ZUxhc3QoKTsKKyAgICB9Cisg
ICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gbGlzdC5zaXplKCk7IGktLTspCisgICAgICAgIG1f
bnVtQ2FsbHNUb1Vua25vd25DZWxsICs9IGxpc3RbaV0uY291bnQ7Cit9CisKK3ZvaWQgQ2FsbEVk
Z2VQcm9maWxlOjpmYWRlQnlIYWxmKCkKK3sKKyAgICBtX251bUNhbGxzVG9QcmltYXJ5ID4+PSAx
OworICAgIG1fbnVtQ2FsbHNUb05vdENlbGwgPj49IDE7CisgICAgbV9udW1DYWxsc1RvVW5rbm93
bkNlbGwgPj49IDE7CisgICAgbV90b3RhbENvdW50ID4+PSAxOworICAgIAorICAgIGlmIChtX290
aGVyQ2FsbGVlcykgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+
bV9wcm9jZXNzZWQuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+
bV9wcm9jZXNzZWRbaV0gPSBDYWxsRWRnZSgKKyAgICAgICAgICAgICAgICBtX290aGVyQ2FsbGVl
cy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCksCisgICAgICAgICAgICAgICAgbV9vdGhlckNhbGxl
ZXMtPm1fcHJvY2Vzc2VkW2ldLmNvdW50KCkgPj4gMSk7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIGlmIChtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSkgeworICAgICAg
ICAgICAgZm9yIChhdXRvIGVudHJ5IDogKm1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0
cnVtKQorICAgICAgICAgICAgICAgIGVudHJ5LnZhbHVlID4+PSAxOworICAgICAgICB9CisgICAg
fQorfQorCitDYWxsRWRnZUxvZzo6Q2FsbEVkZ2VMb2coKQorICAgIDogbV9zY2FsZWRMb2dJbmRl
eChsb2dTaXplICogc2l6ZW9mKEVudHJ5KSkKK3sKKyAgICBBU1NFUlQoIShtX3NjYWxlZExvZ0lu
ZGV4ICUgc2l6ZW9mKEVudHJ5KSkpOworfQorCitDYWxsRWRnZUxvZzo6fkNhbGxFZGdlTG9nKCkg
eyB9CisKK2Jvb2wgQ2FsbEVkZ2VMb2c6OmlzRW5hYmxlZCgpCit7CisgICAgcmV0dXJuIE9wdGlv
bnM6OmVuYWJsZUNhbGxFZGdlUHJvZmlsaW5nKCkgJiYgT3B0aW9uczo6dXNlRlRMSklUKCk7Cit9
CisKKyNpZiBFTkFCTEUoSklUKQorCitleHRlcm4gIkMiIEpJVF9PUEVSQVRJT04gdm9pZCBvcGVy
YXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2coQ2FsbEVkZ2VMb2cqKSBXVEZfSU5URVJOQUw7CitleHRl
cm4gIkMiIEpJVF9PUEVSQVRJT04gdm9pZCBvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2coQ2Fs
bEVkZ2VMb2cqIGxvZykKK3sKKyAgICBsb2ctPnByb2Nlc3NMb2coKTsKK30KKwordm9pZCBDYWxs
RWRnZUxvZzo6ZW1pdExvZ0NvZGUoQ0NhbGxIZWxwZXJzJiBqaXQsIENhbGxFZGdlUHJvZmlsZSYg
cHJvZmlsZSwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncykKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBu
dW1iZXJPZkFyZ3VtZW50cyA9IDE7CisgICAgCisgICAgR1BSUmVnIHNjcmF0Y2hHUFI7CisgICAg
aWYgKCFjYWxsZWVSZWdzLnVzZXMoR1BSSW5mbzo6cmVnVDApKQorICAgICAgICBzY3JhdGNoR1BS
ID0gR1BSSW5mbzo6cmVnVDA7CisgICAgZWxzZSBpZiAoIWNhbGxlZVJlZ3MudXNlcyhHUFJJbmZv
OjpyZWdUMSkpCisgICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJbmZvOjpyZWdUMTsKKyAgICBlbHNl
CisgICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJbmZvOjpyZWdUMjsKKyAgICAKKyAgICBqaXQubG9h
ZDMyKCZtX3NjYWxlZExvZ0luZGV4LCBzY3JhdGNoR1BSKTsKKyAgICAKKyAgICBDQ2FsbEhlbHBl
cnM6Okp1bXAgb2sgPSBqaXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6Tm9uWmVybywgc2Ny
YXRjaEdQUik7CisgICAgCisgICAgQVNTRVJUX1VOVVNFRChudW1iZXJPZkFyZ3VtZW50cywgc3Rh
Y2tBbGlnbm1lbnRSZWdpc3RlcnMoKSA+PSAxICsgbnVtYmVyT2ZBcmd1bWVudHMpOworICAgIAor
ICAgIGppdC5zdWJQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhY2tBbGlnbm1lbnRC
eXRlcygpKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgCisgICAg
aml0LnN0b3JlVmFsdWUoY2FsbGVlUmVncywgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVs
cGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIHNpemVvZihKU1ZhbHVlKSkpOworICAgIGppdC5z
ZXR1cEFyZ3VtZW50cyhDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGhpcykpOworICAgIGpp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9w
ZXJhdGlvblByb2Nlc3NDYWxsRWRnZUxvZykpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICBq
aXQuY2FsbChHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICBqaXQubG9hZFZhbHVlKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzaXplb2Yo
SlNWYWx1ZSkpLCBjYWxsZWVSZWdzKTsKKyAgICAKKyAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSksIENDYWxsSGVscGVyczo6c3Rh
Y2tQb2ludGVyUmVnaXN0ZXIpOworICAgIAorICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKGxvZ1NpemUgKiBzaXplb2YoRW50cnkpKSwgc2NyYXRjaEdQUik7CisgICAgb2su
bGluaygmaml0KTsKKworICAgIGppdC5zdWIzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihz
aXplb2YoRW50cnkpKSwgc2NyYXRjaEdQUik7CisgICAgaml0LnN0b3JlMzIoc2NyYXRjaEdQUiwg
Jm1fc2NhbGVkTG9nSW5kZXgpOworICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKG1fbG9nKSwgc2NyYXRjaEdQUik7CisgICAgaml0LnN0b3JlVmFsdWUoY2FsbGVlUmVn
cywgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIE9CSkVDVF9PRkZTRVRPRihFbnRy
eSwgbV92YWx1ZSkpKTsKKyAgICBqaXQuc3RvcmVQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKCZwcm9maWxlKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIE9CSkVDVF9P
RkZTRVRPRihFbnRyeSwgbV9wcm9maWxlKSkpOworfQorCit2b2lkIENhbGxFZGdlTG9nOjplbWl0
TG9nQ29kZSgKKyAgICBDQ2FsbEhlbHBlcnMmIGppdCwgT3duUHRyPENhbGxFZGdlUHJvZmlsZT4m
IHByb2ZpbGVQb2ludGVyLCBKU1ZhbHVlUmVncyBjYWxsZWVSZWdzKQoreworICAgIGlmICghaXNF
bmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBwcm9maWxlUG9pbnRlci5jcmVh
dGVUcmFuc2FjdGlvbmFsbHkoKTsKKyAgICBlbWl0TG9nQ29kZShqaXQsICpwcm9maWxlUG9pbnRl
ciwgY2FsbGVlUmVncyk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCit2b2lkIENhbGxF
ZGdlTG9nOjpwcm9jZXNzTG9nKCkKK3sKKyAgICBBU1NFUlQoIShtX3NjYWxlZExvZ0luZGV4ICUg
c2l6ZW9mKEVudHJ5KSkpOworICAgIAorICAgIENhbGxFZGdlUHJvZmlsZVZlY3RvciBtZXJnZUJh
Y2tMb2c7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9zY2FsZWRMb2dJbmRleCAvIHNp
emVvZihFbnRyeSk7IGkgPCBsb2dTaXplOyArK2kpCisgICAgICAgIG1fbG9nW2ldLm1fcHJvZmls
ZS0+YWRkKG1fbG9nW2ldLm1fdmFsdWUsIG1lcmdlQmFja0xvZyk7CisgICAgCisgICAgbV9zY2Fs
ZWRMb2dJbmRleCA9IGxvZ1NpemUgKiBzaXplb2YoRW50cnkpOworICAgIAorICAgIGZvciAodW5z
aWduZWQgaSA9IG1lcmdlQmFja0xvZy5zaXplKCk7IGktLTspCisgICAgICAgIG1lcmdlQmFja0xv
Z1tpXS0+bWVyZ2VCYWNrKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmls
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTI4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ2FsbEVkZ2VQcm9maWxlX2gKKyNk
ZWZpbmUgQ2FsbEVkZ2VQcm9maWxlX2gKKworI2luY2x1ZGUgIkNhbGxFZGdlLmgiCisjaW5jbHVk
ZSAiQ2FsbFZhcmlhbnQuaCIKKyNpbmNsdWRlICJDb25jdXJyZW50SklUTG9jay5oIgorI2luY2x1
ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIENDYWxsSGVscGVyczsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwor
Y2xhc3MgQ2FsbEVkZ2VMb2c7CitjbGFzcyBDYWxsRWRnZVByb2ZpbGU7Cit0eXBlZGVmIFZlY3Rv
cjxDYWxsRWRnZVByb2ZpbGUqLCAxMD4gQ2FsbEVkZ2VQcm9maWxlVmVjdG9yOworCitjbGFzcyBD
YWxsRWRnZVByb2ZpbGUgeworcHVibGljOgorICAgIENhbGxFZGdlUHJvZmlsZSgpOworICAgIAor
ICAgIENhbGxFZGdlQ291bnRUeXBlIG51bUNhbGxzVG9Ob3RDZWxsKCkgY29uc3QgeyByZXR1cm4g
bV9udW1DYWxsc1RvTm90Q2VsbDsgfQorICAgIENhbGxFZGdlQ291bnRUeXBlIG51bUNhbGxzVG9V
bmtub3duQ2VsbCgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxsOyB9Cisg
ICAgQ2FsbEVkZ2VDb3VudFR5cGUgbnVtQ2FsbHNUb0tub3duQ2VsbHMoKSBjb25zdDsKKyAgICAK
KyAgICAvLyBDYWxsIHdoaWxlIGhvbGRpbmcgdGhlIG93bmluZyBDb2RlQmxvY2sncyBsb2NrLgor
ICAgIENhbGxFZGdlTGlzdCBjYWxsRWRnZXMoKSBjb25zdDsKKyAgICAKKyAgICB2b2lkIHZpc2l0
V2VhaygpOworICAgIAorcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQ2FsbEVkZ2VMb2c7Cisg
ICAgCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heEtub3duQ2FsbGVlcyA9IDU7CisgICAg
CisgICAgdm9pZCBhZGQoSlNWYWx1ZSwgQ2FsbEVkZ2VQcm9maWxlVmVjdG9yJiBtZXJnZUJhY2tM
b2cpOworICAgIAorICAgIGJvb2wgd29ydGhEZXNwZWNpZnlpbmcoKTsKKyAgICB2b2lkIGFkZFNs
b3coQ2FsbFZhcmlhbnQsIENhbGxFZGdlUHJvZmlsZVZlY3RvciYgbWVyZ2VCYWNrTG9nKTsKKyAg
ICB2b2lkIG1lcmdlQmFjaygpOworICAgIHZvaWQgZmFkZUJ5SGFsZigpOworICAgIAorICAgIC8v
IEl0J3MgY2hlYXBlciB0byBsZXQgdGhpcyBoYXZlIGl0cyBvd24gbG9jay4gSXQgbmVlZHMgdG8g
YmUgYWJsZSB0byBmaW5kIHdoaWNoIGxvY2sgdG8KKyAgICAvLyBsb2NrLiBOb3JtYWxseSBpdCB3
b3VsZCBsb2NrIHRoZSBvd25pbmcgQ29kZUJsb2NrJ3MgbG9jaywgYnV0IHRoYXQgd291bGQgcmVx
dWlyZSBhCisgICAgLy8gcG9pbnRlci13aWR0aCB3b3JkIHRvIHBvaW50IGF0IHRoZSBDb2RlQmxv
Y2suIEhhdmluZyB0aGUgYnl0ZS1zaXplZCBsb2NrIGhlcmUgaXMKKyAgICAvLyBjaGVhcGVyLiBI
b3dldmVyLCB0aGlzIG1lYW5zIHRoYXQgdGhlIHJlbGF0aW9uc2hpcCB3aXRoIHRoZSBDb2RlQmxv
Y2sgbG9jayBpczoKKyAgICAvLyBhY3F1aXJlIHRoZSBDb2RlQmxvY2sgbG9jayBiZWZvcmUgdGhp
cyBvbmUuCisgICAgbXV0YWJsZSBDb25jdXJyZW50SklUTG9jayBtX2xvY2s7CisgICAgCisgICAg
Ym9vbCBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQ7CisgICAgCisgICAgQ2FsbEVkZ2VDb3VudFR5
cGUgbV9udW1DYWxsc1RvUHJpbWFyeTsKKyAgICBDYWxsRWRnZUNvdW50VHlwZSBtX251bUNhbGxz
VG9Ob3RDZWxsOworICAgIENhbGxFZGdlQ291bnRUeXBlIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxs
OworICAgIENhbGxFZGdlQ291bnRUeXBlIG1fdG90YWxDb3VudDsKKyAgICBDYWxsVmFyaWFudCBt
X3ByaW1hcnlDYWxsZWU7CisgICAgCisgICAgdHlwZWRlZiBTcGVjdHJ1bTxDYWxsVmFyaWFudCwg
Q2FsbEVkZ2VDb3VudFR5cGU+IENhbGxTcGVjdHJ1bTsKKyAgICAKKyAgICBzdHJ1Y3QgU2Vjb25k
YXJ5IHsKKyAgICAgICAgVmVjdG9yPENhbGxFZGdlPiBtX3Byb2Nlc3NlZDsgLy8gUHJvY2Vzc2Vk
IGJ1dCBub3QgbmVjZXNzYXJpbHkgc29ydGVkLgorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2Fs
bFNwZWN0cnVtPiBtX3RlbXBvcmFyeVNwZWN0cnVtOworICAgIH07CisgICAgCisgICAgc3RkOjp1
bmlxdWVfcHRyPFNlY29uZGFyeT4gbV9vdGhlckNhbGxlZXM7Cit9OworCitjbGFzcyBDYWxsRWRn
ZUxvZyB7CitwdWJsaWM6CisgICAgQ2FsbEVkZ2VMb2coKTsKKyAgICB+Q2FsbEVkZ2VMb2coKTsK
KworICAgIHN0YXRpYyBib29sIGlzRW5hYmxlZCgpOworICAgIAorI2lmIEVOQUJMRShKSVQpCisg
ICAgdm9pZCBlbWl0TG9nQ29kZShDQ2FsbEhlbHBlcnMmLCBDYWxsRWRnZVByb2ZpbGUmLCBKU1Zh
bHVlUmVncyBjYWxsZWVSZWdzKTsgLy8gQXNzdW1lcyB0aGF0IHN0YWNrIGlzIGFsaWduZWQsIGFs
bCB2b2xhdGlsZSByZWdpc3RlcnMgLSBvdGhlciB0aGFuIGNhbGxlZUdQUiAtIGFyZSBjbG9iYmVy
YWJsZSwgYW5kIHRoZSBwYXJhbWV0ZXIgc3BhY2UgaXMgaW4gdXNlLgorICAgIAorICAgIC8vIFNh
bWUgYXMgYWJvdmUgYnV0IGNyZWF0ZXMgYSBDYWxsRWRnZVByb2ZpbGUgaW5zdGFuY2UgaWYgb25l
IGRpZCBub3QgYWxyZWFkeSBleGlzdC4gRG9lcworICAgIC8vIHRoaXMgaW4gYSB0aHJlYWQtc2Fm
ZSBtYW5uZXIgYnkgY2FsbGluZyBPd25QdHI6OmNyZWF0ZVRyYW5zYWN0aW9uYWxseS4KKyAgICB2
b2lkIGVtaXRMb2dDb2RlKENDYWxsSGVscGVycyYsIE93blB0cjxDYWxsRWRnZVByb2ZpbGU+Jiwg
SlNWYWx1ZVJlZ3MgY2FsbGVlUmVncyk7CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKyAgICAKKyAg
ICB2b2lkIHByb2Nlc3NMb2coKTsKKyAgICAKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb2dTaXpl
ID0gMTAwMDA7CisgICAgCisgICAgc3RydWN0IEVudHJ5IHsKKyAgICAgICAgSlNWYWx1ZSBtX3Zh
bHVlOworICAgICAgICBDYWxsRWRnZVByb2ZpbGUqIG1fcHJvZmlsZTsKKyAgICB9OworICAgIAor
ICAgIHVuc2lnbmVkIG1fc2NhbGVkTG9nSW5kZXg7CisgICAgRW50cnkgbV9sb2dbbG9nU2l6ZV07
Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIENhbGxFZGdlUHJvZmlsZV9o
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGVJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxFZGdlUHJvZmlsZUlubGluZXMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIENhbGxFZGdlUHJvZmlsZUlubGluZXNfaAorI2RlZmluZSBDYWxsRWRnZVBy
b2ZpbGVJbmxpbmVzX2gKKworI2luY2x1ZGUgIkNhbGxFZGdlUHJvZmlsZS5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworaW5saW5lIENhbGxFZGdlUHJvZmlsZTo6Q2FsbEVkZ2VQcm9maWxlKCkKKyAg
ICA6IG1fY2xvc3VyZXNBcmVEZXNwZWNpZmllZChmYWxzZSkKKyAgICAsIG1fbnVtQ2FsbHNUb1By
aW1hcnkoMCkKKyAgICAsIG1fbnVtQ2FsbHNUb05vdENlbGwoMCkKKyAgICAsIG1fbnVtQ2FsbHNU
b1Vua25vd25DZWxsKDApCisgICAgLCBtX3RvdGFsQ291bnQoMCkKKyAgICAsIG1fcHJpbWFyeUNh
bGxlZShudWxscHRyKQoreworfQorCitBTFdBWVNfSU5MSU5FIHZvaWQgQ2FsbEVkZ2VQcm9maWxl
OjphZGQoSlNWYWx1ZSB2YWx1ZSwgQ2FsbEVkZ2VQcm9maWxlVmVjdG9yJiBtZXJnZUJhY2tMb2cp
Cit7CisgICAgdW5zaWduZWQgbmV3VG90YWxDb3VudCA9IG1fdG90YWxDb3VudCArIDE7CisgICAg
aWYgKFVOTElLRUxZKCFuZXdUb3RhbENvdW50KSkgeworICAgICAgICBmYWRlQnlIYWxmKCk7IC8v
IFRhY2tsZSBvdmVyZmxvd3MgYnkgZGl2aWRpbmcgYWxsIGNvdW50cyBieSB0d28uCisgICAgICAg
IG5ld1RvdGFsQ291bnQgPSBtX3RvdGFsQ291bnQgKyAxOworICAgIH0KKyAgICBBU1NFUlQobmV3
VG90YWxDb3VudCk7CisgICAgbV90b3RhbENvdW50ID0gbmV3VG90YWxDb3VudDsKKyAgICAKKyAg
ICBpZiAoVU5MSUtFTFkoIXZhbHVlLmlzQ2VsbCgpKSkgeworICAgICAgICBtX251bUNhbGxzVG9O
b3RDZWxsKys7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDYWxsVmFyaWFudCBjYWxs
ZWUgPSBDYWxsVmFyaWFudCh2YWx1ZS5hc0NlbGwoKSk7CisgICAgCisgICAgaWYgKG1fY2xvc3Vy
ZXNBcmVEZXNwZWNpZmllZCkKKyAgICAgICAgY2FsbGVlID0gY2FsbGVlLmRlc3BlY2lmaWVkQ2xv
c3VyZSgpOworICAgIAorICAgIGlmIChVTkxJS0VMWSghbV9wcmltYXJ5Q2FsbGVlKSkgeworICAg
ICAgICBtX3ByaW1hcnlDYWxsZWUgPSBjYWxsZWU7CisgICAgICAgIG1fbnVtQ2FsbHNUb1ByaW1h
cnkgPSAxOworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBpZiAoTElLRUxZ
KG1fcHJpbWFyeUNhbGxlZSA9PSBjYWxsZWUpKSB7CisgICAgICAgIG1fbnVtQ2FsbHNUb1ByaW1h
cnkrKzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAgaWYgKFVOTElLRUxZ
KCFtX290aGVyQ2FsbGVlcykpIHsKKyAgICAgICAgYWRkU2xvdyhjYWxsZWUsIG1lcmdlQmFja0xv
Zyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAorICAgIENhbGxTcGVjdHJ1bSog
c2Vjb25kYXJ5ID0gbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0uZ2V0KCk7Cisg
ICAgaWYgKCFzZWNvbmRhcnkpIHsKKyAgICAgICAgYWRkU2xvdyhjYWxsZWUsIG1lcmdlQmFja0xv
Zyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAorICAgIHNlY29uZGFyeS0+YWRk
KGNhbGxlZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ2FsbEVkZ2VQ
cm9maWxlSW5saW5lc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua0luZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DYWxsTGlua0luZm8uY3BwCShyZXZpc2lvbiAxNzI4MzUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMs
NiArODMsMTEgQEAgdm9pZCBDYWxsTGlua0luZm86OnZpc2l0V2VhayhSZXBhdGNoQnVmZgogICAg
IH0KICAgICBpZiAoISFsYXN0U2VlbkNhbGxlZSAmJiAhSGVhcDo6aXNNYXJrZWQobGFzdFNlZW5D
YWxsZWUuZ2V0KCkpKQogICAgICAgICBsYXN0U2VlbkNhbGxlZS5jbGVhcigpOworICAgIAorICAg
IGlmIChjYWxsRWRnZVByb2ZpbGUpIHsKKyAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7Cisg
ICAgICAgIGNhbGxFZGdlUHJvZmlsZS0+dmlzaXRXZWFrKCk7CisgICAgfQogfQogCiBDYWxsTGlu
a0luZm8mIENhbGxMaW5rSW5mbzo6ZHVtbXkoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAkocmV2aXNpb24gMTcyODM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIENhbGxMaW5rSW5mb19oCiAjZGVmaW5lIENhbGxMaW5r
SW5mb19oCiAKKyNpbmNsdWRlICJDYWxsRWRnZVByb2ZpbGUuaCIKICNpbmNsdWRlICJDbG9zdXJl
Q2FsbFN0dWJSb3V0aW5lLmgiCiAjaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAi
Q29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgpAQCAtMzMsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIu
aCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2Vk
TGlzdC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTg4LDYgKzkwLDcgQEAgc3RydWN0IENhbGxM
aW5rSW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1NlbgogICAgIHVuc2lnbmVkIGNhbGxlZUdQUiA6IDg7
CiAgICAgdW5zaWduZWQgc2xvd1BhdGhDb3VudDsKICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW47
CisgICAgT3duUHRyPENhbGxFZGdlUHJvZmlsZT4gY2FsbEVkZ2VQcm9maWxlOwogCiAgICAgYm9v
bCBpc0xpbmtlZCgpIHsgcmV0dXJuIHN0dWIgfHwgY2FsbGVlOyB9CiAgICAgdm9pZCB1bmxpbmso
UmVwYXRjaEJ1ZmZlciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZpc2lvbiAxNzI4MzUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw1NCArMzIsMjIgQEAKICNpbmNsdWRlICJMTEludENhbGxMaW5rSW5mby5oIgogI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CisjaW5jbHVk
ZSA8d3RmL0xpc3REdW1wLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCiBzdGF0aWMgY29uc3QgYm9v
bCB2ZXJib3NlID0gZmFsc2U7CiAKIENhbGxMaW5rU3RhdHVzOjpDYWxsTGlua1N0YXR1cyhKU1Zh
bHVlIHZhbHVlKQotICAgIDogbV9jYWxsVGFyZ2V0KHZhbHVlKQotICAgICwgbV9leGVjdXRhYmxl
KDApCi0gICAgLCBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQorICAgIDogbV9jb3VsZFRha2VT
bG93UGF0aChmYWxzZSkKICAgICAsIG1faXNQcm92ZWQoZmFsc2UpCiB7Ci0gICAgaWYgKCF2YWx1
ZSB8fCAhdmFsdWUuaXNDZWxsKCkpCisgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkp
IHsKKyAgICAgICAgbV9jb3VsZFRha2VTbG93UGF0aCA9IHRydWU7CiAgICAgICAgIHJldHVybjsK
KyAgICB9CiAgICAgCi0gICAgaWYgKCF2YWx1ZS5hc0NlbGwoKS0+aW5oZXJpdHMoSlNGdW5jdGlv
bjo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIG1fZXhlY3V0YWJsZSA9IGpz
Q2FzdDxKU0Z1bmN0aW9uKj4odmFsdWUuYXNDZWxsKCkpLT5leGVjdXRhYmxlKCk7Ci19Ci0KLUpT
RnVuY3Rpb24qIENhbGxMaW5rU3RhdHVzOjpmdW5jdGlvbigpIGNvbnN0Ci17Ci0gICAgaWYgKCFt
X2NhbGxUYXJnZXQgfHwgIW1fY2FsbFRhcmdldC5pc0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgCi0gICAgaWYgKCFtX2NhbGxUYXJnZXQuYXNDZWxsKCktPmluaGVyaXRzKEpTRnVuY3Rp
b246OmluZm8oKSkpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIHJldHVybiBqc0Nhc3Q8
SlNGdW5jdGlvbio+KG1fY2FsbFRhcmdldC5hc0NlbGwoKSk7Ci19Ci0KLUludGVybmFsRnVuY3Rp
b24qIENhbGxMaW5rU3RhdHVzOjppbnRlcm5hbEZ1bmN0aW9uKCkgY29uc3QKLXsKLSAgICBpZiAo
IW1fY2FsbFRhcmdldCB8fCAhbV9jYWxsVGFyZ2V0LmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4g
MDsKLSAgICAKLSAgICBpZiAoIW1fY2FsbFRhcmdldC5hc0NlbGwoKS0+aW5oZXJpdHMoSW50ZXJu
YWxGdW5jdGlvbjo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgcmV0dXJu
IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4obV9jYWxsVGFyZ2V0LmFzQ2VsbCgpKTsKLX0KLQot
SW50cmluc2ljIENhbGxMaW5rU3RhdHVzOjppbnRyaW5zaWNGb3IoQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kKSBjb25zdAotewotICAgIGlmICghbV9leGVjdXRhYmxlKQotICAgICAgICByZXR1
cm4gTm9JbnRyaW5zaWM7Ci0gICAgCi0gICAgcmV0dXJuIG1fZXhlY3V0YWJsZS0+aW50cmluc2lj
Rm9yKGtpbmQpOworICAgIG1fZWRnZXMuYXBwZW5kKENhbGxFZGdlKENhbGxWYXJpYW50KHZhbHVl
LmFzQ2VsbCgpKSwgMSkpOwogfQogCiBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29t
cHV0ZUZyb21MTEludChjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9j
ayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKQEAgLTg3LDcgKzU1LDcg
QEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcgogICAgIFVOVVNFRF9Q
QVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAj
aWYgRU5BQkxFKERGR19KSVQpCi0gICAgaWYgKHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxv
Y2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZEZ1bmN0aW9uKSkp
IHsKKyAgICBpZiAocHJvZmlsZWRCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1
ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkQ2VsbCkpKSB7CiAgICAgICAgIC8vIFdlIGNv
dWxkIGZvcmNlIHRoaXMgdG8gYmUgYSBjbG9zdXJlIGNhbGwsIGJ1dCBpbnN0ZWFkIHdlJ2xsIGp1
c3QgYXNzdW1lIHRoYXQgaXQKICAgICAgICAgLy8gdGFrZXMgc2xvdyBwYXRoLgogICAgICAgICBy
ZXR1cm4gdGFrZXNTbG93UGF0aCgpOwpAQCAtMTM5LDEwICsxMDcsMTAgQEAgQ2FsbExpbmtTdGF0
dXM6OkV4aXRTaXRlRGF0YSBDYWxsTGlua1N0YQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQog
ICAgIGV4aXRTaXRlRGF0YS5tX3Rha2VzU2xvd1BhdGggPQotICAgICAgICBwcm9maWxlZEJsb2Nr
LT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4
LCBCYWRDYWNoZSwgZXhpdGluZ0pJVFR5cGUpKQorICAgICAgICBwcm9maWxlZEJsb2NrLT5oYXNF
eGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRU
eXBlLCBleGl0aW5nSklUVHlwZSkpCiAgICAgICAgIHx8IHByb2ZpbGVkQmxvY2stPmhhc0V4aXRT
aXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZEV4ZWN1
dGFibGUsIGV4aXRpbmdKSVRUeXBlKSk7CiAgICAgZXhpdFNpdGVEYXRhLm1fYmFkRnVuY3Rpb24g
PQotICAgICAgICBwcm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVl
bnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRGdW5jdGlvbiwgZXhpdGluZ0pJVFR5cGUpKTsK
KyAgICAgICAgcHJvZmlsZWRCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50
RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkQ2VsbCwgZXhpdGluZ0pJVFR5cGUpKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKGxvY2tlcik7CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxv
Y2spOwpAQCAtMTU2LDYgKzEyNCwxOCBAQCBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRhIENh
bGxMaW5rU3RhCiAjaWYgRU5BQkxFKEpJVCkKIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVz
Ojpjb21wdXRlRm9yKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBDYWxsTGlua0luZm8mIGNh
bGxMaW5rSW5mbykKIHsKKyAgICAvLyBBbHdheXMgdHJ1c3QgdGhlIGNhbGwgZWRnZSBwcm9maWxl
IG92ZXIgYW55dGhpbmcgZWxzZSBzaW5jZSB0aGlzIGhhcyBwcmVjaXNlIGNvdW50cy4KKyAgICAv
LyBJdCBjYW4gbWFrZSB0aGUgYmVzdCBwb3NzaWJsZSBkZWNpc2lvbiBiZWNhdXNlIGl0IG5ldmVy
ICJmb3JnZXRzIiB3aGF0IGhhcHBlbmVkIGZvciBhbnkKKyAgICAvLyBjYWxsLCB3aXRoIHRoZSBl
eGNlcHRpb24gb2YgZmFkaW5nIG91dCB0aGUgY291bnRzIG9mIG9sZCBjYWxscyAoZm9yIGV4YW1w
bGUgaWYgdGhlCisgICAgLy8gY291bnRlciB0eXBlIGlzIDE2LWJpdCB0aGVuIGNhbGxzIHRoYXQg
aGFwcGVuZWQgbW9yZSB0aGFuIDJeMTYgY2FsbHMgYWdvIGFyZSBnaXZlbiBoYWxmCisgICAgLy8g
d2VpZ2h0LCBhbmQgdGhpcyBjb21wb3VuZHMgZm9yIGV2ZXJ5IDJeMTUgW3NpY10gY2FsbHMgYWZ0
ZXIgdGhhdCkuIFRoZSBjb21iaW5hdGlvbiBvZgorICAgIC8vIGhpZ2ggZmlkZWxpdHkgZm9yIHJl
Y2VudCBjYWxscyBhbmQgZmFkaW5nIGZvciBvbGRlciBjYWxscyBtYWtlcyB0aGlzIHRoZSBtb3N0
IHVzZWZ1bAorICAgIC8vIG1lY2hhbWlzbSBvZiBjaG9vc2luZyBob3cgdG8gb3B0aW1pemUgZnV0
dXJlIGNhbGxzLgorICAgIENhbGxFZGdlUHJvZmlsZSogZWRnZVByb2ZpbGUgPSBjYWxsTGlua0lu
Zm8uY2FsbEVkZ2VQcm9maWxlLmdldCgpOworICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOworICAg
IGlmIChlZGdlUHJvZmlsZSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tQ2FsbEVkZ2VQcm9m
aWxlKGVkZ2VQcm9maWxlKTsKKyAgICAKICAgICAvLyBOb3RlIHRoYXQgZGVzcGl0ZSByZXF1aXJp
bmcgdGhhdCB0aGUgbG9ja2VyIGlzIGhlbGQsIHRoaXMgY29kZSBpcyByYWN5IHdpdGggcmVzcGVj
dAogICAgIC8vIHRvIHRoZSBDYWxsTGlua0luZm86IGl0IG1heSBnZXQgY2xlYXJlZCB3aGlsZSB0
aGlzIGNvZGUgcnVucyEgVGhpcyBpcyBiZWNhdXNlCiAgICAgLy8gQ2FsbExpbmtJbmZvOjp1bmxp
bmsoKSBtYXkgYmUgY2FsbGVkIGZyb20gYSBkaWZmZXJlbnQgQ29kZUJsb2NrIHRoYW4gdGhlIG9u
ZSB0aGF0IG93bnMKQEAgLTE3Nyw3ICsxNTcsNyBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0
YXR1czo6Y29tcHV0ZUZvCiAgICAgCiAgICAgSlNGdW5jdGlvbiogdGFyZ2V0ID0gY2FsbExpbmtJ
bmZvLmxhc3RTZWVuQ2FsbGVlLmdldCgpOwogICAgIGlmICghdGFyZ2V0KQotICAgICAgICByZXR1
cm4gQ2FsbExpbmtTdGF0dXMoKTsKKyAgICAgICAgcmV0dXJuIHRha2VzU2xvd1BhdGgoKTsKICAg
ICAKICAgICBpZiAoY2FsbExpbmtJbmZvLmhhc1NlZW5DbG9zdXJlKQogICAgICAgICByZXR1cm4g
Q2FsbExpbmtTdGF0dXModGFyZ2V0LT5leGVjdXRhYmxlKCkpOwpAQCAtMTg1LDE1ICsxNjUsMzEg
QEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGbwogICAgIHJldHVybiBD
YWxsTGlua1N0YXR1cyh0YXJnZXQpOwogfQogCi1DYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1
czo6Y29tcHV0ZUZvcigKLSAgICBjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiBsb2NrZXIsIENh
bGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBFeGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhKQorQ2Fs
bExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tQ2FsbEVkZ2VQcm9maWxlKENh
bGxFZGdlUHJvZmlsZSogZWRnZVByb2ZpbGUpCiB7Ci0gICAgaWYgKGV4aXRTaXRlRGF0YS5tX3Rh
a2VzU2xvd1BhdGgpCisgICAgLy8gVG8gZG8gYW55dGhpbmcgbWVhbmluZ2Z1bCwgd2UgcmVxdWly
ZSB0aGF0IHRoZSBtYWpvcml0eSBvZiBjYWxscyBhcmUgdG8gc29tZXRoaW5nIHdlCisgICAgLy8g
a25vdyBob3cgdG8gaGFuZGxlLgorICAgIHVuc2lnbmVkIG51bUNhbGxzVG9Lbm93biA9IGVkZ2VQ
cm9maWxlLT5udW1DYWxsc1RvS25vd25DZWxscygpOworICAgIHVuc2lnbmVkIG51bUNhbGxzVG9V
bmtub3duID0gZWRnZVByb2ZpbGUtPm51bUNhbGxzVG9Ob3RDZWxsKCkgKyBlZGdlUHJvZmlsZS0+
bnVtQ2FsbHNUb1Vua25vd25DZWxsKCk7CisgICAgaWYgKG51bUNhbGxzVG9Lbm93biA8PSBudW1D
YWxsc1RvVW5rbm93bikKICAgICAgICAgcmV0dXJuIHRha2VzU2xvd1BhdGgoKTsKICAgICAKKyAg
ICBDYWxsTGlua1N0YXR1cyByZXN1bHQ7CisgICAgcmVzdWx0Lm1fZWRnZXMgPSBlZGdlUHJvZmls
ZS0+Y2FsbEVkZ2VzKCk7CisgICAgcmVzdWx0Lm1fY291bGRUYWtlU2xvd1BhdGggPSAhIW51bUNh
bGxzVG9Vbmtub3duOworICAgIHJlc3VsdC5tX2NhblRydXN0Q291bnRzID0gdHJ1ZTsKKyAgICAK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6
Y29tcHV0ZUZvcigKKyAgICBjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiBsb2NrZXIsIENhbGxM
aW5rSW5mbyYgY2FsbExpbmtJbmZvLCBFeGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhKQorewogICAg
IENhbGxMaW5rU3RhdHVzIHJlc3VsdCA9IGNvbXB1dGVGb3IobG9ja2VyLCBjYWxsTGlua0luZm8p
OwogICAgIGlmIChleGl0U2l0ZURhdGEubV9iYWRGdW5jdGlvbikKICAgICAgICAgcmVzdWx0Lm1h
a2VDbG9zdXJlQ2FsbCgpOworICAgIGlmIChleGl0U2l0ZURhdGEubV90YWtlc1Nsb3dQYXRoKQor
ICAgICAgICByZXN1bHQubV9jb3VsZFRha2VTbG93UGF0aCA9IHRydWU7CiAgICAgCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KQEAgLTI1Niw2ICsyNTIsMzEgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExp
bmtTdGF0dXM6OmNvbXB1dGVGbwogICAgIHJldHVybiBjb21wdXRlRm9yKHByb2ZpbGVkQmxvY2ss
IGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgYmFzZWxpbmVNYXApOwogfQogCitib29sIENhbGxM
aW5rU3RhdHVzOjppc0Nsb3N1cmVDYWxsKCkgY29uc3QKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSBtX2VkZ2VzLnNpemUoKTsgaS0tOykgeworICAgICAgICBpZiAobV9lZGdlc1tpXS5jYWxsZWUo
KS5pc0Nsb3N1cmVDYWxsKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
cmV0dXJuIGZhbHNlOworfQorCit2b2lkIENhbGxMaW5rU3RhdHVzOjptYWtlQ2xvc3VyZUNhbGwo
KQoreworICAgIEFTU0VSVCghbV9pc1Byb3ZlZCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9l
ZGdlcy5zaXplKCk7IGktLTspCisgICAgICAgIG1fZWRnZXNbaV0gPSBtX2VkZ2VzW2ldLmRlc3Bl
Y2lmaWVkQ2xvc3VyZSgpOworICAgIAorICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAg
ICAgIC8vIERvaW5nIHRoaXMgc2hvdWxkIG5vdCBoYXZlIGNyZWF0ZWQgZHVwbGljYXRlcywgYmVj
YXVzZSB0aGUgQ2FsbEVkZ2VQcm9maWxlCisgICAgICAgIC8vIHNob3VsZCBkZXNwZWNpZnkgY2xv
c3VyZXMgaWYgZG9pbmcgc28gd291bGQgcmVkdWNlIHRoZSBudW1iZXIgb2Yga25vd24gY2FsbGVl
cy4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZWRnZXMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IGkgKyAxOyBqIDwgbV9lZGdlcy5zaXpl
KCk7ICsraikKKyAgICAgICAgICAgICAgICBBU1NFUlQobV9lZGdlc1tpXS5jYWxsZWUoKSAhPSBt
X2VkZ2VzW2pdLmNhbGxlZSgpKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCBDYWxsTGlu
a1N0YXR1czo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIGlmICghaXNTZXQo
KSkgewpAQCAtMjcxLDE0ICsyOTIsNyBAQCB2b2lkIENhbGxMaW5rU3RhdHVzOjpkdW1wKFByaW50
U3RyZWFtJiBvCiAgICAgaWYgKG1fY291bGRUYWtlU2xvd1BhdGgpCiAgICAgICAgIG91dC5wcmlu
dChjb21tYSwgIkNvdWxkIFRha2UgU2xvdyBQYXRoIik7CiAgICAgCi0gICAgaWYgKG1fY2FsbFRh
cmdldCkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiS25vd24gdGFyZ2V0OiAiLCBtX2NhbGxU
YXJnZXQpOwotICAgIAotICAgIGlmIChtX2V4ZWN1dGFibGUpIHsKLSAgICAgICAgb3V0LnByaW50
KGNvbW1hLCAiRXhlY3V0YWJsZS9DYWxsSGFzaDogIiwgUmF3UG9pbnRlcihtX2V4ZWN1dGFibGUp
KTsKLSAgICAgICAgaWYgKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpCi0gICAgICAgICAgICBvdXQu
cHJpbnQoIi8iLCBtX2V4ZWN1dGFibGUtPmhhc2hGb3IoQ29kZUZvckNhbGwpKTsKLSAgICB9Cisg
ICAgb3V0LnByaW50KGxpc3REdW1wKG1fZWRnZXMpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlND
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0
dXMuaAkocmV2aXNpb24gMTcyODM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDkgKzQ2LDkgQEAgc3RydWN0
IENhbGxMaW5rSW5mbzsKIGNsYXNzIENhbGxMaW5rU3RhdHVzIHsKIHB1YmxpYzoKICAgICBDYWxs
TGlua1N0YXR1cygpCi0gICAgICAgIDogbV9leGVjdXRhYmxlKDApCi0gICAgICAgICwgbV9jb3Vs
ZFRha2VTbG93UGF0aChmYWxzZSkKKyAgICAgICAgOiBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNl
KQogICAgICAgICAsIG1faXNQcm92ZWQoZmFsc2UpCisgICAgICAgICwgbV9jYW5UcnVzdENvdW50
cyhmYWxzZSkKICAgICB7CiAgICAgfQogICAgIApAQCAtNjEsMTAgKzYxLDExIEBAIHB1YmxpYzoK
ICAgICAKICAgICBleHBsaWNpdCBDYWxsTGlua1N0YXR1cyhKU1ZhbHVlKTsKICAgICAKLSAgICBD
YWxsTGlua1N0YXR1cyhFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSkKLSAgICAgICAgOiBtX2V4
ZWN1dGFibGUoZXhlY3V0YWJsZSkKKyAgICBDYWxsTGlua1N0YXR1cyhDYWxsVmFyaWFudCB2YXJp
YW50KQorICAgICAgICA6IG1fZWRnZXMoMSwgQ2FsbEVkZ2UodmFyaWFudCwgMSkpCiAgICAgICAg
ICwgbV9jb3VsZFRha2VTbG93UGF0aChmYWxzZSkKICAgICAgICAgLCBtX2lzUHJvdmVkKGZhbHNl
KQorICAgICAgICAsIG1fY2FuVHJ1c3RDb3VudHMoZmFsc2UpCiAgICAgewogICAgIH0KICAgICAK
QEAgLTEwNywzNyArMTA4LDM2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMg
Y29tcHV0ZUZvcigKICAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgY29uc3QgQ2FsbExp
bmtJbmZvTWFwJiwgY29uc3QgQ29udGV4dE1hcCYpOwogICAgIAotICAgIGJvb2wgaXNTZXQoKSBj
b25zdCB7IHJldHVybiBtX2NhbGxUYXJnZXQgfHwgbV9leGVjdXRhYmxlIHx8IG1fY291bGRUYWtl
U2xvd1BhdGg7IH0KKyAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gIW1fZWRnZXMuaXNF
bXB0eSgpIHx8IG1fY291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKICAgICBib29sIG9wZXJhdG9y
ISgpIGNvbnN0IHsgcmV0dXJuICFpc1NldCgpOyB9CiAgICAgCiAgICAgYm9vbCBjb3VsZFRha2VT
bG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bGRUYWtlU2xvd1BhdGg7IH0KLSAgICBib29s
IGlzQ2xvc3VyZUNhbGwoKSBjb25zdCB7IHJldHVybiBtX2V4ZWN1dGFibGUgJiYgIW1fY2FsbFRh
cmdldDsgfQogICAgIAotICAgIEpTVmFsdWUgY2FsbFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FsbFRhcmdldDsgfQotICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uKCkgY29uc3Q7Ci0gICAgSW50
ZXJuYWxGdW5jdGlvbiogaW50ZXJuYWxGdW5jdGlvbigpIGNvbnN0OwotICAgIEludHJpbnNpYyBp
bnRyaW5zaWNGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCkgY29uc3Q7Ci0gICAgRXhlY3V0YWJs
ZUJhc2UqIGV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtX2V4ZWN1dGFibGU7IH0KKyAgICBD
YWxsRWRnZUxpc3QgZWRnZXMoKSBjb25zdCB7IHJldHVybiBtX2VkZ2VzOyB9CisgICAgdW5zaWdu
ZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWRnZXMuc2l6ZSgpOyB9CisgICAgQ2FsbEVkZ2Ug
YXQodW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV9lZGdlc1tpXTsgfQorICAgIENhbGxFZGdl
IG9wZXJhdG9yW10odW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0KICAgICBib29s
IGlzUHJvdmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1Byb3ZlZDsgfQotICAgIGJvb2wgY2FuT3B0
aW1pemUoKSBjb25zdCB7IHJldHVybiAobV9jYWxsVGFyZ2V0IHx8IG1fZXhlY3V0YWJsZSkgJiYg
IW1fY291bGRUYWtlU2xvd1BhdGg7IH0KKyAgICBib29sIGNhbk9wdGltaXplKCkgY29uc3QgeyBy
ZXR1cm4gIW1fZWRnZXMuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBjYW5UcnVzdENvdW50cygpIGNv
bnN0IHsgcmV0dXJuIG1fY2FuVHJ1c3RDb3VudHM7IH0KKyAgICAKKyAgICBib29sIGlzQ2xvc3Vy
ZUNhbGwoKSBjb25zdDsgLy8gUmV0dXJucyB0cnVlIGlmIGFueSBjYWxsZWUgaXMgYSBjbG9zdXJl
IGNhbGwuCiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgCiBw
cml2YXRlOgotICAgIHZvaWQgbWFrZUNsb3N1cmVDYWxsKCkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VCghbV9pc1Byb3ZlZCk7Ci0gICAgICAgIC8vIFR1cm4gdGhpcyBpbnRvIGEgY2xvc3VyZSBjYWxs
LgotICAgICAgICBtX2NhbGxUYXJnZXQgPSBKU1ZhbHVlKCk7Ci0gICAgfQorICAgIHZvaWQgbWFr
ZUNsb3N1cmVDYWxsKCk7CiAgICAgCiAgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVG
cm9tTExJbnQoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENvZGVCbG9jayosIHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXgpOworI2lmIEVOQUJMRShKSVQpCisgICAgc3RhdGljIENhbGxMaW5rU3Rh
dHVzIGNvbXB1dGVGcm9tQ2FsbEVkZ2VQcm9maWxlKENhbGxFZGdlUHJvZmlsZSopOworI2VuZGlm
CiAgICAgCi0gICAgSlNWYWx1ZSBtX2NhbGxUYXJnZXQ7Ci0gICAgRXhlY3V0YWJsZUJhc2UqIG1f
ZXhlY3V0YWJsZTsKKyAgICBDYWxsRWRnZUxpc3QgbV9lZGdlczsKICAgICBib29sIG1fY291bGRU
YWtlU2xvd1BhdGg7CiAgICAgYm9vbCBtX2lzUHJvdmVkOworICAgIGJvb2wgbV9jYW5UcnVzdENv
dW50czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDYWxsVmFyaWFudC5oIgorCisj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBDYWxsVmFy
aWFudDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIGlmICghKnRoaXMpIHsK
KyAgICAgICAgb3V0LnByaW50KCJudWxsIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
CisgICAgaWYgKEludGVybmFsRnVuY3Rpb24qIGludGVybmFsRnVuY3Rpb24gPSB0aGlzLT5pbnRl
cm5hbEZ1bmN0aW9uKCkpIHsKKyAgICAgICAgb3V0LnByaW50KCJJbnRlcm5hbEZ1bmN0aW9uOiAi
LCBKU1ZhbHVlKGludGVybmFsRnVuY3Rpb24pKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAKKyAgICBpZiAoSlNGdW5jdGlvbiogZnVuY3Rpb24gPSB0aGlzLT5mdW5jdGlvbigpKSB7Cisg
ICAgICAgIG91dC5wcmludCgiKEZ1bmN0aW9uOiAiLCBKU1ZhbHVlKGZ1bmN0aW9uKSwgIjsgRXhl
Y3V0YWJsZTogIiwgKmV4ZWN1dGFibGUoKSwgIikiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAKKyAgICBvdXQucHJpbnQoIkV4ZWN1dGFibGU6ICIsICpleGVjdXRhYmxlKCkpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxWYXJpYW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxWYXJpYW50LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IENhbGxWYXJpYW50X2gKKyNkZWZpbmUgQ2FsbFZhcmlhbnRfaAorCisjaW5jbHVkZSAiRXhlY3V0
YWJsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIENhbGxWYXJpYW50IHsKK3B1YmxpYzoKKyAgICBleHBs
aWNpdCBDYWxsVmFyaWFudChKU0NlbGwqIGNhbGxlZSA9IG51bGxwdHIpCisgICAgICAgIDogbV9j
YWxsZWUoY2FsbGVlKQorICAgIHsKKyAgICB9CisgICAgCisgICAgQ2FsbFZhcmlhbnQoV1RGOjpI
YXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQorICAgICAgICA6IG1fY2FsbGVlKGRlbGV0ZWRUb2tl
bigpKQorICAgIHsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJl
dHVybiAhbV9jYWxsZWU7IH0KKyAgICAKKyAgICAvLyBJZiB0aGlzIHZhcmlhbnQgcmVmZXJzIHRv
IGEgZnVuY3Rpb24sIGNoYW5nZSBpdCB0byByZWZlciB0byBpdHMgZXhlY3V0YWJsZS4KKyAgICBB
TFdBWVNfSU5MSU5FIENhbGxWYXJpYW50IGRlc3BlY2lmaWVkQ2xvc3VyZSgpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAobV9jYWxsZWUtPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICAg
ICAgICAgIHJldHVybiBDYWxsVmFyaWFudChqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2FsbGVlKS0+
ZXhlY3V0YWJsZSgpKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAgICAKKyAgICBK
U0NlbGwqIHJhd0NhbGxlZUNlbGwoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlZTsgfQorICAgIAor
ICAgIEludGVybmFsRnVuY3Rpb24qIGludGVybmFsRnVuY3Rpb24oKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KG1fY2FsbGVlKTsK
KyAgICB9CisgICAgCisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24oKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2FsbGVlKTsKKyAgICB9
CisgICAgCisgICAgYm9vbCBpc0Nsb3N1cmVDYWxsKCkgY29uc3QgeyByZXR1cm4gISFqc0R5bmFt
aWNDYXN0PEV4ZWN1dGFibGVCYXNlKj4obV9jYWxsZWUpOyB9CisgICAgCisgICAgRXhlY3V0YWJs
ZUJhc2UqIGV4ZWN1dGFibGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKEpTRnVuY3Rpb24q
IGZ1bmN0aW9uID0gdGhpcy0+ZnVuY3Rpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlv
bi0+ZXhlY3V0YWJsZSgpOworICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxFeGVjdXRhYmxl
QmFzZSo+KG1fY2FsbGVlKTsKKyAgICB9CisgICAgCisgICAgSlNDZWxsKiBub25FeGVjdXRhYmxl
Q2FsbGVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpc0Nsb3N1cmVD
YWxsKCkpOworICAgICAgICByZXR1cm4gbV9jYWxsZWU7CisgICAgfQorICAgIAorICAgIEludHJp
bnNpYyBpbnRyaW5zaWNGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKSBjb25zdAorICAg
IHsKKyAgICAgICAgaWYgKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gdGhpcy0+ZXhlY3V0
YWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIGV4ZWN1dGFibGUtPmludHJpbnNpY0ZvcihraW5k
KTsKKyAgICAgICAgcmV0dXJuIE5vSW50cmluc2ljOworICAgIH0KKyAgICAKKyAgICBGdW5jdGlv
bkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSgpIGNvbnN0CisgICAgeworICAgICAgICBp
ZiAoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSB0aGlzLT5leGVjdXRhYmxlKCkpCisgICAg
ICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRh
YmxlKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIAorICAgIHZvaWQgZHVt
cChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKKyAgICAKKyAgICBib29sIGlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NhbGxlZSA9PSBkZWxl
dGVkVG9rZW4oKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhbGxW
YXJpYW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NhbGxlZSA9PSBv
dGhlci5tX2NhbGxlZTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENh
bGxWYXJpYW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09
IG90aGVyKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgQ2FsbFZhcmlh
bnQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY2FsbGVlIDwgb3RoZXIu
bV9jYWxsZWU7CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IENhbGxWYXJp
YW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBvdGhlciA8ICp0aGlzOwor
ICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVy
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPCBvdGhlcik7CisgICAgfQor
ICAgIAorICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBDYWxsVmFyaWFudCYgb3RoZXIpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gb3RoZXIgPD0gKnRoaXM7CisgICAgfQorICAgIAorICAg
IHVuc2lnbmVkIGhhc2goKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6UHRySGFz
aDxKU0NlbGwqPjo6aGFzaChtX2NhbGxlZSk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBz
dGF0aWMgSlNDZWxsKiBkZWxldGVkVG9rZW4oKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNDZWxs
Kj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSk7IH0KKyAgICAgICAgICAgICAgICAgICAKKyAg
ICBKU0NlbGwqIG1fY2FsbGVlOworfTsKKworc3RydWN0IENhbGxWYXJpYW50SGFzaCB7CisgICAg
c3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgQ2FsbFZhcmlhbnQmIGtleSkgeyByZXR1cm4ga2V5
Lmhhc2goKTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENhbGxWYXJpYW50JiBhLCBj
b25zdCBDYWxsVmFyaWFudCYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0
IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKKwordHlwZWRl
ZiBWZWN0b3I8Q2FsbFZhcmlhbnQsIDE+IENhbGxWYXJpYW50TGlzdDsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
RGVmYXVsdEhhc2g7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6OkNhbGxWYXJp
YW50PiB7CisgICAgdHlwZWRlZiBKU0M6OkNhbGxWYXJpYW50SGFzaCBIYXNoOworfTsKKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBI
YXNoVHJhaXRzPEpTQzo6Q2FsbFZhcmlhbnQ+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6
Q2FsbFZhcmlhbnQ+IHsgfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBDYWxs
VmFyaWFudF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2lu
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRL
aW5kLmNwcAkocmV2aXNpb24gMTcyODM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0V4aXRLaW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsOCArMzgsOCBAQCBjb25zdCBj
aGFyKiBleGl0S2luZFRvU3RyaW5nKEV4aXRLaW5kIGtpCiAgICAgICAgIHJldHVybiAiVW5zZXQi
OwogICAgIGNhc2UgQmFkVHlwZToKICAgICAgICAgcmV0dXJuICJCYWRUeXBlIjsKLSAgICBjYXNl
IEJhZEZ1bmN0aW9uOgotICAgICAgICByZXR1cm4gIkJhZEZ1bmN0aW9uIjsKKyAgICBjYXNlIEJh
ZENlbGw6CisgICAgICAgIHJldHVybiAiQmFkQ2VsbCI7CiAgICAgY2FzZSBCYWRFeGVjdXRhYmxl
OgogICAgICAgICByZXR1cm4gIkJhZEV4ZWN1dGFibGUiOwogICAgIGNhc2UgQmFkQ2FjaGU6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAkocmV2aXNpb24g
MTcyODM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBlbnVtIEV4aXRL
aW5kIDogdWludDhfdCB7CiAgICAgRXhpdEtpbmRVbnNldCwKICAgICBCYWRUeXBlLCAvLyBXZSBl
eGl0ZWQgYmVjYXVzZSBhIHR5cGUgcHJlZGljdGlvbiB3YXMgd3JvbmcuCi0gICAgQmFkRnVuY3Rp
b24sIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIG1hZGUgYW4gaW5jb3JyZWN0IGFzc3VtcHRpb24g
YWJvdXQgd2hhdCBmdW5jdGlvbiB3ZSB3b3VsZCBzZWUuCisgICAgQmFkQ2VsbCwgLy8gV2UgZXhp
dGVkIGJlY2F1c2Ugd2UgbWFkZSBhbiBpbmNvcnJlY3QgYXNzdW1wdGlvbiBhYm91dCB3aGF0IGNl
bGwgd2Ugd291bGQgc2VlLiBVc3VhbGx5IHVzZWQgZm9yIGZ1bmN0aW9uIGNoZWNrcy4KICAgICBC
YWRFeGVjdXRhYmxlLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSB3ZSBtYWRlIGFuIGluY29ycmVjdCBh
c3N1bXB0aW9uIGFib3V0IHdoYXQgZXhlY3V0YWJsZSB3ZSB3b3VsZCBzZWUuCiAgICAgQmFkQ2Fj
aGUsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIGFuIGlubGluZSBjYWNoZSB3YXMgd3JvbmcuCiAgICAg
QmFkQ29uc3RhbnRDYWNoZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2UgYSBjYWNoZSBvbiBhIHdlYWsg
Y29uc3RhbnQgKHVzdWFsbHkgYSBwcm90b3R5cGUpIHdhcyB3cm9uZy4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgJKHJldmlzaW9uIDE3MjgzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ1OSwx
NCArMTQ1OSw2IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAg
ICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CiAgICAgICAgIGJyZWFrOwog
ICAgICAgICAKLSAgICBjYXNlIENoZWNrRXhlY3V0YWJsZTogewotICAgICAgICAvLyBGSVhNRTog
V2UgY291bGQgdHJhY2sgZXhlY3V0YWJsZXMgaW4gQWJzdHJhY3RWYWx1ZSwgd2hpY2ggd291bGQg
YWxsb3cgdXMgdG8gZ2V0IHJpZCBvZiB0aGVzZSBjaGVja3MKLSAgICAgICAgLy8gbW9yZSB0aG9y
b3VnaGx5LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MjAwCi0g
ICAgICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBlbGltaW5hdGUgdGhlc2UgZW50aXJlbHkgaWYgd2Ug
a25vdyB0aGUgZXhhY3QgdmFsdWUgdGhhdCBmbG93cyBpbnRvIHRoaXMuCi0gICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYyMDEKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotCiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZTogewogICAgICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gcHJvcGFnYXRlIHRoZSBzdHJ1Y3R1cmUgc2V0cyBvZiBj
b25zdGFudHMgKGkuZS4gcHJvdG90eXBlcykuCiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVl
ID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CkBAIC0xNzI2LDE2ICsxNzE4LDI5IEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIG1fc3RhdGUu
c2V0SXNWYWxpZChmYWxzZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICAgICAgCisgICAg
Y2FzZSBHZXRFeGVjdXRhYmxlOiB7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBmb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgICAg
IEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odmFsdWUp
OworICAgICAgICAgICAgaWYgKGZ1bmN0aW9uKSB7CisgICAgICAgICAgICAgICAgc2V0Q29uc3Rh
bnQobm9kZSwgKm1fZ3JhcGguZnJlZXplKGZ1bmN0aW9uLT5leGVjdXRhYmxlKCkpKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmb3JO
b2RlKG5vZGUpLnNldFR5cGUoU3BlY0NlbGxPdGhlcik7CisgICAgICAgIGJyZWFrOworICAgIH0K
ICAgICAKLSAgICBjYXNlIENoZWNrRnVuY3Rpb246IHsKKyAgICBjYXNlIENoZWNrQ2VsbDogewog
ICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsK
LSAgICAgICAgaWYgKHZhbHVlID09IG5vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkpIHsKKyAgICAg
ICAgaWYgKHZhbHVlID09IG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkpIHsKICAgICAgICAg
ICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CiAgICAgICAgICAgICBBU1NFUlQo
dmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IGZpbHRlckJ5VmFsdWUobm9kZS0+Y2hpbGQxKCksICpub2RlLT5mdW5jdGlvbigpKTsKKyAgICAg
ICAgZmlsdGVyQnlWYWx1ZShub2RlLT5jaGlsZDEoKSwgKm5vZGUtPmNlbGxPcGVyYW5kKCkpOwog
ICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAtMTkwMSw2ICsxOTA2LDcgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsKIAog
ICAgIGNhc2UgRm9yY2VPU1JFeGl0OgorICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgICAgICBt
X3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwogICAgICAgICBicmVhazsKICAgICAgICAgCkBAIC0x
OTU1LDcgKzE5NjEsOCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
CiAgICAgY2FzZSBMYXN0Tm9kZVR5cGU6CiAgICAgY2FzZSBBcml0aElNdWw6CiAgICAgY2FzZSBG
aWF0SW50NTI6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgY2Fz
ZSBCb3R0b21WYWx1ZToKKyAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG5vZGUsICJVbmV4cGVj
dGVkIG5vZGUgdHlwZSIpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFn
YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE3MjgzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM4OSw2ICszODksMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAvLyB0aGVuIC0wIGFu
ZCAwIGFyZSB0cmVhdGVkIHRoZSBzYW1lLgogICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgp
LT5tZXJnZUZsYWdzKE5vZGVCeXRlY29kZVVzZXNBc051bWJlciB8IE5vZGVCeXRlY29kZVVzZXNB
c090aGVyKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU3dpdGNo
Q2VsbDoKKyAgICAgICAgICAgICAgICAvLyBUaGVyZSBpcyBjdXJyZW50bHkgbm8gcG9pbnQgdG8g
YmVpbmcgY2xldmVyIGhlcmUgc2luY2UgdGhpcyBpcyB1c2VkIGZvciBzd2l0Y2hpbmcKKyAgICAg
ICAgICAgICAgICAvLyBvbiBvYmplY3RzLgorICAgICAgICAgICAgICAgIG1lcmdlRGVmYXVsdEZs
YWdzKG5vZGUpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMTcyODM1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgs
OSBAQCBCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrKAogewogfQogCi1CYXNpY0Jsb2NrOjp+QmFzaWNC
bG9jaygpIHsgfQorQmFzaWNCbG9jazo6fkJhc2ljQmxvY2soKQoreworfQogCiB2b2lkIEJhc2lj
QmxvY2s6OmVuc3VyZUxvY2Fscyh1bnNpZ25lZCBuZXdOdW1Mb2NhbHMpCiB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkocmV2aXNpb24gMTcyODM1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTYyLDYgKzYyLDcgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2lj
QmxvYwogICAgIE5vZGUqJiBvcGVyYXRvcltdKHNpemVfdCBpKSB7IHJldHVybiBhdChpKTsgfQog
ICAgIE5vZGUqIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIGF0KGkpOyB9CiAg
ICAgTm9kZSogbGFzdCgpIGNvbnN0IHsgcmV0dXJuIGF0KHNpemUoKSAtIDEpOyB9CisgICAgTm9k
ZSogdGFrZUxhc3QoKSB7IHJldHVybiBtX25vZGVzLnRha2VMYXN0KCk7IH0KICAgICB2b2lkIHJl
c2l6ZShzaXplX3Qgc2l6ZSkgeyBtX25vZGVzLnJlc2l6ZShzaXplKTsgfQogICAgIHZvaWQgZ3Jv
dyhzaXplX3Qgc2l6ZSkgeyBtX25vZGVzLmdyb3coc2l6ZSk7IH0KICAgICAKQEAgLTEwNiw2ICsx
MDcsMTMgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIAog
ICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKICAgICAKKyAgICB2b2lkIGRp
ZExpbmsoKQorICAgIHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIGlzTGlua2VkID0g
dHJ1ZTsKKyNlbmRpZgorICAgIH0KKyAgICAKICAgICAvLyBUaGlzIHZhbHVlIGlzIHVzZWQgaW50
ZXJuYWxseSBmb3IgYmxvY2sgbGlua2luZyBhbmQgT1NSIGVudHJ5LiBJdCBpcyBtb3N0bHkgbWVh
bmluZ2xlc3MKICAgICAvLyBmb3Igb3RoZXIgcHVycG9zZXMgZHVlIHRvIGlubGluaW5nLgogICAg
IHVuc2lnbmVkIGJ5dGVjb2RlQmVnaW47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTcyODM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUwLDYgKzUwLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCitz
dGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CisKIGNsYXNzIENvbnN0YW50QnVmZmVy
S2V5IHsKIHB1YmxpYzoKICAgICBDb25zdGFudEJ1ZmZlcktleSgpCkBAIC0xNzgsMTQgKzE4MCwy
MCBAQCBwcml2YXRlOgogICAgICAgICBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgYXJnQ291bnQsIGlu
dCByZWdpc3Rlck9mZnNldCwgQ2FsbExpbmtTdGF0dXMpOwogICAgIHZvaWQgaGFuZGxlQ2FsbChp
bnQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgdW5zaWduZWQg
aW5zdHJ1Y3Rpb25TaXplLCBpbnQgY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9m
ZnNldCk7CiAgICAgdm9pZCBoYW5kbGVDYWxsKEluc3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3As
IENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwotICAgIHZvaWQgZW1pdEZ1bmN0aW9uQ2hlY2tzKGNv
bnN0IENhbGxMaW5rU3RhdHVzJiwgTm9kZSogY2FsbFRhcmdldCwgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICB2b2lkIGVtaXRGdW5jdGlvbkNoZWNrcyhD
YWxsVmFyaWFudCwgTm9kZSogY2FsbFRhcmdldCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kKTsKKyAgICB2b2lkIHVuZG9GdW5jdGlvbkNoZWNrcyhDYWxsVmFyaWFu
dCk7CiAgICAgdm9pZCBlbWl0QXJndW1lbnRQaGFudG9tcyhpbnQgcmVnaXN0ZXJPZmZzZXQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7Cisg
ICAgdW5zaWduZWQgaW5saW5pbmdDb3N0KENhbGxWYXJpYW50LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOyAvLyBSZXR1cm4gVUlOVF9NQVgg
aWYgaXQncyBub3QgYW4gaW5saW5pbmcgY2FuZGlkYXRlLiBCeSBjb252ZW50aW9uLCBpbnRyaW5z
aWNzIGhhdmUgYSBjb3N0IG9mIDEuCiAgICAgLy8gSGFuZGxlIGlubGluaW5nLiBSZXR1cm4gdHJ1
ZSBpZiBpdCBzdWNjZWVkZWQsIGZhbHNlIGlmIHdlIG5lZWQgdG8gcGxhbnQgYSBjYWxsLgotICAg
IGJvb2wgaGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVy
YW5kLCBjb25zdCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJh
bWU6OktpbmQpOworICAgIGJvb2wgaGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUs
IGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9m
ZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0
LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCwgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbik7CisgICAgZW51bSBDYWxsZXJMaW5rYWJpbGl0eSB7IENhbGxlckRvZXNOb3Jt
YWxMaW5raW5nLCBDYWxsZXJMaW5rc01hbnVhbGx5IH07CisgICAgYm9vbCBhdHRlbXB0VG9Jbmxp
bmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcmlh
bnQsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1
bnNpZ25lZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIENhbGxlckxpbmthYmls
aXR5LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCB1bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNl
KTsKKyAgICB2b2lkIGlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRP
cGVyYW5kLCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2lu
ZCwgQ2FsbGVyTGlua2FiaWxpdHkpOworICAgIHZvaWQgY2FuY2VsTGlua2luZ0ZvckJsb2NrKElu
bGluZVN0YWNrRW50cnkqLCBCYXNpY0Jsb2NrKik7IC8vIE9ubHkgd29ya3Mgd2hlbiB0aGUgZ2l2
ZW4gYmxvY2sgaXMgdGhlIGxhc3Qgb25lIHRvIGhhdmUgYmVlbiBhZGRlZCBmb3IgdGhhdCBpbmxp
bmUgc3RhY2sgZW50cnkuCiAgICAgLy8gSGFuZGxlIGludHJpbnNpYyBmdW5jdGlvbnMuIFJldHVy
biB0cnVlIGlmIGl0IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwu
CiAgICAgYm9vbCBoYW5kbGVJbnRyaW5zaWMoaW50IHJlc3VsdE9wZXJhbmQsIEludHJpbnNpYywg
aW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3Rpb24pOwogICAgIGJvb2wgaGFuZGxlVHlwZWRBcnJheUNvbnN0cnVj
dG9yKGludCByZXN1bHRPcGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlKTsKLSAg
ICBib29sIGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihpbnQgcmVzdWx0T3BlcmFuZCwg
SW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kKTsKKyAgICBib29sIGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihpbnQgcmVz
dWx0T3BlcmFuZCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICBO
b2RlKiBoYW5kbGVQdXRCeU9mZnNldChOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyLCBQ
cm9wZXJ0eU9mZnNldCwgTm9kZSogdmFsdWUpOwogICAgIE5vZGUqIGhhbmRsZUdldEJ5T2Zmc2V0
KFNwZWN1bGF0ZWRUeXBlLCBOb2RlKiBiYXNlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmLCB1bnNpZ25l
ZCBpZGVudGlmaWVyTnVtYmVyLCBQcm9wZXJ0eU9mZnNldCwgTm9kZVR5cGUgb3AgPSBHZXRCeU9m
ZnNldCk7CiAgICAgdm9pZCBoYW5kbGVHZXRCeUlkKApAQCAtMjAwLDggKzIwOCw5IEBAIHByaXZh
dGU6CiAKICAgICBOb2RlKiBnZXRTY29wZSh1bnNpZ25lZCBza2lwQ291bnQpOwogICAgIAotICAg
IC8vIFByZXBhcmUgdG8gcGFyc2UgYSBibG9jay4KICAgICB2b2lkIHByZXBhcmVUb1BhcnNlQmxv
Y2soKTsKKyAgICB2b2lkIGNsZWFyQ2FjaGVzKCk7CisKICAgICAvLyBQYXJzZSBhIHNpbmdsZSBi
YXNpYyBibG9jayBvZiBieXRlY29kZSBpbnN0cnVjdGlvbnMuCiAgICAgYm9vbCBwYXJzZUJsb2Nr
KHVuc2lnbmVkIGxpbWl0KTsKICAgICAvLyBMaW5rIGJsb2NrIHN1Y2Nlc3NvcnMuCkBAIC0yOTYs
NiArMzA1LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICByZXR1cm4gZGVsYXllZC5l
eGVjdXRlKHRoaXMsIHNldE1vZGUpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIHByb2Nlc3NTZXRM
b2NhbFF1ZXVlKCkKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3Nl
dExvY2FsUXVldWUuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBtX3NldExvY2FsUXVldWVbaV0u
ZXhlY3V0ZSh0aGlzKTsKKyAgICAgICAgbV9zZXRMb2NhbFF1ZXVlLnJlc2l6ZSgwKTsKKyAgICB9
CiAKICAgICBOb2RlKiBzZXQoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQsIE5vZGUqIHZhbHVlLCBT
ZXRNb2RlIHNldE1vZGUgPSBOb3JtYWxTZXQpCiAgICAgewpAQCAtNjM3LDYgKzY1MywxMyBAQCBw
cml2YXRlOgogICAgICAgICAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CisgICAgCisg
ICAgdm9pZCByZW1vdmVMYXN0Tm9kZUZyb21HcmFwaChOb2RlVHlwZSBleHBlY3RlZE5vZGVUeXBl
KQorICAgIHsKKyAgICAgICAgTm9kZSogbm9kZSA9IG1fY3VycmVudEJsb2NrLT50YWtlTGFzdCgp
OworICAgICAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5vcCgpID09IGV4cGVjdGVkTm9kZVR5cGUp
OworICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CisgICAgfQogCiAgICAg
dm9pZCBhZGRWYXJBcmdDaGlsZChOb2RlKiBjaGlsZCkKICAgICB7CkBAIC02NDUsNyArNjY4LDcg
QEAgcHJpdmF0ZToKICAgICB9CiAgICAgCiAgICAgTm9kZSogYWRkQ2FsbFdpdGhvdXRTZXR0aW5n
UmVzdWx0KAotICAgICAgICBOb2RlVHlwZSBvcCwgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQs
IGludCByZWdpc3Rlck9mZnNldCwKKyAgICAgICAgTm9kZVR5cGUgb3AsIE9wSW5mbyBvcEluZm8s
IE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAgICAg
IFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiAgICAgewogICAgICAgICBhZGRWYXJBcmdDaGls
ZChjYWxsZWUpOwpAQCAtNjU3LDE1ICs2ODAsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgZm9yIChp
bnQgaSA9IDAgKyBkdW1teVRoaXNBcmd1bWVudDsgaSA8IGFyZ0NvdW50OyArK2kpCiAgICAgICAg
ICAgICBhZGRWYXJBcmdDaGlsZChnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSwgcmVn
aXN0ZXJPZmZzZXQpKSk7CiAKLSAgICAgICAgcmV0dXJuIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJn
LCBvcCwgT3BJbmZvKDApLCBPcEluZm8ocHJlZGljdGlvbikpOworICAgICAgICByZXR1cm4gYWRk
VG9HcmFwaChOb2RlOjpWYXJBcmcsIG9wLCBvcEluZm8sIE9wSW5mbyhwcmVkaWN0aW9uKSk7CiAg
ICAgfQogICAgIAogICAgIE5vZGUqIGFkZENhbGwoCi0gICAgICAgIGludCByZXN1bHQsIE5vZGVU
eXBlIG9wLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAor
ICAgICAgICBpbnQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgT3BJbmZvIG9wSW5mbywgTm9kZSogY2Fs
bGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCwKICAgICAgICAgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbikKICAgICB7CiAgICAgICAgIE5vZGUqIGNhbGwgPSBhZGRDYWxsV2l0
aG91dFNldHRpbmdSZXN1bHQoCi0gICAgICAgICAgICBvcCwgY2FsbGVlLCBhcmdDb3VudCwgcmVn
aXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOworICAgICAgICAgICAgb3AsIG9wSW5mbywgY2FsbGVl
LCBhcmdDb3VudCwgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwogICAgICAgICBWaXJ0dWFs
UmVnaXN0ZXIgcmVzdWx0UmVnKHJlc3VsdCk7CiAgICAgICAgIGlmIChyZXN1bHRSZWcuaXNWYWxp
ZCgpKQogICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHQpLCBjYWxsKTsKQEAg
LTg3MSw4ICs4OTQsNyBAQCBwcml2YXRlOgogICAgICAgICBWZWN0b3I8VW5saW5rZWRCbG9jaz4g
bV91bmxpbmtlZEJsb2NrczsKICAgICAgICAgCiAgICAgICAgIC8vIFBvdGVudGlhbCBibG9jayBs
aW5raW5nIHRhcmdldHMuIE11c3QgYmUgc29ydGVkIGJ5IGJ5dGVjb2RlQmVnaW4sIGFuZAotICAg
ICAgICAvLyBjYW5ub3QgaGF2ZSB0d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRlY29k
ZUJlZ2luLiBGb3IgdGhpcyB2ZXJ5Ci0gICAgICAgIC8vIHJlYXNvbiwgdGhpcyBpcyBub3QgZXF1
aXZhbGVudCB0byAKKyAgICAgICAgLy8gY2Fubm90IGhhdmUgdHdvIGJsb2NrcyB0aGF0IGhhdmUg
dGhlIHNhbWUgYnl0ZWNvZGVCZWdpbi4KICAgICAgICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBtX2Js
b2NrTGlua2luZ1RhcmdldHM7CiAgICAgICAgIAogICAgICAgICAvLyBJZiB0aGUgY2FsbHNpdGUn
cyBiYXNpYyBibG9jayB3YXMgc3BsaXQgaW50byB0d28sIHRoZW4gdGhpcyB3aWxsIGJlCkBAIC0x
MDI4LDUzICsxMDUwLDI3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoCiAgICAg
ICAgIC8vIE9kZGx5LCB0aGlzIGNvbmZsYXRlcyBjYWxscyB0aGF0IGhhdmVuJ3QgZXhlY3V0ZWQg
d2l0aCBjYWxscyB0aGF0IGJlaGF2ZWQgc3VmZmljaWVudGx5IHBvbHltb3JwaGljYWxseQogICAg
ICAgICAvLyB0aGF0IHdlIGNhbm5vdCBvcHRpbWl6ZSB0aGVtLgogICAgICAgICAKLSAgICAgICAg
YWRkQ2FsbChyZXN1bHQsIG9wLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOworICAgICAgICBhZGRDYWxsKHJlc3VsdCwg
b3AsIE9wSW5mbygpLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVn
aXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAog
ICAgIHVuc2lnbmVkIG5leHRPZmZzZXQgPSBtX2N1cnJlbnRJbmRleCArIGluc3RydWN0aW9uU2l6
ZTsKKyAgICAKKyAgICBPcEluZm8gY2FsbE9wSW5mbzsKIAotICAgIGlmIChJbnRlcm5hbEZ1bmN0
aW9uKiBmdW5jdGlvbiA9IGNhbGxMaW5rU3RhdHVzLmludGVybmFsRnVuY3Rpb24oKSkgewotICAg
ICAgICBpZiAoaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKHJlc3VsdCwgZnVuY3Rpb24s
IHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbiwg
c3BlY2lhbGl6YXRpb25LaW5kKSkgewotICAgICAgICAgICAgLy8gVGhpcyBwaGFudG9taW5nIGhh
cyB0byBiZSAqYWZ0ZXIqIHRoZSBjb2RlIGZvciB0aGUgaW50cmluc2ljLCB0byBzaWduaWZ5IHRo
YXQKLSAgICAgICAgICAgIC8vIHRoZSBpbnB1dHMgbXVzdCBiZSBrZXB0IGFsaXZlIHdoYXRldmVy
IGV4aXRzIHRoZSBpbnRyaW5zaWMgbWF5IGRvLgotICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFu
dG9tLCBjYWxsVGFyZ2V0KTsKLSAgICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lz
dGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5k
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8g
Q2FuIG9ubHkgaGFuZGxlIHRoaXMgdXNpbmcgdGhlIGdlbmVyaWMgY2FsbCBoYW5kbGVyLgotICAg
ICAgICBhZGRDYWxsKHJlc3VsdCwgb3AsIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgICAgIAotICAgIEludHJpbnNpYyBpbnRyaW5zaWMgPSBjYWxsTGlua1N0YXR1cy5p
bnRyaW5zaWNGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKLQotICAgIEpTRnVuY3Rpb24qIGtub3du
RnVuY3Rpb24gPSBudWxscHRyOwotICAgIGlmIChpbnRyaW5zaWMgIT0gTm9JbnRyaW5zaWMpIHsK
LSAgICAgICAgZW1pdEZ1bmN0aW9uQ2hlY2tzKGNhbGxMaW5rU3RhdHVzLCBjYWxsVGFyZ2V0LCBy
ZWdpc3Rlck9mZnNldCwgc3BlY2lhbGl6YXRpb25LaW5kKTsKLSAgICAgICAgICAgIAotICAgICAg
ICBpZiAoaGFuZGxlSW50cmluc2ljKHJlc3VsdCwgaW50cmluc2ljLCByZWdpc3Rlck9mZnNldCwg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHByZWRpY3Rpb24pKSB7Ci0gICAgICAgICAgICAv
LyBUaGlzIHBoYW50b21pbmcgaGFzIHRvIGJlICphZnRlciogdGhlIGNvZGUgZm9yIHRoZSBpbnRy
aW5zaWMsIHRvIHNpZ25pZnkgdGhhdAotICAgICAgICAgICAgLy8gdGhlIGlucHV0cyBtdXN0IGJl
IGtlcHQgYWxpdmUgd2hhdGV2ZXIgZXhpdHMgdGhlIGludHJpbnNpYyBtYXkgZG8uCi0gICAgICAg
ICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXQpOwotICAgICAgICAgICAgZW1pdEFy
Z3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LCBzcGVjaWFsaXphdGlvbktpbmQpOwotICAgICAgICAgICAgaWYgKG1fZ3JhcGguY29tcGlsYXRp
b24oKSkKLSAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5vdGljZUlubGlu
ZWRDYWxsKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYg
KGhhbmRsZUlubGluaW5nKGNhbGxUYXJnZXQsIHJlc3VsdCwgY2FsbExpbmtTdGF0dXMsIHJlZ2lz
dGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbmV4dE9mZnNldCwga2luZCkp
IHsKKyAgICBpZiAoaGFuZGxlSW5saW5pbmcoY2FsbFRhcmdldCwgcmVzdWx0LCBjYWxsTGlua1N0
YXR1cywgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zm
c2V0LCBvcCwga2luZCwgcHJlZGljdGlvbikpIHsKICAgICAgICAgaWYgKG1fZ3JhcGguY29tcGls
YXRpb24oKSkKICAgICAgICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5l
ZENhbGwoKTsKICAgICAgICAgcmV0dXJuOwogI2lmIEVOQUJMRShGVExfTkFUSVZFX0NBTExfSU5M
SU5JTkcpCi0gICAgfSBlbHNlIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSAmJiBPcHRp
b25zOjpvcHRpbWl6ZU5hdGl2ZUNhbGxzKCkpIHsKLSAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rp
b24gPSBjYWxsTGlua1N0YXR1cy5mdW5jdGlvbigpOworICAgIH0gZWxzZSBpZiAoaXNGVEwobV9n
cmFwaC5tX3BsYW4ubW9kZSkgJiYgT3B0aW9uczo6b3B0aW1pemVOYXRpdmVDYWxscygpICYmIGNh
bGxMaW5rU3RhdHVzLnNpemUoKSA9PSAxICYmICFjYWxsTGlua1N0YXR1cy5jb3VsZFRha2VTbG93
UGF0aCgpKSB7CisgICAgICAgIENhbGxWYXJpYW50IGNhbGxlZSA9IGNhbGxMaW5rU3RhdHVzWzBd
LmNhbGxlZSgpOworICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS5mdW5jdGlv
bigpOwogICAgICAgICBpZiAoZnVuY3Rpb24gJiYgZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkp
IHsKLSAgICAgICAgICAgIGVtaXRGdW5jdGlvbkNoZWNrcyhjYWxsTGlua1N0YXR1cywgY2FsbFRh
cmdldCwgcmVnaXN0ZXJPZmZzZXQsIHNwZWNpYWxpemF0aW9uS2luZCk7Ci0gICAgICAgICAgICBr
bm93bkZ1bmN0aW9uID0gZnVuY3Rpb247CisgICAgICAgICAgICBlbWl0RnVuY3Rpb25DaGVja3Mo
Y2FsbGVlLCBjYWxsVGFyZ2V0LCByZWdpc3Rlck9mZnNldCwgc3BlY2lhbGl6YXRpb25LaW5kKTsK
KyAgICAgICAgICAgIGNhbGxPcEluZm8gPSBPcEluZm8obV9ncmFwaC5mcmVlemUoZnVuY3Rpb24p
KTsKIAotICAgICAgICAgICAgaWYgKG9wID09IENhbGwpIAorICAgICAgICAgICAgaWYgKG9wID09
IENhbGwpCiAgICAgICAgICAgICAgICAgb3AgPSBOYXRpdmVDYWxsOwogICAgICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKG9wID09IENvbnN0cnVjdCk7CkBAIC0xMDgzLDEz
ICsxMDc5LDExIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoCiAgICAgICAgIH0K
ICNlbmRpZgogICAgIH0KLSAgICBOb2RlKiBjYWxsID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBjYWxs
VGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRp
Y3Rpb24pOwotCi0gICAgaWYgKGtub3duRnVuY3Rpb24pIAotICAgICAgICBjYWxsLT5naXZlS25v
d25GdW5jdGlvbihrbm93bkZ1bmN0aW9uKTsKKyAgICAKKyAgICBhZGRDYWxsKHJlc3VsdCwgb3As
IGNhbGxPcEluZm8sIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdp
c3Rlck9mZnNldCwgcHJlZGljdGlvbik7CiB9CiAKLXZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRG
dW5jdGlvbkNoZWNrcyhjb25zdCBDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsIE5vZGUq
IGNhbGxUYXJnZXQsIGludCByZWdpc3Rlck9mZnNldCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kKQordm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdEZ1bmN0aW9uQ2hlY2tzKENhbGxWYXJpYW50
IGNhbGxlZSwgTm9kZSogY2FsbFRhcmdldCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgTm9kZSogdGhpc0FyZ3VtZW50OwogICAgIGlmIChr
aW5kID09IENvZGVGb3JDYWxsKQpAQCAtMTA5NywyMCArMTA5MSwyNSBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjplbWl0RnVuY3Rpb25DaGVja3MoCiAgICAgZWxzZQogICAgICAgICB0aGlzQXJndW1l
bnQgPSAwOwogCi0gICAgaWYgKGNhbGxMaW5rU3RhdHVzLmlzUHJvdmVkKCkpIHsKLSAgICAgICAg
YWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0LCB0aGlzQXJndW1lbnQpOwotICAgICAgICBy
ZXR1cm47CisgICAgSlNDZWxsKiBjYWxsZWVDZWxsOworICAgIE5vZGUqIGNhbGxUYXJnZXRGb3JD
aGVjazsKKyAgICBpZiAoY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSkgeworICAgICAgICBjYWxsZWVD
ZWxsID0gY2FsbGVlLmV4ZWN1dGFibGUoKTsKKyAgICAgICAgY2FsbFRhcmdldEZvckNoZWNrID0g
YWRkVG9HcmFwaChHZXRFeGVjdXRhYmxlLCBjYWxsVGFyZ2V0KTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBjYWxsZWVDZWxsID0gY2FsbGVlLm5vbkV4ZWN1dGFibGVDYWxsZWUoKTsKKyAgICAgICAg
Y2FsbFRhcmdldEZvckNoZWNrID0gY2FsbFRhcmdldDsKICAgICB9CiAgICAgCi0gICAgQVNTRVJU
KGNhbGxMaW5rU3RhdHVzLmNhbk9wdGltaXplKCkpOwotICAgIAotICAgIGlmIChKU0Z1bmN0aW9u
KiBmdW5jdGlvbiA9IGNhbGxMaW5rU3RhdHVzLmZ1bmN0aW9uKCkpCi0gICAgICAgIGFkZFRvR3Jh
cGgoQ2hlY2tGdW5jdGlvbiwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKGZ1bmN0aW9uKSksIGNhbGxU
YXJnZXQsIHRoaXNBcmd1bWVudCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChjYWxsTGlu
a1N0YXR1cy5leGVjdXRhYmxlKCkpOwotICAgICAgICAKLSAgICAgICAgYWRkVG9HcmFwaChDaGVj
a0V4ZWN1dGFibGUsIE9wSW5mbyhjYWxsTGlua1N0YXR1cy5leGVjdXRhYmxlKCkpLCBjYWxsVGFy
Z2V0LCB0aGlzQXJndW1lbnQpOwotICAgIH0KKyAgICBBU1NFUlQoY2FsbGVlQ2VsbCk7CisgICAg
YWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShjYWxsZWVDZWxsKSks
IGNhbGxUYXJnZXRGb3JDaGVjaywgdGhpc0FyZ3VtZW50KTsKK30KKwordm9pZCBCeXRlQ29kZVBh
cnNlcjo6dW5kb0Z1bmN0aW9uQ2hlY2tzKENhbGxWYXJpYW50IGNhbGxlZSkKK3sKKyAgICByZW1v
dmVMYXN0Tm9kZUZyb21HcmFwaChDaGVja0NlbGwpOworICAgIGlmIChjYWxsZWUuaXNDbG9zdXJl
Q2FsbCgpKQorICAgICAgICByZW1vdmVMYXN0Tm9kZUZyb21HcmFwaChHZXRFeGVjdXRhYmxlKTsK
IH0KIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdEFyZ3VtZW50UGhhbnRvbXMoaW50IHJlZ2lz
dGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCkKQEAgLTExMTksMzYgKzExMTgsMjUgQEAgdm9pZCBCeXRlQ29kZVBhcnNl
cjo6ZW1pdEFyZ3VtZW50UGhhbnRvbQogICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGdldCh2
aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpLCByZWdpc3Rlck9mZnNldCkpKTsKIH0KIAotYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIGlu
dCByZXN1bHRPcGVyYW5kLCBjb25zdCBDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsIGlu
dCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25l
ZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCkKK3Vuc2lnbmVkIEJ5dGVD
b2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKLSAgICBz
dGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Ci0gICAgCi0gICAgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxp
emF0aW9uS2luZEZvcihraW5kKTsKLSAgICAKICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgZGF0
YUxvZygiQ29uc2lkZXJpbmcgaW5saW5pbmcgIiwgY2FsbExpbmtTdGF0dXMsICIgaW50byAiLCBj
dXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKKyAgICAgICAgZGF0YUxvZygiQ29uc2lkZXJpbmcg
aW5saW5pbmcgIiwgY2FsbGVlLCAiIGludG8gIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7
CiAgICAgCi0gICAgLy8gRmlyc3QsIHRoZSByZWFsbHkgc2ltcGxlIGNoZWNrczogZG8gd2UgaGF2
ZSBhbiBhY3R1YWwgSlMgZnVuY3Rpb24/Ci0gICAgaWYgKCFjYWxsTGlua1N0YXR1cy5leGVjdXRh
YmxlKCkpIHsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjYWxsZWUuZnVu
Y3Rpb25FeGVjdXRhYmxlKCk7CisgICAgaWYgKCFleGVjdXRhYmxlKSB7CiAgICAgICAgIGlmICh2
ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSB0aGVyZSBp
cyBubyBleGVjdXRhYmxlLlxuIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAg
aWYgKGNhbGxMaW5rU3RhdHVzLmV4ZWN1dGFibGUoKS0+aXNIb3N0RnVuY3Rpb24oKSkgewotICAg
ICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1
c2UgaXQncyBhIGhvc3QgZnVuY3Rpb24uXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSB0aGVyZSBpcyBubyBmdW5jdGlv
biBleGVjdXRhYmxlLiIpOworICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQogICAgIAot
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1
dGFibGUqPihjYWxsTGlua1N0YXR1cy5leGVjdXRhYmxlKCkpOwotICAgIAogICAgIC8vIERvZXMg
dGhlIG51bWJlciBvZiBhcmd1bWVudHMgd2UncmUgcGFzc2luZyBtYXRjaCB0aGUgYXJpdHkgb2Yg
dGhlIHRhcmdldD8gV2UgY3VycmVudGx5CiAgICAgLy8gaW5saW5lIG9ubHkgaWYgdGhlIG51bWJl
ciBvZiBhcmd1bWVudHMgcGFzc2VkIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbnVt
YmVyCiAgICAgLy8gYXJndW1lbnRzIGV4cGVjdGVkLgogICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+
KGV4ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCkpICsgMSA+IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAg
IEZhaWxpbmcgYmVjYXVzZSBvZiBhcml0eSBtaXNtYXRjaC5cbiIpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CiAgICAgCiAgICAgLy8gRG8g
d2UgaGF2ZSBhIGNvZGUgYmxvY2ssIGFuZCBkb2VzIHRoZSBjb2RlIGJsb2NrJ3Mgc2l6ZSBtYXRj
aCB0aGUgaGV1cmlzdGljcy9yZXF1aXJlbWVudHMgZm9yCkBAIC0xMTU3LDE4ICsxMTQ1LDE4IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAvLyBpZiB3ZSBo
YWQgYSBzdGF0aWMgcHJvb2Ygb2Ygd2hhdCB3YXMgYmVpbmcgY2FsbGVkOyB0aGlzIG1pZ2h0IGhh
cHBlbiBmb3IgZXhhbXBsZSBpZiB5b3UgY2FsbCBhCiAgICAgLy8gZ2xvYmFsIGZ1bmN0aW9uLCB3
aGVyZSB3YXRjaHBvaW50aW5nIGdpdmVzIHVzIHN0YXRpYyBpbmZvcm1hdGlvbi4gT3ZlcmFsbCwg
aXQncyBhIHJhcmUgY2FzZQogICAgIC8vIGJlY2F1c2Ugd2UgZXhwZWN0IHRoYXQgYW55IGhvdCBj
YWxsZWVzIHdvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNvbXBpbGVkLgotICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gZXhlY3V0YWJsZS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Ioc3BlY2lhbGl6YXRp
b25LaW5kKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmJhc2VsaW5l
Q29kZUJsb2NrRm9yKGtpbmQpOwogICAgIGlmICghY29kZUJsb2NrKSB7CiAgICAgICAgIGlmICh2
ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSBubyBjb2Rl
IGJsb2NrIGF2YWlsYWJsZS5cbiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJl
dHVybiBVSU5UX01BWDsKICAgICB9CiAgICAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZl
bCA9IGlubGluZUZ1bmN0aW9uRm9yQ2FwYWJpbGl0eUxldmVsKAotICAgICAgICBjb2RlQmxvY2ss
IHNwZWNpYWxpemF0aW9uS2luZCwgY2FsbExpbmtTdGF0dXMuaXNDbG9zdXJlQ2FsbCgpKTsKKyAg
ICAgICAgY29kZUJsb2NrLCBraW5kLCBjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKTsKICAgICBpZiAo
IWNhbklubGluZShjYXBhYmlsaXR5TGV2ZWwpKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAg
ICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSB0aGUgZnVuY3Rpb24gaXMgbm90
IGlubGluZWFibGUuXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4g
VUlOVF9NQVg7CiAgICAgfQogICAgIAogICAgIC8vIENoZWNrIGlmIHRoZSBjYWxsZXIgaXMgYWxy
ZWFkeSB0b28gbGFyZ2UuIFdlIGRvIHRoaXMgY2hlY2sgaGVyZSBiZWNhdXNlIHRoYXQncyBqdXN0
CkBAIC0xMTc4LDcgKzExNjYsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmlu
ZyhOb2RlCiAgICAgICAgIGNvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxz
ZTsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGlu
ZyBiZWNhdXNlIHRoZSBjYWxsZXIgaXMgdG9vIGxhcmdlLlxuIik7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgIH0KICAgICAKICAgICAvLyBGSVhN
RTogdGhpcyBzaG91bGQgYmUgYmV0dGVyIGF0IHByZWRpY3RpbmcgaG93IG11Y2ggYmxvYXQgd2Ug
d2lsbCBpbnRyb2R1Y2UgYnkgaW5saW5pbmcKQEAgLTExOTcsNyArMTE4NSw3IEBAIGJvb2wgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAgICAgaWYgKGRlcHRoID49IE9w
dGlvbnM6Om1heGltdW1JbmxpbmluZ0RlcHRoKCkpIHsKICAgICAgICAgICAgIGlmICh2ZXJib3Nl
KQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgZGVwdGggZXhj
ZWVkZWQuXG4iKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVy
biBVSU5UX01BWDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGVudHJ5LT5leGVj
dXRhYmxlKCkgPT0gZXhlY3V0YWJsZSkgewpAQCAtMTIwNSwxOSArMTE5MywyNiBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgICAgICAgICBpZiAocmVjdXJz
aW9uID49IE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ1JlY3Vyc2lvbigpKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWls
aW5nIGJlY2F1c2UgcmVjdXJzaW9uIGRldGVjdGVkLlxuIik7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KICAgICAKICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgZGF0
YUxvZygiICAgIENvbW1pdHRpbmcgdG8gaW5saW5pbmcuXG4iKTsKKyAgICAgICAgZGF0YUxvZygi
ICAgIElubGluaW5nIHNob3VsZCBiZSBwb3NzaWJsZS5cbiIpOwogICAgIAotICAgIC8vIE5vdyB3
ZSBrbm93IHdpdGhvdXQgYSBkb3VidCB0aGF0IHdlIGFyZSBjb21taXR0ZWQgdG8gaW5saW5pbmcu
IFNvIGJlZ2luIHRoZSBwcm9jZXNzCi0gICAgLy8gYnkgY2hlY2tpbmcgdGhlIGNhbGxlZSAoaWYg
bmVjZXNzYXJ5KSBhbmQgbWFraW5nIHN1cmUgdGhhdCBhcmd1bWVudHMgYW5kIHRoZSBjYWxsZWUK
LSAgICAvLyBhcmUgZmx1c2hlZC4KLSAgICBlbWl0RnVuY3Rpb25DaGVja3MoY2FsbExpbmtTdGF0
dXMsIGNhbGxUYXJnZXROb2RlLCByZWdpc3Rlck9mZnNldCwgc3BlY2lhbGl6YXRpb25LaW5kKTsK
KyAgICAvLyBJdCBtaWdodCBiZSBwb3NzaWJsZSB0byBpbmxpbmUuCisgICAgcmV0dXJuIGNvZGVC
bG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpOworfQorCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxp
bmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcmlh
bnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIENh
bGxlckxpbmthYmlsaXR5IGNhbGxlckxpbmthYmlsaXR5KQoreworICAgIENvZGVTcGVjaWFsaXph
dGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXph
dGlvbktpbmRGb3Ioa2luZCk7CiAgICAgCisgICAgQVNTRVJUKGlubGluaW5nQ29zdChjYWxsZWUs
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQpICE9IFVJTlRf
TUFYKTsKKyAgICAKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxlZS5mdW5jdGlvbkV4
ZWN1dGFibGUoKS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKKwog
ICAgIC8vIEZJWE1FOiBEb24ndCBmbHVzaCBjb25zdGFudHMhCiAgICAgCiAgICAgaW50IGlubGlu
ZUNhbGxGcmFtZVN0YXJ0ID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKFZpcnR1YWxS
ZWdpc3RlcihyZWdpc3Rlck9mZnNldCkpLm9mZnNldCgpICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVh
ZGVyU2l6ZTsKQEAgLTEyMzMsNyArMTIyOCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUlubGluaW5nKE5vZGUKICAgICAgICAgcmVzdWx0UmVnID0gbV9pbmxpbmVTdGFja1RvcC0+cmVt
YXBPcGVyYW5kKHJlc3VsdFJlZyk7CiAgICAgCiAgICAgSW5saW5lU3RhY2tFbnRyeSBpbmxpbmVT
dGFja0VudHJ5KAotICAgICAgICB0aGlzLCBjb2RlQmxvY2ssIGNvZGVCbG9jaywgbV9ncmFwaC5s
YXN0QmxvY2soKSwgY2FsbExpbmtTdGF0dXMuZnVuY3Rpb24oKSwgcmVzdWx0UmVnLAorICAgICAg
ICB0aGlzLCBjb2RlQmxvY2ssIGNvZGVCbG9jaywgbV9ncmFwaC5sYXN0QmxvY2soKSwgY2FsbGVl
LmZ1bmN0aW9uKCksIHJlc3VsdFJlZywKICAgICAgICAgKFZpcnR1YWxSZWdpc3RlcilpbmxpbmVD
YWxsRnJhbWVTdGFydCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGtpbmQpOwogICAgIAog
ICAgIC8vIFRoaXMgaXMgd2hlcmUgdGhlIGFjdHVhbCBpbmxpbmluZyByZWFsbHkgaGFwcGVucy4K
QEAgLTEyNDcsOCArMTI0Miw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5n
KE5vZGUKICAgICAKICAgICBSRUxFQVNFX0FTU0VSVCgKICAgICAgICAgbV9pbmxpbmVTdGFja1Rv
cC0+bV9pbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwKLSAgICAgICAgPT0gY2FsbExpbmtT
dGF0dXMuaXNDbG9zdXJlQ2FsbCgpKTsKLSAgICBpZiAoY2FsbExpbmtTdGF0dXMuaXNDbG9zdXJl
Q2FsbCgpKSB7CisgICAgICAgID09IGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpOworICAgIGlmIChj
YWxsZWUuaXNDbG9zdXJlQ2FsbCgpKSB7CiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogY2Fs
bGVlVmFyaWFibGUgPQogICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihKU1N0YWNrOjpD
YWxsZWUpLCBjYWxsVGFyZ2V0Tm9kZSwgSW1tZWRpYXRlTmFrZWRTZXQpLT52YXJpYWJsZUFjY2Vz
c0RhdGEoKTsKICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBzY29wZVZhcmlhYmxlID0KQEAg
LTEyNjMsNyArMTI1OCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5v
ZGUKICAgICBtX2dyYXBoLm1faW5saW5lVmFyaWFibGVEYXRhLmFwcGVuZChpbmxpbmVWYXJpYWJs
ZURhdGEpOwogICAgIAogICAgIHBhcnNlQ29kZUJsb2NrKCk7Ci0gICAgcHJlcGFyZVRvUGFyc2VC
bG9jaygpOyAvLyBSZXNldCBvdXIgc3RhdGUgbm93IHRoYXQgd2UncmUgYmFjayB0byB0aGUgb3V0
ZXIgY29kZS4KKyAgICBjbGVhckNhY2hlcygpOyAvLyBSZXNldCBvdXIgc3RhdGUgbm93IHRoYXQg
d2UncmUgYmFjayB0byB0aGUgb3V0ZXIgY29kZS4KICAgICAKICAgICBtX2N1cnJlbnRJbmRleCA9
IG9sZEluZGV4OwogICAgIApAQCAtMTI3NiwyMCArMTI3MSw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAgICAgZWxzZQogICAgICAgICAgICAgQVNTRVJU
KGlubGluZVN0YWNrRW50cnkubV9jYWxsc2l0ZUJsb2NrSGVhZC0+aXNMaW5rZWQpOwogICAgICAg
ICAKLSAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHRoZSBjYWxsc2l0ZSBibG9jayBoZWFk
IGlzIG5vdCBvd25lZCBieSB0aGUgY2FsbGVyLgotICAgICAgICBpZiAoIWlubGluZVN0YWNrRW50
cnkubV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAv
LyBJdCdzIGRlZmluaXRlbHkgb3duZWQgYnkgdGhlIGNhbGxlciwgYmVjYXVzZSB0aGUgY2FsbGVy
IGNyZWF0ZWQgbmV3IGJsb2Nrcy4KLSAgICAgICAgICAgIC8vIEFzc2VydCB0aGF0IHRoaXMgYWxs
IGFkZHMgdXAuCi0gICAgICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+
bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9ibG9jayA9PSBpbmxpbmVTdGFja0VudHJ5Lm1fY2Fs
bHNpdGVCbG9ja0hlYWQpOwotICAgICAgICAgICAgQVNTRVJUKGlubGluZVN0YWNrRW50cnkubV9j
YWxsZXItPm1fdW5saW5rZWRCbG9ja3MubGFzdCgpLm1fbmVlZHNOb3JtYWxMaW5raW5nKTsKLSAg
ICAgICAgICAgIGlubGluZVN0YWNrRW50cnkubV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MubGFz
dCgpLm1fbmVlZHNOb3JtYWxMaW5raW5nID0gZmFsc2U7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAvLyBJdCdzIGRlZmluaXRlbHkgbm90IG93bmVkIGJ5IHRoZSBjYWxsZXIuIFRlbGwg
dGhlIGNhbGxlciB0aGF0IGhlIGRvZXMgbm90Ci0gICAgICAgICAgICAvLyBuZWVkIHRvIGxpbmsg
aGlzIGNhbGxzaXRlIGJsb2NrIGhlYWQsIGJlY2F1c2Ugd2UgZGlkIGl0IGZvciBoaW0uCi0gICAg
ICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+bV9jYWxsc2l0ZUJsb2Nr
SGVhZE5lZWRzTGlua2luZyk7Ci0gICAgICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS5t
X2NhbGxlci0+bV9jYWxsc2l0ZUJsb2NrSGVhZCA9PSBpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbHNp
dGVCbG9ja0hlYWQpOwotICAgICAgICAgICAgaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+bV9j
YWxsc2l0ZUJsb2NrSGVhZE5lZWRzTGlua2luZyA9IGZhbHNlOwotICAgICAgICB9CisgICAgICAg
IGlmIChjYWxsZXJMaW5rYWJpbGl0eSA9PSBDYWxsZXJEb2VzTm9ybWFsTGlua2luZykKKyAgICAg
ICAgICAgIGNhbmNlbExpbmtpbmdGb3JCbG9jayhpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLCBp
bmxpbmVTdGFja0VudHJ5Lm1fY2FsbHNpdGVCbG9ja0hlYWQpOwogICAgICAgICAKICAgICAgICAg
bGlua0Jsb2NrcyhpbmxpbmVTdGFja0VudHJ5Lm1fdW5saW5rZWRCbG9ja3MsIGlubGluZVN0YWNr
RW50cnkubV9ibG9ja0xpbmtpbmdUYXJnZXRzKTsKICAgICB9IGVsc2UKQEAgLTEzMDgsMTYgKzEy
OTEsMTkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgICAg
ICAgICAgLy8gZm9yIHJlbGVhc2UgYnVpbGRzIGJlY2F1c2UgdGhpcyBibG9jayB3aWxsIG5ldmVy
IHNlcnZlIGFzIGEgcG90ZW50aWFsIHRhcmdldAogICAgICAgICAgICAgLy8gaW4gdGhlIGxpbmtl
cidzIGJpbmFyeSBzZWFyY2guCiAgICAgICAgICAgICBsYXN0QmxvY2stPmJ5dGVjb2RlQmVnaW4g
PSBtX2N1cnJlbnRJbmRleDsKLSAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVy
LT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKG1fZ3JhcGgubGFzdEJsb2Nr
KCkpKTsKKyAgICAgICAgICAgIGlmIChjYWxsZXJMaW5rYWJpbGl0eSA9PSBDYWxsZXJEb2VzTm9y
bWFsTGlua2luZykgeworICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCJBZGRpbmcgdW5saW5rZWQgYmxvY2sgIiwgUmF3UG9pbnRlcihtX2dy
YXBoLmxhc3RCbG9jaygpKSwgIiAob25lIHJldHVybilcbiIpOworICAgICAgICAgICAgICAgIG1f
aW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtl
ZEJsb2NrKG1fZ3JhcGgubGFzdEJsb2NrKCkpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBtX2dyYXBoLmxhc3RCbG9jaygpOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAgICAv
LyBJZiB3ZSBnZXQgdG8gdGhpcyBwb2ludCB0aGVuIGFsbCBibG9ja3MgbXVzdCBlbmQgaW4gc29t
ZSBzb3J0IG9mIHRlcm1pbmFscy4KICAgICBBU1NFUlQobGFzdEJsb2NrLT5sYXN0KCktPmlzVGVy
bWluYWwoKSk7Ci0gICAgCiAKICAgICAvLyBOZWVkIHRvIGNyZWF0ZSBhIG5ldyBiYXNpYyBibG9j
ayBmb3IgdGhlIGNvbnRpbnVhdGlvbiBhdCB0aGUgY2FsbGVyLgogICAgIFJlZlB0cjxCYXNpY0Js
b2NrPiBibG9jayA9IGFkb3B0UmVmKG5ldyBCYXNpY0Jsb2NrKG5leHRPZmZzZXQsIG1fbnVtQXJn
dW1lbnRzLCBtX251bUxvY2FscywgUE5hTikpOwpAQCAtMTMzMywyMCArMTMxOSwyOTMgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgICAgICBBU1NFUlQoIW5v
ZGUtPnRhcmdldEJsb2NrKCkpOwogICAgICAgICBub2RlLT50YXJnZXRCbG9jaygpID0gYmxvY2su
Z2V0KCk7CiAgICAgICAgIGlubGluZVN0YWNrRW50cnkubV91bmxpbmtlZEJsb2Nrc1tpXS5tX25l
ZWRzRWFybHlSZXR1cm5MaW5raW5nID0gZmFsc2U7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAg
ICAgICBibG9ja1RvTGluay0+aXNMaW5rZWQgPSB0cnVlOwotI2VuZGlmCisgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgZGF0YUxvZygiTWFya2luZyAiLCBSYXdQb2ludGVyKGJsb2Nr
VG9MaW5rKSwgIiBhcyBsaW5rZWQgKGp1bXBzIHRvIHJldHVybilcbiIpOworICAgICAgICBibG9j
a1RvTGluay0+ZGlkTGluaygpOwogICAgIH0KICAgICAKICAgICBtX2N1cnJlbnRCbG9jayA9IGJs
b2NrLmdldCgpOwogICAgIEFTU0VSVChtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9j
a0xpbmtpbmdUYXJnZXRzLmlzRW1wdHkoKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+
bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmxhc3QoKS0+Ynl0ZWNvZGVCZWdpbiA8IG5leHRPZmZzZXQp
OwotICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tzLmFwcGVu
ZChVbmxpbmtlZEJsb2NrKGJsb2NrLmdldCgpKSk7Ci0gICAgbV9pbmxpbmVTdGFja1RvcC0+bV9j
YWxsZXItPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5hcHBlbmQoYmxvY2suZ2V0KCkpOworICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJBZGRpbmcgdW5saW5rZWQgYmxvY2sgIiwgUmF3
UG9pbnRlcihibG9jay5nZXQoKSksICIgKG1hbnkgcmV0dXJucylcbiIpOworICAgIGlmIChjYWxs
ZXJMaW5rYWJpbGl0eSA9PSBDYWxsZXJEb2VzTm9ybWFsTGlua2luZykgeworICAgICAgICBtX2lu
bGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5hcHBlbmQoVW5saW5rZWRC
bG9jayhibG9jay5nZXQoKSkpOworICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+
bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9jay5nZXQoKSk7CisgICAgfQogICAgIG1f
Z3JhcGguYXBwZW5kQmxvY2soYmxvY2spOwogICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKK30K
Kwordm9pZCBCeXRlQ29kZVBhcnNlcjo6Y2FuY2VsTGlua2luZ0ZvckJsb2NrKElubGluZVN0YWNr
RW50cnkqIGlubGluZVN0YWNrRW50cnksIEJhc2ljQmxvY2sqIGJsb2NrKQoreworICAgIC8vIEl0
J3MgcG9zc2libGUgdGhhdCB0aGUgY2FsbHNpdGUgYmxvY2sgaGVhZCBpcyBub3Qgb3duZWQgYnkg
dGhlIGNhbGxlci4KKyAgICBpZiAoIWlubGluZVN0YWNrRW50cnktPm1fdW5saW5rZWRCbG9ja3Mu
aXNFbXB0eSgpKSB7CisgICAgICAgIC8vIEl0J3MgZGVmaW5pdGVseSBvd25lZCBieSB0aGUgY2Fs
bGVyLCBiZWNhdXNlIHRoZSBjYWxsZXIgY3JlYXRlZCBuZXcgYmxvY2tzLgorICAgICAgICAvLyBB
c3NlcnQgdGhhdCB0aGlzIGFsbCBhZGRzIHVwLgorICAgICAgICBBU1NFUlRfVU5VU0VEKGJsb2Nr
LCBpbmxpbmVTdGFja0VudHJ5LT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX2Jsb2NrID09IGJs
b2NrKTsKKyAgICAgICAgQVNTRVJUKGlubGluZVN0YWNrRW50cnktPm1fdW5saW5rZWRCbG9ja3Mu
bGFzdCgpLm1fbmVlZHNOb3JtYWxMaW5raW5nKTsKKyAgICAgICAgaW5saW5lU3RhY2tFbnRyeS0+
bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9uZWVkc05vcm1hbExpbmtpbmcgPSBmYWxzZTsKKyAg
ICB9IGVsc2UgeworICAgICAgICAvLyBJdCdzIGRlZmluaXRlbHkgbm90IG93bmVkIGJ5IHRoZSBj
YWxsZXIuIFRlbGwgdGhlIGNhbGxlciB0aGF0IGhlIGRvZXMgbm90CisgICAgICAgIC8vIG5lZWQg
dG8gbGluayBoaXMgY2FsbHNpdGUgYmxvY2sgaGVhZCwgYmVjYXVzZSB3ZSBkaWQgaXQgZm9yIGhp
bS4KKyAgICAgICAgQVNTRVJUKGlubGluZVN0YWNrRW50cnktPm1fY2FsbHNpdGVCbG9ja0hlYWRO
ZWVkc0xpbmtpbmcpOworICAgICAgICBBU1NFUlRfVU5VU0VEKGJsb2NrLCBpbmxpbmVTdGFja0Vu
dHJ5LT5tX2NhbGxzaXRlQmxvY2tIZWFkID09IGJsb2NrKTsKKyAgICAgICAgaW5saW5lU3RhY2tF
bnRyeS0+bV9jYWxsc2l0ZUJsb2NrSGVhZE5lZWRzTGlua2luZyA9IGZhbHNlOworICAgIH0KK30K
KworYm9vbCBCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRvSW5saW5lQ2FsbChOb2RlKiBjYWxsVGFy
Z2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENhbGxWYXJpYW50IGNhbGxlZSwgaW50IHJlZ2lz
dGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRP
ZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBDYWxsZXJMaW5rYWJpbGl0eSBjYWxs
ZXJMaW5rYWJpbGl0eSwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGlu
aW5nQmFsYW5jZSkKK3sKKyAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9u
S2luZCA9IElubGluZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOworICAg
IAorICAgIGlmICghaW5saW5pbmdCYWxhbmNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
CisgICAgaWYgKEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLmludGVybmFsRnVu
Y3Rpb24oKSkgeworICAgICAgICBpZiAoaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKHJl
c3VsdE9wZXJhbmQsIGZ1bmN0aW9uLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCkpIHsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgo
UGhhbnRvbSwgY2FsbFRhcmdldE5vZGUpOworICAgICAgICAgICAgZW1pdEFyZ3VtZW50UGhhbnRv
bXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXph
dGlvbktpbmQpOworICAgICAgICAgICAgaW5saW5pbmdCYWxhbmNlLS07CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAg
IAotICAgIC8vIEF0IHRoaXMgcG9pbnQgd2UgcmV0dXJuIGFuZCBjb250aW51ZSB0byBnZW5lcmF0
ZSBjb2RlIGZvciB0aGUgY2FsbGVyLCBidXQKLSAgICAvLyBpbiB0aGUgbmV3IGJhc2ljIGJsb2Nr
LgorICAgIEludHJpbnNpYyBpbnRyaW5zaWMgPSBjYWxsZWUuaW50cmluc2ljRm9yKHNwZWNpYWxp
emF0aW9uS2luZCk7CisgICAgaWYgKGludHJpbnNpYyAhPSBOb0ludHJpbnNpYykgeworICAgICAg
ICBpZiAoaGFuZGxlSW50cmluc2ljKHJlc3VsdE9wZXJhbmQsIGludHJpbnNpYywgcmVnaXN0ZXJP
ZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBwcmVkaWN0aW9uKSkgeworICAgICAg
ICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0Tm9kZSk7CisgICAgICAgICAgICBl
bWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgICAgICAgICBpbmxpbmluZ0JhbGFuY2Ut
LTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgbXlJbmxpbmluZ0Nvc3QgPSBpbmxpbmlu
Z0Nvc3QoY2FsbGVlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25L
aW5kKTsKKyAgICBpZiAobXlJbmxpbmluZ0Nvc3QgPiBpbmxpbmluZ0JhbGFuY2UpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpbmxpbmVDYWxsKGNhbGxUYXJnZXROb2RlLCByZXN1
bHRPcGVyYW5kLCBjYWxsZWUsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgbmV4dE9mZnNldCwga2luZCwgY2FsbGVyTGlua2FiaWxpdHkpOworICAgIGlubGluaW5n
QmFsYW5jZSAtPSBteUlubGluaW5nQ29zdDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCBy
ZXN1bHRPcGVyYW5kLCBjb25zdCBDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsIGludCBy
ZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBu
ZXh0T2Zmc2V0LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBT
cGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQoreworICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAg
IGRhdGFMb2coIkhhbmRsaW5nIGlubGluaW5nLi4uXG4iKTsKKyAgICAgICAgZGF0YUxvZygiU3Rh
Y2s6ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOworICAgIH0KKyAgICBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCA9IElubGluZUNhbGxGcmFtZTo6c3BlY2lh
bGl6YXRpb25LaW5kRm9yKGtpbmQpOworICAgIAorICAgIGlmICghY2FsbExpbmtTdGF0dXMuc2l6
ZSgpKSB7CisgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgZGF0YUxvZygiQmFpbGlu
ZyBpbmxpbmluZy5cbiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAg
IHVuc2lnbmVkIGlubGluaW5nQmFsYW5jZSA9IE9wdGlvbnM6Om1heGltdW1GdW5jdGlvbkZvckNh
bGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCk7CisgICAgaWYgKHNwZWNpYWxpemF0
aW9uS2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KQorICAgICAgICBpbmxpbmluZ0JhbGFuY2UgPSBz
dGQ6Om1pbihpbmxpbmluZ0JhbGFuY2UsIE9wdGlvbnM6Om1heGltdW1GdW5jdGlvbkZvckNvbnN0
cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKSk7CisgICAgaWYgKGNhbGxMaW5r
U3RhdHVzLmlzQ2xvc3VyZUNhbGwoKSkKKyAgICAgICAgaW5saW5pbmdCYWxhbmNlID0gc3RkOjpt
aW4oaW5saW5pbmdCYWxhbmNlLCBPcHRpb25zOjptYXhpbXVtRnVuY3Rpb25Gb3JDbG9zdXJlQ2Fs
bElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKSk7CisgICAgCisgICAgLy8gRmlyc3Qg
Y2hlY2sgaWYgd2UgY2FuIGF2b2lkIGNyZWF0aW5nIGNvbnRyb2wgZmxvdy4gT3VyIGlubGluZXIg
ZG9lcyBzb21lIENGRworICAgIC8vIHNpbXBsaWZpY2F0aW9uIG9uIHRoZSBmbHkgYW5kIHRoaXMg
aGVscHMgcmVkdWNlIGNvbXBpbGUgdGltZXMsIGJ1dCB3ZSBjYW4gb25seSBsZXZlcmFnZQorICAg
IC8vIHRoaXMgaW4gY2FzZXMgd2hlcmUgd2UgZG9uJ3QgbmVlZCBjb250cm9sIGZsb3cgZGlhbW9u
ZHMgdG8gY2hlY2sgdGhlIGNhbGxlZS4KKyAgICBpZiAoIWNhbGxMaW5rU3RhdHVzLmNvdWxkVGFr
ZVNsb3dQYXRoKCkgJiYgY2FsbExpbmtTdGF0dXMuc2l6ZSgpID09IDEpIHsKKyAgICAgICAgZW1p
dEZ1bmN0aW9uQ2hlY2tzKAorICAgICAgICAgICAgY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVlKCks
IGNhbGxUYXJnZXROb2RlLCByZWdpc3Rlck9mZnNldCwgc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAg
ICAgICAgYm9vbCByZXN1bHQgPSBhdHRlbXB0VG9JbmxpbmVDYWxsKAorICAgICAgICAgICAgY2Fs
bFRhcmdldE5vZGUsIHJlc3VsdE9wZXJhbmQsIGNhbGxMaW5rU3RhdHVzWzBdLmNhbGxlZSgpLCBy
ZWdpc3Rlck9mZnNldCwKKyAgICAgICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBu
ZXh0T2Zmc2V0LCBraW5kLCBDYWxsZXJEb2VzTm9ybWFsTGlua2luZywgcHJlZGljdGlvbiwKKyAg
ICAgICAgICAgIGlubGluaW5nQmFsYW5jZSk7CisgICAgICAgIGlmICghcmVzdWx0ICYmICFjYWxs
TGlua1N0YXR1cy5pc1Byb3ZlZCgpKQorICAgICAgICAgICAgdW5kb0Z1bmN0aW9uQ2hlY2tzKGNh
bGxMaW5rU3RhdHVzWzBdLmNhbGxlZSgpKTsKKyAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAg
ICAgICAgIGRhdGFMb2coIkRvbmUgaW5saW5pbmcgKHNpbXBsZSkuXG4iKTsKKyAgICAgICAgICAg
IGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICAvLyBXZSBuZWVkIHRv
IGNyZWF0ZSBzb21lIGtpbmQgb2Ygc3dpdGNoIG92ZXIgY2FsbGVlLiBGb3Igbm93IHdlIG9ubHkg
ZG8gdGhpcyBpZiB3ZSBiZWxpZXZlIHRoYXQKKyAgICAvLyB3ZSdyZSBpbiB0aGUgdG9wIHRpZXIu
IFdlIGhhdmUgdHdvIHJlYXNvbnMgZm9yIHRoaXM6IGZpcnN0LCBpdCBwcm92aWRlcyB1cyBhbiBv
cHBvcnR1bml0eSB0bworICAgIC8vIGRvIG1vcmUgZGV0YWlsZWQgcG9seXZhcmlhbnQvcG9seW1v
cnBoaWMgcHJvZmlsaW5nOyBhbmQgc2Vjb25kLCBpdCByZWR1Y2VzIGNvbXBpbGUgdGltZXMgaW4K
KyAgICAvLyB0aGUgREZHLiBBbmQgYnkgcG9seXZhcmlhbnQgcHJvZmlsaW5nIHdlIG1lYW4gcG9s
eXZhcmlhbnQgcHJvZmlsaW5nIG9mICp0aGlzKiBjYWxsLiBOb3RlIHRoYXQKKyAgICAvLyB3ZSBj
b3VsZCBpbXByb3ZlIHRoYXQgYXNwZWN0IG9mIHRoaXMgYnkgZG9pbmcgcG9seW1vcnBoaWMgaW5s
aW5pbmcgYnV0IGhhdmluZyB0aGUgcHJvZmlsaW5nCisgICAgLy8gYWxzby4gQ3VycmVudGx5IHdl
IG9wdCBhZ2FpbnN0IHRoaXMsIGJ1dCBpdCBjb3VsZCBiZSBpbnRlcmVzdGluZy4gVGhhdCB3b3Vs
ZCByZXF1aXJlIGhhdmluZyBhCisgICAgLy8gc2VwYXJhdGUgbm9kZSBmb3IgY2FsbCBlZGdlIHBy
b2ZpbGluZy4KKyAgICAvLyBGSVhNRTogSW50cm9kdWNlIHRoZSBub3Rpb24gb2YgYSBzZXBhcmF0
ZSBjYWxsIGVkZ2UgcHJvZmlsaW5nIG5vZGUuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzNjAzMworICAgIGlmICghaXNGVEwobV9ncmFwaC5tX3BsYW4u
bW9kZSkgfHwgIU9wdGlvbnM6OmVuYWJsZVBvbHltb3JwaGljQ2FsbElubGluaW5nKCkpIHsKKyAg
ICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgIGRhdGFMb2coIkJhaWxpbmcgaW5saW5p
bmcgKGhhcmQpLlxuIik7CisgICAgICAgICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENv
ZGVPcmlnaW4oKSwgIlxuIik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICAKKyAgICB1bnNpZ25lZCBvbGRPZmZzZXQgPSBtX2N1cnJlbnRJbmRleDsKKyAgICAK
KyAgICBib29sIGFsbEFyZUNsb3N1cmVDYWxscyA9IHRydWU7CisgICAgYm9vbCBhbGxBcmVEaXJl
Y3RDYWxscyA9IHRydWU7CisgICAgZm9yICh1bnNpZ25lZCBpID0gY2FsbExpbmtTdGF0dXMuc2l6
ZSgpOyBpLS07KSB7CisgICAgICAgIGlmIChjYWxsTGlua1N0YXR1c1tpXS5jYWxsZWUoKS5pc0Ns
b3N1cmVDYWxsKCkpCisgICAgICAgICAgICBhbGxBcmVEaXJlY3RDYWxscyA9IGZhbHNlOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBhbGxBcmVDbG9zdXJlQ2FsbHMgPSBmYWxzZTsKKyAgICB9
CisgICAgCisgICAgTm9kZSogdGhpbmdUb1N3aXRjaE9uOworICAgIGlmIChhbGxBcmVEaXJlY3RD
YWxscykKKyAgICAgICAgdGhpbmdUb1N3aXRjaE9uID0gY2FsbFRhcmdldE5vZGU7CisgICAgZWxz
ZSBpZiAoYWxsQXJlQ2xvc3VyZUNhbGxzKQorICAgICAgICB0aGluZ1RvU3dpdGNoT24gPSBhZGRU
b0dyYXBoKEdldEV4ZWN1dGFibGUsIGNhbGxUYXJnZXROb2RlKTsKKyAgICBlbHNlIHsKKyAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGhhbmRsZSB0aGlzIGNhc2UsIGJ1dCBp
dCdzIHRyaWNreSBhbmQgd2UgZG9uJ3Qga25vdyBvZiBjYXNlcworICAgICAgICAvLyB3aGVyZSBp
dCB3b3VsZCBiZSBiZW5lZmljaWFsLiBBbHNvLCBDYWxsTGlua1N0YXR1cyB3b3VsZCBtYWtlIGFs
bCBjYWxsZWVzIGFwcGVhciBsaWtlCisgICAgICAgIC8vIGNsb3N1cmUgY2FsbHMgaWYgYW55IGNh
bGxzIHdlcmUgY2xvc3VyZSBjYWxscyAtIGV4Y2VwdCBmb3IgY2FsbHMgdG8gaW50ZXJuYWwgZnVu
Y3Rpb25zLgorICAgICAgICAvLyBTbyB0aGlzIHdpbGwgb25seSBhcmlzZSBpZiBzb21lIGNhbGxl
ZXMgYXJlIGludGVybmFsIGZ1bmN0aW9ucyBhbmQgb3RoZXJzIGFyZSBjbG9zdXJlcy4KKyAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjAyMAorICAg
ICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgZGF0YUxvZygiQmFpbGluZyBpbmxpbmlu
ZyAobWl4KS5cbiIpOworICAgICAgICAgICAgZGF0YUxvZygiU3RhY2s6ICIsIGN1cnJlbnRDb2Rl
T3JpZ2luKCksICJcbiIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgCisgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgZGF0YUxvZygiRG9pbmcgaGFyZCBp
bmxpbmluZy4uLlxuIik7CisgICAgICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9y
aWdpbigpLCAiXG4iKTsKKyAgICB9CisgICAgCisgICAgLy8gVGhpcyBtYWtlcyBtZSB3aXNoIHRo
YXQgd2Ugd2VyZSBpbiBTU0EgYWxsIHRoZSB0aW1lLiBXZSBuZWVkIHRvIHBpY2sgYSB2YXJpYWJs
ZSBpbnRvIHdoaWNoIHRvCisgICAgLy8gc3RvcmUgdGhlIGNhbGxlZSBzbyB0aGF0IGl0IHdpbGwg
YmUgYWNjZXNzaWJsZSB0byBhbGwgb2YgdGhlIGJsb2NrcyB3ZSdyZSBhYm91dCB0byBjcmVhdGUu
IFdlCisgICAgLy8gZ2V0IGF3YXkgd2l0aCBkb2luZyBhbiBpbW1lZGlhdGUtc2V0IGhlcmUgYmVj
YXVzZSB3ZSB3b3VsZG4ndCBoYXZlIHBlcmZvcm1lZCBhbnkgc2lkZSBlZmZlY3RzCisgICAgLy8g
eWV0LgorICAgIGlmICh2ZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJSZWdpc3RlciBvZmZzZXQ6
ICIsIHJlZ2lzdGVyT2Zmc2V0KTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVlUmVnKHJlZ2lz
dGVyT2Zmc2V0ICsgSlNTdGFjazo6Q2FsbGVlKTsKKyAgICBjYWxsZWVSZWcgPSBtX2lubGluZVN0
YWNrVG9wLT5yZW1hcE9wZXJhbmQoY2FsbGVlUmVnKTsKKyAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgZGF0YUxvZygiQ2FsbGVlIGlzIGdvaW5nIHRvIGJlICIsIGNhbGxlZVJlZywgIlxuIik7Cisg
ICAgc2V0RGlyZWN0KGNhbGxlZVJlZywgY2FsbFRhcmdldE5vZGUsIEltbWVkaWF0ZVNldFdpdGhG
bHVzaCk7CisgICAgCisgICAgU3dpdGNoRGF0YSYgZGF0YSA9ICptX2dyYXBoLm1fc3dpdGNoRGF0
YS5hZGQoKTsKKyAgICBkYXRhLmtpbmQgPSBTd2l0Y2hDZWxsOworICAgIGFkZFRvR3JhcGgoU3dp
dGNoLCBPcEluZm8oJmRhdGEpLCB0aGluZ1RvU3dpdGNoT24pOworICAgIAorICAgIEJhc2ljQmxv
Y2sqIG9yaWdpbkJsb2NrID0gbV9jdXJyZW50QmxvY2s7CisgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgIGRhdGFMb2coIk1hcmtpbmcgIiwgUmF3UG9pbnRlcihvcmlnaW5CbG9jayksICIgYXMgbGlu
a2VkIChvcmlnaW4gb2YgcG9seSBpbmxpbmUpXG4iKTsKKyAgICBvcmlnaW5CbG9jay0+ZGlkTGlu
aygpOworICAgIGNhbmNlbExpbmtpbmdGb3JCbG9jayhtX2lubGluZVN0YWNrVG9wLCBvcmlnaW5C
bG9jayk7CisgICAgCisgICAgLy8gRWFjaCBpbmxpbmVkIGNhbGxlZSB3aWxsIGhhdmUgYSBsYW5k
aW5nIGJsb2NrIHRoYXQgaXQgcmV0dXJucyBhdC4gVGhleSBzaG91bGQgYWxsIGhhdmUganVtcHMK
KyAgICAvLyB0byB0aGUgY29udGludWF0aW9uIGJsb2NrLCB3aGljaCB3ZSBjcmVhdGUgbGFzdC4K
KyAgICBWZWN0b3I8QmFzaWNCbG9jayo+IGxhbmRpbmdCbG9ja3M7CisgICAgCisgICAgLy8gV2Ug
bWFrZSBmb3JjZSB0aGlzIHRydWUgaWYgd2UgZ2l2ZSB1cCBvbiBpbmxpbmluZyBhbnkgb2YgdGhl
IGVkZ2VzLgorICAgIGJvb2wgY291bGRUYWtlU2xvd1BhdGggPSBjYWxsTGlua1N0YXR1cy5jb3Vs
ZFRha2VTbG93UGF0aCgpOworICAgIAorICAgIGlmICh2ZXJib3NlKQorICAgICAgICBkYXRhTG9n
KCJBYm91dCB0byBsb29wIG92ZXIgZnVuY3Rpb25zIGF0ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCks
ICIuXG4iKTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbExpbmtTdGF0
dXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgbV9jdXJyZW50SW5kZXggPSBvbGRPZmZzZXQ7Cisg
ICAgICAgIFJlZlB0cjxCYXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKG5ldyBCYXNpY0Jsb2Nr
KFVJTlRfTUFYLCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIFBOYU4pKTsKKyAgICAgICAg
bV9jdXJyZW50QmxvY2sgPSBibG9jay5nZXQoKTsKKyAgICAgICAgbV9ncmFwaC5hcHBlbmRCbG9j
ayhibG9jayk7CisgICAgICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKKyAgICAgICAgCisgICAg
ICAgIE5vZGUqIG15Q2FsbFRhcmdldE5vZGUgPSBnZXREaXJlY3QoY2FsbGVlUmVnKTsKKyAgICAg
ICAgCisgICAgICAgIGJvb2wgaW5saW5pbmdSZXN1bHQgPSBhdHRlbXB0VG9JbmxpbmVDYWxsKAor
ICAgICAgICAgICAgbXlDYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0T3BlcmFuZCwgY2FsbExpbmtTdGF0
dXNbaV0uY2FsbGVlKCksIHJlZ2lzdGVyT2Zmc2V0LAorICAgICAgICAgICAgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQsIGtpbmQsIENhbGxlckxpbmtzTWFudWFsbHksIHBy
ZWRpY3Rpb24sCisgICAgICAgICAgICBpbmxpbmluZ0JhbGFuY2UpOworICAgICAgICAKKyAgICAg
ICAgaWYgKCFpbmxpbmluZ1Jlc3VsdCkgeworICAgICAgICAgICAgLy8gVGhhdCBmYWlsZWQgc28g
d2UgbGV0IHRoZSBibG9jayBkaWUuIE5vdGhpbmcgaW50ZXJlc3Rpbmcgc2hvdWxkIGhhdmUgYmVl
biBhZGRlZCB0bworICAgICAgICAgICAgLy8gdGhlIGJsb2NrLiBXZSBhbHNvIGdpdmUgdXAgb24g
aW5saW5pbmcgYW55IG9mIHRoZSAobGVzcyBmcmVxdWVudCkgY2FsbGVlcy4KKyAgICAgICAgICAg
IEFTU0VSVChtX2N1cnJlbnRCbG9jayA9PSBibG9jay5nZXQoKSk7CisgICAgICAgICAgICBBU1NF
UlQobV9ncmFwaC5tX2Jsb2Nrcy5sYXN0KCkgPT0gYmxvY2spOworICAgICAgICAgICAgbV9ncmFw
aC5raWxsQmxvY2tBbmRJdHNDb250ZW50cyhibG9jay5nZXQoKSk7CisgICAgICAgICAgICBtX2dy
YXBoLm1fYmxvY2tzLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8g
VGhlIGZhY3QgdGhhdCBpbmxpbmluZyBmYWlsZWQgbWVhbnMgd2UgbmVlZCBhIHNsb3cgcGF0aC4K
KyAgICAgICAgICAgIGNvdWxkVGFrZVNsb3dQYXRoID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBKU0NlbGwqIHRoaW5nVG9DYXNlT247Cisg
ICAgICAgIGlmIChhbGxBcmVEaXJlY3RDYWxscykKKyAgICAgICAgICAgIHRoaW5nVG9DYXNlT24g
PSBjYWxsTGlua1N0YXR1c1tpXS5jYWxsZWUoKS5ub25FeGVjdXRhYmxlQ2FsbGVlKCk7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKGFsbEFyZUNsb3N1cmVDYWxscyk7CisgICAg
ICAgICAgICB0aGluZ1RvQ2FzZU9uID0gY2FsbExpbmtTdGF0dXNbaV0uY2FsbGVlKCkuZXhlY3V0
YWJsZSgpOworICAgICAgICB9CisgICAgICAgIGRhdGEuY2FzZXMuYXBwZW5kKFN3aXRjaENhc2Uo
bV9ncmFwaC5mcmVlemUodGhpbmdUb0Nhc2VPbiksIGJsb2NrLmdldCgpKSk7CisgICAgICAgIG1f
Y3VycmVudEluZGV4ID0gbmV4dE9mZnNldDsKKyAgICAgICAgcHJvY2Vzc1NldExvY2FsUXVldWUo
KTsgLy8gVGhpcyBvbmx5IGNvbWVzIGludG8gcGxheSBmb3IgaW50cmluc2ljcywgc2luY2Ugbm9y
bWFsIGlubGluZWQgY29kZSB3aWxsIGxlYXZlIGFuIGVtcHR5IHF1ZXVlLgorICAgICAgICBhZGRU
b0dyYXBoKEp1bXApOworICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGRhdGFMb2co
Ik1hcmtpbmcgIiwgUmF3UG9pbnRlcihtX2N1cnJlbnRCbG9jayksICIgYXMgbGlua2VkICh0YWls
IG9mIHBvbHkgaW5saW5lZSlcbiIpOworICAgICAgICBtX2N1cnJlbnRCbG9jay0+ZGlkTGluaygp
OworICAgICAgICBsYW5kaW5nQmxvY2tzLmFwcGVuZChtX2N1cnJlbnRCbG9jayk7CisKKyAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBkYXRhTG9nKCJGaW5pc2hlZCBpbmxpbmluZyAi
LCBjYWxsTGlua1N0YXR1c1tpXS5jYWxsZWUoKSwgIiBhdCAiLCBjdXJyZW50Q29kZU9yaWdpbigp
LCAiLlxuIik7CisgICAgfQorICAgIAorICAgIFJlZlB0cjxCYXNpY0Jsb2NrPiBzbG93UGF0aEJs
b2NrID0gYWRvcHRSZWYoCisgICAgICAgIG5ldyBCYXNpY0Jsb2NrKFVJTlRfTUFYLCBtX251bUFy
Z3VtZW50cywgbV9udW1Mb2NhbHMsIFBOYU4pKTsKKyAgICBtX2N1cnJlbnRJbmRleCA9IG9sZE9m
ZnNldDsKKyAgICBkYXRhLmZhbGxUaHJvdWdoID0gQnJhbmNoVGFyZ2V0KHNsb3dQYXRoQmxvY2su
Z2V0KCkpOworICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soc2xvd1BhdGhCbG9jayk7CisgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgIGRhdGFMb2coIk1hcmtpbmcgIiwgUmF3UG9pbnRlcihzbG93UGF0
aEJsb2NrLmdldCgpKSwgIiBhcyBsaW5rZWQgKHNsb3cgcGF0aCBibG9jaylcbiIpOworICAgIHNs
b3dQYXRoQmxvY2stPmRpZExpbmsoKTsKKyAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CisgICAg
bV9jdXJyZW50QmxvY2sgPSBzbG93UGF0aEJsb2NrLmdldCgpOworICAgIE5vZGUqIG15Q2FsbFRh
cmdldE5vZGUgPSBnZXREaXJlY3QoY2FsbGVlUmVnKTsKKyAgICBpZiAoY291bGRUYWtlU2xvd1Bh
dGgpIHsKKyAgICAgICAgYWRkQ2FsbCgKKyAgICAgICAgICAgIHJlc3VsdE9wZXJhbmQsIGNhbGxP
cCwgT3BJbmZvKCksIG15Q2FsbFRhcmdldE5vZGUsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LAorICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOworICAgIH0gZWxzZSB7
CisgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tCYWRDZWxsKTsKKyAgICAgICAgYWRkVG9HcmFwaChQ
aGFudG9tLCBteUNhbGxUYXJnZXROb2RlKTsKKyAgICAgICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMo
cmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlv
bktpbmQpOworICAgICAgICAKKyAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVy
YW5kKSwgYWRkVG9HcmFwaChCb3R0b21WYWx1ZSkpOworICAgIH0KKworICAgIG1fY3VycmVudElu
ZGV4ID0gbmV4dE9mZnNldDsKKyAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOworICAgIGFkZFRv
R3JhcGgoSnVtcCk7CisgICAgbGFuZGluZ0Jsb2Nrcy5hcHBlbmQobV9jdXJyZW50QmxvY2spOwor
ICAgIAorICAgIFJlZlB0cjxCYXNpY0Jsb2NrPiBjb250aW51YXRpb25CbG9jayA9IGFkb3B0UmVm
KAorICAgICAgICBuZXcgQmFzaWNCbG9jayhVSU5UX01BWCwgbV9udW1Bcmd1bWVudHMsIG1fbnVt
TG9jYWxzLCBQTmFOKSk7CisgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhjb250aW51YXRpb25CbG9j
ayk7CisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGRhdGFMb2coIkFkZGluZyB1bmxpbmtlZCBi
bG9jayAiLCBSYXdQb2ludGVyKGNvbnRpbnVhdGlvbkJsb2NrLmdldCgpKSwgIiAoY29udGludWF0
aW9uKVxuIik7CisgICAgbV9pbmxpbmVTdGFja1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5hcHBlbmQo
VW5saW5rZWRCbG9jayhjb250aW51YXRpb25CbG9jay5nZXQoKSkpOworICAgIHByZXBhcmVUb1Bh
cnNlQmxvY2soKTsKKyAgICBtX2N1cnJlbnRCbG9jayA9IGNvbnRpbnVhdGlvbkJsb2NrLmdldCgp
OworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IGxhbmRpbmdCbG9ja3Muc2l6ZSgpOyBpLS07
KQorICAgICAgICBsYW5kaW5nQmxvY2tzW2ldLT5sYXN0KCktPnRhcmdldEJsb2NrKCkgPSBjb250
aW51YXRpb25CbG9jay5nZXQoKTsKKyAgICAKKyAgICBtX2N1cnJlbnRJbmRleCA9IG9sZE9mZnNl
dDsKKyAgICAKKyAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBkYXRhTG9nKCJEb25lIGlubGlu
aW5nIChoYXJkKS5cbiIpOworICAgICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVP
cmlnaW4oKSwgIlxuIik7CisgICAgfQogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xNjQ1LDcg
KzE5MDQsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5Q29uCiAKIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbigKICAgICBp
bnQgcmVzdWx0T3BlcmFuZCwgSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24sIGludCByZWdpc3Rl
ck9mZnNldCwKLSAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRU
eXBlIHByZWRpY3Rpb24sIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKKyAgICBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsK
ICAgICAvLyBJZiB3ZSBldmVyIGZpbmQgdGhhdCB3ZSBoYXZlIGEgbG90IG9mIGludGVybmFsIGZ1
bmN0aW9ucyB0aGF0IHdlIHNwZWNpYWxpemUgZm9yLAogICAgIC8vIHRoZW4gd2Ugc2hvdWxkIHBy
b2JhYmx5IGhhdmUgc29tZSBzb3J0IG9mIGhhc2h0YWJsZSBkaXNwYXRjaCwgb3IgbWF5YmUgZXZl
bgpAQCAtMTY1NCw4ICsxOTEzLDYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3Rh
bnRJbnRlcgogICAgIC8vIHdlIGtub3cgYWJvdXQgaXMgc21hbGwgZW5vdWdoLCB0aGF0IGhhdmlu
ZyBqdXN0IGEgbGluZWFyIGNhc2NhZGUgb2YgaWYgc3RhdGVtZW50cwogICAgIC8vIGlzIGdvb2Qg
ZW5vdWdoLgogICAgIAotICAgIFVOVVNFRF9QQVJBTShwcmVkaWN0aW9uKTsgLy8gUmVtb3ZlIHRo
aXMgb25jZSB3ZSBkbyBtb3JlIHRoaW5ncy4KLSAgICAKICAgICBpZiAoZnVuY3Rpb24tPmNsYXNz
SW5mbygpID09IEFycmF5Q29uc3RydWN0b3I6OmluZm8oKSkgewogICAgICAgICBpZiAoZnVuY3Rp
b24tPmdsb2JhbE9iamVjdCgpICE9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIwMjAsNiArMjI3Nywx
MiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogCiB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpwcmVwYXJlVG9QYXJzZUJsb2NrKCkKIHsKKyAgICBjbGVhckNhY2hlcygpOworICAg
IEFTU0VSVChtX3NldExvY2FsUXVldWUuaXNFbXB0eSgpKTsKK30KKwordm9pZCBCeXRlQ29kZVBh
cnNlcjo6Y2xlYXJDYWNoZXMoKQorewogICAgIG1fY29uc3RhbnRzLnJlc2l6ZSgwKTsKIH0KIApA
QCAtMjA1OSw5ICsyMzIyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZAogICAgIH0KIAogICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX3NldExvY2FsUXVldWUuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtX3Nl
dExvY2FsUXVldWVbaV0uZXhlY3V0ZSh0aGlzKTsKLSAgICAgICAgbV9zZXRMb2NhbFF1ZXVlLnJl
c2l6ZSgwKTsKKyAgICAgICAgcHJvY2Vzc1NldExvY2FsUXVldWUoKTsKICAgICAgICAgCiAgICAg
ICAgIC8vIERvbid0IGV4dGVuZCBvdmVyIGp1bXAgZGVzdGluYXRpb25zLgogICAgICAgICBpZiAo
bV9jdXJyZW50SW5kZXggPT0gbGltaXQpIHsKQEAgLTIyMDUsMTMgKzI0NjYsMTMgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgSlNDZWxsKiBj
YWNoZWRGdW5jdGlvbiA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LmpzQ2VsbC5nZXQoKTsKICAg
ICAgICAgICAgIGlmICghY2FjaGVkRnVuY3Rpb24gCiAgICAgICAgICAgICAgICAgfHwgbV9pbmxp
bmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5jb3VsZFRha2VTbG93Q2FzZShtX2N1cnJlbnRJ
bmRleCkKLSAgICAgICAgICAgICAgICB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxl
Lmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRGdW5jdGlvbikpIHsKKyAgICAgICAgICAg
ICAgICB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3Vy
cmVudEluZGV4LCBCYWRDZWxsKSkgewogICAgICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0
ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGdldChWaXJ0dWFsUmVnaXN0ZXIo
SlNTdGFjazo6Q2FsbGVlKSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemUoY2FjaGVkRnVuY3Rpb24pOwog
ICAgICAgICAgICAgICAgIEFTU0VSVChjYWNoZWRGdW5jdGlvbi0+aW5oZXJpdHMoSlNGdW5jdGlv
bjo6aW5mbygpKSk7CiAgICAgICAgICAgICAgICAgTm9kZSogYWN0dWFsQ2FsbGVlID0gZ2V0KFZp
cnR1YWxSZWdpc3RlcihKU1N0YWNrOjpDYWxsZWUpKTsKLSAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKENoZWNrRnVuY3Rpb24sIE9wSW5mbyhmcm96ZW4pLCBhY3R1YWxDYWxsZWUpOworICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tDZWxsLCBPcEluZm8oZnJvemVuKSwgYWN0dWFsQ2Fs
bGVlKTsKICAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhmcm96ZW4p
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfY2FsbGVl
KTsKQEAgLTI4OTMsNyArMzE1NCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQKICAgICAgICAgICAgIC8vIGFscmVhZHkgZ25hcmx5IGVub3VnaCBhcyBpdCBpcy4K
ICAgICAgICAgICAgIEFTU0VSVChwb2ludGVySXNGdW5jdGlvbihjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5zcGVjaWFsUG9pbnRlcikpOwogICAgICAgICAgICAgYWRkVG9HcmFwaCgKLSAgICAgICAg
ICAgICAgICBDaGVja0Z1bmN0aW9uLAorICAgICAgICAgICAgICAgIENoZWNrQ2VsbCwKICAgICAg
ICAgICAgICAgICBPcEluZm8obV9ncmFwaC5mcmVlemUoc3RhdGljX2Nhc3Q8SlNDZWxsKj4oYWN0
dWFsUG9pbnRlckZvcigKICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9j
b2RlQmxvY2ssIGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnNwZWNpYWxQb2ludGVyKSkpKSwKICAg
ICAgICAgICAgICAgICBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQpKSk7CkBAIC0zMzE3LDE1ICszNTc4LDE5IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OmxpbmtCbG9jayhCYXNpY0Jsb2MKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotI2lmICFB
U1NFUlRfRElTQUJMRUQKLSAgICBibG9jay0+aXNMaW5rZWQgPSB0cnVlOwotI2VuZGlmCisgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgIGRhdGFMb2coIk1hcmtpbmcgIiwgUmF3UG9pbnRlcihibG9j
ayksICIgYXMgbGlua2VkIChhY3R1YWxseSBkaWQgbGlua2luZylcbiIpOworICAgIGJsb2NrLT5k
aWRMaW5rKCk7CiB9CiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmxpbmtCbG9ja3MoVmVjdG9yPFVu
bGlua2VkQmxvY2s+JiB1bmxpbmtlZEJsb2NrcywgVmVjdG9yPEJhc2ljQmxvY2sqPiYgcG9zc2li
bGVUYXJnZXRzKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdW5saW5rZWRCbG9ja3Mu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBkYXRhTG9n
KCJBdHRlbXB0aW5nIHRvIGxpbmsgIiwgUmF3UG9pbnRlcih1bmxpbmtlZEJsb2Nrc1tpXS5tX2Js
b2NrKSwgIlxuIik7CiAgICAgICAgIGlmICh1bmxpbmtlZEJsb2Nrc1tpXS5tX25lZWRzTm9ybWFs
TGlua2luZykgeworICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgZGF0
YUxvZygiICAgIERvZXMgbmVlZCBub3JtYWwgbGlua2luZy5cbiIpOwogICAgICAgICAgICAgbGlu
a0Jsb2NrKHVubGlua2VkQmxvY2tzW2ldLm1fYmxvY2ssIHBvc3NpYmxlVGFyZ2V0cyk7CiAgICAg
ICAgICAgICB1bmxpbmtlZEJsb2Nrc1tpXS5tX25lZWRzTm9ybWFsTGlua2luZyA9IGZhbHNlOwog
ICAgICAgICB9CkBAIC0zNDkyLDcgKzM3NTcsNyBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3Rh
Y2tFbnRyeTo6SW5saW5lCiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKCkK
IHsKLSAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CisgICAgY2xlYXJDYWNoZXMoKTsKICAgICAK
ICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2Nr
OwogICAgIApAQCAtMzU1OCw3ICszODIzLDEyIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
Q29kZUJsb2NrKCkKICAgICAgICAgICAgICAgICAgICAgLy8gMikgSWYgdGhlIGJ5dGVjb2RlQmVn
aW4gaXMgZXF1YWwgdG8gdGhlIGN1cnJlbnRJbmRleCwgdGhlbiB3ZSBmYWlsZWQgdG8gZG8KICAg
ICAgICAgICAgICAgICAgICAgLy8gICAgYSBwZWVwaG9sZSBjb2FsZXNjaW5nIG9mIHRoaXMgYmxv
Y2sgaW4gdGhlIGlmIHN0YXRlbWVudCBhYm92ZS4gU28sIHdlJ3JlCiAgICAgICAgICAgICAgICAg
ICAgIC8vICAgIGdlbmVyYXRpbmcgc3Vib3B0aW1hbCBjb2RlIGFuZCBsZWF2aW5nIG1vcmUgd29y
ayBmb3IgdGhlIENGRyBzaW1wbGlmaWVyLgotICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9p
bmxpbmVTdGFja1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5pc0VtcHR5KCkgfHwgbV9pbmxpbmVTdGFj
a1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9ibG9jay0+Ynl0ZWNvZGVCZWdpbiA8IG1f
Y3VycmVudEluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2lubGluZVN0YWNrVG9w
LT5tX3VubGlua2VkQmxvY2tzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgbGFzdEJlZ2luID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGlu
ZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX2Jsb2NrLT5ieXRlY29kZUJlZ2lu
OworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsYXN0QmVnaW4sIGxhc3RCZWdpbiA9PSBVSU5UX01BWCB8fCBsYXN0QmVn
aW4gPCBtX2N1cnJlbnRJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5hcHBlbmQoVW5saW5r
ZWRCbG9jayhibG9jay5nZXQoKSkpOwogICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNr
VG9wLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuYXBwZW5kKGJsb2NrLmdldCgpKTsKICAgICAgICAg
ICAgICAgICAgICAgLy8gVGhlIGZpcnN0IGJsb2NrIGlzIGRlZmluaXRlbHkgYW4gT1NSIHRhcmdl
dC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRo
cmVhZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTcyODM1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAs
OCArOTAsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4u
c2V0Q2hpbGQxKEVkZ2UoKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgIGNhc2UgUGhhbnRvbToKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5jaGls
ZDEoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5jaGlsZDEoKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS0+b3AoKSkgewogICAgICAgICAg
ICAgICAgICAgICBjYXNlIFBoaToKICAgICAgICAgICAgICAgICAgICAgY2FzZSBTZXRBcmd1bWVu
dDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZp
c2lvbiAxNzI4MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDYgKzE0NCw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIEZpYXRJbnQ1MjoKICAgICBjYXNlIE1ha2VS
b3BlOgogICAgIGNhc2UgVmFsdWVUb0ludDMyOgorICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKKyAg
ICBjYXNlIEJvdHRvbVZhbHVlOgogICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAKQEAgLTIzOSwxMiArMjQxLDggQEAgdm9pZCBjbG9iYmVyaXpl
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUsIG5v
ZGUtPmFyaXRoTW9kZSgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgY2FzZSBD
aGVja0Z1bmN0aW9uOgotICAgICAgICBkZWYoUHVyZVZhbHVlKENoZWNrRnVuY3Rpb24sIEFkamFj
ZW5jeUxpc3QoQWRqYWNlbmN5TGlzdDo6Rml4ZWQsIG5vZGUtPmNoaWxkMSgpKSwgbm9kZS0+ZnVu
Y3Rpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgIGNhc2UgQ2hlY2tFeGVj
dXRhYmxlOgotICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUsIG5vZGUtPmV4ZWN1dGFibGUoKSkp
OworICAgIGNhc2UgQ2hlY2tDZWxsOgorICAgICAgICBkZWYoUHVyZVZhbHVlKENoZWNrQ2VsbCwg
QWRqYWNlbmN5TGlzdChBZGphY2VuY3lMaXN0OjpGaXhlZCwgbm9kZS0+Y2hpbGQxKCkpLCBub2Rl
LT5jZWxsT3BlcmFuZCgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBD
b25zdGFudFN0b3JhZ2VQb2ludGVyOgpAQCAtMjYzLDYgKzI2MSw3IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFN3aXRjaDoKICAgICBjYXNlIFRo
cm93OgogICAgIGNhc2UgRm9yY2VPU1JFeGl0OgorICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAg
IGNhc2UgUmV0dXJuOgogICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgY2FzZSBDaGVja1RpZXJV
cEluTG9vcDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAkocmV2aXNp
b24gMTcyODM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAkod29y
a2luZyBjb3B5KQpAQCAtNjMsNiArNjMsMTMgQEAgZW51bSBSZWZOb2RlTW9kZSB7CiAgICAgRG9u
dFJlZk5vZGUKIH07CiAKK2VudW0gU3dpdGNoS2luZCB7CisgICAgU3dpdGNoSW1tLAorICAgIFN3
aXRjaENoYXIsCisgICAgU3dpdGNoU3RyaW5nLAorICAgIFN3aXRjaENlbGwKK307CisKIGlubGlu
ZSBib29sIHZlcmJvc2VDb21waWxhdGlvbkVuYWJsZWQoQ29tcGlsYXRpb25Nb2RlIG1vZGUgPSBE
RkdNb2RlKQogewogICAgIHJldHVybiBPcHRpb25zOjp2ZXJib3NlQ29tcGlsYXRpb24oKSB8fCBP
cHRpb25zOjpkdW1wR3JhcGhBdEVhY2hQaGFzZSgpIHx8IChpc0ZUTChtb2RlKSAmJiBPcHRpb25z
Ojp2ZXJib3NlRlRMQ29tcGlsYXRpb24oKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTcy
ODM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw4ICsxNDIsOCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOiB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fc3RhdGUu
Zm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKSAhPSBub2RlLT5mdW5jdGlvbigpLT52YWx1
ZSgpKQorICAgICAgICAgICAgY2FzZSBDaGVja0NlbGw6IHsKKyAgICAgICAgICAgICAgICBpZiAo
bV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpICE9IG5vZGUtPmNlbGxPcGVy
YW5kKCktPnZhbHVlKCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKICAgICAgICAgICAgICAgICBlbGltaW5hdGVk
ID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJl
dmlzaW9uIDE3MjgzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CiAgICAgY2FzZSBQdXRCeUlk
RGlyZWN0OgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6Ci0gICAgY2FzZSBDaGVja0V4ZWN1dGFi
bGU6CisgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgogICAgIGNhc2UgR2V0QnV0dGVyZmx5OgogICAg
IGNhc2UgQ2hlY2tBcnJheToKICAgICBjYXNlIEdldFNjb3BlOgpAQCAtMTA0LDcgKzEwNCw3IEBA
IGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEdsb2Jh
bFZhcjoKICAgICBjYXNlIFZhcmlhYmxlV2F0Y2hwb2ludDoKICAgICBjYXNlIFZhckluamVjdGlv
bldhdGNocG9pbnQ6Ci0gICAgY2FzZSBDaGVja0Z1bmN0aW9uOgorICAgIGNhc2UgQ2hlY2tDZWxs
OgogICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OgogICAgIGNhc2UgUmVnRXhw
RXhlYzoKICAgICBjYXNlIFJlZ0V4cFRlc3Q6CkBAIC0xOTUsNiArMTk1LDggQEAgYm9vbCBkb2Vz
R0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0RGlyZWN0UG5hbWU6CiAg
ICAgY2FzZSBGaWF0SW50NTI6CiAgICAgY2FzZSBCb29sZWFuVG9OdW1iZXI6CisgICAgY2FzZSBD
aGVja0JhZENlbGw6CisgICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEcml2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRHJpdmVyLmNwcAkocmV2aXNpb24gMTcyODM1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSw5IEBA
IHN0YXRpYyBDb21waWxhdGlvblJlc3VsdCBjb21waWxlSW1wbCgKICAgICAgICAgdm0uZ2V0Q1RJ
U3R1Yih2aXJ0dWFsQ29uc3RydWN0VGhhdFByZXNlcnZlc1JlZ3NUaHVua0dlbmVyYXRvcik7CiAg
ICAgfQogICAgIAorICAgIGlmIChDYWxsRWRnZUxvZzo6aXNFbmFibGVkKCkpCisgICAgICAgIHZt
LmVuc3VyZUNhbGxFZGdlTG9nKCkucHJvY2Vzc0xvZygpOworICAgIAogICAgIFJlZlB0cjxQbGFu
PiBwbGFuID0gYWRvcHRSZWYoCiAgICAgICAgIG5ldyBQbGFuKGNvZGVCbG9jaywgcHJvZmlsZWRE
RkdDb2RlQmxvY2ssIG1vZGUsIG9zckVudHJ5Qnl0ZWNvZGVJbmRleCwgbXVzdEhhbmRsZVZhbHVl
cykpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCShyZXZpc2lvbiAxNzI4MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MzYsNiArNzM2LDEyIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1
bGF0ZVN0cmluZygpKQogICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ1VzZT4obm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBT
d2l0Y2hDZWxsOgorICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3Bl
Y3VsYXRlQ2VsbCgpKQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAvLyBlbHNlIGl0J3MgZmluZSBmb3IgdGhpcyB0
byBoYXZlIFVudHlwZWRVc2U7IHdlIHdpbGwgaGFuZGxlIHRoaXMgYnkganVzdCBtYWtpbmcKKyAg
ICAgICAgICAgICAgICAvLyBub24tY2VsbHMgdGFrZSB0aGUgZGVmYXVsdCBjYXNlLgorICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KQEAgLTg5NywxMyArOTAzLDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOiB7CisgICAgICAgIGNh
c2UgR2V0RXhlY3V0YWJsZTogewogICAgICAgICAgICAgZml4RWRnZTxGdW5jdGlvblVzZT4obm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAg
IAogICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgotICAgICAgICBjYXNlIENoZWNrRnVuY3Rp
b246CisgICAgICAgIGNhc2UgQ2hlY2tDZWxsOgogICAgICAgICBjYXNlIENoZWNrSGFzSW5zdGFu
Y2U6CiAgICAgICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6
IHsKQEAgLTExNDksNiArMTE1NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVGhyb3dSZWZl
cmVuY2VFcnJvcjoKICAgICAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICAgICAgY2FzZSBG
b3JjZU9TUkV4aXQ6CisgICAgICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgICAgICBjYXNlIENo
ZWNrV2F0Y2hkb2dUaW1lcjoKICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICAgICAgY2Fz
ZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKQEAgLTExNTksNiArMTE2Niw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgVHlwZWRBcnJheVdhdGNocG9pbnQ6CiAgICAgICAgIGNhc2UgTW92SGludDoK
ICAgICAgICAgY2FzZSBab21iaWVIaW50OgorICAgICAgICBjYXNlIEJvdHRvbVZhbHVlOgogICAg
ICAgICAgICAgYnJlYWs7CiAjZWxzZQogICAgICAgICBkZWZhdWx0OgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDE3MjgzNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2
OSw3IEBAIEdyYXBoOjpHcmFwaChWTSYgdm0sIFBsYW4mIHBsYW4sIExvbmdMaXYKICAgICAsIG1f
Zm9ybShMb2FkU3RvcmUpCiAgICAgLCBtX3VuaWZpY2F0aW9uU3RhdGUoTG9jYWxseVVuaWZpZWQp
CiAgICAgLCBtX3JlZkNvdW50U3RhdGUoRXZlcnl0aGluZ0lzTGl2ZSkKKyAgICAsIG1fc2hvdWxk
UHJvZmlsZShmYWxzZSkKIHsKICAgICBBU1NFUlQobV9wcm9maWxlZEJsb2NrKTsKICAgICAKQEAg
LTIyMiwyNCArMjIzLDIzIEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgY29u
c3QKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBpbkNvbnRleHQoKm5vZGUtPnN0cnVjdHVyZSgp
LCBjb250ZXh0KSk7CiAgICAgaWYgKG5vZGUtPmhhc1RyYW5zaXRpb24oKSkKICAgICAgICAgb3V0
LnByaW50KGNvbW1hLCBwb2ludGVyRHVtcEluQ29udGV4dChub2RlLT50cmFuc2l0aW9uKCksIGNv
bnRleHQpKTsKLSAgICBpZiAobm9kZS0+aGFzRnVuY3Rpb24oKSkgewotICAgICAgICBvdXQucHJp
bnQoY29tbWEsICJmdW5jdGlvbigiLCBwb2ludGVyRHVtcChub2RlLT5mdW5jdGlvbigpKSwgIiwg
Iik7Ci0gICAgICAgIGlmIChub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpLmlzQ2VsbCgpCi0gICAg
ICAgICAgICAmJiBub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpLmFzQ2VsbCgpLT5pbmhlcml0cyhK
U0Z1bmN0aW9uOjppbmZvKCkpKSB7Ci0gICAgICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9
IGpzQ2FzdDxKU0Z1bmN0aW9uKj4obm9kZS0+ZnVuY3Rpb24oKS0+dmFsdWUoKS5hc0NlbGwoKSk7
Ci0gICAgICAgICAgICBpZiAoZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkpCi0gICAgICAgICAg
ICAgICAgb3V0LnByaW50KCI8aG9zdCBmdW5jdGlvbj4iKTsKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBvdXQucHJpbnQoRnVuY3Rpb25FeGVjdXRhYmxlRHVtcChmdW5jdGlvbi0+
anNFeGVjdXRhYmxlKCkpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBvdXQucHJpbnQo
Ijxub3QgSlNGdW5jdGlvbj4iKTsKLSAgICAgICAgb3V0LnByaW50KCIpIik7Ci0gICAgfQotICAg
IGlmIChub2RlLT5oYXNFeGVjdXRhYmxlKCkpIHsKLSAgICAgICAgaWYgKG5vZGUtPmV4ZWN1dGFi
bGUoKS0+aW5oZXJpdHMoRnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkpKQotICAgICAgICAgICAg
b3V0LnByaW50KGNvbW1hLCAiZXhlY3V0YWJsZSgiLCBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wKGpz
Q2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihub2RlLT5leGVjdXRhYmxlKCkpKSwgIikiKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiZXhlY3V0YWJsZShub3Qg
ZnVuY3Rpb246ICIsIFJhd1BvaW50ZXIobm9kZS0+ZXhlY3V0YWJsZSgpKSwgIikiKTsKKyAgICBp
ZiAobm9kZS0+aGFzQ2VsbE9wZXJhbmQoKSkgeworICAgICAgICBpZiAoIW5vZGUtPmNlbGxPcGVy
YW5kKCktPnZhbHVlKCkgfHwgIW5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuaXNDZWxsKCkp
CisgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJpbnZhbGlkIGNlbGwgb3BlcmFuZDogIiwg
bm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgb3V0LnByaW50KGNvbW1hLCBwb2ludGVyRHVtcChub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1
ZSgpLmFzQ2VsbCgpKSk7CisgICAgICAgICAgICBpZiAobm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFs
dWUoKS5pc0NlbGwoKSkgeworICAgICAgICAgICAgICAgIENhbGxWYXJpYW50IHZhcmlhbnQobm9k
ZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5hc0NlbGwoKSk7CisgICAgICAgICAgICAgICAgaWYg
KEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gdmFyaWFudC5leGVjdXRhYmxlKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAg
ICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICI8aG9zdCBmdW5jdGlvbj4iKTsK
KyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlv
bkV4ZWN1dGFibGUgPSBqc0R5bmFtaWNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFi
bGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBGdW5jdGlvbkV4
ZWN1dGFibGVEdW1wKGZ1bmN0aW9uRXhlY3V0YWJsZSkpOworICAgICAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICI8bm9uLWZ1bmN0
aW9uIGV4ZWN1dGFibGU+Iik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9CiAgICAgfQogICAgIGlmIChub2RlLT5oYXNGdW5jdGlvbkRlY2xJbmRleCgpKSB7CiAg
ICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG1fY29kZUJsb2NrLT5mdW5j
dGlvbkRlY2wobm9kZS0+ZnVuY3Rpb25EZWNsSW5kZXgoKSk7CkBAIC05ODUsMTAgKzk4NSw2IEBA
IHZvaWQgR3JhcGg6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHYKICAgICAgICAgICAgIE5v
ZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAgICAgICBjYXNlIENoZWNrRXhlY3V0YWJs
ZToKLSAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlQb2lu
dGVyKG5vZGUtPmV4ZWN1dGFibGUoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IG5vZGUtPnN0cnVjdHVyZVNldCgpLnNpemUoKTsgaS0tOykK
ICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFJlYWRPbmx5UG9p
bnRlcihub2RlLT5zdHJ1Y3R1cmVTZXQoKVtpXSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5oCShyZXZpc2lvbiAxNzI4MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2Miw2ICs3NjIsNyBAQCBwdWJsaWM6
CiAgICAgR3JhcGhGb3JtIG1fZm9ybTsKICAgICBVbmlmaWNhdGlvblN0YXRlIG1fdW5pZmljYXRp
b25TdGF0ZTsKICAgICBSZWZDb3VudFN0YXRlIG1fcmVmQ291bnRTdGF0ZTsKKyAgICBib29sIG1f
c2hvdWxkUHJvZmlsZTsKIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBoYW5kbGVTdWNjZXNzb3Io
VmVjdG9yPEJhc2ljQmxvY2sqLCAxNj4mIHdvcmtsaXN0LCBCYXNpY0Jsb2NrKiwgQmFzaWNCbG9j
ayogc3VjY2Vzc29yKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAxNzI4MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg0LDcgKzE4NCw3IEBA
IHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0IKICAgICAgICAgICAgIHRh
YmxlLmN0aU9mZnNldHNbal0gPSB0YWJsZS5jdGlEZWZhdWx0OwogICAgICAgICBmb3IgKHVuc2ln
bmVkIGogPSBkYXRhLmNhc2VzLnNpemUoKTsgai0tOykgewogICAgICAgICAgICAgU3dpdGNoQ2Fz
ZSYgbXlDYXNlID0gZGF0YS5jYXNlc1tqXTsKLSAgICAgICAgICAgIHRhYmxlLmN0aU9mZnNldHNb
bXlDYXNlLnZhbHVlLnN3aXRjaExvb2t1cFZhbHVlKCkgLSB0YWJsZS5taW5dID0KKyAgICAgICAg
ICAgIHRhYmxlLmN0aU9mZnNldHNbbXlDYXNlLnZhbHVlLnN3aXRjaExvb2t1cFZhbHVlKGRhdGEu
a2luZCkgLSB0YWJsZS5taW5dID0KICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxvY2F0aW9u
T2YobV9ibG9ja0hlYWRzW215Q2FzZS50YXJnZXQuYmxvY2stPmluZGV4XSk7CiAgICAgICAgIH0K
ICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVl
LmNwcAkocmV2aXNpb24gMTcyODM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdM
YXp5SlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsMzYgQEAgVHJpU3Rh
dGUgTGF6eUpTVmFsdWU6OnN0cmljdEVxdWFsKGNvbnN0IAogICAgIHJldHVybiBGYWxzZVRyaVN0
YXRlOwogfQogCit1aW50cHRyX3QgTGF6eUpTVmFsdWU6OnN3aXRjaExvb2t1cFZhbHVlKFN3aXRj
aEtpbmQga2luZCkgY29uc3QKK3sKKyAgICAvLyBOQi4gTm90IGV2ZXJ5IGtpbmQgb2YgSlNWYWx1
ZSB3aWxsIGJlIGFibGUgdG8gZ2l2ZSB5b3UgYSBzd2l0Y2ggbG9va3VwCisgICAgLy8gdmFsdWUs
IGFuZCB0aGlzIG1ldGhvZCB3aWxsIGFzc2VydCwgb3IgZG8gYmFkIHRoaW5ncywgaWYgeW91IHVz
ZSBpdAorICAgIC8vIGZvciBhIGtpbmQgb2YgdmFsdWUgdGhhdCBjYW4ndC4KKyAgICBzd2l0Y2gg
KG1fa2luZCkgeworICAgIGNhc2UgS25vd25WYWx1ZToKKyAgICAgICAgc3dpdGNoIChraW5kKSB7
CisgICAgICAgIGNhc2UgU3dpdGNoSW1tOgorICAgICAgICAgICAgcmV0dXJuIHZhbHVlKCktPnZh
bHVlKCkuYXNJbnQzMigpOworICAgICAgICBjYXNlIFN3aXRjaENlbGw6CisgICAgICAgICAgICBy
ZXR1cm4gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4odmFsdWUoKS0+dmFsdWUoKS5hc0NlbGwoKSk7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICBjYXNlIFNpbmdsZUNo
YXJhY3RlclN0cmluZzoKKyAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIGNhc2UgU3dp
dGNoQ2hhcjoKKyAgICAgICAgICAgIHJldHVybiBjaGFyYWN0ZXIoKTsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKwogdm9pZCBM
YXp5SlNWYWx1ZTo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCog
Y29udGV4dCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fa2luZCkgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuaAkocmV2aXNpb24gMTcyODM1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAorI2luY2x1ZGUgIkRG
R0NvbW1vbi5oIgogI2luY2x1ZGUgIkRGR0Zyb3plblZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSW1wbC5oPgogCkBAIC05NSwyMSArOTYsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAg
VHJpU3RhdGUgc3RyaWN0RXF1YWwoY29uc3QgTGF6eUpTVmFsdWUmIG90aGVyKSBjb25zdDsKICAg
ICAKLSAgICB1bnNpZ25lZCBzd2l0Y2hMb29rdXBWYWx1ZSgpIGNvbnN0Ci0gICAgewotICAgICAg
ICAvLyBOQi4gTm90IGV2ZXJ5IGtpbmQgb2YgSlNWYWx1ZSB3aWxsIGJlIGFibGUgdG8gZ2l2ZSB5
b3UgYSBzd2l0Y2ggbG9va3VwCi0gICAgICAgIC8vIHZhbHVlLCBhbmQgdGhpcyBtZXRob2Qgd2ls
bCBhc3NlcnQsIG9yIGRvIGJhZCB0aGluZ3MsIGlmIHlvdSB1c2UgaXQKLSAgICAgICAgLy8gZm9y
IGEga2luZCBvZiB2YWx1ZSB0aGF0IGNhbid0LgotICAgICAgICBzd2l0Y2ggKG1fa2luZCkgewot
ICAgICAgICBjYXNlIEtub3duVmFsdWU6Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWUoKS0+dmFs
dWUoKS5hc0ludDMyKCk7Ci0gICAgICAgIGNhc2UgU2luZ2xlQ2hhcmFjdGVyU3RyaW5nOgotICAg
ICAgICAgICAgcmV0dXJuIGNoYXJhY3RlcigpOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiAwOwot
ICAgICAgICB9Ci0gICAgfQorICAgIHVpbnRwdHJfdCBzd2l0Y2hMb29rdXBWYWx1ZShTd2l0Y2hL
aW5kIGtpbmQpIGNvbnN0OwogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0
OwogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29u
c3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAJKHJldmlzaW9uIDE3
MjgzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExMyw2ICsxMTMsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgU3dpCiAgICAgY2FzZSBTd2l0Y2hTdHJpbmc6CiAgICAgICAgIG91dC5wcmludCgiU3dp
dGNoU3RyaW5nIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFN3aXRjaENlbGw6CisgICAg
ICAgIG91dC5wcmludCgiU3dpdGNoQ2VsbCIpOworICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTcyODM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1NywxMiArMTU3LDYgQEAgc3RydWN0
IFN3aXRjaENhc2UgewogICAgIEJyYW5jaFRhcmdldCB0YXJnZXQ7CiB9OwogCi1lbnVtIFN3aXRj
aEtpbmQgewotICAgIFN3aXRjaEltbSwKLSAgICBTd2l0Y2hDaGFyLAotICAgIFN3aXRjaFN0cmlu
ZwotfTsKLQogc3RydWN0IFN3aXRjaERhdGEgewogICAgIC8vIEluaXRpYWxpemVzIG1vc3QgZmll
bGRzIHRvIG9idmlvdXNseSBpbnZhbGlkIHZhbHVlcy4gQW55b25lCiAgICAgLy8gY29uc3RydWN0
aW5nIHRoaXMgc2hvdWxkIG1ha2Ugc3VyZSB0byBpbml0aWFsaXplIGV2ZXJ5dGhpbmcgdGhleQpA
QCAtMTg1LDYgKzE3OSw3IEBAIHN0cnVjdCBTd2l0Y2hEYXRhIHsKIC8vIGRpc3Rpbmd1aXNoZXMg
YW4gaW1tZWRpYXRlIHZhbHVlICh0eXBpY2FsbHkgYW4gaW5kZXggaW50byBhIENvZGVCbG9jayBk
YXRhIHN0cnVjdHVyZSAtIAogLy8gYSBjb25zdGFudCBpbmRleCwgYXJndW1lbnQsIG9yIGlkZW50
aWZpZXIpIGZyb20gYSBOb2RlKi4KIHN0cnVjdCBPcEluZm8geworICAgIE9wSW5mbygpIDogbV92
YWx1ZSgwKSB7IH0KICAgICBleHBsaWNpdCBPcEluZm8oaW50MzJfdCB2YWx1ZSkgOiBtX3ZhbHVl
KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KICAgICBleHBsaWNpdCBPcEluZm8o
dWludDMyX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkg
eyB9CiAjaWYgT1MoREFSV0lOKSB8fCBVU0UoSlNWQUxVRTY0KQpAQCAtMTA0NCw5ICsxMDM5LDEx
IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgbV9vcEluZm8yID0gcHJlZGljdGlvbjsKICAgICB9
CiAgICAgCi0gICAgYm9vbCBjYW5CZUtub3duRnVuY3Rpb24oKQorICAgIGJvb2wgaGFzQ2VsbE9w
ZXJhbmQoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgQWxs
b2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OgorICAgICAgICBjYXNlIENoZWNrQ2VsbDoKICAgICAg
ICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6CiAgICAgICAgIGNhc2UgTmF0aXZlQ2FsbDoKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTA1NSw1NCArMTA1MiwxNiBAQCBzdHJ1Y3QgTm9kZSB7
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBib29sIGhhc0tub3duRnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgc3dpdGNoIChvcCgpKSB7Ci0gICAgICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0Ogot
ICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6Ci0gICAgICAgICAgICByZXR1cm4gKGJvb2wpbV9vcElu
Zm87Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgCi0gICAgSlNGdW5jdGlvbioga25vd25GdW5jdGlvbigpCi0gICAgewot
ICAgICAgICBBU1NFUlQoY2FuQmVLbm93bkZ1bmN0aW9uKCkpOwotICAgICAgICByZXR1cm4gYml0
d2lzZV9jYXN0PEpTRnVuY3Rpb24qPihtX29wSW5mbyk7Ci0gICAgfQotCi0gICAgdm9pZCBnaXZl
S25vd25GdW5jdGlvbihKU0Z1bmN0aW9uKiBjYWxsRGF0YSkgCisgICAgRnJvemVuVmFsdWUqIGNl
bGxPcGVyYW5kKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChjYW5CZUtub3duRnVuY3Rpb24oKSk7
Ci0gICAgICAgIG1fb3BJbmZvID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oY2FsbERhdGEpOwot
ICAgIH0KLQotICAgIGJvb2wgaGFzRnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgc3dpdGNoIChv
cCgpKSB7Ci0gICAgICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKLSAgICAgICAgY2FzZSBBbGxvY2F0
aW9uUHJvZmlsZVdhdGNocG9pbnQ6Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIEZyb3plblZhbHVlKiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBBU1NFUlQoaGFzRnVu
Y3Rpb24oKSk7CisgICAgICAgIEFTU0VSVChoYXNDZWxsT3BlcmFuZCgpKTsKICAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RnJvemVuVmFsdWUqPihtX29wSW5mbyk7CiAgICAgfQogICAg
IAotICAgIGJvb2wgaGFzRXhlY3V0YWJsZSgpCisgICAgdm9pZCBzZXRDZWxsT3BlcmFuZChGcm96
ZW5WYWx1ZSogdmFsdWUpCiAgICAgewotICAgICAgICByZXR1cm4gb3AoKSA9PSBDaGVja0V4ZWN1
dGFibGU7Ci0gICAgfQotICAgIAotICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBqc0Nhc3Q8RXhlY3V0YWJsZUJhc2UqPihyZWludGVycHJldF9j
YXN0PEpTQ2VsbCo+KG1fb3BJbmZvKSk7CisgICAgICAgIEFTU0VSVChoYXNDZWxsT3BlcmFuZCgp
KTsKKyAgICAgICAgbV9vcEluZm8gPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSk7CiAg
ICAgfQogICAgIAogICAgIGJvb2wgaGFzVmFyaWFibGVXYXRjaHBvaW50U2V0KCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDE3MjgzNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTUzLDcgKzE1Myw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBt
YWNybyhQdXRCeUlkRmx1c2gsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlTXVzdEdlbmVyYXRlIHwg
Tm9kZUNsb2JiZXJzV29ybGQpIFwKICAgICBtYWNybyhQdXRCeUlkRGlyZWN0LCBOb2RlTXVzdEdl
bmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKICAgICBtYWNybyhDaGVja1N0cnVjdHVyZSwg
Tm9kZU11c3RHZW5lcmF0ZSkgXAotICAgIG1hY3JvKENoZWNrRXhlY3V0YWJsZSwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAorICAgIG1hY3JvKEdldEV4ZWN1dGFibGUsIE5vZGVSZXN1bHRKUykgXAogICAg
IG1hY3JvKFB1dFN0cnVjdHVyZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEFsbG9j
YXRlUHJvcGVydHlTdG9yYWdlLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdFN0b3JhZ2Up
IFwKICAgICBtYWNybyhSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlLCBOb2RlTXVzdEdlbmVyYXRl
IHwgTm9kZVJlc3VsdFN0b3JhZ2UpIFwKQEAgLTE4NSw3ICsxODUsOCBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oVmFyaWFibGVXYXRjaHBvaW50LCBOb2RlTXVz
dEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oVmFySW5qZWN0aW9uV2F0Y2hwb2ludCwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAogICAgIG1hY3JvKEZ1bmN0aW9uUmVlbnRyeVdhdGNocG9pbnQsIE5vZGVNdXN0
R2VuZXJhdGUpIFwKLSAgICBtYWNybyhDaGVja0Z1bmN0aW9uLCBOb2RlTXVzdEdlbmVyYXRlKSBc
CisgICAgbWFjcm8oQ2hlY2tDZWxsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oQ2hl
Y2tCYWRDZWxsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQWxsb2NhdGlvblByb2Zp
bGVXYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tJbkJvdW5k
cywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIFwKQEAgLTI4Niw2ICsyODcsMTEgQEAgbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIC8qIGRpZmZlcmVudCBjb21waWxlci4gKi9c
CiAgICAgbWFjcm8oRm9yY2VPU1JFeGl0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgXAorICAg
IC8qIFZlbmRzIGEgYm90dG9tIEpTIHZhbHVlLiBJdCBpcyBpbnZhbGlkIHRvIGV2ZXIgZXhlY3V0
ZSB0aGlzLiBVc2VmdWwgZm9yIGNhc2VzICovXAorICAgIC8qIHdoZXJlIHdlIGtub3cgdGhhdCB3
ZSB3b3VsZCBoYXZlIGV4aXRlZCBidXQgd2UnZCBsaWtlIHRvIHN0aWxsIHRyYWNrIHRoZSBjb250
cm9sICovXAorICAgIC8qIGZsb3cuICovXAorICAgIG1hY3JvKEJvdHRvbVZhbHVlLCBOb2RlUmVz
dWx0SlMpIFwKKyAgICBcCiAgICAgLyogQ2hlY2tzIHRoZSB3YXRjaGRvZyB0aW1lci4gSWYgdGhl
IHRpbWVyIGhhcyBmaXJlZCwgd2UgT1NSIGV4aXQgdG8gdGhlICovIFwKICAgICAvKiBiYXNlbGlu
ZSBKSVQgdG8gcmVkbyB0aGUgd2F0Y2hkb2cgdGltZXIgY2hlY2ssIGFuZCBzZXJ2aWNlIHRoZSB0
aW1lci4gKi8gXAogICAgIG1hY3JvKENoZWNrV2F0Y2hkb2dUaW1lciwgTm9kZU11c3RHZW5lcmF0
ZSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tQ2Fub25pY2Fs
aXphdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNzI4MzUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw4ICs5MiwxMCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5yZW1vdmVFZGdlKGktLSk7CiAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAg
IGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3Jh
cGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9DaGVjaygpOwogICAgICAgICAgICAgICAgIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVt
b3ZhbFBoYXNlLmNwcAkocmV2aXNpb24gMTcyODM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDYg
KzEyNSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUp
OwogICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTQyLDYgKzE0
Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGls
ZHJlbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxv
Y2F0b3IuZnJlZShub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVl
OwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAg
IH0KQEAgLTE0OSw4ICsxNTEsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY2FzZSBIYXJkUGhhbnRvbTogewotICAg
ICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKQorICAgICAgICAg
ICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE3MjgzNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTYsNyArMTk2LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBHZXRHZXR0ZXJTZXR0ZXJC
eU9mZnNldDogeworICAgICAgICBjYXNlIEdldEdldHRlclNldHRlckJ5T2Zmc2V0OgorICAgICAg
ICBjYXNlIEdldEV4ZWN1dGFibGU6IHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGlj
dGlvbihTcGVjQ2VsbE90aGVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC02
NDIsOCArNjQzLDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6CiAgICAg
ICAgIGNhc2UgU2V0QXJndW1lbnQ6CiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6Ci0gICAg
ICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOgotICAgICAgICBjYXNlIENoZWNrRnVuY3Rpb246Cisg
ICAgICAgIGNhc2UgQ2hlY2tDZWxsOgorICAgICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICAg
ICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgICAgIGNhc2UgVGVhck9mZkFjdGl2YXRpb246CiAg
ICAgICAgIGNhc2UgVGVhck9mZkFyZ3VtZW50czoKQEAgLTY2NSw2ICs2NjYsMTAgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBab21iaWVIaW50OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAKKyAgICAgICAgLy8gVGhpcyBnZXRzIGlnbm9yZWQgYmVjYXVzZSBpdCBvbmx5IHByZXRl
bmRzIHRvIHByb2R1Y2UgYSB2YWx1ZS4KKyAgICAgICAgY2FzZSBCb3R0b21WYWx1ZToKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgZ2V0cyBpZ25vcmVk
IGJlY2F1c2UgaXQgYWxyZWFkeSBoYXMgYSBwcmVkaWN0aW9uLgogICAgICAgICBjYXNlIEV4dHJh
Y3RPU1JFbnRyeUxvY2FsOgogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMTcyODM1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE1OSw3ICsxNTksNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0CiAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CiAgICAgY2FzZSBQdXRCeUlkRGlyZWN0Ogog
ICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6Ci0gICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6CisgICAg
Y2FzZSBHZXRFeGVjdXRhYmxlOgogICAgIGNhc2UgR2V0QnV0dGVyZmx5OgogICAgIGNhc2UgQ2hl
Y2tBcnJheToKICAgICBjYXNlIEFycmF5aWZ5OgpAQCAtMTc0LDcgKzE3NCw4IEBAIGJvb2wgc2Fm
ZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIFB1dEdsb2JhbFZhcjoK
ICAgICBjYXNlIFZhcmlhYmxlV2F0Y2hwb2ludDoKICAgICBjYXNlIFZhckluamVjdGlvbldhdGNo
cG9pbnQ6Ci0gICAgY2FzZSBDaGVja0Z1bmN0aW9uOgorICAgIGNhc2UgQ2hlY2tDZWxsOgorICAg
IGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50
OgogICAgIGNhc2UgUmVnRXhwRXhlYzoKICAgICBjYXNlIFJlZ0V4cFRlc3Q6CkBAIC0yNzMsNiAr
Mjc0LDExIEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBj
YXNlIE5hdGl2ZUNvbnN0cnVjdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBUT0RPOiBhZGQg
YSBjaGVjayBmb3IgYWxyZWFkeSBjaGVja2VkLiAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzMzc2OQogCisgICAgY2FzZSBCb3R0b21WYWx1ZToKKyAgICAgICAgLy8g
SWYgaW4gZG91YnQsIGFzc3VtZSB0aGF0IHRoaXMgaXNuJ3Qgc2FmZSB0byBleGVjdXRlLCBqdXN0
IGJlY2F1c2Ugd2UgaGF2ZSBubyB3YXkgb2YKKyAgICAgICAgLy8gY29tcGlsaW5nIHRoaXMgbm9k
ZS4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgY2FzZSBHZXRCeVZhbDoKICAgICBjYXNl
IEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAkocmV2aXNpb24gMTcyODM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjg5LDYgKzY4
OSwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAKICAgICBt
X2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgCisg
ICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5m
bygpOworCisgICAgaWYgKG1faml0LmdyYXBoKCkubV9zaG91bGRQcm9maWxlICYmICFtX3N0YXRl
LmZvck5vZGUoY2FsbGVlRWRnZSkubV92YWx1ZSkgeworICAgICAgICBtX2ppdC52bSgpLmNhbGxF
ZGdlTG9nLT5lbWl0TG9nQ29kZSgKKyAgICAgICAgICAgIG1faml0LCBjYWxsTGlua0luZm8tPmNh
bGxFZGdlUHJvZmlsZSwgY2FsbGVlLmpzVmFsdWVSZWdzKCkpOworICAgIH0KKyAgICAKICAgICBz
bG93UGF0aC5hcHBlbmQoYnJhbmNoTm90Q2VsbChjYWxsZWUuanNWYWx1ZVJlZ3MoKSkpOwogICAg
IHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hQdHJXaXRoUGF0Y2goTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCBjYWxsZWVQYXlsb2FkR1BSLCB0YXJnZXRUb0NoZWNrKSk7CiAgICAgbV9qaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjYWxsZWVQYXlsb2FkR1BSLCBPQkpFQ1Rf
T0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9zY29wZSkpLCByZXN1bHRQYXlsb2FkR1BSKTsKQEAgLTcx
Myw3ICs3MjAsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAg
ICAgICAgIG1faml0Lm1vdmUoY2FsbGVlUGF5bG9hZEdQUiwgR1BSSW5mbzo6cmVnVDApOwogICAg
ICAgICBtX2ppdC5tb3ZlKGNhbGxlZVRhZ0dQUiwgR1BSSW5mbzo6cmVnVDEpOwogICAgIH0KLSAg
ICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZv
KCk7CiAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihpbmZvKSwg
R1BSSW5mbzo6cmVnVDIpOwogICAgIEpJVENvbXBpbGVyOjpDYWxsIHNsb3dDYWxsID0gbV9qaXQu
bmVhckNhbGwoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxNzI4MzUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
MjYsNyArNjI2LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1pc2NTdHJpY3RFcQog
CiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogewotCiAgICAgYm9v
bCBpc0NhbGwgPSBub2RlLT5vcCgpID09IENhbGw7CiAgICAgaWYgKCFpc0NhbGwpCiAgICAgICAg
IERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+b3AoKSA9PSBDb25zdHJ1Y3Qp
OwpAQCAtNjcwLDYgKzY2OSwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2Rl
KiBub2RlCiAKICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7CiAgICAgCisgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBtX2ppdC5jb2Rl
QmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7CisgICAgCisgICAgaWYgKENhbGxFZGdlTG9nOjpp
c0VuYWJsZWQoKQorICAgICAgICAmJiBtX2ppdC5ncmFwaCgpLm1fc2hvdWxkUHJvZmlsZQorICAg
ICAgICAmJiAhbV9zdGF0ZS5mb3JOb2RlKGNhbGxlZUVkZ2UpLm1fdmFsdWUpIHsKKyAgICAgICAg
bV9qaXQudm0oKS0+Y2FsbEVkZ2VMb2ctPmVtaXRMb2dDb2RlKAorICAgICAgICAgICAgbV9qaXQs
IGNhbGxMaW5rSW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBKU1ZhbHVlUmVncyhjYWxsZWVHUFIpKTsK
KyAgICB9CisKICAgICBzbG93UGF0aCA9IG1faml0LmJyYW5jaFB0cldpdGhQYXRjaChNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxlZUdQUiwgdGFyZ2V0VG9DaGVjaywgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIoMCkpOwogCiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhjYWxsZWVHUFIsIE9CSkVDVF9PRkZTRVRPRihKU0Z1bmN0aW9uLCBtX3Njb3Bl
KSksIHJlc3VsdEdQUik7CkBAIC02ODIsNyArNjkwLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
ZW1pdENhbGwoTm9kZSogbm9kZQogICAgIHNsb3dQYXRoLmxpbmsoJm1faml0KTsKICAgICAKICAg
ICBtX2ppdC5tb3ZlKGNhbGxlZUdQUiwgR1BSSW5mbzo6cmVnVDApOyAvLyBDYWxsZWUgbmVlZHMg
dG8gYmUgaW4gcmVnVDAKLSAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IG1faml0LmNv
ZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86OnJlZ1QyKTsgLy8gTGlu
ayBpbmZvIG5lZWRzIHRvIGJlIGluIHJlZ1QyCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgc2xvd0Nh
bGwgPSBtX2ppdC5uZWFyQ2FsbCgpOwogICAgIApAQCAtMzc2OCwxOCArMzc3NSwyMSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVHZXRB
cnJheUxlbmd0aChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgIGNhc2UgQ2hl
Y2tGdW5jdGlvbjogewotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmdW5jdGlvbih0aGlz
LCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkRnVuY3Rpb24s
IEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGZ1bmN0aW9uLmdwcigpKSwgbm9kZS0+Y2hpbGQx
KCksIG1faml0LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBmdW5jdGlvbi5n
cHIoKSwgbm9kZS0+ZnVuY3Rpb24oKS0+dmFsdWUoKS5hc0NlbGwoKSkpOworICAgIGNhc2UgQ2hl
Y2tDZWxsOiB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGNlbGwodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZENlbGwsIEpTVmFsdWVTb3Vy
Y2U6OnVuYm94ZWRDZWxsKGNlbGwuZ3ByKCkpLCBub2RlLT5jaGlsZDEoKSwgbV9qaXQuYnJhbmNo
V2Vha1B0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGNlbGwuZ3ByKCksIG5vZGUtPmNlbGxPcGVy
YW5kKCktPnZhbHVlKCkuYXNDZWxsKCkpKTsKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6IHsK
KyAgICBjYXNlIEdldEV4ZWN1dGFibGU6IHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
ZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBzcGVjdWxhdGVDZWxsVHlw
ZShub2RlLT5jaGlsZDEoKSwgZnVuY3Rpb24uZ3ByKCksIFNwZWNGdW5jdGlvbiwgSlNGdW5jdGlv
blR5cGUpOwotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZEV4ZWN1dGFibGUsIEpTVmFsdWVT
b3VyY2U6OnVuYm94ZWRDZWxsKGZ1bmN0aW9uLmdwcigpKSwgbm9kZS0+Y2hpbGQxKCksIG1faml0
LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVz
cyhmdW5jdGlvbi5ncHIoKSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCBub2Rl
LT5leGVjdXRhYmxlKCkpKTsKLSAgICAgICAgbm9SZXN1bHQobm9kZSk7CisgICAgICAgIEdQUlRl
bXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGZ1bmN0aW9uKTsKKyAgICAgICAgR1BSUmVnIGZ1
bmN0aW9uR1BSID0gZnVuY3Rpb24uZ3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7CisgICAgICAgIHNwZWN1bGF0ZUNlbGxUeXBlKG5vZGUtPmNoaWxkMSgpLCBm
dW5jdGlvbkdQUiwgU3BlY0Z1bmN0aW9uLCBKU0Z1bmN0aW9uVHlwZSk7CisgICAgICAgIG1faml0
LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoZnVuY3Rpb25HUFIsIEpTRnVuY3Rpb246Om9m
ZnNldE9mRXhlY3V0YWJsZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgY2VsbFJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAtNDk3MCw3
ICs0OTgwLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
IGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CiAgICAg
Y2FzZSBGaWF0SW50NTI6Ci0gICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAi
VW5leHBlY3RlZCBGVEwgbm9kZSIpOworICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgorICAgIGNhc2Ug
Qm90dG9tVmFsdWU6CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiVW5l
eHBlY3RlZCBub2RlIik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE3
MjgzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MzU0LDYgKzUzNTQsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdFN3aXRjaChOb2RlKiBubwogICAgIGNhc2UgU3dpdGNoU3RyaW5nOiB7CiAgICAgICAg
IGVtaXRTd2l0Y2hTdHJpbmcobm9kZSwgZGF0YSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgY2FzZSBTd2l0Y2hDZWxsOiB7CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBu
b2RlLCAiQmFkIHN3aXRjaCBraW5kIik7CisgICAgICAgIHJldHVybjsKICAgICB9IH0KICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5j
cHAJKHJldmlzaW9uIDE3MjgzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Ry
dWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MiwxMCArNjIs
NiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2Rl
SW5kZXgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgp
KSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6Ci0gICAgICAgICAgICAg
ICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG5vZGUtPmV4ZWN1dGFibGUoKS0+c3RydWN0dXJlKCkp
OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgICAgICAgICAgICAgICAgICByZWdpc3Rl
clN0cnVjdHVyZXMobm9kZS0+c3RydWN0dXJlU2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmpl
Y3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTcyODM1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghT3B0
aW9uczo6ZW5hYmxlT1NSRW50cnlUb0ZUTCgpKQogICAgICAgICAgICAgbGV2ZWwgPSBGVEw6OkNh
bkNvbXBpbGU7CiAgICAgICAgIAorICAgICAgICBtX2dyYXBoLm1fc2hvdWxkUHJvZmlsZSA9IHRy
dWU7CisgICAgICAgIAogICAgICAgICBJbnNlcnRpb25TZXQgaW5zZXJ0aW9uU2V0KG1fZ3JhcGgp
OwogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tz
KCk7IGJsb2NrSW5kZXgtLTspIHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9n
cmFwaC5ibG9jayhibG9ja0luZGV4KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAxNzI4MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAwLDcgKzIwMCw4IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9k
ZSksICFtYXlFeGl0KG1fZ3JhcGgsIG5vZGUpIHx8IG5vZGUtPm9yaWdpbi5mb3JFeGl0LmlzU2V0
KCkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhhc1N0cnVjdHVy
ZSgpIHx8ICEhbm9kZS0+c3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgIFZBTElEQVRFKChu
b2RlKSwgIW5vZGUtPmhhc0Z1bmN0aW9uKCkgfHwgbm9kZS0+ZnVuY3Rpb24oKS0+dmFsdWUoKS5p
c0Z1bmN0aW9uKCkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhh
c0NlbGxPcGVyYW5kKCkgfHwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5pc0NlbGwoKSk7
CisgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+aGFzQ2VsbE9wZXJhbmQo
KSB8fCAhIW5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkpOwogICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBpZiAoIShub2RlLT5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpKSB7
CiAgICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS0+Y2hpbGQyKCkpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rp
b25QaGFzZS5jcHAJKHJldmlzaW9uIDE3MjgzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExNCw3
ICsxMTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAg
ICAgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6Ci0gICAgICAgICAgICBhZGRM
YXppbHkoanNDYXN0PEpTRnVuY3Rpb24qPihtX25vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkpLT5h
bGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKSk7CisgICAgICAgICAgICBhZGRMYXppbHko
anNDYXN0PEpTRnVuY3Rpb24qPihtX25vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkpLT5hbGxv
Y2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIAogICAgICAgICBjYXNlIFZhcmlhYmxlV2F0Y2hwb2ludDoKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDE3Mjgz
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw4IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2Fu
Q29tcGlsZShOb2RlKiAKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CiAgICAgY2FzZSBJbnZhbGlk
YXRpb25Qb2ludDoKICAgICBjYXNlIFN0cmluZ0NoYXJBdDoKLSAgICBjYXNlIENoZWNrRnVuY3Rp
b246CisgICAgY2FzZSBDaGVja0NlbGw6CisgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgY2Fz
ZSBTdHJpbmdDaGFyQ29kZUF0OgogICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAg
ICAgY2FzZSBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgpAQCAtMTI2LDcgKzEyNyw3IEBAIGlu
bGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIENvbnN0YW50
U3RvcmFnZVBvaW50ZXI6CiAgICAgY2FzZSBDaGVjazoKICAgICBjYXNlIENvdW50RXhlY3V0aW9u
OgotICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOgorICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAg
ICBjYXNlIEdldFNjb3BlOgogICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50Ogog
ICAgIGNhc2UgQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkOgpAQCAtMTY2LDYgKzE2Nyw3IEBAIGlu
bGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIEdldEdlbmVy
aWNQcm9wZXJ0eUVudW1lcmF0b3I6CiAgICAgY2FzZSBHZXRFbnVtZXJhdG9yUG5hbWU6CiAgICAg
Y2FzZSBUb0luZGV4U3RyaW5nOgorICAgIGNhc2UgQm90dG9tVmFsdWU6CiAgICAgICAgIC8vIFRo
ZXNlIGFyZSBPSy4KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJZGVudGl0eToKQEAgLTMyNiw2
ICszMjgsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAg
ICAgIHN3aXRjaCAobm9kZS0+c3dpdGNoRGF0YSgpLT5raW5kKSB7CiAgICAgICAgIGNhc2UgU3dp
dGNoSW1tOgogICAgICAgICBjYXNlIFN3aXRjaENoYXI6CisgICAgICAgIGNhc2UgU3dpdGNoQ2Vs
bDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0
dXJuIENhbm5vdENvbXBpbGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9MTFZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTcyODM1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3
LDcgKzY3LDYgQEAgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBzdGF0aWMgdm9pZCBmdGxVbgogTk9f
UkVUVVJOX0RVRV9UT19DUkFTSCBzdGF0aWMgdm9pZCBmdGxVbnJlYWNoYWJsZSgKICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQmxvY2tJbmRleCBibG9ja0luZGV4LCB1bnNpZ25lZCBub2RlSW5k
ZXgpCiB7Ci0gICAgCiAgICAgZGF0YUxvZygiQ3Jhc2hpbmcgaW4gdGhvdWdodC10by1iZS11bnJl
YWNoYWJsZSBGVEwtZ2VuZXJhdGVkIGNvZGUgZm9yICIsIHBvaW50ZXJEdW1wKGNvZGVCbG9jayks
ICIgYXQgYmFzaWMgYmxvY2sgIyIsIGJsb2NrSW5kZXgpOwogICAgIGlmIChub2RlSW5kZXggIT0g
VUlOVF9NQVgpCiAgICAgICAgIGRhdGFMb2coIiwgbm9kZSBAIiwgbm9kZUluZGV4KTsKQEAgLTE1
MywxMSArMTUyLDE3IEBAIHB1YmxpYzoKICAgICAgICAgZm9yICh1bnNpZ25lZCBibG9ja0luZGV4
ID0gZGVwdGhGaXJzdC5zaXplKCk7IGJsb2NrSW5kZXgtLTsgKSB7CiAgICAgICAgICAgICBCYXNp
Y0Jsb2NrKiBibG9jayA9IGRlcHRoRmlyc3RbYmxvY2tJbmRleF07CiAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIG5vZGVJbmRleCA9IGJsb2NrLT5zaXplKCk7IG5vZGVJbmRleC0tOyApIHsKLSAg
ICAgICAgICAgICAgICBOb2RlKiBtX25vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKLSAgICAg
ICAgICAgICAgICBpZiAobV9ub2RlLT5oYXNLbm93bkZ1bmN0aW9uKCkpIHsKKyAgICAgICAgICAg
ICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7CisgICAgICAgICAgICAgICAg
c3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBOYXRpdmVDYWxsOgor
ICAgICAgICAgICAgICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OiB7CiAgICAgICAgICAgICAgICAg
ICAgIGludCBudW1BcmdzID0gbV9ub2RlLT5udW1DaGlsZHJlbigpOwogICAgICAgICAgICAgICAg
ICAgICBpZiAobnVtQXJncyA+IG1heE51bWJlck9mQXJndW1lbnRzKQogICAgICAgICAgICAgICAg
ICAgICAgICAgbWF4TnVtYmVyT2ZBcmd1bWVudHMgPSBudW1BcmdzOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogICAgICAgICB9CkBAIC00NjgsMTEgKzQ3MywxNCBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIENoZWNrU3RydWN0dXJlOgogICAgICAgICAgICAgY29tcGlsZUNoZWNrU3RydWN0dXJlKCk7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOgotICAgICAg
ICAgICAgY29tcGlsZUNoZWNrRnVuY3Rpb24oKTsKKyAgICAgICAgY2FzZSBDaGVja0NlbGw6Cisg
ICAgICAgICAgICBjb21waWxlQ2hlY2tDZWxsKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBDaGVja0JhZENlbGw6CisgICAgICAgICAgICBjb21waWxlQ2hlY2tCYWRDZWxsKCk7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6Ci0gICAg
ICAgICAgICBjb21waWxlQ2hlY2tFeGVjdXRhYmxlKCk7CisgICAgICAgIGNhc2UgR2V0RXhlY3V0
YWJsZToKKyAgICAgICAgICAgIGNvbXBpbGVHZXRFeGVjdXRhYmxlKCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgICAgICAgICAgY29t
cGlsZUFycmF5aWZ5VG9TdHJ1Y3R1cmUoKTsKQEAgLTE3NDMsMjYgKzE3NTEsMjUgQEAgcHJpdmF0
ZToKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAgICAg
fQogICAgIAotICAgIHZvaWQgY29tcGlsZUNoZWNrRnVuY3Rpb24oKQorICAgIHZvaWQgY29tcGls
ZUNoZWNrQ2VsbCgpCiAgICAgewogICAgICAgICBMVmFsdWUgY2VsbCA9IGxvd0NlbGwobV9ub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgIAogICAgICAgICBzcGVjdWxhdGUoCi0gICAgICAgICAgICBC
YWRGdW5jdGlvbiwganNWYWx1ZVZhbHVlKGNlbGwpLCBtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSwK
LSAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKGNlbGwsIHdlYWtQb2ludGVyKG1fbm9kZS0+ZnVu
Y3Rpb24oKS0+dmFsdWUoKS5hc0NlbGwoKSkpKTsKKyAgICAgICAgICAgIEJhZENlbGwsIGpzVmFs
dWVWYWx1ZShjZWxsKSwgbV9ub2RlLT5jaGlsZDEoKS5ub2RlKCksCisgICAgICAgICAgICBtX291
dC5ub3RFcXVhbChjZWxsLCB3ZWFrUG9pbnRlcihtX25vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVl
KCkuYXNDZWxsKCkpKSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgY29tcGlsZUNoZWNrRXhlY3V0
YWJsZSgpCisgICAgdm9pZCBjb21waWxlQ2hlY2tCYWRDZWxsKCkKKyAgICB7CisgICAgICAgIHRl
cm1pbmF0ZShCYWRDZWxsKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjb21waWxlR2V0RXhlY3V0
YWJsZSgpCiAgICAgewogICAgICAgICBMVmFsdWUgY2VsbCA9IGxvd0NlbGwobV9ub2RlLT5jaGls
ZDEoKSk7Ci0gICAgICAgIAogICAgICAgICBzcGVjdWxhdGVGdW5jdGlvbihtX25vZGUtPmNoaWxk
MSgpLCBjZWxsKTsKLSAgICAgICAgCi0gICAgICAgIHNwZWN1bGF0ZSgKLSAgICAgICAgICAgIEJh
ZEV4ZWN1dGFibGUsIGpzVmFsdWVWYWx1ZShjZWxsKSwgbV9ub2RlLT5jaGlsZDEoKS5ub2RlKCks
Ci0gICAgICAgICAgICBtX291dC5ub3RFcXVhbCgKLSAgICAgICAgICAgICAgICBtX291dC5sb2Fk
UHRyKGNlbGwsIG1faGVhcHMuSlNGdW5jdGlvbl9leGVjdXRhYmxlKSwKLSAgICAgICAgICAgICAg
ICB3ZWFrUG9pbnRlcihtX25vZGUtPmV4ZWN1dGFibGUoKSkpKTsKKyAgICAgICAgc2V0SlNWYWx1
ZShtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNGdW5jdGlvbl9leGVjdXRhYmxlKSk7CiAg
ICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUFycmF5aWZ5VG9TdHJ1Y3R1cmUoKQpAQCAtMzY3
Myw5ICszNjgwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgaW50IG51bVBhc3NlZEFyZ3MgPSBtX25v
ZGUtPm51bUNoaWxkcmVuKCkgLSAxOwogICAgICAgICBpbnQgbnVtQXJncyA9IG51bVBhc3NlZEFy
Z3MgKyBkdW1teVRoaXNBcmd1bWVudDsKIAotICAgICAgICBBU1NFUlQobV9ub2RlLT5oYXNLbm93
bkZ1bmN0aW9uKCkpOwotCi0gICAgICAgIEpTRnVuY3Rpb24qIGtub3duRnVuY3Rpb24gPSBtX25v
ZGUtPmtub3duRnVuY3Rpb24oKTsKKyAgICAgICAgSlNGdW5jdGlvbioga25vd25GdW5jdGlvbiA9
IGpzQ2FzdDxKU0Z1bmN0aW9uKj4obV9ub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpLmFzQ2Vs
bCgpKTsKICAgICAgICAgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24gPSBrbm93bkZ1bmN0aW9uLT5u
YXRpdmVGdW5jdGlvbigpOwogCiAgICAgICAgIERsX2luZm8gaW5mbzsKQEAgLTM5MTgsMTAgKzM5
MjMsMzcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICAKLSAgICAgICAgY2FzZSBTd2l0Y2hTdHJpbmc6CisgICAgICAgIGNhc2UgU3dpdGNoU3RyaW5n
OiB7CiAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiVW5pbXBsZW1lbnRl
ZCIpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICBjYXNlIFN3aXRjaENlbGw6IHsKKyAgICAgICAgICAgIExW
YWx1ZSBjZWxsOworICAgICAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSkgeworICAgICAgICAgICAgY2FzZSBDZWxsVXNlOiB7CisgICAgICAgICAgICAgICAgY2VsbCA9
IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIFVudHlwZWRVc2U6
IHsKKyAgICAgICAgICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNlbGxDYXNlID0gRlRMX05FV19C
TE9DSyhtX291dCwgKCJTd2l0Y2gvU3dpdGNoQ2VsbCBjZWxsIGNhc2UiKSk7CisgICAgICAgICAg
ICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgICAgICAgICBpc0NlbGwodmFsdWUpLCB1
bnN1cmUoY2VsbENhc2UpLCB1bnN1cmUobG93QmxvY2soZGF0YS0+ZmFsbFRocm91Z2guYmxvY2sp
KSk7CisgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY2VsbENhc2UpOworICAgICAgICAg
ICAgICAgIGNlbGwgPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkJhZCB1c2Uga2luZCIpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
YnVpbGRTd2l0Y2gobV9ub2RlLT5zd2l0Y2hEYXRhKCksIG1fb3V0LmludFB0ciwgY2VsbCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gfQogICAgICAgICAKICAgICAgICAgREZHX0NS
QVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkJhZCBzd2l0Y2gga2luZCIpOwogICAgIH0KQEAgLTUxODYs
NyArNTIxOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIFZlY3RvcjxTd2l0Y2hDYXNlPiBjYXNlczsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEtPmNhc2VzLnNpemUoKTsgKytp
KSB7CiAgICAgICAgICAgICBjYXNlcy5hcHBlbmQoU3dpdGNoQ2FzZSgKLSAgICAgICAgICAgICAg
ICBjb25zdEludCh0eXBlLCBkYXRhLT5jYXNlc1tpXS52YWx1ZS5zd2l0Y2hMb29rdXBWYWx1ZSgp
KSwKKyAgICAgICAgICAgICAgICBjb25zdEludCh0eXBlLCBkYXRhLT5jYXNlc1tpXS52YWx1ZS5z
d2l0Y2hMb29rdXBWYWx1ZShkYXRhLT5raW5kKSksCiAgICAgICAgICAgICAgICAgbG93QmxvY2so
ZGF0YS0+Y2FzZXNbaV0udGFyZ2V0LmJsb2NrKSwgV2VpZ2h0KGRhdGEtPmNhc2VzW2ldLnRhcmdl
dC5jb3VudCkpKTsKICAgICAgICAgfQogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxNzI4MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTg0LDYgKzk4NCwxMSBAQCB2b2lkIEhl
YXA6OmNvbGxlY3QoSGVhcE9wZXJhdGlvbiBjb2xsZWN0CiAgICAgICAgIHZtKCktPnR5cGVQcm9m
aWxlckxvZygpLT5wcm9jZXNzTG9nRW50cmllcyhBU0NJSUxpdGVyYWwoIkdDIikpOwogICAgIH0K
ICAgICAKKyAgICBpZiAodm0oKS0+Y2FsbEVkZ2VMb2cpIHsKKyAgICAgICAgRGVmZXJHQ0ZvckFX
aGlsZSBhd2hpbGUoKnRoaXMpOworICAgICAgICB2bSgpLT5jYWxsRWRnZUxvZy0+cHJvY2Vzc0xv
ZygpOworICAgIH0KKyAgICAKICAgICBSRUxFQVNFX0FTU0VSVCghbV9kZWZlcnJhbERlcHRoKTsK
ICAgICBBU1NFUlQodm0oKS0+Y3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CiAgICAg
UkVMRUFTRV9BU1NFUlQodm0oKS0+YXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRh
KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDE3MjgzNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4LDYgKzg4
LDIxIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KICAgICAKKyAgICB2b2lkIGxvYWRWYWx1ZShB
ZGRyZXNzIGFkZHJlc3MsIEpTVmFsdWVSZWdzIHJlZ3MpCisgICAgeworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgICAgIGxvYWQ2NChhZGRyZXNzLCByZWdzLmdwcigpKTsKKyNlbHNlCisgICAgICAg
IGlmIChhZGRyZXNzLmJhc2UgPT0gcmVncy5wYXlsb2FkR1BSKCkpIHsKKyAgICAgICAgICAgIGxv
YWQzMihhZGRyZXNzLndpdGhPZmZzZXQoVGFnT2Zmc2V0KSwgcmVncy50YWdHUFIoKSk7CisgICAg
ICAgICAgICBsb2FkMzIoYWRkcmVzcy53aXRoT2Zmc2V0KFBheWxvYWRPZmZzZXQpLCByZWdzLnBh
eWxvYWRHUFIoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2FkMzIoYWRkcmVz
cy53aXRoT2Zmc2V0KFBheWxvYWRPZmZzZXQpLCByZWdzLnBheWxvYWRHUFIoKSk7CisgICAgICAg
ICAgICBsb2FkMzIoYWRkcmVzcy53aXRoT2Zmc2V0KFRhZ09mZnNldCksIHJlZ3MudGFnR1BSKCkp
OworICAgICAgICB9CisjZW5kaWYKKyAgICB9CisgICAgCiAgICAgdm9pZCBtb3ZlVHJ1c3RlZFZh
bHVlKEpTVmFsdWUgdmFsdWUsIEpTVmFsdWVSZWdzIHJlZ3MpCiAgICAgewogI2lmIFVTRShKU1ZB
TFVFNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgJKHJl
dmlzaW9uIDE3MjgzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2NjYsNiArMTY2NiwxNSBAQCBwdWJsaWM6CiAgICAgICAg
IG1vdmUoYXJnNCwgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKICAgICB9CiAjZW5kaWYKKyAgICAK
KyAgICB2b2lkIHNldHVwQXJndW1lbnRzKEpTVmFsdWVSZWdzIGFyZzEpCisgICAgeworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgICAgIHNldHVwQXJndW1lbnRzKGFyZzEuZ3ByKCkpOworI2Vsc2UK
KyAgICAgICAgc2V0dXBBcmd1bWVudHMoYXJnMS5wYXlsb2FkR1BSKCksIGFyZzEudGFnR1BSKCkp
OworI2VuZGlmCisgICAgfQogCiAgICAgdm9pZCBzZXR1cFJlc3VsdHMoR1BSUmVnIGRlc3RBLCBH
UFJSZWcgZGVzdEIpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJ
bmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgJ
KHJldmlzaW9uIDE3MjgzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5o
CSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw4IEBAIHB1YmxpYzoKICAgICBHUFJSZWcgdGFn
R1BSKCkgY29uc3QgeyByZXR1cm4gSW52YWxpZEdQUlJlZzsgfQogICAgIEdQUlJlZyBwYXlsb2Fk
R1BSKCkgY29uc3QgeyByZXR1cm4gbV9ncHI7IH0KICAgICAKKyAgICBib29sIHVzZXMoR1BSUmVn
IGdwcikgY29uc3QgeyByZXR1cm4gbV9ncHIgPT0gZ3ByOyB9CisgICAgCiBwcml2YXRlOgogICAg
IEdQUlJlZyBtX2dwcjsKIH07CkBAIC0xNjksNiArMTcxLDggQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gdGFnR1BSKCk7CiAgICAgfQogCisgICAgYm9vbCB1c2VzKEdQUlJlZyBncHIpIGNvbnN0
IHsgcmV0dXJuIG1fdGFnR1BSID09IGdwciB8fCBtX3BheWxvYWRHUFIgPT0gZ3ByOyB9CisgICAg
CiBwcml2YXRlOgogICAgIGludDhfdCBtX3RhZ0dQUjsKICAgICBpbnQ4X3QgbV9wYXlsb2FkR1BS
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkocmV2
aXNpb24gMTcyODM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDAsNiArMzAwLDEzIEBAIHZvaWQgSklUOjpjb21waWxl
T3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICBzdG9yZTMyKHJlZ1QwLCBBZGRyZXNzKHN0YWNr
UG9pbnRlclJlZ2lzdGVyLCBKU1N0YWNrOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVv
ZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkp
OwogICAgIHN0b3JlMzIocmVnVDEsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpTU3Rh
Y2s6OkNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBUYWdPZmZz
ZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKIAorICAgIENhbGxMaW5rSW5mbyogaW5m
byA9IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsKKworICAgIGlmIChDYWxsRWRnZUxv
Zzo6aXNFbmFibGVkKCkgJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CisgICAgICAgIG1fdm0t
PmVuc3VyZUNhbExFZGdlTG9nKCkuZW1pdExvZ0NvZGUoCisgICAgICAgICAgICAqdGhpcywgaW5m
by0+Y2FsbEVkZ2VQcm9maWxlLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApKTsKKyAgICB9CisK
ICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbF9ldmFsKSB7CiAgICAgICAgIGNvbXBpbGVDYWxs
RXZhbChpbnN0cnVjdGlvbik7CiAgICAgICAgIHJldHVybjsKQEAgLTMxMyw3ICszMjAsNiBAQCB2
b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgYWRkU2xvd0Nhc2Uo
c2xvd0Nhc2UpOwogCiAgICAgQVNTRVJUKG1fY2FsbENvbXBpbGF0aW9uSW5mby5zaXplKCkgPT0g
Y2FsbExpbmtJbmZvSW5kZXgpOwotICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1fY29kZUJsb2Nr
LT5hZGRDYWxsTGlua0luZm8oKTsKICAgICBpbmZvLT5jYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6
Y2FsbFR5cGVGb3Iob3Bjb2RlSUQpOwogICAgIGluZm8tPmNvZGVPcmlnaW4gPSBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVPZmZzZXQpOwogICAgIGluZm8tPmNhbGxlZUdQUiA9IHJlZ1QwOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAxNzI4MzUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTIsNiArMjEyLDExIEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSwgcmVnVDApOyAvLyByZWdUMCBob2xk
cyBjYWxsZWUuCiAKICAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lz
dGVyLCBKU1N0YWNrOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rlcikp
IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CisgICAgCisgICAgQ2FsbExpbmtJbmZvKiBp
bmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5mbygpOworCisgICAgaWYgKENhbGxFZGdl
TG9nOjppc0VuYWJsZWQoKSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpCisgICAgICAgIG1fdm0t
PmVuc3VyZUNhbGxFZGdlTG9nKCkuZW1pdExvZ0NvZGUoKnRoaXMsIGluZm8tPmNhbGxFZGdlUHJv
ZmlsZSwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKIAogICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxs
X2V2YWwpIHsKICAgICAgICAgY29tcGlsZUNhbGxFdmFsKGluc3RydWN0aW9uKTsKQEAgLTIyMyw3
ICsyMjgsNiBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAg
YWRkU2xvd0Nhc2Uoc2xvd0Nhc2UpOwogCiAgICAgQVNTRVJUKG1fY2FsbENvbXBpbGF0aW9uSW5m
by5zaXplKCkgPT0gY2FsbExpbmtJbmZvSW5kZXgpOwotICAgIENhbGxMaW5rSW5mbyogaW5mbyA9
IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsKICAgICBpbmZvLT5jYWxsVHlwZSA9IENh
bGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3Iob3Bjb2RlSUQpOwogICAgIGluZm8tPmNvZGVPcmlnaW4g
PSBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpOwogICAgIGluZm8tPmNhbGxlZUdQUiA9IHJl
Z1QwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNp
b24gMTcyODM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjcsNiArMTY3LDggQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRp
b25TdHJpbmc7CiAgICAgdihib29sLCBlbmFibGVBY2Nlc3NJbmxpbmluZywgdHJ1ZSkgXAogICAg
IHYoYm9vbCwgZW5hYmxlUG9seXZhcmlhbnREZXZpcnR1YWxpemF0aW9uLCB0cnVlKSBcCiAgICAg
dihib29sLCBlbmFibGVQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nLCB0cnVlKSBcCisgICAgdihi
b29sLCBlbmFibGVQb2x5bW9ycGhpY0NhbGxJbmxpbmluZywgdHJ1ZSkgXAorICAgIHYoYm9vbCwg
ZW5hYmxlQ2FsbEVkZ2VQcm9maWxpbmcsIHRydWUpIFwKICAgICB2KGJvb2wsIG9wdGltaXplTmF0
aXZlQ2FsbHMsIGZhbHNlKSBcCiAgICAgXAogICAgIHYoYm9vbCwgZW5hYmxlQ29uY3VycmVudEpJ
VCwgdHJ1ZSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNp
b24gMTcyODM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNzMsNiArMzczLDEzIEBAIFZNKiYgVk06OnNoYXJlZEluc3RhbmNlSW50
ZXJuYWwoKQogICAgIHJldHVybiBzaGFyZWRJbnN0YW5jZTsKIH0KIAorQ2FsbEVkZ2VMb2cmIFZN
OjplbnN1cmVDYWxsRWRnZUxvZygpCit7CisgICAgaWYgKCFjYWxsRWRnZUxvZykKKyAgICAgICAg
Y2FsbEVkZ2VMb2cgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxFZGdlTG9nPigpOworICAgIHJldHVy
biAqY2FsbEVkZ2VMb2c7Cit9CisKICNpZiBFTkFCTEUoSklUKQogc3RhdGljIFRodW5rR2VuZXJh
dG9yIHRodW5rR2VuZXJhdG9yRm9ySW50cmluc2ljKEludHJpbnNpYyBpbnRyaW5zaWMpCiB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE3MjgzNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYg
KzcyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcml0eUNoZWNrRmFpbFJldHVy
blRodW5rczsKICAgICBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7CisgICAgY2xhc3MgQ2FsbEVk
Z2VMb2c7CiAgICAgY2xhc3MgQ29kZUJsb2NrOwogICAgIGNsYXNzIENvZGVDYWNoZTsKICAgICBj
bGFzcyBDb21tb25JZGVudGlmaWVyczsKQEAgLTIzMyw2ICsyMzQsOSBAQCBuYW1lc3BhY2UgSlND
IHsKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgT3duUHRyPERGRzo6TG9uZ0xpdmVkU3Rh
dGU+IGRmZ1N0YXRlOwogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorICAgICAgICAKKyAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPENhbGxFZGdlTG9nPiBjYWxsRWRnZUxvZzsKKyAgICAgICAgQ2Fs
bEVkZ2VMb2cmIGVuc3VyZUNhbGxFZGdlTG9nKCk7CiAKICAgICAgICAgVk1UeXBlIHZtVHlwZTsK
ICAgICAgICAgQ2xpZW50RGF0YSogY2xpZW50RGF0YTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvbmV3LWFycmF5LXRoZW4tZXhpdC5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL25ldy1hcnJheS10aGVuLWV4aXQuanMJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL25ldy1h
cnJheS10aGVuLWV4aXQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorZnVuY3Rp
b24gZm9vKGYpIHsKKyAgICByZXR1cm4gbmV3IGYoKTsKK30KKworbm9JbmxpbmUoZm9vKTsKKwor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKQorICAgIGZvbyhBcnJheSk7CisKK3ZhciBk
aWRDYWxsID0gZmFsc2U7Citmb28oZnVuY3Rpb24oKSB7IGRpZENhbGwgPSB0cnVlOyB9KTsKKwor
aWYgKCFkaWRDYWxsKQorICAgIHRocm93ICJFcnJvcjogZGlkbid0IGNhbGwgbXkgZnVuY3Rpb24u
IjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4
aXQtdGhpcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL3BvbHktY2FsbC1leGl0LXRoaXMuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL3BvbHktY2FsbC1leGl0LXRoaXMuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwyOSBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIGZvbyh4KSB7
IHJldHVybiAxICsgdGhpcy5mOyB9CisgICAgZnVuY3Rpb24gYmFyKHgpIHsgcmV0dXJuIHggKyB0
aGlzLmY7IH0KKyAgICBmdW5jdGlvbiBiYXooeCkgeyByZXR1cm4geCArIDEgKyB0aGlzLmY7IH0K
KyAgICAKKyAgICB2YXIgbiA9IDEwMDAwMDA7CisgICAgCisgICAgdmFyIHJlc3VsdCA9IChmdW5j
dGlvbihvKSB7CisgICAgICAgIHZhciBmID0ge2Z1bjpmb28sIGY6MX07CisgICAgICAgIHZhciBn
ID0ge2Z1bjpiYXIsIGY6Mn07CisgICAgICAgIHZhciBoID0ge2Z1bjpiYXosIGY6M307CisgICAg
ICAgIAorICAgICAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBuOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChpID09IG4gLSAxKQorICAgICAgICAgICAgICAg
IGYgPSBoOworICAgICAgICAgICAgcmVzdWx0ICs9IGYuZnVuKG8uZik7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIHZhciB0bXAgPSBmOworICAgICAgICAgICAgZiA9IGc7CisgICAgICAgICAg
ICBnID0gdG1wOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0pKHtmOjQyfSk7CisgICAgCisgICAgaWYgKHJlc3VsdCAhPSAoKG4gLyAyIC0gMSkgKiAo
NDIgKyAyKSkgKyAobiAvIDIgKiAoMSArIDEpICsgKDQyICsgMSArIDMpKSkKKyAgICAgICAgdGhy
b3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfSkoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wb2x5LWNhbGwtZXhpdC5qcwko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcG9seS1j
YWxsLWV4aXQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOSBAQAorKGZ1bmN0aW9uKCkg
eworICAgIGZ1bmN0aW9uIGZvbyh4KSB7IHJldHVybiAxOyB9CisgICAgZnVuY3Rpb24gYmFyKHgp
IHsgcmV0dXJuIHg7IH0KKyAgICBmdW5jdGlvbiBiYXooeCkgeyByZXR1cm4geCArIDE7IH0KKyAg
ICAKKyAgICB2YXIgbiA9IDEwMDAwMDA7CisgICAgCisgICAgdmFyIHJlc3VsdCA9IChmdW5jdGlv
bihvKSB7CisgICAgICAgIHZhciBmID0gZm9vOworICAgICAgICB2YXIgZyA9IGJhcjsKKyAgICAg
ICAgdmFyIGggPSBiYXo7CisgICAgICAgIAorICAgICAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChpID09IG4g
LSAxKQorICAgICAgICAgICAgICAgIGYgPSBoOworICAgICAgICAgICAgcmVzdWx0ICs9IGYoby5m
KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIHRtcCA9IGY7CisgICAgICAgICAgICBm
ID0gZzsKKyAgICAgICAgICAgIGcgPSB0bXA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfSkoe2Y6NDJ9KTsKKyAgICAKKyAgICBpZiAocmVzdWx0ICE9
ICgobiAvIDIgLSAxKSAqIDQyKSArIChuIC8gMiAqIDEpICsgKDQyICsgMSkpCisgICAgICAgIHRo
cm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30pKCk7CkluZGV4OiBTb3VyY2Uv
V1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNp
b24gMTcyODM1KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyMyBAQAorMjAxNC0wOC0yMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgor
CisgICAgICAgIERGRyAob3IgRlRMKSBzaG91bGQgYmUgYWJsZSB0byBkbyBwb2x5bW9ycGhpYyBj
YWxsIGlubGluaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMzUxNDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAg
ICAgCisgICAgICAgIEFkZCBzb21lIHBvd2VyIHRoYXQgSSBuZWVkIGZvciBjYWxsIGVkZ2UgcHJv
ZmlsaW5nLgorCisgICAgICAgICogd3RmL093blB0ci5oOgorICAgICAgICAoV1RGOjpPd25QdHI8
VD46OmNyZWF0ZVRyYW5zYWN0aW9uYWxseSk6CisgICAgICAgICogd3RmL1NwZWN0cnVtLmg6Cisg
ICAgICAgIChXVEY6OlNwZWN0cnVtOjphZGQpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6YWRk
QWxsKToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OmdldCk6CisgICAgICAgIChXVEY6OlNwZWN0
cnVtOjpzaXplKToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OktleUFuZENvdW50OjpLZXlBbmRD
b3VudCk6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpjbGVhcik6CisgICAgICAgIChXVEY6OlNw
ZWN0cnVtOjpyZW1vdmVJZik6CisKIDIwMTQtMDgtMjEgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgU0FUVVJBVEVEX0xBWU9VVF9BUklUSE1FVElDLgpJ
bmRleDogU291cmNlL1dURi93dGYvT3duUHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvT3duUHRyLmgJKHJldmlzaW9uIDE3MjgzNSkKKysrIFNvdXJjZS9XVEYvd3RmL093blB0ci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIw
MDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAt
MjIsNiArMjIsNyBAQAogI2RlZmluZSBXVEZfT3duUHRyX2gKIAogI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyQ29tbW9uLmg+CiAjaW5jbHVkZSA8YWxnb3Jp
dGhtPgpAQCAtNzIsNiArNzMsMTQgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFU+IE93blB0ciYgb3BlcmF0b3I9KE93blB0cjxVPiYmKTsKIAogICAgICAgICB2
b2lkIHN3YXAoT3duUHRyJiBvKSB7IHN0ZDo6c3dhcChtX3B0ciwgby5tX3B0cik7IH0KKyAgICAg
ICAgCisgICAgICAgIC8vIENvbnN0cnVjdCBhbiBvYmplY3QgdG8gc3RvcmUgaW50byB0aGlzIE93
blB0ciwgYnV0IG9ubHkgc28gbG9uZyBhcyB0aGlzIE93blB0cgorICAgICAgICAvLyBkb2Vzbid0
IGFscmVhZHkgcG9pbnQgdG8gYW4gb2JqZWN0LiBUaGlzIHdpbGwgZW5zdXJlIHRoYXQgYWZ0ZXIg
eW91IGNhbGwgdGhpcywKKyAgICAgICAgLy8gdGhlIE93blB0ciB3aWxsIHBvaW50IHRvIGFuIGlu
c3RhbmNlIG9mIFQuIFRoaXMgaW5zdGFuY2UgbWF5IG9yIG1heSBub3QgaGF2ZSBiZWVuCisgICAg
ICAgIC8vIGNyZWF0ZWQgYnkgdGhpcyBjYWxsLiBNb3Jlb3ZlciwgdGhpcyBjYWxsIHVzZXMgYW4g
b3Bwb3J0dW5pc3RpYyB0cmFuc2FjdGlvbiwgaW4KKyAgICAgICAgLy8gdGhhdCB3ZSBtYXkgY3Jl
YXRlIGFuIGluc3RhbmNlIG9mIFQgYW5kIHRoZW4gaW1tZWRpYXRlbHkgdGhyb3cgaXQgYXdheS4K
KyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KKyAgICAgICAgdm9pZCBjcmVhdGVU
cmFuc2FjdGlvbmFsbHkoQXJncy4uLiBhcmdzKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGV4
cGxpY2l0IE93blB0cihQdHJUeXBlIHB0cikgOiBtX3B0cihwdHIpIHsgfQpAQCAtMTg2LDYgKzE5
NSwyOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuIHAuZ2V0KCk7CiAgICAgfQog
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gaW5s
aW5lIHZvaWQgT3duUHRyPFQ+OjpjcmVhdGVUcmFuc2FjdGlvbmFsbHkoQXJncy4uLiBhcmdzKQor
ICAgIHsKKyAgICAgICAgaWYgKG1fcHRyKSB7CisgICAgICAgICAgICBXVEY6OmxvYWRMb2FkRmVu
Y2UoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
VCogbmV3T2JqZWN0ID0gbmV3IFQoYXJncy4uLik7CisgICAgICAgIFdURjo6c3RvcmVTdG9yZUZl
bmNlKCk7CisjaWYgRU5BQkxFKENPTVBBUkVfQU5EX1NXQVApCisgICAgICAgIGRvIHsKKyAgICAg
ICAgICAgIGlmIChtX3B0cikgeworICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdPYmplY3Q7Cisg
ICAgICAgICAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9IHdoaWxlICghV1RGOjp3ZWFrQ29tcGFyZUFu
ZFN3YXAoYml0d2lzZV9jYXN0PHZvaWQqdm9sYXRpbGUqPigmbV9wdHIpLCBudWxscHRyLCBuZXdP
YmplY3QpKTsKKyNlbHNlCisgICAgICAgIG1fcHRyID0gbmV3T2JqZWN0OworI2VuZGlmCisgICAg
fQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpPd25QdHI7CkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NwZWN0
cnVtLmgJKHJldmlzaW9uIDE3MjgzNSkKKysrIFNvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTMyLDIyICszMiwzMSBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdGVtcGxh
dGU8dHlwZW5hbWUgVD4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIENvdW50ZXJUeXBl
ID0gdW5zaWduZWQ+CiBjbGFzcyBTcGVjdHJ1bSB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBl
bmFtZSBIYXNoTWFwPFQsIHVuc2lnbmVkIGxvbmc+OjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB0
eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz46OmNvbnN0X2l0ZXJhdG9y
IGNvbnN0X2l0ZXJhdG9yOworICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVy
VHlwZT46Oml0ZXJhdG9yIGl0ZXJhdG9yOworICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxU
LCBDb3VudGVyVHlwZT46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwogICAgIAogICAg
IFNwZWN0cnVtKCkgeyB9CiAgICAgCi0gICAgdm9pZCBhZGQoY29uc3QgVCYga2V5LCB1bnNpZ25l
ZCBsb25nIGNvdW50ID0gMSkKKyAgICB2b2lkIGFkZChjb25zdCBUJiBrZXksIENvdW50ZXJUeXBl
IGNvdW50ID0gMSkKICAgICB7Ci0gICAgICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwgdW5zaWduZWQg
bG9uZz46OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBjb3VudCk7CisgICAgICAg
IGlmICghY291bnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHR5cGVuYW1lIEhhc2hN
YXA8VCwgQ291bnRlclR5cGU+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgY291
bnQpOwogICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSArPSBjb3VudDsKICAgICB9CiAgICAgCi0gICAgdW5zaWduZWQgbG9u
ZyBnZXQoY29uc3QgVCYga2V5KSBjb25zdAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAg
dm9pZCBhZGRBbGwoY29uc3QgU3BlY3RydW08VCwgVT4mIG90aGVyU3BlY3RydW0pCisgICAgewor
ICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBvdGhlclNwZWN0cnVtKQorICAgICAgICAgICAgYWRk
KGVudHJ5LmtleSwgZW50cnkuY291bnQpOworICAgIH0KKyAgICAKKyAgICBDb3VudGVyVHlwZSBn
ZXQoY29uc3QgVCYga2V5KSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3RfaXRlcmF0b3IgaXRl
ciA9IG1fbWFwLmZpbmQoa2V5KTsKICAgICAgICAgaWYgKGl0ZXIgPT0gbV9tYXAuZW5kKCkpCkBA
IC01NSw2ICs2NCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOwogICAg
IH0KICAgICAKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsg
fQorICAgIAogICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQog
ICAgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9CiAgICAgY29uc3RfaXRl
cmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX21hcC5iZWdpbigpOyB9CkBAIC02Myw3ICs3
NCw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgS2V5QW5kQ291bnQgewogICAgICAgICBLZXlBbmRD
b3VudCgpIHsgfQogICAgICAgICAKLSAgICAgICAgS2V5QW5kQ291bnQoY29uc3QgVCYga2V5LCB1
bnNpZ25lZCBsb25nIGNvdW50KQorICAgICAgICBLZXlBbmRDb3VudChjb25zdCBUJiBrZXksIENv
dW50ZXJUeXBlIGNvdW50KQogICAgICAgICAgICAgOiBrZXkoa2V5KQogICAgICAgICAgICAgLCBj
b3VudChjb3VudCkKICAgICAgICAgewpAQCAtODAsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgICAg
IH0KIAogICAgICAgICBUIGtleTsKLSAgICAgICAgdW5zaWduZWQgbG9uZyBjb3VudDsKKyAgICAg
ICAgQ291bnRlclR5cGUgY291bnQ7CiAgICAgfTsKICAgICAKICAgICAvLyBSZXR1cm5zIGEgbGlz
dCBvcmRlcmVkIGZyb20gbG93ZXN0LWNvdW50IHRvIGhpZ2hlc3QtY291bnQuCkBAIC05NCw4ICsx
MDUsMTggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbGlzdDsKICAgICB9CiAgICAgCisgICAg
dm9pZCBjbGVhcigpIHsgbV9tYXAuY2xlYXIoKTsgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0b3I+CisgICAgdm9pZCByZW1vdmVJZihjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQor
ICAgIHsKKyAgICAgICAgbV9tYXAucmVtb3ZlSWYoW2Z1bmN0b3JdICh0eXBlbmFtZSBIYXNoTWFw
PFQsIENvdW50ZXJUeXBlPjo6S2V5VmFsdWVQYWlyVHlwZSYgcGFpcikgeworICAgICAgICAgICAg
ICAgIHJldHVybiBmdW5jdG9yKEtleUFuZENvdW50KHBhaXIua2V5LCBwYWlyLnZhbHVlKSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICB9CisgICAgCiBwcml2YXRlOgotICAgIEhhc2hNYXA8VCwgdW5z
aWduZWQgbG9uZz4gbV9tYXA7CisgICAgSGFzaE1hcDxULCBDb3VudGVyVHlwZT4gbV9tYXA7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MjgzNSkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE0
LTA4LTIwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgREZHIChv
ciBGVEwpIHNob3VsZCBiZSBhYmxlIHRvIGRvIHBvbHltb3JwaGljIGNhbGwgaW5saW5pbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTE0NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMvcmVncmVz
cy9zY3JpcHQtdGVzdHMvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQuanM6IEFkZGVkLgorICAgICAg
ICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwuanM6IEFkZGVkLgor
ICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVk
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC5odG1s
OiBBZGRlZC4KKwogMjAxNC0wOC0yMSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgog
CiAgICAgICAgIEVuYWJsZSBTQVRVUkFURURfTEFZT1VUX0FSSVRITUVUSUMuCkluZGV4OiBMYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNh
bGwtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVz
cy9zaW1wbGUtcG9seS1jYWxsCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5
LWNhbGwtbmVzdGVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zaW1wbGUt
cG9seS1jYWxsLW5lc3RlZAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBu
byBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcG9seS1j
YWxsLW5lc3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2lt
cGxlLXBvbHktY2FsbC1uZXN0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9F
TiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10
ZXN0cy9zaW1wbGUtcG9seS1jYWxsLW5lc3RlZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2Fs
bC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3Jp
cHQtdGVzdHMvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQuanMJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1w
bGUtcG9seS1jYWxsLW5lc3RlZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI1IEBACiso
ZnVuY3Rpb24oKSB7CisgICAgZnVuY3Rpb24gZm9vKHgpIHsgcmV0dXJuIDE7IH0KKyAgICBmdW5j
dGlvbiBiYXIoeCkgeyByZXR1cm4geDsgfQorICAgIAorICAgIHZhciBuID0gMTAwMDAwMDsKKyAg
ICAKKyAgICB2YXIgcmVzdWx0ID0gKGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgZiA9IGZvbzsK
KyAgICAgICAgdmFyIGcgPSBiYXI7CisgICAgICAgIAorICAgICAgICB2YXIgcmVzdWx0ID0gMDsK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgICAgIHJlc3Vs
dCArPSBmKDQyKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIHRtcCA9IGY7CisgICAg
ICAgICAgICBmID0gZzsKKyAgICAgICAgICAgIGcgPSB0bXA7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSkoKTsKKyAgICAKKyAgICBpZiAocmVzdWx0
ICE9IG4gLyAyICogNDIgKyBuIC8gMiAqIDEpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJl
c3VsdDogIiArIHJlc3VsdDsKK30pKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9zaW1wbGUtcG9seS1jYWxsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwuanMJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcG9seS1jYWxs
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjAgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBm
dW5jdGlvbiBmb28oeCkgeyByZXR1cm4gMTsgfQorICAgIGZ1bmN0aW9uIGJhcih4KSB7IHJldHVy
biB4OyB9CisgICAgCisgICAgdmFyIGYgPSBmb287CisgICAgdmFyIGcgPSBiYXI7CisgICAgCisg
ICAgdmFyIHJlc3VsdCA9IDA7CisgICAgdmFyIG4gPSAxMDAwMDA7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgcmVzdWx0ICs9IGYoNDIpOworICAgICAgICAKKyAg
ICAgICAgdmFyIHRtcCA9IGY7CisgICAgICAgIGYgPSBnOworICAgICAgICBnID0gdG1wOworICAg
IH0KKyAgICAKKyAgICBpZiAocmVzdWx0ICE9IG4gLyAyICogNDIgKyBuIC8gMiAqIDEpCisgICAg
ICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30pKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237032</attachid>
            <date>2014-08-23 15:54:24 -0700</date>
            <delta_ts>2014-08-23 18:06:52 -0700</delta_ts>
            <desc>net win on Octane</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>175762</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyNiBA
QAorMjAxNC0wOC0yMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyAob3IgRlRMKSBzaG91bGQgYmUgYWJsZSB0byBkbyBwb2x5bW9ycGhpYyBjYWxsIGlubGlu
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUx
NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIEFkZCBhIGxvZy1iYXNlZCBoaWdoLWZpZGVsaXR5IGNhbGwgZWRnZSBwcm9maWxlciB0aGF0
IHJ1bnMgaW4gYmFzZWxpbmUgSklUIGFuZCBERkcgSklUIGNvZGUuCisgICAgICAgIFVzZSBpdCB0
byBkbyBwcmVjaXNlIHBvbHltb3JwaGljIGlubGluaW5nIGluIHRoZSBGVEwsIGFuZCB0byBtYWtl
IHRoZSBERkcncyBtb25vbW9ycGhpYworICAgICAgICBpbmxpbmVyIGEgYml0IG1vcmUgaW50ZWxs
aWdlbnQuIFBvdGVudGlhbCBpbmxpbmluZyBzaXRlcyB3aWxsIHVzZSB0aGUgY2FsbCBlZGdlIHBy
b2ZpbGUgaWYKKyAgICAgICAgaXQgaXMgYXZhaWxhYmxlIGJ1dCB0aGV5IHdpbGwgc3RpbGwgZmFs
bCBiYWNrIG9uIHRoZSBjYWxsIGlubGluZSBjYWNoZSBhbmQgcmFyZSBjYXNlIGNvdW50cworICAg
ICAgICBpZiB0aGF0J3Mgbm90IGF2YWlsYWJsZS4KKyAgICAgICAgCisgICAgICAgIFdvcmsgaW4g
cHJvZ3Jlc3MuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxFZGdlLmNwcDogQWRkZWQuCisgICAgICAg
IChKU0M6OkNhbGxFZGdlOjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsRWRnZS5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2U6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6
OkNhbGxFZGdlOjpjYWxsZWUpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZTo6Y291bnQpOgorICAg
ICAgICAoSlNDOjpDYWxsRWRnZTo6ZGVzcGVjaWZpZWRDbG9zdXJlKToKKyAgICAgICAgKEpTQzo6
Q2FsbEVkZ2U6OkNhbGxFZGdlKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VQcm9maWxlOjpjYWxsRWRnZXMpOgor
ICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6Om51bUNhbGxzVG9Lbm93bkNlbGxzKToKKyAg
ICAgICAgKEpTQzo6d29ydGhEZXNwZWNpZnlpbmcpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZVBy
b2ZpbGU6OndvcnRoRGVzcGVjaWZ5aW5nKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VQcm9maWxl
Ojp2aXNpdFdlYWspOgorICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6OmFkZFNsb3cpOgor
ICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6Om1lcmdlQmFjayk6CisgICAgICAgIChKU0M6
OkNhbGxFZGdlUHJvZmlsZTo6ZmFkZUJ5SGFsZik6CisgICAgICAgIChKU0M6OkNhbGxFZGdlTG9n
OjpDYWxsRWRnZUxvZyk6CisgICAgICAgIChKU0M6OkNhbGxFZGdlTG9nOjp+Q2FsbEVkZ2VMb2cp
OgorICAgICAgICAoSlNDOjpDYWxsRWRnZUxvZzo6aXNFbmFibGVkKToKKyAgICAgICAgKEpTQzo6
b3BlcmF0aW9uUHJvY2Vzc0NhbGxFZGdlTG9nKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VMb2c6
OmVtaXRMb2dDb2RlKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VMb2c6OnByb2Nlc3NMb2cpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6Q2FsbEVkZ2VQcm9maWxlOjpudW1DYWxsc1RvTm90Q2VsbCk6CisgICAgICAgIChKU0M6OkNh
bGxFZGdlUHJvZmlsZTo6bnVtQ2FsbHNUb1Vua25vd25DZWxsKToKKyAgICAgICAgKiBieXRlY29k
ZS9DYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpDYWxsRWRn
ZVByb2ZpbGU6OkNhbGxFZGdlUHJvZmlsZSk6CisgICAgICAgIChKU0M6OkNhbGxFZGdlUHJvZmls
ZTo6YWRkKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAo
SlNDOjpDYWxsTGlua0luZm86OnZpc2l0V2Vhayk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmg6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAg
ICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Q2FsbExpbmtTdGF0dXMpOgorICAgICAgICAoSlNDOjpD
YWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5r
U3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZy
b21DYWxsRWRnZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6aXNDbG9z
dXJlQ2FsbCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjptYWtlQ2xvc3VyZUNhbGwp
OgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNh
bGxMaW5rU3RhdHVzOjpmdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNhbGxMaW5r
U3RhdHVzOjppbnRlcm5hbEZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbExp
bmtTdGF0dXM6OmludHJpbnNpY0Zvcik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ2Fs
bExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OkNhbGxMaW5rU3Rh
dHVzKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmlzU2V0KToKKyAgICAgICAgKEpT
Qzo6Q2FsbExpbmtTdGF0dXM6OmNvdWxkVGFrZVNsb3dQYXRoKToKKyAgICAgICAgKEpTQzo6Q2Fs
bExpbmtTdGF0dXM6OmVkZ2VzKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OnNpemUp
OgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6YXQpOgorICAgICAgICAoSlNDOjpDYWxs
TGlua1N0YXR1czo6b3BlcmF0b3JbXSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpj
YW5PcHRpbWl6ZSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjYW5UcnVzdENvdW50
cyk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjppc0Nsb3N1cmVDYWxsKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNhbGxUYXJnZXQpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6ZXhlY3V0YWJsZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjptYWtlQ2xvc3VyZUNhbGwpOiBEZWxldGVkLgorICAg
ICAgICAqIGJ5dGVjb2RlL0NhbGxWYXJpYW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkNh
bGxWYXJpYW50OjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsVmFyaWFudC5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OkNhbGxWYXJpYW50KToKKyAgICAgICAgKEpT
Qzo6Q2FsbFZhcmlhbnQ6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50Ojpk
ZXNwZWNpZmllZENsb3N1cmUpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6cmF3Q2FsbGVl
Q2VsbCk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjppbnRlcm5hbEZ1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OmZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Q2FsbFZh
cmlhbnQ6OmlzQ2xvc3VyZUNhbGwpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZXhlY3V0
YWJsZSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50Ojpub25FeGVjdXRhYmxlQ2FsbGVlKToK
KyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OmludHJpbnNpY0Zvcik6CisgICAgICAgIChKU0M6
OkNhbGxWYXJpYW50OjpmdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpDYWxsVmFy
aWFudDo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFu
dDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpvcGVyYXRvciE9KToK
KyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om9wZXJhdG9yPCk6CisgICAgICAgIChKU0M6OkNh
bGxWYXJpYW50OjpvcGVyYXRvcj4pOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6b3BlcmF0
b3I8PSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpvcGVyYXRvcj49KToKKyAgICAgICAg
KEpTQzo6Q2FsbFZhcmlhbnQ6Omhhc2gpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZGVs
ZXRlZFRva2VuKToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnRIYXNoOjpoYXNoKToKKyAgICAg
ICAgKEpTQzo6Q2FsbFZhcmlhbnRIYXNoOjplcXVhbCk6CisgICAgICAgICogYnl0ZWNvZGUvRXhp
dEtpbmQuY3BwOgorICAgICAgICAoSlNDOjpleGl0S2luZFRvU3RyaW5nKToKKyAgICAgICAgKiBi
eXRlY29kZS9FeGl0S2luZC5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0JhY2t3YXJk
c1Byb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJhY2t3YXJkc1Byb3Bh
Z2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR0Jhc2ljQmxvY2suaDoK
KyAgICAgICAgKEpTQzo6REZHOjpCYXNpY0Jsb2NrOjp0YWtlTGFzdCk6CisgICAgICAgIChKU0M6
OkRGRzo6QmFzaWNCbG9jazo6ZGlkTGluayk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cmVtb3ZlTGFzdE5v
ZGVGcm9tR3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphZGRDYWxs
V2l0aG91dFNldHRpbmdSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjphZGRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmVtaXRGdW5jdGlvbkNoZWNr
cyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnVuZG9GdW5jdGlvbkNoZWNr
cyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpjYW5jZWxMaW5raW5nRm9yQmxvY2spOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdD
UFNSZXRocmVhZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDUFNSZXRocmVhZGlu
Z1BoYXNlOjpmcmVlVW5uZWNlc3NhcnlOb2Rlcyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJp
emUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZH
Q29tbW9uLmg6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6Cisg
ICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToK
KyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxl
SW1wbCk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6R3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6Okdy
YXBoOjpkdW1wKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZn
L0RGR0xhenlKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpMYXp5SlNWYWx1ZTo6c3dp
dGNoTG9va3VwVmFsdWUpOgorICAgICAgICAqIGRmZy9ERkdMYXp5SlNWYWx1ZS5oOgorICAgICAg
ICAoSlNDOjpERkc6OkxhenlKU1ZhbHVlOjpzd2l0Y2hMb29rdXBWYWx1ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogZGZnL0RGR05vZGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToK
KyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok9wSW5mbzo6T3BJ
bmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNDZWxsT3BlcmFuZCk6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6Y2VsbE9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
OnNldENlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjYW5CZUtub3duRnVu
Y3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0tub3duRnVuY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omtub3duRnVuY3Rpb24pOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdpdmVLbm93bkZ1bmN0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNGdW5jdGlvbik6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6ZnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6Omhhc0V4ZWN1dGFibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6OmV4ZWN1dGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5o
OgorICAgICAgICAqIGRmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlOjpydW4pOgorICAg
ICAgICAqIGRmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpQaGFudG9tUmVtb3ZhbFBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpl
bWl0U3dpdGNoKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZTo6cnVuKToKKyAg
ICAgICAgKiBkZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6VGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcv
REZHVmFsaWRhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlZhbGlkYXRlOjp2YWxpZGF0ZSk6
CisgICAgICAgICogZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OldhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2U6OmhhbmRsZSk6CisgICAgICAg
ICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGls
ZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpmdGxVbnJlYWNoYWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
Omxvd2VyKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5vZGUp
OgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ2hlY2tDZWxsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNoZWNrQmFkQ2VsbCk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVHZXRFeGVjdXRhYmxl
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5hdGl2ZUNhbGxP
ckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVT
d2l0Y2gpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpidWlsZFN3aXRjaCk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVDaGVja0Z1bmN0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNo
ZWNrRXhlY3V0YWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAg
ICAgKEpTQzo6SGVhcDo6Y29sbGVjdCk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5o
OgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRWYWx1ZSk6CisgICAgICAgICog
aml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJn
dW1lbnRzKToKKyAgICAgICAgKiBqaXQvR1BSSW5mby5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
UmVnczo6dXNlcyk6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9u
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6ZW5zdXJl
Q2FsbEVkZ2VMb2cpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvbmV3LWFycmF5LXRoZW4tZXhpdC5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9wb2x5LWNhbGwtZXhpdC10aGlzLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiB0ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQuanM6IEFkZGVkLgorCiAyMDE0LTA4LTIx
ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICByMTcxMzYyIGFjY2lk
ZW50YWxseSBpbmNyZWFzZWQgdGhlIHNpemUgb2YgSW5saW5lQ2FsbEZyYW1lLgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNjMsNiArMjYzLDEzIEBACiAJCTBGM0IzQTI4MTU0NEM5OTcwMDNFRDBG
RiAvKiBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCM0EyNTE1NDRDOTkxMDAzRUQwRkYgLyogREZHQ0ZH
U2ltcGxpZmljYXRpb25QaGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGM0IzQTJCMTU0NzUwMDAwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCM0Ey
OTE1NDc0RkY0MDAzRUQwRkYgLyogREZHVmFsaWRhdGUuY3BwICovOyB9OwogCQkwRjNCM0EyQzE1
NDc1MDAyMDAzRUQwRkYgLyogREZHVmFsaWRhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0IzQTJBMTU0NzRGRjQwMDNFRDBGRiAvKiBERkdWYWxp
ZGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTBGM0I3RTI2MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMjAxOUExMUI4MDAwRDlCQzU2IC8q
IENhbGxFZGdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEYzQjdFMjcxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCN0UyMTE5QTEx
QjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmNwcCAqLzsgfTsKKwkJMEYzQjdFMjgxOUEx
MUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMjIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxF
ZGdlUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGM0I3RTI5MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGVJbmxpbmVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCN0Uy
MzE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGM0I3RTJBMTlBMTFCODAw
MEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjNCN0UyNDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQu
Y3BwICovOyB9OworCQkwRjNCN0UyQjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTI1MTlB
MTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGM0I3RTJEMTlBMTJBQUUwMEQ5QkM1NiAvKiBDYWxs
RWRnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjNCN0UyQzE5QTEyQUFFMDBEOUJDNTYgLyogQ2FsbEVkZ2UuY3BwICovOyB9OwogCQkwRjNEMEJC
QzE5NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNEMEJCQTE5NEE0MTQzMDBG
QzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHAgKi87IH07CiAJCTBGM0QwQkJEMTk0
QTQxNDMwMEZDOUNGOSAvKiBDb25zdGFudFN0cnVjdHVyZUNoZWNrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNEMEJCQjE5NEE0MTQzMDBGQzlDRjkg
LyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGNDI2QTQ4MTQ2MENCQjMwMDEzMUY4RiAvKiBWYWx1ZVJl
Y292ZXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMTY3LDYgKzIxNzQsMTMgQEAK
IAkJMEYzQjNBMjUxNTQ0Qzk5MTAwM0VEMEZGIC8qIERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ0ZHU2ltcGxpZmljYXRpb25Q
aGFzZS5oOyBwYXRoID0gZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQjNBMjkxNTQ3NEZGNDAwM0VEMEZGIC8qIERGR1ZhbGlk
YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ZhbGlkYXRl
LmNwcDsgcGF0aCA9IGRmZy9ERkdWYWxpZGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGM0IzQTJBMTU0NzRGRjQwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdWYWxpZGF0ZS5oOyBwYXRoID0gZGZnL0RGR1Zh
bGlkYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGM0I3RTIwMTlBMTFCODAw
MEQ5QkM1NiAvKiBDYWxsRWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YWxsRWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyMTE5QTExQjgw
MDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENhbGxFZGdlUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGM0I3RTIyMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbEVkZ2VQcm9maWxlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGM0I3RTIzMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRn
ZVByb2ZpbGVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxF
ZGdlUHJvZmlsZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzQjdF
MjQxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxWYXJpYW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYzQjdFMjUxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxWYXJpYW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGM0I3RTJDMTlBMTJBQUUwMEQ5QkM1NiAvKiBDYWxsRWRnZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsRWRnZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0QwQkJBMTk0QTQxNDMwMEZDOUNGOSAvKiBDb25z
dGFudFN0cnVjdHVyZUNoZWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENvbnN0YW50U3RydWN0dXJlQ2hlY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjNEMEJCQjE5NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb25zdGFudFN0cnVjdHVyZUNoZWNr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ1MTQ2MENCQUIwMDEzMUY4
RiAvKiBWYWx1ZVJlY292ZXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZh
bHVlUmVjb3ZlcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUxNDQsMTEgKzUx
NTgsMTggQEAKIAkJCQkwRjY2NkVCRTE4MzU2NkY5MDBEMDE3RjEgLyogQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzSW5saW5lcy5oICovLAogCQkJCTBGODg1RTEwMTg0OUEzQkUwMEYxRTNGQSAvKiBC
eXRlY29kZVVzZURlZi5oICovLAogCQkJCTBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZh
bEluZm8uaCAqLywKKwkJCQkwRjNCN0UyQzE5QTEyQUFFMDBEOUJDNTYgLyogQ2FsbEVkZ2UuY3Bw
ICovLAorCQkJCTBGM0I3RTIwMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZS5oICovLAorCQkJ
CTBGM0I3RTIxMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuY3BwICovLAorCQkJ
CTBGM0I3RTIyMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuaCAqLywKKwkJCQkw
RjNCN0UyMzE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oICovLAog
CQkJCTBGMEI4M0FFMTRCQ0Y3MTQwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uY3BwICovLAogCQkJ
CTBGMEI4M0FGMTRCQ0Y3MTQwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uaCAqLywKIAkJCQkwRjkz
MzI5MzE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuY3BwICovLAogCQkJCTBGOTMz
Mjk0MTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5oICovLAogCQkJCTBGMEI4M0I4
MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICov
LAorCQkJCTBGM0I3RTI0MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5jcHAgKi8sCisJ
CQkJMEYzQjdFMjUxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmggKi8sCiAJCQkJOTY5
QTA3OTAwRUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5jcHAgKi8sCiAJCQkJOTY5QTA3OTEw
RUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5oICovLAogCQkJCTBGOEY5NDNEMTY2NzYzMkQw
MEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmNwcCAqLywKQEAgLTU4NzcsNiArNTg5OCw3IEBACiAJ
CQkJMEZGRkM5NUExNEVGOTBBOTAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjJGQzc3MzE2RTEyRjc0MDAzOEQ5NzYgLyogREZHRENFUGhhc2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGOEYyQjlBMTcyRjA1MDEwMDdEQkRBNSAvKiBERkdEZXNpcmVkSWRlbnRp
ZmllcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGM0I3RTI4MTlBMTFCODAwMEQ5QkM1NiAvKiBD
YWxsRWRnZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQzBGN0NFMTdCQkZDNUIwMDQ2
NEZFNCAvKiBERkdEZXNpcmVkVHJhbnNpdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTg1
MzRDMTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUMyOTgxRkQ5MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vha1JlZmVy
ZW5jZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNjE0NSw2ICs2MTY3LDcgQEAKIAkJCQkwRjc2NkQz
MTE1QUE4MTEyMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNzY2RDJDMTVBOENDM0EwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZVNldC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMTRDNTI0MkIwRjUzNTVFOTAwQkEzRDA0IC8qIEpJVFN0dWJzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjNCN0UyQjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUZFRjY4MzVFMTc0MzQzQ0MwMEEzMkUyNSAvKiBKSVRTdHVic0FS
TS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVGNjgzNUYxNzQzNDNDQzAwQTMyRTI1IC8qIEpJVFN0
dWJzQVJNdjcuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFRjY4MzYxMTc0MzQzQ0MwMEEzMkUyNSAv
KiBKSVRTdHVic1g4Ni5oIGluIEhlYWRlcnMgKi8sCkBAIC02MTU2LDYgKzYxNzksNyBAQAogCQkJ
CUE3NkY1NEEzMTNCMjhBQUIwMEVGMkJDRSAvKiBKSVRXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0FjdGl2YXRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg0MDQ4MDEzMTAyMUExRDkwMDhFN0YwMSAvKiBKU0FQSVZhbHVlV3Jh
cHBlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYzQjdFMjkxOUExMUI4MDAwRDlCQzU2IC8qIENh
bGxFZGdlUHJvZmlsZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQ0YzOUMyMTZFMTVB
ODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
NjE0MEQyMTgyOTgyQ0IwMDc1MDYyNCAvKiBKU0FyZ3VtZW50c0l0ZXJhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzE4QzQxNzBFMTZGNUNEMDBCMzQ0NjAgLyogSlNBcnJheS5oIGluIEhlYWRl
cnMgKi8sCkBAIC02NDcxLDYgKzY0OTUsNyBAQAogCQkJCUU0OURDMTZDMTJFRjI5NEUwMDE4NEEx
RiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDlEQzE2RDEy
RUYyOTUzMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQjdGMzlFMTVFRDhFNDYwMEYxNjdCMiAvKiBTcGFyc2VBcnJheVZhbHVlTWFwLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjNCN0UyNjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mzg2NTU0MTE4Njk3QjQwMDU0MDI3OSAvKiBTcGVjaWFs
aXplZFRodW5rSklULmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU1NDFCMjE2MTNDMUZCMDBDRTNF
MjUgLyogU3BlY2lhbFBvaW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgyRTU0MTQxREFF
RUUwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03MzIzLDYg
KzczNDgsNyBAQAogCQkJCTBGMjM1QkQ1MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1l
bnRGb3JPcGVyYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkQ4MTcxNzhFMUMwMDY5
MEM3RiAvKiBGVExFeGl0VGh1bmtHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYy
MzVCREExNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRjNCN0UyNzE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE3RjI5OTZCMTdBMEJCNjcwMDEwNDE3QSAvKiBGVExGYWlsLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRDhBMzE5MTdENTFGMjIwMENBMkM0MCAvKiBGVExGb3JPU1JF
bnRyeUpJVENvZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyNUYxQUYxODE2MzVGMzAwNTIy
RjM5IC8qIEZUTElubGluZUNhY2hlU2l6ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc1MDksNiAr
NzUzNSw3IEBACiAJCQkJMEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjM4QjAxMTE3Q0YwNzgwMDBCMTQ0RDMgLyogTExJbnRFbnRy
eXBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAv
KiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYzQjdFMkQxOUExMkFB
RTAwRDlCQzU2IC8qIENhbGxFZGdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MEE0MTRC
QTdGOEQwMEJGRTI3MiAvKiBMTEludFNsb3dQYXRocy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjBCODM5QzE0QkNGNDYzMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZDRUZBQ0QxODA1RTc1NTAwNDcyQ0U0IC8qIExMVk1BUEkuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC03NjcwLDYgKzc2OTcsNyBAQAogCQkJCTE0RTg0RkEwMTRFRTFBQ0MwMEQ2RDVENCAv
KiBXZWFrU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJBNEVDOTBCMTg2MEQ2QzIwMDk0Rjc4
MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDODE1MEIx
NDA0M0MwRTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMEYzQjdFMkExOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE3RTVBQjNBMTc5OUU0QjIwMEQyODMzRCAvKiBYODZEaXNhc3NlbWJsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODYzQzZEOUMxNTIxMTExQTAwNTg1RTRFIC8qIFlhcnJD
YW5vbmljYWxpemVVQ1MyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0Qjg0MTJEQkEzMzcw
MEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZS5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNhbGxFZGdlLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCit2b2lkIENhbGxFZGdlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0Cit7CisgICAgb3V0LnByaW50KCI8IiwgbV9jYWxsZWUsICIsIGNvdW50OiAiLCBtX2Nv
dW50LCAiPiIpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgQ2FsbEVkZ2VfaAorI2RlZmluZSBDYWxsRWRnZV9oCisKKyNpbmNsdWRlICJDYWxsVmFy
aWFudC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordHlwZWRlZiB1aW50MTZfdCBDYWxsRWRnZUNv
dW50VHlwZTsKKworY2xhc3MgQ2FsbEVkZ2UgeworcHVibGljOgorICAgIENhbGxFZGdlKCk7Cisg
ICAgQ2FsbEVkZ2UoQ2FsbFZhcmlhbnQgY2FsbGVlLCBDYWxsRWRnZUNvdW50VHlwZSBjb3VudCk7
CisgICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7IH0K
KyAgICAKKyAgICBDYWxsVmFyaWFudCBjYWxsZWUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlZTsg
fQorICAgIENhbGxFZGdlQ291bnRUeXBlIGNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb3VudDsg
fQorICAgIAorICAgIENhbGxFZGdlIGRlc3BlY2lmaWVkQ2xvc3VyZSgpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gQ2FsbEVkZ2UobV9jYWxsZWUuZGVzcGVjaWZpZWRDbG9zdXJlKCksIG1f
Y291bnQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsK
KyAgICAKK3B1YmxpYzoKKyAgICBDYWxsVmFyaWFudCBtX2NhbGxlZTsKKyAgICBDYWxsRWRnZUNv
dW50VHlwZSBtX2NvdW50OworfTsKKworaW5saW5lIENhbGxFZGdlOjpDYWxsRWRnZShDYWxsVmFy
aWFudCBjYWxsZWUsIENhbGxFZGdlQ291bnRUeXBlIGNvdW50KQorICAgIDogbV9jYWxsZWUoY2Fs
bGVlKQorICAgICwgbV9jb3VudChjb3VudCkKK3sKK30KKworaW5saW5lIENhbGxFZGdlOjpDYWxs
RWRnZSgpCisgICAgOiBDYWxsRWRnZShDYWxsVmFyaWFudCgpLCAwKQoreworfQorCit0eXBlZGVm
IFZlY3RvcjxDYWxsRWRnZSwgMT4gQ2FsbEVkZ2VMaXN0OworCit9IC8vIG5hbWVzcGFjZSBKU0MK
KworI2VuZGlmIC8vIENhbGxFZGdlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDM0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2FsbEVkZ2VQcm9m
aWxlLmgiCisKKyNpbmNsdWRlICJDYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmgiCisjaW5jbHVkZSAi
Q0NhbGxIZWxwZXJzLmgiCisjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0NhbGxFZGdlTGlzdCBDYWxsRWRnZVBy
b2ZpbGU6OmNhbGxFZGdlcygpIGNvbnN0Cit7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIobV9sb2NrKTsKKyAgICAKKyAgICBDYWxsRWRnZUxpc3QgcmVzdWx0OworICAgIAorICAgIENh
bGxWYXJpYW50IHByaW1hcnlDYWxsZWUgPSBtX3ByaW1hcnlDYWxsZWU7CisgICAgZmxvYXQgbnVt
Q2FsbHNUb1ByaW1hcnkgPSBtX251bUNhbGxzVG9QcmltYXJ5OworICAgIC8vIERlZmVuZCBhZ2Fp
bnN0IHJhY2VzLiBUaGVzZSBmaWVsZHMgYXJlIG1vZGlmaWVkIGJ5IHRoZSBsb2cgcHJvY2Vzc29y
IHdpdGhvdXQgbG9ja2luZy4KKyAgICBpZiAoISFwcmltYXJ5Q2FsbGVlICYmIG51bUNhbGxzVG9Q
cmltYXJ5KQorICAgICAgICByZXN1bHQuYXBwZW5kKENhbGxFZGdlKHByaW1hcnlDYWxsZWUsIG51
bUNhbGxzVG9QcmltYXJ5KSk7CisgICAgCisgICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAg
ICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGlmIHRoZSBwcmltYXJ5IHRocmVhZCBoYWQganVzdCBjcmVh
dGVkIGEgbV9vdGhlckNhbGxlcyB3aGlsZSBsb2cKKyAgICAgICAgLy8gcHJvY2Vzc2luZywgd2Ug
c2VlIGEgY29uc2lzdGVudGx5IGNyZWF0ZWQgb25lLiBUaGUgbG9jayBiZWluZyBoZWxkIGlzIGlu
c3VmZmljaWVudCBmb3IKKyAgICAgICAgLy8gdGhpcywgc2luY2UgdGhlIGxvZyBwcm9jZXNzb3Ig
d2lsbCBvbmx5IGdyYWIgdGhlIGxvY2sgd2hlbiBtZXJnaW5nIHRoZSBzZWNvbmRhcnkKKyAgICAg
ICAgLy8gc3BlY3RydW0gaW50byB0aGUgcHJpbWFyeSBvbmUgYnV0IG1heSBzdGlsbCBjcmVhdGUg
dGhlIGRhdGEgc3RydWN0dXJlIHdpdGhvdXQgaG9sZGluZworICAgICAgICAvLyBsb2Nrcy4KKyAg
ICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CisgICAgICAgIGZvciAoQ2FsbEVkZ2UgZW50cnkg
OiBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQpIHsKKyAgICAgICAgICAgIC8vIERlZmVuZCBh
Z2FpbnN0IHRoZSBwb3NzaWJpbGl0eSB0aGF0IHRoZSBwcmltYXJ5IGR1cGxpY2F0ZXMgYW4gZW50
cnkgaW4gdGhlIHNlY29uZGFyeQorICAgICAgICAgICAgLy8gc3BlY3RydW0uIFRoYXQgY2FuIGhh
cHBlbiB3aGVuIHRoZSBHQyByZW1vdmVzIHRoZSBwcmltYXJ5LiBXZSBjb3VsZCBoYXZlIHRoZSBH
QyBmaXgKKyAgICAgICAgICAgIC8vIHRoZSBzaXR1YXRpb24gYnkgY2hhbmdpbmcgdGhlIHByaW1h
cnkgdG8gYmUgc29tZXRoaW5nIGZyb20gdGhlIHNlY29uZGFyeSBzcGVjdHJ1bSwKKyAgICAgICAg
ICAgIC8vIGJ1dCB0aGlzIGZpeCBzZWVtcyBzaW1wbGVyIHRvIGltcGxlbWVudCBhbmQgYWxzbyBj
aGVhcGVyLgorICAgICAgICAgICAgaWYgKGVudHJ5LmNhbGxlZSgpID09IHJlc3VsdFswXS5jYWxs
ZWUoKSkgeworICAgICAgICAgICAgICAgIHJlc3VsdFswXSA9IENhbGxFZGdlKHJlc3VsdFswXS5j
YWxsZWUoKSwgZW50cnkuY291bnQoKSArIHJlc3VsdFswXS5jb3VudCgpKTsKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZChlbnRyeSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgc3RkOjpz
b3J0KHJlc3VsdC5iZWdpbigpLCByZXN1bHQuZW5kKCksIFtdIChjb25zdCBDYWxsRWRnZSYgYSwg
Y29uc3QgQ2FsbEVkZ2UmIGIpIC0+IGJvb2wgeworICAgICAgICAgICAgcmV0dXJuIGEuY291bnQo
KSA+IGIuY291bnQoKTsKKyAgICAgICAgfSk7CisgICAgCisgICAgaWYgKHJlc3VsdC5zaXplKCkg
Pj0gMikKKyAgICAgICAgQVNTRVJUKHJlc3VsdFswXS5jb3VudCgpID49IHJlc3VsdC5sYXN0KCku
Y291bnQoKSk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQ2FsbEVkZ2VDb3VudFR5
cGUgQ2FsbEVkZ2VQcm9maWxlOjpudW1DYWxsc1RvS25vd25DZWxscygpIGNvbnN0Cit7CisgICAg
Q2FsbEVkZ2VDb3VudFR5cGUgcmVzdWx0ID0gMDsKKyAgICBmb3IgKENhbGxFZGdlIGVkZ2UgOiBj
YWxsRWRnZXMoKSkKKyAgICAgICAgcmVzdWx0ICs9IGVkZ2UuY291bnQoKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitzdGF0aWMgYm9vbCB3b3J0aERlc3BlY2lmeWluZyhjb25zdCBDYWxsVmFy
aWFudCYgdmFyaWFudCkKK3sKKyAgICByZXR1cm4gIUhlYXA6OmlzTWFya2VkKHZhcmlhbnQucmF3
Q2FsbGVlQ2VsbCgpKQorICAgICAgICAmJiBIZWFwOjppc01hcmtlZCh2YXJpYW50LmRlc3BlY2lm
aWVkQ2xvc3VyZSgpLnJhd0NhbGxlZUNlbGwoKSk7Cit9CisKK2Jvb2wgQ2FsbEVkZ2VQcm9maWxl
Ojp3b3J0aERlc3BlY2lmeWluZygpCit7CisgICAgaWYgKG1fY2xvc3VyZXNBcmVEZXNwZWNpZmll
ZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghIW1fcHJpbWFyeUNhbGxl
ZSAmJiAhSlNDOjp3b3J0aERlc3BlY2lmeWluZyhtX3ByaW1hcnlDYWxsZWUpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5zaXplKCk7IGktLTsp
IHsKKyAgICAgICAgICAgIGlmICghSlNDOjp3b3J0aERlc3BlY2lmeWluZyhtX290aGVyQ2FsbGVl
cy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBD
YWxsRWRnZVByb2ZpbGU6OnZpc2l0V2VhaygpCit7CisgICAgaWYgKCFtX3ByaW1hcnlDYWxsZWUg
JiYgIW1fb3RoZXJDYWxsZWVzKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgQ29uY3VycmVu
dEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAKKyAgICAvLyBTZWUgaWYgYW55dGhpbmcg
aXMgZGVhZCBhbmQgaWYgdGhhdCBjYW4gYmUgcmVjdGlmaWVkIGJ5IGRlc3BlY2lmeWluZy4KKyAg
ICBpZiAod29ydGhEZXNwZWNpZnlpbmcoKSkgeworICAgICAgICBDYWxsU3BlY3RydW0gbmV3U3Bl
Y3RydW07CisgICAgICAgIAorICAgICAgICBpZiAoISFtX3ByaW1hcnlDYWxsZWUpCisgICAgICAg
ICAgICBuZXdTcGVjdHJ1bS5hZGQobV9wcmltYXJ5Q2FsbGVlLmRlc3BlY2lmaWVkQ2xvc3VyZSgp
LCBtX251bUNhbGxzVG9QcmltYXJ5KTsKKyAgICAgICAgCisgICAgICAgIGlmIChtX290aGVyQ2Fs
bGVlcykgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9vdGhlckNhbGxlZXMtPm1f
cHJvY2Vzc2VkLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgICAgIG5ld1NwZWN0cnVtLmFk
ZCgKKyAgICAgICAgICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNh
bGxlZSgpLmRlc3BlY2lmaWVkQ2xvc3VyZSgpLAorICAgICAgICAgICAgICAgICAgICBtX290aGVy
Q2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQoKSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgVmVjdG9yPENhbGxTcGVj
dHJ1bTo6S2V5QW5kQ291bnQ+IGxpc3QgPSBuZXdTcGVjdHJ1bS5idWlsZExpc3QoKTsKKyAgICAg
ICAgQVNTRVJUKGxpc3Quc2l6ZSgpKTsKKyAgICAgICAgbV9wcmltYXJ5Q2FsbGVlID0gbGlzdC5s
YXN0KCkua2V5OworICAgICAgICBtX251bUNhbGxzVG9QcmltYXJ5ID0gbGlzdC5sYXN0KCkuY291
bnQ7CisgICAgICAgIAorICAgICAgICBBU1NFUlQoISFtX290aGVyQ2FsbGVlcyA9PSAobGlzdC5z
aXplKCkgPj0gMikpOworICAgICAgICBpZiAobV9vdGhlckNhbGxlZXMpIHsKKyAgICAgICAgICAg
IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5jbGVhcigpOworICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbGlzdC5zaXplKCkgLSAxOyBpLS07KQorICAgICAgICAgICAgICAgIG1fb3Ro
ZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5hcHBlbmQoQ2FsbEVkZ2UobGlzdFtpXS5rZXksIGxpc3Rb
aV0uY291bnQpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbV9jbG9zdXJlc0FyZURl
c3BlY2lmaWVkID0gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
CisgICAgaWYgKCEhbV9wcmltYXJ5Q2FsbGVlICYmICFIZWFwOjppc01hcmtlZChtX3ByaW1hcnlD
YWxsZWUucmF3Q2FsbGVlQ2VsbCgpKSkgeworICAgICAgICBtX251bUNhbGxzVG9Vbmtub3duQ2Vs
bCArPSBtX251bUNhbGxzVG9QcmltYXJ5OworICAgICAgICAKKyAgICAgICAgbV9wcmltYXJ5Q2Fs
bGVlID0gQ2FsbFZhcmlhbnQoKTsKKyAgICAgICAgbV9udW1DYWxsc1RvUHJpbWFyeSA9IDA7Cisg
ICAgfQorICAgIAorICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLnNpemUoKTsgaSsrKSB7
CisgICAgICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQobV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vz
c2VkW2ldLmNhbGxlZSgpLnJhd0NhbGxlZUNlbGwoKSkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxsICs9
IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jb3VudCgpOworICAgICAgICAgICAgbV9v
dGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ktLV0gPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNz
ZWQubGFzdCgpOworICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLnJlbW92
ZUxhc3QoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gT25seSBleGlzdHMgd2hp
bGUgd2UgYXJlIHByb2Nlc3NpbmcgdGhlIGxvZy4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1f
b3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtKTsKKyAgICB9Cit9CisKK3ZvaWQgQ2Fs
bEVkZ2VQcm9maWxlOjphZGRTbG93KENhbGxWYXJpYW50IGNhbGxlZSwgQ2FsbEVkZ2VQcm9maWxl
VmVjdG9yJiBtZXJnZUJhY2tMb2cpCit7CisgICAgLy8gVGhpcyBleGlzdHMgdG8gaGFuZGxlIGNh
c2VzIHdoZXJlIHRoZSBzcGVjdHJ1bSB3YXNuJ3QgY3JlYXRlZCB5ZXQsIG9yIHdlJ3JlIHN0b3Jp
bmcgdG8gYQorICAgIC8vIHBhcnRpY3VsYXIgc3BlY3RydW0gZm9yIHRoZSBmaXJzdCB0aW1lIGR1
cmluZyBhIGxvZyBwcm9jZXNzaW5nIGl0ZXJhdGlvbi4KKyAgICAKKyAgICBpZiAoIW1fb3RoZXJD
YWxsZWVzKSB7CisgICAgICAgIG1fb3RoZXJDYWxsZWVzID0gc3RkOjptYWtlX3VuaXF1ZTxTZWNv
bmRhcnk+KCk7CisgICAgICAgIC8vIElmIGEgY29tcGlsZXIgdGhyZWFkIG5vdGljZXMgdGhlIG1f
b3RoZXJDYWxsZWVzIGJlaW5nIG5vbi1udWxsLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZQorICAgICAg
ICAvLyB0aGF0IGl0IHNlZXMgYSBmdWxseSBjcmVhdGVkIG9uZS4KKyAgICAgICAgV1RGOjpzdG9y
ZVN0b3JlRmVuY2UoKTsKKyAgICB9CisgICAgCisgICAgaWYgKCFtX290aGVyQ2FsbGVlcy0+bV90
ZW1wb3JhcnlTcGVjdHJ1bSkgeworICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlT
cGVjdHJ1bSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbFNwZWN0cnVtPigpOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpLS07KSB7
CisgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+YWRkKAor
ICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jYWxsZWUoKSwK
KyAgICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQoKSk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlzIGlz
IHRoZSBmaXJzdCB0aW1lIHdlJ3JlIHNlZWluZyB0aGlzIHByb2ZpbGUgZHVyaW5nIHRoaXMgbG9n
CisgICAgICAgIC8vIHByb2Nlc3NpbmcgaXRlcmF0aW9uLgorICAgICAgICBtZXJnZUJhY2tMb2cu
YXBwZW5kKHRoaXMpOworICAgIH0KKyAgICAKKyAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3Jh
cnlTcGVjdHJ1bS0+YWRkKGNhbGxlZSk7Cit9CisKK3ZvaWQgQ2FsbEVkZ2VQcm9maWxlOjptZXJn
ZUJhY2soKQoreworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAg
CisgICAgQVNTRVJUKG1fb3RoZXJDYWxsZWVzKTsKKyAgICBBU1NFUlQobV9vdGhlckNhbGxlZXMt
Pm1fdGVtcG9yYXJ5U3BlY3RydW0pOworICAgIAorICAgIGlmICghIW1fcHJpbWFyeUNhbGxlZSkK
KyAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0tPmFkZChtX3ByaW1h
cnlDYWxsZWUsIG1fbnVtQ2FsbHNUb1ByaW1hcnkpOworICAgIAorICAgIGlmICghbV9jbG9zdXJl
c0FyZURlc3BlY2lmaWVkKSB7CisgICAgICAgIENhbGxTcGVjdHJ1bSBuZXdTcGVjdHJ1bTsKKyAg
ICAgICAgZm9yIChhdXRvIGVudHJ5IDogKm1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0
cnVtKQorICAgICAgICAgICAgbmV3U3BlY3RydW0uYWRkKGVudHJ5LmtleS5kZXNwZWNpZmllZENs
b3N1cmUoKSwgZW50cnkudmFsdWUpOworICAgICAgICAKKyAgICAgICAgaWYgKG5ld1NwZWN0cnVt
LnNpemUoKSA8IG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5zaXplKCkpIHsK
KyAgICAgICAgICAgICptX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSA9IG5ld1Nw
ZWN0cnVtOworICAgICAgICAgICAgbV9jbG9zdXJlc0FyZURlc3BlY2lmaWVkID0gdHJ1ZTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICAKKyAgICBWZWN0b3I8Q2FsbFNwZWN0cnVtOjpLZXlBbmRDb3Vu
dD4gbGlzdCA9IG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5idWlsZExpc3Qo
KTsKKyAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSA9IG51bGxwdHI7Cisg
ICAgCisgICAgbV9wcmltYXJ5Q2FsbGVlID0gbGlzdC5sYXN0KCkua2V5OworICAgIG1fbnVtQ2Fs
bHNUb1ByaW1hcnkgPSBsaXN0Lmxhc3QoKS5jb3VudDsKKyAgICBsaXN0LnJlbW92ZUxhc3QoKTsK
KyAgICAKKyAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuY2xlYXIoKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGNvdW50ID0gbWF4S25vd25DYWxsZWVzOyBjb3VudC0tICYmICFsaXN0LmlzRW1w
dHkoKTspIHsKKyAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLmFwcGVuZChDYWxs
RWRnZShsaXN0Lmxhc3QoKS5rZXksIGxpc3QubGFzdCgpLmNvdW50KSk7CisgICAgICAgIGxpc3Qu
cmVtb3ZlTGFzdCgpOworICAgIH0KKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBsaXN0LnNp
emUoKTsgaS0tOykKKyAgICAgICAgbV9udW1DYWxsc1RvVW5rbm93bkNlbGwgKz0gbGlzdFtpXS5j
b3VudDsKK30KKwordm9pZCBDYWxsRWRnZVByb2ZpbGU6OmZhZGVCeUhhbGYoKQoreworICAgIG1f
bnVtQ2FsbHNUb1ByaW1hcnkgPj49IDE7CisgICAgbV9udW1DYWxsc1RvTm90Q2VsbCA+Pj0gMTsK
KyAgICBtX251bUNhbGxzVG9Vbmtub3duQ2VsbCA+Pj0gMTsKKyAgICBtX3RvdGFsQ291bnQgPj49
IDE7CisgICAgCisgICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5zaXplKCk7IGktLTspIHsKKyAgICAg
ICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXSA9IENhbGxFZGdlKAorICAgICAg
ICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jYWxsZWUoKSwKKyAgICAg
ICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQoKSA+PiAxKTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBv
cmFyeVNwZWN0cnVtKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiAqbV9vdGhlckNh
bGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0pCisgICAgICAgICAgICAgICAgZW50cnkudmFsdWUg
Pj49IDE7CisgICAgICAgIH0KKyAgICB9Cit9CisKK0NhbGxFZGdlTG9nOjpDYWxsRWRnZUxvZygp
CisgICAgOiBtX3NjYWxlZExvZ0luZGV4KGxvZ1NpemUgKiBzaXplb2YoRW50cnkpKQoreworICAg
IEFTU0VSVCghKG1fc2NhbGVkTG9nSW5kZXggJSBzaXplb2YoRW50cnkpKSk7Cit9CisKK0NhbGxF
ZGdlTG9nOjp+Q2FsbEVkZ2VMb2coKSB7IH0KKworYm9vbCBDYWxsRWRnZUxvZzo6aXNFbmFibGVk
KCkKK3sKKyAgICByZXR1cm4gT3B0aW9uczo6ZW5hYmxlQ2FsbEVkZ2VQcm9maWxpbmcoKSAmJiBP
cHRpb25zOjp1c2VGVExKSVQoKTsKK30KKworI2lmIEVOQUJMRShKSVQpCisKK2V4dGVybiAiQyIg
SklUX09QRVJBVElPTiB2b2lkIG9wZXJhdGlvblByb2Nlc3NDYWxsRWRnZUxvZyhDYWxsRWRnZUxv
ZyopIFdURl9JTlRFUk5BTDsKK2V4dGVybiAiQyIgSklUX09QRVJBVElPTiB2b2lkIG9wZXJhdGlv
blByb2Nlc3NDYWxsRWRnZUxvZyhDYWxsRWRnZUxvZyogbG9nKQoreworICAgIGxvZy0+cHJvY2Vz
c0xvZygpOworfQorCit2b2lkIENhbGxFZGdlTG9nOjplbWl0TG9nQ29kZShDQ2FsbEhlbHBlcnMm
IGppdCwgQ2FsbEVkZ2VQcm9maWxlJiBwcm9maWxlLCBKU1ZhbHVlUmVncyBjYWxsZWVSZWdzKQor
eworICAgIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzID0gMTsKKyAgICAKKyAgICBH
UFJSZWcgc2NyYXRjaEdQUjsKKyAgICBpZiAoIWNhbGxlZVJlZ3MudXNlcyhHUFJJbmZvOjpyZWdU
MCkpCisgICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJbmZvOjpyZWdUMDsKKyAgICBlbHNlIGlmICgh
Y2FsbGVlUmVncy51c2VzKEdQUkluZm86OnJlZ1QxKSkKKyAgICAgICAgc2NyYXRjaEdQUiA9IEdQ
UkluZm86OnJlZ1QxOworICAgIGVsc2UKKyAgICAgICAgc2NyYXRjaEdQUiA9IEdQUkluZm86OnJl
Z1QyOworICAgIAorICAgIGppdC5sb2FkMzIoJm1fc2NhbGVkTG9nSW5kZXgsIHNjcmF0Y2hHUFIp
OworICAgIAorICAgIENDYWxsSGVscGVyczo6SnVtcCBvayA9IGppdC5icmFuY2hUZXN0MzIoQ0Nh
bGxIZWxwZXJzOjpOb25aZXJvLCBzY3JhdGNoR1BSKTsKKyAgICAKKyAgICBBU1NFUlRfVU5VU0VE
KG51bWJlck9mQXJndW1lbnRzLCBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpID49IDEgKyBudW1i
ZXJPZkFyZ3VtZW50cyk7CisgICAgCisgICAgaml0LnN1YlB0cihDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihzdGFja0FsaWdubWVudEJ5dGVzKCkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRl
clJlZ2lzdGVyKTsKKyAgICAKKyAgICBqaXQuc3RvcmVWYWx1ZShjYWxsZWVSZWdzLCBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2l6ZW9m
KEpTVmFsdWUpKSk7CisgICAgaml0LnNldHVwQXJndW1lbnRzKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cih0aGlzKSk7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGJpdHdpc2VfY2FzdDx2b2lkKj4ob3BlcmF0aW9uUHJvY2Vzc0NhbGxFZGdlTG9nKSksIEdQUklu
Zm86Om5vbkFyZ0dQUjApOworICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjApOworICAg
IGppdC5sb2FkVmFsdWUoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIsIHNpemVvZihKU1ZhbHVlKSksIGNhbGxlZVJlZ3MpOworICAgIAorICAg
IGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhY2tBbGlnbm1lbnRCeXRl
cygpKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgCisgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobG9nU2l6ZSAqIHNpemVvZihFbnRyeSkp
LCBzY3JhdGNoR1BSKTsKKyAgICBvay5saW5rKCZqaXQpOworCisgICAgaml0LnN1YjMyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKHNpemVvZihFbnRyeSkpLCBzY3JhdGNoR1BSKTsKKyAgICBq
aXQuc3RvcmUzMihzY3JhdGNoR1BSLCAmbV9zY2FsZWRMb2dJbmRleCk7CisgICAgaml0LmFkZFB0
cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9sb2cpLCBzY3JhdGNoR1BSKTsKKyAgICBq
aXQuc3RvcmVWYWx1ZShjYWxsZWVSZWdzLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQ
UiwgT0JKRUNUX09GRlNFVE9GKEVudHJ5LCBtX3ZhbHVlKSkpOworICAgIGppdC5zdG9yZVB0cihD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJnByb2ZpbGUpLCBDQ2FsbEhlbHBlcnM6OkFkZHJl
c3Moc2NyYXRjaEdQUiwgT0JKRUNUX09GRlNFVE9GKEVudHJ5LCBtX3Byb2ZpbGUpKSk7Cit9CisK
K3ZvaWQgQ2FsbEVkZ2VMb2c6OmVtaXRMb2dDb2RlKAorICAgIENDYWxsSGVscGVycyYgaml0LCBP
d25QdHI8Q2FsbEVkZ2VQcm9maWxlPiYgcHJvZmlsZVBvaW50ZXIsIEpTVmFsdWVSZWdzIGNhbGxl
ZVJlZ3MpCit7CisgICAgaWYgKCFpc0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAor
ICAgIHByb2ZpbGVQb2ludGVyLmNyZWF0ZVRyYW5zYWN0aW9uYWxseSgpOworICAgIGVtaXRMb2dD
b2RlKGppdCwgKnByb2ZpbGVQb2ludGVyLCBjYWxsZWVSZWdzKTsKK30KKworI2VuZGlmIC8vIEVO
QUJMRShKSVQpCisKK3ZvaWQgQ2FsbEVkZ2VMb2c6OnByb2Nlc3NMb2coKQoreworICAgIEFTU0VS
VCghKG1fc2NhbGVkTG9nSW5kZXggJSBzaXplb2YoRW50cnkpKSk7CisgICAgCisgICAgQ2FsbEVk
Z2VQcm9maWxlVmVjdG9yIG1lcmdlQmFja0xvZzsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSBtX3NjYWxlZExvZ0luZGV4IC8gc2l6ZW9mKEVudHJ5KTsgaSA8IGxvZ1NpemU7ICsraSkKKyAg
ICAgICAgbV9sb2dbaV0ubV9wcm9maWxlLT5hZGQobV9sb2dbaV0ubV92YWx1ZSwgbWVyZ2VCYWNr
TG9nKTsKKyAgICAKKyAgICBtX3NjYWxlZExvZ0luZGV4ID0gbG9nU2l6ZSAqIHNpemVvZihFbnRy
eSk7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gbWVyZ2VCYWNrTG9nLnNpemUoKTsgaS0t
OykKKyAgICAgICAgbWVyZ2VCYWNrTG9nW2ldLT5tZXJnZUJhY2soKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRn
ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbEVkZ2VQcm9maWxlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBDYWxsRWRnZVByb2ZpbGVfaAorI2RlZmluZSBDYWxsRWRnZVByb2ZpbGVfaAorCisjaW5jbHVk
ZSAiQ2FsbEVkZ2UuaCIKKyNpbmNsdWRlICJDYWxsVmFyaWFudC5oIgorI2luY2x1ZGUgIkNvbmN1
cnJlbnRKSVRMb2NrLmgiCisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSA8d3RmL093blB0
ci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQ0NhbGxIZWxwZXJzOworY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworCitjbGFzcyBDYWxsRWRnZUxvZzsKK2NsYXNzIENhbGxFZGdl
UHJvZmlsZTsKK3R5cGVkZWYgVmVjdG9yPENhbGxFZGdlUHJvZmlsZSosIDEwPiBDYWxsRWRnZVBy
b2ZpbGVWZWN0b3I7CisKK2NsYXNzIENhbGxFZGdlUHJvZmlsZSB7CitwdWJsaWM6CisgICAgQ2Fs
bEVkZ2VQcm9maWxlKCk7CisgICAgCisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbnVtQ2FsbHNUb05v
dENlbGwoKSBjb25zdCB7IHJldHVybiBtX251bUNhbGxzVG9Ob3RDZWxsOyB9CisgICAgQ2FsbEVk
Z2VDb3VudFR5cGUgbnVtQ2FsbHNUb1Vua25vd25DZWxsKCkgY29uc3QgeyByZXR1cm4gbV9udW1D
YWxsc1RvVW5rbm93bkNlbGw7IH0KKyAgICBDYWxsRWRnZUNvdW50VHlwZSBudW1DYWxsc1RvS25v
d25DZWxscygpIGNvbnN0OworICAgIAorICAgIENhbGxFZGdlQ291bnRUeXBlIHRvdGFsQ2FsbHMo
KSBjb25zdCB7IHJldHVybiBtX3RvdGFsQ291bnQ7IH0KKyAgICAKKyAgICAvLyBDYWxsIHdoaWxl
IGhvbGRpbmcgdGhlIG93bmluZyBDb2RlQmxvY2sncyBsb2NrLgorICAgIENhbGxFZGdlTGlzdCBj
YWxsRWRnZXMoKSBjb25zdDsKKyAgICAKKyAgICB2b2lkIHZpc2l0V2VhaygpOworICAgIAorcHJp
dmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQ2FsbEVkZ2VMb2c7CisgICAgCisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIG1heEtub3duQ2FsbGVlcyA9IDU7CisgICAgCisgICAgdm9pZCBhZGQoSlNW
YWx1ZSwgQ2FsbEVkZ2VQcm9maWxlVmVjdG9yJiBtZXJnZUJhY2tMb2cpOworICAgIAorICAgIGJv
b2wgd29ydGhEZXNwZWNpZnlpbmcoKTsKKyAgICB2b2lkIGFkZFNsb3coQ2FsbFZhcmlhbnQsIENh
bGxFZGdlUHJvZmlsZVZlY3RvciYgbWVyZ2VCYWNrTG9nKTsKKyAgICB2b2lkIG1lcmdlQmFjaygp
OworICAgIHZvaWQgZmFkZUJ5SGFsZigpOworICAgIAorICAgIC8vIEl0J3MgY2hlYXBlciB0byBs
ZXQgdGhpcyBoYXZlIGl0cyBvd24gbG9jay4gSXQgbmVlZHMgdG8gYmUgYWJsZSB0byBmaW5kIHdo
aWNoIGxvY2sgdG8KKyAgICAvLyBsb2NrLiBOb3JtYWxseSBpdCB3b3VsZCBsb2NrIHRoZSBvd25p
bmcgQ29kZUJsb2NrJ3MgbG9jaywgYnV0IHRoYXQgd291bGQgcmVxdWlyZSBhCisgICAgLy8gcG9p
bnRlci13aWR0aCB3b3JkIHRvIHBvaW50IGF0IHRoZSBDb2RlQmxvY2suIEhhdmluZyB0aGUgYnl0
ZS1zaXplZCBsb2NrIGhlcmUgaXMKKyAgICAvLyBjaGVhcGVyLiBIb3dldmVyLCB0aGlzIG1lYW5z
IHRoYXQgdGhlIHJlbGF0aW9uc2hpcCB3aXRoIHRoZSBDb2RlQmxvY2sgbG9jayBpczoKKyAgICAv
LyBhY3F1aXJlIHRoZSBDb2RlQmxvY2sgbG9jayBiZWZvcmUgdGhpcyBvbmUuCisgICAgbXV0YWJs
ZSBDb25jdXJyZW50SklUTG9jayBtX2xvY2s7CisgICAgCisgICAgYm9vbCBtX2Nsb3N1cmVzQXJl
RGVzcGVjaWZpZWQ7CisgICAgCisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbV9udW1DYWxsc1RvUHJp
bWFyeTsKKyAgICBDYWxsRWRnZUNvdW50VHlwZSBtX251bUNhbGxzVG9Ob3RDZWxsOworICAgIENh
bGxFZGdlQ291bnRUeXBlIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxsOworICAgIENhbGxFZGdlQ291
bnRUeXBlIG1fdG90YWxDb3VudDsKKyAgICBDYWxsVmFyaWFudCBtX3ByaW1hcnlDYWxsZWU7Cisg
ICAgCisgICAgdHlwZWRlZiBTcGVjdHJ1bTxDYWxsVmFyaWFudCwgQ2FsbEVkZ2VDb3VudFR5cGU+
IENhbGxTcGVjdHJ1bTsKKyAgICAKKyAgICBzdHJ1Y3QgU2Vjb25kYXJ5IHsKKyAgICAgICAgVmVj
dG9yPENhbGxFZGdlPiBtX3Byb2Nlc3NlZDsgLy8gUHJvY2Vzc2VkIGJ1dCBub3QgbmVjZXNzYXJp
bHkgc29ydGVkLgorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbFNwZWN0cnVtPiBtX3RlbXBv
cmFyeVNwZWN0cnVtOworICAgIH07CisgICAgCisgICAgc3RkOjp1bmlxdWVfcHRyPFNlY29uZGFy
eT4gbV9vdGhlckNhbGxlZXM7Cit9OworCitjbGFzcyBDYWxsRWRnZUxvZyB7CitwdWJsaWM6Cisg
ICAgQ2FsbEVkZ2VMb2coKTsKKyAgICB+Q2FsbEVkZ2VMb2coKTsKKworICAgIHN0YXRpYyBib29s
IGlzRW5hYmxlZCgpOworICAgIAorI2lmIEVOQUJMRShKSVQpCisgICAgdm9pZCBlbWl0TG9nQ29k
ZShDQ2FsbEhlbHBlcnMmLCBDYWxsRWRnZVByb2ZpbGUmLCBKU1ZhbHVlUmVncyBjYWxsZWVSZWdz
KTsgLy8gQXNzdW1lcyB0aGF0IHN0YWNrIGlzIGFsaWduZWQsIGFsbCB2b2xhdGlsZSByZWdpc3Rl
cnMgLSBvdGhlciB0aGFuIGNhbGxlZUdQUiAtIGFyZSBjbG9iYmVyYWJsZSwgYW5kIHRoZSBwYXJh
bWV0ZXIgc3BhY2UgaXMgaW4gdXNlLgorICAgIAorICAgIC8vIFNhbWUgYXMgYWJvdmUgYnV0IGNy
ZWF0ZXMgYSBDYWxsRWRnZVByb2ZpbGUgaW5zdGFuY2UgaWYgb25lIGRpZCBub3QgYWxyZWFkeSBl
eGlzdC4gRG9lcworICAgIC8vIHRoaXMgaW4gYSB0aHJlYWQtc2FmZSBtYW5uZXIgYnkgY2FsbGlu
ZyBPd25QdHI6OmNyZWF0ZVRyYW5zYWN0aW9uYWxseS4KKyAgICB2b2lkIGVtaXRMb2dDb2RlKEND
YWxsSGVscGVycyYsIE93blB0cjxDYWxsRWRnZVByb2ZpbGU+JiwgSlNWYWx1ZVJlZ3MgY2FsbGVl
UmVncyk7CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKyAgICAKKyAgICB2b2lkIHByb2Nlc3NMb2co
KTsKKyAgICAKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb2dTaXplID0gMTAwMDA7CisgICAgCisg
ICAgc3RydWN0IEVudHJ5IHsKKyAgICAgICAgSlNWYWx1ZSBtX3ZhbHVlOworICAgICAgICBDYWxs
RWRnZVByb2ZpbGUqIG1fcHJvZmlsZTsKKyAgICB9OworICAgIAorICAgIHVuc2lnbmVkIG1fc2Nh
bGVkTG9nSW5kZXg7CisgICAgRW50cnkgbV9sb2dbbG9nU2l6ZV07Cit9OworCit9IC8vIG5hbWVz
cGFjZSBKU0MKKworI2VuZGlmIC8vIENhbGxFZGdlUHJvZmlsZV9oCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZUlubGlu
ZXMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
RWRnZVByb2ZpbGVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENhbGxF
ZGdlUHJvZmlsZUlubGluZXNfaAorI2RlZmluZSBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzX2gKKwor
I2luY2x1ZGUgIkNhbGxFZGdlUHJvZmlsZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworaW5saW5l
IENhbGxFZGdlUHJvZmlsZTo6Q2FsbEVkZ2VQcm9maWxlKCkKKyAgICA6IG1fY2xvc3VyZXNBcmVE
ZXNwZWNpZmllZChmYWxzZSkKKyAgICAsIG1fbnVtQ2FsbHNUb1ByaW1hcnkoMCkKKyAgICAsIG1f
bnVtQ2FsbHNUb05vdENlbGwoMCkKKyAgICAsIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxsKDApCisg
ICAgLCBtX3RvdGFsQ291bnQoMCkKKyAgICAsIG1fcHJpbWFyeUNhbGxlZShudWxscHRyKQorewor
fQorCitBTFdBWVNfSU5MSU5FIHZvaWQgQ2FsbEVkZ2VQcm9maWxlOjphZGQoSlNWYWx1ZSB2YWx1
ZSwgQ2FsbEVkZ2VQcm9maWxlVmVjdG9yJiBtZXJnZUJhY2tMb2cpCit7CisgICAgdW5zaWduZWQg
bmV3VG90YWxDb3VudCA9IG1fdG90YWxDb3VudCArIDE7CisgICAgaWYgKFVOTElLRUxZKCFuZXdU
b3RhbENvdW50KSkgeworICAgICAgICBmYWRlQnlIYWxmKCk7IC8vIFRhY2tsZSBvdmVyZmxvd3Mg
YnkgZGl2aWRpbmcgYWxsIGNvdW50cyBieSB0d28uCisgICAgICAgIG5ld1RvdGFsQ291bnQgPSBt
X3RvdGFsQ291bnQgKyAxOworICAgIH0KKyAgICBBU1NFUlQobmV3VG90YWxDb3VudCk7CisgICAg
bV90b3RhbENvdW50ID0gbmV3VG90YWxDb3VudDsKKyAgICAKKyAgICBpZiAoVU5MSUtFTFkoIXZh
bHVlLmlzQ2VsbCgpKSkgeworICAgICAgICBtX251bUNhbGxzVG9Ob3RDZWxsKys7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBDYWxsVmFyaWFudCBjYWxsZWUgPSBDYWxsVmFyaWFudCh2
YWx1ZS5hc0NlbGwoKSk7CisgICAgCisgICAgaWYgKG1fY2xvc3VyZXNBcmVEZXNwZWNpZmllZCkK
KyAgICAgICAgY2FsbGVlID0gY2FsbGVlLmRlc3BlY2lmaWVkQ2xvc3VyZSgpOworICAgIAorICAg
IGlmIChVTkxJS0VMWSghbV9wcmltYXJ5Q2FsbGVlKSkgeworICAgICAgICBtX3ByaW1hcnlDYWxs
ZWUgPSBjYWxsZWU7CisgICAgICAgIG1fbnVtQ2FsbHNUb1ByaW1hcnkgPSAxOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBpZiAoTElLRUxZKG1fcHJpbWFyeUNhbGxlZSA9
PSBjYWxsZWUpKSB7CisgICAgICAgIG1fbnVtQ2FsbHNUb1ByaW1hcnkrKzsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAgICAgCisgICAgaWYgKFVOTElLRUxZKCFtX290aGVyQ2FsbGVlcykp
IHsKKyAgICAgICAgYWRkU2xvdyhjYWxsZWUsIG1lcmdlQmFja0xvZyk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgICAgIAorICAgIENhbGxTcGVjdHJ1bSogc2Vjb25kYXJ5ID0gbV9vdGhl
ckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0uZ2V0KCk7CisgICAgaWYgKCFzZWNvbmRhcnkp
IHsKKyAgICAgICAgYWRkU2xvdyhjYWxsZWUsIG1lcmdlQmFja0xvZyk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgICAgIAorICAgIHNlY29uZGFyeS0+YWRkKGNhbGxlZSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ2FsbEVkZ2VQcm9maWxlSW5saW5lc19oCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8u
Y3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsMTEgQEAgdm9pZCBD
YWxsTGlua0luZm86OnZpc2l0V2VhayhSZXBhdGNoQnVmZgogICAgIH0KICAgICBpZiAoISFsYXN0
U2VlbkNhbGxlZSAmJiAhSGVhcDo6aXNNYXJrZWQobGFzdFNlZW5DYWxsZWUuZ2V0KCkpKQogICAg
ICAgICBsYXN0U2VlbkNhbGxlZS5jbGVhcigpOworICAgIAorICAgIGlmIChjYWxsRWRnZVByb2Zp
bGUpIHsKKyAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CisgICAgICAgIGNhbGxFZGdlUHJv
ZmlsZS0+dmlzaXRXZWFrKCk7CisgICAgfQogfQogCiBDYWxsTGlua0luZm8mIENhbGxMaW5rSW5m
bzo6ZHVtbXkoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5r
SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TGlua0luZm8uaAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxMaW5rSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAj
aWZuZGVmIENhbGxMaW5rSW5mb19oCiAjZGVmaW5lIENhbGxMaW5rSW5mb19oCiAKKyNpbmNsdWRl
ICJDYWxsRWRnZVByb2ZpbGUuaCIKICNpbmNsdWRlICJDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmgi
CiAjaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9u
S2luZC5oIgpAQCAtMzMsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKKyNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKQEAgLTg4LDYgKzkwLDcgQEAgc3RydWN0IENhbGxMaW5rSW5mbyA6IHB1YmxpYyBC
YXNpY1Jhd1NlbgogICAgIHVuc2lnbmVkIGNhbGxlZUdQUiA6IDg7CiAgICAgdW5zaWduZWQgc2xv
d1BhdGhDb3VudDsKICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW47CisgICAgT3duUHRyPENhbGxF
ZGdlUHJvZmlsZT4gY2FsbEVkZ2VQcm9maWxlOwogCiAgICAgYm9vbCBpc0xpbmtlZCgpIHsgcmV0
dXJuIHN0dWIgfHwgY2FsbGVlOyB9CiAgICAgdm9pZCB1bmxpbmsoUmVwYXRjaEJ1ZmZlciYpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0
dXMuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw1NCArMzIsMjIgQEAK
ICNpbmNsdWRlICJMTEludENhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
ICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CisjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewogCiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7
CiAKIENhbGxMaW5rU3RhdHVzOjpDYWxsTGlua1N0YXR1cyhKU1ZhbHVlIHZhbHVlKQotICAgIDog
bV9jYWxsVGFyZ2V0KHZhbHVlKQotICAgICwgbV9leGVjdXRhYmxlKDApCi0gICAgLCBtX2NvdWxk
VGFrZVNsb3dQYXRoKGZhbHNlKQorICAgIDogbV9jb3VsZFRha2VTbG93UGF0aChmYWxzZSkKICAg
ICAsIG1faXNQcm92ZWQoZmFsc2UpCiB7Ci0gICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxs
KCkpCisgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkpIHsKKyAgICAgICAgbV9jb3Vs
ZFRha2VTbG93UGF0aCA9IHRydWU7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgCi0gICAg
aWYgKCF2YWx1ZS5hc0NlbGwoKS0+aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIAotICAgIG1fZXhlY3V0YWJsZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4o
dmFsdWUuYXNDZWxsKCkpLT5leGVjdXRhYmxlKCk7Ci19Ci0KLUpTRnVuY3Rpb24qIENhbGxMaW5r
U3RhdHVzOjpmdW5jdGlvbigpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2NhbGxUYXJnZXQgfHwgIW1f
Y2FsbFRhcmdldC5pc0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgaWYgKCFt
X2NhbGxUYXJnZXQuYXNDZWxsKCktPmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpCi0gICAg
ICAgIHJldHVybiAwOwotICAgIAotICAgIHJldHVybiBqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2Fs
bFRhcmdldC5hc0NlbGwoKSk7Ci19Ci0KLUludGVybmFsRnVuY3Rpb24qIENhbGxMaW5rU3RhdHVz
OjppbnRlcm5hbEZ1bmN0aW9uKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fY2FsbFRhcmdldCB8fCAh
bV9jYWxsVGFyZ2V0LmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBpZiAo
IW1fY2FsbFRhcmdldC5hc0NlbGwoKS0+aW5oZXJpdHMoSW50ZXJuYWxGdW5jdGlvbjo6aW5mbygp
KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgcmV0dXJuIGpzQ2FzdDxJbnRlcm5hbEZ1
bmN0aW9uKj4obV9jYWxsVGFyZ2V0LmFzQ2VsbCgpKTsKLX0KLQotSW50cmluc2ljIENhbGxMaW5r
U3RhdHVzOjppbnRyaW5zaWNGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKSBjb25zdAot
ewotICAgIGlmICghbV9leGVjdXRhYmxlKQotICAgICAgICByZXR1cm4gTm9JbnRyaW5zaWM7Ci0g
ICAgCi0gICAgcmV0dXJuIG1fZXhlY3V0YWJsZS0+aW50cmluc2ljRm9yKGtpbmQpOworICAgIG1f
ZWRnZXMuYXBwZW5kKENhbGxFZGdlKENhbGxWYXJpYW50KHZhbHVlLmFzQ2VsbCgpKSwgMSkpOwog
fQogCiBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludChjb25z
dCBDb25jdXJyZW50SklUTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKQEAgLTg3LDcgKzU1LDcgQEAgQ2FsbExpbmtTdGF0dXMg
Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcgogICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2Nr
KTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAjaWYgRU5BQkxFKERGR19KSVQp
Ci0gICAgaWYgKHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVu
dEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZEZ1bmN0aW9uKSkpIHsKKyAgICBpZiAocHJvZmls
ZWRCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNv
ZGVJbmRleCwgQmFkQ2VsbCkpKSB7CiAgICAgICAgIC8vIFdlIGNvdWxkIGZvcmNlIHRoaXMgdG8g
YmUgYSBjbG9zdXJlIGNhbGwsIGJ1dCBpbnN0ZWFkIHdlJ2xsIGp1c3QgYXNzdW1lIHRoYXQgaXQK
ICAgICAgICAgLy8gdGFrZXMgc2xvdyBwYXRoLgogICAgICAgICByZXR1cm4gdGFrZXNTbG93UGF0
aCgpOwpAQCAtMTI1LDcgKzkzLDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNv
bXB1dGVGbwogICAgIGlmICghY2FsbExpbmtJbmZvKQogICAgICAgICByZXR1cm4gY29tcHV0ZUZy
b21MTEludChsb2NrZXIsIHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOwogICAgIAotICAg
IHJldHVybiBjb21wdXRlRm9yKGxvY2tlciwgKmNhbGxMaW5rSW5mbywgZXhpdFNpdGVEYXRhKTsK
KyAgICByZXR1cm4gY29tcHV0ZUZvcihsb2NrZXIsIHByb2ZpbGVkQmxvY2ssICpjYWxsTGlua0lu
Zm8sIGV4aXRTaXRlRGF0YSk7CiAjZWxzZQogICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygpOwog
I2VuZGlmCkBAIC0xMzksMTAgKzEwNywxMCBAQCBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRh
IENhbGxMaW5rU3RhCiAgICAgCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgZXhpdFNpdGVEYXRh
Lm1fdGFrZXNTbG93UGF0aCA9Ci0gICAgICAgIHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxv
Y2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENhY2hlLCBleGl0
aW5nSklUVHlwZSkpCisgICAgICAgIHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwg
REZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZFR5cGUsIGV4aXRpbmdKSVRU
eXBlKSkKICAgICAgICAgfHwgcHJvZmlsZWRCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6
OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkRXhlY3V0YWJsZSwgZXhpdGluZ0pJ
VFR5cGUpKTsKICAgICBleGl0U2l0ZURhdGEubV9iYWRGdW5jdGlvbiA9Ci0gICAgICAgIHByb2Zp
bGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVj
b2RlSW5kZXgsIEJhZEZ1bmN0aW9uLCBleGl0aW5nSklUVHlwZSkpOworICAgICAgICBwcm9maWxl
ZEJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29k
ZUluZGV4LCBCYWRDZWxsLCBleGl0aW5nSklUVHlwZSkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0obG9ja2VyKTsKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CkBAIC0xNTQsNyAr
MTIyLDM0IEBAIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgQ2FsbExpbmtTdGEKIH0KIAog
I2lmIEVOQUJMRShKSVQpCi1DYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZv
cihjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8p
CitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKKyAgICBjb25zdCBD
b25jdXJyZW50SklUTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQ2Fs
bExpbmtJbmZvJiBjYWxsTGlua0luZm8pCit7CisgICAgLy8gV2UgZG9uJ3QgcmVhbGx5IG5lZWQg
dGhpcywgYnV0IGFueXRpbWUgd2UgaGF2ZSB0byBkZWJ1ZyB0aGlzIGNvZGUsIGl0IGJlY29tZXMg
aW5kaXNwZW5zYWJsZS4KKyAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CisgICAgCisg
ICAgaWYgKE9wdGlvbnM6OmNhbGxTdGF0dXNTaG91bGRVc2VDYWxsRWRnZVByb2ZpbGUoKSkgewor
ICAgICAgICAvLyBBbHdheXMgdHJ1c3QgdGhlIGNhbGwgZWRnZSBwcm9maWxlIG92ZXIgYW55dGhp
bmcgZWxzZSBzaW5jZSB0aGlzIGhhcyBwcmVjaXNlIGNvdW50cy4KKyAgICAgICAgLy8gSXQgY2Fu
IG1ha2UgdGhlIGJlc3QgcG9zc2libGUgZGVjaXNpb24gYmVjYXVzZSBpdCBuZXZlciAiZm9yZ2V0
cyIgd2hhdCBoYXBwZW5lZCBmb3IgYW55CisgICAgICAgIC8vIGNhbGwsIHdpdGggdGhlIGV4Y2Vw
dGlvbiBvZiBmYWRpbmcgb3V0IHRoZSBjb3VudHMgb2Ygb2xkIGNhbGxzIChmb3IgZXhhbXBsZSBp
ZiB0aGUKKyAgICAgICAgLy8gY291bnRlciB0eXBlIGlzIDE2LWJpdCB0aGVuIGNhbGxzIHRoYXQg
aGFwcGVuZWQgbW9yZSB0aGFuIDJeMTYgY2FsbHMgYWdvIGFyZSBnaXZlbiBoYWxmCisgICAgICAg
IC8vIHdlaWdodCwgYW5kIHRoaXMgY29tcG91bmRzIGZvciBldmVyeSAyXjE1IFtzaWNdIGNhbGxz
IGFmdGVyIHRoYXQpLiBUaGUgY29tYmluYXRpb24gb2YKKyAgICAgICAgLy8gaGlnaCBmaWRlbGl0
eSBmb3IgcmVjZW50IGNhbGxzIGFuZCBmYWRpbmcgZm9yIG9sZGVyIGNhbGxzIG1ha2VzIHRoaXMg
dGhlIG1vc3QgdXNlZnVsCisgICAgICAgIC8vIG1lY2hhbWlzbSBvZiBjaG9vc2luZyBob3cgdG8g
b3B0aW1pemUgZnV0dXJlIGNhbGxzLgorICAgICAgICBDYWxsRWRnZVByb2ZpbGUqIGVkZ2VQcm9m
aWxlID0gY2FsbExpbmtJbmZvLmNhbGxFZGdlUHJvZmlsZS5nZXQoKTsKKyAgICAgICAgV1RGOjps
b2FkTG9hZEZlbmNlKCk7CisgICAgICAgIGlmIChlZGdlUHJvZmlsZSkgeworICAgICAgICAgICAg
Q2FsbExpbmtTdGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZyb21DYWxsRWRnZVByb2ZpbGUoZWRnZVBy
b2ZpbGUpOworICAgICAgICAgICAgaWYgKCEhcmVzdWx0KQorICAgICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIGNvbXB1dGVGcm9t
Q2FsbExpbmtJbmZvKGxvY2tlciwgY2FsbExpbmtJbmZvKTsKK30KKworQ2FsbExpbmtTdGF0dXMg
Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tQ2FsbExpbmtJbmZvKAorICAgIGNvbnN0IENvbmN1
cnJlbnRKSVRMb2NrZXImLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykKIHsKICAgICAvLyBO
b3RlIHRoYXQgZGVzcGl0ZSByZXF1aXJpbmcgdGhhdCB0aGUgbG9ja2VyIGlzIGhlbGQsIHRoaXMg
Y29kZSBpcyByYWN5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHRoZSBDYWxsTGlua0luZm86IGl0
IG1heSBnZXQgY2xlYXJlZCB3aGlsZSB0aGlzIGNvZGUgcnVucyEgVGhpcyBpcyBiZWNhdXNlCkBA
IC0xNzcsNyArMTcyLDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVG
bwogICAgIAogICAgIEpTRnVuY3Rpb24qIHRhcmdldCA9IGNhbGxMaW5rSW5mby5sYXN0U2VlbkNh
bGxlZS5nZXQoKTsKICAgICBpZiAoIXRhcmdldCkKLSAgICAgICAgcmV0dXJuIENhbGxMaW5rU3Rh
dHVzKCk7CisgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7CiAgICAgCiAgICAgaWYgKGNh
bGxMaW5rSW5mby5oYXNTZWVuQ2xvc3VyZSkKICAgICAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVz
KHRhcmdldC0+ZXhlY3V0YWJsZSgpKTsKQEAgLTE4NSwxNSArMTgwLDQzIEBAIENhbGxMaW5rU3Rh
dHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMo
dGFyZ2V0KTsKIH0KIAotQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3Io
Ci0gICAgY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBDYWxsTGlua0luZm8mIGNh
bGxMaW5rSW5mbywgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSkKK0NhbGxMaW5rU3RhdHVzIENh
bGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUNhbGxFZGdlUHJvZmlsZShDYWxsRWRnZVByb2ZpbGUq
IGVkZ2VQcm9maWxlKQogewotICAgIGlmIChleGl0U2l0ZURhdGEubV90YWtlc1Nsb3dQYXRoKQor
ICAgIC8vIEluIGNhc2VzIHdoZXJlIHRoZSBjYWxsIGVkZ2UgcHJvZmlsZSBzYXcgbm90aGluZywg
dXNlIHRoZSBDYWxsTGlua0luZm8gaW5zdGVhZC4KKyAgICBpZiAoIWVkZ2VQcm9maWxlLT50b3Rh
bENhbGxzKCkpCisgICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygpOworICAgIAorICAgIC8v
IFRvIGRvIGFueXRoaW5nIG1lYW5pbmdmdWwsIHdlIHJlcXVpcmUgdGhhdCB0aGUgbWFqb3JpdHkg
b2YgY2FsbHMgYXJlIHRvIHNvbWV0aGluZyB3ZQorICAgIC8vIGtub3cgaG93IHRvIGhhbmRsZS4K
KyAgICB1bnNpZ25lZCBudW1DYWxsc1RvS25vd24gPSBlZGdlUHJvZmlsZS0+bnVtQ2FsbHNUb0tu
b3duQ2VsbHMoKTsKKyAgICB1bnNpZ25lZCBudW1DYWxsc1RvVW5rbm93biA9IGVkZ2VQcm9maWxl
LT5udW1DYWxsc1RvTm90Q2VsbCgpICsgZWRnZVByb2ZpbGUtPm51bUNhbGxzVG9Vbmtub3duQ2Vs
bCgpOworICAgIAorICAgIC8vIFdlIHJlcXVpcmUgdGhhdCB0aGUgbWFqb3JpdHkgb2YgY2FsbHMg
d2VyZSB0byBzb21ldGhpbmcgdGhhdCB3ZSBjb3VsZCBwb3NzaWJseSBpbmxpbmUuCisgICAgaWYg
KG51bUNhbGxzVG9Lbm93biA8PSBudW1DYWxsc1RvVW5rbm93bikKKyAgICAgICAgcmV0dXJuIHRh
a2VzU2xvd1BhdGgoKTsKKyAgICAKKyAgICAvLyBXZSByZXF1aXJlIHRoYXQgdGhlIG51bWJlciBv
ZiBzdWNoIGNhbGxzIGlzIGdyZWF0ZXIgdGhhbiBzb21lIG1pbmltYWwgdGhyZXNob2xkLCBzbyB0
aGF0IHdlCisgICAgLy8gYXZvaWQgaW5saW5pbmcgY29tcGxldGVseSBjb2xkIGNhbGxzLgorICAg
IGlmIChudW1DYWxsc1RvS25vd24gPCBPcHRpb25zOjpmcmVxdWVudENhbGxUaHJlc2hvbGQoKSkK
ICAgICAgICAgcmV0dXJuIHRha2VzU2xvd1BhdGgoKTsKICAgICAKLSAgICBDYWxsTGlua1N0YXR1
cyByZXN1bHQgPSBjb21wdXRlRm9yKGxvY2tlciwgY2FsbExpbmtJbmZvKTsKKyAgICBDYWxsTGlu
a1N0YXR1cyByZXN1bHQ7CisgICAgcmVzdWx0Lm1fZWRnZXMgPSBlZGdlUHJvZmlsZS0+Y2FsbEVk
Z2VzKCk7CisgICAgcmVzdWx0Lm1fY291bGRUYWtlU2xvd1BhdGggPSAhIW51bUNhbGxzVG9Vbmtu
b3duOworICAgIHJlc3VsdC5tX2NhblRydXN0Q291bnRzID0gdHJ1ZTsKKyAgICAKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZv
cigKKyAgICBjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayogcHJv
ZmlsZWRCbG9jaywgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sCisgICAgRXhpdFNpdGVEYXRh
IGV4aXRTaXRlRGF0YSkKK3sKKyAgICBDYWxsTGlua1N0YXR1cyByZXN1bHQgPSBjb21wdXRlRm9y
KGxvY2tlciwgcHJvZmlsZWRCbG9jaywgY2FsbExpbmtJbmZvKTsKICAgICBpZiAoZXhpdFNpdGVE
YXRhLm1fYmFkRnVuY3Rpb24pCiAgICAgICAgIHJlc3VsdC5tYWtlQ2xvc3VyZUNhbGwoKTsKKyAg
ICBpZiAoZXhpdFNpdGVEYXRhLm1fdGFrZXNTbG93UGF0aCkKKyAgICAgICAgcmVzdWx0Lm1fY291
bGRUYWtlU2xvd1BhdGggPSB0cnVlOwogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0y
MjcsNyArMjUwLDcgQEAgdm9pZCBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZURGR1N0YXR1c2VzKAog
ICAgICAgICAKICAgICAgICAgewogICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIoZGZnQ29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgbWFwLmFkZChpbmZvLmNvZGVP
cmlnaW4sIGNvbXB1dGVGb3IobG9ja2VyLCBpbmZvLCBleGl0U2l0ZURhdGEpKTsKKyAgICAgICAg
ICAgIG1hcC5hZGQoaW5mby5jb2RlT3JpZ2luLCBjb21wdXRlRm9yKGxvY2tlciwgZGZnQ29kZUJs
b2NrLCBpbmZvLCBleGl0U2l0ZURhdGEpKTsKICAgICAgICAgfQogICAgIH0KICNlbHNlCkBAIC0y
NTYsNiArMjc5LDMxIEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8K
ICAgICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2Rl
SW5kZXgsIGJhc2VsaW5lTWFwKTsKIH0KIAorYm9vbCBDYWxsTGlua1N0YXR1czo6aXNDbG9zdXJl
Q2FsbCgpIGNvbnN0Cit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9lZGdlcy5zaXplKCk7IGkt
LTspIHsKKyAgICAgICAgaWYgKG1fZWRnZXNbaV0uY2FsbGVlKCkuaXNDbG9zdXJlQ2FsbCgpKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwor
dm9pZCBDYWxsTGlua1N0YXR1czo6bWFrZUNsb3N1cmVDYWxsKCkKK3sKKyAgICBBU1NFUlQoIW1f
aXNQcm92ZWQpOworICAgIGZvciAodW5zaWduZWQgaSA9IG1fZWRnZXMuc2l6ZSgpOyBpLS07KQor
ICAgICAgICBtX2VkZ2VzW2ldID0gbV9lZGdlc1tpXS5kZXNwZWNpZmllZENsb3N1cmUoKTsKKyAg
ICAKKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICAvLyBEb2luZyB0aGlzIHNo
b3VsZCBub3QgaGF2ZSBjcmVhdGVkIGR1cGxpY2F0ZXMsIGJlY2F1c2UgdGhlIENhbGxFZGdlUHJv
ZmlsZQorICAgICAgICAvLyBzaG91bGQgZGVzcGVjaWZ5IGNsb3N1cmVzIGlmIGRvaW5nIHNvIHdv
dWxkIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGtub3duIGNhbGxlZXMuCisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX2VkZ2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGogPSBpICsgMTsgaiA8IG1fZWRnZXMuc2l6ZSgpOyArK2opCisgICAgICAgICAg
ICAgICAgQVNTRVJUKG1fZWRnZXNbaV0uY2FsbGVlKCkgIT0gbV9lZGdlc1tqXS5jYWxsZWUoKSk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgQ2FsbExpbmtTdGF0dXM6OmR1bXAoUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBpZiAoIWlzU2V0KCkpIHsKQEAgLTI3MSwxNCArMzE5
LDcgQEAgdm9pZCBDYWxsTGlua1N0YXR1czo6ZHVtcChQcmludFN0cmVhbSYgbwogICAgIGlmICht
X2NvdWxkVGFrZVNsb3dQYXRoKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsICJDb3VsZCBUYWtl
IFNsb3cgUGF0aCIpOwogICAgIAotICAgIGlmIChtX2NhbGxUYXJnZXQpCi0gICAgICAgIG91dC5w
cmludChjb21tYSwgIktub3duIHRhcmdldDogIiwgbV9jYWxsVGFyZ2V0KTsKLSAgICAKLSAgICBp
ZiAobV9leGVjdXRhYmxlKSB7Ci0gICAgICAgIG91dC5wcmludChjb21tYSwgIkV4ZWN1dGFibGUv
Q2FsbEhhc2g6ICIsIFJhd1BvaW50ZXIobV9leGVjdXRhYmxlKSk7Ci0gICAgICAgIGlmICghaXND
b21waWxhdGlvblRocmVhZCgpKQotICAgICAgICAgICAgb3V0LnByaW50KCIvIiwgbV9leGVjdXRh
YmxlLT5oYXNoRm9yKENvZGVGb3JDYWxsKSk7Ci0gICAgfQorICAgIG91dC5wcmludChsaXN0RHVt
cChtX2VkZ2VzKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHJldmlzaW9uIDE3Mjg1
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Niw5ICs0Niw5IEBAIHN0cnVjdCBDYWxsTGlua0luZm87CiBjbGFz
cyBDYWxsTGlua1N0YXR1cyB7CiBwdWJsaWM6CiAgICAgQ2FsbExpbmtTdGF0dXMoKQotICAgICAg
ICA6IG1fZXhlY3V0YWJsZSgwKQotICAgICAgICAsIG1fY291bGRUYWtlU2xvd1BhdGgoZmFsc2Up
CisgICAgICAgIDogbV9jb3VsZFRha2VTbG93UGF0aChmYWxzZSkKICAgICAgICAgLCBtX2lzUHJv
dmVkKGZhbHNlKQorICAgICAgICAsIG1fY2FuVHJ1c3RDb3VudHMoZmFsc2UpCiAgICAgewogICAg
IH0KICAgICAKQEAgLTYxLDEwICs2MSwxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgZXhwbGljaXQg
Q2FsbExpbmtTdGF0dXMoSlNWYWx1ZSk7CiAgICAgCi0gICAgQ2FsbExpbmtTdGF0dXMoRXhlY3V0
YWJsZUJhc2UqIGV4ZWN1dGFibGUpCi0gICAgICAgIDogbV9leGVjdXRhYmxlKGV4ZWN1dGFibGUp
CisgICAgQ2FsbExpbmtTdGF0dXMoQ2FsbFZhcmlhbnQgdmFyaWFudCkKKyAgICAgICAgOiBtX2Vk
Z2VzKDEsIENhbGxFZGdlKHZhcmlhbnQsIDEpKQogICAgICAgICAsIG1fY291bGRUYWtlU2xvd1Bh
dGgoZmFsc2UpCiAgICAgICAgICwgbV9pc1Byb3ZlZChmYWxzZSkKKyAgICAgICAgLCBtX2NhblRy
dXN0Q291bnRzKGZhbHNlKQogICAgIHsKICAgICB9CiAgICAgCkBAIC05Miw4ICs5Myw5IEBAIHB1
YmxpYzoKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIENvbXB1dGVzIHRoZSBzdGF0dXMgYXNzdW1p
bmcgdGhhdCB3ZSBuZXZlciB0b29rIHNsb3cgcGF0aCBhbmQgbmV2ZXIgcHJldmlvdXNseQogICAg
IC8vIGV4aXRlZC4KLSAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcihjb25zdCBD
b25jdXJyZW50SklUTG9ja2VyJiwgQ2FsbExpbmtJbmZvJik7Ci0gICAgc3RhdGljIENhbGxMaW5r
U3RhdHVzIGNvbXB1dGVGb3IoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENhbGxMaW5rSW5m
byYsIEV4aXRTaXRlRGF0YSk7CisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3Io
Y29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENvZGVCbG9jayosIENhbGxMaW5rSW5mbyYpOwor
ICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKAorICAgICAgICBjb25zdCBDb25j
dXJyZW50SklUTG9ja2VyJiwgQ29kZUJsb2NrKiwgQ2FsbExpbmtJbmZvJiwgRXhpdFNpdGVEYXRh
KTsKICNlbmRpZgogICAgIAogICAgIHR5cGVkZWYgSGFzaE1hcDxDb2RlT3JpZ2luLCBDYWxsTGlu
a1N0YXR1cywgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gQ29udGV4dE1hcDsKQEAgLTEwNywz
NyArMTA5LDM4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZv
cigKICAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgY29uc3QgQ2FsbExpbmtJbmZvTWFw
JiwgY29uc3QgQ29udGV4dE1hcCYpOwogICAgIAotICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJl
dHVybiBtX2NhbGxUYXJnZXQgfHwgbV9leGVjdXRhYmxlIHx8IG1fY291bGRUYWtlU2xvd1BhdGg7
IH0KKyAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gIW1fZWRnZXMuaXNFbXB0eSgpIHx8
IG1fY291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0
IHsgcmV0dXJuICFpc1NldCgpOyB9CiAgICAgCiAgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fY291bGRUYWtlU2xvd1BhdGg7IH0KLSAgICBib29sIGlzQ2xvc3Vy
ZUNhbGwoKSBjb25zdCB7IHJldHVybiBtX2V4ZWN1dGFibGUgJiYgIW1fY2FsbFRhcmdldDsgfQog
ICAgIAotICAgIEpTVmFsdWUgY2FsbFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdl
dDsgfQotICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uKCkgY29uc3Q7Ci0gICAgSW50ZXJuYWxGdW5j
dGlvbiogaW50ZXJuYWxGdW5jdGlvbigpIGNvbnN0OwotICAgIEludHJpbnNpYyBpbnRyaW5zaWNG
b3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCkgY29uc3Q7Ci0gICAgRXhlY3V0YWJsZUJhc2UqIGV4
ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtX2V4ZWN1dGFibGU7IH0KKyAgICBDYWxsRWRnZUxp
c3QgZWRnZXMoKSBjb25zdCB7IHJldHVybiBtX2VkZ2VzOyB9CisgICAgdW5zaWduZWQgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZWRnZXMuc2l6ZSgpOyB9CisgICAgQ2FsbEVkZ2UgYXQodW5zaWdu
ZWQgaSkgY29uc3QgeyByZXR1cm4gbV9lZGdlc1tpXTsgfQorICAgIENhbGxFZGdlIG9wZXJhdG9y
W10odW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0KICAgICBib29sIGlzUHJvdmVk
KCkgY29uc3QgeyByZXR1cm4gbV9pc1Byb3ZlZDsgfQotICAgIGJvb2wgY2FuT3B0aW1pemUoKSBj
b25zdCB7IHJldHVybiAobV9jYWxsVGFyZ2V0IHx8IG1fZXhlY3V0YWJsZSkgJiYgIW1fY291bGRU
YWtlU2xvd1BhdGg7IH0KKyAgICBib29sIGNhbk9wdGltaXplKCkgY29uc3QgeyByZXR1cm4gIW1f
ZWRnZXMuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBjYW5UcnVzdENvdW50cygpIGNvbnN0IHsgcmV0
dXJuIG1fY2FuVHJ1c3RDb3VudHM7IH0KKyAgICAKKyAgICBib29sIGlzQ2xvc3VyZUNhbGwoKSBj
b25zdDsgLy8gUmV0dXJucyB0cnVlIGlmIGFueSBjYWxsZWUgaXMgYSBjbG9zdXJlIGNhbGwuCiAg
ICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgot
ICAgIHZvaWQgbWFrZUNsb3N1cmVDYWxsKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9pc1By
b3ZlZCk7Ci0gICAgICAgIC8vIFR1cm4gdGhpcyBpbnRvIGEgY2xvc3VyZSBjYWxsLgotICAgICAg
ICBtX2NhbGxUYXJnZXQgPSBKU1ZhbHVlKCk7Ci0gICAgfQorICAgIHZvaWQgbWFrZUNsb3N1cmVD
YWxsKCk7CiAgICAgCiAgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGcm9tTExJbnQo
Y29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2Rl
SW5kZXgpOworI2lmIEVOQUJMRShKSVQpCisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1
dGVGcm9tQ2FsbEVkZ2VQcm9maWxlKENhbGxFZGdlUHJvZmlsZSopOworICAgIHN0YXRpYyBDYWxs
TGlua1N0YXR1cyBjb21wdXRlRnJvbUNhbGxMaW5rSW5mbygKKyAgICAgICAgY29uc3QgQ29uY3Vy
cmVudEpJVExvY2tlciYsIENhbGxMaW5rSW5mbyYpOworI2VuZGlmCiAgICAgCi0gICAgSlNWYWx1
ZSBtX2NhbGxUYXJnZXQ7Ci0gICAgRXhlY3V0YWJsZUJhc2UqIG1fZXhlY3V0YWJsZTsKKyAgICBD
YWxsRWRnZUxpc3QgbV9lZGdlczsKICAgICBib29sIG1fY291bGRUYWtlU2xvd1BhdGg7CiAgICAg
Ym9vbCBtX2lzUHJvdmVkOworICAgIGJvb2wgbV9jYW5UcnVzdENvdW50czsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxW
YXJpYW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbFZhcmlhbnQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxWYXJpYW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJDYWxsVmFyaWFudC5oIgorCisjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBDYWxsVmFyaWFudDo6ZHVtcChQcmludFN0
cmVhbSYgb3V0KSBjb25zdAoreworICAgIGlmICghKnRoaXMpIHsKKyAgICAgICAgb3V0LnByaW50
KCJudWxsIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKEludGVybmFs
RnVuY3Rpb24qIGludGVybmFsRnVuY3Rpb24gPSB0aGlzLT5pbnRlcm5hbEZ1bmN0aW9uKCkpIHsK
KyAgICAgICAgb3V0LnByaW50KCJJbnRlcm5hbEZ1bmN0aW9uOiAiLCBKU1ZhbHVlKGludGVybmFs
RnVuY3Rpb24pKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoSlNGdW5j
dGlvbiogZnVuY3Rpb24gPSB0aGlzLT5mdW5jdGlvbigpKSB7CisgICAgICAgIG91dC5wcmludCgi
KEZ1bmN0aW9uOiAiLCBKU1ZhbHVlKGZ1bmN0aW9uKSwgIjsgRXhlY3V0YWJsZTogIiwgKmV4ZWN1
dGFibGUoKSwgIikiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBvdXQucHJp
bnQoIkV4ZWN1dGFibGU6ICIsICpleGVjdXRhYmxlKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZh
cmlhbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENhbGxWYXJpYW50X2gKKyNk
ZWZpbmUgQ2FsbFZhcmlhbnRfaAorCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUg
IkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIENhbGxWYXJpYW50IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBDYWxsVmFyaWFudChK
U0NlbGwqIGNhbGxlZSA9IG51bGxwdHIpCisgICAgICAgIDogbV9jYWxsZWUoY2FsbGVlKQorICAg
IHsKKyAgICB9CisgICAgCisgICAgQ2FsbFZhcmlhbnQoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFs
dWVUeXBlKQorICAgICAgICA6IG1fY2FsbGVlKGRlbGV0ZWRUb2tlbigpKQorICAgIHsKKyAgICB9
CisgICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7IH0K
KyAgICAKKyAgICAvLyBJZiB0aGlzIHZhcmlhbnQgcmVmZXJzIHRvIGEgZnVuY3Rpb24sIGNoYW5n
ZSBpdCB0byByZWZlciB0byBpdHMgZXhlY3V0YWJsZS4KKyAgICBBTFdBWVNfSU5MSU5FIENhbGxW
YXJpYW50IGRlc3BlY2lmaWVkQ2xvc3VyZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9j
YWxsZWUtPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICAgICAgICAgIHJldHVybiBDYWxs
VmFyaWFudChqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2FsbGVlKS0+ZXhlY3V0YWJsZSgpKTsKKyAg
ICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAgICAKKyAgICBKU0NlbGwqIHJhd0NhbGxlZUNl
bGwoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlZTsgfQorICAgIAorICAgIEludGVybmFsRnVuY3Rp
b24qIGludGVybmFsRnVuY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGpzRHlu
YW1pY0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KG1fY2FsbGVlKTsKKyAgICB9CisgICAgCisgICAg
SlNGdW5jdGlvbiogZnVuY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGpzRHlu
YW1pY0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2FsbGVlKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBp
c0Nsb3N1cmVDYWxsKCkgY29uc3QgeyByZXR1cm4gISFqc0R5bmFtaWNDYXN0PEV4ZWN1dGFibGVC
YXNlKj4obV9jYWxsZWUpOyB9CisgICAgCisgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUo
KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gdGhpcy0+
ZnVuY3Rpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbi0+ZXhlY3V0YWJsZSgpOwor
ICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxFeGVjdXRhYmxlQmFzZSo+KG1fY2FsbGVlKTsK
KyAgICB9CisgICAgCisgICAgSlNDZWxsKiBub25FeGVjdXRhYmxlQ2FsbGVlKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpc0Nsb3N1cmVDYWxsKCkpOworICAgICAgICBy
ZXR1cm4gbV9jYWxsZWU7CisgICAgfQorICAgIAorICAgIEludHJpbnNpYyBpbnRyaW5zaWNGb3Io
Q29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKEV4
ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gdGhpcy0+ZXhlY3V0YWJsZSgpKQorICAgICAgICAg
ICAgcmV0dXJuIGV4ZWN1dGFibGUtPmludHJpbnNpY0ZvcihraW5kKTsKKyAgICAgICAgcmV0dXJu
IE5vSW50cmluc2ljOworICAgIH0KKyAgICAKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0
aW9uRXhlY3V0YWJsZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoRXhlY3V0YWJsZUJhc2Uq
IGV4ZWN1dGFibGUgPSB0aGlzLT5leGVjdXRhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4ganNE
eW5hbWljQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorICAgIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdDsKKyAgICAKKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2NhbGxlZSA9PSBkZWxldGVkVG9rZW4oKTsKKyAgICB9
CisgICAgCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NhbGxlZSA9PSBvdGhlci5tX2NhbGxlZTsKKyAg
ICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAgICB9Cisg
ICAgCisgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY2FsbGVlIDwgb3RoZXIubV9jYWxsZWU7CisgICAgfQor
ICAgIAorICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBvdGhlciA8ICp0aGlzOworICAgIH0KKyAgICAKKyAgICBi
b29sIG9wZXJhdG9yPD0oY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuICEoKnRoaXMgPCBvdGhlcik7CisgICAgfQorICAgIAorICAgIGJvb2wgb3Bl
cmF0b3I+PShjb25zdCBDYWxsVmFyaWFudCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gb3RoZXIgPD0gKnRoaXM7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIGhhc2goKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6UHRySGFzaDxKU0NlbGwqPjo6aGFzaCht
X2NhbGxlZSk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBzdGF0aWMgSlNDZWxsKiBkZWxl
dGVkVG9rZW4oKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4oc3RhdGljX2Nhc3Q8dWlu
dHB0cl90PigxKSk7IH0KKyAgICAgICAgICAgICAgICAgICAKKyAgICBKU0NlbGwqIG1fY2FsbGVl
OworfTsKKworc3RydWN0IENhbGxWYXJpYW50SGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhh
c2goY29uc3QgQ2FsbFZhcmlhbnQmIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQorICAgIHN0
YXRpYyBib29sIGVxdWFsKGNvbnN0IENhbGxWYXJpYW50JiBhLCBjb25zdCBDYWxsVmFyaWFudCYg
YikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFy
ZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKKwordHlwZWRlZiBWZWN0b3I8Q2FsbFZhcmlh
bnQsIDE+IENhbGxWYXJpYW50TGlzdDsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFj
ZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7Cit0ZW1w
bGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6OkNhbGxWYXJpYW50PiB7CisgICAgdHlwZWRl
ZiBKU0M6OkNhbGxWYXJpYW50SGFzaCBIYXNoOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IEhhc2hUcmFpdHM7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6Q2Fs
bFZhcmlhbnQ+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6Q2FsbFZhcmlhbnQ+IHsgfTsK
KworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBDYWxsVmFyaWFudF9oCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmNwcAkocmV2aXNpb24g
MTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzgsOCArMzgsOCBAQCBjb25zdCBjaGFyKiBleGl0S2luZFRvU3Ry
aW5nKEV4aXRLaW5kIGtpCiAgICAgICAgIHJldHVybiAiVW5zZXQiOwogICAgIGNhc2UgQmFkVHlw
ZToKICAgICAgICAgcmV0dXJuICJCYWRUeXBlIjsKLSAgICBjYXNlIEJhZEZ1bmN0aW9uOgotICAg
ICAgICByZXR1cm4gIkJhZEZ1bmN0aW9uIjsKKyAgICBjYXNlIEJhZENlbGw6CisgICAgICAgIHJl
dHVybiAiQmFkQ2VsbCI7CiAgICAgY2FzZSBCYWRFeGVjdXRhYmxlOgogICAgICAgICByZXR1cm4g
IkJhZEV4ZWN1dGFibGUiOwogICAgIGNhc2UgQmFkQ2FjaGU6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDcgKzMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBlbnVtIEV4aXRLaW5kIDogdWludDhfdCB7CiAg
ICAgRXhpdEtpbmRVbnNldCwKICAgICBCYWRUeXBlLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSBhIHR5
cGUgcHJlZGljdGlvbiB3YXMgd3JvbmcuCi0gICAgQmFkRnVuY3Rpb24sIC8vIFdlIGV4aXRlZCBi
ZWNhdXNlIHdlIG1hZGUgYW4gaW5jb3JyZWN0IGFzc3VtcHRpb24gYWJvdXQgd2hhdCBmdW5jdGlv
biB3ZSB3b3VsZCBzZWUuCisgICAgQmFkQ2VsbCwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2UgbWFk
ZSBhbiBpbmNvcnJlY3QgYXNzdW1wdGlvbiBhYm91dCB3aGF0IGNlbGwgd2Ugd291bGQgc2VlLiBV
c3VhbGx5IHVzZWQgZm9yIGZ1bmN0aW9uIGNoZWNrcy4KICAgICBCYWRFeGVjdXRhYmxlLCAvLyBX
ZSBleGl0ZWQgYmVjYXVzZSB3ZSBtYWRlIGFuIGluY29ycmVjdCBhc3N1bXB0aW9uIGFib3V0IHdo
YXQgZXhlY3V0YWJsZSB3ZSB3b3VsZCBzZWUuCiAgICAgQmFkQ2FjaGUsIC8vIFdlIGV4aXRlZCBi
ZWNhdXNlIGFuIGlubGluZSBjYWNoZSB3YXMgd3JvbmcuCiAgICAgQmFkQ29uc3RhbnRDYWNoZSwg
Ly8gV2UgZXhpdGVkIGJlY2F1c2UgYSBjYWNoZSBvbiBhIHdlYWsgY29uc3RhbnQgKHVzdWFsbHkg
YSBwcm90b3R5cGUpIHdhcyB3cm9uZy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTg3LDcgKzE4Nyw4IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0
ZUZvclMKICAgICAgICAgICAgICAgICAgICAgQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUqIHN0
dWIgPSBzdGF0aWNfY2FzdDxBY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZSo+KAogICAgICAgICAg
ICAgICAgICAgICAgICAgbGlzdC0+YXQobGlzdEluZGV4KS5zdHViUm91dGluZSgpKTsKICAgICAg
ICAgICAgICAgICAgICAgY2FsbExpbmtTdGF0dXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5r
U3RhdHVzPigKLSAgICAgICAgICAgICAgICAgICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRl
Rm9yKGxvY2tlciwgKnN0dWItPm1fY2FsbExpbmtJbmZvLCBjYWxsRXhpdFNpdGVEYXRhKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssICpzdHViLT5tX2Nh
bGxMaW5rSW5mbywgY2FsbEV4aXRTaXRlRGF0YSkpOwogICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRCeUlkQWNjZXNz
OjpDdXN0b21HZXR0ZXI6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0
Nyw3ICsyNDcsNyBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTCiAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsTGlua1N0YXR1cz4gY2FsbExp
bmtTdGF0dXMgPQogICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxDYWxs
TGlua1N0YXR1cz4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbExpbmtTdGF0dXM6
OmNvbXB1dGVGb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tlciwgKnN0
dWItPm1fY2FsbExpbmtJbmZvLCBjYWxsRXhpdFNpdGVEYXRhKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxvY2tlciwgcHJvZmlsZWRCbG9jaywgKnN0dWItPm1fY2FsbExpbmtJ
bmZvLCBjYWxsRXhpdFNpdGVEYXRhKSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICB2YXJpYW50ID0gUHV0QnlJZFZhcmlhbnQ6OnNldHRlcigKICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdHVyZSwgY29tcGxleEdldFN0YXR1cy5vZmZzZXQoKSwgY29tcGxl
eEdldFN0YXR1cy5jaGFpbigpLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMTcy
ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDU5LDE0ICsxNDU5LDYgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBmb3JOb2RlKG5vZGUpLnNl
dFR5cGUoU3BlY0ludDMyKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgIGNhc2UgQ2hl
Y2tFeGVjdXRhYmxlOiB7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBjb3VsZCB0cmFjayBleGVjdXRh
YmxlcyBpbiBBYnN0cmFjdFZhbHVlLCB3aGljaCB3b3VsZCBhbGxvdyB1cyB0byBnZXQgcmlkIG9m
IHRoZXNlIGNoZWNrcwotICAgICAgICAvLyBtb3JlIHRob3JvdWdobHkuIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYyMDAKLSAgICAgICAgLy8gRklYTUU6IFdlIGNv
dWxkIGVsaW1pbmF0ZSB0aGVzZSBlbnRpcmVseSBpZiB3ZSBrbm93IHRoZSBleGFjdCB2YWx1ZSB0
aGF0IGZsb3dzIGludG8gdGhpcy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwNjIwMQotICAgICAgICBicmVhazsKLSAgICB9Ci0KICAgICBjYXNl
IENoZWNrU3RydWN0dXJlOiB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0
byBwcm9wYWdhdGUgdGhlIHN0cnVjdHVyZSBzZXRzIG9mIGNvbnN0YW50cyAoaS5lLiBwcm90b3R5
cGVzKS4KICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKTsKQEAgLTE3MjYsMTYgKzE3MTgsMjkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQorICAgICAgICAKKyAgICBjYXNlIEdldEV4ZWN1dGFibGU6IHsK
KyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7
CisgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24g
PSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2YWx1ZSk7CisgICAgICAgICAgICBpZiAoZnVu
Y3Rpb24pIHsKKyAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCAqbV9ncmFwaC5mcmVl
emUoZnVuY3Rpb24tPmV4ZWN1dGFibGUoKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVj
Q2VsbE90aGVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIAotICAgIGNhc2UgQ2hlY2tG
dW5jdGlvbjogeworICAgIGNhc2UgQ2hlY2tDZWxsOiB7CiAgICAgICAgIEpTVmFsdWUgdmFsdWUg
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwotICAgICAgICBpZiAodmFsdWUgPT0g
bm9kZS0+ZnVuY3Rpb24oKS0+dmFsdWUoKSkgeworICAgICAgICBpZiAodmFsdWUgPT0gbm9kZS0+
Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKSkgewogICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENv
bnN0YW50cyh0cnVlKTsKICAgICAgICAgICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgZmlsdGVyQnlWYWx1ZShub2RlLT5j
aGlsZDEoKSwgKm5vZGUtPmZ1bmN0aW9uKCkpOworICAgICAgICBmaWx0ZXJCeVZhbHVlKG5vZGUt
PmNoaWxkMSgpLCAqbm9kZS0+Y2VsbE9wZXJhbmQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICAgICAgCkBAIC0xOTAxLDYgKzE5MDYsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6
CisgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxz
ZSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKQEAgLTE5NTUsNyArMTk2MSw4IEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICBjYXNlIExhc3ROb2RlVHlw
ZToKICAgICBjYXNlIEFyaXRoSU11bDoKICAgICBjYXNlIEZpYXRJbnQ1MjoKLSAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIEJvdHRvbVZhbHVlOgorICAgICAg
ICBERkdfQ1JBU0gobV9ncmFwaCwgbm9kZSwgIlVuZXhwZWN0ZWQgbm9kZSB0eXBlIik7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9w
YWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzg5LDYgKzM4OSwxMSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIC8vIHRoZW4gLTAgYW5kIDAgYXJlIHRyZWF0ZWQgdGhlIHNh
bWUuCiAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCktPm1lcmdlRmxhZ3MoTm9kZUJ5dGVj
b2RlVXNlc0FzTnVtYmVyIHwgTm9kZUJ5dGVjb2RlVXNlc0FzT3RoZXIpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTd2l0Y2hDZWxsOgorICAgICAgICAgICAgICAg
IC8vIFRoZXJlIGlzIGN1cnJlbnRseSBubyBwb2ludCB0byBiZWluZyBjbGV2ZXIgaGVyZSBzaW5j
ZSB0aGlzIGlzIHVzZWQgZm9yIHN3aXRjaGluZworICAgICAgICAgICAgICAgIC8vIG9uIG9iamVj
dHMuCisgICAgICAgICAgICAgICAgbWVyZ2VEZWZhdWx0RmxhZ3Mobm9kZSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwCShy
ZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxv
Y2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw5IEBAIEJhc2ljQmxvY2s6OkJhc2lj
QmxvY2soCiB7CiB9CiAKLUJhc2ljQmxvY2s6On5CYXNpY0Jsb2NrKCkgeyB9CitCYXNpY0Jsb2Nr
Ojp+QmFzaWNCbG9jaygpCit7Cit9CiAKIHZvaWQgQmFzaWNCbG9jazo6ZW5zdXJlTG9jYWxzKHVu
c2lnbmVkIG5ld051bUxvY2FscykKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQmFzaWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQmFzaWNCbG9jay5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQCBz
dHJ1Y3QgQmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgTm9kZSomIG9wZXJh
dG9yW10oc2l6ZV90IGkpIHsgcmV0dXJuIGF0KGkpOyB9CiAgICAgTm9kZSogb3BlcmF0b3JbXShz
aXplX3QgaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0KICAgICBOb2RlKiBsYXN0KCkgY29uc3Qg
eyByZXR1cm4gYXQoc2l6ZSgpIC0gMSk7IH0KKyAgICBOb2RlKiB0YWtlTGFzdCgpIHsgcmV0dXJu
IG1fbm9kZXMudGFrZUxhc3QoKTsgfQogICAgIHZvaWQgcmVzaXplKHNpemVfdCBzaXplKSB7IG1f
bm9kZXMucmVzaXplKHNpemUpOyB9CiAgICAgdm9pZCBncm93KHNpemVfdCBzaXplKSB7IG1fbm9k
ZXMuZ3JvdyhzaXplKTsgfQogICAgIApAQCAtMTA2LDYgKzEwNywxMyBAQCBzdHJ1Y3QgQmFzaWNC
bG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0OwogICAgIAorICAgIHZvaWQgZGlkTGluaygpCisgICAgeworI2lmICFB
U1NFUlRfRElTQUJMRUQKKyAgICAgICAgaXNMaW5rZWQgPSB0cnVlOworI2VuZGlmCisgICAgfQor
ICAgIAogICAgIC8vIFRoaXMgdmFsdWUgaXMgdXNlZCBpbnRlcm5hbGx5IGZvciBibG9jayBsaW5r
aW5nIGFuZCBPU1IgZW50cnkuIEl0IGlzIG1vc3RseSBtZWFuaW5nbGVzcwogICAgIC8vIGZvciBv
dGhlciBwdXJwb3NlcyBkdWUgdG8gaW5saW5pbmcuCiAgICAgdW5zaWduZWQgYnl0ZWNvZGVCZWdp
bjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsOCBAQAogCiBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKK3N0YXRpYyBjb25zdCBib29sIHZlcmJv
c2UgPSBmYWxzZTsKKwogY2xhc3MgQ29uc3RhbnRCdWZmZXJLZXkgewogcHVibGljOgogICAgIENv
bnN0YW50QnVmZmVyS2V5KCkKQEAgLTE3OCwxNCArMTgwLDIwIEBAIHByaXZhdGU6CiAgICAgICAg
IE5vZGUqIGNhbGxUYXJnZXQsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBDYWxs
TGlua1N0YXR1cyk7CiAgICAgdm9pZCBoYW5kbGVDYWxsKGludCByZXN1bHQsIE5vZGVUeXBlIG9w
LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUsIGludCBj
YWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0KTsKICAgICB2b2lkIGhhbmRs
ZUNhbGwoSW5zdHJ1Y3Rpb24qIHBjLCBOb2RlVHlwZSBvcCwgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCk7Ci0gICAgdm9pZCBlbWl0RnVuY3Rpb25DaGVja3MoY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBO
b2RlKiBjYWxsVGFyZ2V0LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQpOworICAgIHZvaWQgZW1pdEZ1bmN0aW9uQ2hlY2tzKENhbGxWYXJpYW50LCBOb2RlKiBjYWxs
VGFyZ2V0LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOworICAg
IHZvaWQgdW5kb0Z1bmN0aW9uQ2hlY2tzKENhbGxWYXJpYW50KTsKICAgICB2b2lkIGVtaXRBcmd1
bWVudFBoYW50b21zKGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICB1bnNpZ25lZCBpbmxpbmluZ0Nv
c3QoQ2FsbFZhcmlhbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCk7IC8vIFJldHVybiBVSU5UX01BWCBpZiBpdCdzIG5vdCBhbiBpbmxpbmlu
ZyBjYW5kaWRhdGUuIEJ5IGNvbnZlbnRpb24sIGludHJpbnNpY3MgaGF2ZSBhIGNvc3Qgb2YgMS4K
ICAgICAvLyBIYW5kbGUgaW5saW5pbmcuIFJldHVybiB0cnVlIGlmIGl0IHN1Y2NlZWRlZCwgZmFs
c2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCi0gICAgYm9vbCBoYW5kbGVJbmxpbmluZyhO
b2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IENhbGxMaW5rU3Rh
dHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2luZCk7CisgICAgYm9vbCBo
YW5kbGVJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNv
bnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIE5vZGVUeXBlIGNhbGxPcCwgSW5s
aW5lQ2FsbEZyYW1lOjpLaW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKKyAgICBlbnVt
IENhbGxlckxpbmthYmlsaXR5IHsgQ2FsbGVyRG9lc05vcm1hbExpbmtpbmcsIENhbGxlckxpbmtz
TWFudWFsbHkgfTsKKyAgICBib29sIGF0dGVtcHRUb0lubGluZUNhbGwoTm9kZSogY2FsbFRhcmdl
dE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElu
bGluZUNhbGxGcmFtZTo6S2luZCwgQ2FsbGVyTGlua2FiaWxpdHksIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxpbmluZ0JhbGFuY2UpOworICAgIHZvaWQgaW5saW5lQ2Fs
bChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENhbGxWYXJpYW50LCBp
bnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWdu
ZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBDYWxsZXJMaW5rYWJpbGl0eSk7
CisgICAgdm9pZCBjYW5jZWxMaW5raW5nRm9yQmxvY2soSW5saW5lU3RhY2tFbnRyeSosIEJhc2lj
QmxvY2sqKTsgLy8gT25seSB3b3JrcyB3aGVuIHRoZSBnaXZlbiBibG9jayBpcyB0aGUgbGFzdCBv
bmUgdG8gaGF2ZSBiZWVuIGFkZGVkIGZvciB0aGF0IGlubGluZSBzdGFjayBlbnRyeS4KICAgICAv
LyBIYW5kbGUgaW50cmluc2ljIGZ1bmN0aW9ucy4gUmV0dXJuIHRydWUgaWYgaXQgc3VjY2VlZGVk
LCBmYWxzZSBpZiB3ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4KICAgICBib29sIGhhbmRsZUludHJp
bnNpYyhpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7
CiAgICAgYm9vbCBoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IoaW50IHJlc3VsdE9wZXJhbmQs
IEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgVHlwZWRBcnJheVR5cGUpOwotICAgIGJvb2wgaGFuZGxlQ29uc3RhbnRJ
bnRlcm5hbEZ1bmN0aW9uKGludCByZXN1bHRPcGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50
IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0
ZWRUeXBlIHByZWRpY3Rpb24sIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOworICAgIGJvb2wgaGFu
ZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKGludCByZXN1bHRPcGVyYW5kLCBJbnRlcm5hbEZ1
bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwogICAgIE5vZGUqIGhhbmRsZVB1dEJ5T2Zmc2V0
KE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBOb2RlKiB2
YWx1ZSk7CiAgICAgTm9kZSogaGFuZGxlR2V0QnlPZmZzZXQoU3BlY3VsYXRlZFR5cGUsIE5vZGUq
IGJhc2UsIGNvbnN0IFN0cnVjdHVyZVNldCYsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFBy
b3BlcnR5T2Zmc2V0LCBOb2RlVHlwZSBvcCA9IEdldEJ5T2Zmc2V0KTsKICAgICB2b2lkIGhhbmRs
ZUdldEJ5SWQoCkBAIC0yMDAsOCArMjA4LDkgQEAgcHJpdmF0ZToKIAogICAgIE5vZGUqIGdldFNj
b3BlKHVuc2lnbmVkIHNraXBDb3VudCk7CiAgICAgCi0gICAgLy8gUHJlcGFyZSB0byBwYXJzZSBh
IGJsb2NrLgogICAgIHZvaWQgcHJlcGFyZVRvUGFyc2VCbG9jaygpOworICAgIHZvaWQgY2xlYXJD
YWNoZXMoKTsKKwogICAgIC8vIFBhcnNlIGEgc2luZ2xlIGJhc2ljIGJsb2NrIG9mIGJ5dGVjb2Rl
IGluc3RydWN0aW9ucy4KICAgICBib29sIHBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpOwogICAg
IC8vIExpbmsgYmxvY2sgc3VjY2Vzc29ycy4KQEAgLTI5Niw2ICszMDUsMTMgQEAgcHJpdmF0ZToK
ICAgICAgICAgCiAgICAgICAgIHJldHVybiBkZWxheWVkLmV4ZWN1dGUodGhpcywgc2V0TW9kZSk7
CiAgICAgfQorICAgIAorICAgIHZvaWQgcHJvY2Vzc1NldExvY2FsUXVldWUoKQorICAgIHsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2V0TG9jYWxRdWV1ZS5zaXplKCk7ICsr
aSkKKyAgICAgICAgICAgIG1fc2V0TG9jYWxRdWV1ZVtpXS5leGVjdXRlKHRoaXMpOworICAgICAg
ICBtX3NldExvY2FsUXVldWUucmVzaXplKDApOworICAgIH0KIAogICAgIE5vZGUqIHNldChWaXJ0
dWFsUmVnaXN0ZXIgb3BlcmFuZCwgTm9kZSogdmFsdWUsIFNldE1vZGUgc2V0TW9kZSA9IE5vcm1h
bFNldCkKICAgICB7CkBAIC02MzcsNiArNjUzLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIAogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKyAgICAKKyAgICB2b2lkIHJlbW92ZUxhc3ROb2Rl
RnJvbUdyYXBoKE5vZGVUeXBlIGV4cGVjdGVkTm9kZVR5cGUpCisgICAgeworICAgICAgICBOb2Rl
KiBub2RlID0gbV9jdXJyZW50QmxvY2stPnRha2VMYXN0KCk7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKG5vZGUtPm9wKCkgPT0gZXhwZWN0ZWROb2RlVHlwZSk7CisgICAgICAgIG1fZ3JhcGgubV9h
bGxvY2F0b3IuZnJlZShub2RlKTsKKyAgICB9CiAKICAgICB2b2lkIGFkZFZhckFyZ0NoaWxkKE5v
ZGUqIGNoaWxkKQogICAgIHsKQEAgLTY0NSw3ICs2NjgsNyBAQCBwcml2YXRlOgogICAgIH0KICAg
ICAKICAgICBOb2RlKiBhZGRDYWxsV2l0aG91dFNldHRpbmdSZXN1bHQoCi0gICAgICAgIE5vZGVU
eXBlIG9wLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAor
ICAgICAgICBOb2RlVHlwZSBvcCwgT3BJbmZvIG9wSW5mbywgTm9kZSogY2FsbGVlLCBpbnQgYXJn
Q291bnQsIGludCByZWdpc3Rlck9mZnNldCwKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
dGlvbikKICAgICB7CiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGNhbGxlZSk7CkBAIC02NTcsMTUg
KzY4MCwxNSBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKGludCBpID0gMCArIGR1bW15VGhpc0Fy
Z3VtZW50OyBpIDwgYXJnQ291bnQ7ICsraSkKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdl
dCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpLCByZWdpc3Rlck9mZnNldCkpKTsKIAotICAg
ICAgICByZXR1cm4gYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIG9wLCBPcEluZm8oMCksIE9wSW5m
byhwcmVkaWN0aW9uKSk7CisgICAgICAgIHJldHVybiBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywg
b3AsIG9wSW5mbywgT3BJbmZvKHByZWRpY3Rpb24pKTsKICAgICB9CiAgICAgCiAgICAgTm9kZSog
YWRkQ2FsbCgKLSAgICAgICAgaW50IHJlc3VsdCwgTm9kZVR5cGUgb3AsIE5vZGUqIGNhbGxlZSwg
aW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgICAgIGludCByZXN1bHQsIE5v
ZGVUeXBlIG9wLCBPcEluZm8gb3BJbmZvLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50
IHJlZ2lzdGVyT2Zmc2V0LAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogICAg
IHsKICAgICAgICAgTm9kZSogY2FsbCA9IGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdCgKLSAg
ICAgICAgICAgIG9wLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlv
bik7CisgICAgICAgICAgICBvcCwgb3BJbmZvLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9m
ZnNldCwgcHJlZGljdGlvbik7CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHRSZWcocmVz
dWx0KTsKICAgICAgICAgaWYgKHJlc3VsdFJlZy5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBzZXQo
VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCksIGNhbGwpOwpAQCAtODcxLDggKzg5NCw3IEBAIHByaXZh
dGU6CiAgICAgICAgIFZlY3RvcjxVbmxpbmtlZEJsb2NrPiBtX3VubGlua2VkQmxvY2tzOwogICAg
ICAgICAKICAgICAgICAgLy8gUG90ZW50aWFsIGJsb2NrIGxpbmtpbmcgdGFyZ2V0cy4gTXVzdCBi
ZSBzb3J0ZWQgYnkgYnl0ZWNvZGVCZWdpbiwgYW5kCi0gICAgICAgIC8vIGNhbm5vdCBoYXZlIHR3
byBibG9ja3MgdGhhdCBoYXZlIHRoZSBzYW1lIGJ5dGVjb2RlQmVnaW4uIEZvciB0aGlzIHZlcnkK
LSAgICAgICAgLy8gcmVhc29uLCB0aGlzIGlzIG5vdCBlcXVpdmFsZW50IHRvIAorICAgICAgICAv
LyBjYW5ub3QgaGF2ZSB0d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRlY29kZUJlZ2lu
LgogICAgICAgICBWZWN0b3I8QmFzaWNCbG9jayo+IG1fYmxvY2tMaW5raW5nVGFyZ2V0czsKICAg
ICAgICAgCiAgICAgICAgIC8vIElmIHRoZSBjYWxsc2l0ZSdzIGJhc2ljIGJsb2NrIHdhcyBzcGxp
dCBpbnRvIHR3bywgdGhlbiB0aGlzIHdpbGwgYmUKQEAgLTEwMjgsNTMgKzEwNTAsMjcgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCgKICAgICAgICAgLy8gT2RkbHksIHRoaXMgY29u
ZmxhdGVzIGNhbGxzIHRoYXQgaGF2ZW4ndCBleGVjdXRlZCB3aXRoIGNhbGxzIHRoYXQgYmVoYXZl
ZCBzdWZmaWNpZW50bHkgcG9seW1vcnBoaWNhbGx5CiAgICAgICAgIC8vIHRoYXQgd2UgY2Fubm90
IG9wdGltaXplIHRoZW0uCiAgICAgICAgIAotICAgICAgICBhZGRDYWxsKHJlc3VsdCwgb3AsIGNh
bGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJl
ZGljdGlvbik7CisgICAgICAgIGFkZENhbGwocmVzdWx0LCBvcCwgT3BJbmZvKCksIGNhbGxUYXJn
ZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlv
bik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgbmV4dE9mZnNl
dCA9IG1fY3VycmVudEluZGV4ICsgaW5zdHJ1Y3Rpb25TaXplOworICAgIAorICAgIE9wSW5mbyBj
YWxsT3BJbmZvOwogCi0gICAgaWYgKEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbExp
bmtTdGF0dXMuaW50ZXJuYWxGdW5jdGlvbigpKSB7Ci0gICAgICAgIGlmIChoYW5kbGVDb25zdGFu
dEludGVybmFsRnVuY3Rpb24ocmVzdWx0LCBmdW5jdGlvbiwgcmVnaXN0ZXJPZmZzZXQsIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBwcmVkaWN0aW9uLCBzcGVjaWFsaXphdGlvbktpbmQpKSB7
Ci0gICAgICAgICAgICAvLyBUaGlzIHBoYW50b21pbmcgaGFzIHRvIGJlICphZnRlciogdGhlIGNv
ZGUgZm9yIHRoZSBpbnRyaW5zaWMsIHRvIHNpZ25pZnkgdGhhdAotICAgICAgICAgICAgLy8gdGhl
IGlucHV0cyBtdXN0IGJlIGtlcHQgYWxpdmUgd2hhdGV2ZXIgZXhpdHMgdGhlIGludHJpbnNpYyBt
YXkgZG8uCi0gICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXQpOwotICAg
ICAgICAgICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBDYW4gb25seSBoYW5kbGUgdGhpcyB1
c2luZyB0aGUgZ2VuZXJpYyBjYWxsIGhhbmRsZXIuCi0gICAgICAgIGFkZENhbGwocmVzdWx0LCBv
cCwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0
LCBwcmVkaWN0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAgICAgCi0gICAgSW50
cmluc2ljIGludHJpbnNpYyA9IGNhbGxMaW5rU3RhdHVzLmludHJpbnNpY0ZvcihzcGVjaWFsaXph
dGlvbktpbmQpOwotCi0gICAgSlNGdW5jdGlvbioga25vd25GdW5jdGlvbiA9IG51bGxwdHI7Ci0g
ICAgaWYgKGludHJpbnNpYyAhPSBOb0ludHJpbnNpYykgewotICAgICAgICBlbWl0RnVuY3Rpb25D
aGVja3MoY2FsbExpbmtTdGF0dXMsIGNhbGxUYXJnZXQsIHJlZ2lzdGVyT2Zmc2V0LCBzcGVjaWFs
aXphdGlvbktpbmQpOwotICAgICAgICAgICAgCi0gICAgICAgIGlmIChoYW5kbGVJbnRyaW5zaWMo
cmVzdWx0LCBpbnRyaW5zaWMsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgcHJlZGljdGlvbikpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgcGhhbnRvbWluZyBoYXMg
dG8gYmUgKmFmdGVyKiB0aGUgY29kZSBmb3IgdGhlIGludHJpbnNpYywgdG8gc2lnbmlmeSB0aGF0
Ci0gICAgICAgICAgICAvLyB0aGUgaW5wdXRzIG11c3QgYmUga2VwdCBhbGl2ZSB3aGF0ZXZlciBl
eGl0cyB0aGUgaW50cmluc2ljIG1heSBkby4KLSAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRv
bSwgY2FsbFRhcmdldCk7Ci0gICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rl
ck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7
Ci0gICAgICAgICAgICBpZiAobV9ncmFwaC5jb21waWxhdGlvbigpKQotICAgICAgICAgICAgICAg
IG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZENhbGwoKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoaGFuZGxlSW5saW5pbmcoY2FsbFRh
cmdldCwgcmVzdWx0LCBjYWxsTGlua1N0YXR1cywgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zmc2V0LCBraW5kKSkgeworICAgIGlmIChoYW5kbGVJbmxp
bmluZyhjYWxsVGFyZ2V0LCByZXN1bHQsIGNhbGxMaW5rU3RhdHVzLCByZWdpc3Rlck9mZnNldCwg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQsIG9wLCBraW5kLCBwcmVkaWN0
aW9uKSkgewogICAgICAgICBpZiAobV9ncmFwaC5jb21waWxhdGlvbigpKQogICAgICAgICAgICAg
bV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkQ2FsbCgpOwogICAgICAgICByZXR1
cm47CiAjaWYgRU5BQkxFKEZUTF9OQVRJVkVfQ0FMTF9JTkxJTklORykKLSAgICB9IGVsc2UgaWYg
KGlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpICYmIE9wdGlvbnM6Om9wdGltaXplTmF0aXZlQ2Fs
bHMoKSkgewotICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxMaW5rU3RhdHVzLmZ1
bmN0aW9uKCk7CisgICAgfSBlbHNlIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSAmJiBP
cHRpb25zOjpvcHRpbWl6ZU5hdGl2ZUNhbGxzKCkgJiYgY2FsbExpbmtTdGF0dXMuc2l6ZSgpID09
IDEgJiYgIWNhbGxMaW5rU3RhdHVzLmNvdWxkVGFrZVNsb3dQYXRoKCkpIHsKKyAgICAgICAgQ2Fs
bFZhcmlhbnQgY2FsbGVlID0gY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVlKCk7CisgICAgICAgIEpT
RnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLmZ1bmN0aW9uKCk7CiAgICAgICAgIGlmIChmdW5j
dGlvbiAmJiBmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSkgewotICAgICAgICAgICAgZW1pdEZ1
bmN0aW9uQ2hlY2tzKGNhbGxMaW5rU3RhdHVzLCBjYWxsVGFyZ2V0LCByZWdpc3Rlck9mZnNldCwg
c3BlY2lhbGl6YXRpb25LaW5kKTsKLSAgICAgICAgICAgIGtub3duRnVuY3Rpb24gPSBmdW5jdGlv
bjsKKyAgICAgICAgICAgIGVtaXRGdW5jdGlvbkNoZWNrcyhjYWxsZWUsIGNhbGxUYXJnZXQsIHJl
Z2lzdGVyT2Zmc2V0LCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgICAgICAgICAgY2FsbE9wSW5m
byA9IE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShmdW5jdGlvbikpOwogCi0gICAgICAgICAgICBpZiAo
b3AgPT0gQ2FsbCkgCisgICAgICAgICAgICBpZiAob3AgPT0gQ2FsbCkKICAgICAgICAgICAgICAg
ICBvcCA9IE5hdGl2ZUNhbGw7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBB
U1NFUlQob3AgPT0gQ29uc3RydWN0KTsKQEAgLTEwODMsMTMgKzEwNzksMTEgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlQ2FsbCgKICAgICAgICAgfQogI2VuZGlmCiAgICAgfQotICAgIE5v
ZGUqIGNhbGwgPSBhZGRDYWxsKHJlc3VsdCwgb3AsIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7Ci0KLSAgICBpZiAoa25v
d25GdW5jdGlvbikgCi0gICAgICAgIGNhbGwtPmdpdmVLbm93bkZ1bmN0aW9uKGtub3duRnVuY3Rp
b24pOworICAgIAorICAgIGFkZENhbGwocmVzdWx0LCBvcCwgY2FsbE9wSW5mbywgY2FsbFRhcmdl
dCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9u
KTsKIH0KIAotdm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdEZ1bmN0aW9uQ2hlY2tzKGNvbnN0IENh
bGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgTm9kZSogY2FsbFRhcmdldCwgaW50IHJlZ2lz
dGVyT2Zmc2V0LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit2b2lkIEJ5dGVDb2RlUGFy
c2VyOjplbWl0RnVuY3Rpb25DaGVja3MoQ2FsbFZhcmlhbnQgY2FsbGVlLCBOb2RlKiBjYWxsVGFy
Z2V0LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsK
ICAgICBOb2RlKiB0aGlzQXJndW1lbnQ7CiAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpCkBA
IC0xMDk3LDIwICsxMDkxLDI1IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRGdW5jdGlvbkNo
ZWNrcygKICAgICBlbHNlCiAgICAgICAgIHRoaXNBcmd1bWVudCA9IDA7CiAKLSAgICBpZiAoY2Fs
bExpbmtTdGF0dXMuaXNQcm92ZWQoKSkgewotICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNh
bGxUYXJnZXQsIHRoaXNBcmd1bWVudCk7Ci0gICAgICAgIHJldHVybjsKKyAgICBKU0NlbGwqIGNh
bGxlZUNlbGw7CisgICAgTm9kZSogY2FsbFRhcmdldEZvckNoZWNrOworICAgIGlmIChjYWxsZWUu
aXNDbG9zdXJlQ2FsbCgpKSB7CisgICAgICAgIGNhbGxlZUNlbGwgPSBjYWxsZWUuZXhlY3V0YWJs
ZSgpOworICAgICAgICBjYWxsVGFyZ2V0Rm9yQ2hlY2sgPSBhZGRUb0dyYXBoKEdldEV4ZWN1dGFi
bGUsIGNhbGxUYXJnZXQpOworICAgIH0gZWxzZSB7CisgICAgICAgIGNhbGxlZUNlbGwgPSBjYWxs
ZWUubm9uRXhlY3V0YWJsZUNhbGxlZSgpOworICAgICAgICBjYWxsVGFyZ2V0Rm9yQ2hlY2sgPSBj
YWxsVGFyZ2V0OwogICAgIH0KICAgICAKLSAgICBBU1NFUlQoY2FsbExpbmtTdGF0dXMuY2FuT3B0
aW1pemUoKSk7Ci0gICAgCi0gICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbExpbmtT
dGF0dXMuZnVuY3Rpb24oKSkKLSAgICAgICAgYWRkVG9HcmFwaChDaGVja0Z1bmN0aW9uLCBPcElu
Zm8obV9ncmFwaC5mcmVlemUoZnVuY3Rpb24pKSwgY2FsbFRhcmdldCwgdGhpc0FyZ3VtZW50KTsK
LSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKGNhbGxMaW5rU3RhdHVzLmV4ZWN1dGFibGUoKSk7
Ci0gICAgICAgIAotICAgICAgICBhZGRUb0dyYXBoKENoZWNrRXhlY3V0YWJsZSwgT3BJbmZvKGNh
bGxMaW5rU3RhdHVzLmV4ZWN1dGFibGUoKSksIGNhbGxUYXJnZXQsIHRoaXNBcmd1bWVudCk7Ci0g
ICAgfQorICAgIEFTU0VSVChjYWxsZWVDZWxsKTsKKyAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwg
T3BJbmZvKG1fZ3JhcGguZnJlZXplKGNhbGxlZUNlbGwpKSwgY2FsbFRhcmdldEZvckNoZWNrLCB0
aGlzQXJndW1lbnQpOworfQorCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjp1bmRvRnVuY3Rpb25DaGVj
a3MoQ2FsbFZhcmlhbnQgY2FsbGVlKQoreworICAgIHJlbW92ZUxhc3ROb2RlRnJvbUdyYXBoKENo
ZWNrQ2VsbCk7CisgICAgaWYgKGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpCisgICAgICAgIHJlbW92
ZUxhc3ROb2RlRnJvbUdyYXBoKEdldEV4ZWN1dGFibGUpOwogfQogCiB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjplbWl0QXJndW1lbnRQaGFudG9tcyhpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpAQCAtMTEx
OSwzNiArMTExOCwyNSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0QXJndW1lbnRQaGFudG9t
CiAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50KGksIHJlZ2lzdGVyT2Zmc2V0KSkpOwogfQogCi1ib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0
IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNh
bGxGcmFtZTo6S2luZCBraW5kKQordW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29z
dChDYWxsVmFyaWFudCBjYWxsZWUsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewotICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJv
c2UgPSBmYWxzZTsKLSAgICAKLSAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0
aW9uS2luZCA9IElubGluZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOwot
ICAgIAogICAgIGlmICh2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyBpbmxp
bmluZyAiLCBjYWxsTGlua1N0YXR1cywgIiBpbnRvICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJc
biIpOworICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyBpbmxpbmluZyAiLCBjYWxsZWUsICIg
aW50byAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKICAgICAKLSAgICAvLyBGaXJzdCwg
dGhlIHJlYWxseSBzaW1wbGUgY2hlY2tzOiBkbyB3ZSBoYXZlIGFuIGFjdHVhbCBKUyBmdW5jdGlv
bj8KLSAgICBpZiAoIWNhbGxMaW5rU3RhdHVzLmV4ZWN1dGFibGUoKSkgeworICAgIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS5mdW5jdGlvbkV4ZWN1dGFibGUoKTsKKyAg
ICBpZiAoIWV4ZWN1dGFibGUpIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAgICBk
YXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIHRoZXJlIGlzIG5vIGV4ZWN1dGFibGUuXG4iKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBpZiAoY2FsbExpbmtTdGF0dXMuZXhl
Y3V0YWJsZSgpLT5pc0hvc3RGdW5jdGlvbigpKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQotICAg
ICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSBpdCdzIGEgaG9zdCBmdW5jdGlv
bi5cbiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBkYXRhTG9nKCIgICAg
RmFpbGluZyBiZWNhdXNlIHRoZXJlIGlzIG5vIGZ1bmN0aW9uIGV4ZWN1dGFibGUuIik7CisgICAg
ICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CiAgICAgCi0gICAgRnVuY3Rpb25FeGVjdXRhYmxl
KiBleGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNhbGxMaW5rU3RhdHVz
LmV4ZWN1dGFibGUoKSk7Ci0gICAgCiAgICAgLy8gRG9lcyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50
cyB3ZSdyZSBwYXNzaW5nIG1hdGNoIHRoZSBhcml0eSBvZiB0aGUgdGFyZ2V0PyBXZSBjdXJyZW50
bHkKICAgICAvLyBpbmxpbmUgb25seSBpZiB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQg
aXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBudW1iZXIKICAgICAvLyBhcmd1bWVudHMg
ZXhwZWN0ZWQuCiAgICAgaWYgKHN0YXRpY19jYXN0PGludD4oZXhlY3V0YWJsZS0+cGFyYW1ldGVy
Q291bnQoKSkgKyAxID4gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpIHsKICAgICAgICAgaWYg
KHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIG9mIGFy
aXR5IG1pc21hdGNoLlxuIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IFVJTlRfTUFYOwogICAgIH0KICAgICAKICAgICAvLyBEbyB3ZSBoYXZlIGEgY29kZSBibG9jaywg
YW5kIGRvZXMgdGhlIGNvZGUgYmxvY2sncyBzaXplIG1hdGNoIHRoZSBoZXVyaXN0aWNzL3JlcXVp
cmVtZW50cyBmb3IKQEAgLTExNTcsMTggKzExNDUsMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlSW5saW5pbmcoTm9kZQogICAgIC8vIGlmIHdlIGhhZCBhIHN0YXRpYyBwcm9vZiBvZiB3
aGF0IHdhcyBiZWluZyBjYWxsZWQ7IHRoaXMgbWlnaHQgaGFwcGVuIGZvciBleGFtcGxlIGlmIHlv
dSBjYWxsIGEKICAgICAvLyBnbG9iYWwgZnVuY3Rpb24sIHdoZXJlIHdhdGNocG9pbnRpbmcgZ2l2
ZXMgdXMgc3RhdGljIGluZm9ybWF0aW9uLiBPdmVyYWxsLCBpdCdzIGEgcmFyZSBjYXNlCiAgICAg
Ly8gYmVjYXVzZSB3ZSBleHBlY3QgdGhhdCBhbnkgaG90IGNhbGxlZXMgd291bGQgaGF2ZSBhbHJl
YWR5IGJlZW4gY29tcGlsZWQuCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxl
LT5iYXNlbGluZUNvZGVCbG9ja0ZvcihzcGVjaWFsaXphdGlvbktpbmQpOworICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Ioa2luZCk7CiAg
ICAgaWYgKCFjb2RlQmxvY2spIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIG5vIGNvZGUgYmxvY2sgYXZhaWxhYmxlLlxuIik7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgIH0K
ICAgICBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsID0gaW5saW5lRnVuY3Rpb25Gb3JD
YXBhYmlsaXR5TGV2ZWwoCi0gICAgICAgIGNvZGVCbG9jaywgc3BlY2lhbGl6YXRpb25LaW5kLCBj
YWxsTGlua1N0YXR1cy5pc0Nsb3N1cmVDYWxsKCkpOworICAgICAgICBjb2RlQmxvY2ssIGtpbmQs
IGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpOwogICAgIGlmICghY2FuSW5saW5lKGNhcGFiaWxpdHlM
ZXZlbCkpIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAg
RmFpbGluZyBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpcyBub3QgaW5saW5lYWJsZS5cbiIpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CiAgICAg
CiAgICAgLy8gQ2hlY2sgaWYgdGhlIGNhbGxlciBpcyBhbHJlYWR5IHRvbyBsYXJnZS4gV2UgZG8g
dGhpcyBjaGVjayBoZXJlIGJlY2F1c2UgdGhhdCdzIGp1c3QKQEAgLTExNzgsNyArMTE2Niw3IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAgICAgY29kZUJs
b2NrLT5tX3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNlOwogICAgICAgICBpZiAodmVyYm9z
ZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgdGhlIGNhbGxlciBp
cyB0b28gbGFyZ2UuXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4g
VUlOVF9NQVg7CiAgICAgfQogICAgIAogICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBiZXR0
ZXIgYXQgcHJlZGljdGluZyBob3cgbXVjaCBibG9hdCB3ZSB3aWxsIGludHJvZHVjZSBieSBpbmxp
bmluZwpAQCAtMTE5Nyw3ICsxMTg1LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5s
aW5pbmcoTm9kZQogICAgICAgICBpZiAoZGVwdGggPj0gT3B0aW9uczo6bWF4aW11bUlubGluaW5n
RGVwdGgoKSkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0
YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSBkZXB0aCBleGNlZWRlZC5cbiIpOwotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBpZiAoZW50cnktPmV4ZWN1dGFibGUoKSA9PSBleGVjdXRhYmxl
KSB7CkBAIC0xMjA1LDE5ICsxMTkzLDI2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
bGluaW5nKE5vZGUKICAgICAgICAgICAgIGlmIChyZWN1cnNpb24gPj0gT3B0aW9uczo6bWF4aW11
bUlubGluaW5nUmVjdXJzaW9uKCkpIHsKICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSByZWN1cnNpb24g
ZGV0ZWN0ZWQuXG4iKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQog
ICAgIAogICAgIGlmICh2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKCIgICAgQ29tbWl0dGluZyB0
byBpbmxpbmluZy5cbiIpOworICAgICAgICBkYXRhTG9nKCIgICAgSW5saW5pbmcgc2hvdWxkIGJl
IHBvc3NpYmxlLlxuIik7CiAgICAgCi0gICAgLy8gTm93IHdlIGtub3cgd2l0aG91dCBhIGRvdWJ0
IHRoYXQgd2UgYXJlIGNvbW1pdHRlZCB0byBpbmxpbmluZy4gU28gYmVnaW4gdGhlIHByb2Nlc3MK
LSAgICAvLyBieSBjaGVja2luZyB0aGUgY2FsbGVlIChpZiBuZWNlc3NhcnkpIGFuZCBtYWtpbmcg
c3VyZSB0aGF0IGFyZ3VtZW50cyBhbmQgdGhlIGNhbGxlZQotICAgIC8vIGFyZSBmbHVzaGVkLgot
ICAgIGVtaXRGdW5jdGlvbkNoZWNrcyhjYWxsTGlua1N0YXR1cywgY2FsbFRhcmdldE5vZGUsIHJl
Z2lzdGVyT2Zmc2V0LCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgIC8vIEl0IG1pZ2h0IGJlIHBv
c3NpYmxlIHRvIGlubGluZS4KKyAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50
KCk7Cit9CisKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdl
dE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyaWFudCBjYWxsZWUsIGludCByZWdpc3Rl
ck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zm
c2V0LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgQ2FsbGVyTGlua2FiaWxpdHkgY2FsbGVy
TGlua2FiaWxpdHkpCit7CisgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlv
bktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5kKTsKICAg
ICAKKyAgICBBU1NFUlQoaW5saW5pbmdDb3N0KGNhbGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCkgIT0gVUlOVF9NQVgpOworICAgIAorICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gY2FsbGVlLmZ1bmN0aW9uRXhlY3V0YWJsZSgpLT5iYXNlbGluZUNv
ZGVCbG9ja0ZvcihzcGVjaWFsaXphdGlvbktpbmQpOworCiAgICAgLy8gRklYTUU6IERvbid0IGZs
dXNoIGNvbnN0YW50cyEKICAgICAKICAgICBpbnQgaW5saW5lQ2FsbEZyYW1lU3RhcnQgPSBtX2lu
bGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0
KSkub2Zmc2V0KCkgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOwpAQCAtMTIzMyw3ICsx
MjI4LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgICAg
ICByZXN1bHRSZWcgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQocmVzdWx0UmVnKTsK
ICAgICAKICAgICBJbmxpbmVTdGFja0VudHJ5IGlubGluZVN0YWNrRW50cnkoCi0gICAgICAgIHRo
aXMsIGNvZGVCbG9jaywgY29kZUJsb2NrLCBtX2dyYXBoLmxhc3RCbG9jaygpLCBjYWxsTGlua1N0
YXR1cy5mdW5jdGlvbigpLCByZXN1bHRSZWcsCisgICAgICAgIHRoaXMsIGNvZGVCbG9jaywgY29k
ZUJsb2NrLCBtX2dyYXBoLmxhc3RCbG9jaygpLCBjYWxsZWUuZnVuY3Rpb24oKSwgcmVzdWx0UmVn
LAogICAgICAgICAoVmlydHVhbFJlZ2lzdGVyKWlubGluZUNhbGxGcmFtZVN0YXJ0LCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywga2luZCk7CiAgICAgCiAgICAgLy8gVGhpcyBpcyB3aGVyZSB0
aGUgYWN0dWFsIGlubGluaW5nIHJlYWxseSBoYXBwZW5zLgpAQCAtMTI0Nyw4ICsxMjQyLDggQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgIAogICAgIFJFTEVB
U0VfQVNTRVJUKAogICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxGcmFtZS0+
aXNDbG9zdXJlQ2FsbAotICAgICAgICA9PSBjYWxsTGlua1N0YXR1cy5pc0Nsb3N1cmVDYWxsKCkp
OwotICAgIGlmIChjYWxsTGlua1N0YXR1cy5pc0Nsb3N1cmVDYWxsKCkpIHsKKyAgICAgICAgPT0g
Y2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSk7CisgICAgaWYgKGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkp
IHsKICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBjYWxsZWVWYXJpYWJsZSA9CiAgICAgICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkNhbGxlZSksIGNhbGxUYXJnZXROb2Rl
LCBJbW1lZGlhdGVOYWtlZFNldCktPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwogICAgICAgICBWYXJp
YWJsZUFjY2Vzc0RhdGEqIHNjb3BlVmFyaWFibGUgPQpAQCAtMTI2Myw3ICsxMjU4LDcgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgIG1fZ3JhcGgubV9pbmxp
bmVWYXJpYWJsZURhdGEuYXBwZW5kKGlubGluZVZhcmlhYmxlRGF0YSk7CiAgICAgCiAgICAgcGFy
c2VDb2RlQmxvY2soKTsKLSAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7IC8vIFJlc2V0IG91ciBz
dGF0ZSBub3cgdGhhdCB3ZSdyZSBiYWNrIHRvIHRoZSBvdXRlciBjb2RlLgorICAgIGNsZWFyQ2Fj
aGVzKCk7IC8vIFJlc2V0IG91ciBzdGF0ZSBub3cgdGhhdCB3ZSdyZSBiYWNrIHRvIHRoZSBvdXRl
ciBjb2RlLgogICAgIAogICAgIG1fY3VycmVudEluZGV4ID0gb2xkSW5kZXg7CiAgICAgCkBAIC0x
Mjc2LDIwICsxMjcxLDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9k
ZQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS5tX2Nh
bGxzaXRlQmxvY2tIZWFkLT5pc0xpbmtlZCk7CiAgICAgICAgIAotICAgICAgICAvLyBJdCdzIHBv
c3NpYmxlIHRoYXQgdGhlIGNhbGxzaXRlIGJsb2NrIGhlYWQgaXMgbm90IG93bmVkIGJ5IHRoZSBj
YWxsZXIuCi0gICAgICAgIGlmICghaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+bV91bmxpbmtl
ZEJsb2Nrcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIC8vIEl0J3MgZGVmaW5pdGVseSBvd25l
ZCBieSB0aGUgY2FsbGVyLCBiZWNhdXNlIHRoZSBjYWxsZXIgY3JlYXRlZCBuZXcgYmxvY2tzLgot
ICAgICAgICAgICAgLy8gQXNzZXJ0IHRoYXQgdGhpcyBhbGwgYWRkcyB1cC4KLSAgICAgICAgICAg
IEFTU0VSVChpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tzLmxhc3Qo
KS5tX2Jsb2NrID09IGlubGluZVN0YWNrRW50cnkubV9jYWxsc2l0ZUJsb2NrSGVhZCk7Ci0gICAg
ICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nr
cy5sYXN0KCkubV9uZWVkc05vcm1hbExpbmtpbmcpOwotICAgICAgICAgICAgaW5saW5lU3RhY2tF
bnRyeS5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9uZWVkc05vcm1hbExpbmtp
bmcgPSBmYWxzZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIEl0J3MgZGVmaW5p
dGVseSBub3Qgb3duZWQgYnkgdGhlIGNhbGxlci4gVGVsbCB0aGUgY2FsbGVyIHRoYXQgaGUgZG9l
cyBub3QKLSAgICAgICAgICAgIC8vIG5lZWQgdG8gbGluayBoaXMgY2FsbHNpdGUgYmxvY2sgaGVh
ZCwgYmVjYXVzZSB3ZSBkaWQgaXQgZm9yIGhpbS4KLSAgICAgICAgICAgIEFTU0VSVChpbmxpbmVT
dGFja0VudHJ5Lm1fY2FsbGVyLT5tX2NhbGxzaXRlQmxvY2tIZWFkTmVlZHNMaW5raW5nKTsKLSAg
ICAgICAgICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLT5tX2NhbGxzaXRlQmxv
Y2tIZWFkID09IGlubGluZVN0YWNrRW50cnkubV9jYWxsc2l0ZUJsb2NrSGVhZCk7Ci0gICAgICAg
ICAgICBpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLT5tX2NhbGxzaXRlQmxvY2tIZWFkTmVlZHNM
aW5raW5nID0gZmFsc2U7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGNhbGxlckxpbmthYmlsaXR5
ID09IENhbGxlckRvZXNOb3JtYWxMaW5raW5nKQorICAgICAgICAgICAgY2FuY2VsTGlua2luZ0Zv
ckJsb2NrKGlubGluZVN0YWNrRW50cnkubV9jYWxsZXIsIGlubGluZVN0YWNrRW50cnkubV9jYWxs
c2l0ZUJsb2NrSGVhZCk7CiAgICAgICAgIAogICAgICAgICBsaW5rQmxvY2tzKGlubGluZVN0YWNr
RW50cnkubV91bmxpbmtlZEJsb2NrcywgaW5saW5lU3RhY2tFbnRyeS5tX2Jsb2NrTGlua2luZ1Rh
cmdldHMpOwogICAgIH0gZWxzZQpAQCAtMTMwOCwxNiArMTI5MSwxOSBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgICAgICAgICAvLyBmb3IgcmVsZWFzZSBi
dWlsZHMgYmVjYXVzZSB0aGlzIGJsb2NrIHdpbGwgbmV2ZXIgc2VydmUgYXMgYSBwb3RlbnRpYWwg
dGFyZ2V0CiAgICAgICAgICAgICAvLyBpbiB0aGUgbGlua2VyJ3MgYmluYXJ5IHNlYXJjaC4KICAg
ICAgICAgICAgIGxhc3RCbG9jay0+Ynl0ZWNvZGVCZWdpbiA9IG1fY3VycmVudEluZGV4OwotICAg
ICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MuYXBw
ZW5kKFVubGlua2VkQmxvY2sobV9ncmFwaC5sYXN0QmxvY2soKSkpOworICAgICAgICAgICAgaWYg
KGNhbGxlckxpbmthYmlsaXR5ID09IENhbGxlckRvZXNOb3JtYWxMaW5raW5nKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkFkZGlu
ZyB1bmxpbmtlZCBibG9jayAiLCBSYXdQb2ludGVyKG1fZ3JhcGgubGFzdEJsb2NrKCkpLCAiIChv
bmUgcmV0dXJuKVxuIik7CisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxs
ZXItPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2sobV9ncmFwaC5sYXN0Qmxv
Y2soKSkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBtX2N1
cnJlbnRCbG9jayA9IG1fZ3JhcGgubGFzdEJsb2NrKCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIC8vIElmIHdlIGdldCB0byB0aGlzIHBv
aW50IHRoZW4gYWxsIGJsb2NrcyBtdXN0IGVuZCBpbiBzb21lIHNvcnQgb2YgdGVybWluYWxzLgog
ICAgIEFTU0VSVChsYXN0QmxvY2stPmxhc3QoKS0+aXNUZXJtaW5hbCgpKTsKLSAgICAKIAogICAg
IC8vIE5lZWQgdG8gY3JlYXRlIGEgbmV3IGJhc2ljIGJsb2NrIGZvciB0aGUgY29udGludWF0aW9u
IGF0IHRoZSBjYWxsZXIuCiAgICAgUmVmUHRyPEJhc2ljQmxvY2s+IGJsb2NrID0gYWRvcHRSZWYo
bmV3IEJhc2ljQmxvY2sobmV4dE9mZnNldCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCBQ
TmFOKSk7CkBAIC0xMzMzLDIwICsxMzE5LDI5MyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVJbmxpbmluZyhOb2RlCiAgICAgICAgIEFTU0VSVCghbm9kZS0+dGFyZ2V0QmxvY2soKSk7CiAg
ICAgICAgIG5vZGUtPnRhcmdldEJsb2NrKCkgPSBibG9jay5nZXQoKTsKICAgICAgICAgaW5saW5l
U3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzW2ldLm1fbmVlZHNFYXJseVJldHVybkxpbmtpbmcg
PSBmYWxzZTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgICAgIGJsb2NrVG9MaW5rLT5pc0xp
bmtlZCA9IHRydWU7Ci0jZW5kaWYKKyAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBk
YXRhTG9nKCJNYXJraW5nICIsIFJhd1BvaW50ZXIoYmxvY2tUb0xpbmspLCAiIGFzIGxpbmtlZCAo
anVtcHMgdG8gcmV0dXJuKVxuIik7CisgICAgICAgIGJsb2NrVG9MaW5rLT5kaWRMaW5rKCk7CiAg
ICAgfQogICAgIAogICAgIG1fY3VycmVudEJsb2NrID0gYmxvY2suZ2V0KCk7CiAgICAgQVNTRVJU
KG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuaXNFbXB0
eSgpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMu
bGFzdCgpLT5ieXRlY29kZUJlZ2luIDwgbmV4dE9mZnNldCk7Ci0gICAgbV9pbmxpbmVTdGFja1Rv
cC0+bV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2su
Z2V0KCkpKTsKLSAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdU
YXJnZXRzLmFwcGVuZChibG9jay5nZXQoKSk7CisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGRh
dGFMb2coIkFkZGluZyB1bmxpbmtlZCBibG9jayAiLCBSYXdQb2ludGVyKGJsb2NrLmdldCgpKSwg
IiAobWFueSByZXR1cm5zKVxuIik7CisgICAgaWYgKGNhbGxlckxpbmthYmlsaXR5ID09IENhbGxl
ckRvZXNOb3JtYWxMaW5raW5nKSB7CisgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVy
LT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLmdldCgpKSk7Cisg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMu
YXBwZW5kKGJsb2NrLmdldCgpKTsKKyAgICB9CiAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhibG9j
ayk7CiAgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOworfQorCit2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpjYW5jZWxMaW5raW5nRm9yQmxvY2soSW5saW5lU3RhY2tFbnRyeSogaW5saW5lU3RhY2tFbnRy
eSwgQmFzaWNCbG9jayogYmxvY2spCit7CisgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHRoZSBj
YWxsc2l0ZSBibG9jayBoZWFkIGlzIG5vdCBvd25lZCBieSB0aGUgY2FsbGVyLgorICAgIGlmICgh
aW5saW5lU3RhY2tFbnRyeS0+bV91bmxpbmtlZEJsb2Nrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
Ly8gSXQncyBkZWZpbml0ZWx5IG93bmVkIGJ5IHRoZSBjYWxsZXIsIGJlY2F1c2UgdGhlIGNhbGxl
ciBjcmVhdGVkIG5ldyBibG9ja3MuCisgICAgICAgIC8vIEFzc2VydCB0aGF0IHRoaXMgYWxsIGFk
ZHMgdXAuCisgICAgICAgIEFTU0VSVF9VTlVTRUQoYmxvY2ssIGlubGluZVN0YWNrRW50cnktPm1f
dW5saW5rZWRCbG9ja3MubGFzdCgpLm1fYmxvY2sgPT0gYmxvY2spOworICAgICAgICBBU1NFUlQo
aW5saW5lU3RhY2tFbnRyeS0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9uZWVkc05vcm1hbExp
bmtpbmcpOworICAgICAgICBpbmxpbmVTdGFja0VudHJ5LT5tX3VubGlua2VkQmxvY2tzLmxhc3Qo
KS5tX25lZWRzTm9ybWFsTGlua2luZyA9IGZhbHNlOworICAgIH0gZWxzZSB7CisgICAgICAgIC8v
IEl0J3MgZGVmaW5pdGVseSBub3Qgb3duZWQgYnkgdGhlIGNhbGxlci4gVGVsbCB0aGUgY2FsbGVy
IHRoYXQgaGUgZG9lcyBub3QKKyAgICAgICAgLy8gbmVlZCB0byBsaW5rIGhpcyBjYWxsc2l0ZSBi
bG9jayBoZWFkLCBiZWNhdXNlIHdlIGRpZCBpdCBmb3IgaGltLgorICAgICAgICBBU1NFUlQoaW5s
aW5lU3RhY2tFbnRyeS0+bV9jYWxsc2l0ZUJsb2NrSGVhZE5lZWRzTGlua2luZyk7CisgICAgICAg
IEFTU0VSVF9VTlVTRUQoYmxvY2ssIGlubGluZVN0YWNrRW50cnktPm1fY2FsbHNpdGVCbG9ja0hl
YWQgPT0gYmxvY2spOworICAgICAgICBpbmxpbmVTdGFja0VudHJ5LT5tX2NhbGxzaXRlQmxvY2tI
ZWFkTmVlZHNMaW5raW5nID0gZmFsc2U7CisgICAgfQorfQorCitib29sIEJ5dGVDb2RlUGFyc2Vy
OjphdHRlbXB0VG9JbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3Bl
cmFuZCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1l
OjpLaW5kIGtpbmQsIENhbGxlckxpbmthYmlsaXR5IGNhbGxlckxpbmthYmlsaXR5LCBTcGVjdWxh
dGVkVHlwZSBwcmVkaWN0aW9uLCB1bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlKQoreworICAgIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1l
OjpzcGVjaWFsaXphdGlvbktpbmRGb3Ioa2luZCk7CisgICAgCisgICAgaWYgKCFpbmxpbmluZ0Jh
bGFuY2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoSW50ZXJuYWxGdW5j
dGlvbiogZnVuY3Rpb24gPSBjYWxsZWUuaW50ZXJuYWxGdW5jdGlvbigpKSB7CisgICAgICAgIGlm
IChoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24ocmVzdWx0T3BlcmFuZCwgZnVuY3Rpb24s
IHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRp
b25LaW5kKSkgeworICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0Tm9k
ZSk7CisgICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgICAgICAg
ICBpbmxpbmluZ0JhbGFuY2UtLTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgCi0gICAgLy8gQXQgdGhpcyBwb2lu
dCB3ZSByZXR1cm4gYW5kIGNvbnRpbnVlIHRvIGdlbmVyYXRlIGNvZGUgZm9yIHRoZSBjYWxsZXIs
IGJ1dAotICAgIC8vIGluIHRoZSBuZXcgYmFzaWMgYmxvY2suCisgICAgSW50cmluc2ljIGludHJp
bnNpYyA9IGNhbGxlZS5pbnRyaW5zaWNGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICBpZiAo
aW50cmluc2ljICE9IE5vSW50cmluc2ljKSB7CisgICAgICAgIGlmIChoYW5kbGVJbnRyaW5zaWMo
cmVzdWx0T3BlcmFuZCwgaW50cmluc2ljLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIHByZWRpY3Rpb24pKSB7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50
b20sIGNhbGxUYXJnZXROb2RlKTsKKyAgICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJl
Z2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25L
aW5kKTsKKyAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZS0tOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAg
ICB1bnNpZ25lZCBteUlubGluaW5nQ29zdCA9IGlubGluaW5nQ29zdChjYWxsZWUsIGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgIGlmIChteUlubGlu
aW5nQ29zdCA+IGlubGluaW5nQmFsYW5jZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAor
ICAgIGlubGluZUNhbGwoY2FsbFRhcmdldE5vZGUsIHJlc3VsdE9wZXJhbmQsIGNhbGxlZSwgcmVn
aXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zmc2V0LCBraW5k
LCBjYWxsZXJMaW5rYWJpbGl0eSk7CisgICAgaW5saW5pbmdCYWxhbmNlIC09IG15SW5saW5pbmdD
b3N0OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJ
bmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IENh
bGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIE5vZGVUeXBlIGNh
bGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rp
b24pCit7CisgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgZGF0YUxvZygiSGFuZGxpbmcgaW5s
aW5pbmcuLi5cbiIpOworICAgICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmln
aW4oKSwgIlxuIik7CisgICAgfQorICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6
YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXphdGlvbktpbmRGb3Ioa2luZCk7
CisgICAgCisgICAgaWYgKCFjYWxsTGlua1N0YXR1cy5zaXplKCkpIHsKKyAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICBkYXRhTG9nKCJCYWlsaW5nIGlubGluaW5nLlxuIik7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgaW5saW5pbmdCYWxh
bmNlID0gT3B0aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3Ry
dWN0aW9uQ291bnQoKTsKKyAgICBpZiAoc3BlY2lhbGl6YXRpb25LaW5kID09IENvZGVGb3JDb25z
dHJ1Y3QpCisgICAgICAgIGlubGluaW5nQmFsYW5jZSA9IHN0ZDo6bWluKGlubGluaW5nQmFsYW5j
ZSwgT3B0aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saW5lQ2FuZGlkYXRlSW5z
dHJ1Y3Rpb25Db3VudCgpKTsKKyAgICBpZiAoY2FsbExpbmtTdGF0dXMuaXNDbG9zdXJlQ2FsbCgp
KQorICAgICAgICBpbmxpbmluZ0JhbGFuY2UgPSBzdGQ6Om1pbihpbmxpbmluZ0JhbGFuY2UsIE9w
dGlvbnM6Om1heGltdW1GdW5jdGlvbkZvckNsb3N1cmVDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1
Y3Rpb25Db3VudCgpKTsKKyAgICAKKyAgICAvLyBGaXJzdCBjaGVjayBpZiB3ZSBjYW4gYXZvaWQg
Y3JlYXRpbmcgY29udHJvbCBmbG93LiBPdXIgaW5saW5lciBkb2VzIHNvbWUgQ0ZHCisgICAgLy8g
c2ltcGxpZmljYXRpb24gb24gdGhlIGZseSBhbmQgdGhpcyBoZWxwcyByZWR1Y2UgY29tcGlsZSB0
aW1lcywgYnV0IHdlIGNhbiBvbmx5IGxldmVyYWdlCisgICAgLy8gdGhpcyBpbiBjYXNlcyB3aGVy
ZSB3ZSBkb24ndCBuZWVkIGNvbnRyb2wgZmxvdyBkaWFtb25kcyB0byBjaGVjayB0aGUgY2FsbGVl
LgorICAgIGlmICghY2FsbExpbmtTdGF0dXMuY291bGRUYWtlU2xvd1BhdGgoKSAmJiBjYWxsTGlu
a1N0YXR1cy5zaXplKCkgPT0gMSkgeworICAgICAgICBlbWl0RnVuY3Rpb25DaGVja3MoCisgICAg
ICAgICAgICBjYWxsTGlua1N0YXR1c1swXS5jYWxsZWUoKSwgY2FsbFRhcmdldE5vZGUsIHJlZ2lz
dGVyT2Zmc2V0LCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgICAgICBib29sIHJlc3VsdCA9IGF0
dGVtcHRUb0lubGluZUNhbGwoCisgICAgICAgICAgICBjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0T3Bl
cmFuZCwgY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVlKCksIHJlZ2lzdGVyT2Zmc2V0LAorICAgICAg
ICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQsIGtpbmQsIENhbGxl
ckRvZXNOb3JtYWxMaW5raW5nLCBwcmVkaWN0aW9uLAorICAgICAgICAgICAgaW5saW5pbmdCYWxh
bmNlKTsKKyAgICAgICAgaWYgKCFyZXN1bHQgJiYgIWNhbGxMaW5rU3RhdHVzLmlzUHJvdmVkKCkp
CisgICAgICAgICAgICB1bmRvRnVuY3Rpb25DaGVja3MoY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVl
KCkpOworICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgZGF0YUxvZygiRG9uZSBp
bmxpbmluZyAoc2ltcGxlKS5cbiIpOworICAgICAgICAgICAgZGF0YUxvZygiU3RhY2s6ICIsIGN1
cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfQorICAgIAorICAgIC8vIFdlIG5lZWQgdG8gY3JlYXRlIHNvbWUga2luZCBvZiBz
d2l0Y2ggb3ZlciBjYWxsZWUuIEZvciBub3cgd2Ugb25seSBkbyB0aGlzIGlmIHdlIGJlbGlldmUg
dGhhdAorICAgIC8vIHdlJ3JlIGluIHRoZSB0b3AgdGllci4gV2UgaGF2ZSB0d28gcmVhc29ucyBm
b3IgdGhpczogZmlyc3QsIGl0IHByb3ZpZGVzIHVzIGFuIG9wcG9ydHVuaXR5IHRvCisgICAgLy8g
ZG8gbW9yZSBkZXRhaWxlZCBwb2x5dmFyaWFudC9wb2x5bW9ycGhpYyBwcm9maWxpbmc7IGFuZCBz
ZWNvbmQsIGl0IHJlZHVjZXMgY29tcGlsZSB0aW1lcyBpbgorICAgIC8vIHRoZSBERkcuIEFuZCBi
eSBwb2x5dmFyaWFudCBwcm9maWxpbmcgd2UgbWVhbiBwb2x5dmFyaWFudCBwcm9maWxpbmcgb2Yg
KnRoaXMqIGNhbGwuIE5vdGUgdGhhdAorICAgIC8vIHdlIGNvdWxkIGltcHJvdmUgdGhhdCBhc3Bl
Y3Qgb2YgdGhpcyBieSBkb2luZyBwb2x5bW9ycGhpYyBpbmxpbmluZyBidXQgaGF2aW5nIHRoZSBw
cm9maWxpbmcKKyAgICAvLyBhbHNvLiBDdXJyZW50bHkgd2Ugb3B0IGFnYWluc3QgdGhpcywgYnV0
IGl0IGNvdWxkIGJlIGludGVyZXN0aW5nLiBUaGF0IHdvdWxkIHJlcXVpcmUgaGF2aW5nIGEKKyAg
ICAvLyBzZXBhcmF0ZSBub2RlIGZvciBjYWxsIGVkZ2UgcHJvZmlsaW5nLgorICAgIC8vIEZJWE1F
OiBJbnRyb2R1Y2UgdGhlIG5vdGlvbiBvZiBhIHNlcGFyYXRlIGNhbGwgZWRnZSBwcm9maWxpbmcg
bm9kZS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2
MDMzCisgICAgaWYgKCFpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSB8fCAhT3B0aW9uczo6ZW5h
YmxlUG9seW1vcnBoaWNDYWxsSW5saW5pbmcoKSkgeworICAgICAgICBpZiAodmVyYm9zZSkgewor
ICAgICAgICAgICAgZGF0YUxvZygiQmFpbGluZyBpbmxpbmluZyAoaGFyZCkuXG4iKTsKKyAgICAg
ICAgICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVk
IG9sZE9mZnNldCA9IG1fY3VycmVudEluZGV4OworICAgIAorICAgIGJvb2wgYWxsQXJlQ2xvc3Vy
ZUNhbGxzID0gdHJ1ZTsKKyAgICBib29sIGFsbEFyZURpcmVjdENhbGxzID0gdHJ1ZTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSBjYWxsTGlua1N0YXR1cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAg
aWYgKGNhbGxMaW5rU3RhdHVzW2ldLmNhbGxlZSgpLmlzQ2xvc3VyZUNhbGwoKSkKKyAgICAgICAg
ICAgIGFsbEFyZURpcmVjdENhbGxzID0gZmFsc2U7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGFsbEFyZUNsb3N1cmVDYWxscyA9IGZhbHNlOworICAgIH0KKyAgICAKKyAgICBOb2RlKiB0aGlu
Z1RvU3dpdGNoT247CisgICAgaWYgKGFsbEFyZURpcmVjdENhbGxzKQorICAgICAgICB0aGluZ1Rv
U3dpdGNoT24gPSBjYWxsVGFyZ2V0Tm9kZTsKKyAgICBlbHNlIGlmIChhbGxBcmVDbG9zdXJlQ2Fs
bHMpCisgICAgICAgIHRoaW5nVG9Td2l0Y2hPbiA9IGFkZFRvR3JhcGgoR2V0RXhlY3V0YWJsZSwg
Y2FsbFRhcmdldE5vZGUpOworICAgIGVsc2UgeworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGJlIGFibGUgdG8gaGFuZGxlIHRoaXMgY2FzZSwgYnV0IGl0J3MgdHJpY2t5IGFuZCB3ZSBkb24n
dCBrbm93IG9mIGNhc2VzCisgICAgICAgIC8vIHdoZXJlIGl0IHdvdWxkIGJlIGJlbmVmaWNpYWwu
IEFsc28sIENhbGxMaW5rU3RhdHVzIHdvdWxkIG1ha2UgYWxsIGNhbGxlZXMgYXBwZWFyIGxpa2UK
KyAgICAgICAgLy8gY2xvc3VyZSBjYWxscyBpZiBhbnkgY2FsbHMgd2VyZSBjbG9zdXJlIGNhbGxz
IC0gZXhjZXB0IGZvciBjYWxscyB0byBpbnRlcm5hbCBmdW5jdGlvbnMuCisgICAgICAgIC8vIFNv
IHRoaXMgd2lsbCBvbmx5IGFyaXNlIGlmIHNvbWUgY2FsbGVlcyBhcmUgaW50ZXJuYWwgZnVuY3Rp
b25zIGFuZCBvdGhlcnMgYXJlIGNsb3N1cmVzLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MDIwCisgICAgICAgIGlmICh2ZXJib3NlKSB7Cisg
ICAgICAgICAgICBkYXRhTG9nKCJCYWlsaW5nIGlubGluaW5nIChtaXgpLlxuIik7CisgICAgICAg
ICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBpZiAodmVyYm9z
ZSkgeworICAgICAgICBkYXRhTG9nKCJEb2luZyBoYXJkIGlubGluaW5nLi4uXG4iKTsKKyAgICAg
ICAgZGF0YUxvZygiU3RhY2s6ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOworICAgIH0K
KyAgICAKKyAgICAvLyBUaGlzIG1ha2VzIG1lIHdpc2ggdGhhdCB3ZSB3ZXJlIGluIFNTQSBhbGwg
dGhlIHRpbWUuIFdlIG5lZWQgdG8gcGljayBhIHZhcmlhYmxlIGludG8gd2hpY2ggdG8KKyAgICAv
LyBzdG9yZSB0aGUgY2FsbGVlIHNvIHRoYXQgaXQgd2lsbCBiZSBhY2Nlc3NpYmxlIHRvIGFsbCBv
ZiB0aGUgYmxvY2tzIHdlJ3JlIGFib3V0IHRvIGNyZWF0ZS4gV2UKKyAgICAvLyBnZXQgYXdheSB3
aXRoIGRvaW5nIGFuIGltbWVkaWF0ZS1zZXQgaGVyZSBiZWNhdXNlIHdlIHdvdWxkbid0IGhhdmUg
cGVyZm9ybWVkIGFueSBzaWRlIGVmZmVjdHMKKyAgICAvLyB5ZXQuCisgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgIGRhdGFMb2coIlJlZ2lzdGVyIG9mZnNldDogIiwgcmVnaXN0ZXJPZmZzZXQpOwor
ICAgIFZpcnR1YWxSZWdpc3RlciBjYWxsZWVSZWcocmVnaXN0ZXJPZmZzZXQgKyBKU1N0YWNrOjpD
YWxsZWUpOworICAgIGNhbGxlZVJlZyA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChj
YWxsZWVSZWcpOworICAgIGlmICh2ZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJDYWxsZWUgaXMg
Z29pbmcgdG8gYmUgIiwgY2FsbGVlUmVnLCAiXG4iKTsKKyAgICBzZXREaXJlY3QoY2FsbGVlUmVn
LCBjYWxsVGFyZ2V0Tm9kZSwgSW1tZWRpYXRlU2V0V2l0aEZsdXNoKTsKKyAgICAKKyAgICBTd2l0
Y2hEYXRhJiBkYXRhID0gKm1fZ3JhcGgubV9zd2l0Y2hEYXRhLmFkZCgpOworICAgIGRhdGEua2lu
ZCA9IFN3aXRjaENlbGw7CisgICAgYWRkVG9HcmFwaChTd2l0Y2gsIE9wSW5mbygmZGF0YSksIHRo
aW5nVG9Td2l0Y2hPbik7CisgICAgCisgICAgQmFzaWNCbG9jayogb3JpZ2luQmxvY2sgPSBtX2N1
cnJlbnRCbG9jazsKKyAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygiTWFya2luZyAi
LCBSYXdQb2ludGVyKG9yaWdpbkJsb2NrKSwgIiBhcyBsaW5rZWQgKG9yaWdpbiBvZiBwb2x5IGlu
bGluZSlcbiIpOworICAgIG9yaWdpbkJsb2NrLT5kaWRMaW5rKCk7CisgICAgY2FuY2VsTGlua2lu
Z0ZvckJsb2NrKG1faW5saW5lU3RhY2tUb3AsIG9yaWdpbkJsb2NrKTsKKyAgICAKKyAgICAvLyBF
YWNoIGlubGluZWQgY2FsbGVlIHdpbGwgaGF2ZSBhIGxhbmRpbmcgYmxvY2sgdGhhdCBpdCByZXR1
cm5zIGF0LiBUaGV5IHNob3VsZCBhbGwgaGF2ZSBqdW1wcworICAgIC8vIHRvIHRoZSBjb250aW51
YXRpb24gYmxvY2ssIHdoaWNoIHdlIGNyZWF0ZSBsYXN0LgorICAgIFZlY3RvcjxCYXNpY0Jsb2Nr
Kj4gbGFuZGluZ0Jsb2NrczsKKyAgICAKKyAgICAvLyBXZSBtYWtlIGZvcmNlIHRoaXMgdHJ1ZSBp
ZiB3ZSBnaXZlIHVwIG9uIGlubGluaW5nIGFueSBvZiB0aGUgZWRnZXMuCisgICAgYm9vbCBjb3Vs
ZFRha2VTbG93UGF0aCA9IGNhbGxMaW5rU3RhdHVzLmNvdWxkVGFrZVNsb3dQYXRoKCk7CisgICAg
CisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGRhdGFMb2coIkFib3V0IHRvIGxvb3Agb3ZlciBm
dW5jdGlvbnMgYXQgIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIi5cbiIpOworICAgIAorICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsTGlua1N0YXR1cy5zaXplKCk7ICsraSkgeworICAg
ICAgICBtX2N1cnJlbnRJbmRleCA9IG9sZE9mZnNldDsKKyAgICAgICAgUmVmUHRyPEJhc2ljQmxv
Y2s+IGJsb2NrID0gYWRvcHRSZWYobmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIG1fbnVtQXJndW1l
bnRzLCBtX251bUxvY2FscywgUE5hTikpOworICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2Nr
LmdldCgpOworICAgICAgICBtX2dyYXBoLmFwcGVuZEJsb2NrKGJsb2NrKTsKKyAgICAgICAgcHJl
cGFyZVRvUGFyc2VCbG9jaygpOworICAgICAgICAKKyAgICAgICAgTm9kZSogbXlDYWxsVGFyZ2V0
Tm9kZSA9IGdldERpcmVjdChjYWxsZWVSZWcpOworICAgICAgICAKKyAgICAgICAgYm9vbCBpbmxp
bmluZ1Jlc3VsdCA9IGF0dGVtcHRUb0lubGluZUNhbGwoCisgICAgICAgICAgICBteUNhbGxUYXJn
ZXROb2RlLCByZXN1bHRPcGVyYW5kLCBjYWxsTGlua1N0YXR1c1tpXS5jYWxsZWUoKSwgcmVnaXN0
ZXJPZmZzZXQsCisgICAgICAgICAgICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbmV4dE9m
ZnNldCwga2luZCwgQ2FsbGVyTGlua3NNYW51YWxseSwgcHJlZGljdGlvbiwKKyAgICAgICAgICAg
IGlubGluaW5nQmFsYW5jZSk7CisgICAgICAgIAorICAgICAgICBpZiAoIWlubGluaW5nUmVzdWx0
KSB7CisgICAgICAgICAgICAvLyBUaGF0IGZhaWxlZCBzbyB3ZSBsZXQgdGhlIGJsb2NrIGRpZS4g
Tm90aGluZyBpbnRlcmVzdGluZyBzaG91bGQgaGF2ZSBiZWVuIGFkZGVkIHRvCisgICAgICAgICAg
ICAvLyB0aGUgYmxvY2suIFdlIGFsc28gZ2l2ZSB1cCBvbiBpbmxpbmluZyBhbnkgb2YgdGhlIChs
ZXNzIGZyZXF1ZW50KSBjYWxsZWVzLgorICAgICAgICAgICAgQVNTRVJUKG1fY3VycmVudEJsb2Nr
ID09IGJsb2NrLmdldCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLm1fYmxvY2tzLmxh
c3QoKSA9PSBibG9jayk7CisgICAgICAgICAgICBtX2dyYXBoLmtpbGxCbG9ja0FuZEl0c0NvbnRl
bnRzKGJsb2NrLmdldCgpKTsKKyAgICAgICAgICAgIG1fZ3JhcGgubV9ibG9ja3MucmVtb3ZlTGFz
dCgpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBUaGUgZmFjdCB0aGF0IGlubGluaW5n
IGZhaWxlZCBtZWFucyB3ZSBuZWVkIGEgc2xvdyBwYXRoLgorICAgICAgICAgICAgY291bGRUYWtl
U2xvd1BhdGggPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIEpTQ2VsbCogdGhpbmdUb0Nhc2VPbjsKKyAgICAgICAgaWYgKGFsbEFyZURpcmVj
dENhbGxzKQorICAgICAgICAgICAgdGhpbmdUb0Nhc2VPbiA9IGNhbGxMaW5rU3RhdHVzW2ldLmNh
bGxlZSgpLm5vbkV4ZWN1dGFibGVDYWxsZWUoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBBU1NFUlQoYWxsQXJlQ2xvc3VyZUNhbGxzKTsKKyAgICAgICAgICAgIHRoaW5nVG9DYXNlT24g
PSBjYWxsTGlua1N0YXR1c1tpXS5jYWxsZWUoKS5leGVjdXRhYmxlKCk7CisgICAgICAgIH0KKyAg
ICAgICAgZGF0YS5jYXNlcy5hcHBlbmQoU3dpdGNoQ2FzZShtX2dyYXBoLmZyZWV6ZSh0aGluZ1Rv
Q2FzZU9uKSwgYmxvY2suZ2V0KCkpKTsKKyAgICAgICAgbV9jdXJyZW50SW5kZXggPSBuZXh0T2Zm
c2V0OworICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOyAvLyBUaGlzIG9ubHkgY29tZXMg
aW50byBwbGF5IGZvciBpbnRyaW5zaWNzLCBzaW5jZSBub3JtYWwgaW5saW5lZCBjb2RlIHdpbGwg
bGVhdmUgYW4gZW1wdHkgcXVldWUuCisgICAgICAgIGFkZFRvR3JhcGgoSnVtcCk7CisgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgZGF0YUxvZygiTWFya2luZyAiLCBSYXdQb2ludGVy
KG1fY3VycmVudEJsb2NrKSwgIiBhcyBsaW5rZWQgKHRhaWwgb2YgcG9seSBpbmxpbmVlKVxuIik7
CisgICAgICAgIG1fY3VycmVudEJsb2NrLT5kaWRMaW5rKCk7CisgICAgICAgIGxhbmRpbmdCbG9j
a3MuYXBwZW5kKG1fY3VycmVudEJsb2NrKTsKKworICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgICAgIGRhdGFMb2coIkZpbmlzaGVkIGlubGluaW5nICIsIGNhbGxMaW5rU3RhdHVzW2ldLmNh
bGxlZSgpLCAiIGF0ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICIuXG4iKTsKKyAgICB9CisgICAg
CisgICAgUmVmUHRyPEJhc2ljQmxvY2s+IHNsb3dQYXRoQmxvY2sgPSBhZG9wdFJlZigKKyAgICAg
ICAgbmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2Fscywg
UE5hTikpOworICAgIG1fY3VycmVudEluZGV4ID0gb2xkT2Zmc2V0OworICAgIGRhdGEuZmFsbFRo
cm91Z2ggPSBCcmFuY2hUYXJnZXQoc2xvd1BhdGhCbG9jay5nZXQoKSk7CisgICAgbV9ncmFwaC5h
cHBlbmRCbG9jayhzbG93UGF0aEJsb2NrKTsKKyAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgZGF0
YUxvZygiTWFya2luZyAiLCBSYXdQb2ludGVyKHNsb3dQYXRoQmxvY2suZ2V0KCkpLCAiIGFzIGxp
bmtlZCAoc2xvdyBwYXRoIGJsb2NrKVxuIik7CisgICAgc2xvd1BhdGhCbG9jay0+ZGlkTGluaygp
OworICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKKyAgICBtX2N1cnJlbnRCbG9jayA9IHNsb3dQ
YXRoQmxvY2suZ2V0KCk7CisgICAgTm9kZSogbXlDYWxsVGFyZ2V0Tm9kZSA9IGdldERpcmVjdChj
YWxsZWVSZWcpOworICAgIGlmIChjb3VsZFRha2VTbG93UGF0aCkgeworICAgICAgICBhZGRDYWxs
KAorICAgICAgICAgICAgcmVzdWx0T3BlcmFuZCwgY2FsbE9wLCBPcEluZm8oKSwgbXlDYWxsVGFy
Z2V0Tm9kZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCisgICAgICAgICAgICByZWdpc3Rl
ck9mZnNldCwgcHJlZGljdGlvbik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYWRkVG9HcmFwaChD
aGVja0JhZENlbGwpOworICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIG15Q2FsbFRhcmdldE5v
ZGUpOworICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgICAgIAorICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBhZGRUb0dyYXBoKEJvdHRv
bVZhbHVlKSk7CisgICAgfQorCisgICAgbV9jdXJyZW50SW5kZXggPSBuZXh0T2Zmc2V0OworICAg
IHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7CisgICAgYWRkVG9HcmFwaChKdW1wKTsKKyAgICBsYW5k
aW5nQmxvY2tzLmFwcGVuZChtX2N1cnJlbnRCbG9jayk7CisgICAgCisgICAgUmVmUHRyPEJhc2lj
QmxvY2s+IGNvbnRpbnVhdGlvbkJsb2NrID0gYWRvcHRSZWYoCisgICAgICAgIG5ldyBCYXNpY0Js
b2NrKFVJTlRfTUFYLCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIFBOYU4pKTsKKyAgICBt
X2dyYXBoLmFwcGVuZEJsb2NrKGNvbnRpbnVhdGlvbkJsb2NrKTsKKyAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgZGF0YUxvZygiQWRkaW5nIHVubGlua2VkIGJsb2NrICIsIFJhd1BvaW50ZXIoY29u
dGludWF0aW9uQmxvY2suZ2V0KCkpLCAiIChjb250aW51YXRpb24pXG4iKTsKKyAgICBtX2lubGlu
ZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGNvbnRpbnVh
dGlvbkJsb2NrLmdldCgpKSk7CisgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOworICAgIG1fY3Vy
cmVudEJsb2NrID0gY29udGludWF0aW9uQmxvY2suZ2V0KCk7CisgICAgCisgICAgZm9yICh1bnNp
Z25lZCBpID0gbGFuZGluZ0Jsb2Nrcy5zaXplKCk7IGktLTspCisgICAgICAgIGxhbmRpbmdCbG9j
a3NbaV0tPmxhc3QoKS0+dGFyZ2V0QmxvY2soKSA9IGNvbnRpbnVhdGlvbkJsb2NrLmdldCgpOwor
ICAgIAorICAgIG1fY3VycmVudEluZGV4ID0gb2xkT2Zmc2V0OworICAgIAorICAgIGlmICh2ZXJi
b3NlKSB7CisgICAgICAgIGRhdGFMb2coIkRvbmUgaW5saW5pbmcgKGhhcmQpLlxuIik7CisgICAg
ICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKKyAgICB9
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE2NDUsNyArMTkwNCw3IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZVR5cGVkQXJyYXlDb24KIAogYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKAogICAgIGludCByZXN1bHRPcGVyYW5kLCBJbnRl
cm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgaW50IHJlZ2lzdGVyT2Zmc2V0LAotICAgIGludCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBraW5kKQorICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIC8vIElmIHdlIGV2ZXIgZmlu
ZCB0aGF0IHdlIGhhdmUgYSBsb3Qgb2YgaW50ZXJuYWwgZnVuY3Rpb25zIHRoYXQgd2Ugc3BlY2lh
bGl6ZSBmb3IsCiAgICAgLy8gdGhlbiB3ZSBzaG91bGQgcHJvYmFibHkgaGF2ZSBzb21lIHNvcnQg
b2YgaGFzaHRhYmxlIGRpc3BhdGNoLCBvciBtYXliZSBldmVuCkBAIC0xNjU0LDggKzE5MTMsNiBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVyCiAgICAgLy8gd2Uga25v
dyBhYm91dCBpcyBzbWFsbCBlbm91Z2gsIHRoYXQgaGF2aW5nIGp1c3QgYSBsaW5lYXIgY2FzY2Fk
ZSBvZiBpZiBzdGF0ZW1lbnRzCiAgICAgLy8gaXMgZ29vZCBlbm91Z2guCiAgICAgCi0gICAgVU5V
U0VEX1BBUkFNKHByZWRpY3Rpb24pOyAvLyBSZW1vdmUgdGhpcyBvbmNlIHdlIGRvIG1vcmUgdGhp
bmdzLgotICAgIAogICAgIGlmIChmdW5jdGlvbi0+Y2xhc3NJbmZvKCkgPT0gQXJyYXlDb25zdHJ1
Y3Rvcjo6aW5mbygpKSB7CiAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCkgIT0g
bV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMjAyMCw2ICsyMjc3LDEyIEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZVB1dEJ5SWQoCiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnByZXBhcmVUb1BhcnNl
QmxvY2soKQogeworICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgQVNTRVJUKG1fc2V0TG9jYWxRdWV1
ZS5pc0VtcHR5KCkpOworfQorCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpjbGVhckNhY2hlcygpCit7
CiAgICAgbV9jb25zdGFudHMucmVzaXplKDApOwogfQogCkBAIC0yMDU5LDkgKzIzMjIsNyBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgfQogCiAgICAgd2hp
bGUgKHRydWUpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2V0TG9jYWxR
dWV1ZS5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIG1fc2V0TG9jYWxRdWV1ZVtpXS5leGVjdXRl
KHRoaXMpOwotICAgICAgICBtX3NldExvY2FsUXVldWUucmVzaXplKDApOworICAgICAgICBwcm9j
ZXNzU2V0TG9jYWxRdWV1ZSgpOwogICAgICAgICAKICAgICAgICAgLy8gRG9uJ3QgZXh0ZW5kIG92
ZXIganVtcCBkZXN0aW5hdGlvbnMuCiAgICAgICAgIGlmIChtX2N1cnJlbnRJbmRleCA9PSBsaW1p
dCkgewpAQCAtMjIwNSwxMyArMjQ2NiwxMyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBKU0NlbGwqIGNhY2hlZEZ1bmN0aW9uID0gY3VycmVu
dEluc3RydWN0aW9uWzJdLnUuanNDZWxsLmdldCgpOwogICAgICAgICAgICAgaWYgKCFjYWNoZWRG
dW5jdGlvbiAKICAgICAgICAgICAgICAgICB8fCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVk
QmxvY2stPmNvdWxkVGFrZVNsb3dDYXNlKG1fY3VycmVudEluZGV4KQotICAgICAgICAgICAgICAg
IHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50
SW5kZXgsIEJhZEZ1bmN0aW9uKSkgeworICAgICAgICAgICAgICAgIHx8IG1faW5saW5lU3RhY2tU
b3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENlbGwpKSB7
CiAgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihKU1N0YWNrOjpDYWxsZWUpKSk7CiAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW4g
PSBtX2dyYXBoLmZyZWV6ZShjYWNoZWRGdW5jdGlvbik7CiAgICAgICAgICAgICAgICAgQVNTRVJU
KGNhY2hlZEZ1bmN0aW9uLT5pbmhlcml0cyhKU0Z1bmN0aW9uOjppbmZvKCkpKTsKICAgICAgICAg
ICAgICAgICBOb2RlKiBhY3R1YWxDYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6
OkNhbGxlZSkpOwotICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tGdW5jdGlvbiwgT3BJ
bmZvKGZyb3plbiksIGFjdHVhbENhbGxlZSk7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChD
aGVja0NlbGwsIE9wSW5mbyhmcm96ZW4pLCBhY3R1YWxDYWxsZWUpOwogICAgICAgICAgICAgICAg
IHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFk
ZFRvR3JhcGgoSlNDb25zdGFudCwgT3BJbmZvKGZyb3plbikpKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9jYWxsZWUpOwpAQCAtMjg5Myw3ICszMTU0LDcg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAg
Ly8gYWxyZWFkeSBnbmFybHkgZW5vdWdoIGFzIGl0IGlzLgogICAgICAgICAgICAgQVNTRVJUKHBv
aW50ZXJJc0Z1bmN0aW9uKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnNwZWNpYWxQb2ludGVyKSk7
CiAgICAgICAgICAgICBhZGRUb0dyYXBoKAotICAgICAgICAgICAgICAgIENoZWNrRnVuY3Rpb24s
CisgICAgICAgICAgICAgICAgQ2hlY2tDZWxsLAogICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dy
YXBoLmZyZWV6ZShzdGF0aWNfY2FzdDxKU0NlbGwqPihhY3R1YWxQb2ludGVyRm9yKAogICAgICAg
ICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jaywgY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUuc3BlY2lhbFBvaW50ZXIpKSkpLAogICAgICAgICAgICAgICAgIGdldChWaXJ0
dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpKTsKQEAgLTMzMTcs
MTUgKzM1NzgsMTkgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrKEJhc2ljQmxvYwog
ICAgICAgICBicmVhazsKICAgICB9CiAgICAgCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIGJs
b2NrLT5pc0xpbmtlZCA9IHRydWU7Ci0jZW5kaWYKKyAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ZGF0YUxvZygiTWFya2luZyAiLCBSYXdQb2ludGVyKGJsb2NrKSwgIiBhcyBsaW5rZWQgKGFjdHVh
bGx5IGRpZCBsaW5raW5nKVxuIik7CisgICAgYmxvY2stPmRpZExpbmsoKTsKIH0KIAogdm9pZCBC
eXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrcyhWZWN0b3I8VW5saW5rZWRCbG9jaz4mIHVubGlua2Vk
QmxvY2tzLCBWZWN0b3I8QmFzaWNCbG9jayo+JiBwb3NzaWJsZVRhcmdldHMpCiB7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB1bmxpbmtlZEJsb2Nrcy5zaXplKCk7ICsraSkgeworICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGRhdGFMb2coIkF0dGVtcHRpbmcgdG8gbGluayAi
LCBSYXdQb2ludGVyKHVubGlua2VkQmxvY2tzW2ldLm1fYmxvY2spLCAiXG4iKTsKICAgICAgICAg
aWYgKHVubGlua2VkQmxvY2tzW2ldLm1fbmVlZHNOb3JtYWxMaW5raW5nKSB7CisgICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRG9lcyBuZWVkIG5v
cm1hbCBsaW5raW5nLlxuIik7CiAgICAgICAgICAgICBsaW5rQmxvY2sodW5saW5rZWRCbG9ja3Nb
aV0ubV9ibG9jaywgcG9zc2libGVUYXJnZXRzKTsKICAgICAgICAgICAgIHVubGlua2VkQmxvY2tz
W2ldLm1fbmVlZHNOb3JtYWxMaW5raW5nID0gZmFsc2U7CiAgICAgICAgIH0KQEAgLTM0OTIsNyAr
Mzc1Nyw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmUKIAogdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogewotICAgIHByZXBhcmVUb1BhcnNl
QmxvY2soKTsKKyAgICBjbGVhckNhY2hlcygpOwogICAgIAogICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2s7CiAgICAgCkBAIC0zNTU4LDcgKzM4
MjMsMTIgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogICAgICAgICAg
ICAgICAgICAgICAvLyAyKSBJZiB0aGUgYnl0ZWNvZGVCZWdpbiBpcyBlcXVhbCB0byB0aGUgY3Vy
cmVudEluZGV4LCB0aGVuIHdlIGZhaWxlZCB0byBkbwogICAgICAgICAgICAgICAgICAgICAvLyAg
ICBhIHBlZXBob2xlIGNvYWxlc2Npbmcgb2YgdGhpcyBibG9jayBpbiB0aGUgaWYgc3RhdGVtZW50
IGFib3ZlLiBTbywgd2UncmUKICAgICAgICAgICAgICAgICAgICAgLy8gICAgZ2VuZXJhdGluZyBz
dWJvcHRpbWFsIGNvZGUgYW5kIGxlYXZpbmcgbW9yZSB3b3JrIGZvciB0aGUgQ0ZHIHNpbXBsaWZp
ZXIuCi0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2lubGluZVN0YWNrVG9wLT5tX3VubGlu
a2VkQmxvY2tzLmlzRW1wdHkoKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tz
Lmxhc3QoKS5tX2Jsb2NrLT5ieXRlY29kZUJlZ2luIDwgbV9jdXJyZW50SW5kZXgpOworICAgICAg
ICAgICAgICAgICAgICBpZiAoIW1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuaXNF
bXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsYXN0QmVnaW4gPQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRC
bG9ja3MubGFzdCgpLm1fYmxvY2stPmJ5dGVjb2RlQmVnaW47CisgICAgICAgICAgICAgICAgICAg
ICAgICBBU1NFUlRfVU5VU0VEKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RCZWdp
biwgbGFzdEJlZ2luID09IFVJTlRfTUFYIHx8IGxhc3RCZWdpbiA8IG1fY3VycmVudEluZGV4KTsK
KyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNr
VG9wLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLmdldCgpKSk7
CiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmxvY2tMaW5raW5nVGFy
Z2V0cy5hcHBlbmQoYmxvY2suZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICAvLyBUaGUgZmly
c3QgYmxvY2sgaXMgZGVmaW5pdGVseSBhbiBPU1IgdGFyZ2V0LgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCShyZXZp
c2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFk
aW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MCw4ICs5MCwxMCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5zZXRDaGlsZDEoRWRnZSgpKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOgot
ICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmNoaWxkMSgpKQorICAgICAgICAgICAgICAg
ICAgICBpZiAoIW5vZGUtPmNoaWxkMSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBzd2l0Y2gg
KG5vZGUtPmNoaWxkMSgpLT5vcCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgUGhpOgog
ICAgICAgICAgICAgICAgICAgICBjYXNlIFNldEFyZ3VtZW50OgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDQsNiArMTQ0LDggQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQog
ICAgIGNhc2UgRmlhdEludDUyOgogICAgIGNhc2UgTWFrZVJvcGU6CiAgICAgY2FzZSBWYWx1ZVRv
SW50MzI6CisgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgorICAgIGNhc2UgQm90dG9tVmFsdWU6CiAg
ICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSkpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIApA
QCAtMjM5LDEyICsyNDEsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlCiAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwgbm9kZS0+YXJpdGhNb2RlKCkpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBjYXNlIENoZWNrRnVuY3Rpb246Ci0gICAgICAg
IGRlZihQdXJlVmFsdWUoQ2hlY2tGdW5jdGlvbiwgQWRqYWNlbmN5TGlzdChBZGphY2VuY3lMaXN0
OjpGaXhlZCwgbm9kZS0+Y2hpbGQxKCkpLCBub2RlLT5mdW5jdGlvbigpKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICAgICAgCi0gICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6Ci0gICAgICAgIGRlZihQ
dXJlVmFsdWUobm9kZSwgbm9kZS0+ZXhlY3V0YWJsZSgpKSk7CisgICAgY2FzZSBDaGVja0NlbGw6
CisgICAgICAgIGRlZihQdXJlVmFsdWUoQ2hlY2tDZWxsLCBBZGphY2VuY3lMaXN0KEFkamFjZW5j
eUxpc3Q6OkZpeGVkLCBub2RlLT5jaGlsZDEoKSksIG5vZGUtPmNlbGxPcGVyYW5kKCkpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6
CkBAIC0yNjMsNiArMjYxLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZQogICAgIGNhc2UgU3dpdGNoOgogICAgIGNhc2UgVGhyb3c6CiAgICAgY2FzZSBGb3JjZU9T
UkV4aXQ6CisgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgY2FzZSBSZXR1cm46CiAgICAgY2Fz
ZSBVbnJlYWNoYWJsZToKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2
MywxMyBAQCBlbnVtIFJlZk5vZGVNb2RlIHsKICAgICBEb250UmVmTm9kZQogfTsKIAorZW51bSBT
d2l0Y2hLaW5kIHsKKyAgICBTd2l0Y2hJbW0sCisgICAgU3dpdGNoQ2hhciwKKyAgICBTd2l0Y2hT
dHJpbmcsCisgICAgU3dpdGNoQ2VsbAorfTsKKwogaW5saW5lIGJvb2wgdmVyYm9zZUNvbXBpbGF0
aW9uRW5hYmxlZChDb21waWxhdGlvbk1vZGUgbW9kZSA9IERGR01vZGUpCiB7CiAgICAgcmV0dXJu
IE9wdGlvbnM6OnZlcmJvc2VDb21waWxhdGlvbigpIHx8IE9wdGlvbnM6OmR1bXBHcmFwaEF0RWFj
aFBoYXNlKCkgfHwgKGlzRlRMKG1vZGUpICYmIE9wdGlvbnM6OnZlcmJvc2VGVExDb21waWxhdGlv
bigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5n
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQyLDggKzE0Miw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlIENoZWNrRnVuY3Rp
b246IHsKLSAgICAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KS52YWx1ZSgpICE9IG5vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkpCisgICAgICAgICAgICBjYXNl
IENoZWNrQ2VsbDogeworICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLnZhbHVlKCkgIT0gbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKSkKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhh
bnRvbSgpOwogICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
MSw3ICs5MSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBj
YXNlIFB1dEJ5SWRGbHVzaDoKICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgY2FzZSBDaGVj
a1N0cnVjdHVyZToKLSAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToKKyAgICBjYXNlIEdldEV4ZWN1
dGFibGU6CiAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAg
IGNhc2UgR2V0U2NvcGU6CkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0R2xvYmFsVmFyOgogICAgIGNhc2UgVmFyaWFi
bGVXYXRjaHBvaW50OgogICAgIGNhc2UgVmFySW5qZWN0aW9uV2F0Y2hwb2ludDoKLSAgICBjYXNl
IENoZWNrRnVuY3Rpb246CisgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgY2FzZSBBbGxvY2F0aW9u
UHJvZmlsZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBSZWdFeHBFeGVjOgogICAgIGNhc2UgUmVnRXhw
VGVzdDoKQEAgLTE5NSw2ICsxOTUsOCBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBHZXREaXJlY3RQbmFtZToKICAgICBjYXNlIEZpYXRJbnQ1MjoKICAg
ICBjYXNlIEJvb2xlYW5Ub051bWJlcjoKKyAgICBjYXNlIENoZWNrQmFkQ2VsbDoKKyAgICBjYXNl
IEJvdHRvbVZhbHVlOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjYXNlIENyZWF0ZUFj
dGl2YXRpb246CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCShy
ZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDkgQEAgc3RhdGljIENvbXBpbGF0aW9uUmVz
dWx0IGNvbXBpbGVJbXBsKAogICAgICAgICB2bS5nZXRDVElTdHViKHZpcnR1YWxDb25zdHJ1Y3RU
aGF0UHJlc2VydmVzUmVnc1RodW5rR2VuZXJhdG9yKTsKICAgICB9CiAgICAgCisgICAgaWYgKENh
bGxFZGdlTG9nOjppc0VuYWJsZWQoKSkKKyAgICAgICAgdm0uZW5zdXJlQ2FsbEVkZ2VMb2coKS5w
cm9jZXNzTG9nKCk7CisgICAgCiAgICAgUmVmUHRyPFBsYW4+IHBsYW4gPSBhZG9wdFJlZigKICAg
ICAgICAgbmV3IFBsYW4oY29kZUJsb2NrLCBwcm9maWxlZERGR0NvZGVCbG9jaywgbW9kZSwgb3Ny
RW50cnlCeXRlY29kZUluZGV4LCBtdXN0SGFuZGxlVmFsdWVzKSk7CiAgICAgCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE3Mjg1
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTczNiw2ICs3MzYsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBl
bHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nKCkpCiAgICAgICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFN3aXRjaENlbGw6CisgICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVDZWxsKCkpCisgICAgICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgICAgIC8vIGVsc2UgaXQncyBmaW5lIGZvciB0aGlzIHRvIGhhdmUgVW50eXBlZFVzZTsgd2Ug
d2lsbCBoYW5kbGUgdGhpcyBieSBqdXN0IG1ha2luZworICAgICAgICAgICAgICAgIC8vIG5vbi1j
ZWxscyB0YWtlIHRoZSBkZWZhdWx0IGNhc2UuCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtODk3LDEzICs5MDMs
MTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAg
Y2FzZSBDaGVja0V4ZWN1dGFibGU6IHsKKyAgICAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOiB7CiAg
ICAgICAgICAgICBmaXhFZGdlPEZ1bmN0aW9uVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQ2hlY2tT
dHJ1Y3R1cmU6Ci0gICAgICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBDaGVj
a0NlbGw6CiAgICAgICAgIGNhc2UgQ2hlY2tIYXNJbnN0YW5jZToKICAgICAgICAgY2FzZSBDcmVh
dGVUaGlzOgogICAgICAgICBjYXNlIEdldEJ1dHRlcmZseTogewpAQCAtMTE0OSw2ICsxMTU1LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgogICAgICAgICBj
YXNlIENvdW50RXhlY3V0aW9uOgogICAgICAgICBjYXNlIEZvcmNlT1NSRXhpdDoKKyAgICAgICAg
Y2FzZSBDaGVja0JhZENlbGw6CiAgICAgICAgIGNhc2UgQ2hlY2tXYXRjaGRvZ1RpbWVyOgogICAg
ICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2Fs
OgpAQCAtMTE1OSw2ICsxMTY2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBUeXBlZEFycmF5
V2F0Y2hwb2ludDoKICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICBjYXNlIFpvbWJpZUhp
bnQ6CisgICAgICAgIGNhc2UgQm90dG9tVmFsdWU6CiAgICAgICAgICAgICBicmVhazsKICNlbHNl
CiAgICAgICAgIGRlZmF1bHQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAgR3JhcGg6OkdyYXBoKFZN
JiB2bSwgUGxhbiYgcGxhbiwgTG9uZ0xpdgogICAgICwgbV9mb3JtKExvYWRTdG9yZSkKICAgICAs
IG1fdW5pZmljYXRpb25TdGF0ZShMb2NhbGx5VW5pZmllZCkKICAgICAsIG1fcmVmQ291bnRTdGF0
ZShFdmVyeXRoaW5nSXNMaXZlKQorICAgICwgbV9zaG91bGRQcm9maWxlKGZhbHNlKQogewogICAg
IEFTU0VSVChtX3Byb2ZpbGVkQmxvY2spOwogICAgIApAQCAtMjIyLDI0ICsyMjMsMjMgQEAgdm9p
ZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAogICAgICAgICBvdXQucHJpbnQo
Y29tbWEsIGluQ29udGV4dCgqbm9kZS0+c3RydWN0dXJlKCksIGNvbnRleHQpKTsKICAgICBpZiAo
bm9kZS0+aGFzVHJhbnNpdGlvbigpKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsIHBvaW50ZXJE
dW1wSW5Db250ZXh0KG5vZGUtPnRyYW5zaXRpb24oKSwgY29udGV4dCkpOwotICAgIGlmIChub2Rl
LT5oYXNGdW5jdGlvbigpKSB7Ci0gICAgICAgIG91dC5wcmludChjb21tYSwgImZ1bmN0aW9uKCIs
IHBvaW50ZXJEdW1wKG5vZGUtPmZ1bmN0aW9uKCkpLCAiLCAiKTsKLSAgICAgICAgaWYgKG5vZGUt
PmZ1bmN0aW9uKCktPnZhbHVlKCkuaXNDZWxsKCkKLSAgICAgICAgICAgICYmIG5vZGUtPmZ1bmN0
aW9uKCktPnZhbHVlKCkuYXNDZWxsKCktPmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpIHsK
LSAgICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihu
b2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpLmFzQ2VsbCgpKTsKLSAgICAgICAgICAgIGlmIChmdW5j
dGlvbi0+aXNIb3N0RnVuY3Rpb24oKSkKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQoIjxob3N0
IGZ1bmN0aW9uPiIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG91dC5wcmlu
dChGdW5jdGlvbkV4ZWN1dGFibGVEdW1wKGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKSkpOwotICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgIG91dC5wcmludCgiPG5vdCBKU0Z1bmN0aW9uPiIpOwot
ICAgICAgICBvdXQucHJpbnQoIikiKTsKLSAgICB9Ci0gICAgaWYgKG5vZGUtPmhhc0V4ZWN1dGFi
bGUoKSkgewotICAgICAgICBpZiAobm9kZS0+ZXhlY3V0YWJsZSgpLT5pbmhlcml0cyhGdW5jdGlv
bkV4ZWN1dGFibGU6OmluZm8oKSkpCi0gICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJleGVj
dXRhYmxlKCIsIEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAoanNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJs
ZSo+KG5vZGUtPmV4ZWN1dGFibGUoKSkpLCAiKSIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBvdXQucHJpbnQoY29tbWEsICJleGVjdXRhYmxlKG5vdCBmdW5jdGlvbjogIiwgUmF3UG9pbnRl
cihub2RlLT5leGVjdXRhYmxlKCkpLCAiKSIpOworICAgIGlmIChub2RlLT5oYXNDZWxsT3BlcmFu
ZCgpKSB7CisgICAgICAgIGlmICghbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKSB8fCAhbm9k
ZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5pc0NlbGwoKSkKKyAgICAgICAgICAgIG91dC5wcmlu
dChjb21tYSwgImludmFsaWQgY2VsbCBvcGVyYW5kOiAiLCBub2RlLT5jZWxsT3BlcmFuZCgpLT52
YWx1ZSgpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIHBv
aW50ZXJEdW1wKG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuYXNDZWxsKCkpKTsKKyAgICAg
ICAgICAgIGlmIChub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpLmlzQ2VsbCgpKSB7CisgICAg
ICAgICAgICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFudChub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1
ZSgpLmFzQ2VsbCgpKTsKKyAgICAgICAgICAgICAgICBpZiAoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1
dGFibGUgPSB2YXJpYW50LmV4ZWN1dGFibGUoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAo
ZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG91
dC5wcmludChjb21tYSwgIjxob3N0IGZ1bmN0aW9uPiIpOworICAgICAgICAgICAgICAgICAgICBl
bHNlIGlmIChGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IGpzRHluYW1p
Y0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBvdXQucHJpbnQoY29tbWEsIEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAoZnVuY3Rpb25F
eGVjdXRhYmxlKSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG91dC5wcmludChjb21tYSwgIjxub24tZnVuY3Rpb24gZXhlY3V0YWJsZT4iKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAgICAgaWYg
KG5vZGUtPmhhc0Z1bmN0aW9uRGVjbEluZGV4KCkpIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0gbV9jb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChub2RlLT5mdW5jdGlv
bkRlY2xJbmRleCgpKTsKQEAgLTk4NSwxMCArOTg1LDYgQEAgdm9pZCBHcmFwaDo6dmlzaXRDaGls
ZHJlbihTbG90VmlzaXRvciYgdgogICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChu
b2RlSW5kZXgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkp
IHsKLSAgICAgICAgICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOgotICAgICAgICAgICAgICAgIHZp
c2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRSZWFkT25seVBvaW50ZXIobm9kZS0+ZXhlY3V0YWJsZSgp
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
IGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
bm9kZS0+c3RydWN0dXJlU2V0KCkuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgICAgICAgICB2
aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlQb2ludGVyKG5vZGUtPnN0cnVjdHVyZVNl
dCgpW2ldKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9u
IDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzYyLDYgKzc2Miw3IEBAIHB1YmxpYzoKICAgICBHcmFwaEZvcm0gbV9mb3Jt
OwogICAgIFVuaWZpY2F0aW9uU3RhdGUgbV91bmlmaWNhdGlvblN0YXRlOwogICAgIFJlZkNvdW50
U3RhdGUgbV9yZWZDb3VudFN0YXRlOworICAgIGJvb2wgbV9zaG91bGRQcm9maWxlOwogcHJpdmF0
ZToKICAgICAKICAgICB2b2lkIGhhbmRsZVN1Y2Nlc3NvcihWZWN0b3I8QmFzaWNCbG9jayosIDE2
PiYgd29ya2xpc3QsIEJhc2ljQmxvY2sqLCBCYXNpY0Jsb2NrKiBzdWNjZXNzb3IpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9u
IDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6bGlu
ayhMaW5rQnVmZmVyJiBsaW5rQgogICAgICAgICAgICAgdGFibGUuY3RpT2Zmc2V0c1tqXSA9IHRh
YmxlLmN0aURlZmF1bHQ7CiAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IGRhdGEuY2FzZXMuc2l6
ZSgpOyBqLS07KSB7CiAgICAgICAgICAgICBTd2l0Y2hDYXNlJiBteUNhc2UgPSBkYXRhLmNhc2Vz
W2pdOwotICAgICAgICAgICAgdGFibGUuY3RpT2Zmc2V0c1tteUNhc2UudmFsdWUuc3dpdGNoTG9v
a3VwVmFsdWUoKSAtIHRhYmxlLm1pbl0gPQorICAgICAgICAgICAgdGFibGUuY3RpT2Zmc2V0c1tt
eUNhc2UudmFsdWUuc3dpdGNoTG9va3VwVmFsdWUoZGF0YS5raW5kKSAtIHRhYmxlLm1pbl0gPQog
ICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX2Jsb2NrSGVhZHNbbXlDYXNl
LnRhcmdldC5ibG9jay0+aW5kZXhdKTsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCShyZXZpc2lvbiAxNzI4NTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTEzLDYgKzExMywzNiBAQCBUcmlTdGF0ZSBMYXp5SlNWYWx1ZTo6c3RyaWN0
RXF1YWwoY29uc3QgCiAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CiB9CiAKK3VpbnRwdHJfdCBM
YXp5SlNWYWx1ZTo6c3dpdGNoTG9va3VwVmFsdWUoU3dpdGNoS2luZCBraW5kKSBjb25zdAorewor
ICAgIC8vIE5CLiBOb3QgZXZlcnkga2luZCBvZiBKU1ZhbHVlIHdpbGwgYmUgYWJsZSB0byBnaXZl
IHlvdSBhIHN3aXRjaCBsb29rdXAKKyAgICAvLyB2YWx1ZSwgYW5kIHRoaXMgbWV0aG9kIHdpbGwg
YXNzZXJ0LCBvciBkbyBiYWQgdGhpbmdzLCBpZiB5b3UgdXNlIGl0CisgICAgLy8gZm9yIGEga2lu
ZCBvZiB2YWx1ZSB0aGF0IGNhbid0LgorICAgIHN3aXRjaCAobV9raW5kKSB7CisgICAgY2FzZSBL
bm93blZhbHVlOgorICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgY2FzZSBTd2l0Y2hJ
bW06CisgICAgICAgICAgICByZXR1cm4gdmFsdWUoKS0+dmFsdWUoKS5hc0ludDMyKCk7CisgICAg
ICAgIGNhc2UgU3dpdGNoQ2VsbDoKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90Pih2YWx1ZSgpLT52YWx1ZSgpLmFzQ2VsbCgpKTsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgfQorICAgIGNhc2UgU2luZ2xlQ2hhcmFjdGVyU3RyaW5nOgorICAgICAg
ICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgY2FzZSBTd2l0Y2hDaGFyOgorICAgICAgICAgICAg
cmV0dXJuIGNoYXJhY3RlcigpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9
CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCiB2b2lkIExhenlKU1ZhbHVlOjpkdW1wSW5Db250
ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAogewogICAg
IHN3aXRjaCAobV9raW5kKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xh
enlKU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdM
YXp5SlNWYWx1ZS5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0xhenlKU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSAi
REZHRnJvemVuVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAKQEAg
LTk1LDIxICs5Niw3IEBAIHB1YmxpYzoKICAgICAKICAgICBUcmlTdGF0ZSBzdHJpY3RFcXVhbChj
b25zdCBMYXp5SlNWYWx1ZSYgb3RoZXIpIGNvbnN0OwogICAgIAotICAgIHVuc2lnbmVkIHN3aXRj
aExvb2t1cFZhbHVlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIC8vIE5CLiBOb3QgZXZlcnkga2lu
ZCBvZiBKU1ZhbHVlIHdpbGwgYmUgYWJsZSB0byBnaXZlIHlvdSBhIHN3aXRjaCBsb29rdXAKLSAg
ICAgICAgLy8gdmFsdWUsIGFuZCB0aGlzIG1ldGhvZCB3aWxsIGFzc2VydCwgb3IgZG8gYmFkIHRo
aW5ncywgaWYgeW91IHVzZSBpdAotICAgICAgICAvLyBmb3IgYSBraW5kIG9mIHZhbHVlIHRoYXQg
Y2FuJ3QuCi0gICAgICAgIHN3aXRjaCAobV9raW5kKSB7Ci0gICAgICAgIGNhc2UgS25vd25WYWx1
ZToKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZSgpLT52YWx1ZSgpLmFzSW50MzIoKTsKLSAgICAg
ICAgY2FzZSBTaW5nbGVDaGFyYWN0ZXJTdHJpbmc6Ci0gICAgICAgICAgICByZXR1cm4gY2hhcmFj
dGVyKCk7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICB9CisgICAg
dWludHB0cl90IHN3aXRjaExvb2t1cFZhbHVlKFN3aXRjaEtpbmQga2luZCkgY29uc3Q7CiAgICAg
CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgdm9pZCBkdW1wSW5Db250
ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMyw5
IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBTd2kKICAgICBjYXNlIFN3
aXRjaFN0cmluZzoKICAgICAgICAgb3V0LnByaW50KCJTd2l0Y2hTdHJpbmciKTsKICAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgU3dpdGNoQ2VsbDoKKyAgICAgICAgb3V0LnByaW50KCJTd2l0Y2hD
ZWxsIik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lv
biAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU3LDEyICsxNTcsNiBAQCBzdHJ1Y3QgU3dpdGNoQ2FzZSB7CiAgICAgQnJh
bmNoVGFyZ2V0IHRhcmdldDsKIH07CiAKLWVudW0gU3dpdGNoS2luZCB7Ci0gICAgU3dpdGNoSW1t
LAotICAgIFN3aXRjaENoYXIsCi0gICAgU3dpdGNoU3RyaW5nCi19OwotCiBzdHJ1Y3QgU3dpdGNo
RGF0YSB7CiAgICAgLy8gSW5pdGlhbGl6ZXMgbW9zdCBmaWVsZHMgdG8gb2J2aW91c2x5IGludmFs
aWQgdmFsdWVzLiBBbnlvbmUKICAgICAvLyBjb25zdHJ1Y3RpbmcgdGhpcyBzaG91bGQgbWFrZSBz
dXJlIHRvIGluaXRpYWxpemUgZXZlcnl0aGluZyB0aGV5CkBAIC0xODUsNiArMTc5LDcgQEAgc3Ry
dWN0IFN3aXRjaERhdGEgewogLy8gZGlzdGluZ3Vpc2hlcyBhbiBpbW1lZGlhdGUgdmFsdWUgKHR5
cGljYWxseSBhbiBpbmRleCBpbnRvIGEgQ29kZUJsb2NrIGRhdGEgc3RydWN0dXJlIC0gCiAvLyBh
IGNvbnN0YW50IGluZGV4LCBhcmd1bWVudCwgb3IgaWRlbnRpZmllcikgZnJvbSBhIE5vZGUqLgog
c3RydWN0IE9wSW5mbyB7CisgICAgT3BJbmZvKCkgOiBtX3ZhbHVlKDApIHsgfQogICAgIGV4cGxp
Y2l0IE9wSW5mbyhpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90
Pih2YWx1ZSkpIHsgfQogICAgIGV4cGxpY2l0IE9wSW5mbyh1aW50MzJfdCB2YWx1ZSkgOiBtX3Zh
bHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KICNpZiBPUyhEQVJXSU4pIHx8
IFVTRShKU1ZBTFVFNjQpCkBAIC0xMDQ0LDkgKzEwMzksMTEgQEAgc3RydWN0IE5vZGUgewogICAg
ICAgICBtX29wSW5mbzIgPSBwcmVkaWN0aW9uOwogICAgIH0KICAgICAKLSAgICBib29sIGNhbkJl
S25vd25GdW5jdGlvbigpCisgICAgYm9vbCBoYXNDZWxsT3BlcmFuZCgpCiAgICAgewogICAgICAg
ICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9p
bnQ6CisgICAgICAgIGNhc2UgQ2hlY2tDZWxsOgogICAgICAgICBjYXNlIE5hdGl2ZUNvbnN0cnVj
dDoKICAgICAgICAgY2FzZSBOYXRpdmVDYWxsOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC0xMDU1LDU0ICsxMDUyLDE2IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgfQogICAgIH0KIAot
ICAgIGJvb2wgaGFzS25vd25GdW5jdGlvbigpCi0gICAgewotICAgICAgICBzd2l0Y2ggKG9wKCkp
IHsKLSAgICAgICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6Ci0gICAgICAgIGNhc2UgTmF0aXZlQ2Fs
bDoKLSAgICAgICAgICAgIHJldHVybiAoYm9vbCltX29wSW5mbzsKLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBK
U0Z1bmN0aW9uKiBrbm93bkZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjYW5CZUtu
b3duRnVuY3Rpb24oKSk7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNGdW5jdGlvbio+
KG1fb3BJbmZvKTsKLSAgICB9Ci0KLSAgICB2b2lkIGdpdmVLbm93bkZ1bmN0aW9uKEpTRnVuY3Rp
b24qIGNhbGxEYXRhKSAKKyAgICBGcm96ZW5WYWx1ZSogY2VsbE9wZXJhbmQoKQogICAgIHsKLSAg
ICAgICAgQVNTRVJUKGNhbkJlS25vd25GdW5jdGlvbigpKTsKLSAgICAgICAgbV9vcEluZm8gPSBi
aXR3aXNlX2Nhc3Q8dWludHB0cl90PihjYWxsRGF0YSk7Ci0gICAgfQotCi0gICAgYm9vbCBoYXNG
dW5jdGlvbigpCi0gICAgewotICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKLSAgICAgICAgY2FzZSBD
aGVja0Z1bmN0aW9uOgotICAgICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDoK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgRnJvemVuVmFsdWUqIGZ1bmN0
aW9uKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChoYXNGdW5jdGlvbigpKTsKKyAgICAgICAgQVNT
RVJUKGhhc0NlbGxPcGVyYW5kKCkpOwogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxG
cm96ZW5WYWx1ZSo+KG1fb3BJbmZvKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBoYXNFeGVjdXRh
YmxlKCkKKyAgICB2b2lkIHNldENlbGxPcGVyYW5kKEZyb3plblZhbHVlKiB2YWx1ZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBvcCgpID09IENoZWNrRXhlY3V0YWJsZTsKLSAgICB9Ci0gICAgCi0g
ICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGpz
Q2FzdDxFeGVjdXRhYmxlQmFzZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4obV9vcEluZm8p
KTsKKyAgICAgICAgQVNTRVJUKGhhc0NlbGxPcGVyYW5kKCkpOworICAgICAgICBtX29wSW5mbyA9
IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBo
YXNWYXJpYWJsZVdhdGNocG9pbnRTZXQoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZVR5cGUuaAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFB1dEJ5SWRGbHVzaCwgTm9k
ZU11c3RHZW5lcmF0ZSB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAog
ICAgIG1hY3JvKFB1dEJ5SWREaXJlY3QsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNX
b3JsZCkgXAogICAgIG1hY3JvKENoZWNrU3RydWN0dXJlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCi0g
ICAgbWFjcm8oQ2hlY2tFeGVjdXRhYmxlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8o
R2V0RXhlY3V0YWJsZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUHV0U3RydWN0dXJlLCBO
b2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UsIE5v
ZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0U3RvcmFnZSkgXAogICAgIG1hY3JvKFJlYWxsb2Nh
dGVQcm9wZXJ0eVN0b3JhZ2UsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0U3RvcmFnZSkg
XApAQCAtMTg1LDcgKzE4NSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAg
ICBtYWNybyhWYXJpYWJsZVdhdGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhWYXJJbmplY3Rpb25XYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
RnVuY3Rpb25SZWVudHJ5V2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAotICAgIG1hY3Jv
KENoZWNrRnVuY3Rpb24sIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhDaGVja0NlbGws
IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhDaGVja0JhZENlbGwsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKICAgICBtYWNybyhBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQsIE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja0luQm91bmRzLCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgXApAQCAtMjg2LDYgKzI4NywxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAgICAgLyogZGlmZmVyZW50IGNvbXBpbGVyLiAqL1wKICAgICBtYWNybyhGb3JjZU9TUkV4
aXQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBcCisgICAgLyogVmVuZHMgYSBib3R0b20gSlMg
dmFsdWUuIEl0IGlzIGludmFsaWQgdG8gZXZlciBleGVjdXRlIHRoaXMuIFVzZWZ1bCBmb3IgY2Fz
ZXMgKi9cCisgICAgLyogd2hlcmUgd2Uga25vdyB0aGF0IHdlIHdvdWxkIGhhdmUgZXhpdGVkIGJ1
dCB3ZSdkIGxpa2UgdG8gc3RpbGwgdHJhY2sgdGhlIGNvbnRyb2wgKi9cCisgICAgLyogZmxvdy4g
Ki9cCisgICAgbWFjcm8oQm90dG9tVmFsdWUsIE5vZGVSZXN1bHRKUykgXAorICAgIFwKICAgICAv
KiBDaGVja3MgdGhlIHdhdGNoZG9nIHRpbWVyLiBJZiB0aGUgdGltZXIgaGFzIGZpcmVkLCB3ZSBP
U1IgZXhpdCB0byB0aGUgKi8gXAogICAgIC8qIGJhc2VsaW5lIEpJVCB0byByZWRvIHRoZSB3YXRj
aGRvZyB0aW1lciBjaGVjaywgYW5kIHNlcnZpY2UgdGhlIHRpbWVyLiAqLyBcCiAgICAgbWFjcm8o
Q2hlY2tXYXRjaGRvZ1RpbWVyLCBOb2RlTXVzdEdlbmVyYXRlKSBcCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6
YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTkyLDggKzkyLDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PmNoaWxkcmVuLnJlbW92ZUVkZ2UoaS0tKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHko
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5v
ZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNv
bnZlcnRUb0NoZWNrKCk7CiAgICAgICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21SZW1vdmFsUGhhc2UuY3BwCShyZXZpc2lv
biAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21SZW1vdmFs
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNiArMTI1LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgICAgICAgICB9CkBAIC0xNDIsNiArMTQzLDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTQ5LDggKzE1MSwxMCBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBjYXNlIEhhcmRQaGFudG9tOiB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZHJlbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9h
bGxvY2F0b3IuZnJlZShub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw3ICsx
OTYsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIAotICAgICAgICBjYXNlIEdldEdldHRlclNldHRlckJ5T2Zmc2V0OiB7CisgICAgICAgIGNh
c2UgR2V0R2V0dGVyU2V0dGVyQnlPZmZzZXQ6CisgICAgICAgIGNhc2UgR2V0RXhlY3V0YWJsZTog
ewogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNDZWxsT3RoZXIpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTY0Miw4ICs2NDMsOCBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIEZvcmNlT1NSRXhpdDoKICAgICAgICAgY2FzZSBTZXRBcmd1bWVudDoK
ICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKLSAgICAgICAgY2FzZSBDaGVja0V4ZWN1dGFi
bGU6Ci0gICAgICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBDaGVja0NlbGw6
CisgICAgICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgICAgICBjYXNlIFB1dFN0cnVjdHVyZToK
ICAgICAgICAgY2FzZSBUZWFyT2ZmQWN0aXZhdGlvbjoKICAgICAgICAgY2FzZSBUZWFyT2ZmQXJn
dW1lbnRzOgpAQCAtNjY1LDYgKzY2NiwxMCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFpvbWJp
ZUhpbnQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAorICAgICAgICAvLyBUaGlz
IGdldHMgaWdub3JlZCBiZWNhdXNlIGl0IG9ubHkgcHJldGVuZHMgdG8gcHJvZHVjZSBhIHZhbHVl
LgorICAgICAgICBjYXNlIEJvdHRvbVZhbHVlOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAKICAgICAgICAgLy8gVGhpcyBnZXRzIGlnbm9yZWQgYmVjYXVzZSBpdCBhbHJlYWR5IGhh
cyBhIHByZWRpY3Rpb24uCiAgICAgICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAgICAg
ICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSw3IEBA
IGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIFB1dEJ5
SWRGbHVzaDoKICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVy
ZToKLSAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToKKyAgICBjYXNlIEdldEV4ZWN1dGFibGU6CiAg
ICAgY2FzZSBHZXRCdXR0ZXJmbHk6CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgQXJy
YXlpZnk6CkBAIC0xNzQsNyArMTc0LDggQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3Rh
dGVUeXBlJiBzdAogICAgIGNhc2UgUHV0R2xvYmFsVmFyOgogICAgIGNhc2UgVmFyaWFibGVXYXRj
aHBvaW50OgogICAgIGNhc2UgVmFySW5qZWN0aW9uV2F0Y2hwb2ludDoKLSAgICBjYXNlIENoZWNr
RnVuY3Rpb246CisgICAgY2FzZSBDaGVja0NlbGw6CisgICAgY2FzZSBDaGVja0JhZENlbGw6CiAg
ICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBSZWdFeHBFeGVj
OgogICAgIGNhc2UgUmVnRXhwVGVzdDoKQEAgLTI3Myw2ICsyNzQsMTEgQEAgYm9vbCBzYWZlVG9F
eGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0Ogog
ICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFRPRE86IGFkZCBhIGNoZWNrIGZvciBhbHJlYWR5IGNo
ZWNrZWQuICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNzY5CiAK
KyAgICBjYXNlIEJvdHRvbVZhbHVlOgorICAgICAgICAvLyBJZiBpbiBkb3VidCwgYXNzdW1lIHRo
YXQgdGhpcyBpc24ndCBzYWZlIHRvIGV4ZWN1dGUsIGp1c3QgYmVjYXVzZSB3ZSBoYXZlIG5vIHdh
eSBvZgorICAgICAgICAvLyBjb21waWxpbmcgdGhpcyBub2RlLgorICAgICAgICByZXR1cm4gZmFs
c2U7CisKICAgICBjYXNlIEdldEJ5VmFsOgogICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3Rv
cmFnZToKICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAx
NzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODksNiArNjg5LDEzIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKIAogICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmln
aW4obm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAKKyAgICBDYWxsTGlua0luZm8qIGluZm8g
PSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7CisKKyAgICBpZiAobV9qaXQu
Z3JhcGgoKS5tX3Nob3VsZFByb2ZpbGUgJiYgIW1fc3RhdGUuZm9yTm9kZShjYWxsZWVFZGdlKS5t
X3ZhbHVlKSB7CisgICAgICAgIG1faml0LnZtKCkuY2FsbEVkZ2VMb2ctPmVtaXRMb2dDb2RlKAor
ICAgICAgICAgICAgbV9qaXQsIGNhbGxMaW5rSW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBjYWxsZWUu
anNWYWx1ZVJlZ3MoKSk7CisgICAgfQorICAgIAogICAgIHNsb3dQYXRoLmFwcGVuZChicmFuY2hO
b3RDZWxsKGNhbGxlZS5qc1ZhbHVlUmVncygpKSk7CiAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0
LmJyYW5jaFB0cldpdGhQYXRjaChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxlZVBheWxv
YWRHUFIsIHRhcmdldFRvQ2hlY2spKTsKICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGNhbGxlZVBheWxvYWRHUFIsIE9CSkVDVF9PRkZTRVRPRihKU0Z1bmN0aW9uLCBt
X3Njb3BlKSksIHJlc3VsdFBheWxvYWRHUFIpOwpAQCAtNzEzLDcgKzcyMCw2IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgbV9qaXQubW92ZShjYWxs
ZWVQYXlsb2FkR1BSLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgIG1faml0Lm1vdmUoY2FsbGVl
VGFnR1BSLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgfQotICAgIENhbGxMaW5rSW5mbyogaW5mbyA9
IG1faml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKICAgICBtX2ppdC5tb3ZlKE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGluZm8pLCBHUFJJbmZvOjpyZWdUMik7CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgc2xvd0NhbGwgPSBtX2ppdC5uZWFyQ2FsbCgpOwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJ
KHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyNiw3ICs2MjYsNiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTWlzY1N0cmljdEVxCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiB7Ci0KICAgICBib29sIGlzQ2FsbCA9IG5vZGUtPm9wKCkg
PT0gQ2FsbDsKICAgICBpZiAoIWlzQ2FsbCkKICAgICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFw
aCgpLCBub2RlLCBub2RlLT5vcCgpID09IENvbnN0cnVjdCk7CkBAIC02NzAsNiArNjY5LDE1IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKIAogICAgIG1faml0LmVt
aXRTdG9yZUNvZGVPcmlnaW4obm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAKKyAgICBDYWxs
TGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0lu
Zm8oKTsKKyAgICAKKyAgICBpZiAoQ2FsbEVkZ2VMb2c6OmlzRW5hYmxlZCgpCisgICAgICAgICYm
IG1faml0LmdyYXBoKCkubV9zaG91bGRQcm9maWxlCisgICAgICAgICYmICFtX3N0YXRlLmZvck5v
ZGUoY2FsbGVlRWRnZSkubV92YWx1ZSkgeworICAgICAgICBtX2ppdC52bSgpLT5jYWxsRWRnZUxv
Zy0+ZW1pdExvZ0NvZGUoCisgICAgICAgICAgICBtX2ppdCwgY2FsbExpbmtJbmZvLT5jYWxsRWRn
ZVByb2ZpbGUsIEpTVmFsdWVSZWdzKGNhbGxlZUdQUikpOworICAgIH0KKwogICAgIHNsb3dQYXRo
ID0gbV9qaXQuYnJhbmNoUHRyV2l0aFBhdGNoKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgY2Fs
bGVlR1BSLCB0YXJnZXRUb0NoZWNrLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigwKSk7
CiAKICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNhbGxlZUdQUiwg
T0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rpb24sIG1fc2NvcGUpKSwgcmVzdWx0R1BSKTsKQEAgLTY4
Miw3ICs2OTAsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAg
ICAgc2xvd1BhdGgubGluaygmbV9qaXQpOwogICAgIAogICAgIG1faml0Lm1vdmUoY2FsbGVlR1BS
LCBHUFJJbmZvOjpyZWdUMCk7IC8vIENhbGxlZSBuZWVkcyB0byBiZSBpbiByZWdUMAotICAgIENh
bGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5r
SW5mbygpOwogICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2Fs
bExpbmtJbmZvKSwgR1BSSW5mbzo6cmVnVDIpOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8gYmUgaW4g
cmVnVDIKICAgICBKSVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7
CiAgICAgCkBAIC0zNzY4LDE4ICszNzc1LDIxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUdldEFycmF5TGVuZ3RoKG5vZGUpOwogICAg
ICAgICBicmVhazsKICAgICAgICAgCi0gICAgY2FzZSBDaGVja0Z1bmN0aW9uOiB7Ci0gICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZ1bmN0aW9uKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRGdW5jdGlvbiwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwoZnVuY3Rpb24uZ3ByKCkpLCBub2RlLT5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoV2Vha1B0
cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGZ1bmN0aW9uLmdwcigpLCBub2RlLT5mdW5jdGlvbigp
LT52YWx1ZSgpLmFzQ2VsbCgpKSk7CisgICAgY2FzZSBDaGVja0NlbGw6IHsKKyAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgY2VsbCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soQmFkQ2VsbCwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbC5n
cHIoKSksIG5vZGUtPmNoaWxkMSgpLCBtX2ppdC5icmFuY2hXZWFrUHRyKEpJVENvbXBpbGVyOjpO
b3RFcXVhbCwgY2VsbC5ncHIoKSwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5hc0NlbGwo
KSkpOwogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
ICAgICAKLSAgICBjYXNlIENoZWNrRXhlY3V0YWJsZTogeworICAgIGNhc2UgR2V0RXhlY3V0YWJs
ZTogewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmdW5jdGlvbih0aGlzLCBub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgIHNwZWN1bGF0ZUNlbGxUeXBlKG5vZGUtPmNoaWxkMSgpLCBmdW5j
dGlvbi5ncHIoKSwgU3BlY0Z1bmN0aW9uLCBKU0Z1bmN0aW9uVHlwZSk7Ci0gICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkRXhlY3V0YWJsZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoZnVu
Y3Rpb24uZ3ByKCkpLCBub2RlLT5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21w
aWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Z1
bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIG5vZGUtPmV4ZWN1dGFibGUoKSkpOwotICAg
ICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBS
ZXVzZSwgZnVuY3Rpb24pOworICAgICAgICBHUFJSZWcgZnVuY3Rpb25HUFIgPSBmdW5jdGlvbi5n
cHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAg
c3BlY3VsYXRlQ2VsbFR5cGUobm9kZS0+Y2hpbGQxKCksIGZ1bmN0aW9uR1BSLCBTcGVjRnVuY3Rp
b24sIEpTRnVuY3Rpb25UeXBlKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6
QWRkcmVzcyhmdW5jdGlvbkdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCBy
ZXN1bHRHUFIpOworICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC00OTcwLDcgKzQ5ODAsOSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0
OgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKICAgICBjYXNlIEZpYXRJbnQ1MjoKLSAgICAg
ICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJVbmV4cGVjdGVkIEZUTCBub2RlIik7
CisgICAgY2FzZSBDaGVja0JhZENlbGw6CisgICAgY2FzZSBCb3R0b21WYWx1ZToKKyAgICAgICAg
REZHX0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJVbmV4cGVjdGVkIG5vZGUiKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUz
NTQsNiArNTM1NCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoKE5vZGUqIG5v
CiAgICAgY2FzZSBTd2l0Y2hTdHJpbmc6IHsKICAgICAgICAgZW1pdFN3aXRjaFN0cmluZyhub2Rl
LCBkYXRhKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNlIFN3aXRjaENlbGw6IHsK
KyAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJCYWQgc3dpdGNoIGtpbmQi
KTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0gfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJl
Z2lzdHJhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTcyODU5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDEwICs2Miw2IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgICAgICBj
YXNlIENoZWNrRXhlY3V0YWJsZToKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1
cmUobm9kZS0+ZXhlY3V0YWJsZSgpLT5zdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1
Y3R1cmU6CiAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlcyhub2RlLT5zdHJ1
Y3R1cmVTZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9u
UGhhc2UuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2
ICs2MSw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFPcHRpb25zOjplbmFibGVPU1JFbnRyeVRv
RlRMKCkpCiAgICAgICAgICAgICBsZXZlbCA9IEZUTDo6Q2FuQ29tcGlsZTsKICAgICAgICAgCisg
ICAgICAgIG1fZ3JhcGgubV9zaG91bGRQcm9maWxlID0gdHJ1ZTsKKyAgICAgICAgCiAgICAgICAg
IEluc2VydGlvblNldCBpbnNlcnRpb25TZXQobV9ncmFwaCk7CiAgICAgICAgIGZvciAoQmxvY2tJ
bmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewog
ICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHJldmlz
aW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsNyArMjAwLDggQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW1heUV4aXQobV9ncmFwaCwg
bm9kZSkgfHwgbm9kZS0+b3JpZ2luLmZvckV4aXQuaXNTZXQoKSk7CiAgICAgICAgICAgICAgICAg
VkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+aGFzU3RydWN0dXJlKCkgfHwgISFub2RlLT5zdHJ1Y3R1
cmUoKSk7Ci0gICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+aGFzRnVuY3Rp
b24oKSB8fCBub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpLmlzRnVuY3Rpb24oKSk7CisgICAgICAg
ICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+aGFzQ2VsbE9wZXJhbmQoKSB8fCBub2Rl
LT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpLmlzQ2VsbCgpKTsKKyAgICAgICAgICAgICAgICBWQUxJ
REFURSgobm9kZSksICFub2RlLT5oYXNDZWxsT3BlcmFuZCgpIHx8ICEhbm9kZS0+Y2VsbE9wZXJh
bmQoKS0+dmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmICgh
KG5vZGUtPmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncykpIHsKICAgICAgICAgICAgICAgICAgICAg
aWYgKCFub2RlLT5jaGlsZDIoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
V2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24g
MTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXYXRjaHBvaW50Q29sbGVj
dGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTE0LDcgKzExNCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEFsbG9jYXRpb25Q
cm9maWxlV2F0Y2hwb2ludDoKLSAgICAgICAgICAgIGFkZExhemlseShqc0Nhc3Q8SlNGdW5jdGlv
bio+KG1fbm9kZS0+ZnVuY3Rpb24oKS0+dmFsdWUoKSktPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hw
b2ludFNldCgpKTsKKyAgICAgICAgICAgIGFkZExhemlseShqc0Nhc3Q8SlNGdW5jdGlvbio+KG1f
bm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKSktPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2lu
dFNldCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ug
VmFyaWFibGVXYXRjaHBvaW50OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyAr
MTA0LDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNh
c2UgUHV0Q2xvc3VyZVZhcjoKICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50OgogICAgIGNhc2Ug
U3RyaW5nQ2hhckF0OgotICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKKyAgICBjYXNlIENoZWNrQ2Vs
bDoKKyAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAg
ICAgY2FzZSBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAgICBjYXNlIFJlYWxsb2NhdGVQcm9w
ZXJ0eVN0b3JhZ2U6CkBAIC0xMjYsNyArMTI3LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBj
YW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBj
YXNlIENoZWNrOgogICAgIGNhc2UgQ291bnRFeGVjdXRpb246Ci0gICAgY2FzZSBDaGVja0V4ZWN1
dGFibGU6CisgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgogICAgIGNhc2UgR2V0U2NvcGU6CiAgICAg
Y2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBDaGVja0FyZ3VtZW50
c05vdENyZWF0ZWQ6CkBAIC0xNjYsNiArMTY3LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBj
YW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgR2V0R2VuZXJpY1Byb3BlcnR5RW51bWVyYXRvcjoK
ICAgICBjYXNlIEdldEVudW1lcmF0b3JQbmFtZToKICAgICBjYXNlIFRvSW5kZXhTdHJpbmc6Cisg
ICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICAgICAgLy8gVGhlc2UgYXJlIE9LLgogICAgICAgICBi
cmVhazsKICAgICBjYXNlIElkZW50aXR5OgpAQCAtMzI2LDYgKzMyOCw3IEBAIGlubGluZSBDYXBh
YmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICAgICAgc3dpdGNoIChub2RlLT5zd2l0
Y2hEYXRhKCktPmtpbmQpIHsKICAgICAgICAgY2FzZSBTd2l0Y2hJbW06CiAgICAgICAgIGNhc2Ug
U3dpdGNoQ2hhcjoKKyAgICAgICAgY2FzZSBTd2l0Y2hDZWxsOgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3Bw
CShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNiBAQCBOT19SRVRVUk5f
RFVFX1RPX0NSQVNIIHN0YXRpYyB2b2lkIGZ0bFVuCiBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHN0
YXRpYyB2b2lkIGZ0bFVucmVhY2hhYmxlKAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBCbG9j
a0luZGV4IGJsb2NrSW5kZXgsIHVuc2lnbmVkIG5vZGVJbmRleCkKIHsKLSAgICAKICAgICBkYXRh
TG9nKCJDcmFzaGluZyBpbiB0aG91Z2h0LXRvLWJlLXVucmVhY2hhYmxlIEZUTC1nZW5lcmF0ZWQg
Y29kZSBmb3IgIiwgcG9pbnRlckR1bXAoY29kZUJsb2NrKSwgIiBhdCBiYXNpYyBibG9jayAjIiwg
YmxvY2tJbmRleCk7CiAgICAgaWYgKG5vZGVJbmRleCAhPSBVSU5UX01BWCkKICAgICAgICAgZGF0
YUxvZygiLCBub2RlIEAiLCBub2RlSW5kZXgpOwpAQCAtMTUzLDExICsxNTIsMTcgQEAgcHVibGlj
OgogICAgICAgICBmb3IgKHVuc2lnbmVkIGJsb2NrSW5kZXggPSBkZXB0aEZpcnN0LnNpemUoKTsg
YmxvY2tJbmRleC0tOyApIHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gZGVwdGhG
aXJzdFtibG9ja0luZGV4XTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4ID0g
YmxvY2stPnNpemUoKTsgbm9kZUluZGV4LS07ICkgewotICAgICAgICAgICAgICAgIE5vZGUqIG1f
bm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOwotICAgICAgICAgICAgICAgIGlmIChtX25vZGUt
Pmhhc0tub3duRnVuY3Rpb24oKSkgeworICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9j
ay0+YXQobm9kZUluZGV4KTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsK
KyAgICAgICAgICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6CisgICAgICAgICAgICAgICAgY2FzZSBO
YXRpdmVDb25zdHJ1Y3Q6IHsKICAgICAgICAgICAgICAgICAgICAgaW50IG51bUFyZ3MgPSBtX25v
ZGUtPm51bUNoaWxkcmVuKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChudW1BcmdzID4gbWF4
TnVtYmVyT2ZBcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgICAgICAgICBtYXhOdW1iZXJPZkFy
Z3VtZW50cyA9IG51bUFyZ3M7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ2
OCwxMSArNDczLDE0IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAg
ICAgICAgICAgICBjb21waWxlQ2hlY2tTdHJ1Y3R1cmUoKTsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIENoZWNrRnVuY3Rpb246Ci0gICAgICAgICAgICBjb21waWxlQ2hlY2tGdW5j
dGlvbigpOworICAgICAgICBjYXNlIENoZWNrQ2VsbDoKKyAgICAgICAgICAgIGNvbXBpbGVDaGVj
a0NlbGwoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENoZWNrQmFkQ2VsbDoK
KyAgICAgICAgICAgIGNvbXBpbGVDaGVja0JhZENlbGwoKTsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToKLSAgICAgICAgICAgIGNvbXBpbGVDaGVja0V4
ZWN1dGFibGUoKTsKKyAgICAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgorICAgICAgICAgICAgY29t
cGlsZUdldEV4ZWN1dGFibGUoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFy
cmF5aWZ5VG9TdHJ1Y3R1cmU6CiAgICAgICAgICAgICBjb21waWxlQXJyYXlpZnlUb1N0cnVjdHVy
ZSgpOwpAQCAtMTc0MywyNiArMTc1MSwyNSBAQCBwcml2YXRlOgogICAgICAgICBtX291dC5hcHBl
bmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21w
aWxlQ2hlY2tGdW5jdGlvbigpCisgICAgdm9pZCBjb21waWxlQ2hlY2tDZWxsKCkKICAgICB7CiAg
ICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
CiAgICAgICAgIHNwZWN1bGF0ZSgKLSAgICAgICAgICAgIEJhZEZ1bmN0aW9uLCBqc1ZhbHVlVmFs
dWUoY2VsbCksIG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpLAotICAgICAgICAgICAgbV9vdXQubm90
RXF1YWwoY2VsbCwgd2Vha1BvaW50ZXIobV9ub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpLmFzQ2Vs
bCgpKSkpOworICAgICAgICAgICAgQmFkQ2VsbCwganNWYWx1ZVZhbHVlKGNlbGwpLCBtX25vZGUt
PmNoaWxkMSgpLm5vZGUoKSwKKyAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKGNlbGwsIHdlYWtQ
b2ludGVyKG1fbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5hc0NlbGwoKSkpKTsKICAgICB9
CiAgICAgCi0gICAgdm9pZCBjb21waWxlQ2hlY2tFeGVjdXRhYmxlKCkKKyAgICB2b2lkIGNvbXBp
bGVDaGVja0JhZENlbGwoKQorICAgIHsKKyAgICAgICAgdGVybWluYXRlKEJhZENlbGwpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGNvbXBpbGVHZXRFeGVjdXRhYmxlKCkKICAgICB7CiAgICAgICAg
IExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgCiAgICAg
ICAgIHNwZWN1bGF0ZUZ1bmN0aW9uKG1fbm9kZS0+Y2hpbGQxKCksIGNlbGwpOwotICAgICAgICAK
LSAgICAgICAgc3BlY3VsYXRlKAotICAgICAgICAgICAgQmFkRXhlY3V0YWJsZSwganNWYWx1ZVZh
bHVlKGNlbGwpLCBtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSwKLSAgICAgICAgICAgIG1fb3V0Lm5v
dEVxdWFsKAotICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0Z1
bmN0aW9uX2V4ZWN1dGFibGUpLAotICAgICAgICAgICAgICAgIHdlYWtQb2ludGVyKG1fbm9kZS0+
ZXhlY3V0YWJsZSgpKSkpOworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIoY2VsbCwg
bV9oZWFwcy5KU0Z1bmN0aW9uX2V4ZWN1dGFibGUpKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBj
b21waWxlQXJyYXlpZnlUb1N0cnVjdHVyZSgpCkBAIC0zNjczLDkgKzM2ODAsNyBAQCBwcml2YXRl
OgogICAgICAgICBpbnQgbnVtUGFzc2VkQXJncyA9IG1fbm9kZS0+bnVtQ2hpbGRyZW4oKSAtIDE7
CiAgICAgICAgIGludCBudW1BcmdzID0gbnVtUGFzc2VkQXJncyArIGR1bW15VGhpc0FyZ3VtZW50
OwogCi0gICAgICAgIEFTU0VSVChtX25vZGUtPmhhc0tub3duRnVuY3Rpb24oKSk7Ci0KLSAgICAg
ICAgSlNGdW5jdGlvbioga25vd25GdW5jdGlvbiA9IG1fbm9kZS0+a25vd25GdW5jdGlvbigpOwor
ICAgICAgICBKU0Z1bmN0aW9uKiBrbm93bkZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPiht
X25vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuYXNDZWxsKCkpOwogICAgICAgICBOYXRpdmVG
dW5jdGlvbiBmdW5jdGlvbiA9IGtub3duRnVuY3Rpb24tPm5hdGl2ZUZ1bmN0aW9uKCk7CiAKICAg
ICAgICAgRGxfaW5mbyBpbmZvOwpAQCAtMzkxOCwxMCArMzkyMywzNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBjYXNlIFN3aXRj
aFN0cmluZzoKKyAgICAgICAgY2FzZSBTd2l0Y2hTdHJpbmc6IHsKICAgICAgICAgICAgIERGR19D
UkFTSChtX2dyYXBoLCBtX25vZGUsICJVbmltcGxlbWVudGVkIik7Ci0gICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAg
IGNhc2UgU3dpdGNoQ2VsbDogeworICAgICAgICAgICAgTFZhbHVlIGNlbGw7CisgICAgICAgICAg
ICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgICAgICAgICBjYXNl
IENlbGxVc2U6IHsKKyAgICAgICAgICAgICAgICBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICAgICAgICAgIExW
YWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgY2VsbENhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIlN3aXRjaC9T
d2l0Y2hDZWxsIGNlbGwgY2FzZSIpKTsKKyAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCisg
ICAgICAgICAgICAgICAgICAgIGlzQ2VsbCh2YWx1ZSksIHVuc3VyZShjZWxsQ2FzZSksIHVuc3Vy
ZShsb3dCbG9jayhkYXRhLT5mYWxsVGhyb3VnaC5ibG9jaykpKTsKKyAgICAgICAgICAgICAgICBt
X291dC5hcHBlbmRUbyhjZWxsQ2FzZSk7CisgICAgICAgICAgICAgICAgY2VsbCA9IHZhbHVlOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwg
bV9ub2RlLCAiQmFkIHVzZSBraW5kIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBidWlsZFN3aXRjaChtX25vZGUtPnN3
aXRjaERhdGEoKSwgbV9vdXQuaW50UHRyLCBjZWxsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfSB9CiAgICAgICAgIAogICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAi
QmFkIHN3aXRjaCBraW5kIik7CiAgICAgfQpAQCAtNTE4Niw3ICs1MjE4LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgVmVjdG9yPFN3aXRjaENhc2U+IGNhc2VzOwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZGF0YS0+Y2FzZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGNhc2Vz
LmFwcGVuZChTd2l0Y2hDYXNlKAotICAgICAgICAgICAgICAgIGNvbnN0SW50KHR5cGUsIGRhdGEt
PmNhc2VzW2ldLnZhbHVlLnN3aXRjaExvb2t1cFZhbHVlKCkpLAorICAgICAgICAgICAgICAgIGNv
bnN0SW50KHR5cGUsIGRhdGEtPmNhc2VzW2ldLnZhbHVlLnN3aXRjaExvb2t1cFZhbHVlKGRhdGEt
PmtpbmQpKSwKICAgICAgICAgICAgICAgICBsb3dCbG9jayhkYXRhLT5jYXNlc1tpXS50YXJnZXQu
YmxvY2spLCBXZWlnaHQoZGF0YS0+Y2FzZXNbaV0udGFyZ2V0LmNvdW50KSkpOwogICAgICAgICB9
CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9u
IDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05ODQsNiArOTg0LDExIEBAIHZvaWQgSGVhcDo6Y29sbGVjdChIZWFwT3BlcmF0
aW9uIGNvbGxlY3QKICAgICAgICAgdm0oKS0+dHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dF
bnRyaWVzKEFTQ0lJTGl0ZXJhbCgiR0MiKSk7CiAgICAgfQogICAgIAorICAgIGlmICh2bSgpLT5j
YWxsRWRnZUxvZykgeworICAgICAgICBEZWZlckdDRm9yQVdoaWxlIGF3aGlsZSgqdGhpcyk7Cisg
ICAgICAgIHZtKCktPmNhbGxFZGdlTG9nLT5wcm9jZXNzTG9nKCk7CisgICAgfQorICAgIAogICAg
IFJFTEVBU0VfQVNTRVJUKCFtX2RlZmVycmFsRGVwdGgpOwogICAgIEFTU0VSVCh2bSgpLT5jdXJy
ZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLT5h
dG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgp
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAko
cmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsMjEgQEAgcHVibGljOgogI2VuZGlm
CiAgICAgfQogICAgIAorICAgIHZvaWQgbG9hZFZhbHVlKEFkZHJlc3MgYWRkcmVzcywgSlNWYWx1
ZVJlZ3MgcmVncykKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbG9hZDY0KGFk
ZHJlc3MsIHJlZ3MuZ3ByKCkpOworI2Vsc2UKKyAgICAgICAgaWYgKGFkZHJlc3MuYmFzZSA9PSBy
ZWdzLnBheWxvYWRHUFIoKSkgeworICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNl
dChUYWdPZmZzZXQpLCByZWdzLnRhZ0dQUigpKTsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNz
LndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCksIHJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoUGF5bG9hZE9m
ZnNldCksIHJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndp
dGhPZmZzZXQoVGFnT2Zmc2V0KSwgcmVncy50YWdHUFIoKSk7CisgICAgICAgIH0KKyNlbmRpZgor
ICAgIH0KKyAgICAKICAgICB2b2lkIG1vdmVUcnVzdGVkVmFsdWUoSlNWYWx1ZSB2YWx1ZSwgSlNW
YWx1ZVJlZ3MgcmVncykKICAgICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAkocmV2aXNpb24gMTcyODU5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAt
MTY2Niw2ICsxNjY2LDE1IEBAIHB1YmxpYzoKICAgICAgICAgbW92ZShhcmc0LCBHUFJJbmZvOjph
cmd1bWVudEdQUjMpOwogICAgIH0KICNlbmRpZgorICAgIAorICAgIHZvaWQgc2V0dXBBcmd1bWVu
dHMoSlNWYWx1ZVJlZ3MgYXJnMSkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAg
c2V0dXBBcmd1bWVudHMoYXJnMS5ncHIoKSk7CisjZWxzZQorICAgICAgICBzZXR1cEFyZ3VtZW50
cyhhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSk7CisjZW5kaWYKKyAgICB9CiAKICAg
ICB2b2lkIHNldHVwUmVzdWx0cyhHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QikKICAgICB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAkocmV2aXNpb24gMTcyODU5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTYw
LDYgKzYwLDggQEAgcHVibGljOgogICAgIEdQUlJlZyB0YWdHUFIoKSBjb25zdCB7IHJldHVybiBJ
bnZhbGlkR1BSUmVnOyB9CiAgICAgR1BSUmVnIHBheWxvYWRHUFIoKSBjb25zdCB7IHJldHVybiBt
X2dwcjsgfQogICAgIAorICAgIGJvb2wgdXNlcyhHUFJSZWcgZ3ByKSBjb25zdCB7IHJldHVybiBt
X2dwciA9PSBncHI7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByOwogfTsKQEAg
LTE2OSw2ICsxNzEsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0YWdHUFIoKTsKICAgICB9
CiAKKyAgICBib29sIHVzZXMoR1BSUmVnIGdwcikgY29uc3QgeyByZXR1cm4gbV90YWdHUFIgPT0g
Z3ByIHx8IG1fcGF5bG9hZEdQUiA9PSBncHI7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgaW50OF90
IG1fdGFnR1BSOwogICAgIGludDhfdCBtX3BheWxvYWRHUFI7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMwMCw2ICszMDAsMTMgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2Rl
SQogICAgIHN0b3JlMzIocmVnVDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpTU3Rh
Y2s6OkNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2Fk
T2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAgICAgc3RvcmUzMihyZWdUMSwg
QWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgSlNTdGFjazo6Q2FsbGVlICogc3RhdGljX2Nh
c3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFRhZ09mZnNldCAtIHNpemVvZihDYWxsZXJGcmFt
ZUFuZFBDKSkpOwogCisgICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENh
bGxMaW5rSW5mbygpOworCisgICAgaWYgKENhbGxFZGdlTG9nOjppc0VuYWJsZWQoKSAmJiBzaG91
bGRFbWl0UHJvZmlsaW5nKCkpIHsKKyAgICAgICAgbV92bS0+ZW5zdXJlQ2FsTEVkZ2VMb2coKS5l
bWl0TG9nQ29kZSgKKyAgICAgICAgICAgICp0aGlzLCBpbmZvLT5jYWxsRWRnZVByb2ZpbGUsIEpT
VmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkpOworICAgIH0KKwogICAgIGlmIChvcGNvZGVJRCA9PSBv
cF9jYWxsX2V2YWwpIHsKICAgICAgICAgY29tcGlsZUNhbGxFdmFsKGluc3RydWN0aW9uKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMzEzLDcgKzMyMCw2IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxs
KE9wY29kZUlEIG9wY29kZUkKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZSk7CiAKICAgICBBU1NF
UlQobV9jYWxsQ29tcGlsYXRpb25JbmZvLnNpemUoKSA9PSBjYWxsTGlua0luZm9JbmRleCk7Ci0g
ICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5mbygpOwog
ICAgIGluZm8tPmNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJRCk7
CiAgICAgaW5mby0+Y29kZU9yaWdpbiA9IENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCk7CiAg
ICAgaW5mby0+Y2FsbGVlR1BSID0gcmVnVDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENhbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQ2FsbC5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ2FsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMiw2ICsyMTIsMTEgQEAgdm9pZCBK
SVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoY2FsbGVlLCByZWdUMCk7IC8vIHJlZ1QwIGhvbGRzIGNhbGxlZS4KIAogICAgIHN0b3Jl
NjQocmVnVDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpTU3RhY2s6OkNhbGxlZSAq
IHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVB
bmRQQykpKTsKKyAgICAKKyAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2NvZGVCbG9jay0+YWRk
Q2FsbExpbmtJbmZvKCk7CisKKyAgICBpZiAoQ2FsbEVkZ2VMb2c6OmlzRW5hYmxlZCgpICYmIHNo
b3VsZEVtaXRQcm9maWxpbmcoKSkKKyAgICAgICAgbV92bS0+ZW5zdXJlQ2FsbEVkZ2VMb2coKS5l
bWl0TG9nQ29kZSgqdGhpcywgaW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBKU1ZhbHVlUmVncyhyZWdU
MCkpOwogCiAgICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCkgewogICAgICAgICBjb21w
aWxlQ2FsbEV2YWwoaW5zdHJ1Y3Rpb24pOwpAQCAtMjIzLDcgKzIyOCw2IEBAIHZvaWQgSklUOjpj
b21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZSk7
CiAKICAgICBBU1NFUlQobV9jYWxsQ29tcGlsYXRpb25JbmZvLnNpemUoKSA9PSBjYWxsTGlua0lu
Zm9JbmRleCk7Ci0gICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxM
aW5rSW5mbygpOwogICAgIGluZm8tPmNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZv
cihvcGNvZGVJRCk7CiAgICAgaW5mby0+Y29kZU9yaWdpbiA9IENvZGVPcmlnaW4obV9ieXRlY29k
ZU9mZnNldCk7CiAgICAgaW5mby0+Y2FsbGVlR1BSID0gcmVnVDA7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Nyw2
ICsxNjcsMTAgQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAgdihib29s
LCBlbmFibGVBY2Nlc3NJbmxpbmluZywgdHJ1ZSkgXAogICAgIHYoYm9vbCwgZW5hYmxlUG9seXZh
cmlhbnREZXZpcnR1YWxpemF0aW9uLCB0cnVlKSBcCiAgICAgdihib29sLCBlbmFibGVQb2x5bW9y
cGhpY0FjY2Vzc0lubGluaW5nLCB0cnVlKSBcCisgICAgdihib29sLCBlbmFibGVQb2x5bW9ycGhp
Y0NhbGxJbmxpbmluZywgdHJ1ZSkgXAorICAgIHYoYm9vbCwgY2FsbFN0YXR1c1Nob3VsZFVzZUNh
bGxFZGdlUHJvZmlsZSwgdHJ1ZSkgXAorICAgIHYoYm9vbCwgZW5hYmxlQ2FsbEVkZ2VQcm9maWxp
bmcsIHRydWUpIFwKKyAgICB2KHVuc2lnbmVkLCBmcmVxdWVudENhbGxUaHJlc2hvbGQsIDIpIFwK
ICAgICB2KGJvb2wsIG9wdGltaXplTmF0aXZlQ2FsbHMsIGZhbHNlKSBcCiAgICAgXAogICAgIHYo
Ym9vbCwgZW5hYmxlQ29uY3VycmVudEpJVCwgdHJ1ZSkgXApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzMsNiArMzczLDEzIEBAIFZN
KiYgVk06OnNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKQogICAgIHJldHVybiBzaGFyZWRJbnN0YW5j
ZTsKIH0KIAorQ2FsbEVkZ2VMb2cmIFZNOjplbnN1cmVDYWxsRWRnZUxvZygpCit7CisgICAgaWYg
KCFjYWxsRWRnZUxvZykKKyAgICAgICAgY2FsbEVkZ2VMb2cgPSBzdGQ6Om1ha2VfdW5pcXVlPENh
bGxFZGdlTG9nPigpOworICAgIHJldHVybiAqY2FsbEVkZ2VMb2c7Cit9CisKICNpZiBFTkFCTEUo
SklUKQogc3RhdGljIFRodW5rR2VuZXJhdG9yIHRodW5rR2VuZXJhdG9yRm9ySW50cmluc2ljKElu
dHJpbnNpYyBpbnRyaW5zaWMpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJ
KHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBBcml0eUNoZWNrRmFpbFJldHVyblRodW5rczsKICAgICBjbGFzcyBCdWlsdGluRXhlY3V0
YWJsZXM7CisgICAgY2xhc3MgQ2FsbEVkZ2VMb2c7CiAgICAgY2xhc3MgQ29kZUJsb2NrOwogICAg
IGNsYXNzIENvZGVDYWNoZTsKICAgICBjbGFzcyBDb21tb25JZGVudGlmaWVyczsKQEAgLTIzMyw2
ICsyMzQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAg
T3duUHRyPERGRzo6TG9uZ0xpdmVkU3RhdGU+IGRmZ1N0YXRlOwogI2VuZGlmIC8vIEVOQUJMRShE
RkdfSklUKQorICAgICAgICAKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxFZGdlTG9nPiBj
YWxsRWRnZUxvZzsKKyAgICAgICAgQ2FsbEVkZ2VMb2cmIGVuc3VyZUNhbGxFZGdlTG9nKCk7CiAK
ICAgICAgICAgVk1UeXBlIHZtVHlwZTsKICAgICAgICAgQ2xpZW50RGF0YSogY2xpZW50RGF0YTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbmV3LWFycmF5LXRoZW4t
ZXhpdC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L25ldy1hcnJheS10aGVuLWV4aXQuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL25ldy1hcnJheS10aGVuLWV4aXQuanMJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxNCBAQAorZnVuY3Rpb24gZm9vKGYpIHsKKyAgICByZXR1cm4gbmV3IGYoKTsK
K30KKworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKQor
ICAgIGZvbyhBcnJheSk7CisKK3ZhciBkaWRDYWxsID0gZmFsc2U7Citmb28oZnVuY3Rpb24oKSB7
IGRpZENhbGwgPSB0cnVlOyB9KTsKKworaWYgKCFkaWRDYWxsKQorICAgIHRocm93ICJFcnJvcjog
ZGlkbid0IGNhbGwgbXkgZnVuY3Rpb24uIjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQtdGhpcy5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3BvbHktY2FsbC1leGl0LXRoaXMuanMJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3BvbHktY2FsbC1l
eGl0LXRoaXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOSBAQAorKGZ1bmN0aW9uKCkg
eworICAgIGZ1bmN0aW9uIGZvbyh4KSB7IHJldHVybiAxICsgdGhpcy5mOyB9CisgICAgZnVuY3Rp
b24gYmFyKHgpIHsgcmV0dXJuIHggKyB0aGlzLmY7IH0KKyAgICBmdW5jdGlvbiBiYXooeCkgeyBy
ZXR1cm4geCArIDEgKyB0aGlzLmY7IH0KKyAgICAKKyAgICB2YXIgbiA9IDEwMDAwMDA7CisgICAg
CisgICAgdmFyIHJlc3VsdCA9IChmdW5jdGlvbihvKSB7CisgICAgICAgIHZhciBmID0ge2Z1bjpm
b28sIGY6MX07CisgICAgICAgIHZhciBnID0ge2Z1bjpiYXIsIGY6Mn07CisgICAgICAgIHZhciBo
ID0ge2Z1bjpiYXosIGY6M307CisgICAgICAgIAorICAgICAgICB2YXIgcmVzdWx0ID0gMDsKKyAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChpID09
IG4gLSAxKQorICAgICAgICAgICAgICAgIGYgPSBoOworICAgICAgICAgICAgcmVzdWx0ICs9IGYu
ZnVuKG8uZik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciB0bXAgPSBmOworICAgICAg
ICAgICAgZiA9IGc7CisgICAgICAgICAgICBnID0gdG1wOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0pKHtmOjQyfSk7CisgICAgCisgICAgaWYgKHJl
c3VsdCAhPSAoKG4gLyAyIC0gMSkgKiAoNDIgKyAyKSkgKyAobiAvIDIgKiAoMSArIDEpICsgKDQy
ICsgMSArIDMpKSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0
OworfSkoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcG9seS1j
YWxsLWV4aXQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9wb2x5LWNhbGwtZXhpdC5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyOSBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIGZvbyh4KSB7IHJldHVybiAx
OyB9CisgICAgZnVuY3Rpb24gYmFyKHgpIHsgcmV0dXJuIHg7IH0KKyAgICBmdW5jdGlvbiBiYXoo
eCkgeyByZXR1cm4geCArIDE7IH0KKyAgICAKKyAgICB2YXIgbiA9IDEwMDAwMDA7CisgICAgCisg
ICAgdmFyIHJlc3VsdCA9IChmdW5jdGlvbihvKSB7CisgICAgICAgIHZhciBmID0gZm9vOworICAg
ICAgICB2YXIgZyA9IGJhcjsKKyAgICAgICAgdmFyIGggPSBiYXo7CisgICAgICAgIAorICAgICAg
ICB2YXIgcmVzdWx0ID0gMDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsK
KyAgICAgICAgICAgIGlmIChpID09IG4gLSAxKQorICAgICAgICAgICAgICAgIGYgPSBoOworICAg
ICAgICAgICAgcmVzdWx0ICs9IGYoby5mKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFy
IHRtcCA9IGY7CisgICAgICAgICAgICBmID0gZzsKKyAgICAgICAgICAgIGcgPSB0bXA7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSkoe2Y6NDJ9KTsK
KyAgICAKKyAgICBpZiAocmVzdWx0ICE9ICgobiAvIDIgLSAxKSAqIDQyKSArIChuIC8gMiAqIDEp
ICsgKDQyICsgMSkpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3Vs
dDsKK30pKCk7CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL1dURi9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAxNC0wOC0yMyAgRmlsaXAgUGl6
bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIERGRyAob3IgRlRMKSBzaG91bGQgYmUg
YWJsZSB0byBkbyBwb2x5bW9ycGhpYyBjYWxsIGlubGluaW5nCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUxNDUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFkZCBzb21lIHBvd2VyIHRoYXQg
SSBuZWVkIGZvciBjYWxsIGVkZ2UgcHJvZmlsaW5nLgorCisgICAgICAgICogd3RmL093blB0ci5o
OgorICAgICAgICAoV1RGOjpPd25QdHI8VD46OmNyZWF0ZVRyYW5zYWN0aW9uYWxseSk6CisgICAg
ICAgICogd3RmL1NwZWN0cnVtLmg6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjphZGQpOgorICAg
ICAgICAoV1RGOjpTcGVjdHJ1bTo6YWRkQWxsKToKKyAgICAgICAgKFdURjo6U3BlY3RydW06Omdl
dCk6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpzaXplKToKKyAgICAgICAgKFdURjo6U3BlY3Ry
dW06OktleUFuZENvdW50OjpLZXlBbmRDb3VudCk6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpj
bGVhcik6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpyZW1vdmVJZik6CisKIDIwMTQtMDgtMjEg
IFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0
IHIxNzI4MzEsIGl0IGJyb2tlIHRoZSBXaW5kb3dzIGJ1aWxkLgpJbmRleDogU291cmNlL1dURi93
dGYvT3duUHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvT3duUHRyLmgJKHJldmlz
aW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9XVEYvd3RmL093blB0ci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAo
QykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjIsNiArMjIsNyBAQAogI2Rl
ZmluZSBXVEZfT3duUHRyX2gKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVk
ZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRl
IDx3dGYvT3duUHRyQ29tbW9uLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgpAQCAtNzIsNiArNzMs
MTQgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IE93blB0
ciYgb3BlcmF0b3I9KE93blB0cjxVPiYmKTsKIAogICAgICAgICB2b2lkIHN3YXAoT3duUHRyJiBv
KSB7IHN0ZDo6c3dhcChtX3B0ciwgby5tX3B0cik7IH0KKyAgICAgICAgCisgICAgICAgIC8vIENv
bnN0cnVjdCBhbiBvYmplY3QgdG8gc3RvcmUgaW50byB0aGlzIE93blB0ciwgYnV0IG9ubHkgc28g
bG9uZyBhcyB0aGlzIE93blB0cgorICAgICAgICAvLyBkb2Vzbid0IGFscmVhZHkgcG9pbnQgdG8g
YW4gb2JqZWN0LiBUaGlzIHdpbGwgZW5zdXJlIHRoYXQgYWZ0ZXIgeW91IGNhbGwgdGhpcywKKyAg
ICAgICAgLy8gdGhlIE93blB0ciB3aWxsIHBvaW50IHRvIGFuIGluc3RhbmNlIG9mIFQuIFRoaXMg
aW5zdGFuY2UgbWF5IG9yIG1heSBub3QgaGF2ZSBiZWVuCisgICAgICAgIC8vIGNyZWF0ZWQgYnkg
dGhpcyBjYWxsLiBNb3Jlb3ZlciwgdGhpcyBjYWxsIHVzZXMgYW4gb3Bwb3J0dW5pc3RpYyB0cmFu
c2FjdGlvbiwgaW4KKyAgICAgICAgLy8gdGhhdCB3ZSBtYXkgY3JlYXRlIGFuIGluc3RhbmNlIG9m
IFQgYW5kIHRoZW4gaW1tZWRpYXRlbHkgdGhyb3cgaXQgYXdheS4KKyAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUuLi4gQXJncz4KKyAgICAgICAgdm9pZCBjcmVhdGVUcmFuc2FjdGlvbmFsbHkoQXJn
cy4uLiBhcmdzKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IE93blB0cihQdHJU
eXBlIHB0cikgOiBtX3B0cihwdHIpIHsgfQpAQCAtMTg2LDYgKzE5NSwyOCBAQCBuYW1lc3BhY2Ug
V1RGIHsKICAgICAgICAgcmV0dXJuIHAuZ2V0KCk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gaW5saW5lIHZvaWQgT3duUHRyPFQ+
OjpjcmVhdGVUcmFuc2FjdGlvbmFsbHkoQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgaWYg
KG1fcHRyKSB7CisgICAgICAgICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgVCogbmV3T2JqZWN0ID0gbmV3
IFQoYXJncy4uLik7CisgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CisjaWYgRU5BQkxF
KENPTVBBUkVfQU5EX1NXQVApCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGlmIChtX3B0cikg
eworICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdPYmplY3Q7CisgICAgICAgICAgICAgICAgV1RG
Ojpsb2FkTG9hZEZlbmNlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICB9IHdoaWxlICghV1RGOjp3ZWFrQ29tcGFyZUFuZFN3YXAoYml0d2lzZV9jYXN0
PHZvaWQqdm9sYXRpbGUqPigmbV9wdHIpLCBudWxscHRyLCBuZXdPYmplY3QpKTsKKyNlbHNlCisg
ICAgICAgIG1fcHRyID0gbmV3T2JqZWN0OworI2VuZGlmCisgICAgfQorCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKIAogdXNpbmcgV1RGOjpPd25QdHI7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1
bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgJKHJldmlzaW9uIDE3
Mjg1OSkKKysrIFNvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDIy
ICszMiwzMSBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIENvdW50ZXJUeXBlID0gdW5zaWduZWQ+CiBjbGFz
cyBTcGVjdHJ1bSB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPFQsIHVu
c2lnbmVkIGxvbmc+OjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEhh
c2hNYXA8VCwgdW5zaWduZWQgbG9uZz46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwor
ICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46Oml0ZXJhdG9yIGl0
ZXJhdG9yOworICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46OmNv
bnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwogICAgIAogICAgIFNwZWN0cnVtKCkgeyB9CiAg
ICAgCi0gICAgdm9pZCBhZGQoY29uc3QgVCYga2V5LCB1bnNpZ25lZCBsb25nIGNvdW50ID0gMSkK
KyAgICB2b2lkIGFkZChjb25zdCBUJiBrZXksIENvdW50ZXJUeXBlIGNvdW50ID0gMSkKICAgICB7
Ci0gICAgICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz46OkFkZFJlc3VsdCBy
ZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBjb3VudCk7CisgICAgICAgIGlmICghY291bnQpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+
OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgY291bnQpOwogICAgICAgICBpZiAo
IXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSAr
PSBjb3VudDsKICAgICB9CiAgICAgCi0gICAgdW5zaWduZWQgbG9uZyBnZXQoY29uc3QgVCYga2V5
KSBjb25zdAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAgdm9pZCBhZGRBbGwoY29uc3Qg
U3BlY3RydW08VCwgVT4mIG90aGVyU3BlY3RydW0pCisgICAgeworICAgICAgICBmb3IgKGF1dG8g
ZW50cnkgOiBvdGhlclNwZWN0cnVtKQorICAgICAgICAgICAgYWRkKGVudHJ5LmtleSwgZW50cnku
Y291bnQpOworICAgIH0KKyAgICAKKyAgICBDb3VudGVyVHlwZSBnZXQoY29uc3QgVCYga2V5KSBj
b25zdAogICAgIHsKICAgICAgICAgY29uc3RfaXRlcmF0b3IgaXRlciA9IG1fbWFwLmZpbmQoa2V5
KTsKICAgICAgICAgaWYgKGl0ZXIgPT0gbV9tYXAuZW5kKCkpCkBAIC01NSw2ICs2NCw4IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOwogICAgIH0KICAgICAKKyAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsgfQorICAgIAogICAgIGl0ZXJh
dG9yIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQogICAgIGl0ZXJhdG9yIGVuZCgp
IHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25z
dCB7IHJldHVybiBtX21hcC5iZWdpbigpOyB9CkBAIC02Myw3ICs3NCw3IEBAIHB1YmxpYzoKICAg
ICBzdHJ1Y3QgS2V5QW5kQ291bnQgewogICAgICAgICBLZXlBbmRDb3VudCgpIHsgfQogICAgICAg
ICAKLSAgICAgICAgS2V5QW5kQ291bnQoY29uc3QgVCYga2V5LCB1bnNpZ25lZCBsb25nIGNvdW50
KQorICAgICAgICBLZXlBbmRDb3VudChjb25zdCBUJiBrZXksIENvdW50ZXJUeXBlIGNvdW50KQog
ICAgICAgICAgICAgOiBrZXkoa2V5KQogICAgICAgICAgICAgLCBjb3VudChjb3VudCkKICAgICAg
ICAgewpAQCAtODAsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBUIGtl
eTsKLSAgICAgICAgdW5zaWduZWQgbG9uZyBjb3VudDsKKyAgICAgICAgQ291bnRlclR5cGUgY291
bnQ7CiAgICAgfTsKICAgICAKICAgICAvLyBSZXR1cm5zIGEgbGlzdCBvcmRlcmVkIGZyb20gbG93
ZXN0LWNvdW50IHRvIGhpZ2hlc3QtY291bnQuCkBAIC05NCw4ICsxMDUsMTggQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gbGlzdDsKICAgICB9CiAgICAgCisgICAgdm9pZCBjbGVhcigpIHsgbV9t
YXAuY2xlYXIoKTsgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAg
dm9pZCByZW1vdmVJZihjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAgICAgICAgbV9t
YXAucmVtb3ZlSWYoW2Z1bmN0b3JdICh0eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6
S2V5VmFsdWVQYWlyVHlwZSYgcGFpcikgeworICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdG9y
KEtleUFuZENvdW50KHBhaXIua2V5LCBwYWlyLnZhbHVlKSk7CisgICAgICAgICAgICB9KTsKKyAg
ICB9CisgICAgCiBwcml2YXRlOgotICAgIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz4gbV9tYXA7
CisgICAgSGFzaE1hcDxULCBDb3VudGVyVHlwZT4gbV9tYXA7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3Mjg1OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE0LTA4LTIzICBGaWxpcCBQaXps
byAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgREZHIChvciBGVEwpIHNob3VsZCBiZSBh
YmxlIHRvIGRvIHBvbHltb3JwaGljIGNhbGwgaW5saW5pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTE0NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2lt
cGxlLXBvbHktY2FsbC1uZXN0ZWQuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jl
c3Mvc2ltcGxlLXBvbHktY2FsbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3Jl
Z3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC5odG1sOiBBZGRlZC4KKwogMjAxNC0w
OC0yMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQW5pbWF0
ZWQgR0lGcyBzY3JvbGxlZCBvdXQgb2YgdmlldyBzdGlsbCBjYXVzZSB0aXRsZWJhciBibHVyIHRv
IHVwZGF0ZSwgb24gdHVtYmxyLmNvbSBwYWdlCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3NpbXBsZS1wb2x5LWNhbGwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zaW1wbGUtcG9seS1jYWxs
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJv
d24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCklu
ZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVkLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5
LWNhbGwtbmVzdGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zaW1wbGUtcG9seS1jYWxsLW5lc3RlZAor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3du
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcG9seS1jYWxsLW5lc3RlZC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0
ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBv
bHktY2FsbC1uZXN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zaW1wbGUtcG9seS1j
YWxsLW5lc3RlZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Jl
Z3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
c2NyaXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXBv
bHktY2FsbC1uZXN0ZWQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQuanMJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcG9seS1jYWxsLW5lc3Rl
ZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI1IEBACisoZnVuY3Rpb24oKSB7CisgICAg
ZnVuY3Rpb24gZm9vKHgpIHsgcmV0dXJuIDE7IH0KKyAgICBmdW5jdGlvbiBiYXIoeCkgeyByZXR1
cm4geDsgfQorICAgIAorICAgIHZhciBuID0gMTAwMDAwMDsKKyAgICAKKyAgICB2YXIgcmVzdWx0
ID0gKGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgZiA9IGZvbzsKKyAgICAgICAgdmFyIGcgPSBi
YXI7CisgICAgICAgIAorICAgICAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgICAgIHJlc3VsdCArPSBmKDQyKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgdmFyIHRtcCA9IGY7CisgICAgICAgICAgICBmID0gZzsKKyAg
ICAgICAgICAgIGcgPSB0bXA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfSkoKTsKKyAgICAKKyAgICBpZiAocmVzdWx0ICE9IG4gLyAyICogNDIgKyBu
IC8gMiAqIDEpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsK
K30pKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUt
cG9seS1jYWxsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0
LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcG9seS1jYWxsLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMjAgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBmdW5jdGlvbiBmb28oeCkgeyBy
ZXR1cm4gMTsgfQorICAgIGZ1bmN0aW9uIGJhcih4KSB7IHJldHVybiB4OyB9CisgICAgCisgICAg
dmFyIGYgPSBmb287CisgICAgdmFyIGcgPSBiYXI7CisgICAgCisgICAgdmFyIHJlc3VsdCA9IDA7
CisgICAgdmFyIG4gPSAxMDAwMDA7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsK
KyAgICAgICAgcmVzdWx0ICs9IGYoNDIpOworICAgICAgICAKKyAgICAgICAgdmFyIHRtcCA9IGY7
CisgICAgICAgIGYgPSBnOworICAgICAgICBnID0gdG1wOworICAgIH0KKyAgICAKKyAgICBpZiAo
cmVzdWx0ICE9IG4gLyAyICogNDIgKyBuIC8gMiAqIDEpCisgICAgICAgIHRocm93ICJFcnJvcjog
YmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30pKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237033</attachid>
            <date>2014-08-23 18:06:52 -0700</date>
            <delta_ts>2014-08-23 21:12:37 -0700</delta_ts>
            <desc>a wrong approch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>175762</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyNiBA
QAorMjAxNC0wOC0yMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyAob3IgRlRMKSBzaG91bGQgYmUgYWJsZSB0byBkbyBwb2x5bW9ycGhpYyBjYWxsIGlubGlu
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUx
NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIEFkZCBhIGxvZy1iYXNlZCBoaWdoLWZpZGVsaXR5IGNhbGwgZWRnZSBwcm9maWxlciB0aGF0
IHJ1bnMgaW4gYmFzZWxpbmUgSklUIGFuZCBERkcgSklUIGNvZGUuCisgICAgICAgIFVzZSBpdCB0
byBkbyBwcmVjaXNlIHBvbHltb3JwaGljIGlubGluaW5nIGluIHRoZSBGVEwsIGFuZCB0byBtYWtl
IHRoZSBERkcncyBtb25vbW9ycGhpYworICAgICAgICBpbmxpbmVyIGEgYml0IG1vcmUgaW50ZWxs
aWdlbnQuIFBvdGVudGlhbCBpbmxpbmluZyBzaXRlcyB3aWxsIHVzZSB0aGUgY2FsbCBlZGdlIHBy
b2ZpbGUgaWYKKyAgICAgICAgaXQgaXMgYXZhaWxhYmxlIGJ1dCB0aGV5IHdpbGwgc3RpbGwgZmFs
bCBiYWNrIG9uIHRoZSBjYWxsIGlubGluZSBjYWNoZSBhbmQgcmFyZSBjYXNlIGNvdW50cworICAg
ICAgICBpZiB0aGF0J3Mgbm90IGF2YWlsYWJsZS4KKyAgICAgICAgCisgICAgICAgIFdvcmsgaW4g
cHJvZ3Jlc3MuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxFZGdlLmNwcDogQWRkZWQuCisgICAgICAg
IChKU0M6OkNhbGxFZGdlOjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsRWRnZS5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2U6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6
OkNhbGxFZGdlOjpjYWxsZWUpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZTo6Y291bnQpOgorICAg
ICAgICAoSlNDOjpDYWxsRWRnZTo6ZGVzcGVjaWZpZWRDbG9zdXJlKToKKyAgICAgICAgKEpTQzo6
Q2FsbEVkZ2U6OkNhbGxFZGdlKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VQcm9maWxlOjpjYWxsRWRnZXMpOgor
ICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6Om51bUNhbGxzVG9Lbm93bkNlbGxzKToKKyAg
ICAgICAgKEpTQzo6d29ydGhEZXNwZWNpZnlpbmcpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZVBy
b2ZpbGU6OndvcnRoRGVzcGVjaWZ5aW5nKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VQcm9maWxl
Ojp2aXNpdFdlYWspOgorICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6OmFkZFNsb3cpOgor
ICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6Om1lcmdlQmFjayk6CisgICAgICAgIChKU0M6
OkNhbGxFZGdlUHJvZmlsZTo6ZmFkZUJ5SGFsZik6CisgICAgICAgIChKU0M6OkNhbGxFZGdlTG9n
OjpDYWxsRWRnZUxvZyk6CisgICAgICAgIChKU0M6OkNhbGxFZGdlTG9nOjp+Q2FsbEVkZ2VMb2cp
OgorICAgICAgICAoSlNDOjpDYWxsRWRnZUxvZzo6aXNFbmFibGVkKToKKyAgICAgICAgKEpTQzo6
b3BlcmF0aW9uUHJvY2Vzc0NhbGxFZGdlTG9nKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VMb2c6
OmVtaXRMb2dDb2RlKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VMb2c6OnByb2Nlc3NMb2cpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6Q2FsbEVkZ2VQcm9maWxlOjpudW1DYWxsc1RvTm90Q2VsbCk6CisgICAgICAgIChKU0M6OkNh
bGxFZGdlUHJvZmlsZTo6bnVtQ2FsbHNUb1Vua25vd25DZWxsKToKKyAgICAgICAgKiBieXRlY29k
ZS9DYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpDYWxsRWRn
ZVByb2ZpbGU6OkNhbGxFZGdlUHJvZmlsZSk6CisgICAgICAgIChKU0M6OkNhbGxFZGdlUHJvZmls
ZTo6YWRkKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAo
SlNDOjpDYWxsTGlua0luZm86OnZpc2l0V2Vhayk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmg6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAg
ICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Q2FsbExpbmtTdGF0dXMpOgorICAgICAgICAoSlNDOjpD
YWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5r
U3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZy
b21DYWxsRWRnZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6aXNDbG9z
dXJlQ2FsbCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjptYWtlQ2xvc3VyZUNhbGwp
OgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNh
bGxMaW5rU3RhdHVzOjpmdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNhbGxMaW5r
U3RhdHVzOjppbnRlcm5hbEZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbExp
bmtTdGF0dXM6OmludHJpbnNpY0Zvcik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ2Fs
bExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OkNhbGxMaW5rU3Rh
dHVzKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmlzU2V0KToKKyAgICAgICAgKEpT
Qzo6Q2FsbExpbmtTdGF0dXM6OmNvdWxkVGFrZVNsb3dQYXRoKToKKyAgICAgICAgKEpTQzo6Q2Fs
bExpbmtTdGF0dXM6OmVkZ2VzKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OnNpemUp
OgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6YXQpOgorICAgICAgICAoSlNDOjpDYWxs
TGlua1N0YXR1czo6b3BlcmF0b3JbXSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpj
YW5PcHRpbWl6ZSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjYW5UcnVzdENvdW50
cyk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjppc0Nsb3N1cmVDYWxsKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNhbGxUYXJnZXQpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6ZXhlY3V0YWJsZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjptYWtlQ2xvc3VyZUNhbGwpOiBEZWxldGVkLgorICAg
ICAgICAqIGJ5dGVjb2RlL0NhbGxWYXJpYW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkNh
bGxWYXJpYW50OjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsVmFyaWFudC5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OkNhbGxWYXJpYW50KToKKyAgICAgICAgKEpT
Qzo6Q2FsbFZhcmlhbnQ6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50Ojpk
ZXNwZWNpZmllZENsb3N1cmUpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6cmF3Q2FsbGVl
Q2VsbCk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjppbnRlcm5hbEZ1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OmZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Q2FsbFZh
cmlhbnQ6OmlzQ2xvc3VyZUNhbGwpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZXhlY3V0
YWJsZSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50Ojpub25FeGVjdXRhYmxlQ2FsbGVlKToK
KyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OmludHJpbnNpY0Zvcik6CisgICAgICAgIChKU0M6
OkNhbGxWYXJpYW50OjpmdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpDYWxsVmFy
aWFudDo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFu
dDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpvcGVyYXRvciE9KToK
KyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om9wZXJhdG9yPCk6CisgICAgICAgIChKU0M6OkNh
bGxWYXJpYW50OjpvcGVyYXRvcj4pOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6b3BlcmF0
b3I8PSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpvcGVyYXRvcj49KToKKyAgICAgICAg
KEpTQzo6Q2FsbFZhcmlhbnQ6Omhhc2gpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZGVs
ZXRlZFRva2VuKToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnRIYXNoOjpoYXNoKToKKyAgICAg
ICAgKEpTQzo6Q2FsbFZhcmlhbnRIYXNoOjplcXVhbCk6CisgICAgICAgICogYnl0ZWNvZGUvRXhp
dEtpbmQuY3BwOgorICAgICAgICAoSlNDOjpleGl0S2luZFRvU3RyaW5nKToKKyAgICAgICAgKiBi
eXRlY29kZS9FeGl0S2luZC5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0JhY2t3YXJk
c1Byb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJhY2t3YXJkc1Byb3Bh
Z2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR0Jhc2ljQmxvY2suaDoK
KyAgICAgICAgKEpTQzo6REZHOjpCYXNpY0Jsb2NrOjp0YWtlTGFzdCk6CisgICAgICAgIChKU0M6
OkRGRzo6QmFzaWNCbG9jazo6ZGlkTGluayk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cmVtb3ZlTGFzdE5v
ZGVGcm9tR3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphZGRDYWxs
V2l0aG91dFNldHRpbmdSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjphZGRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmVtaXRGdW5jdGlvbkNoZWNr
cyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnVuZG9GdW5jdGlvbkNoZWNr
cyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpjYW5jZWxMaW5raW5nRm9yQmxvY2spOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdD
UFNSZXRocmVhZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDUFNSZXRocmVhZGlu
Z1BoYXNlOjpmcmVlVW5uZWNlc3NhcnlOb2Rlcyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJp
emUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZH
Q29tbW9uLmg6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6Cisg
ICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToK
KyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxl
SW1wbCk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6R3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6Okdy
YXBoOjpkdW1wKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZn
L0RGR0xhenlKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpMYXp5SlNWYWx1ZTo6c3dp
dGNoTG9va3VwVmFsdWUpOgorICAgICAgICAqIGRmZy9ERkdMYXp5SlNWYWx1ZS5oOgorICAgICAg
ICAoSlNDOjpERkc6OkxhenlKU1ZhbHVlOjpzd2l0Y2hMb29rdXBWYWx1ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogZGZnL0RGR05vZGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToK
KyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok9wSW5mbzo6T3BJ
bmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNDZWxsT3BlcmFuZCk6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6Y2VsbE9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
OnNldENlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjYW5CZUtub3duRnVu
Y3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0tub3duRnVuY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omtub3duRnVuY3Rpb24pOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdpdmVLbm93bkZ1bmN0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNGdW5jdGlvbik6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6ZnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6Omhhc0V4ZWN1dGFibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6OmV4ZWN1dGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5o
OgorICAgICAgICAqIGRmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlOjpydW4pOgorICAg
ICAgICAqIGRmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpQaGFudG9tUmVtb3ZhbFBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpl
bWl0U3dpdGNoKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZTo6cnVuKToKKyAg
ICAgICAgKiBkZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6VGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcv
REZHVmFsaWRhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlZhbGlkYXRlOjp2YWxpZGF0ZSk6
CisgICAgICAgICogZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OldhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2U6OmhhbmRsZSk6CisgICAgICAg
ICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGls
ZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpmdGxVbnJlYWNoYWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
Omxvd2VyKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5vZGUp
OgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ2hlY2tDZWxsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNoZWNrQmFkQ2VsbCk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVHZXRFeGVjdXRhYmxl
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5hdGl2ZUNhbGxP
ckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVT
d2l0Y2gpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpidWlsZFN3aXRjaCk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVDaGVja0Z1bmN0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNo
ZWNrRXhlY3V0YWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAg
ICAgKEpTQzo6SGVhcDo6Y29sbGVjdCk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5o
OgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRWYWx1ZSk6CisgICAgICAgICog
aml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJn
dW1lbnRzKToKKyAgICAgICAgKiBqaXQvR1BSSW5mby5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
UmVnczo6dXNlcyk6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9u
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6ZW5zdXJl
Q2FsbEVkZ2VMb2cpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvbmV3LWFycmF5LXRoZW4tZXhpdC5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9wb2x5LWNhbGwtZXhpdC10aGlzLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiB0ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQuanM6IEFkZGVkLgorCiAyMDE0LTA4LTIx
ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICByMTcxMzYyIGFjY2lk
ZW50YWxseSBpbmNyZWFzZWQgdGhlIHNpemUgb2YgSW5saW5lQ2FsbEZyYW1lLgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNjMsNiArMjYzLDEzIEBACiAJCTBGM0IzQTI4MTU0NEM5OTcwMDNFRDBG
RiAvKiBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCM0EyNTE1NDRDOTkxMDAzRUQwRkYgLyogREZHQ0ZH
U2ltcGxpZmljYXRpb25QaGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGM0IzQTJCMTU0NzUwMDAwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCM0Ey
OTE1NDc0RkY0MDAzRUQwRkYgLyogREZHVmFsaWRhdGUuY3BwICovOyB9OwogCQkwRjNCM0EyQzE1
NDc1MDAyMDAzRUQwRkYgLyogREZHVmFsaWRhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0IzQTJBMTU0NzRGRjQwMDNFRDBGRiAvKiBERkdWYWxp
ZGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTBGM0I3RTI2MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMjAxOUExMUI4MDAwRDlCQzU2IC8q
IENhbGxFZGdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEYzQjdFMjcxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCN0UyMTE5QTEx
QjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmNwcCAqLzsgfTsKKwkJMEYzQjdFMjgxOUEx
MUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMjIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxF
ZGdlUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGM0I3RTI5MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGVJbmxpbmVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCN0Uy
MzE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGM0I3RTJBMTlBMTFCODAw
MEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjNCN0UyNDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQu
Y3BwICovOyB9OworCQkwRjNCN0UyQjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTI1MTlB
MTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGM0I3RTJEMTlBMTJBQUUwMEQ5QkM1NiAvKiBDYWxs
RWRnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjNCN0UyQzE5QTEyQUFFMDBEOUJDNTYgLyogQ2FsbEVkZ2UuY3BwICovOyB9OwogCQkwRjNEMEJC
QzE5NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNEMEJCQTE5NEE0MTQzMDBG
QzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHAgKi87IH07CiAJCTBGM0QwQkJEMTk0
QTQxNDMwMEZDOUNGOSAvKiBDb25zdGFudFN0cnVjdHVyZUNoZWNrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNEMEJCQjE5NEE0MTQzMDBGQzlDRjkg
LyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGNDI2QTQ4MTQ2MENCQjMwMDEzMUY4RiAvKiBWYWx1ZVJl
Y292ZXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMTY3LDYgKzIxNzQsMTMgQEAK
IAkJMEYzQjNBMjUxNTQ0Qzk5MTAwM0VEMEZGIC8qIERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ0ZHU2ltcGxpZmljYXRpb25Q
aGFzZS5oOyBwYXRoID0gZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQjNBMjkxNTQ3NEZGNDAwM0VEMEZGIC8qIERGR1ZhbGlk
YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ZhbGlkYXRl
LmNwcDsgcGF0aCA9IGRmZy9ERkdWYWxpZGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGM0IzQTJBMTU0NzRGRjQwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdWYWxpZGF0ZS5oOyBwYXRoID0gZGZnL0RGR1Zh
bGlkYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGM0I3RTIwMTlBMTFCODAw
MEQ5QkM1NiAvKiBDYWxsRWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YWxsRWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyMTE5QTExQjgw
MDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENhbGxFZGdlUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGM0I3RTIyMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbEVkZ2VQcm9maWxlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGM0I3RTIzMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRn
ZVByb2ZpbGVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxF
ZGdlUHJvZmlsZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzQjdF
MjQxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxWYXJpYW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYzQjdFMjUxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxWYXJpYW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGM0I3RTJDMTlBMTJBQUUwMEQ5QkM1NiAvKiBDYWxsRWRnZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsRWRnZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0QwQkJBMTk0QTQxNDMwMEZDOUNGOSAvKiBDb25z
dGFudFN0cnVjdHVyZUNoZWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENvbnN0YW50U3RydWN0dXJlQ2hlY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjNEMEJCQjE5NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb25zdGFudFN0cnVjdHVyZUNoZWNr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ1MTQ2MENCQUIwMDEzMUY4
RiAvKiBWYWx1ZVJlY292ZXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZh
bHVlUmVjb3ZlcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUxNDQsMTEgKzUx
NTgsMTggQEAKIAkJCQkwRjY2NkVCRTE4MzU2NkY5MDBEMDE3RjEgLyogQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzSW5saW5lcy5oICovLAogCQkJCTBGODg1RTEwMTg0OUEzQkUwMEYxRTNGQSAvKiBC
eXRlY29kZVVzZURlZi5oICovLAogCQkJCTBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZh
bEluZm8uaCAqLywKKwkJCQkwRjNCN0UyQzE5QTEyQUFFMDBEOUJDNTYgLyogQ2FsbEVkZ2UuY3Bw
ICovLAorCQkJCTBGM0I3RTIwMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZS5oICovLAorCQkJ
CTBGM0I3RTIxMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuY3BwICovLAorCQkJ
CTBGM0I3RTIyMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuaCAqLywKKwkJCQkw
RjNCN0UyMzE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oICovLAog
CQkJCTBGMEI4M0FFMTRCQ0Y3MTQwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uY3BwICovLAogCQkJ
CTBGMEI4M0FGMTRCQ0Y3MTQwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uaCAqLywKIAkJCQkwRjkz
MzI5MzE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuY3BwICovLAogCQkJCTBGOTMz
Mjk0MTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5oICovLAogCQkJCTBGMEI4M0I4
MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICov
LAorCQkJCTBGM0I3RTI0MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5jcHAgKi8sCisJ
CQkJMEYzQjdFMjUxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmggKi8sCiAJCQkJOTY5
QTA3OTAwRUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5jcHAgKi8sCiAJCQkJOTY5QTA3OTEw
RUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5oICovLAogCQkJCTBGOEY5NDNEMTY2NzYzMkQw
MEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmNwcCAqLywKQEAgLTU4NzcsNiArNTg5OCw3IEBACiAJ
CQkJMEZGRkM5NUExNEVGOTBBOTAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjJGQzc3MzE2RTEyRjc0MDAzOEQ5NzYgLyogREZHRENFUGhhc2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGOEYyQjlBMTcyRjA1MDEwMDdEQkRBNSAvKiBERkdEZXNpcmVkSWRlbnRp
ZmllcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGM0I3RTI4MTlBMTFCODAwMEQ5QkM1NiAvKiBD
YWxsRWRnZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQzBGN0NFMTdCQkZDNUIwMDQ2
NEZFNCAvKiBERkdEZXNpcmVkVHJhbnNpdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTg1
MzRDMTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUMyOTgxRkQ5MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vha1JlZmVy
ZW5jZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNjE0NSw2ICs2MTY3LDcgQEAKIAkJCQkwRjc2NkQz
MTE1QUE4MTEyMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNzY2RDJDMTVBOENDM0EwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZVNldC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMTRDNTI0MkIwRjUzNTVFOTAwQkEzRDA0IC8qIEpJVFN0dWJzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjNCN0UyQjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUZFRjY4MzVFMTc0MzQzQ0MwMEEzMkUyNSAvKiBKSVRTdHVic0FS
TS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVGNjgzNUYxNzQzNDNDQzAwQTMyRTI1IC8qIEpJVFN0
dWJzQVJNdjcuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFRjY4MzYxMTc0MzQzQ0MwMEEzMkUyNSAv
KiBKSVRTdHVic1g4Ni5oIGluIEhlYWRlcnMgKi8sCkBAIC02MTU2LDYgKzYxNzksNyBAQAogCQkJ
CUE3NkY1NEEzMTNCMjhBQUIwMEVGMkJDRSAvKiBKSVRXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0FjdGl2YXRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg0MDQ4MDEzMTAyMUExRDkwMDhFN0YwMSAvKiBKU0FQSVZhbHVlV3Jh
cHBlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYzQjdFMjkxOUExMUI4MDAwRDlCQzU2IC8qIENh
bGxFZGdlUHJvZmlsZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQ0YzOUMyMTZFMTVB
ODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
NjE0MEQyMTgyOTgyQ0IwMDc1MDYyNCAvKiBKU0FyZ3VtZW50c0l0ZXJhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzE4QzQxNzBFMTZGNUNEMDBCMzQ0NjAgLyogSlNBcnJheS5oIGluIEhlYWRl
cnMgKi8sCkBAIC02NDcxLDYgKzY0OTUsNyBAQAogCQkJCUU0OURDMTZDMTJFRjI5NEUwMDE4NEEx
RiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDlEQzE2RDEy
RUYyOTUzMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQjdGMzlFMTVFRDhFNDYwMEYxNjdCMiAvKiBTcGFyc2VBcnJheVZhbHVlTWFwLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjNCN0UyNjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mzg2NTU0MTE4Njk3QjQwMDU0MDI3OSAvKiBTcGVjaWFs
aXplZFRodW5rSklULmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU1NDFCMjE2MTNDMUZCMDBDRTNF
MjUgLyogU3BlY2lhbFBvaW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgyRTU0MTQxREFF
RUUwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03MzIzLDYg
KzczNDgsNyBAQAogCQkJCTBGMjM1QkQ1MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1l
bnRGb3JPcGVyYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkQ4MTcxNzhFMUMwMDY5
MEM3RiAvKiBGVExFeGl0VGh1bmtHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYy
MzVCREExNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRjNCN0UyNzE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE3RjI5OTZCMTdBMEJCNjcwMDEwNDE3QSAvKiBGVExGYWlsLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRDhBMzE5MTdENTFGMjIwMENBMkM0MCAvKiBGVExGb3JPU1JF
bnRyeUpJVENvZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyNUYxQUYxODE2MzVGMzAwNTIy
RjM5IC8qIEZUTElubGluZUNhY2hlU2l6ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc1MDksNiAr
NzUzNSw3IEBACiAJCQkJMEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjM4QjAxMTE3Q0YwNzgwMDBCMTQ0RDMgLyogTExJbnRFbnRy
eXBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAv
KiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYzQjdFMkQxOUExMkFB
RTAwRDlCQzU2IC8qIENhbGxFZGdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MEE0MTRC
QTdGOEQwMEJGRTI3MiAvKiBMTEludFNsb3dQYXRocy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjBCODM5QzE0QkNGNDYzMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZDRUZBQ0QxODA1RTc1NTAwNDcyQ0U0IC8qIExMVk1BUEkuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC03NjcwLDYgKzc2OTcsNyBAQAogCQkJCTE0RTg0RkEwMTRFRTFBQ0MwMEQ2RDVENCAv
KiBXZWFrU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJBNEVDOTBCMTg2MEQ2QzIwMDk0Rjc4
MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDODE1MEIx
NDA0M0MwRTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMEYzQjdFMkExOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE3RTVBQjNBMTc5OUU0QjIwMEQyODMzRCAvKiBYODZEaXNhc3NlbWJsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODYzQzZEOUMxNTIxMTExQTAwNTg1RTRFIC8qIFlhcnJD
YW5vbmljYWxpemVVQ1MyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0Qjg0MTJEQkEzMzcw
MEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZS5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNhbGxFZGdlLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCit2b2lkIENhbGxFZGdlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0Cit7CisgICAgb3V0LnByaW50KCI8IiwgbV9jYWxsZWUsICIsIGNvdW50OiAiLCBtX2Nv
dW50LCAiPiIpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgQ2FsbEVkZ2VfaAorI2RlZmluZSBDYWxsRWRnZV9oCisKKyNpbmNsdWRlICJDYWxsVmFy
aWFudC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordHlwZWRlZiB1aW50MTZfdCBDYWxsRWRnZUNv
dW50VHlwZTsKKworY2xhc3MgQ2FsbEVkZ2UgeworcHVibGljOgorICAgIENhbGxFZGdlKCk7Cisg
ICAgQ2FsbEVkZ2UoQ2FsbFZhcmlhbnQgY2FsbGVlLCBDYWxsRWRnZUNvdW50VHlwZSBjb3VudCk7
CisgICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7IH0K
KyAgICAKKyAgICBDYWxsVmFyaWFudCBjYWxsZWUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlZTsg
fQorICAgIENhbGxFZGdlQ291bnRUeXBlIGNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb3VudDsg
fQorICAgIAorICAgIENhbGxFZGdlIGRlc3BlY2lmaWVkQ2xvc3VyZSgpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gQ2FsbEVkZ2UobV9jYWxsZWUuZGVzcGVjaWZpZWRDbG9zdXJlKCksIG1f
Y291bnQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsK
KyAgICAKK3B1YmxpYzoKKyAgICBDYWxsVmFyaWFudCBtX2NhbGxlZTsKKyAgICBDYWxsRWRnZUNv
dW50VHlwZSBtX2NvdW50OworfTsKKworaW5saW5lIENhbGxFZGdlOjpDYWxsRWRnZShDYWxsVmFy
aWFudCBjYWxsZWUsIENhbGxFZGdlQ291bnRUeXBlIGNvdW50KQorICAgIDogbV9jYWxsZWUoY2Fs
bGVlKQorICAgICwgbV9jb3VudChjb3VudCkKK3sKK30KKworaW5saW5lIENhbGxFZGdlOjpDYWxs
RWRnZSgpCisgICAgOiBDYWxsRWRnZShDYWxsVmFyaWFudCgpLCAwKQoreworfQorCit0eXBlZGVm
IFZlY3RvcjxDYWxsRWRnZSwgMT4gQ2FsbEVkZ2VMaXN0OworCit9IC8vIG5hbWVzcGFjZSBKU0MK
KworI2VuZGlmIC8vIENhbGxFZGdlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDM0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2FsbEVkZ2VQcm9m
aWxlLmgiCisKKyNpbmNsdWRlICJDYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmgiCisjaW5jbHVkZSAi
Q0NhbGxIZWxwZXJzLmgiCisjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0NhbGxFZGdlTGlzdCBDYWxsRWRnZVBy
b2ZpbGU6OmNhbGxFZGdlcygpIGNvbnN0Cit7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIobV9sb2NrKTsKKyAgICAKKyAgICBDYWxsRWRnZUxpc3QgcmVzdWx0OworICAgIAorICAgIENh
bGxWYXJpYW50IHByaW1hcnlDYWxsZWUgPSBtX3ByaW1hcnlDYWxsZWU7CisgICAgZmxvYXQgbnVt
Q2FsbHNUb1ByaW1hcnkgPSBtX251bUNhbGxzVG9QcmltYXJ5OworICAgIC8vIERlZmVuZCBhZ2Fp
bnN0IHJhY2VzLiBUaGVzZSBmaWVsZHMgYXJlIG1vZGlmaWVkIGJ5IHRoZSBsb2cgcHJvY2Vzc29y
IHdpdGhvdXQgbG9ja2luZy4KKyAgICBpZiAoISFwcmltYXJ5Q2FsbGVlICYmIG51bUNhbGxzVG9Q
cmltYXJ5KQorICAgICAgICByZXN1bHQuYXBwZW5kKENhbGxFZGdlKHByaW1hcnlDYWxsZWUsIG51
bUNhbGxzVG9QcmltYXJ5KSk7CisgICAgCisgICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAg
ICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGlmIHRoZSBwcmltYXJ5IHRocmVhZCBoYWQganVzdCBjcmVh
dGVkIGEgbV9vdGhlckNhbGxlcyB3aGlsZSBsb2cKKyAgICAgICAgLy8gcHJvY2Vzc2luZywgd2Ug
c2VlIGEgY29uc2lzdGVudGx5IGNyZWF0ZWQgb25lLiBUaGUgbG9jayBiZWluZyBoZWxkIGlzIGlu
c3VmZmljaWVudCBmb3IKKyAgICAgICAgLy8gdGhpcywgc2luY2UgdGhlIGxvZyBwcm9jZXNzb3Ig
d2lsbCBvbmx5IGdyYWIgdGhlIGxvY2sgd2hlbiBtZXJnaW5nIHRoZSBzZWNvbmRhcnkKKyAgICAg
ICAgLy8gc3BlY3RydW0gaW50byB0aGUgcHJpbWFyeSBvbmUgYnV0IG1heSBzdGlsbCBjcmVhdGUg
dGhlIGRhdGEgc3RydWN0dXJlIHdpdGhvdXQgaG9sZGluZworICAgICAgICAvLyBsb2Nrcy4KKyAg
ICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CisgICAgICAgIGZvciAoQ2FsbEVkZ2UgZW50cnkg
OiBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQpIHsKKyAgICAgICAgICAgIC8vIERlZmVuZCBh
Z2FpbnN0IHRoZSBwb3NzaWJpbGl0eSB0aGF0IHRoZSBwcmltYXJ5IGR1cGxpY2F0ZXMgYW4gZW50
cnkgaW4gdGhlIHNlY29uZGFyeQorICAgICAgICAgICAgLy8gc3BlY3RydW0uIFRoYXQgY2FuIGhh
cHBlbiB3aGVuIHRoZSBHQyByZW1vdmVzIHRoZSBwcmltYXJ5LiBXZSBjb3VsZCBoYXZlIHRoZSBH
QyBmaXgKKyAgICAgICAgICAgIC8vIHRoZSBzaXR1YXRpb24gYnkgY2hhbmdpbmcgdGhlIHByaW1h
cnkgdG8gYmUgc29tZXRoaW5nIGZyb20gdGhlIHNlY29uZGFyeSBzcGVjdHJ1bSwKKyAgICAgICAg
ICAgIC8vIGJ1dCB0aGlzIGZpeCBzZWVtcyBzaW1wbGVyIHRvIGltcGxlbWVudCBhbmQgYWxzbyBj
aGVhcGVyLgorICAgICAgICAgICAgaWYgKGVudHJ5LmNhbGxlZSgpID09IHJlc3VsdFswXS5jYWxs
ZWUoKSkgeworICAgICAgICAgICAgICAgIHJlc3VsdFswXSA9IENhbGxFZGdlKHJlc3VsdFswXS5j
YWxsZWUoKSwgZW50cnkuY291bnQoKSArIHJlc3VsdFswXS5jb3VudCgpKTsKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZChlbnRyeSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgc3RkOjpz
b3J0KHJlc3VsdC5iZWdpbigpLCByZXN1bHQuZW5kKCksIFtdIChjb25zdCBDYWxsRWRnZSYgYSwg
Y29uc3QgQ2FsbEVkZ2UmIGIpIC0+IGJvb2wgeworICAgICAgICAgICAgcmV0dXJuIGEuY291bnQo
KSA+IGIuY291bnQoKTsKKyAgICAgICAgfSk7CisgICAgCisgICAgaWYgKHJlc3VsdC5zaXplKCkg
Pj0gMikKKyAgICAgICAgQVNTRVJUKHJlc3VsdFswXS5jb3VudCgpID49IHJlc3VsdC5sYXN0KCku
Y291bnQoKSk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQ2FsbEVkZ2VDb3VudFR5
cGUgQ2FsbEVkZ2VQcm9maWxlOjpudW1DYWxsc1RvS25vd25DZWxscygpIGNvbnN0Cit7CisgICAg
Q2FsbEVkZ2VDb3VudFR5cGUgcmVzdWx0ID0gMDsKKyAgICBmb3IgKENhbGxFZGdlIGVkZ2UgOiBj
YWxsRWRnZXMoKSkKKyAgICAgICAgcmVzdWx0ICs9IGVkZ2UuY291bnQoKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitzdGF0aWMgYm9vbCB3b3J0aERlc3BlY2lmeWluZyhjb25zdCBDYWxsVmFy
aWFudCYgdmFyaWFudCkKK3sKKyAgICByZXR1cm4gIUhlYXA6OmlzTWFya2VkKHZhcmlhbnQucmF3
Q2FsbGVlQ2VsbCgpKQorICAgICAgICAmJiBIZWFwOjppc01hcmtlZCh2YXJpYW50LmRlc3BlY2lm
aWVkQ2xvc3VyZSgpLnJhd0NhbGxlZUNlbGwoKSk7Cit9CisKK2Jvb2wgQ2FsbEVkZ2VQcm9maWxl
Ojp3b3J0aERlc3BlY2lmeWluZygpCit7CisgICAgaWYgKG1fY2xvc3VyZXNBcmVEZXNwZWNpZmll
ZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghIW1fcHJpbWFyeUNhbGxl
ZSAmJiAhSlNDOjp3b3J0aERlc3BlY2lmeWluZyhtX3ByaW1hcnlDYWxsZWUpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5zaXplKCk7IGktLTsp
IHsKKyAgICAgICAgICAgIGlmICghSlNDOjp3b3J0aERlc3BlY2lmeWluZyhtX290aGVyQ2FsbGVl
cy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBD
YWxsRWRnZVByb2ZpbGU6OnZpc2l0V2VhaygpCit7CisgICAgaWYgKCFtX3ByaW1hcnlDYWxsZWUg
JiYgIW1fb3RoZXJDYWxsZWVzKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgQ29uY3VycmVu
dEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAKKyAgICAvLyBTZWUgaWYgYW55dGhpbmcg
aXMgZGVhZCBhbmQgaWYgdGhhdCBjYW4gYmUgcmVjdGlmaWVkIGJ5IGRlc3BlY2lmeWluZy4KKyAg
ICBpZiAod29ydGhEZXNwZWNpZnlpbmcoKSkgeworICAgICAgICBDYWxsU3BlY3RydW0gbmV3U3Bl
Y3RydW07CisgICAgICAgIAorICAgICAgICBpZiAoISFtX3ByaW1hcnlDYWxsZWUpCisgICAgICAg
ICAgICBuZXdTcGVjdHJ1bS5hZGQobV9wcmltYXJ5Q2FsbGVlLmRlc3BlY2lmaWVkQ2xvc3VyZSgp
LCBtX251bUNhbGxzVG9QcmltYXJ5KTsKKyAgICAgICAgCisgICAgICAgIGlmIChtX290aGVyQ2Fs
bGVlcykgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9vdGhlckNhbGxlZXMtPm1f
cHJvY2Vzc2VkLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgICAgIG5ld1NwZWN0cnVtLmFk
ZCgKKyAgICAgICAgICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNh
bGxlZSgpLmRlc3BlY2lmaWVkQ2xvc3VyZSgpLAorICAgICAgICAgICAgICAgICAgICBtX290aGVy
Q2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQoKSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgVmVjdG9yPENhbGxTcGVj
dHJ1bTo6S2V5QW5kQ291bnQ+IGxpc3QgPSBuZXdTcGVjdHJ1bS5idWlsZExpc3QoKTsKKyAgICAg
ICAgQVNTRVJUKGxpc3Quc2l6ZSgpKTsKKyAgICAgICAgbV9wcmltYXJ5Q2FsbGVlID0gbGlzdC5s
YXN0KCkua2V5OworICAgICAgICBtX251bUNhbGxzVG9QcmltYXJ5ID0gbGlzdC5sYXN0KCkuY291
bnQ7CisgICAgICAgIAorICAgICAgICBBU1NFUlQoISFtX290aGVyQ2FsbGVlcyA9PSAobGlzdC5z
aXplKCkgPj0gMikpOworICAgICAgICBpZiAobV9vdGhlckNhbGxlZXMpIHsKKyAgICAgICAgICAg
IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5jbGVhcigpOworICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbGlzdC5zaXplKCkgLSAxOyBpLS07KQorICAgICAgICAgICAgICAgIG1fb3Ro
ZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5hcHBlbmQoQ2FsbEVkZ2UobGlzdFtpXS5rZXksIGxpc3Rb
aV0uY291bnQpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbV9jbG9zdXJlc0FyZURl
c3BlY2lmaWVkID0gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
CisgICAgaWYgKCEhbV9wcmltYXJ5Q2FsbGVlICYmICFIZWFwOjppc01hcmtlZChtX3ByaW1hcnlD
YWxsZWUucmF3Q2FsbGVlQ2VsbCgpKSkgeworICAgICAgICBtX251bUNhbGxzVG9Vbmtub3duQ2Vs
bCArPSBtX251bUNhbGxzVG9QcmltYXJ5OworICAgICAgICAKKyAgICAgICAgbV9wcmltYXJ5Q2Fs
bGVlID0gQ2FsbFZhcmlhbnQoKTsKKyAgICAgICAgbV9udW1DYWxsc1RvUHJpbWFyeSA9IDA7Cisg
ICAgfQorICAgIAorICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLnNpemUoKTsgaSsrKSB7
CisgICAgICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQobV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vz
c2VkW2ldLmNhbGxlZSgpLnJhd0NhbGxlZUNlbGwoKSkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxsICs9
IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jb3VudCgpOworICAgICAgICAgICAgbV9v
dGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ktLV0gPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNz
ZWQubGFzdCgpOworICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLnJlbW92
ZUxhc3QoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gT25seSBleGlzdHMgd2hp
bGUgd2UgYXJlIHByb2Nlc3NpbmcgdGhlIGxvZy4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1f
b3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtKTsKKyAgICB9Cit9CisKK3ZvaWQgQ2Fs
bEVkZ2VQcm9maWxlOjphZGRTbG93KENhbGxWYXJpYW50IGNhbGxlZSwgQ2FsbEVkZ2VQcm9maWxl
VmVjdG9yJiBtZXJnZUJhY2tMb2cpCit7CisgICAgLy8gVGhpcyBleGlzdHMgdG8gaGFuZGxlIGNh
c2VzIHdoZXJlIHRoZSBzcGVjdHJ1bSB3YXNuJ3QgY3JlYXRlZCB5ZXQsIG9yIHdlJ3JlIHN0b3Jp
bmcgdG8gYQorICAgIC8vIHBhcnRpY3VsYXIgc3BlY3RydW0gZm9yIHRoZSBmaXJzdCB0aW1lIGR1
cmluZyBhIGxvZyBwcm9jZXNzaW5nIGl0ZXJhdGlvbi4KKyAgICAKKyAgICBpZiAoIW1fb3RoZXJD
YWxsZWVzKSB7CisgICAgICAgIG1fb3RoZXJDYWxsZWVzID0gc3RkOjptYWtlX3VuaXF1ZTxTZWNv
bmRhcnk+KCk7CisgICAgICAgIC8vIElmIGEgY29tcGlsZXIgdGhyZWFkIG5vdGljZXMgdGhlIG1f
b3RoZXJDYWxsZWVzIGJlaW5nIG5vbi1udWxsLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZQorICAgICAg
ICAvLyB0aGF0IGl0IHNlZXMgYSBmdWxseSBjcmVhdGVkIG9uZS4KKyAgICAgICAgV1RGOjpzdG9y
ZVN0b3JlRmVuY2UoKTsKKyAgICB9CisgICAgCisgICAgaWYgKCFtX290aGVyQ2FsbGVlcy0+bV90
ZW1wb3JhcnlTcGVjdHJ1bSkgeworICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlT
cGVjdHJ1bSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbFNwZWN0cnVtPigpOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpLS07KSB7
CisgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+YWRkKAor
ICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jYWxsZWUoKSwK
KyAgICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQoKSk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlzIGlz
IHRoZSBmaXJzdCB0aW1lIHdlJ3JlIHNlZWluZyB0aGlzIHByb2ZpbGUgZHVyaW5nIHRoaXMgbG9n
CisgICAgICAgIC8vIHByb2Nlc3NpbmcgaXRlcmF0aW9uLgorICAgICAgICBtZXJnZUJhY2tMb2cu
YXBwZW5kKHRoaXMpOworICAgIH0KKyAgICAKKyAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3Jh
cnlTcGVjdHJ1bS0+YWRkKGNhbGxlZSk7Cit9CisKK3ZvaWQgQ2FsbEVkZ2VQcm9maWxlOjptZXJn
ZUJhY2soKQoreworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAg
CisgICAgQVNTRVJUKG1fb3RoZXJDYWxsZWVzKTsKKyAgICBBU1NFUlQobV9vdGhlckNhbGxlZXMt
Pm1fdGVtcG9yYXJ5U3BlY3RydW0pOworICAgIAorICAgIGlmICghIW1fcHJpbWFyeUNhbGxlZSkK
KyAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0tPmFkZChtX3ByaW1h
cnlDYWxsZWUsIG1fbnVtQ2FsbHNUb1ByaW1hcnkpOworICAgIAorICAgIGlmICghbV9jbG9zdXJl
c0FyZURlc3BlY2lmaWVkKSB7CisgICAgICAgIENhbGxTcGVjdHJ1bSBuZXdTcGVjdHJ1bTsKKyAg
ICAgICAgZm9yIChhdXRvIGVudHJ5IDogKm1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0
cnVtKQorICAgICAgICAgICAgbmV3U3BlY3RydW0uYWRkKGVudHJ5LmtleS5kZXNwZWNpZmllZENs
b3N1cmUoKSwgZW50cnkudmFsdWUpOworICAgICAgICAKKyAgICAgICAgaWYgKG5ld1NwZWN0cnVt
LnNpemUoKSA8IG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5zaXplKCkpIHsK
KyAgICAgICAgICAgICptX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSA9IG5ld1Nw
ZWN0cnVtOworICAgICAgICAgICAgbV9jbG9zdXJlc0FyZURlc3BlY2lmaWVkID0gdHJ1ZTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICAKKyAgICBWZWN0b3I8Q2FsbFNwZWN0cnVtOjpLZXlBbmRDb3Vu
dD4gbGlzdCA9IG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5idWlsZExpc3Qo
KTsKKyAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSA9IG51bGxwdHI7Cisg
ICAgCisgICAgbV9wcmltYXJ5Q2FsbGVlID0gbGlzdC5sYXN0KCkua2V5OworICAgIG1fbnVtQ2Fs
bHNUb1ByaW1hcnkgPSBsaXN0Lmxhc3QoKS5jb3VudDsKKyAgICBsaXN0LnJlbW92ZUxhc3QoKTsK
KyAgICAKKyAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuY2xlYXIoKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGNvdW50ID0gbWF4S25vd25DYWxsZWVzOyBjb3VudC0tICYmICFsaXN0LmlzRW1w
dHkoKTspIHsKKyAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLmFwcGVuZChDYWxs
RWRnZShsaXN0Lmxhc3QoKS5rZXksIGxpc3QubGFzdCgpLmNvdW50KSk7CisgICAgICAgIGxpc3Qu
cmVtb3ZlTGFzdCgpOworICAgIH0KKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBsaXN0LnNp
emUoKTsgaS0tOykKKyAgICAgICAgbV9udW1DYWxsc1RvVW5rbm93bkNlbGwgKz0gbGlzdFtpXS5j
b3VudDsKK30KKwordm9pZCBDYWxsRWRnZVByb2ZpbGU6OmZhZGVCeUhhbGYoKQoreworICAgIG1f
bnVtQ2FsbHNUb1ByaW1hcnkgPj49IDE7CisgICAgbV9udW1DYWxsc1RvTm90Q2VsbCA+Pj0gMTsK
KyAgICBtX251bUNhbGxzVG9Vbmtub3duQ2VsbCA+Pj0gMTsKKyAgICBtX3RvdGFsQ291bnQgPj49
IDE7CisgICAgCisgICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5zaXplKCk7IGktLTspIHsKKyAgICAg
ICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXSA9IENhbGxFZGdlKAorICAgICAg
ICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jYWxsZWUoKSwKKyAgICAg
ICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQoKSA+PiAxKTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBv
cmFyeVNwZWN0cnVtKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiAqbV9vdGhlckNh
bGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0pCisgICAgICAgICAgICAgICAgZW50cnkudmFsdWUg
Pj49IDE7CisgICAgICAgIH0KKyAgICB9Cit9CisKK0NhbGxFZGdlTG9nOjpDYWxsRWRnZUxvZygp
CisgICAgOiBtX3NjYWxlZExvZ0luZGV4KGxvZ1NpemUgKiBzaXplb2YoRW50cnkpKQoreworICAg
IEFTU0VSVCghKG1fc2NhbGVkTG9nSW5kZXggJSBzaXplb2YoRW50cnkpKSk7Cit9CisKK0NhbGxF
ZGdlTG9nOjp+Q2FsbEVkZ2VMb2coKSB7IH0KKworYm9vbCBDYWxsRWRnZUxvZzo6aXNFbmFibGVk
KCkKK3sKKyAgICByZXR1cm4gT3B0aW9uczo6ZW5hYmxlQ2FsbEVkZ2VQcm9maWxpbmcoKSAmJiBP
cHRpb25zOjp1c2VGVExKSVQoKTsKK30KKworI2lmIEVOQUJMRShKSVQpCisKK2V4dGVybiAiQyIg
SklUX09QRVJBVElPTiB2b2lkIG9wZXJhdGlvblByb2Nlc3NDYWxsRWRnZUxvZyhDYWxsRWRnZUxv
ZyopIFdURl9JTlRFUk5BTDsKK2V4dGVybiAiQyIgSklUX09QRVJBVElPTiB2b2lkIG9wZXJhdGlv
blByb2Nlc3NDYWxsRWRnZUxvZyhDYWxsRWRnZUxvZyogbG9nKQoreworICAgIGxvZy0+cHJvY2Vz
c0xvZygpOworfQorCit2b2lkIENhbGxFZGdlTG9nOjplbWl0TG9nQ29kZShDQ2FsbEhlbHBlcnMm
IGppdCwgQ2FsbEVkZ2VQcm9maWxlJiBwcm9maWxlLCBKU1ZhbHVlUmVncyBjYWxsZWVSZWdzKQor
eworICAgIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzID0gMTsKKyAgICAKKyAgICBH
UFJSZWcgc2NyYXRjaEdQUjsKKyAgICBpZiAoIWNhbGxlZVJlZ3MudXNlcyhHUFJJbmZvOjpyZWdU
MCkpCisgICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJbmZvOjpyZWdUMDsKKyAgICBlbHNlIGlmICgh
Y2FsbGVlUmVncy51c2VzKEdQUkluZm86OnJlZ1QxKSkKKyAgICAgICAgc2NyYXRjaEdQUiA9IEdQ
UkluZm86OnJlZ1QxOworICAgIGVsc2UKKyAgICAgICAgc2NyYXRjaEdQUiA9IEdQUkluZm86OnJl
Z1QyOworICAgIAorICAgIGppdC5sb2FkMzIoJm1fc2NhbGVkTG9nSW5kZXgsIHNjcmF0Y2hHUFIp
OworICAgIAorICAgIENDYWxsSGVscGVyczo6SnVtcCBvayA9IGppdC5icmFuY2hUZXN0MzIoQ0Nh
bGxIZWxwZXJzOjpOb25aZXJvLCBzY3JhdGNoR1BSKTsKKyAgICAKKyAgICBBU1NFUlRfVU5VU0VE
KG51bWJlck9mQXJndW1lbnRzLCBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpID49IDEgKyBudW1i
ZXJPZkFyZ3VtZW50cyk7CisgICAgCisgICAgaml0LnN1YlB0cihDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihzdGFja0FsaWdubWVudEJ5dGVzKCkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRl
clJlZ2lzdGVyKTsKKyAgICAKKyAgICBqaXQuc3RvcmVWYWx1ZShjYWxsZWVSZWdzLCBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2l6ZW9m
KEpTVmFsdWUpKSk7CisgICAgaml0LnNldHVwQXJndW1lbnRzKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cih0aGlzKSk7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGJpdHdpc2VfY2FzdDx2b2lkKj4ob3BlcmF0aW9uUHJvY2Vzc0NhbGxFZGdlTG9nKSksIEdQUklu
Zm86Om5vbkFyZ0dQUjApOworICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjApOworICAg
IGppdC5sb2FkVmFsdWUoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIsIHNpemVvZihKU1ZhbHVlKSksIGNhbGxlZVJlZ3MpOworICAgIAorICAg
IGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhY2tBbGlnbm1lbnRCeXRl
cygpKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgCisgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobG9nU2l6ZSAqIHNpemVvZihFbnRyeSkp
LCBzY3JhdGNoR1BSKTsKKyAgICBvay5saW5rKCZqaXQpOworCisgICAgaml0LnN1YjMyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKHNpemVvZihFbnRyeSkpLCBzY3JhdGNoR1BSKTsKKyAgICBq
aXQuc3RvcmUzMihzY3JhdGNoR1BSLCAmbV9zY2FsZWRMb2dJbmRleCk7CisgICAgaml0LmFkZFB0
cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9sb2cpLCBzY3JhdGNoR1BSKTsKKyAgICBq
aXQuc3RvcmVWYWx1ZShjYWxsZWVSZWdzLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQ
UiwgT0JKRUNUX09GRlNFVE9GKEVudHJ5LCBtX3ZhbHVlKSkpOworICAgIGppdC5zdG9yZVB0cihD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJnByb2ZpbGUpLCBDQ2FsbEhlbHBlcnM6OkFkZHJl
c3Moc2NyYXRjaEdQUiwgT0JKRUNUX09GRlNFVE9GKEVudHJ5LCBtX3Byb2ZpbGUpKSk7Cit9CisK
K3ZvaWQgQ2FsbEVkZ2VMb2c6OmVtaXRMb2dDb2RlKAorICAgIENDYWxsSGVscGVycyYgaml0LCBP
d25QdHI8Q2FsbEVkZ2VQcm9maWxlPiYgcHJvZmlsZVBvaW50ZXIsIEpTVmFsdWVSZWdzIGNhbGxl
ZVJlZ3MpCit7CisgICAgaWYgKCFpc0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAor
ICAgIHByb2ZpbGVQb2ludGVyLmNyZWF0ZVRyYW5zYWN0aW9uYWxseSgpOworICAgIGVtaXRMb2dD
b2RlKGppdCwgKnByb2ZpbGVQb2ludGVyLCBjYWxsZWVSZWdzKTsKK30KKworI2VuZGlmIC8vIEVO
QUJMRShKSVQpCisKK3ZvaWQgQ2FsbEVkZ2VMb2c6OnByb2Nlc3NMb2coKQoreworICAgIEFTU0VS
VCghKG1fc2NhbGVkTG9nSW5kZXggJSBzaXplb2YoRW50cnkpKSk7CisgICAgCisgICAgQ2FsbEVk
Z2VQcm9maWxlVmVjdG9yIG1lcmdlQmFja0xvZzsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSBtX3NjYWxlZExvZ0luZGV4IC8gc2l6ZW9mKEVudHJ5KTsgaSA8IGxvZ1NpemU7ICsraSkKKyAg
ICAgICAgbV9sb2dbaV0ubV9wcm9maWxlLT5hZGQobV9sb2dbaV0ubV92YWx1ZSwgbWVyZ2VCYWNr
TG9nKTsKKyAgICAKKyAgICBtX3NjYWxlZExvZ0luZGV4ID0gbG9nU2l6ZSAqIHNpemVvZihFbnRy
eSk7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gbWVyZ2VCYWNrTG9nLnNpemUoKTsgaS0t
OykKKyAgICAgICAgbWVyZ2VCYWNrTG9nW2ldLT5tZXJnZUJhY2soKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRn
ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbEVkZ2VQcm9maWxlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBDYWxsRWRnZVByb2ZpbGVfaAorI2RlZmluZSBDYWxsRWRnZVByb2ZpbGVfaAorCisjaW5jbHVk
ZSAiQ2FsbEVkZ2UuaCIKKyNpbmNsdWRlICJDYWxsVmFyaWFudC5oIgorI2luY2x1ZGUgIkNvbmN1
cnJlbnRKSVRMb2NrLmgiCisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSA8d3RmL093blB0
ci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQ0NhbGxIZWxwZXJzOworY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworCitjbGFzcyBDYWxsRWRnZUxvZzsKK2NsYXNzIENhbGxFZGdl
UHJvZmlsZTsKK3R5cGVkZWYgVmVjdG9yPENhbGxFZGdlUHJvZmlsZSosIDEwPiBDYWxsRWRnZVBy
b2ZpbGVWZWN0b3I7CisKK2NsYXNzIENhbGxFZGdlUHJvZmlsZSB7CitwdWJsaWM6CisgICAgQ2Fs
bEVkZ2VQcm9maWxlKCk7CisgICAgCisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbnVtQ2FsbHNUb05v
dENlbGwoKSBjb25zdCB7IHJldHVybiBtX251bUNhbGxzVG9Ob3RDZWxsOyB9CisgICAgQ2FsbEVk
Z2VDb3VudFR5cGUgbnVtQ2FsbHNUb1Vua25vd25DZWxsKCkgY29uc3QgeyByZXR1cm4gbV9udW1D
YWxsc1RvVW5rbm93bkNlbGw7IH0KKyAgICBDYWxsRWRnZUNvdW50VHlwZSBudW1DYWxsc1RvS25v
d25DZWxscygpIGNvbnN0OworICAgIAorICAgIENhbGxFZGdlQ291bnRUeXBlIHRvdGFsQ2FsbHMo
KSBjb25zdCB7IHJldHVybiBtX3RvdGFsQ291bnQ7IH0KKyAgICAKKyAgICAvLyBDYWxsIHdoaWxl
IGhvbGRpbmcgdGhlIG93bmluZyBDb2RlQmxvY2sncyBsb2NrLgorICAgIENhbGxFZGdlTGlzdCBj
YWxsRWRnZXMoKSBjb25zdDsKKyAgICAKKyAgICB2b2lkIHZpc2l0V2VhaygpOworICAgIAorcHJp
dmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQ2FsbEVkZ2VMb2c7CisgICAgCisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIG1heEtub3duQ2FsbGVlcyA9IDU7CisgICAgCisgICAgdm9pZCBhZGQoSlNW
YWx1ZSwgQ2FsbEVkZ2VQcm9maWxlVmVjdG9yJiBtZXJnZUJhY2tMb2cpOworICAgIAorICAgIGJv
b2wgd29ydGhEZXNwZWNpZnlpbmcoKTsKKyAgICB2b2lkIGFkZFNsb3coQ2FsbFZhcmlhbnQsIENh
bGxFZGdlUHJvZmlsZVZlY3RvciYgbWVyZ2VCYWNrTG9nKTsKKyAgICB2b2lkIG1lcmdlQmFjaygp
OworICAgIHZvaWQgZmFkZUJ5SGFsZigpOworICAgIAorICAgIC8vIEl0J3MgY2hlYXBlciB0byBs
ZXQgdGhpcyBoYXZlIGl0cyBvd24gbG9jay4gSXQgbmVlZHMgdG8gYmUgYWJsZSB0byBmaW5kIHdo
aWNoIGxvY2sgdG8KKyAgICAvLyBsb2NrLiBOb3JtYWxseSBpdCB3b3VsZCBsb2NrIHRoZSBvd25p
bmcgQ29kZUJsb2NrJ3MgbG9jaywgYnV0IHRoYXQgd291bGQgcmVxdWlyZSBhCisgICAgLy8gcG9p
bnRlci13aWR0aCB3b3JkIHRvIHBvaW50IGF0IHRoZSBDb2RlQmxvY2suIEhhdmluZyB0aGUgYnl0
ZS1zaXplZCBsb2NrIGhlcmUgaXMKKyAgICAvLyBjaGVhcGVyLiBIb3dldmVyLCB0aGlzIG1lYW5z
IHRoYXQgdGhlIHJlbGF0aW9uc2hpcCB3aXRoIHRoZSBDb2RlQmxvY2sgbG9jayBpczoKKyAgICAv
LyBhY3F1aXJlIHRoZSBDb2RlQmxvY2sgbG9jayBiZWZvcmUgdGhpcyBvbmUuCisgICAgbXV0YWJs
ZSBDb25jdXJyZW50SklUTG9jayBtX2xvY2s7CisgICAgCisgICAgYm9vbCBtX2Nsb3N1cmVzQXJl
RGVzcGVjaWZpZWQ7CisgICAgCisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbV9udW1DYWxsc1RvUHJp
bWFyeTsKKyAgICBDYWxsRWRnZUNvdW50VHlwZSBtX251bUNhbGxzVG9Ob3RDZWxsOworICAgIENh
bGxFZGdlQ291bnRUeXBlIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxsOworICAgIENhbGxFZGdlQ291
bnRUeXBlIG1fdG90YWxDb3VudDsKKyAgICBDYWxsVmFyaWFudCBtX3ByaW1hcnlDYWxsZWU7Cisg
ICAgCisgICAgdHlwZWRlZiBTcGVjdHJ1bTxDYWxsVmFyaWFudCwgQ2FsbEVkZ2VDb3VudFR5cGU+
IENhbGxTcGVjdHJ1bTsKKyAgICAKKyAgICBzdHJ1Y3QgU2Vjb25kYXJ5IHsKKyAgICAgICAgVmVj
dG9yPENhbGxFZGdlPiBtX3Byb2Nlc3NlZDsgLy8gUHJvY2Vzc2VkIGJ1dCBub3QgbmVjZXNzYXJp
bHkgc29ydGVkLgorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbFNwZWN0cnVtPiBtX3RlbXBv
cmFyeVNwZWN0cnVtOworICAgIH07CisgICAgCisgICAgc3RkOjp1bmlxdWVfcHRyPFNlY29uZGFy
eT4gbV9vdGhlckNhbGxlZXM7Cit9OworCitjbGFzcyBDYWxsRWRnZUxvZyB7CitwdWJsaWM6Cisg
ICAgQ2FsbEVkZ2VMb2coKTsKKyAgICB+Q2FsbEVkZ2VMb2coKTsKKworICAgIHN0YXRpYyBib29s
IGlzRW5hYmxlZCgpOworICAgIAorI2lmIEVOQUJMRShKSVQpCisgICAgdm9pZCBlbWl0TG9nQ29k
ZShDQ2FsbEhlbHBlcnMmLCBDYWxsRWRnZVByb2ZpbGUmLCBKU1ZhbHVlUmVncyBjYWxsZWVSZWdz
KTsgLy8gQXNzdW1lcyB0aGF0IHN0YWNrIGlzIGFsaWduZWQsIGFsbCB2b2xhdGlsZSByZWdpc3Rl
cnMgLSBvdGhlciB0aGFuIGNhbGxlZUdQUiAtIGFyZSBjbG9iYmVyYWJsZSwgYW5kIHRoZSBwYXJh
bWV0ZXIgc3BhY2UgaXMgaW4gdXNlLgorICAgIAorICAgIC8vIFNhbWUgYXMgYWJvdmUgYnV0IGNy
ZWF0ZXMgYSBDYWxsRWRnZVByb2ZpbGUgaW5zdGFuY2UgaWYgb25lIGRpZCBub3QgYWxyZWFkeSBl
eGlzdC4gRG9lcworICAgIC8vIHRoaXMgaW4gYSB0aHJlYWQtc2FmZSBtYW5uZXIgYnkgY2FsbGlu
ZyBPd25QdHI6OmNyZWF0ZVRyYW5zYWN0aW9uYWxseS4KKyAgICB2b2lkIGVtaXRMb2dDb2RlKEND
YWxsSGVscGVycyYsIE93blB0cjxDYWxsRWRnZVByb2ZpbGU+JiwgSlNWYWx1ZVJlZ3MgY2FsbGVl
UmVncyk7CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKyAgICAKKyAgICB2b2lkIHByb2Nlc3NMb2co
KTsKKyAgICAKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb2dTaXplID0gMTAwMDA7CisgICAgCisg
ICAgc3RydWN0IEVudHJ5IHsKKyAgICAgICAgSlNWYWx1ZSBtX3ZhbHVlOworICAgICAgICBDYWxs
RWRnZVByb2ZpbGUqIG1fcHJvZmlsZTsKKyAgICB9OworICAgIAorICAgIHVuc2lnbmVkIG1fc2Nh
bGVkTG9nSW5kZXg7CisgICAgRW50cnkgbV9sb2dbbG9nU2l6ZV07Cit9OworCit9IC8vIG5hbWVz
cGFjZSBKU0MKKworI2VuZGlmIC8vIENhbGxFZGdlUHJvZmlsZV9oCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZUlubGlu
ZXMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
RWRnZVByb2ZpbGVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENhbGxF
ZGdlUHJvZmlsZUlubGluZXNfaAorI2RlZmluZSBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzX2gKKwor
I2luY2x1ZGUgIkNhbGxFZGdlUHJvZmlsZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworaW5saW5l
IENhbGxFZGdlUHJvZmlsZTo6Q2FsbEVkZ2VQcm9maWxlKCkKKyAgICA6IG1fY2xvc3VyZXNBcmVE
ZXNwZWNpZmllZChmYWxzZSkKKyAgICAsIG1fbnVtQ2FsbHNUb1ByaW1hcnkoMCkKKyAgICAsIG1f
bnVtQ2FsbHNUb05vdENlbGwoMCkKKyAgICAsIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxsKDApCisg
ICAgLCBtX3RvdGFsQ291bnQoMCkKKyAgICAsIG1fcHJpbWFyeUNhbGxlZShudWxscHRyKQorewor
fQorCitBTFdBWVNfSU5MSU5FIHZvaWQgQ2FsbEVkZ2VQcm9maWxlOjphZGQoSlNWYWx1ZSB2YWx1
ZSwgQ2FsbEVkZ2VQcm9maWxlVmVjdG9yJiBtZXJnZUJhY2tMb2cpCit7CisgICAgdW5zaWduZWQg
bmV3VG90YWxDb3VudCA9IG1fdG90YWxDb3VudCArIDE7CisgICAgaWYgKFVOTElLRUxZKCFuZXdU
b3RhbENvdW50KSkgeworICAgICAgICBmYWRlQnlIYWxmKCk7IC8vIFRhY2tsZSBvdmVyZmxvd3Mg
YnkgZGl2aWRpbmcgYWxsIGNvdW50cyBieSB0d28uCisgICAgICAgIG5ld1RvdGFsQ291bnQgPSBt
X3RvdGFsQ291bnQgKyAxOworICAgIH0KKyAgICBBU1NFUlQobmV3VG90YWxDb3VudCk7CisgICAg
bV90b3RhbENvdW50ID0gbmV3VG90YWxDb3VudDsKKyAgICAKKyAgICBpZiAoVU5MSUtFTFkoIXZh
bHVlLmlzQ2VsbCgpKSkgeworICAgICAgICBtX251bUNhbGxzVG9Ob3RDZWxsKys7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBDYWxsVmFyaWFudCBjYWxsZWUgPSBDYWxsVmFyaWFudCh2
YWx1ZS5hc0NlbGwoKSk7CisgICAgCisgICAgaWYgKG1fY2xvc3VyZXNBcmVEZXNwZWNpZmllZCkK
KyAgICAgICAgY2FsbGVlID0gY2FsbGVlLmRlc3BlY2lmaWVkQ2xvc3VyZSgpOworICAgIAorICAg
IGlmIChVTkxJS0VMWSghbV9wcmltYXJ5Q2FsbGVlKSkgeworICAgICAgICBtX3ByaW1hcnlDYWxs
ZWUgPSBjYWxsZWU7CisgICAgICAgIG1fbnVtQ2FsbHNUb1ByaW1hcnkgPSAxOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBpZiAoTElLRUxZKG1fcHJpbWFyeUNhbGxlZSA9
PSBjYWxsZWUpKSB7CisgICAgICAgIG1fbnVtQ2FsbHNUb1ByaW1hcnkrKzsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAgICAgCisgICAgaWYgKFVOTElLRUxZKCFtX290aGVyQ2FsbGVlcykp
IHsKKyAgICAgICAgYWRkU2xvdyhjYWxsZWUsIG1lcmdlQmFja0xvZyk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgICAgIAorICAgIENhbGxTcGVjdHJ1bSogc2Vjb25kYXJ5ID0gbV9vdGhl
ckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0uZ2V0KCk7CisgICAgaWYgKCFzZWNvbmRhcnkp
IHsKKyAgICAgICAgYWRkU2xvdyhjYWxsZWUsIG1lcmdlQmFja0xvZyk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgICAgIAorICAgIHNlY29uZGFyeS0+YWRkKGNhbGxlZSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ2FsbEVkZ2VQcm9maWxlSW5saW5lc19oCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8u
Y3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsMTEgQEAgdm9pZCBD
YWxsTGlua0luZm86OnZpc2l0V2VhayhSZXBhdGNoQnVmZgogICAgIH0KICAgICBpZiAoISFsYXN0
U2VlbkNhbGxlZSAmJiAhSGVhcDo6aXNNYXJrZWQobGFzdFNlZW5DYWxsZWUuZ2V0KCkpKQogICAg
ICAgICBsYXN0U2VlbkNhbGxlZS5jbGVhcigpOworICAgIAorICAgIGlmIChjYWxsRWRnZVByb2Zp
bGUpIHsKKyAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CisgICAgICAgIGNhbGxFZGdlUHJv
ZmlsZS0+dmlzaXRXZWFrKCk7CisgICAgfQogfQogCiBDYWxsTGlua0luZm8mIENhbGxMaW5rSW5m
bzo6ZHVtbXkoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5r
SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TGlua0luZm8uaAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxMaW5rSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAj
aWZuZGVmIENhbGxMaW5rSW5mb19oCiAjZGVmaW5lIENhbGxMaW5rSW5mb19oCiAKKyNpbmNsdWRl
ICJDYWxsRWRnZVByb2ZpbGUuaCIKICNpbmNsdWRlICJDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmgi
CiAjaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9u
S2luZC5oIgpAQCAtMzMsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKKyNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKQEAgLTg4LDYgKzkwLDcgQEAgc3RydWN0IENhbGxMaW5rSW5mbyA6IHB1YmxpYyBC
YXNpY1Jhd1NlbgogICAgIHVuc2lnbmVkIGNhbGxlZUdQUiA6IDg7CiAgICAgdW5zaWduZWQgc2xv
d1BhdGhDb3VudDsKICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW47CisgICAgT3duUHRyPENhbGxF
ZGdlUHJvZmlsZT4gY2FsbEVkZ2VQcm9maWxlOwogCiAgICAgYm9vbCBpc0xpbmtlZCgpIHsgcmV0
dXJuIHN0dWIgfHwgY2FsbGVlOyB9CiAgICAgdm9pZCB1bmxpbmsoUmVwYXRjaEJ1ZmZlciYpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0
dXMuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw1NCArMzIsMjIgQEAK
ICNpbmNsdWRlICJMTEludENhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
ICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CisjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewogCiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7
CiAKIENhbGxMaW5rU3RhdHVzOjpDYWxsTGlua1N0YXR1cyhKU1ZhbHVlIHZhbHVlKQotICAgIDog
bV9jYWxsVGFyZ2V0KHZhbHVlKQotICAgICwgbV9leGVjdXRhYmxlKDApCi0gICAgLCBtX2NvdWxk
VGFrZVNsb3dQYXRoKGZhbHNlKQorICAgIDogbV9jb3VsZFRha2VTbG93UGF0aChmYWxzZSkKICAg
ICAsIG1faXNQcm92ZWQoZmFsc2UpCiB7Ci0gICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxs
KCkpCisgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkpIHsKKyAgICAgICAgbV9jb3Vs
ZFRha2VTbG93UGF0aCA9IHRydWU7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgCi0gICAg
aWYgKCF2YWx1ZS5hc0NlbGwoKS0+aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIAotICAgIG1fZXhlY3V0YWJsZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4o
dmFsdWUuYXNDZWxsKCkpLT5leGVjdXRhYmxlKCk7Ci19Ci0KLUpTRnVuY3Rpb24qIENhbGxMaW5r
U3RhdHVzOjpmdW5jdGlvbigpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2NhbGxUYXJnZXQgfHwgIW1f
Y2FsbFRhcmdldC5pc0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgaWYgKCFt
X2NhbGxUYXJnZXQuYXNDZWxsKCktPmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpCi0gICAg
ICAgIHJldHVybiAwOwotICAgIAotICAgIHJldHVybiBqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2Fs
bFRhcmdldC5hc0NlbGwoKSk7Ci19Ci0KLUludGVybmFsRnVuY3Rpb24qIENhbGxMaW5rU3RhdHVz
OjppbnRlcm5hbEZ1bmN0aW9uKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fY2FsbFRhcmdldCB8fCAh
bV9jYWxsVGFyZ2V0LmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBpZiAo
IW1fY2FsbFRhcmdldC5hc0NlbGwoKS0+aW5oZXJpdHMoSW50ZXJuYWxGdW5jdGlvbjo6aW5mbygp
KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgcmV0dXJuIGpzQ2FzdDxJbnRlcm5hbEZ1
bmN0aW9uKj4obV9jYWxsVGFyZ2V0LmFzQ2VsbCgpKTsKLX0KLQotSW50cmluc2ljIENhbGxMaW5r
U3RhdHVzOjppbnRyaW5zaWNGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKSBjb25zdAot
ewotICAgIGlmICghbV9leGVjdXRhYmxlKQotICAgICAgICByZXR1cm4gTm9JbnRyaW5zaWM7Ci0g
ICAgCi0gICAgcmV0dXJuIG1fZXhlY3V0YWJsZS0+aW50cmluc2ljRm9yKGtpbmQpOworICAgIG1f
ZWRnZXMuYXBwZW5kKENhbGxFZGdlKENhbGxWYXJpYW50KHZhbHVlLmFzQ2VsbCgpKSwgMSkpOwog
fQogCiBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludChjb25z
dCBDb25jdXJyZW50SklUTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKQEAgLTg3LDcgKzU1LDcgQEAgQ2FsbExpbmtTdGF0dXMg
Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcgogICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2Nr
KTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAjaWYgRU5BQkxFKERGR19KSVQp
Ci0gICAgaWYgKHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVu
dEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZEZ1bmN0aW9uKSkpIHsKKyAgICBpZiAocHJvZmls
ZWRCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNv
ZGVJbmRleCwgQmFkQ2VsbCkpKSB7CiAgICAgICAgIC8vIFdlIGNvdWxkIGZvcmNlIHRoaXMgdG8g
YmUgYSBjbG9zdXJlIGNhbGwsIGJ1dCBpbnN0ZWFkIHdlJ2xsIGp1c3QgYXNzdW1lIHRoYXQgaXQK
ICAgICAgICAgLy8gdGFrZXMgc2xvdyBwYXRoLgogICAgICAgICByZXR1cm4gdGFrZXNTbG93UGF0
aCgpOwpAQCAtMTI1LDcgKzkzLDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNv
bXB1dGVGbwogICAgIGlmICghY2FsbExpbmtJbmZvKQogICAgICAgICByZXR1cm4gY29tcHV0ZUZy
b21MTEludChsb2NrZXIsIHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOwogICAgIAotICAg
IHJldHVybiBjb21wdXRlRm9yKGxvY2tlciwgKmNhbGxMaW5rSW5mbywgZXhpdFNpdGVEYXRhKTsK
KyAgICByZXR1cm4gY29tcHV0ZUZvcihsb2NrZXIsIHByb2ZpbGVkQmxvY2ssICpjYWxsTGlua0lu
Zm8sIGV4aXRTaXRlRGF0YSk7CiAjZWxzZQogICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygpOwog
I2VuZGlmCkBAIC0xMzksMTAgKzEwNywxMCBAQCBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRh
IENhbGxMaW5rU3RhCiAgICAgCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgZXhpdFNpdGVEYXRh
Lm1fdGFrZXNTbG93UGF0aCA9Ci0gICAgICAgIHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxv
Y2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENhY2hlLCBleGl0
aW5nSklUVHlwZSkpCisgICAgICAgIHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwg
REZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZFR5cGUsIGV4aXRpbmdKSVRU
eXBlKSkKICAgICAgICAgfHwgcHJvZmlsZWRCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6
OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkRXhlY3V0YWJsZSwgZXhpdGluZ0pJ
VFR5cGUpKTsKICAgICBleGl0U2l0ZURhdGEubV9iYWRGdW5jdGlvbiA9Ci0gICAgICAgIHByb2Zp
bGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVj
b2RlSW5kZXgsIEJhZEZ1bmN0aW9uLCBleGl0aW5nSklUVHlwZSkpOworICAgICAgICBwcm9maWxl
ZEJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29k
ZUluZGV4LCBCYWRDZWxsLCBleGl0aW5nSklUVHlwZSkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0obG9ja2VyKTsKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CkBAIC0xNTQsNyAr
MTIyLDM0IEBAIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgQ2FsbExpbmtTdGEKIH0KIAog
I2lmIEVOQUJMRShKSVQpCi1DYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZv
cihjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8p
CitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKKyAgICBjb25zdCBD
b25jdXJyZW50SklUTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQ2Fs
bExpbmtJbmZvJiBjYWxsTGlua0luZm8pCit7CisgICAgLy8gV2UgZG9uJ3QgcmVhbGx5IG5lZWQg
dGhpcywgYnV0IGFueXRpbWUgd2UgaGF2ZSB0byBkZWJ1ZyB0aGlzIGNvZGUsIGl0IGJlY29tZXMg
aW5kaXNwZW5zYWJsZS4KKyAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CisgICAgCisg
ICAgaWYgKE9wdGlvbnM6OmNhbGxTdGF0dXNTaG91bGRVc2VDYWxsRWRnZVByb2ZpbGUoKSkgewor
ICAgICAgICAvLyBBbHdheXMgdHJ1c3QgdGhlIGNhbGwgZWRnZSBwcm9maWxlIG92ZXIgYW55dGhp
bmcgZWxzZSBzaW5jZSB0aGlzIGhhcyBwcmVjaXNlIGNvdW50cy4KKyAgICAgICAgLy8gSXQgY2Fu
IG1ha2UgdGhlIGJlc3QgcG9zc2libGUgZGVjaXNpb24gYmVjYXVzZSBpdCBuZXZlciAiZm9yZ2V0
cyIgd2hhdCBoYXBwZW5lZCBmb3IgYW55CisgICAgICAgIC8vIGNhbGwsIHdpdGggdGhlIGV4Y2Vw
dGlvbiBvZiBmYWRpbmcgb3V0IHRoZSBjb3VudHMgb2Ygb2xkIGNhbGxzIChmb3IgZXhhbXBsZSBp
ZiB0aGUKKyAgICAgICAgLy8gY291bnRlciB0eXBlIGlzIDE2LWJpdCB0aGVuIGNhbGxzIHRoYXQg
aGFwcGVuZWQgbW9yZSB0aGFuIDJeMTYgY2FsbHMgYWdvIGFyZSBnaXZlbiBoYWxmCisgICAgICAg
IC8vIHdlaWdodCwgYW5kIHRoaXMgY29tcG91bmRzIGZvciBldmVyeSAyXjE1IFtzaWNdIGNhbGxz
IGFmdGVyIHRoYXQpLiBUaGUgY29tYmluYXRpb24gb2YKKyAgICAgICAgLy8gaGlnaCBmaWRlbGl0
eSBmb3IgcmVjZW50IGNhbGxzIGFuZCBmYWRpbmcgZm9yIG9sZGVyIGNhbGxzIG1ha2VzIHRoaXMg
dGhlIG1vc3QgdXNlZnVsCisgICAgICAgIC8vIG1lY2hhbWlzbSBvZiBjaG9vc2luZyBob3cgdG8g
b3B0aW1pemUgZnV0dXJlIGNhbGxzLgorICAgICAgICBDYWxsRWRnZVByb2ZpbGUqIGVkZ2VQcm9m
aWxlID0gY2FsbExpbmtJbmZvLmNhbGxFZGdlUHJvZmlsZS5nZXQoKTsKKyAgICAgICAgV1RGOjps
b2FkTG9hZEZlbmNlKCk7CisgICAgICAgIGlmIChlZGdlUHJvZmlsZSkgeworICAgICAgICAgICAg
Q2FsbExpbmtTdGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZyb21DYWxsRWRnZVByb2ZpbGUoZWRnZVBy
b2ZpbGUpOworICAgICAgICAgICAgaWYgKCEhcmVzdWx0KQorICAgICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIGNvbXB1dGVGcm9t
Q2FsbExpbmtJbmZvKGxvY2tlciwgY2FsbExpbmtJbmZvKTsKK30KKworQ2FsbExpbmtTdGF0dXMg
Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tQ2FsbExpbmtJbmZvKAorICAgIGNvbnN0IENvbmN1
cnJlbnRKSVRMb2NrZXImLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykKIHsKICAgICAvLyBO
b3RlIHRoYXQgZGVzcGl0ZSByZXF1aXJpbmcgdGhhdCB0aGUgbG9ja2VyIGlzIGhlbGQsIHRoaXMg
Y29kZSBpcyByYWN5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHRoZSBDYWxsTGlua0luZm86IGl0
IG1heSBnZXQgY2xlYXJlZCB3aGlsZSB0aGlzIGNvZGUgcnVucyEgVGhpcyBpcyBiZWNhdXNlCkBA
IC0xNzcsNyArMTcyLDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVG
bwogICAgIAogICAgIEpTRnVuY3Rpb24qIHRhcmdldCA9IGNhbGxMaW5rSW5mby5sYXN0U2VlbkNh
bGxlZS5nZXQoKTsKICAgICBpZiAoIXRhcmdldCkKLSAgICAgICAgcmV0dXJuIENhbGxMaW5rU3Rh
dHVzKCk7CisgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7CiAgICAgCiAgICAgaWYgKGNh
bGxMaW5rSW5mby5oYXNTZWVuQ2xvc3VyZSkKICAgICAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVz
KHRhcmdldC0+ZXhlY3V0YWJsZSgpKTsKQEAgLTE4NSwxNSArMTgwLDQzIEBAIENhbGxMaW5rU3Rh
dHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMo
dGFyZ2V0KTsKIH0KIAotQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3Io
Ci0gICAgY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBDYWxsTGlua0luZm8mIGNh
bGxMaW5rSW5mbywgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSkKK0NhbGxMaW5rU3RhdHVzIENh
bGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUNhbGxFZGdlUHJvZmlsZShDYWxsRWRnZVByb2ZpbGUq
IGVkZ2VQcm9maWxlKQogewotICAgIGlmIChleGl0U2l0ZURhdGEubV90YWtlc1Nsb3dQYXRoKQor
ICAgIC8vIEluIGNhc2VzIHdoZXJlIHRoZSBjYWxsIGVkZ2UgcHJvZmlsZSBzYXcgbm90aGluZywg
dXNlIHRoZSBDYWxsTGlua0luZm8gaW5zdGVhZC4KKyAgICBpZiAoIWVkZ2VQcm9maWxlLT50b3Rh
bENhbGxzKCkpCisgICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygpOworICAgIAorICAgIC8v
IFRvIGRvIGFueXRoaW5nIG1lYW5pbmdmdWwsIHdlIHJlcXVpcmUgdGhhdCB0aGUgbWFqb3JpdHkg
b2YgY2FsbHMgYXJlIHRvIHNvbWV0aGluZyB3ZQorICAgIC8vIGtub3cgaG93IHRvIGhhbmRsZS4K
KyAgICB1bnNpZ25lZCBudW1DYWxsc1RvS25vd24gPSBlZGdlUHJvZmlsZS0+bnVtQ2FsbHNUb0tu
b3duQ2VsbHMoKTsKKyAgICB1bnNpZ25lZCBudW1DYWxsc1RvVW5rbm93biA9IGVkZ2VQcm9maWxl
LT5udW1DYWxsc1RvTm90Q2VsbCgpICsgZWRnZVByb2ZpbGUtPm51bUNhbGxzVG9Vbmtub3duQ2Vs
bCgpOworICAgIAorICAgIC8vIFdlIHJlcXVpcmUgdGhhdCB0aGUgbWFqb3JpdHkgb2YgY2FsbHMg
d2VyZSB0byBzb21ldGhpbmcgdGhhdCB3ZSBjb3VsZCBwb3NzaWJseSBpbmxpbmUuCisgICAgaWYg
KG51bUNhbGxzVG9Lbm93biA8PSBudW1DYWxsc1RvVW5rbm93bikKKyAgICAgICAgcmV0dXJuIHRh
a2VzU2xvd1BhdGgoKTsKKyAgICAKKyAgICAvLyBXZSByZXF1aXJlIHRoYXQgdGhlIG51bWJlciBv
ZiBzdWNoIGNhbGxzIGlzIGdyZWF0ZXIgdGhhbiBzb21lIG1pbmltYWwgdGhyZXNob2xkLCBzbyB0
aGF0IHdlCisgICAgLy8gYXZvaWQgaW5saW5pbmcgY29tcGxldGVseSBjb2xkIGNhbGxzLgorICAg
IGlmIChudW1DYWxsc1RvS25vd24gPCBPcHRpb25zOjpmcmVxdWVudENhbGxUaHJlc2hvbGQoKSkK
ICAgICAgICAgcmV0dXJuIHRha2VzU2xvd1BhdGgoKTsKICAgICAKLSAgICBDYWxsTGlua1N0YXR1
cyByZXN1bHQgPSBjb21wdXRlRm9yKGxvY2tlciwgY2FsbExpbmtJbmZvKTsKKyAgICBDYWxsTGlu
a1N0YXR1cyByZXN1bHQ7CisgICAgcmVzdWx0Lm1fZWRnZXMgPSBlZGdlUHJvZmlsZS0+Y2FsbEVk
Z2VzKCk7CisgICAgcmVzdWx0Lm1fY291bGRUYWtlU2xvd1BhdGggPSAhIW51bUNhbGxzVG9Vbmtu
b3duOworICAgIHJlc3VsdC5tX2NhblRydXN0Q291bnRzID0gdHJ1ZTsKKyAgICAKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZv
cigKKyAgICBjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayogcHJv
ZmlsZWRCbG9jaywgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sCisgICAgRXhpdFNpdGVEYXRh
IGV4aXRTaXRlRGF0YSkKK3sKKyAgICBDYWxsTGlua1N0YXR1cyByZXN1bHQgPSBjb21wdXRlRm9y
KGxvY2tlciwgcHJvZmlsZWRCbG9jaywgY2FsbExpbmtJbmZvKTsKICAgICBpZiAoZXhpdFNpdGVE
YXRhLm1fYmFkRnVuY3Rpb24pCiAgICAgICAgIHJlc3VsdC5tYWtlQ2xvc3VyZUNhbGwoKTsKKyAg
ICBpZiAoZXhpdFNpdGVEYXRhLm1fdGFrZXNTbG93UGF0aCkKKyAgICAgICAgcmVzdWx0Lm1fY291
bGRUYWtlU2xvd1BhdGggPSB0cnVlOwogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0y
MjcsNyArMjUwLDcgQEAgdm9pZCBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZURGR1N0YXR1c2VzKAog
ICAgICAgICAKICAgICAgICAgewogICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIoZGZnQ29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgbWFwLmFkZChpbmZvLmNvZGVP
cmlnaW4sIGNvbXB1dGVGb3IobG9ja2VyLCBpbmZvLCBleGl0U2l0ZURhdGEpKTsKKyAgICAgICAg
ICAgIG1hcC5hZGQoaW5mby5jb2RlT3JpZ2luLCBjb21wdXRlRm9yKGxvY2tlciwgZGZnQ29kZUJs
b2NrLCBpbmZvLCBleGl0U2l0ZURhdGEpKTsKICAgICAgICAgfQogICAgIH0KICNlbHNlCkBAIC0y
NTYsNiArMjc5LDMxIEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8K
ICAgICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2Rl
SW5kZXgsIGJhc2VsaW5lTWFwKTsKIH0KIAorYm9vbCBDYWxsTGlua1N0YXR1czo6aXNDbG9zdXJl
Q2FsbCgpIGNvbnN0Cit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9lZGdlcy5zaXplKCk7IGkt
LTspIHsKKyAgICAgICAgaWYgKG1fZWRnZXNbaV0uY2FsbGVlKCkuaXNDbG9zdXJlQ2FsbCgpKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwor
dm9pZCBDYWxsTGlua1N0YXR1czo6bWFrZUNsb3N1cmVDYWxsKCkKK3sKKyAgICBBU1NFUlQoIW1f
aXNQcm92ZWQpOworICAgIGZvciAodW5zaWduZWQgaSA9IG1fZWRnZXMuc2l6ZSgpOyBpLS07KQor
ICAgICAgICBtX2VkZ2VzW2ldID0gbV9lZGdlc1tpXS5kZXNwZWNpZmllZENsb3N1cmUoKTsKKyAg
ICAKKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICAvLyBEb2luZyB0aGlzIHNo
b3VsZCBub3QgaGF2ZSBjcmVhdGVkIGR1cGxpY2F0ZXMsIGJlY2F1c2UgdGhlIENhbGxFZGdlUHJv
ZmlsZQorICAgICAgICAvLyBzaG91bGQgZGVzcGVjaWZ5IGNsb3N1cmVzIGlmIGRvaW5nIHNvIHdv
dWxkIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGtub3duIGNhbGxlZXMuCisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX2VkZ2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGogPSBpICsgMTsgaiA8IG1fZWRnZXMuc2l6ZSgpOyArK2opCisgICAgICAgICAg
ICAgICAgQVNTRVJUKG1fZWRnZXNbaV0uY2FsbGVlKCkgIT0gbV9lZGdlc1tqXS5jYWxsZWUoKSk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgQ2FsbExpbmtTdGF0dXM6OmR1bXAoUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBpZiAoIWlzU2V0KCkpIHsKQEAgLTI3MSwxNCArMzE5
LDcgQEAgdm9pZCBDYWxsTGlua1N0YXR1czo6ZHVtcChQcmludFN0cmVhbSYgbwogICAgIGlmICht
X2NvdWxkVGFrZVNsb3dQYXRoKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsICJDb3VsZCBUYWtl
IFNsb3cgUGF0aCIpOwogICAgIAotICAgIGlmIChtX2NhbGxUYXJnZXQpCi0gICAgICAgIG91dC5w
cmludChjb21tYSwgIktub3duIHRhcmdldDogIiwgbV9jYWxsVGFyZ2V0KTsKLSAgICAKLSAgICBp
ZiAobV9leGVjdXRhYmxlKSB7Ci0gICAgICAgIG91dC5wcmludChjb21tYSwgIkV4ZWN1dGFibGUv
Q2FsbEhhc2g6ICIsIFJhd1BvaW50ZXIobV9leGVjdXRhYmxlKSk7Ci0gICAgICAgIGlmICghaXND
b21waWxhdGlvblRocmVhZCgpKQotICAgICAgICAgICAgb3V0LnByaW50KCIvIiwgbV9leGVjdXRh
YmxlLT5oYXNoRm9yKENvZGVGb3JDYWxsKSk7Ci0gICAgfQorICAgIG91dC5wcmludChsaXN0RHVt
cChtX2VkZ2VzKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHJldmlzaW9uIDE3Mjg1
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Niw5ICs0Niw5IEBAIHN0cnVjdCBDYWxsTGlua0luZm87CiBjbGFz
cyBDYWxsTGlua1N0YXR1cyB7CiBwdWJsaWM6CiAgICAgQ2FsbExpbmtTdGF0dXMoKQotICAgICAg
ICA6IG1fZXhlY3V0YWJsZSgwKQotICAgICAgICAsIG1fY291bGRUYWtlU2xvd1BhdGgoZmFsc2Up
CisgICAgICAgIDogbV9jb3VsZFRha2VTbG93UGF0aChmYWxzZSkKICAgICAgICAgLCBtX2lzUHJv
dmVkKGZhbHNlKQorICAgICAgICAsIG1fY2FuVHJ1c3RDb3VudHMoZmFsc2UpCiAgICAgewogICAg
IH0KICAgICAKQEAgLTYxLDEwICs2MSwxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgZXhwbGljaXQg
Q2FsbExpbmtTdGF0dXMoSlNWYWx1ZSk7CiAgICAgCi0gICAgQ2FsbExpbmtTdGF0dXMoRXhlY3V0
YWJsZUJhc2UqIGV4ZWN1dGFibGUpCi0gICAgICAgIDogbV9leGVjdXRhYmxlKGV4ZWN1dGFibGUp
CisgICAgQ2FsbExpbmtTdGF0dXMoQ2FsbFZhcmlhbnQgdmFyaWFudCkKKyAgICAgICAgOiBtX2Vk
Z2VzKDEsIENhbGxFZGdlKHZhcmlhbnQsIDEpKQogICAgICAgICAsIG1fY291bGRUYWtlU2xvd1Bh
dGgoZmFsc2UpCiAgICAgICAgICwgbV9pc1Byb3ZlZChmYWxzZSkKKyAgICAgICAgLCBtX2NhblRy
dXN0Q291bnRzKGZhbHNlKQogICAgIHsKICAgICB9CiAgICAgCkBAIC05Miw4ICs5Myw5IEBAIHB1
YmxpYzoKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIENvbXB1dGVzIHRoZSBzdGF0dXMgYXNzdW1p
bmcgdGhhdCB3ZSBuZXZlciB0b29rIHNsb3cgcGF0aCBhbmQgbmV2ZXIgcHJldmlvdXNseQogICAg
IC8vIGV4aXRlZC4KLSAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcihjb25zdCBD
b25jdXJyZW50SklUTG9ja2VyJiwgQ2FsbExpbmtJbmZvJik7Ci0gICAgc3RhdGljIENhbGxMaW5r
U3RhdHVzIGNvbXB1dGVGb3IoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENhbGxMaW5rSW5m
byYsIEV4aXRTaXRlRGF0YSk7CisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3Io
Y29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENvZGVCbG9jayosIENhbGxMaW5rSW5mbyYpOwor
ICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKAorICAgICAgICBjb25zdCBDb25j
dXJyZW50SklUTG9ja2VyJiwgQ29kZUJsb2NrKiwgQ2FsbExpbmtJbmZvJiwgRXhpdFNpdGVEYXRh
KTsKICNlbmRpZgogICAgIAogICAgIHR5cGVkZWYgSGFzaE1hcDxDb2RlT3JpZ2luLCBDYWxsTGlu
a1N0YXR1cywgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gQ29udGV4dE1hcDsKQEAgLTEwNywz
NyArMTA5LDM4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZv
cigKICAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgY29uc3QgQ2FsbExpbmtJbmZvTWFw
JiwgY29uc3QgQ29udGV4dE1hcCYpOwogICAgIAotICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJl
dHVybiBtX2NhbGxUYXJnZXQgfHwgbV9leGVjdXRhYmxlIHx8IG1fY291bGRUYWtlU2xvd1BhdGg7
IH0KKyAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gIW1fZWRnZXMuaXNFbXB0eSgpIHx8
IG1fY291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0
IHsgcmV0dXJuICFpc1NldCgpOyB9CiAgICAgCiAgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fY291bGRUYWtlU2xvd1BhdGg7IH0KLSAgICBib29sIGlzQ2xvc3Vy
ZUNhbGwoKSBjb25zdCB7IHJldHVybiBtX2V4ZWN1dGFibGUgJiYgIW1fY2FsbFRhcmdldDsgfQog
ICAgIAotICAgIEpTVmFsdWUgY2FsbFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdl
dDsgfQotICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uKCkgY29uc3Q7Ci0gICAgSW50ZXJuYWxGdW5j
dGlvbiogaW50ZXJuYWxGdW5jdGlvbigpIGNvbnN0OwotICAgIEludHJpbnNpYyBpbnRyaW5zaWNG
b3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCkgY29uc3Q7Ci0gICAgRXhlY3V0YWJsZUJhc2UqIGV4
ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtX2V4ZWN1dGFibGU7IH0KKyAgICBDYWxsRWRnZUxp
c3QgZWRnZXMoKSBjb25zdCB7IHJldHVybiBtX2VkZ2VzOyB9CisgICAgdW5zaWduZWQgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZWRnZXMuc2l6ZSgpOyB9CisgICAgQ2FsbEVkZ2UgYXQodW5zaWdu
ZWQgaSkgY29uc3QgeyByZXR1cm4gbV9lZGdlc1tpXTsgfQorICAgIENhbGxFZGdlIG9wZXJhdG9y
W10odW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0KICAgICBib29sIGlzUHJvdmVk
KCkgY29uc3QgeyByZXR1cm4gbV9pc1Byb3ZlZDsgfQotICAgIGJvb2wgY2FuT3B0aW1pemUoKSBj
b25zdCB7IHJldHVybiAobV9jYWxsVGFyZ2V0IHx8IG1fZXhlY3V0YWJsZSkgJiYgIW1fY291bGRU
YWtlU2xvd1BhdGg7IH0KKyAgICBib29sIGNhbk9wdGltaXplKCkgY29uc3QgeyByZXR1cm4gIW1f
ZWRnZXMuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBjYW5UcnVzdENvdW50cygpIGNvbnN0IHsgcmV0
dXJuIG1fY2FuVHJ1c3RDb3VudHM7IH0KKyAgICAKKyAgICBib29sIGlzQ2xvc3VyZUNhbGwoKSBj
b25zdDsgLy8gUmV0dXJucyB0cnVlIGlmIGFueSBjYWxsZWUgaXMgYSBjbG9zdXJlIGNhbGwuCiAg
ICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgot
ICAgIHZvaWQgbWFrZUNsb3N1cmVDYWxsKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9pc1By
b3ZlZCk7Ci0gICAgICAgIC8vIFR1cm4gdGhpcyBpbnRvIGEgY2xvc3VyZSBjYWxsLgotICAgICAg
ICBtX2NhbGxUYXJnZXQgPSBKU1ZhbHVlKCk7Ci0gICAgfQorICAgIHZvaWQgbWFrZUNsb3N1cmVD
YWxsKCk7CiAgICAgCiAgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGcm9tTExJbnQo
Y29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2Rl
SW5kZXgpOworI2lmIEVOQUJMRShKSVQpCisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1
dGVGcm9tQ2FsbEVkZ2VQcm9maWxlKENhbGxFZGdlUHJvZmlsZSopOworICAgIHN0YXRpYyBDYWxs
TGlua1N0YXR1cyBjb21wdXRlRnJvbUNhbGxMaW5rSW5mbygKKyAgICAgICAgY29uc3QgQ29uY3Vy
cmVudEpJVExvY2tlciYsIENhbGxMaW5rSW5mbyYpOworI2VuZGlmCiAgICAgCi0gICAgSlNWYWx1
ZSBtX2NhbGxUYXJnZXQ7Ci0gICAgRXhlY3V0YWJsZUJhc2UqIG1fZXhlY3V0YWJsZTsKKyAgICBD
YWxsRWRnZUxpc3QgbV9lZGdlczsKICAgICBib29sIG1fY291bGRUYWtlU2xvd1BhdGg7CiAgICAg
Ym9vbCBtX2lzUHJvdmVkOworICAgIGJvb2wgbV9jYW5UcnVzdENvdW50czsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxW
YXJpYW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbFZhcmlhbnQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxWYXJpYW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJDYWxsVmFyaWFudC5oIgorCisjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBDYWxsVmFyaWFudDo6ZHVtcChQcmludFN0
cmVhbSYgb3V0KSBjb25zdAoreworICAgIGlmICghKnRoaXMpIHsKKyAgICAgICAgb3V0LnByaW50
KCJudWxsIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKEludGVybmFs
RnVuY3Rpb24qIGludGVybmFsRnVuY3Rpb24gPSB0aGlzLT5pbnRlcm5hbEZ1bmN0aW9uKCkpIHsK
KyAgICAgICAgb3V0LnByaW50KCJJbnRlcm5hbEZ1bmN0aW9uOiAiLCBKU1ZhbHVlKGludGVybmFs
RnVuY3Rpb24pKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoSlNGdW5j
dGlvbiogZnVuY3Rpb24gPSB0aGlzLT5mdW5jdGlvbigpKSB7CisgICAgICAgIG91dC5wcmludCgi
KEZ1bmN0aW9uOiAiLCBKU1ZhbHVlKGZ1bmN0aW9uKSwgIjsgRXhlY3V0YWJsZTogIiwgKmV4ZWN1
dGFibGUoKSwgIikiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBvdXQucHJp
bnQoIkV4ZWN1dGFibGU6ICIsICpleGVjdXRhYmxlKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZh
cmlhbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENhbGxWYXJpYW50X2gKKyNk
ZWZpbmUgQ2FsbFZhcmlhbnRfaAorCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUg
IkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIENhbGxWYXJpYW50IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBDYWxsVmFyaWFudChK
U0NlbGwqIGNhbGxlZSA9IG51bGxwdHIpCisgICAgICAgIDogbV9jYWxsZWUoY2FsbGVlKQorICAg
IHsKKyAgICB9CisgICAgCisgICAgQ2FsbFZhcmlhbnQoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFs
dWVUeXBlKQorICAgICAgICA6IG1fY2FsbGVlKGRlbGV0ZWRUb2tlbigpKQorICAgIHsKKyAgICB9
CisgICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7IH0K
KyAgICAKKyAgICAvLyBJZiB0aGlzIHZhcmlhbnQgcmVmZXJzIHRvIGEgZnVuY3Rpb24sIGNoYW5n
ZSBpdCB0byByZWZlciB0byBpdHMgZXhlY3V0YWJsZS4KKyAgICBBTFdBWVNfSU5MSU5FIENhbGxW
YXJpYW50IGRlc3BlY2lmaWVkQ2xvc3VyZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9j
YWxsZWUtPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICAgICAgICAgIHJldHVybiBDYWxs
VmFyaWFudChqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2FsbGVlKS0+ZXhlY3V0YWJsZSgpKTsKKyAg
ICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAgICAKKyAgICBKU0NlbGwqIHJhd0NhbGxlZUNl
bGwoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlZTsgfQorICAgIAorICAgIEludGVybmFsRnVuY3Rp
b24qIGludGVybmFsRnVuY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGpzRHlu
YW1pY0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KG1fY2FsbGVlKTsKKyAgICB9CisgICAgCisgICAg
SlNGdW5jdGlvbiogZnVuY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGpzRHlu
YW1pY0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2FsbGVlKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBp
c0Nsb3N1cmVDYWxsKCkgY29uc3QgeyByZXR1cm4gISFqc0R5bmFtaWNDYXN0PEV4ZWN1dGFibGVC
YXNlKj4obV9jYWxsZWUpOyB9CisgICAgCisgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUo
KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gdGhpcy0+
ZnVuY3Rpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbi0+ZXhlY3V0YWJsZSgpOwor
ICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxFeGVjdXRhYmxlQmFzZSo+KG1fY2FsbGVlKTsK
KyAgICB9CisgICAgCisgICAgSlNDZWxsKiBub25FeGVjdXRhYmxlQ2FsbGVlKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpc0Nsb3N1cmVDYWxsKCkpOworICAgICAgICBy
ZXR1cm4gbV9jYWxsZWU7CisgICAgfQorICAgIAorICAgIEludHJpbnNpYyBpbnRyaW5zaWNGb3Io
Q29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKEV4
ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gdGhpcy0+ZXhlY3V0YWJsZSgpKQorICAgICAgICAg
ICAgcmV0dXJuIGV4ZWN1dGFibGUtPmludHJpbnNpY0ZvcihraW5kKTsKKyAgICAgICAgcmV0dXJu
IE5vSW50cmluc2ljOworICAgIH0KKyAgICAKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0
aW9uRXhlY3V0YWJsZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoRXhlY3V0YWJsZUJhc2Uq
IGV4ZWN1dGFibGUgPSB0aGlzLT5leGVjdXRhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4ganNE
eW5hbWljQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorICAgIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdDsKKyAgICAKKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2NhbGxlZSA9PSBkZWxldGVkVG9rZW4oKTsKKyAgICB9
CisgICAgCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NhbGxlZSA9PSBvdGhlci5tX2NhbGxlZTsKKyAg
ICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAgICB9Cisg
ICAgCisgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY2FsbGVlIDwgb3RoZXIubV9jYWxsZWU7CisgICAgfQor
ICAgIAorICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBvdGhlciA8ICp0aGlzOworICAgIH0KKyAgICAKKyAgICBi
b29sIG9wZXJhdG9yPD0oY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuICEoKnRoaXMgPCBvdGhlcik7CisgICAgfQorICAgIAorICAgIGJvb2wgb3Bl
cmF0b3I+PShjb25zdCBDYWxsVmFyaWFudCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gb3RoZXIgPD0gKnRoaXM7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIGhhc2goKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6UHRySGFzaDxKU0NlbGwqPjo6aGFzaCht
X2NhbGxlZSk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBzdGF0aWMgSlNDZWxsKiBkZWxl
dGVkVG9rZW4oKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4oc3RhdGljX2Nhc3Q8dWlu
dHB0cl90PigxKSk7IH0KKyAgICAgICAgICAgICAgICAgICAKKyAgICBKU0NlbGwqIG1fY2FsbGVl
OworfTsKKworc3RydWN0IENhbGxWYXJpYW50SGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhh
c2goY29uc3QgQ2FsbFZhcmlhbnQmIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQorICAgIHN0
YXRpYyBib29sIGVxdWFsKGNvbnN0IENhbGxWYXJpYW50JiBhLCBjb25zdCBDYWxsVmFyaWFudCYg
YikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFy
ZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKKwordHlwZWRlZiBWZWN0b3I8Q2FsbFZhcmlh
bnQsIDE+IENhbGxWYXJpYW50TGlzdDsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFj
ZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7Cit0ZW1w
bGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6OkNhbGxWYXJpYW50PiB7CisgICAgdHlwZWRl
ZiBKU0M6OkNhbGxWYXJpYW50SGFzaCBIYXNoOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IEhhc2hUcmFpdHM7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6Q2Fs
bFZhcmlhbnQ+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6Q2FsbFZhcmlhbnQ+IHsgfTsK
KworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBDYWxsVmFyaWFudF9oCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmNwcAkocmV2aXNpb24g
MTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzgsOCArMzgsOCBAQCBjb25zdCBjaGFyKiBleGl0S2luZFRvU3Ry
aW5nKEV4aXRLaW5kIGtpCiAgICAgICAgIHJldHVybiAiVW5zZXQiOwogICAgIGNhc2UgQmFkVHlw
ZToKICAgICAgICAgcmV0dXJuICJCYWRUeXBlIjsKLSAgICBjYXNlIEJhZEZ1bmN0aW9uOgotICAg
ICAgICByZXR1cm4gIkJhZEZ1bmN0aW9uIjsKKyAgICBjYXNlIEJhZENlbGw6CisgICAgICAgIHJl
dHVybiAiQmFkQ2VsbCI7CiAgICAgY2FzZSBCYWRFeGVjdXRhYmxlOgogICAgICAgICByZXR1cm4g
IkJhZEV4ZWN1dGFibGUiOwogICAgIGNhc2UgQmFkQ2FjaGU6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDcgKzMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBlbnVtIEV4aXRLaW5kIDogdWludDhfdCB7CiAg
ICAgRXhpdEtpbmRVbnNldCwKICAgICBCYWRUeXBlLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSBhIHR5
cGUgcHJlZGljdGlvbiB3YXMgd3JvbmcuCi0gICAgQmFkRnVuY3Rpb24sIC8vIFdlIGV4aXRlZCBi
ZWNhdXNlIHdlIG1hZGUgYW4gaW5jb3JyZWN0IGFzc3VtcHRpb24gYWJvdXQgd2hhdCBmdW5jdGlv
biB3ZSB3b3VsZCBzZWUuCisgICAgQmFkQ2VsbCwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2UgbWFk
ZSBhbiBpbmNvcnJlY3QgYXNzdW1wdGlvbiBhYm91dCB3aGF0IGNlbGwgd2Ugd291bGQgc2VlLiBV
c3VhbGx5IHVzZWQgZm9yIGZ1bmN0aW9uIGNoZWNrcy4KICAgICBCYWRFeGVjdXRhYmxlLCAvLyBX
ZSBleGl0ZWQgYmVjYXVzZSB3ZSBtYWRlIGFuIGluY29ycmVjdCBhc3N1bXB0aW9uIGFib3V0IHdo
YXQgZXhlY3V0YWJsZSB3ZSB3b3VsZCBzZWUuCiAgICAgQmFkQ2FjaGUsIC8vIFdlIGV4aXRlZCBi
ZWNhdXNlIGFuIGlubGluZSBjYWNoZSB3YXMgd3JvbmcuCiAgICAgQmFkQ29uc3RhbnRDYWNoZSwg
Ly8gV2UgZXhpdGVkIGJlY2F1c2UgYSBjYWNoZSBvbiBhIHdlYWsgY29uc3RhbnQgKHVzdWFsbHkg
YSBwcm90b3R5cGUpIHdhcyB3cm9uZy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTg3LDcgKzE4Nyw4IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0
ZUZvclMKICAgICAgICAgICAgICAgICAgICAgQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUqIHN0
dWIgPSBzdGF0aWNfY2FzdDxBY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZSo+KAogICAgICAgICAg
ICAgICAgICAgICAgICAgbGlzdC0+YXQobGlzdEluZGV4KS5zdHViUm91dGluZSgpKTsKICAgICAg
ICAgICAgICAgICAgICAgY2FsbExpbmtTdGF0dXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5r
U3RhdHVzPigKLSAgICAgICAgICAgICAgICAgICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRl
Rm9yKGxvY2tlciwgKnN0dWItPm1fY2FsbExpbmtJbmZvLCBjYWxsRXhpdFNpdGVEYXRhKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssICpzdHViLT5tX2Nh
bGxMaW5rSW5mbywgY2FsbEV4aXRTaXRlRGF0YSkpOwogICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRCeUlkQWNjZXNz
OjpDdXN0b21HZXR0ZXI6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0
Nyw3ICsyNDcsNyBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTCiAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsTGlua1N0YXR1cz4gY2FsbExp
bmtTdGF0dXMgPQogICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxDYWxs
TGlua1N0YXR1cz4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbExpbmtTdGF0dXM6
OmNvbXB1dGVGb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tlciwgKnN0
dWItPm1fY2FsbExpbmtJbmZvLCBjYWxsRXhpdFNpdGVEYXRhKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxvY2tlciwgcHJvZmlsZWRCbG9jaywgKnN0dWItPm1fY2FsbExpbmtJ
bmZvLCBjYWxsRXhpdFNpdGVEYXRhKSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICB2YXJpYW50ID0gUHV0QnlJZFZhcmlhbnQ6OnNldHRlcigKICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdHVyZSwgY29tcGxleEdldFN0YXR1cy5vZmZzZXQoKSwgY29tcGxl
eEdldFN0YXR1cy5jaGFpbigpLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMTcy
ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDU5LDE0ICsxNDU5LDYgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBmb3JOb2RlKG5vZGUpLnNl
dFR5cGUoU3BlY0ludDMyKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgIGNhc2UgQ2hl
Y2tFeGVjdXRhYmxlOiB7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBjb3VsZCB0cmFjayBleGVjdXRh
YmxlcyBpbiBBYnN0cmFjdFZhbHVlLCB3aGljaCB3b3VsZCBhbGxvdyB1cyB0byBnZXQgcmlkIG9m
IHRoZXNlIGNoZWNrcwotICAgICAgICAvLyBtb3JlIHRob3JvdWdobHkuIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYyMDAKLSAgICAgICAgLy8gRklYTUU6IFdlIGNv
dWxkIGVsaW1pbmF0ZSB0aGVzZSBlbnRpcmVseSBpZiB3ZSBrbm93IHRoZSBleGFjdCB2YWx1ZSB0
aGF0IGZsb3dzIGludG8gdGhpcy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwNjIwMQotICAgICAgICBicmVhazsKLSAgICB9Ci0KICAgICBjYXNl
IENoZWNrU3RydWN0dXJlOiB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0
byBwcm9wYWdhdGUgdGhlIHN0cnVjdHVyZSBzZXRzIG9mIGNvbnN0YW50cyAoaS5lLiBwcm90b3R5
cGVzKS4KICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKTsKQEAgLTE3MjYsMTYgKzE3MTgsMjkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQorICAgICAgICAKKyAgICBjYXNlIEdldEV4ZWN1dGFibGU6IHsK
KyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7
CisgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24g
PSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2YWx1ZSk7CisgICAgICAgICAgICBpZiAoZnVu
Y3Rpb24pIHsKKyAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCAqbV9ncmFwaC5mcmVl
emUoZnVuY3Rpb24tPmV4ZWN1dGFibGUoKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVj
Q2VsbE90aGVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIAotICAgIGNhc2UgQ2hlY2tG
dW5jdGlvbjogeworICAgIGNhc2UgQ2hlY2tDZWxsOiB7CiAgICAgICAgIEpTVmFsdWUgdmFsdWUg
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwotICAgICAgICBpZiAodmFsdWUgPT0g
bm9kZS0+ZnVuY3Rpb24oKS0+dmFsdWUoKSkgeworICAgICAgICBpZiAodmFsdWUgPT0gbm9kZS0+
Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKSkgewogICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENv
bnN0YW50cyh0cnVlKTsKICAgICAgICAgICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgZmlsdGVyQnlWYWx1ZShub2RlLT5j
aGlsZDEoKSwgKm5vZGUtPmZ1bmN0aW9uKCkpOworICAgICAgICBmaWx0ZXJCeVZhbHVlKG5vZGUt
PmNoaWxkMSgpLCAqbm9kZS0+Y2VsbE9wZXJhbmQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICAgICAgCkBAIC0xOTAxLDYgKzE5MDYsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6
CisgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxz
ZSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKQEAgLTE5NTUsNyArMTk2MSw4IEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICBjYXNlIExhc3ROb2RlVHlw
ZToKICAgICBjYXNlIEFyaXRoSU11bDoKICAgICBjYXNlIEZpYXRJbnQ1MjoKLSAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIEJvdHRvbVZhbHVlOgorICAgICAg
ICBERkdfQ1JBU0gobV9ncmFwaCwgbm9kZSwgIlVuZXhwZWN0ZWQgbm9kZSB0eXBlIik7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9w
YWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzg5LDYgKzM4OSwxMSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIC8vIHRoZW4gLTAgYW5kIDAgYXJlIHRyZWF0ZWQgdGhlIHNh
bWUuCiAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCktPm1lcmdlRmxhZ3MoTm9kZUJ5dGVj
b2RlVXNlc0FzTnVtYmVyIHwgTm9kZUJ5dGVjb2RlVXNlc0FzT3RoZXIpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTd2l0Y2hDZWxsOgorICAgICAgICAgICAgICAg
IC8vIFRoZXJlIGlzIGN1cnJlbnRseSBubyBwb2ludCB0byBiZWluZyBjbGV2ZXIgaGVyZSBzaW5j
ZSB0aGlzIGlzIHVzZWQgZm9yIHN3aXRjaGluZworICAgICAgICAgICAgICAgIC8vIG9uIG9iamVj
dHMuCisgICAgICAgICAgICAgICAgbWVyZ2VEZWZhdWx0RmxhZ3Mobm9kZSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwCShy
ZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxv
Y2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw5IEBAIEJhc2ljQmxvY2s6OkJhc2lj
QmxvY2soCiB7CiB9CiAKLUJhc2ljQmxvY2s6On5CYXNpY0Jsb2NrKCkgeyB9CitCYXNpY0Jsb2Nr
Ojp+QmFzaWNCbG9jaygpCit7Cit9CiAKIHZvaWQgQmFzaWNCbG9jazo6ZW5zdXJlTG9jYWxzKHVu
c2lnbmVkIG5ld051bUxvY2FscykKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQmFzaWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQmFzaWNCbG9jay5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQCBz
dHJ1Y3QgQmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgTm9kZSomIG9wZXJh
dG9yW10oc2l6ZV90IGkpIHsgcmV0dXJuIGF0KGkpOyB9CiAgICAgTm9kZSogb3BlcmF0b3JbXShz
aXplX3QgaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0KICAgICBOb2RlKiBsYXN0KCkgY29uc3Qg
eyByZXR1cm4gYXQoc2l6ZSgpIC0gMSk7IH0KKyAgICBOb2RlKiB0YWtlTGFzdCgpIHsgcmV0dXJu
IG1fbm9kZXMudGFrZUxhc3QoKTsgfQogICAgIHZvaWQgcmVzaXplKHNpemVfdCBzaXplKSB7IG1f
bm9kZXMucmVzaXplKHNpemUpOyB9CiAgICAgdm9pZCBncm93KHNpemVfdCBzaXplKSB7IG1fbm9k
ZXMuZ3JvdyhzaXplKTsgfQogICAgIApAQCAtMTA2LDYgKzEwNywxMyBAQCBzdHJ1Y3QgQmFzaWNC
bG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0OwogICAgIAorICAgIHZvaWQgZGlkTGluaygpCisgICAgeworI2lmICFB
U1NFUlRfRElTQUJMRUQKKyAgICAgICAgaXNMaW5rZWQgPSB0cnVlOworI2VuZGlmCisgICAgfQor
ICAgIAogICAgIC8vIFRoaXMgdmFsdWUgaXMgdXNlZCBpbnRlcm5hbGx5IGZvciBibG9jayBsaW5r
aW5nIGFuZCBPU1IgZW50cnkuIEl0IGlzIG1vc3RseSBtZWFuaW5nbGVzcwogICAgIC8vIGZvciBv
dGhlciBwdXJwb3NlcyBkdWUgdG8gaW5saW5pbmcuCiAgICAgdW5zaWduZWQgYnl0ZWNvZGVCZWdp
bjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsOCBAQAogCiBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKK3N0YXRpYyBjb25zdCBib29sIHZlcmJv
c2UgPSBmYWxzZTsKKwogY2xhc3MgQ29uc3RhbnRCdWZmZXJLZXkgewogcHVibGljOgogICAgIENv
bnN0YW50QnVmZmVyS2V5KCkKQEAgLTE3OCwxNCArMTgwLDIwIEBAIHByaXZhdGU6CiAgICAgICAg
IE5vZGUqIGNhbGxUYXJnZXQsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBDYWxs
TGlua1N0YXR1cyk7CiAgICAgdm9pZCBoYW5kbGVDYWxsKGludCByZXN1bHQsIE5vZGVUeXBlIG9w
LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUsIGludCBj
YWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0KTsKICAgICB2b2lkIGhhbmRs
ZUNhbGwoSW5zdHJ1Y3Rpb24qIHBjLCBOb2RlVHlwZSBvcCwgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCk7Ci0gICAgdm9pZCBlbWl0RnVuY3Rpb25DaGVja3MoY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBO
b2RlKiBjYWxsVGFyZ2V0LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQpOworICAgIHZvaWQgZW1pdEZ1bmN0aW9uQ2hlY2tzKENhbGxWYXJpYW50LCBOb2RlKiBjYWxs
VGFyZ2V0LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOworICAg
IHZvaWQgdW5kb0Z1bmN0aW9uQ2hlY2tzKENhbGxWYXJpYW50KTsKICAgICB2b2lkIGVtaXRBcmd1
bWVudFBoYW50b21zKGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICB1bnNpZ25lZCBpbmxpbmluZ0Nv
c3QoQ2FsbFZhcmlhbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCk7IC8vIFJldHVybiBVSU5UX01BWCBpZiBpdCdzIG5vdCBhbiBpbmxpbmlu
ZyBjYW5kaWRhdGUuIEJ5IGNvbnZlbnRpb24sIGludHJpbnNpY3MgaGF2ZSBhIGNvc3Qgb2YgMS4K
ICAgICAvLyBIYW5kbGUgaW5saW5pbmcuIFJldHVybiB0cnVlIGlmIGl0IHN1Y2NlZWRlZCwgZmFs
c2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCi0gICAgYm9vbCBoYW5kbGVJbmxpbmluZyhO
b2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IENhbGxMaW5rU3Rh
dHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2luZCk7CisgICAgYm9vbCBo
YW5kbGVJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNv
bnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIE5vZGVUeXBlIGNhbGxPcCwgSW5s
aW5lQ2FsbEZyYW1lOjpLaW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKKyAgICBlbnVt
IENhbGxlckxpbmthYmlsaXR5IHsgQ2FsbGVyRG9lc05vcm1hbExpbmtpbmcsIENhbGxlckxpbmtz
TWFudWFsbHkgfTsKKyAgICBib29sIGF0dGVtcHRUb0lubGluZUNhbGwoTm9kZSogY2FsbFRhcmdl
dE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElu
bGluZUNhbGxGcmFtZTo6S2luZCwgQ2FsbGVyTGlua2FiaWxpdHksIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxpbmluZ0JhbGFuY2UpOworICAgIHZvaWQgaW5saW5lQ2Fs
bChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENhbGxWYXJpYW50LCBp
bnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWdu
ZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBDYWxsZXJMaW5rYWJpbGl0eSk7
CisgICAgdm9pZCBjYW5jZWxMaW5raW5nRm9yQmxvY2soSW5saW5lU3RhY2tFbnRyeSosIEJhc2lj
QmxvY2sqKTsgLy8gT25seSB3b3JrcyB3aGVuIHRoZSBnaXZlbiBibG9jayBpcyB0aGUgbGFzdCBv
bmUgdG8gaGF2ZSBiZWVuIGFkZGVkIGZvciB0aGF0IGlubGluZSBzdGFjayBlbnRyeS4KICAgICAv
LyBIYW5kbGUgaW50cmluc2ljIGZ1bmN0aW9ucy4gUmV0dXJuIHRydWUgaWYgaXQgc3VjY2VlZGVk
LCBmYWxzZSBpZiB3ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4KICAgICBib29sIGhhbmRsZUludHJp
bnNpYyhpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7
CiAgICAgYm9vbCBoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IoaW50IHJlc3VsdE9wZXJhbmQs
IEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgVHlwZWRBcnJheVR5cGUpOwotICAgIGJvb2wgaGFuZGxlQ29uc3RhbnRJ
bnRlcm5hbEZ1bmN0aW9uKGludCByZXN1bHRPcGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50
IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0
ZWRUeXBlIHByZWRpY3Rpb24sIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOworICAgIGJvb2wgaGFu
ZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKGludCByZXN1bHRPcGVyYW5kLCBJbnRlcm5hbEZ1
bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwogICAgIE5vZGUqIGhhbmRsZVB1dEJ5T2Zmc2V0
KE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBOb2RlKiB2
YWx1ZSk7CiAgICAgTm9kZSogaGFuZGxlR2V0QnlPZmZzZXQoU3BlY3VsYXRlZFR5cGUsIE5vZGUq
IGJhc2UsIGNvbnN0IFN0cnVjdHVyZVNldCYsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFBy
b3BlcnR5T2Zmc2V0LCBOb2RlVHlwZSBvcCA9IEdldEJ5T2Zmc2V0KTsKICAgICB2b2lkIGhhbmRs
ZUdldEJ5SWQoCkBAIC0yMDAsOCArMjA4LDkgQEAgcHJpdmF0ZToKIAogICAgIE5vZGUqIGdldFNj
b3BlKHVuc2lnbmVkIHNraXBDb3VudCk7CiAgICAgCi0gICAgLy8gUHJlcGFyZSB0byBwYXJzZSBh
IGJsb2NrLgogICAgIHZvaWQgcHJlcGFyZVRvUGFyc2VCbG9jaygpOworICAgIHZvaWQgY2xlYXJD
YWNoZXMoKTsKKwogICAgIC8vIFBhcnNlIGEgc2luZ2xlIGJhc2ljIGJsb2NrIG9mIGJ5dGVjb2Rl
IGluc3RydWN0aW9ucy4KICAgICBib29sIHBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpOwogICAg
IC8vIExpbmsgYmxvY2sgc3VjY2Vzc29ycy4KQEAgLTI5Niw2ICszMDUsMTMgQEAgcHJpdmF0ZToK
ICAgICAgICAgCiAgICAgICAgIHJldHVybiBkZWxheWVkLmV4ZWN1dGUodGhpcywgc2V0TW9kZSk7
CiAgICAgfQorICAgIAorICAgIHZvaWQgcHJvY2Vzc1NldExvY2FsUXVldWUoKQorICAgIHsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2V0TG9jYWxRdWV1ZS5zaXplKCk7ICsr
aSkKKyAgICAgICAgICAgIG1fc2V0TG9jYWxRdWV1ZVtpXS5leGVjdXRlKHRoaXMpOworICAgICAg
ICBtX3NldExvY2FsUXVldWUucmVzaXplKDApOworICAgIH0KIAogICAgIE5vZGUqIHNldChWaXJ0
dWFsUmVnaXN0ZXIgb3BlcmFuZCwgTm9kZSogdmFsdWUsIFNldE1vZGUgc2V0TW9kZSA9IE5vcm1h
bFNldCkKICAgICB7CkBAIC02MzcsNiArNjUzLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIAogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKyAgICAKKyAgICB2b2lkIHJlbW92ZUxhc3ROb2Rl
RnJvbUdyYXBoKE5vZGVUeXBlIGV4cGVjdGVkTm9kZVR5cGUpCisgICAgeworICAgICAgICBOb2Rl
KiBub2RlID0gbV9jdXJyZW50QmxvY2stPnRha2VMYXN0KCk7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKG5vZGUtPm9wKCkgPT0gZXhwZWN0ZWROb2RlVHlwZSk7CisgICAgICAgIG1fZ3JhcGgubV9h
bGxvY2F0b3IuZnJlZShub2RlKTsKKyAgICB9CiAKICAgICB2b2lkIGFkZFZhckFyZ0NoaWxkKE5v
ZGUqIGNoaWxkKQogICAgIHsKQEAgLTY0NSw3ICs2NjgsNyBAQCBwcml2YXRlOgogICAgIH0KICAg
ICAKICAgICBOb2RlKiBhZGRDYWxsV2l0aG91dFNldHRpbmdSZXN1bHQoCi0gICAgICAgIE5vZGVU
eXBlIG9wLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAor
ICAgICAgICBOb2RlVHlwZSBvcCwgT3BJbmZvIG9wSW5mbywgTm9kZSogY2FsbGVlLCBpbnQgYXJn
Q291bnQsIGludCByZWdpc3Rlck9mZnNldCwKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
dGlvbikKICAgICB7CiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGNhbGxlZSk7CkBAIC02NTcsMTUg
KzY4MCwxNSBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKGludCBpID0gMCArIGR1bW15VGhpc0Fy
Z3VtZW50OyBpIDwgYXJnQ291bnQ7ICsraSkKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdl
dCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpLCByZWdpc3Rlck9mZnNldCkpKTsKIAotICAg
ICAgICByZXR1cm4gYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIG9wLCBPcEluZm8oMCksIE9wSW5m
byhwcmVkaWN0aW9uKSk7CisgICAgICAgIHJldHVybiBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywg
b3AsIG9wSW5mbywgT3BJbmZvKHByZWRpY3Rpb24pKTsKICAgICB9CiAgICAgCiAgICAgTm9kZSog
YWRkQ2FsbCgKLSAgICAgICAgaW50IHJlc3VsdCwgTm9kZVR5cGUgb3AsIE5vZGUqIGNhbGxlZSwg
aW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgICAgIGludCByZXN1bHQsIE5v
ZGVUeXBlIG9wLCBPcEluZm8gb3BJbmZvLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50
IHJlZ2lzdGVyT2Zmc2V0LAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogICAg
IHsKICAgICAgICAgTm9kZSogY2FsbCA9IGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdCgKLSAg
ICAgICAgICAgIG9wLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlv
bik7CisgICAgICAgICAgICBvcCwgb3BJbmZvLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9m
ZnNldCwgcHJlZGljdGlvbik7CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHRSZWcocmVz
dWx0KTsKICAgICAgICAgaWYgKHJlc3VsdFJlZy5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBzZXQo
VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCksIGNhbGwpOwpAQCAtODcxLDggKzg5NCw3IEBAIHByaXZh
dGU6CiAgICAgICAgIFZlY3RvcjxVbmxpbmtlZEJsb2NrPiBtX3VubGlua2VkQmxvY2tzOwogICAg
ICAgICAKICAgICAgICAgLy8gUG90ZW50aWFsIGJsb2NrIGxpbmtpbmcgdGFyZ2V0cy4gTXVzdCBi
ZSBzb3J0ZWQgYnkgYnl0ZWNvZGVCZWdpbiwgYW5kCi0gICAgICAgIC8vIGNhbm5vdCBoYXZlIHR3
byBibG9ja3MgdGhhdCBoYXZlIHRoZSBzYW1lIGJ5dGVjb2RlQmVnaW4uIEZvciB0aGlzIHZlcnkK
LSAgICAgICAgLy8gcmVhc29uLCB0aGlzIGlzIG5vdCBlcXVpdmFsZW50IHRvIAorICAgICAgICAv
LyBjYW5ub3QgaGF2ZSB0d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRlY29kZUJlZ2lu
LgogICAgICAgICBWZWN0b3I8QmFzaWNCbG9jayo+IG1fYmxvY2tMaW5raW5nVGFyZ2V0czsKICAg
ICAgICAgCiAgICAgICAgIC8vIElmIHRoZSBjYWxsc2l0ZSdzIGJhc2ljIGJsb2NrIHdhcyBzcGxp
dCBpbnRvIHR3bywgdGhlbiB0aGlzIHdpbGwgYmUKQEAgLTEwMjgsNTMgKzEwNTAsMjcgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCgKICAgICAgICAgLy8gT2RkbHksIHRoaXMgY29u
ZmxhdGVzIGNhbGxzIHRoYXQgaGF2ZW4ndCBleGVjdXRlZCB3aXRoIGNhbGxzIHRoYXQgYmVoYXZl
ZCBzdWZmaWNpZW50bHkgcG9seW1vcnBoaWNhbGx5CiAgICAgICAgIC8vIHRoYXQgd2UgY2Fubm90
IG9wdGltaXplIHRoZW0uCiAgICAgICAgIAotICAgICAgICBhZGRDYWxsKHJlc3VsdCwgb3AsIGNh
bGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJl
ZGljdGlvbik7CisgICAgICAgIGFkZENhbGwocmVzdWx0LCBvcCwgT3BJbmZvKCksIGNhbGxUYXJn
ZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlv
bik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgbmV4dE9mZnNl
dCA9IG1fY3VycmVudEluZGV4ICsgaW5zdHJ1Y3Rpb25TaXplOworICAgIAorICAgIE9wSW5mbyBj
YWxsT3BJbmZvOwogCi0gICAgaWYgKEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbExp
bmtTdGF0dXMuaW50ZXJuYWxGdW5jdGlvbigpKSB7Ci0gICAgICAgIGlmIChoYW5kbGVDb25zdGFu
dEludGVybmFsRnVuY3Rpb24ocmVzdWx0LCBmdW5jdGlvbiwgcmVnaXN0ZXJPZmZzZXQsIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBwcmVkaWN0aW9uLCBzcGVjaWFsaXphdGlvbktpbmQpKSB7
Ci0gICAgICAgICAgICAvLyBUaGlzIHBoYW50b21pbmcgaGFzIHRvIGJlICphZnRlciogdGhlIGNv
ZGUgZm9yIHRoZSBpbnRyaW5zaWMsIHRvIHNpZ25pZnkgdGhhdAotICAgICAgICAgICAgLy8gdGhl
IGlucHV0cyBtdXN0IGJlIGtlcHQgYWxpdmUgd2hhdGV2ZXIgZXhpdHMgdGhlIGludHJpbnNpYyBt
YXkgZG8uCi0gICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXQpOwotICAg
ICAgICAgICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBDYW4gb25seSBoYW5kbGUgdGhpcyB1
c2luZyB0aGUgZ2VuZXJpYyBjYWxsIGhhbmRsZXIuCi0gICAgICAgIGFkZENhbGwocmVzdWx0LCBv
cCwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0
LCBwcmVkaWN0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAgICAgCi0gICAgSW50
cmluc2ljIGludHJpbnNpYyA9IGNhbGxMaW5rU3RhdHVzLmludHJpbnNpY0ZvcihzcGVjaWFsaXph
dGlvbktpbmQpOwotCi0gICAgSlNGdW5jdGlvbioga25vd25GdW5jdGlvbiA9IG51bGxwdHI7Ci0g
ICAgaWYgKGludHJpbnNpYyAhPSBOb0ludHJpbnNpYykgewotICAgICAgICBlbWl0RnVuY3Rpb25D
aGVja3MoY2FsbExpbmtTdGF0dXMsIGNhbGxUYXJnZXQsIHJlZ2lzdGVyT2Zmc2V0LCBzcGVjaWFs
aXphdGlvbktpbmQpOwotICAgICAgICAgICAgCi0gICAgICAgIGlmIChoYW5kbGVJbnRyaW5zaWMo
cmVzdWx0LCBpbnRyaW5zaWMsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgcHJlZGljdGlvbikpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgcGhhbnRvbWluZyBoYXMg
dG8gYmUgKmFmdGVyKiB0aGUgY29kZSBmb3IgdGhlIGludHJpbnNpYywgdG8gc2lnbmlmeSB0aGF0
Ci0gICAgICAgICAgICAvLyB0aGUgaW5wdXRzIG11c3QgYmUga2VwdCBhbGl2ZSB3aGF0ZXZlciBl
eGl0cyB0aGUgaW50cmluc2ljIG1heSBkby4KLSAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRv
bSwgY2FsbFRhcmdldCk7Ci0gICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rl
ck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7
Ci0gICAgICAgICAgICBpZiAobV9ncmFwaC5jb21waWxhdGlvbigpKQotICAgICAgICAgICAgICAg
IG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZENhbGwoKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoaGFuZGxlSW5saW5pbmcoY2FsbFRh
cmdldCwgcmVzdWx0LCBjYWxsTGlua1N0YXR1cywgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zmc2V0LCBraW5kKSkgeworICAgIGlmIChoYW5kbGVJbmxp
bmluZyhjYWxsVGFyZ2V0LCByZXN1bHQsIGNhbGxMaW5rU3RhdHVzLCByZWdpc3Rlck9mZnNldCwg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQsIG9wLCBraW5kLCBwcmVkaWN0
aW9uKSkgewogICAgICAgICBpZiAobV9ncmFwaC5jb21waWxhdGlvbigpKQogICAgICAgICAgICAg
bV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkQ2FsbCgpOwogICAgICAgICByZXR1
cm47CiAjaWYgRU5BQkxFKEZUTF9OQVRJVkVfQ0FMTF9JTkxJTklORykKLSAgICB9IGVsc2UgaWYg
KGlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpICYmIE9wdGlvbnM6Om9wdGltaXplTmF0aXZlQ2Fs
bHMoKSkgewotICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxMaW5rU3RhdHVzLmZ1
bmN0aW9uKCk7CisgICAgfSBlbHNlIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSAmJiBP
cHRpb25zOjpvcHRpbWl6ZU5hdGl2ZUNhbGxzKCkgJiYgY2FsbExpbmtTdGF0dXMuc2l6ZSgpID09
IDEgJiYgIWNhbGxMaW5rU3RhdHVzLmNvdWxkVGFrZVNsb3dQYXRoKCkpIHsKKyAgICAgICAgQ2Fs
bFZhcmlhbnQgY2FsbGVlID0gY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVlKCk7CisgICAgICAgIEpT
RnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLmZ1bmN0aW9uKCk7CiAgICAgICAgIGlmIChmdW5j
dGlvbiAmJiBmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSkgewotICAgICAgICAgICAgZW1pdEZ1
bmN0aW9uQ2hlY2tzKGNhbGxMaW5rU3RhdHVzLCBjYWxsVGFyZ2V0LCByZWdpc3Rlck9mZnNldCwg
c3BlY2lhbGl6YXRpb25LaW5kKTsKLSAgICAgICAgICAgIGtub3duRnVuY3Rpb24gPSBmdW5jdGlv
bjsKKyAgICAgICAgICAgIGVtaXRGdW5jdGlvbkNoZWNrcyhjYWxsZWUsIGNhbGxUYXJnZXQsIHJl
Z2lzdGVyT2Zmc2V0LCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgICAgICAgICAgY2FsbE9wSW5m
byA9IE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShmdW5jdGlvbikpOwogCi0gICAgICAgICAgICBpZiAo
b3AgPT0gQ2FsbCkgCisgICAgICAgICAgICBpZiAob3AgPT0gQ2FsbCkKICAgICAgICAgICAgICAg
ICBvcCA9IE5hdGl2ZUNhbGw7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBB
U1NFUlQob3AgPT0gQ29uc3RydWN0KTsKQEAgLTEwODMsMTMgKzEwNzksMTEgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlQ2FsbCgKICAgICAgICAgfQogI2VuZGlmCiAgICAgfQotICAgIE5v
ZGUqIGNhbGwgPSBhZGRDYWxsKHJlc3VsdCwgb3AsIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7Ci0KLSAgICBpZiAoa25v
d25GdW5jdGlvbikgCi0gICAgICAgIGNhbGwtPmdpdmVLbm93bkZ1bmN0aW9uKGtub3duRnVuY3Rp
b24pOworICAgIAorICAgIGFkZENhbGwocmVzdWx0LCBvcCwgY2FsbE9wSW5mbywgY2FsbFRhcmdl
dCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9u
KTsKIH0KIAotdm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdEZ1bmN0aW9uQ2hlY2tzKGNvbnN0IENh
bGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgTm9kZSogY2FsbFRhcmdldCwgaW50IHJlZ2lz
dGVyT2Zmc2V0LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit2b2lkIEJ5dGVDb2RlUGFy
c2VyOjplbWl0RnVuY3Rpb25DaGVja3MoQ2FsbFZhcmlhbnQgY2FsbGVlLCBOb2RlKiBjYWxsVGFy
Z2V0LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsK
ICAgICBOb2RlKiB0aGlzQXJndW1lbnQ7CiAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpCkBA
IC0xMDk3LDIwICsxMDkxLDI1IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRGdW5jdGlvbkNo
ZWNrcygKICAgICBlbHNlCiAgICAgICAgIHRoaXNBcmd1bWVudCA9IDA7CiAKLSAgICBpZiAoY2Fs
bExpbmtTdGF0dXMuaXNQcm92ZWQoKSkgewotICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNh
bGxUYXJnZXQsIHRoaXNBcmd1bWVudCk7Ci0gICAgICAgIHJldHVybjsKKyAgICBKU0NlbGwqIGNh
bGxlZUNlbGw7CisgICAgTm9kZSogY2FsbFRhcmdldEZvckNoZWNrOworICAgIGlmIChjYWxsZWUu
aXNDbG9zdXJlQ2FsbCgpKSB7CisgICAgICAgIGNhbGxlZUNlbGwgPSBjYWxsZWUuZXhlY3V0YWJs
ZSgpOworICAgICAgICBjYWxsVGFyZ2V0Rm9yQ2hlY2sgPSBhZGRUb0dyYXBoKEdldEV4ZWN1dGFi
bGUsIGNhbGxUYXJnZXQpOworICAgIH0gZWxzZSB7CisgICAgICAgIGNhbGxlZUNlbGwgPSBjYWxs
ZWUubm9uRXhlY3V0YWJsZUNhbGxlZSgpOworICAgICAgICBjYWxsVGFyZ2V0Rm9yQ2hlY2sgPSBj
YWxsVGFyZ2V0OwogICAgIH0KICAgICAKLSAgICBBU1NFUlQoY2FsbExpbmtTdGF0dXMuY2FuT3B0
aW1pemUoKSk7Ci0gICAgCi0gICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbExpbmtT
dGF0dXMuZnVuY3Rpb24oKSkKLSAgICAgICAgYWRkVG9HcmFwaChDaGVja0Z1bmN0aW9uLCBPcElu
Zm8obV9ncmFwaC5mcmVlemUoZnVuY3Rpb24pKSwgY2FsbFRhcmdldCwgdGhpc0FyZ3VtZW50KTsK
LSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKGNhbGxMaW5rU3RhdHVzLmV4ZWN1dGFibGUoKSk7
Ci0gICAgICAgIAotICAgICAgICBhZGRUb0dyYXBoKENoZWNrRXhlY3V0YWJsZSwgT3BJbmZvKGNh
bGxMaW5rU3RhdHVzLmV4ZWN1dGFibGUoKSksIGNhbGxUYXJnZXQsIHRoaXNBcmd1bWVudCk7Ci0g
ICAgfQorICAgIEFTU0VSVChjYWxsZWVDZWxsKTsKKyAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwg
T3BJbmZvKG1fZ3JhcGguZnJlZXplKGNhbGxlZUNlbGwpKSwgY2FsbFRhcmdldEZvckNoZWNrLCB0
aGlzQXJndW1lbnQpOworfQorCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjp1bmRvRnVuY3Rpb25DaGVj
a3MoQ2FsbFZhcmlhbnQgY2FsbGVlKQoreworICAgIHJlbW92ZUxhc3ROb2RlRnJvbUdyYXBoKENo
ZWNrQ2VsbCk7CisgICAgaWYgKGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpCisgICAgICAgIHJlbW92
ZUxhc3ROb2RlRnJvbUdyYXBoKEdldEV4ZWN1dGFibGUpOwogfQogCiB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjplbWl0QXJndW1lbnRQaGFudG9tcyhpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpAQCAtMTEx
OSwzNiArMTExOCwyNSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0QXJndW1lbnRQaGFudG9t
CiAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50KGksIHJlZ2lzdGVyT2Zmc2V0KSkpOwogfQogCi1ib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0
IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNh
bGxGcmFtZTo6S2luZCBraW5kKQordW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29z
dChDYWxsVmFyaWFudCBjYWxsZWUsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewotICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJv
c2UgPSBmYWxzZTsKLSAgICAKLSAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0
aW9uS2luZCA9IElubGluZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOwot
ICAgIAogICAgIGlmICh2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyBpbmxp
bmluZyAiLCBjYWxsTGlua1N0YXR1cywgIiBpbnRvICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJc
biIpOworICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyBpbmxpbmluZyAiLCBjYWxsZWUsICIg
aW50byAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKICAgICAKLSAgICAvLyBGaXJzdCwg
dGhlIHJlYWxseSBzaW1wbGUgY2hlY2tzOiBkbyB3ZSBoYXZlIGFuIGFjdHVhbCBKUyBmdW5jdGlv
bj8KLSAgICBpZiAoIWNhbGxMaW5rU3RhdHVzLmV4ZWN1dGFibGUoKSkgeworICAgIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS5mdW5jdGlvbkV4ZWN1dGFibGUoKTsKKyAg
ICBpZiAoIWV4ZWN1dGFibGUpIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAgICBk
YXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIHRoZXJlIGlzIG5vIGV4ZWN1dGFibGUuXG4iKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBpZiAoY2FsbExpbmtTdGF0dXMuZXhl
Y3V0YWJsZSgpLT5pc0hvc3RGdW5jdGlvbigpKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQotICAg
ICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSBpdCdzIGEgaG9zdCBmdW5jdGlv
bi5cbiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBkYXRhTG9nKCIgICAg
RmFpbGluZyBiZWNhdXNlIHRoZXJlIGlzIG5vIGZ1bmN0aW9uIGV4ZWN1dGFibGUuIik7CisgICAg
ICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CiAgICAgCi0gICAgRnVuY3Rpb25FeGVjdXRhYmxl
KiBleGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNhbGxMaW5rU3RhdHVz
LmV4ZWN1dGFibGUoKSk7Ci0gICAgCiAgICAgLy8gRG9lcyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50
cyB3ZSdyZSBwYXNzaW5nIG1hdGNoIHRoZSBhcml0eSBvZiB0aGUgdGFyZ2V0PyBXZSBjdXJyZW50
bHkKICAgICAvLyBpbmxpbmUgb25seSBpZiB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQg
aXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBudW1iZXIKICAgICAvLyBhcmd1bWVudHMg
ZXhwZWN0ZWQuCiAgICAgaWYgKHN0YXRpY19jYXN0PGludD4oZXhlY3V0YWJsZS0+cGFyYW1ldGVy
Q291bnQoKSkgKyAxID4gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpIHsKICAgICAgICAgaWYg
KHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIG9mIGFy
aXR5IG1pc21hdGNoLlxuIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IFVJTlRfTUFYOwogICAgIH0KICAgICAKICAgICAvLyBEbyB3ZSBoYXZlIGEgY29kZSBibG9jaywg
YW5kIGRvZXMgdGhlIGNvZGUgYmxvY2sncyBzaXplIG1hdGNoIHRoZSBoZXVyaXN0aWNzL3JlcXVp
cmVtZW50cyBmb3IKQEAgLTExNTcsMTggKzExNDUsMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlSW5saW5pbmcoTm9kZQogICAgIC8vIGlmIHdlIGhhZCBhIHN0YXRpYyBwcm9vZiBvZiB3
aGF0IHdhcyBiZWluZyBjYWxsZWQ7IHRoaXMgbWlnaHQgaGFwcGVuIGZvciBleGFtcGxlIGlmIHlv
dSBjYWxsIGEKICAgICAvLyBnbG9iYWwgZnVuY3Rpb24sIHdoZXJlIHdhdGNocG9pbnRpbmcgZ2l2
ZXMgdXMgc3RhdGljIGluZm9ybWF0aW9uLiBPdmVyYWxsLCBpdCdzIGEgcmFyZSBjYXNlCiAgICAg
Ly8gYmVjYXVzZSB3ZSBleHBlY3QgdGhhdCBhbnkgaG90IGNhbGxlZXMgd291bGQgaGF2ZSBhbHJl
YWR5IGJlZW4gY29tcGlsZWQuCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxl
LT5iYXNlbGluZUNvZGVCbG9ja0ZvcihzcGVjaWFsaXphdGlvbktpbmQpOworICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Ioa2luZCk7CiAg
ICAgaWYgKCFjb2RlQmxvY2spIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIG5vIGNvZGUgYmxvY2sgYXZhaWxhYmxlLlxuIik7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgIH0K
ICAgICBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsID0gaW5saW5lRnVuY3Rpb25Gb3JD
YXBhYmlsaXR5TGV2ZWwoCi0gICAgICAgIGNvZGVCbG9jaywgc3BlY2lhbGl6YXRpb25LaW5kLCBj
YWxsTGlua1N0YXR1cy5pc0Nsb3N1cmVDYWxsKCkpOworICAgICAgICBjb2RlQmxvY2ssIGtpbmQs
IGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpOwogICAgIGlmICghY2FuSW5saW5lKGNhcGFiaWxpdHlM
ZXZlbCkpIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAg
RmFpbGluZyBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpcyBub3QgaW5saW5lYWJsZS5cbiIpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CiAgICAg
CiAgICAgLy8gQ2hlY2sgaWYgdGhlIGNhbGxlciBpcyBhbHJlYWR5IHRvbyBsYXJnZS4gV2UgZG8g
dGhpcyBjaGVjayBoZXJlIGJlY2F1c2UgdGhhdCdzIGp1c3QKQEAgLTExNzgsNyArMTE2Niw3IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAgICAgY29kZUJs
b2NrLT5tX3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNlOwogICAgICAgICBpZiAodmVyYm9z
ZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgdGhlIGNhbGxlciBp
cyB0b28gbGFyZ2UuXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4g
VUlOVF9NQVg7CiAgICAgfQogICAgIAogICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBiZXR0
ZXIgYXQgcHJlZGljdGluZyBob3cgbXVjaCBibG9hdCB3ZSB3aWxsIGludHJvZHVjZSBieSBpbmxp
bmluZwpAQCAtMTE5Nyw3ICsxMTg1LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5s
aW5pbmcoTm9kZQogICAgICAgICBpZiAoZGVwdGggPj0gT3B0aW9uczo6bWF4aW11bUlubGluaW5n
RGVwdGgoKSkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0
YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSBkZXB0aCBleGNlZWRlZC5cbiIpOwotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBpZiAoZW50cnktPmV4ZWN1dGFibGUoKSA9PSBleGVjdXRhYmxl
KSB7CkBAIC0xMjA1LDE5ICsxMTkzLDI2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
bGluaW5nKE5vZGUKICAgICAgICAgICAgIGlmIChyZWN1cnNpb24gPj0gT3B0aW9uczo6bWF4aW11
bUlubGluaW5nUmVjdXJzaW9uKCkpIHsKICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSByZWN1cnNpb24g
ZGV0ZWN0ZWQuXG4iKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQog
ICAgIAogICAgIGlmICh2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKCIgICAgQ29tbWl0dGluZyB0
byBpbmxpbmluZy5cbiIpOworICAgICAgICBkYXRhTG9nKCIgICAgSW5saW5pbmcgc2hvdWxkIGJl
IHBvc3NpYmxlLlxuIik7CiAgICAgCi0gICAgLy8gTm93IHdlIGtub3cgd2l0aG91dCBhIGRvdWJ0
IHRoYXQgd2UgYXJlIGNvbW1pdHRlZCB0byBpbmxpbmluZy4gU28gYmVnaW4gdGhlIHByb2Nlc3MK
LSAgICAvLyBieSBjaGVja2luZyB0aGUgY2FsbGVlIChpZiBuZWNlc3NhcnkpIGFuZCBtYWtpbmcg
c3VyZSB0aGF0IGFyZ3VtZW50cyBhbmQgdGhlIGNhbGxlZQotICAgIC8vIGFyZSBmbHVzaGVkLgot
ICAgIGVtaXRGdW5jdGlvbkNoZWNrcyhjYWxsTGlua1N0YXR1cywgY2FsbFRhcmdldE5vZGUsIHJl
Z2lzdGVyT2Zmc2V0LCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgIC8vIEl0IG1pZ2h0IGJlIHBv
c3NpYmxlIHRvIGlubGluZS4KKyAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50
KCk7Cit9CisKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdl
dE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyaWFudCBjYWxsZWUsIGludCByZWdpc3Rl
ck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zm
c2V0LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgQ2FsbGVyTGlua2FiaWxpdHkgY2FsbGVy
TGlua2FiaWxpdHkpCit7CisgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlv
bktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5kKTsKICAg
ICAKKyAgICBBU1NFUlQoaW5saW5pbmdDb3N0KGNhbGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCkgIT0gVUlOVF9NQVgpOworICAgIAorICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gY2FsbGVlLmZ1bmN0aW9uRXhlY3V0YWJsZSgpLT5iYXNlbGluZUNv
ZGVCbG9ja0ZvcihzcGVjaWFsaXphdGlvbktpbmQpOworCiAgICAgLy8gRklYTUU6IERvbid0IGZs
dXNoIGNvbnN0YW50cyEKICAgICAKICAgICBpbnQgaW5saW5lQ2FsbEZyYW1lU3RhcnQgPSBtX2lu
bGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0
KSkub2Zmc2V0KCkgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOwpAQCAtMTIzMyw3ICsx
MjI4LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgICAg
ICByZXN1bHRSZWcgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQocmVzdWx0UmVnKTsK
ICAgICAKICAgICBJbmxpbmVTdGFja0VudHJ5IGlubGluZVN0YWNrRW50cnkoCi0gICAgICAgIHRo
aXMsIGNvZGVCbG9jaywgY29kZUJsb2NrLCBtX2dyYXBoLmxhc3RCbG9jaygpLCBjYWxsTGlua1N0
YXR1cy5mdW5jdGlvbigpLCByZXN1bHRSZWcsCisgICAgICAgIHRoaXMsIGNvZGVCbG9jaywgY29k
ZUJsb2NrLCBtX2dyYXBoLmxhc3RCbG9jaygpLCBjYWxsZWUuZnVuY3Rpb24oKSwgcmVzdWx0UmVn
LAogICAgICAgICAoVmlydHVhbFJlZ2lzdGVyKWlubGluZUNhbGxGcmFtZVN0YXJ0LCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywga2luZCk7CiAgICAgCiAgICAgLy8gVGhpcyBpcyB3aGVyZSB0
aGUgYWN0dWFsIGlubGluaW5nIHJlYWxseSBoYXBwZW5zLgpAQCAtMTI0Nyw4ICsxMjQyLDggQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgIAogICAgIFJFTEVB
U0VfQVNTRVJUKAogICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxGcmFtZS0+
aXNDbG9zdXJlQ2FsbAotICAgICAgICA9PSBjYWxsTGlua1N0YXR1cy5pc0Nsb3N1cmVDYWxsKCkp
OwotICAgIGlmIChjYWxsTGlua1N0YXR1cy5pc0Nsb3N1cmVDYWxsKCkpIHsKKyAgICAgICAgPT0g
Y2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSk7CisgICAgaWYgKGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkp
IHsKICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBjYWxsZWVWYXJpYWJsZSA9CiAgICAgICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkNhbGxlZSksIGNhbGxUYXJnZXROb2Rl
LCBJbW1lZGlhdGVOYWtlZFNldCktPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwogICAgICAgICBWYXJp
YWJsZUFjY2Vzc0RhdGEqIHNjb3BlVmFyaWFibGUgPQpAQCAtMTI2Myw3ICsxMjU4LDcgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgIG1fZ3JhcGgubV9pbmxp
bmVWYXJpYWJsZURhdGEuYXBwZW5kKGlubGluZVZhcmlhYmxlRGF0YSk7CiAgICAgCiAgICAgcGFy
c2VDb2RlQmxvY2soKTsKLSAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7IC8vIFJlc2V0IG91ciBz
dGF0ZSBub3cgdGhhdCB3ZSdyZSBiYWNrIHRvIHRoZSBvdXRlciBjb2RlLgorICAgIGNsZWFyQ2Fj
aGVzKCk7IC8vIFJlc2V0IG91ciBzdGF0ZSBub3cgdGhhdCB3ZSdyZSBiYWNrIHRvIHRoZSBvdXRl
ciBjb2RlLgogICAgIAogICAgIG1fY3VycmVudEluZGV4ID0gb2xkSW5kZXg7CiAgICAgCkBAIC0x
Mjc2LDIwICsxMjcxLDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9k
ZQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS5tX2Nh
bGxzaXRlQmxvY2tIZWFkLT5pc0xpbmtlZCk7CiAgICAgICAgIAotICAgICAgICAvLyBJdCdzIHBv
c3NpYmxlIHRoYXQgdGhlIGNhbGxzaXRlIGJsb2NrIGhlYWQgaXMgbm90IG93bmVkIGJ5IHRoZSBj
YWxsZXIuCi0gICAgICAgIGlmICghaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+bV91bmxpbmtl
ZEJsb2Nrcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIC8vIEl0J3MgZGVmaW5pdGVseSBvd25l
ZCBieSB0aGUgY2FsbGVyLCBiZWNhdXNlIHRoZSBjYWxsZXIgY3JlYXRlZCBuZXcgYmxvY2tzLgot
ICAgICAgICAgICAgLy8gQXNzZXJ0IHRoYXQgdGhpcyBhbGwgYWRkcyB1cC4KLSAgICAgICAgICAg
IEFTU0VSVChpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tzLmxhc3Qo
KS5tX2Jsb2NrID09IGlubGluZVN0YWNrRW50cnkubV9jYWxsc2l0ZUJsb2NrSGVhZCk7Ci0gICAg
ICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nr
cy5sYXN0KCkubV9uZWVkc05vcm1hbExpbmtpbmcpOwotICAgICAgICAgICAgaW5saW5lU3RhY2tF
bnRyeS5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9uZWVkc05vcm1hbExpbmtp
bmcgPSBmYWxzZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIEl0J3MgZGVmaW5p
dGVseSBub3Qgb3duZWQgYnkgdGhlIGNhbGxlci4gVGVsbCB0aGUgY2FsbGVyIHRoYXQgaGUgZG9l
cyBub3QKLSAgICAgICAgICAgIC8vIG5lZWQgdG8gbGluayBoaXMgY2FsbHNpdGUgYmxvY2sgaGVh
ZCwgYmVjYXVzZSB3ZSBkaWQgaXQgZm9yIGhpbS4KLSAgICAgICAgICAgIEFTU0VSVChpbmxpbmVT
dGFja0VudHJ5Lm1fY2FsbGVyLT5tX2NhbGxzaXRlQmxvY2tIZWFkTmVlZHNMaW5raW5nKTsKLSAg
ICAgICAgICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLT5tX2NhbGxzaXRlQmxv
Y2tIZWFkID09IGlubGluZVN0YWNrRW50cnkubV9jYWxsc2l0ZUJsb2NrSGVhZCk7Ci0gICAgICAg
ICAgICBpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLT5tX2NhbGxzaXRlQmxvY2tIZWFkTmVlZHNM
aW5raW5nID0gZmFsc2U7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGNhbGxlckxpbmthYmlsaXR5
ID09IENhbGxlckRvZXNOb3JtYWxMaW5raW5nKQorICAgICAgICAgICAgY2FuY2VsTGlua2luZ0Zv
ckJsb2NrKGlubGluZVN0YWNrRW50cnkubV9jYWxsZXIsIGlubGluZVN0YWNrRW50cnkubV9jYWxs
c2l0ZUJsb2NrSGVhZCk7CiAgICAgICAgIAogICAgICAgICBsaW5rQmxvY2tzKGlubGluZVN0YWNr
RW50cnkubV91bmxpbmtlZEJsb2NrcywgaW5saW5lU3RhY2tFbnRyeS5tX2Jsb2NrTGlua2luZ1Rh
cmdldHMpOwogICAgIH0gZWxzZQpAQCAtMTMwOCwxNiArMTI5MSwxOSBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgICAgICAgICAvLyBmb3IgcmVsZWFzZSBi
dWlsZHMgYmVjYXVzZSB0aGlzIGJsb2NrIHdpbGwgbmV2ZXIgc2VydmUgYXMgYSBwb3RlbnRpYWwg
dGFyZ2V0CiAgICAgICAgICAgICAvLyBpbiB0aGUgbGlua2VyJ3MgYmluYXJ5IHNlYXJjaC4KICAg
ICAgICAgICAgIGxhc3RCbG9jay0+Ynl0ZWNvZGVCZWdpbiA9IG1fY3VycmVudEluZGV4OwotICAg
ICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MuYXBw
ZW5kKFVubGlua2VkQmxvY2sobV9ncmFwaC5sYXN0QmxvY2soKSkpOworICAgICAgICAgICAgaWYg
KGNhbGxlckxpbmthYmlsaXR5ID09IENhbGxlckRvZXNOb3JtYWxMaW5raW5nKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkFkZGlu
ZyB1bmxpbmtlZCBibG9jayAiLCBSYXdQb2ludGVyKG1fZ3JhcGgubGFzdEJsb2NrKCkpLCAiIChv
bmUgcmV0dXJuKVxuIik7CisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxs
ZXItPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2sobV9ncmFwaC5sYXN0Qmxv
Y2soKSkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBtX2N1
cnJlbnRCbG9jayA9IG1fZ3JhcGgubGFzdEJsb2NrKCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIC8vIElmIHdlIGdldCB0byB0aGlzIHBv
aW50IHRoZW4gYWxsIGJsb2NrcyBtdXN0IGVuZCBpbiBzb21lIHNvcnQgb2YgdGVybWluYWxzLgog
ICAgIEFTU0VSVChsYXN0QmxvY2stPmxhc3QoKS0+aXNUZXJtaW5hbCgpKTsKLSAgICAKIAogICAg
IC8vIE5lZWQgdG8gY3JlYXRlIGEgbmV3IGJhc2ljIGJsb2NrIGZvciB0aGUgY29udGludWF0aW9u
IGF0IHRoZSBjYWxsZXIuCiAgICAgUmVmUHRyPEJhc2ljQmxvY2s+IGJsb2NrID0gYWRvcHRSZWYo
bmV3IEJhc2ljQmxvY2sobmV4dE9mZnNldCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCBQ
TmFOKSk7CkBAIC0xMzMzLDIwICsxMzE5LDI5MyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVJbmxpbmluZyhOb2RlCiAgICAgICAgIEFTU0VSVCghbm9kZS0+dGFyZ2V0QmxvY2soKSk7CiAg
ICAgICAgIG5vZGUtPnRhcmdldEJsb2NrKCkgPSBibG9jay5nZXQoKTsKICAgICAgICAgaW5saW5l
U3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzW2ldLm1fbmVlZHNFYXJseVJldHVybkxpbmtpbmcg
PSBmYWxzZTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgICAgIGJsb2NrVG9MaW5rLT5pc0xp
bmtlZCA9IHRydWU7Ci0jZW5kaWYKKyAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBk
YXRhTG9nKCJNYXJraW5nICIsIFJhd1BvaW50ZXIoYmxvY2tUb0xpbmspLCAiIGFzIGxpbmtlZCAo
anVtcHMgdG8gcmV0dXJuKVxuIik7CisgICAgICAgIGJsb2NrVG9MaW5rLT5kaWRMaW5rKCk7CiAg
ICAgfQogICAgIAogICAgIG1fY3VycmVudEJsb2NrID0gYmxvY2suZ2V0KCk7CiAgICAgQVNTRVJU
KG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuaXNFbXB0
eSgpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMu
bGFzdCgpLT5ieXRlY29kZUJlZ2luIDwgbmV4dE9mZnNldCk7Ci0gICAgbV9pbmxpbmVTdGFja1Rv
cC0+bV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2su
Z2V0KCkpKTsKLSAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdU
YXJnZXRzLmFwcGVuZChibG9jay5nZXQoKSk7CisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGRh
dGFMb2coIkFkZGluZyB1bmxpbmtlZCBibG9jayAiLCBSYXdQb2ludGVyKGJsb2NrLmdldCgpKSwg
IiAobWFueSByZXR1cm5zKVxuIik7CisgICAgaWYgKGNhbGxlckxpbmthYmlsaXR5ID09IENhbGxl
ckRvZXNOb3JtYWxMaW5raW5nKSB7CisgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVy
LT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLmdldCgpKSk7Cisg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMu
YXBwZW5kKGJsb2NrLmdldCgpKTsKKyAgICB9CiAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhibG9j
ayk7CiAgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOworfQorCit2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpjYW5jZWxMaW5raW5nRm9yQmxvY2soSW5saW5lU3RhY2tFbnRyeSogaW5saW5lU3RhY2tFbnRy
eSwgQmFzaWNCbG9jayogYmxvY2spCit7CisgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHRoZSBj
YWxsc2l0ZSBibG9jayBoZWFkIGlzIG5vdCBvd25lZCBieSB0aGUgY2FsbGVyLgorICAgIGlmICgh
aW5saW5lU3RhY2tFbnRyeS0+bV91bmxpbmtlZEJsb2Nrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
Ly8gSXQncyBkZWZpbml0ZWx5IG93bmVkIGJ5IHRoZSBjYWxsZXIsIGJlY2F1c2UgdGhlIGNhbGxl
ciBjcmVhdGVkIG5ldyBibG9ja3MuCisgICAgICAgIC8vIEFzc2VydCB0aGF0IHRoaXMgYWxsIGFk
ZHMgdXAuCisgICAgICAgIEFTU0VSVF9VTlVTRUQoYmxvY2ssIGlubGluZVN0YWNrRW50cnktPm1f
dW5saW5rZWRCbG9ja3MubGFzdCgpLm1fYmxvY2sgPT0gYmxvY2spOworICAgICAgICBBU1NFUlQo
aW5saW5lU3RhY2tFbnRyeS0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9uZWVkc05vcm1hbExp
bmtpbmcpOworICAgICAgICBpbmxpbmVTdGFja0VudHJ5LT5tX3VubGlua2VkQmxvY2tzLmxhc3Qo
KS5tX25lZWRzTm9ybWFsTGlua2luZyA9IGZhbHNlOworICAgIH0gZWxzZSB7CisgICAgICAgIC8v
IEl0J3MgZGVmaW5pdGVseSBub3Qgb3duZWQgYnkgdGhlIGNhbGxlci4gVGVsbCB0aGUgY2FsbGVy
IHRoYXQgaGUgZG9lcyBub3QKKyAgICAgICAgLy8gbmVlZCB0byBsaW5rIGhpcyBjYWxsc2l0ZSBi
bG9jayBoZWFkLCBiZWNhdXNlIHdlIGRpZCBpdCBmb3IgaGltLgorICAgICAgICBBU1NFUlQoaW5s
aW5lU3RhY2tFbnRyeS0+bV9jYWxsc2l0ZUJsb2NrSGVhZE5lZWRzTGlua2luZyk7CisgICAgICAg
IEFTU0VSVF9VTlVTRUQoYmxvY2ssIGlubGluZVN0YWNrRW50cnktPm1fY2FsbHNpdGVCbG9ja0hl
YWQgPT0gYmxvY2spOworICAgICAgICBpbmxpbmVTdGFja0VudHJ5LT5tX2NhbGxzaXRlQmxvY2tI
ZWFkTmVlZHNMaW5raW5nID0gZmFsc2U7CisgICAgfQorfQorCitib29sIEJ5dGVDb2RlUGFyc2Vy
OjphdHRlbXB0VG9JbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3Bl
cmFuZCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1l
OjpLaW5kIGtpbmQsIENhbGxlckxpbmthYmlsaXR5IGNhbGxlckxpbmthYmlsaXR5LCBTcGVjdWxh
dGVkVHlwZSBwcmVkaWN0aW9uLCB1bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlKQoreworICAgIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1l
OjpzcGVjaWFsaXphdGlvbktpbmRGb3Ioa2luZCk7CisgICAgCisgICAgaWYgKCFpbmxpbmluZ0Jh
bGFuY2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoSW50ZXJuYWxGdW5j
dGlvbiogZnVuY3Rpb24gPSBjYWxsZWUuaW50ZXJuYWxGdW5jdGlvbigpKSB7CisgICAgICAgIGlm
IChoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24ocmVzdWx0T3BlcmFuZCwgZnVuY3Rpb24s
IHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRp
b25LaW5kKSkgeworICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0Tm9k
ZSk7CisgICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgICAgICAg
ICBpbmxpbmluZ0JhbGFuY2UtLTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgCi0gICAgLy8gQXQgdGhpcyBwb2lu
dCB3ZSByZXR1cm4gYW5kIGNvbnRpbnVlIHRvIGdlbmVyYXRlIGNvZGUgZm9yIHRoZSBjYWxsZXIs
IGJ1dAotICAgIC8vIGluIHRoZSBuZXcgYmFzaWMgYmxvY2suCisgICAgSW50cmluc2ljIGludHJp
bnNpYyA9IGNhbGxlZS5pbnRyaW5zaWNGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICBpZiAo
aW50cmluc2ljICE9IE5vSW50cmluc2ljKSB7CisgICAgICAgIGlmIChoYW5kbGVJbnRyaW5zaWMo
cmVzdWx0T3BlcmFuZCwgaW50cmluc2ljLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIHByZWRpY3Rpb24pKSB7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50
b20sIGNhbGxUYXJnZXROb2RlKTsKKyAgICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJl
Z2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25L
aW5kKTsKKyAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZS0tOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAg
ICB1bnNpZ25lZCBteUlubGluaW5nQ29zdCA9IGlubGluaW5nQ29zdChjYWxsZWUsIGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgIGlmIChteUlubGlu
aW5nQ29zdCA+IGlubGluaW5nQmFsYW5jZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAor
ICAgIGlubGluZUNhbGwoY2FsbFRhcmdldE5vZGUsIHJlc3VsdE9wZXJhbmQsIGNhbGxlZSwgcmVn
aXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zmc2V0LCBraW5k
LCBjYWxsZXJMaW5rYWJpbGl0eSk7CisgICAgaW5saW5pbmdCYWxhbmNlIC09IG15SW5saW5pbmdD
b3N0OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJ
bmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IENh
bGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIE5vZGVUeXBlIGNh
bGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rp
b24pCit7CisgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgZGF0YUxvZygiSGFuZGxpbmcgaW5s
aW5pbmcuLi5cbiIpOworICAgICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmln
aW4oKSwgIlxuIik7CisgICAgfQorICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6
YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXphdGlvbktpbmRGb3Ioa2luZCk7
CisgICAgCisgICAgaWYgKCFjYWxsTGlua1N0YXR1cy5zaXplKCkpIHsKKyAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICBkYXRhTG9nKCJCYWlsaW5nIGlubGluaW5nLlxuIik7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgaW5saW5pbmdCYWxh
bmNlID0gT3B0aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3Ry
dWN0aW9uQ291bnQoKTsKKyAgICBpZiAoc3BlY2lhbGl6YXRpb25LaW5kID09IENvZGVGb3JDb25z
dHJ1Y3QpCisgICAgICAgIGlubGluaW5nQmFsYW5jZSA9IHN0ZDo6bWluKGlubGluaW5nQmFsYW5j
ZSwgT3B0aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saW5lQ2FuZGlkYXRlSW5z
dHJ1Y3Rpb25Db3VudCgpKTsKKyAgICBpZiAoY2FsbExpbmtTdGF0dXMuaXNDbG9zdXJlQ2FsbCgp
KQorICAgICAgICBpbmxpbmluZ0JhbGFuY2UgPSBzdGQ6Om1pbihpbmxpbmluZ0JhbGFuY2UsIE9w
dGlvbnM6Om1heGltdW1GdW5jdGlvbkZvckNsb3N1cmVDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1
Y3Rpb25Db3VudCgpKTsKKyAgICAKKyAgICAvLyBGaXJzdCBjaGVjayBpZiB3ZSBjYW4gYXZvaWQg
Y3JlYXRpbmcgY29udHJvbCBmbG93LiBPdXIgaW5saW5lciBkb2VzIHNvbWUgQ0ZHCisgICAgLy8g
c2ltcGxpZmljYXRpb24gb24gdGhlIGZseSBhbmQgdGhpcyBoZWxwcyByZWR1Y2UgY29tcGlsZSB0
aW1lcywgYnV0IHdlIGNhbiBvbmx5IGxldmVyYWdlCisgICAgLy8gdGhpcyBpbiBjYXNlcyB3aGVy
ZSB3ZSBkb24ndCBuZWVkIGNvbnRyb2wgZmxvdyBkaWFtb25kcyB0byBjaGVjayB0aGUgY2FsbGVl
LgorICAgIGlmICghY2FsbExpbmtTdGF0dXMuY291bGRUYWtlU2xvd1BhdGgoKSAmJiBjYWxsTGlu
a1N0YXR1cy5zaXplKCkgPT0gMSkgeworICAgICAgICBlbWl0RnVuY3Rpb25DaGVja3MoCisgICAg
ICAgICAgICBjYWxsTGlua1N0YXR1c1swXS5jYWxsZWUoKSwgY2FsbFRhcmdldE5vZGUsIHJlZ2lz
dGVyT2Zmc2V0LCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgICAgICBib29sIHJlc3VsdCA9IGF0
dGVtcHRUb0lubGluZUNhbGwoCisgICAgICAgICAgICBjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0T3Bl
cmFuZCwgY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVlKCksIHJlZ2lzdGVyT2Zmc2V0LAorICAgICAg
ICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQsIGtpbmQsIENhbGxl
ckRvZXNOb3JtYWxMaW5raW5nLCBwcmVkaWN0aW9uLAorICAgICAgICAgICAgaW5saW5pbmdCYWxh
bmNlKTsKKyAgICAgICAgaWYgKCFyZXN1bHQgJiYgIWNhbGxMaW5rU3RhdHVzLmlzUHJvdmVkKCkp
CisgICAgICAgICAgICB1bmRvRnVuY3Rpb25DaGVja3MoY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVl
KCkpOworICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgZGF0YUxvZygiRG9uZSBp
bmxpbmluZyAoc2ltcGxlKS5cbiIpOworICAgICAgICAgICAgZGF0YUxvZygiU3RhY2s6ICIsIGN1
cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfQorICAgIAorICAgIC8vIFdlIG5lZWQgdG8gY3JlYXRlIHNvbWUga2luZCBvZiBz
d2l0Y2ggb3ZlciBjYWxsZWUuIEZvciBub3cgd2Ugb25seSBkbyB0aGlzIGlmIHdlIGJlbGlldmUg
dGhhdAorICAgIC8vIHdlJ3JlIGluIHRoZSB0b3AgdGllci4gV2UgaGF2ZSB0d28gcmVhc29ucyBm
b3IgdGhpczogZmlyc3QsIGl0IHByb3ZpZGVzIHVzIGFuIG9wcG9ydHVuaXR5IHRvCisgICAgLy8g
ZG8gbW9yZSBkZXRhaWxlZCBwb2x5dmFyaWFudC9wb2x5bW9ycGhpYyBwcm9maWxpbmc7IGFuZCBz
ZWNvbmQsIGl0IHJlZHVjZXMgY29tcGlsZSB0aW1lcyBpbgorICAgIC8vIHRoZSBERkcuIEFuZCBi
eSBwb2x5dmFyaWFudCBwcm9maWxpbmcgd2UgbWVhbiBwb2x5dmFyaWFudCBwcm9maWxpbmcgb2Yg
KnRoaXMqIGNhbGwuIE5vdGUgdGhhdAorICAgIC8vIHdlIGNvdWxkIGltcHJvdmUgdGhhdCBhc3Bl
Y3Qgb2YgdGhpcyBieSBkb2luZyBwb2x5bW9ycGhpYyBpbmxpbmluZyBidXQgaGF2aW5nIHRoZSBw
cm9maWxpbmcKKyAgICAvLyBhbHNvLiBDdXJyZW50bHkgd2Ugb3B0IGFnYWluc3QgdGhpcywgYnV0
IGl0IGNvdWxkIGJlIGludGVyZXN0aW5nLiBUaGF0IHdvdWxkIHJlcXVpcmUgaGF2aW5nIGEKKyAg
ICAvLyBzZXBhcmF0ZSBub2RlIGZvciBjYWxsIGVkZ2UgcHJvZmlsaW5nLgorICAgIC8vIEZJWE1F
OiBJbnRyb2R1Y2UgdGhlIG5vdGlvbiBvZiBhIHNlcGFyYXRlIGNhbGwgZWRnZSBwcm9maWxpbmcg
bm9kZS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2
MDMzCisgICAgaWYgKCFpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSB8fCAhT3B0aW9uczo6ZW5h
YmxlUG9seW1vcnBoaWNDYWxsSW5saW5pbmcoKSkgeworICAgICAgICBpZiAodmVyYm9zZSkgewor
ICAgICAgICAgICAgZGF0YUxvZygiQmFpbGluZyBpbmxpbmluZyAoaGFyZCkuXG4iKTsKKyAgICAg
ICAgICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVk
IG9sZE9mZnNldCA9IG1fY3VycmVudEluZGV4OworICAgIAorICAgIGJvb2wgYWxsQXJlQ2xvc3Vy
ZUNhbGxzID0gdHJ1ZTsKKyAgICBib29sIGFsbEFyZURpcmVjdENhbGxzID0gdHJ1ZTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSBjYWxsTGlua1N0YXR1cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAg
aWYgKGNhbGxMaW5rU3RhdHVzW2ldLmNhbGxlZSgpLmlzQ2xvc3VyZUNhbGwoKSkKKyAgICAgICAg
ICAgIGFsbEFyZURpcmVjdENhbGxzID0gZmFsc2U7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGFsbEFyZUNsb3N1cmVDYWxscyA9IGZhbHNlOworICAgIH0KKyAgICAKKyAgICBOb2RlKiB0aGlu
Z1RvU3dpdGNoT247CisgICAgaWYgKGFsbEFyZURpcmVjdENhbGxzKQorICAgICAgICB0aGluZ1Rv
U3dpdGNoT24gPSBjYWxsVGFyZ2V0Tm9kZTsKKyAgICBlbHNlIGlmIChhbGxBcmVDbG9zdXJlQ2Fs
bHMpCisgICAgICAgIHRoaW5nVG9Td2l0Y2hPbiA9IGFkZFRvR3JhcGgoR2V0RXhlY3V0YWJsZSwg
Y2FsbFRhcmdldE5vZGUpOworICAgIGVsc2UgeworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGJlIGFibGUgdG8gaGFuZGxlIHRoaXMgY2FzZSwgYnV0IGl0J3MgdHJpY2t5IGFuZCB3ZSBkb24n
dCBrbm93IG9mIGNhc2VzCisgICAgICAgIC8vIHdoZXJlIGl0IHdvdWxkIGJlIGJlbmVmaWNpYWwu
IEFsc28sIENhbGxMaW5rU3RhdHVzIHdvdWxkIG1ha2UgYWxsIGNhbGxlZXMgYXBwZWFyIGxpa2UK
KyAgICAgICAgLy8gY2xvc3VyZSBjYWxscyBpZiBhbnkgY2FsbHMgd2VyZSBjbG9zdXJlIGNhbGxz
IC0gZXhjZXB0IGZvciBjYWxscyB0byBpbnRlcm5hbCBmdW5jdGlvbnMuCisgICAgICAgIC8vIFNv
IHRoaXMgd2lsbCBvbmx5IGFyaXNlIGlmIHNvbWUgY2FsbGVlcyBhcmUgaW50ZXJuYWwgZnVuY3Rp
b25zIGFuZCBvdGhlcnMgYXJlIGNsb3N1cmVzLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MDIwCisgICAgICAgIGlmICh2ZXJib3NlKSB7Cisg
ICAgICAgICAgICBkYXRhTG9nKCJCYWlsaW5nIGlubGluaW5nIChtaXgpLlxuIik7CisgICAgICAg
ICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBpZiAodmVyYm9z
ZSkgeworICAgICAgICBkYXRhTG9nKCJEb2luZyBoYXJkIGlubGluaW5nLi4uXG4iKTsKKyAgICAg
ICAgZGF0YUxvZygiU3RhY2s6ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOworICAgIH0K
KyAgICAKKyAgICAvLyBUaGlzIG1ha2VzIG1lIHdpc2ggdGhhdCB3ZSB3ZXJlIGluIFNTQSBhbGwg
dGhlIHRpbWUuIFdlIG5lZWQgdG8gcGljayBhIHZhcmlhYmxlIGludG8gd2hpY2ggdG8KKyAgICAv
LyBzdG9yZSB0aGUgY2FsbGVlIHNvIHRoYXQgaXQgd2lsbCBiZSBhY2Nlc3NpYmxlIHRvIGFsbCBv
ZiB0aGUgYmxvY2tzIHdlJ3JlIGFib3V0IHRvIGNyZWF0ZS4gV2UKKyAgICAvLyBnZXQgYXdheSB3
aXRoIGRvaW5nIGFuIGltbWVkaWF0ZS1zZXQgaGVyZSBiZWNhdXNlIHdlIHdvdWxkbid0IGhhdmUg
cGVyZm9ybWVkIGFueSBzaWRlIGVmZmVjdHMKKyAgICAvLyB5ZXQuCisgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgIGRhdGFMb2coIlJlZ2lzdGVyIG9mZnNldDogIiwgcmVnaXN0ZXJPZmZzZXQpOwor
ICAgIFZpcnR1YWxSZWdpc3RlciBjYWxsZWVSZWcocmVnaXN0ZXJPZmZzZXQgKyBKU1N0YWNrOjpD
YWxsZWUpOworICAgIGNhbGxlZVJlZyA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChj
YWxsZWVSZWcpOworICAgIGlmICh2ZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJDYWxsZWUgaXMg
Z29pbmcgdG8gYmUgIiwgY2FsbGVlUmVnLCAiXG4iKTsKKyAgICBzZXREaXJlY3QoY2FsbGVlUmVn
LCBjYWxsVGFyZ2V0Tm9kZSwgSW1tZWRpYXRlU2V0V2l0aEZsdXNoKTsKKyAgICAKKyAgICBTd2l0
Y2hEYXRhJiBkYXRhID0gKm1fZ3JhcGgubV9zd2l0Y2hEYXRhLmFkZCgpOworICAgIGRhdGEua2lu
ZCA9IFN3aXRjaENlbGw7CisgICAgYWRkVG9HcmFwaChTd2l0Y2gsIE9wSW5mbygmZGF0YSksIHRo
aW5nVG9Td2l0Y2hPbik7CisgICAgCisgICAgQmFzaWNCbG9jayogb3JpZ2luQmxvY2sgPSBtX2N1
cnJlbnRCbG9jazsKKyAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygiTWFya2luZyAi
LCBSYXdQb2ludGVyKG9yaWdpbkJsb2NrKSwgIiBhcyBsaW5rZWQgKG9yaWdpbiBvZiBwb2x5IGlu
bGluZSlcbiIpOworICAgIG9yaWdpbkJsb2NrLT5kaWRMaW5rKCk7CisgICAgY2FuY2VsTGlua2lu
Z0ZvckJsb2NrKG1faW5saW5lU3RhY2tUb3AsIG9yaWdpbkJsb2NrKTsKKyAgICAKKyAgICAvLyBF
YWNoIGlubGluZWQgY2FsbGVlIHdpbGwgaGF2ZSBhIGxhbmRpbmcgYmxvY2sgdGhhdCBpdCByZXR1
cm5zIGF0LiBUaGV5IHNob3VsZCBhbGwgaGF2ZSBqdW1wcworICAgIC8vIHRvIHRoZSBjb250aW51
YXRpb24gYmxvY2ssIHdoaWNoIHdlIGNyZWF0ZSBsYXN0LgorICAgIFZlY3RvcjxCYXNpY0Jsb2Nr
Kj4gbGFuZGluZ0Jsb2NrczsKKyAgICAKKyAgICAvLyBXZSBtYWtlIGZvcmNlIHRoaXMgdHJ1ZSBp
ZiB3ZSBnaXZlIHVwIG9uIGlubGluaW5nIGFueSBvZiB0aGUgZWRnZXMuCisgICAgYm9vbCBjb3Vs
ZFRha2VTbG93UGF0aCA9IGNhbGxMaW5rU3RhdHVzLmNvdWxkVGFrZVNsb3dQYXRoKCk7CisgICAg
CisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGRhdGFMb2coIkFib3V0IHRvIGxvb3Agb3ZlciBm
dW5jdGlvbnMgYXQgIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIi5cbiIpOworICAgIAorICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsTGlua1N0YXR1cy5zaXplKCk7ICsraSkgeworICAg
ICAgICBtX2N1cnJlbnRJbmRleCA9IG9sZE9mZnNldDsKKyAgICAgICAgUmVmUHRyPEJhc2ljQmxv
Y2s+IGJsb2NrID0gYWRvcHRSZWYobmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIG1fbnVtQXJndW1l
bnRzLCBtX251bUxvY2FscywgUE5hTikpOworICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2Nr
LmdldCgpOworICAgICAgICBtX2dyYXBoLmFwcGVuZEJsb2NrKGJsb2NrKTsKKyAgICAgICAgcHJl
cGFyZVRvUGFyc2VCbG9jaygpOworICAgICAgICAKKyAgICAgICAgTm9kZSogbXlDYWxsVGFyZ2V0
Tm9kZSA9IGdldERpcmVjdChjYWxsZWVSZWcpOworICAgICAgICAKKyAgICAgICAgYm9vbCBpbmxp
bmluZ1Jlc3VsdCA9IGF0dGVtcHRUb0lubGluZUNhbGwoCisgICAgICAgICAgICBteUNhbGxUYXJn
ZXROb2RlLCByZXN1bHRPcGVyYW5kLCBjYWxsTGlua1N0YXR1c1tpXS5jYWxsZWUoKSwgcmVnaXN0
ZXJPZmZzZXQsCisgICAgICAgICAgICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbmV4dE9m
ZnNldCwga2luZCwgQ2FsbGVyTGlua3NNYW51YWxseSwgcHJlZGljdGlvbiwKKyAgICAgICAgICAg
IGlubGluaW5nQmFsYW5jZSk7CisgICAgICAgIAorICAgICAgICBpZiAoIWlubGluaW5nUmVzdWx0
KSB7CisgICAgICAgICAgICAvLyBUaGF0IGZhaWxlZCBzbyB3ZSBsZXQgdGhlIGJsb2NrIGRpZS4g
Tm90aGluZyBpbnRlcmVzdGluZyBzaG91bGQgaGF2ZSBiZWVuIGFkZGVkIHRvCisgICAgICAgICAg
ICAvLyB0aGUgYmxvY2suIFdlIGFsc28gZ2l2ZSB1cCBvbiBpbmxpbmluZyBhbnkgb2YgdGhlIChs
ZXNzIGZyZXF1ZW50KSBjYWxsZWVzLgorICAgICAgICAgICAgQVNTRVJUKG1fY3VycmVudEJsb2Nr
ID09IGJsb2NrLmdldCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLm1fYmxvY2tzLmxh
c3QoKSA9PSBibG9jayk7CisgICAgICAgICAgICBtX2dyYXBoLmtpbGxCbG9ja0FuZEl0c0NvbnRl
bnRzKGJsb2NrLmdldCgpKTsKKyAgICAgICAgICAgIG1fZ3JhcGgubV9ibG9ja3MucmVtb3ZlTGFz
dCgpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBUaGUgZmFjdCB0aGF0IGlubGluaW5n
IGZhaWxlZCBtZWFucyB3ZSBuZWVkIGEgc2xvdyBwYXRoLgorICAgICAgICAgICAgY291bGRUYWtl
U2xvd1BhdGggPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIEpTQ2VsbCogdGhpbmdUb0Nhc2VPbjsKKyAgICAgICAgaWYgKGFsbEFyZURpcmVj
dENhbGxzKQorICAgICAgICAgICAgdGhpbmdUb0Nhc2VPbiA9IGNhbGxMaW5rU3RhdHVzW2ldLmNh
bGxlZSgpLm5vbkV4ZWN1dGFibGVDYWxsZWUoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBBU1NFUlQoYWxsQXJlQ2xvc3VyZUNhbGxzKTsKKyAgICAgICAgICAgIHRoaW5nVG9DYXNlT24g
PSBjYWxsTGlua1N0YXR1c1tpXS5jYWxsZWUoKS5leGVjdXRhYmxlKCk7CisgICAgICAgIH0KKyAg
ICAgICAgZGF0YS5jYXNlcy5hcHBlbmQoU3dpdGNoQ2FzZShtX2dyYXBoLmZyZWV6ZSh0aGluZ1Rv
Q2FzZU9uKSwgYmxvY2suZ2V0KCkpKTsKKyAgICAgICAgbV9jdXJyZW50SW5kZXggPSBuZXh0T2Zm
c2V0OworICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOyAvLyBUaGlzIG9ubHkgY29tZXMg
aW50byBwbGF5IGZvciBpbnRyaW5zaWNzLCBzaW5jZSBub3JtYWwgaW5saW5lZCBjb2RlIHdpbGwg
bGVhdmUgYW4gZW1wdHkgcXVldWUuCisgICAgICAgIGFkZFRvR3JhcGgoSnVtcCk7CisgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgZGF0YUxvZygiTWFya2luZyAiLCBSYXdQb2ludGVy
KG1fY3VycmVudEJsb2NrKSwgIiBhcyBsaW5rZWQgKHRhaWwgb2YgcG9seSBpbmxpbmVlKVxuIik7
CisgICAgICAgIG1fY3VycmVudEJsb2NrLT5kaWRMaW5rKCk7CisgICAgICAgIGxhbmRpbmdCbG9j
a3MuYXBwZW5kKG1fY3VycmVudEJsb2NrKTsKKworICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgICAgIGRhdGFMb2coIkZpbmlzaGVkIGlubGluaW5nICIsIGNhbGxMaW5rU3RhdHVzW2ldLmNh
bGxlZSgpLCAiIGF0ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICIuXG4iKTsKKyAgICB9CisgICAg
CisgICAgUmVmUHRyPEJhc2ljQmxvY2s+IHNsb3dQYXRoQmxvY2sgPSBhZG9wdFJlZigKKyAgICAg
ICAgbmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2Fscywg
UE5hTikpOworICAgIG1fY3VycmVudEluZGV4ID0gb2xkT2Zmc2V0OworICAgIGRhdGEuZmFsbFRo
cm91Z2ggPSBCcmFuY2hUYXJnZXQoc2xvd1BhdGhCbG9jay5nZXQoKSk7CisgICAgbV9ncmFwaC5h
cHBlbmRCbG9jayhzbG93UGF0aEJsb2NrKTsKKyAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgZGF0
YUxvZygiTWFya2luZyAiLCBSYXdQb2ludGVyKHNsb3dQYXRoQmxvY2suZ2V0KCkpLCAiIGFzIGxp
bmtlZCAoc2xvdyBwYXRoIGJsb2NrKVxuIik7CisgICAgc2xvd1BhdGhCbG9jay0+ZGlkTGluaygp
OworICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKKyAgICBtX2N1cnJlbnRCbG9jayA9IHNsb3dQ
YXRoQmxvY2suZ2V0KCk7CisgICAgTm9kZSogbXlDYWxsVGFyZ2V0Tm9kZSA9IGdldERpcmVjdChj
YWxsZWVSZWcpOworICAgIGlmIChjb3VsZFRha2VTbG93UGF0aCkgeworICAgICAgICBhZGRDYWxs
KAorICAgICAgICAgICAgcmVzdWx0T3BlcmFuZCwgY2FsbE9wLCBPcEluZm8oKSwgbXlDYWxsVGFy
Z2V0Tm9kZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCisgICAgICAgICAgICByZWdpc3Rl
ck9mZnNldCwgcHJlZGljdGlvbik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYWRkVG9HcmFwaChD
aGVja0JhZENlbGwpOworICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIG15Q2FsbFRhcmdldE5v
ZGUpOworICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgICAgIAorICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBhZGRUb0dyYXBoKEJvdHRv
bVZhbHVlKSk7CisgICAgfQorCisgICAgbV9jdXJyZW50SW5kZXggPSBuZXh0T2Zmc2V0OworICAg
IHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7CisgICAgYWRkVG9HcmFwaChKdW1wKTsKKyAgICBsYW5k
aW5nQmxvY2tzLmFwcGVuZChtX2N1cnJlbnRCbG9jayk7CisgICAgCisgICAgUmVmUHRyPEJhc2lj
QmxvY2s+IGNvbnRpbnVhdGlvbkJsb2NrID0gYWRvcHRSZWYoCisgICAgICAgIG5ldyBCYXNpY0Js
b2NrKFVJTlRfTUFYLCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIFBOYU4pKTsKKyAgICBt
X2dyYXBoLmFwcGVuZEJsb2NrKGNvbnRpbnVhdGlvbkJsb2NrKTsKKyAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgZGF0YUxvZygiQWRkaW5nIHVubGlua2VkIGJsb2NrICIsIFJhd1BvaW50ZXIoY29u
dGludWF0aW9uQmxvY2suZ2V0KCkpLCAiIChjb250aW51YXRpb24pXG4iKTsKKyAgICBtX2lubGlu
ZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGNvbnRpbnVh
dGlvbkJsb2NrLmdldCgpKSk7CisgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOworICAgIG1fY3Vy
cmVudEJsb2NrID0gY29udGludWF0aW9uQmxvY2suZ2V0KCk7CisgICAgCisgICAgZm9yICh1bnNp
Z25lZCBpID0gbGFuZGluZ0Jsb2Nrcy5zaXplKCk7IGktLTspCisgICAgICAgIGxhbmRpbmdCbG9j
a3NbaV0tPmxhc3QoKS0+dGFyZ2V0QmxvY2soKSA9IGNvbnRpbnVhdGlvbkJsb2NrLmdldCgpOwor
ICAgIAorICAgIG1fY3VycmVudEluZGV4ID0gb2xkT2Zmc2V0OworICAgIAorICAgIGlmICh2ZXJi
b3NlKSB7CisgICAgICAgIGRhdGFMb2coIkRvbmUgaW5saW5pbmcgKGhhcmQpLlxuIik7CisgICAg
ICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKKyAgICB9
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE2NDUsNyArMTkwNCw3IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZVR5cGVkQXJyYXlDb24KIAogYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKAogICAgIGludCByZXN1bHRPcGVyYW5kLCBJbnRl
cm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgaW50IHJlZ2lzdGVyT2Zmc2V0LAotICAgIGludCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBraW5kKQorICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIC8vIElmIHdlIGV2ZXIgZmlu
ZCB0aGF0IHdlIGhhdmUgYSBsb3Qgb2YgaW50ZXJuYWwgZnVuY3Rpb25zIHRoYXQgd2Ugc3BlY2lh
bGl6ZSBmb3IsCiAgICAgLy8gdGhlbiB3ZSBzaG91bGQgcHJvYmFibHkgaGF2ZSBzb21lIHNvcnQg
b2YgaGFzaHRhYmxlIGRpc3BhdGNoLCBvciBtYXliZSBldmVuCkBAIC0xNjU0LDggKzE5MTMsNiBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVyCiAgICAgLy8gd2Uga25v
dyBhYm91dCBpcyBzbWFsbCBlbm91Z2gsIHRoYXQgaGF2aW5nIGp1c3QgYSBsaW5lYXIgY2FzY2Fk
ZSBvZiBpZiBzdGF0ZW1lbnRzCiAgICAgLy8gaXMgZ29vZCBlbm91Z2guCiAgICAgCi0gICAgVU5V
U0VEX1BBUkFNKHByZWRpY3Rpb24pOyAvLyBSZW1vdmUgdGhpcyBvbmNlIHdlIGRvIG1vcmUgdGhp
bmdzLgotICAgIAogICAgIGlmIChmdW5jdGlvbi0+Y2xhc3NJbmZvKCkgPT0gQXJyYXlDb25zdHJ1
Y3Rvcjo6aW5mbygpKSB7CiAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCkgIT0g
bV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMjAyMCw2ICsyMjc3LDEyIEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZVB1dEJ5SWQoCiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnByZXBhcmVUb1BhcnNl
QmxvY2soKQogeworICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgQVNTRVJUKG1fc2V0TG9jYWxRdWV1
ZS5pc0VtcHR5KCkpOworfQorCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpjbGVhckNhY2hlcygpCit7
CiAgICAgbV9jb25zdGFudHMucmVzaXplKDApOwogfQogCkBAIC0yMDU5LDkgKzIzMjIsNyBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgfQogCiAgICAgd2hp
bGUgKHRydWUpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2V0TG9jYWxR
dWV1ZS5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIG1fc2V0TG9jYWxRdWV1ZVtpXS5leGVjdXRl
KHRoaXMpOwotICAgICAgICBtX3NldExvY2FsUXVldWUucmVzaXplKDApOworICAgICAgICBwcm9j
ZXNzU2V0TG9jYWxRdWV1ZSgpOwogICAgICAgICAKICAgICAgICAgLy8gRG9uJ3QgZXh0ZW5kIG92
ZXIganVtcCBkZXN0aW5hdGlvbnMuCiAgICAgICAgIGlmIChtX2N1cnJlbnRJbmRleCA9PSBsaW1p
dCkgewpAQCAtMjIwNSwxMyArMjQ2NiwxMyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBKU0NlbGwqIGNhY2hlZEZ1bmN0aW9uID0gY3VycmVu
dEluc3RydWN0aW9uWzJdLnUuanNDZWxsLmdldCgpOwogICAgICAgICAgICAgaWYgKCFjYWNoZWRG
dW5jdGlvbiAKICAgICAgICAgICAgICAgICB8fCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVk
QmxvY2stPmNvdWxkVGFrZVNsb3dDYXNlKG1fY3VycmVudEluZGV4KQotICAgICAgICAgICAgICAg
IHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50
SW5kZXgsIEJhZEZ1bmN0aW9uKSkgeworICAgICAgICAgICAgICAgIHx8IG1faW5saW5lU3RhY2tU
b3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENlbGwpKSB7
CiAgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihKU1N0YWNrOjpDYWxsZWUpKSk7CiAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW4g
PSBtX2dyYXBoLmZyZWV6ZShjYWNoZWRGdW5jdGlvbik7CiAgICAgICAgICAgICAgICAgQVNTRVJU
KGNhY2hlZEZ1bmN0aW9uLT5pbmhlcml0cyhKU0Z1bmN0aW9uOjppbmZvKCkpKTsKICAgICAgICAg
ICAgICAgICBOb2RlKiBhY3R1YWxDYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6
OkNhbGxlZSkpOwotICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tGdW5jdGlvbiwgT3BJ
bmZvKGZyb3plbiksIGFjdHVhbENhbGxlZSk7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChD
aGVja0NlbGwsIE9wSW5mbyhmcm96ZW4pLCBhY3R1YWxDYWxsZWUpOwogICAgICAgICAgICAgICAg
IHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFk
ZFRvR3JhcGgoSlNDb25zdGFudCwgT3BJbmZvKGZyb3plbikpKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9jYWxsZWUpOwpAQCAtMjg5Myw3ICszMTU0LDcg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAg
Ly8gYWxyZWFkeSBnbmFybHkgZW5vdWdoIGFzIGl0IGlzLgogICAgICAgICAgICAgQVNTRVJUKHBv
aW50ZXJJc0Z1bmN0aW9uKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnNwZWNpYWxQb2ludGVyKSk7
CiAgICAgICAgICAgICBhZGRUb0dyYXBoKAotICAgICAgICAgICAgICAgIENoZWNrRnVuY3Rpb24s
CisgICAgICAgICAgICAgICAgQ2hlY2tDZWxsLAogICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dy
YXBoLmZyZWV6ZShzdGF0aWNfY2FzdDxKU0NlbGwqPihhY3R1YWxQb2ludGVyRm9yKAogICAgICAg
ICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jaywgY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUuc3BlY2lhbFBvaW50ZXIpKSkpLAogICAgICAgICAgICAgICAgIGdldChWaXJ0
dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpKTsKQEAgLTMzMTcs
MTUgKzM1NzgsMTkgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrKEJhc2ljQmxvYwog
ICAgICAgICBicmVhazsKICAgICB9CiAgICAgCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIGJs
b2NrLT5pc0xpbmtlZCA9IHRydWU7Ci0jZW5kaWYKKyAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ZGF0YUxvZygiTWFya2luZyAiLCBSYXdQb2ludGVyKGJsb2NrKSwgIiBhcyBsaW5rZWQgKGFjdHVh
bGx5IGRpZCBsaW5raW5nKVxuIik7CisgICAgYmxvY2stPmRpZExpbmsoKTsKIH0KIAogdm9pZCBC
eXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrcyhWZWN0b3I8VW5saW5rZWRCbG9jaz4mIHVubGlua2Vk
QmxvY2tzLCBWZWN0b3I8QmFzaWNCbG9jayo+JiBwb3NzaWJsZVRhcmdldHMpCiB7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB1bmxpbmtlZEJsb2Nrcy5zaXplKCk7ICsraSkgeworICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGRhdGFMb2coIkF0dGVtcHRpbmcgdG8gbGluayAi
LCBSYXdQb2ludGVyKHVubGlua2VkQmxvY2tzW2ldLm1fYmxvY2spLCAiXG4iKTsKICAgICAgICAg
aWYgKHVubGlua2VkQmxvY2tzW2ldLm1fbmVlZHNOb3JtYWxMaW5raW5nKSB7CisgICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRG9lcyBuZWVkIG5v
cm1hbCBsaW5raW5nLlxuIik7CiAgICAgICAgICAgICBsaW5rQmxvY2sodW5saW5rZWRCbG9ja3Nb
aV0ubV9ibG9jaywgcG9zc2libGVUYXJnZXRzKTsKICAgICAgICAgICAgIHVubGlua2VkQmxvY2tz
W2ldLm1fbmVlZHNOb3JtYWxMaW5raW5nID0gZmFsc2U7CiAgICAgICAgIH0KQEAgLTM0OTIsNyAr
Mzc1Nyw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmUKIAogdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogewotICAgIHByZXBhcmVUb1BhcnNl
QmxvY2soKTsKKyAgICBjbGVhckNhY2hlcygpOwogICAgIAogICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2s7CiAgICAgCkBAIC0zNTU4LDcgKzM4
MjMsMTIgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogICAgICAgICAg
ICAgICAgICAgICAvLyAyKSBJZiB0aGUgYnl0ZWNvZGVCZWdpbiBpcyBlcXVhbCB0byB0aGUgY3Vy
cmVudEluZGV4LCB0aGVuIHdlIGZhaWxlZCB0byBkbwogICAgICAgICAgICAgICAgICAgICAvLyAg
ICBhIHBlZXBob2xlIGNvYWxlc2Npbmcgb2YgdGhpcyBibG9jayBpbiB0aGUgaWYgc3RhdGVtZW50
IGFib3ZlLiBTbywgd2UncmUKICAgICAgICAgICAgICAgICAgICAgLy8gICAgZ2VuZXJhdGluZyBz
dWJvcHRpbWFsIGNvZGUgYW5kIGxlYXZpbmcgbW9yZSB3b3JrIGZvciB0aGUgQ0ZHIHNpbXBsaWZp
ZXIuCi0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2lubGluZVN0YWNrVG9wLT5tX3VubGlu
a2VkQmxvY2tzLmlzRW1wdHkoKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tz
Lmxhc3QoKS5tX2Jsb2NrLT5ieXRlY29kZUJlZ2luIDwgbV9jdXJyZW50SW5kZXgpOworICAgICAg
ICAgICAgICAgICAgICBpZiAoIW1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuaXNF
bXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsYXN0QmVnaW4gPQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRC
bG9ja3MubGFzdCgpLm1fYmxvY2stPmJ5dGVjb2RlQmVnaW47CisgICAgICAgICAgICAgICAgICAg
ICAgICBBU1NFUlRfVU5VU0VEKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RCZWdp
biwgbGFzdEJlZ2luID09IFVJTlRfTUFYIHx8IGxhc3RCZWdpbiA8IG1fY3VycmVudEluZGV4KTsK
KyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNr
VG9wLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLmdldCgpKSk7
CiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmxvY2tMaW5raW5nVGFy
Z2V0cy5hcHBlbmQoYmxvY2suZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICAvLyBUaGUgZmly
c3QgYmxvY2sgaXMgZGVmaW5pdGVseSBhbiBPU1IgdGFyZ2V0LgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCShyZXZp
c2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFk
aW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MCw4ICs5MCwxMCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5zZXRDaGlsZDEoRWRnZSgpKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOgot
ICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmNoaWxkMSgpKQorICAgICAgICAgICAgICAg
ICAgICBpZiAoIW5vZGUtPmNoaWxkMSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBzd2l0Y2gg
KG5vZGUtPmNoaWxkMSgpLT5vcCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgUGhpOgog
ICAgICAgICAgICAgICAgICAgICBjYXNlIFNldEFyZ3VtZW50OgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDQsNiArMTQ0LDggQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQog
ICAgIGNhc2UgRmlhdEludDUyOgogICAgIGNhc2UgTWFrZVJvcGU6CiAgICAgY2FzZSBWYWx1ZVRv
SW50MzI6CisgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgorICAgIGNhc2UgQm90dG9tVmFsdWU6CiAg
ICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSkpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIApA
QCAtMjM5LDEyICsyNDEsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlCiAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwgbm9kZS0+YXJpdGhNb2RlKCkpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBjYXNlIENoZWNrRnVuY3Rpb246Ci0gICAgICAg
IGRlZihQdXJlVmFsdWUoQ2hlY2tGdW5jdGlvbiwgQWRqYWNlbmN5TGlzdChBZGphY2VuY3lMaXN0
OjpGaXhlZCwgbm9kZS0+Y2hpbGQxKCkpLCBub2RlLT5mdW5jdGlvbigpKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICAgICAgCi0gICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6Ci0gICAgICAgIGRlZihQ
dXJlVmFsdWUobm9kZSwgbm9kZS0+ZXhlY3V0YWJsZSgpKSk7CisgICAgY2FzZSBDaGVja0NlbGw6
CisgICAgICAgIGRlZihQdXJlVmFsdWUoQ2hlY2tDZWxsLCBBZGphY2VuY3lMaXN0KEFkamFjZW5j
eUxpc3Q6OkZpeGVkLCBub2RlLT5jaGlsZDEoKSksIG5vZGUtPmNlbGxPcGVyYW5kKCkpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6
CkBAIC0yNjMsNiArMjYxLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZQogICAgIGNhc2UgU3dpdGNoOgogICAgIGNhc2UgVGhyb3c6CiAgICAgY2FzZSBGb3JjZU9T
UkV4aXQ6CisgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgY2FzZSBSZXR1cm46CiAgICAgY2Fz
ZSBVbnJlYWNoYWJsZToKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2
MywxMyBAQCBlbnVtIFJlZk5vZGVNb2RlIHsKICAgICBEb250UmVmTm9kZQogfTsKIAorZW51bSBT
d2l0Y2hLaW5kIHsKKyAgICBTd2l0Y2hJbW0sCisgICAgU3dpdGNoQ2hhciwKKyAgICBTd2l0Y2hT
dHJpbmcsCisgICAgU3dpdGNoQ2VsbAorfTsKKwogaW5saW5lIGJvb2wgdmVyYm9zZUNvbXBpbGF0
aW9uRW5hYmxlZChDb21waWxhdGlvbk1vZGUgbW9kZSA9IERGR01vZGUpCiB7CiAgICAgcmV0dXJu
IE9wdGlvbnM6OnZlcmJvc2VDb21waWxhdGlvbigpIHx8IE9wdGlvbnM6OmR1bXBHcmFwaEF0RWFj
aFBoYXNlKCkgfHwgKGlzRlRMKG1vZGUpICYmIE9wdGlvbnM6OnZlcmJvc2VGVExDb21waWxhdGlv
bigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5n
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQyLDggKzE0Miw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlIENoZWNrRnVuY3Rp
b246IHsKLSAgICAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KS52YWx1ZSgpICE9IG5vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkpCisgICAgICAgICAgICBjYXNl
IENoZWNrQ2VsbDogeworICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLnZhbHVlKCkgIT0gbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKSkKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhh
bnRvbSgpOwogICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
MSw3ICs5MSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBj
YXNlIFB1dEJ5SWRGbHVzaDoKICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgY2FzZSBDaGVj
a1N0cnVjdHVyZToKLSAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToKKyAgICBjYXNlIEdldEV4ZWN1
dGFibGU6CiAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAg
IGNhc2UgR2V0U2NvcGU6CkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0R2xvYmFsVmFyOgogICAgIGNhc2UgVmFyaWFi
bGVXYXRjaHBvaW50OgogICAgIGNhc2UgVmFySW5qZWN0aW9uV2F0Y2hwb2ludDoKLSAgICBjYXNl
IENoZWNrRnVuY3Rpb246CisgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgY2FzZSBBbGxvY2F0aW9u
UHJvZmlsZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBSZWdFeHBFeGVjOgogICAgIGNhc2UgUmVnRXhw
VGVzdDoKQEAgLTE5NSw2ICsxOTUsOCBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBHZXREaXJlY3RQbmFtZToKICAgICBjYXNlIEZpYXRJbnQ1MjoKICAg
ICBjYXNlIEJvb2xlYW5Ub051bWJlcjoKKyAgICBjYXNlIENoZWNrQmFkQ2VsbDoKKyAgICBjYXNl
IEJvdHRvbVZhbHVlOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjYXNlIENyZWF0ZUFj
dGl2YXRpb246CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCShy
ZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDkgQEAgc3RhdGljIENvbXBpbGF0aW9uUmVz
dWx0IGNvbXBpbGVJbXBsKAogICAgICAgICB2bS5nZXRDVElTdHViKHZpcnR1YWxDb25zdHJ1Y3RU
aGF0UHJlc2VydmVzUmVnc1RodW5rR2VuZXJhdG9yKTsKICAgICB9CiAgICAgCisgICAgaWYgKENh
bGxFZGdlTG9nOjppc0VuYWJsZWQoKSkKKyAgICAgICAgdm0uZW5zdXJlQ2FsbEVkZ2VMb2coKS5w
cm9jZXNzTG9nKCk7CisgICAgCiAgICAgUmVmUHRyPFBsYW4+IHBsYW4gPSBhZG9wdFJlZigKICAg
ICAgICAgbmV3IFBsYW4oY29kZUJsb2NrLCBwcm9maWxlZERGR0NvZGVCbG9jaywgbW9kZSwgb3Ny
RW50cnlCeXRlY29kZUluZGV4LCBtdXN0SGFuZGxlVmFsdWVzKSk7CiAgICAgCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE3Mjg1
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTczNiw2ICs3MzYsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBl
bHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nKCkpCiAgICAgICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFN3aXRjaENlbGw6CisgICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVDZWxsKCkpCisgICAgICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgICAgIC8vIGVsc2UgaXQncyBmaW5lIGZvciB0aGlzIHRvIGhhdmUgVW50eXBlZFVzZTsgd2Ug
d2lsbCBoYW5kbGUgdGhpcyBieSBqdXN0IG1ha2luZworICAgICAgICAgICAgICAgIC8vIG5vbi1j
ZWxscyB0YWtlIHRoZSBkZWZhdWx0IGNhc2UuCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtODk3LDEzICs5MDMs
MTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAg
Y2FzZSBDaGVja0V4ZWN1dGFibGU6IHsKKyAgICAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOiB7CiAg
ICAgICAgICAgICBmaXhFZGdlPEZ1bmN0aW9uVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQ2hlY2tT
dHJ1Y3R1cmU6Ci0gICAgICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBDaGVj
a0NlbGw6CiAgICAgICAgIGNhc2UgQ2hlY2tIYXNJbnN0YW5jZToKICAgICAgICAgY2FzZSBDcmVh
dGVUaGlzOgogICAgICAgICBjYXNlIEdldEJ1dHRlcmZseTogewpAQCAtMTE0OSw2ICsxMTU1LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgogICAgICAgICBj
YXNlIENvdW50RXhlY3V0aW9uOgogICAgICAgICBjYXNlIEZvcmNlT1NSRXhpdDoKKyAgICAgICAg
Y2FzZSBDaGVja0JhZENlbGw6CiAgICAgICAgIGNhc2UgQ2hlY2tXYXRjaGRvZ1RpbWVyOgogICAg
ICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2Fs
OgpAQCAtMTE1OSw2ICsxMTY2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBUeXBlZEFycmF5
V2F0Y2hwb2ludDoKICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICBjYXNlIFpvbWJpZUhp
bnQ6CisgICAgICAgIGNhc2UgQm90dG9tVmFsdWU6CiAgICAgICAgICAgICBicmVhazsKICNlbHNl
CiAgICAgICAgIGRlZmF1bHQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAgR3JhcGg6OkdyYXBoKFZN
JiB2bSwgUGxhbiYgcGxhbiwgTG9uZ0xpdgogICAgICwgbV9mb3JtKExvYWRTdG9yZSkKICAgICAs
IG1fdW5pZmljYXRpb25TdGF0ZShMb2NhbGx5VW5pZmllZCkKICAgICAsIG1fcmVmQ291bnRTdGF0
ZShFdmVyeXRoaW5nSXNMaXZlKQorICAgICwgbV9zaG91bGRQcm9maWxlKGZhbHNlKQogewogICAg
IEFTU0VSVChtX3Byb2ZpbGVkQmxvY2spOwogICAgIApAQCAtMjIyLDI0ICsyMjMsMjMgQEAgdm9p
ZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAogICAgICAgICBvdXQucHJpbnQo
Y29tbWEsIGluQ29udGV4dCgqbm9kZS0+c3RydWN0dXJlKCksIGNvbnRleHQpKTsKICAgICBpZiAo
bm9kZS0+aGFzVHJhbnNpdGlvbigpKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsIHBvaW50ZXJE
dW1wSW5Db250ZXh0KG5vZGUtPnRyYW5zaXRpb24oKSwgY29udGV4dCkpOwotICAgIGlmIChub2Rl
LT5oYXNGdW5jdGlvbigpKSB7Ci0gICAgICAgIG91dC5wcmludChjb21tYSwgImZ1bmN0aW9uKCIs
IHBvaW50ZXJEdW1wKG5vZGUtPmZ1bmN0aW9uKCkpLCAiLCAiKTsKLSAgICAgICAgaWYgKG5vZGUt
PmZ1bmN0aW9uKCktPnZhbHVlKCkuaXNDZWxsKCkKLSAgICAgICAgICAgICYmIG5vZGUtPmZ1bmN0
aW9uKCktPnZhbHVlKCkuYXNDZWxsKCktPmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpIHsK
LSAgICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihu
b2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpLmFzQ2VsbCgpKTsKLSAgICAgICAgICAgIGlmIChmdW5j
dGlvbi0+aXNIb3N0RnVuY3Rpb24oKSkKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQoIjxob3N0
IGZ1bmN0aW9uPiIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG91dC5wcmlu
dChGdW5jdGlvbkV4ZWN1dGFibGVEdW1wKGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKSkpOwotICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgIG91dC5wcmludCgiPG5vdCBKU0Z1bmN0aW9uPiIpOwot
ICAgICAgICBvdXQucHJpbnQoIikiKTsKLSAgICB9Ci0gICAgaWYgKG5vZGUtPmhhc0V4ZWN1dGFi
bGUoKSkgewotICAgICAgICBpZiAobm9kZS0+ZXhlY3V0YWJsZSgpLT5pbmhlcml0cyhGdW5jdGlv
bkV4ZWN1dGFibGU6OmluZm8oKSkpCi0gICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJleGVj
dXRhYmxlKCIsIEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAoanNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJs
ZSo+KG5vZGUtPmV4ZWN1dGFibGUoKSkpLCAiKSIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBvdXQucHJpbnQoY29tbWEsICJleGVjdXRhYmxlKG5vdCBmdW5jdGlvbjogIiwgUmF3UG9pbnRl
cihub2RlLT5leGVjdXRhYmxlKCkpLCAiKSIpOworICAgIGlmIChub2RlLT5oYXNDZWxsT3BlcmFu
ZCgpKSB7CisgICAgICAgIGlmICghbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKSB8fCAhbm9k
ZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5pc0NlbGwoKSkKKyAgICAgICAgICAgIG91dC5wcmlu
dChjb21tYSwgImludmFsaWQgY2VsbCBvcGVyYW5kOiAiLCBub2RlLT5jZWxsT3BlcmFuZCgpLT52
YWx1ZSgpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIHBv
aW50ZXJEdW1wKG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuYXNDZWxsKCkpKTsKKyAgICAg
ICAgICAgIGlmIChub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpLmlzQ2VsbCgpKSB7CisgICAg
ICAgICAgICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFudChub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1
ZSgpLmFzQ2VsbCgpKTsKKyAgICAgICAgICAgICAgICBpZiAoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1
dGFibGUgPSB2YXJpYW50LmV4ZWN1dGFibGUoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAo
ZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG91
dC5wcmludChjb21tYSwgIjxob3N0IGZ1bmN0aW9uPiIpOworICAgICAgICAgICAgICAgICAgICBl
bHNlIGlmIChGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IGpzRHluYW1p
Y0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBvdXQucHJpbnQoY29tbWEsIEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAoZnVuY3Rpb25F
eGVjdXRhYmxlKSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG91dC5wcmludChjb21tYSwgIjxub24tZnVuY3Rpb24gZXhlY3V0YWJsZT4iKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAgICAgaWYg
KG5vZGUtPmhhc0Z1bmN0aW9uRGVjbEluZGV4KCkpIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0gbV9jb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChub2RlLT5mdW5jdGlv
bkRlY2xJbmRleCgpKTsKQEAgLTk4NSwxMCArOTg1LDYgQEAgdm9pZCBHcmFwaDo6dmlzaXRDaGls
ZHJlbihTbG90VmlzaXRvciYgdgogICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChu
b2RlSW5kZXgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkp
IHsKLSAgICAgICAgICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOgotICAgICAgICAgICAgICAgIHZp
c2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRSZWFkT25seVBvaW50ZXIobm9kZS0+ZXhlY3V0YWJsZSgp
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
IGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
bm9kZS0+c3RydWN0dXJlU2V0KCkuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgICAgICAgICB2
aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlQb2ludGVyKG5vZGUtPnN0cnVjdHVyZVNl
dCgpW2ldKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9u
IDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzYyLDYgKzc2Miw3IEBAIHB1YmxpYzoKICAgICBHcmFwaEZvcm0gbV9mb3Jt
OwogICAgIFVuaWZpY2F0aW9uU3RhdGUgbV91bmlmaWNhdGlvblN0YXRlOwogICAgIFJlZkNvdW50
U3RhdGUgbV9yZWZDb3VudFN0YXRlOworICAgIGJvb2wgbV9zaG91bGRQcm9maWxlOwogcHJpdmF0
ZToKICAgICAKICAgICB2b2lkIGhhbmRsZVN1Y2Nlc3NvcihWZWN0b3I8QmFzaWNCbG9jayosIDE2
PiYgd29ya2xpc3QsIEJhc2ljQmxvY2sqLCBCYXNpY0Jsb2NrKiBzdWNjZXNzb3IpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9u
IDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6bGlu
ayhMaW5rQnVmZmVyJiBsaW5rQgogICAgICAgICAgICAgdGFibGUuY3RpT2Zmc2V0c1tqXSA9IHRh
YmxlLmN0aURlZmF1bHQ7CiAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IGRhdGEuY2FzZXMuc2l6
ZSgpOyBqLS07KSB7CiAgICAgICAgICAgICBTd2l0Y2hDYXNlJiBteUNhc2UgPSBkYXRhLmNhc2Vz
W2pdOwotICAgICAgICAgICAgdGFibGUuY3RpT2Zmc2V0c1tteUNhc2UudmFsdWUuc3dpdGNoTG9v
a3VwVmFsdWUoKSAtIHRhYmxlLm1pbl0gPQorICAgICAgICAgICAgdGFibGUuY3RpT2Zmc2V0c1tt
eUNhc2UudmFsdWUuc3dpdGNoTG9va3VwVmFsdWUoZGF0YS5raW5kKSAtIHRhYmxlLm1pbl0gPQog
ICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX2Jsb2NrSGVhZHNbbXlDYXNl
LnRhcmdldC5ibG9jay0+aW5kZXhdKTsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCShyZXZpc2lvbiAxNzI4NTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTEzLDYgKzExMywzNiBAQCBUcmlTdGF0ZSBMYXp5SlNWYWx1ZTo6c3RyaWN0
RXF1YWwoY29uc3QgCiAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CiB9CiAKK3VpbnRwdHJfdCBM
YXp5SlNWYWx1ZTo6c3dpdGNoTG9va3VwVmFsdWUoU3dpdGNoS2luZCBraW5kKSBjb25zdAorewor
ICAgIC8vIE5CLiBOb3QgZXZlcnkga2luZCBvZiBKU1ZhbHVlIHdpbGwgYmUgYWJsZSB0byBnaXZl
IHlvdSBhIHN3aXRjaCBsb29rdXAKKyAgICAvLyB2YWx1ZSwgYW5kIHRoaXMgbWV0aG9kIHdpbGwg
YXNzZXJ0LCBvciBkbyBiYWQgdGhpbmdzLCBpZiB5b3UgdXNlIGl0CisgICAgLy8gZm9yIGEga2lu
ZCBvZiB2YWx1ZSB0aGF0IGNhbid0LgorICAgIHN3aXRjaCAobV9raW5kKSB7CisgICAgY2FzZSBL
bm93blZhbHVlOgorICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgY2FzZSBTd2l0Y2hJ
bW06CisgICAgICAgICAgICByZXR1cm4gdmFsdWUoKS0+dmFsdWUoKS5hc0ludDMyKCk7CisgICAg
ICAgIGNhc2UgU3dpdGNoQ2VsbDoKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90Pih2YWx1ZSgpLT52YWx1ZSgpLmFzQ2VsbCgpKTsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgfQorICAgIGNhc2UgU2luZ2xlQ2hhcmFjdGVyU3RyaW5nOgorICAgICAg
ICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgY2FzZSBTd2l0Y2hDaGFyOgorICAgICAgICAgICAg
cmV0dXJuIGNoYXJhY3RlcigpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9
CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCiB2b2lkIExhenlKU1ZhbHVlOjpkdW1wSW5Db250
ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAogewogICAg
IHN3aXRjaCAobV9raW5kKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xh
enlKU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdM
YXp5SlNWYWx1ZS5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0xhenlKU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSAi
REZHRnJvemVuVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAKQEAg
LTk1LDIxICs5Niw3IEBAIHB1YmxpYzoKICAgICAKICAgICBUcmlTdGF0ZSBzdHJpY3RFcXVhbChj
b25zdCBMYXp5SlNWYWx1ZSYgb3RoZXIpIGNvbnN0OwogICAgIAotICAgIHVuc2lnbmVkIHN3aXRj
aExvb2t1cFZhbHVlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIC8vIE5CLiBOb3QgZXZlcnkga2lu
ZCBvZiBKU1ZhbHVlIHdpbGwgYmUgYWJsZSB0byBnaXZlIHlvdSBhIHN3aXRjaCBsb29rdXAKLSAg
ICAgICAgLy8gdmFsdWUsIGFuZCB0aGlzIG1ldGhvZCB3aWxsIGFzc2VydCwgb3IgZG8gYmFkIHRo
aW5ncywgaWYgeW91IHVzZSBpdAotICAgICAgICAvLyBmb3IgYSBraW5kIG9mIHZhbHVlIHRoYXQg
Y2FuJ3QuCi0gICAgICAgIHN3aXRjaCAobV9raW5kKSB7Ci0gICAgICAgIGNhc2UgS25vd25WYWx1
ZToKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZSgpLT52YWx1ZSgpLmFzSW50MzIoKTsKLSAgICAg
ICAgY2FzZSBTaW5nbGVDaGFyYWN0ZXJTdHJpbmc6Ci0gICAgICAgICAgICByZXR1cm4gY2hhcmFj
dGVyKCk7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICB9CisgICAg
dWludHB0cl90IHN3aXRjaExvb2t1cFZhbHVlKFN3aXRjaEtpbmQga2luZCkgY29uc3Q7CiAgICAg
CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgdm9pZCBkdW1wSW5Db250
ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMyw5
IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBTd2kKICAgICBjYXNlIFN3
aXRjaFN0cmluZzoKICAgICAgICAgb3V0LnByaW50KCJTd2l0Y2hTdHJpbmciKTsKICAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgU3dpdGNoQ2VsbDoKKyAgICAgICAgb3V0LnByaW50KCJTd2l0Y2hD
ZWxsIik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lv
biAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU3LDEyICsxNTcsNiBAQCBzdHJ1Y3QgU3dpdGNoQ2FzZSB7CiAgICAgQnJh
bmNoVGFyZ2V0IHRhcmdldDsKIH07CiAKLWVudW0gU3dpdGNoS2luZCB7Ci0gICAgU3dpdGNoSW1t
LAotICAgIFN3aXRjaENoYXIsCi0gICAgU3dpdGNoU3RyaW5nCi19OwotCiBzdHJ1Y3QgU3dpdGNo
RGF0YSB7CiAgICAgLy8gSW5pdGlhbGl6ZXMgbW9zdCBmaWVsZHMgdG8gb2J2aW91c2x5IGludmFs
aWQgdmFsdWVzLiBBbnlvbmUKICAgICAvLyBjb25zdHJ1Y3RpbmcgdGhpcyBzaG91bGQgbWFrZSBz
dXJlIHRvIGluaXRpYWxpemUgZXZlcnl0aGluZyB0aGV5CkBAIC0xODUsNiArMTc5LDcgQEAgc3Ry
dWN0IFN3aXRjaERhdGEgewogLy8gZGlzdGluZ3Vpc2hlcyBhbiBpbW1lZGlhdGUgdmFsdWUgKHR5
cGljYWxseSBhbiBpbmRleCBpbnRvIGEgQ29kZUJsb2NrIGRhdGEgc3RydWN0dXJlIC0gCiAvLyBh
IGNvbnN0YW50IGluZGV4LCBhcmd1bWVudCwgb3IgaWRlbnRpZmllcikgZnJvbSBhIE5vZGUqLgog
c3RydWN0IE9wSW5mbyB7CisgICAgT3BJbmZvKCkgOiBtX3ZhbHVlKDApIHsgfQogICAgIGV4cGxp
Y2l0IE9wSW5mbyhpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90
Pih2YWx1ZSkpIHsgfQogICAgIGV4cGxpY2l0IE9wSW5mbyh1aW50MzJfdCB2YWx1ZSkgOiBtX3Zh
bHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KICNpZiBPUyhEQVJXSU4pIHx8
IFVTRShKU1ZBTFVFNjQpCkBAIC0xMDQ0LDkgKzEwMzksMTEgQEAgc3RydWN0IE5vZGUgewogICAg
ICAgICBtX29wSW5mbzIgPSBwcmVkaWN0aW9uOwogICAgIH0KICAgICAKLSAgICBib29sIGNhbkJl
S25vd25GdW5jdGlvbigpCisgICAgYm9vbCBoYXNDZWxsT3BlcmFuZCgpCiAgICAgewogICAgICAg
ICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9p
bnQ6CisgICAgICAgIGNhc2UgQ2hlY2tDZWxsOgogICAgICAgICBjYXNlIE5hdGl2ZUNvbnN0cnVj
dDoKICAgICAgICAgY2FzZSBOYXRpdmVDYWxsOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC0xMDU1LDU0ICsxMDUyLDE2IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgfQogICAgIH0KIAot
ICAgIGJvb2wgaGFzS25vd25GdW5jdGlvbigpCi0gICAgewotICAgICAgICBzd2l0Y2ggKG9wKCkp
IHsKLSAgICAgICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6Ci0gICAgICAgIGNhc2UgTmF0aXZlQ2Fs
bDoKLSAgICAgICAgICAgIHJldHVybiAoYm9vbCltX29wSW5mbzsKLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBK
U0Z1bmN0aW9uKiBrbm93bkZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjYW5CZUtu
b3duRnVuY3Rpb24oKSk7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNGdW5jdGlvbio+
KG1fb3BJbmZvKTsKLSAgICB9Ci0KLSAgICB2b2lkIGdpdmVLbm93bkZ1bmN0aW9uKEpTRnVuY3Rp
b24qIGNhbGxEYXRhKSAKKyAgICBGcm96ZW5WYWx1ZSogY2VsbE9wZXJhbmQoKQogICAgIHsKLSAg
ICAgICAgQVNTRVJUKGNhbkJlS25vd25GdW5jdGlvbigpKTsKLSAgICAgICAgbV9vcEluZm8gPSBi
aXR3aXNlX2Nhc3Q8dWludHB0cl90PihjYWxsRGF0YSk7Ci0gICAgfQotCi0gICAgYm9vbCBoYXNG
dW5jdGlvbigpCi0gICAgewotICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKLSAgICAgICAgY2FzZSBD
aGVja0Z1bmN0aW9uOgotICAgICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDoK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgRnJvemVuVmFsdWUqIGZ1bmN0
aW9uKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChoYXNGdW5jdGlvbigpKTsKKyAgICAgICAgQVNT
RVJUKGhhc0NlbGxPcGVyYW5kKCkpOwogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxG
cm96ZW5WYWx1ZSo+KG1fb3BJbmZvKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBoYXNFeGVjdXRh
YmxlKCkKKyAgICB2b2lkIHNldENlbGxPcGVyYW5kKEZyb3plblZhbHVlKiB2YWx1ZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBvcCgpID09IENoZWNrRXhlY3V0YWJsZTsKLSAgICB9Ci0gICAgCi0g
ICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGpz
Q2FzdDxFeGVjdXRhYmxlQmFzZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4obV9vcEluZm8p
KTsKKyAgICAgICAgQVNTRVJUKGhhc0NlbGxPcGVyYW5kKCkpOworICAgICAgICBtX29wSW5mbyA9
IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBo
YXNWYXJpYWJsZVdhdGNocG9pbnRTZXQoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZVR5cGUuaAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFB1dEJ5SWRGbHVzaCwgTm9k
ZU11c3RHZW5lcmF0ZSB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAog
ICAgIG1hY3JvKFB1dEJ5SWREaXJlY3QsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNX
b3JsZCkgXAogICAgIG1hY3JvKENoZWNrU3RydWN0dXJlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCi0g
ICAgbWFjcm8oQ2hlY2tFeGVjdXRhYmxlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8o
R2V0RXhlY3V0YWJsZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUHV0U3RydWN0dXJlLCBO
b2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UsIE5v
ZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0U3RvcmFnZSkgXAogICAgIG1hY3JvKFJlYWxsb2Nh
dGVQcm9wZXJ0eVN0b3JhZ2UsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0U3RvcmFnZSkg
XApAQCAtMTg1LDcgKzE4NSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAg
ICBtYWNybyhWYXJpYWJsZVdhdGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhWYXJJbmplY3Rpb25XYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
RnVuY3Rpb25SZWVudHJ5V2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAotICAgIG1hY3Jv
KENoZWNrRnVuY3Rpb24sIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhDaGVja0NlbGws
IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhDaGVja0JhZENlbGwsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKICAgICBtYWNybyhBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQsIE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja0luQm91bmRzLCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgXApAQCAtMjg2LDYgKzI4NywxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAgICAgLyogZGlmZmVyZW50IGNvbXBpbGVyLiAqL1wKICAgICBtYWNybyhGb3JjZU9TUkV4
aXQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBcCisgICAgLyogVmVuZHMgYSBib3R0b20gSlMg
dmFsdWUuIEl0IGlzIGludmFsaWQgdG8gZXZlciBleGVjdXRlIHRoaXMuIFVzZWZ1bCBmb3IgY2Fz
ZXMgKi9cCisgICAgLyogd2hlcmUgd2Uga25vdyB0aGF0IHdlIHdvdWxkIGhhdmUgZXhpdGVkIGJ1
dCB3ZSdkIGxpa2UgdG8gc3RpbGwgdHJhY2sgdGhlIGNvbnRyb2wgKi9cCisgICAgLyogZmxvdy4g
Ki9cCisgICAgbWFjcm8oQm90dG9tVmFsdWUsIE5vZGVSZXN1bHRKUykgXAorICAgIFwKICAgICAv
KiBDaGVja3MgdGhlIHdhdGNoZG9nIHRpbWVyLiBJZiB0aGUgdGltZXIgaGFzIGZpcmVkLCB3ZSBP
U1IgZXhpdCB0byB0aGUgKi8gXAogICAgIC8qIGJhc2VsaW5lIEpJVCB0byByZWRvIHRoZSB3YXRj
aGRvZyB0aW1lciBjaGVjaywgYW5kIHNlcnZpY2UgdGhlIHRpbWVyLiAqLyBcCiAgICAgbWFjcm8o
Q2hlY2tXYXRjaGRvZ1RpbWVyLCBOb2RlTXVzdEdlbmVyYXRlKSBcCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6
YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTkyLDggKzkyLDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PmNoaWxkcmVuLnJlbW92ZUVkZ2UoaS0tKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHko
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5v
ZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNv
bnZlcnRUb0NoZWNrKCk7CiAgICAgICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21SZW1vdmFsUGhhc2UuY3BwCShyZXZpc2lv
biAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21SZW1vdmFs
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNiArMTI1LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgICAgICAgICB9CkBAIC0xNDIsNiArMTQzLDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTQ5LDggKzE1MSwxMCBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBjYXNlIEhhcmRQaGFudG9tOiB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZHJlbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9h
bGxvY2F0b3IuZnJlZShub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw3ICsx
OTYsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIAotICAgICAgICBjYXNlIEdldEdldHRlclNldHRlckJ5T2Zmc2V0OiB7CisgICAgICAgIGNh
c2UgR2V0R2V0dGVyU2V0dGVyQnlPZmZzZXQ6CisgICAgICAgIGNhc2UgR2V0RXhlY3V0YWJsZTog
ewogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNDZWxsT3RoZXIpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTY0Miw4ICs2NDMsOCBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIEZvcmNlT1NSRXhpdDoKICAgICAgICAgY2FzZSBTZXRBcmd1bWVudDoK
ICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKLSAgICAgICAgY2FzZSBDaGVja0V4ZWN1dGFi
bGU6Ci0gICAgICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBDaGVja0NlbGw6
CisgICAgICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgICAgICBjYXNlIFB1dFN0cnVjdHVyZToK
ICAgICAgICAgY2FzZSBUZWFyT2ZmQWN0aXZhdGlvbjoKICAgICAgICAgY2FzZSBUZWFyT2ZmQXJn
dW1lbnRzOgpAQCAtNjY1LDYgKzY2NiwxMCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFpvbWJp
ZUhpbnQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAorICAgICAgICAvLyBUaGlz
IGdldHMgaWdub3JlZCBiZWNhdXNlIGl0IG9ubHkgcHJldGVuZHMgdG8gcHJvZHVjZSBhIHZhbHVl
LgorICAgICAgICBjYXNlIEJvdHRvbVZhbHVlOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAKICAgICAgICAgLy8gVGhpcyBnZXRzIGlnbm9yZWQgYmVjYXVzZSBpdCBhbHJlYWR5IGhh
cyBhIHByZWRpY3Rpb24uCiAgICAgICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAgICAg
ICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSw3IEBA
IGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIFB1dEJ5
SWRGbHVzaDoKICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVy
ZToKLSAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToKKyAgICBjYXNlIEdldEV4ZWN1dGFibGU6CiAg
ICAgY2FzZSBHZXRCdXR0ZXJmbHk6CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgQXJy
YXlpZnk6CkBAIC0xNzQsNyArMTc0LDggQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3Rh
dGVUeXBlJiBzdAogICAgIGNhc2UgUHV0R2xvYmFsVmFyOgogICAgIGNhc2UgVmFyaWFibGVXYXRj
aHBvaW50OgogICAgIGNhc2UgVmFySW5qZWN0aW9uV2F0Y2hwb2ludDoKLSAgICBjYXNlIENoZWNr
RnVuY3Rpb246CisgICAgY2FzZSBDaGVja0NlbGw6CisgICAgY2FzZSBDaGVja0JhZENlbGw6CiAg
ICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBSZWdFeHBFeGVj
OgogICAgIGNhc2UgUmVnRXhwVGVzdDoKQEAgLTI3Myw2ICsyNzQsMTEgQEAgYm9vbCBzYWZlVG9F
eGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0Ogog
ICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFRPRE86IGFkZCBhIGNoZWNrIGZvciBhbHJlYWR5IGNo
ZWNrZWQuICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNzY5CiAK
KyAgICBjYXNlIEJvdHRvbVZhbHVlOgorICAgICAgICAvLyBJZiBpbiBkb3VidCwgYXNzdW1lIHRo
YXQgdGhpcyBpc24ndCBzYWZlIHRvIGV4ZWN1dGUsIGp1c3QgYmVjYXVzZSB3ZSBoYXZlIG5vIHdh
eSBvZgorICAgICAgICAvLyBjb21waWxpbmcgdGhpcyBub2RlLgorICAgICAgICByZXR1cm4gZmFs
c2U7CisKICAgICBjYXNlIEdldEJ5VmFsOgogICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3Rv
cmFnZToKICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAx
NzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODksNiArNjg5LDEzIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKIAogICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmln
aW4obm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAKKyAgICBDYWxsTGlua0luZm8qIGluZm8g
PSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7CisKKyAgICBpZiAobV9qaXQu
Z3JhcGgoKS5tX3Nob3VsZFByb2ZpbGUgJiYgIW1fc3RhdGUuZm9yTm9kZShjYWxsZWVFZGdlKS5t
X3ZhbHVlKSB7CisgICAgICAgIG1faml0LnZtKCkuY2FsbEVkZ2VMb2ctPmVtaXRMb2dDb2RlKAor
ICAgICAgICAgICAgbV9qaXQsIGNhbGxMaW5rSW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBjYWxsZWUu
anNWYWx1ZVJlZ3MoKSk7CisgICAgfQorICAgIAogICAgIHNsb3dQYXRoLmFwcGVuZChicmFuY2hO
b3RDZWxsKGNhbGxlZS5qc1ZhbHVlUmVncygpKSk7CiAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0
LmJyYW5jaFB0cldpdGhQYXRjaChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxlZVBheWxv
YWRHUFIsIHRhcmdldFRvQ2hlY2spKTsKICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGNhbGxlZVBheWxvYWRHUFIsIE9CSkVDVF9PRkZTRVRPRihKU0Z1bmN0aW9uLCBt
X3Njb3BlKSksIHJlc3VsdFBheWxvYWRHUFIpOwpAQCAtNzEzLDcgKzcyMCw2IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgbV9qaXQubW92ZShjYWxs
ZWVQYXlsb2FkR1BSLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgIG1faml0Lm1vdmUoY2FsbGVl
VGFnR1BSLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgfQotICAgIENhbGxMaW5rSW5mbyogaW5mbyA9
IG1faml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKICAgICBtX2ppdC5tb3ZlKE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGluZm8pLCBHUFJJbmZvOjpyZWdUMik7CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgc2xvd0NhbGwgPSBtX2ppdC5uZWFyQ2FsbCgpOwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJ
KHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyNiw3ICs2MjYsNiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTWlzY1N0cmljdEVxCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiB7Ci0KICAgICBib29sIGlzQ2FsbCA9IG5vZGUtPm9wKCkg
PT0gQ2FsbDsKICAgICBpZiAoIWlzQ2FsbCkKICAgICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFw
aCgpLCBub2RlLCBub2RlLT5vcCgpID09IENvbnN0cnVjdCk7CkBAIC02NzAsNiArNjY5LDE1IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKIAogICAgIG1faml0LmVt
aXRTdG9yZUNvZGVPcmlnaW4obm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAKKyAgICBDYWxs
TGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0lu
Zm8oKTsKKyAgICAKKyAgICBpZiAoQ2FsbEVkZ2VMb2c6OmlzRW5hYmxlZCgpCisgICAgICAgICYm
IG1faml0LmdyYXBoKCkubV9zaG91bGRQcm9maWxlCisgICAgICAgICYmICFtX3N0YXRlLmZvck5v
ZGUoY2FsbGVlRWRnZSkubV92YWx1ZSkgeworICAgICAgICBtX2ppdC52bSgpLT5jYWxsRWRnZUxv
Zy0+ZW1pdExvZ0NvZGUoCisgICAgICAgICAgICBtX2ppdCwgY2FsbExpbmtJbmZvLT5jYWxsRWRn
ZVByb2ZpbGUsIEpTVmFsdWVSZWdzKGNhbGxlZUdQUikpOworICAgIH0KKwogICAgIHNsb3dQYXRo
ID0gbV9qaXQuYnJhbmNoUHRyV2l0aFBhdGNoKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgY2Fs
bGVlR1BSLCB0YXJnZXRUb0NoZWNrLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigwKSk7
CiAKICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNhbGxlZUdQUiwg
T0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rpb24sIG1fc2NvcGUpKSwgcmVzdWx0R1BSKTsKQEAgLTY4
Miw3ICs2OTAsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAg
ICAgc2xvd1BhdGgubGluaygmbV9qaXQpOwogICAgIAogICAgIG1faml0Lm1vdmUoY2FsbGVlR1BS
LCBHUFJJbmZvOjpyZWdUMCk7IC8vIENhbGxlZSBuZWVkcyB0byBiZSBpbiByZWdUMAotICAgIENh
bGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5r
SW5mbygpOwogICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2Fs
bExpbmtJbmZvKSwgR1BSSW5mbzo6cmVnVDIpOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8gYmUgaW4g
cmVnVDIKICAgICBKSVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7
CiAgICAgCkBAIC0zNzY4LDE4ICszNzc1LDIxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUdldEFycmF5TGVuZ3RoKG5vZGUpOwogICAg
ICAgICBicmVhazsKICAgICAgICAgCi0gICAgY2FzZSBDaGVja0Z1bmN0aW9uOiB7Ci0gICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZ1bmN0aW9uKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRGdW5jdGlvbiwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwoZnVuY3Rpb24uZ3ByKCkpLCBub2RlLT5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoV2Vha1B0
cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGZ1bmN0aW9uLmdwcigpLCBub2RlLT5mdW5jdGlvbigp
LT52YWx1ZSgpLmFzQ2VsbCgpKSk7CisgICAgY2FzZSBDaGVja0NlbGw6IHsKKyAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgY2VsbCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soQmFkQ2VsbCwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbC5n
cHIoKSksIG5vZGUtPmNoaWxkMSgpLCBtX2ppdC5icmFuY2hXZWFrUHRyKEpJVENvbXBpbGVyOjpO
b3RFcXVhbCwgY2VsbC5ncHIoKSwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5hc0NlbGwo
KSkpOwogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
ICAgICAKLSAgICBjYXNlIENoZWNrRXhlY3V0YWJsZTogeworICAgIGNhc2UgR2V0RXhlY3V0YWJs
ZTogewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmdW5jdGlvbih0aGlzLCBub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgIHNwZWN1bGF0ZUNlbGxUeXBlKG5vZGUtPmNoaWxkMSgpLCBmdW5j
dGlvbi5ncHIoKSwgU3BlY0Z1bmN0aW9uLCBKU0Z1bmN0aW9uVHlwZSk7Ci0gICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkRXhlY3V0YWJsZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoZnVu
Y3Rpb24uZ3ByKCkpLCBub2RlLT5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21w
aWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Z1
bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIG5vZGUtPmV4ZWN1dGFibGUoKSkpOwotICAg
ICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBS
ZXVzZSwgZnVuY3Rpb24pOworICAgICAgICBHUFJSZWcgZnVuY3Rpb25HUFIgPSBmdW5jdGlvbi5n
cHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAg
c3BlY3VsYXRlQ2VsbFR5cGUobm9kZS0+Y2hpbGQxKCksIGZ1bmN0aW9uR1BSLCBTcGVjRnVuY3Rp
b24sIEpTRnVuY3Rpb25UeXBlKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6
QWRkcmVzcyhmdW5jdGlvbkdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCBy
ZXN1bHRHUFIpOworICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC00OTcwLDcgKzQ5ODAsOSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0
OgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKICAgICBjYXNlIEZpYXRJbnQ1MjoKLSAgICAg
ICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJVbmV4cGVjdGVkIEZUTCBub2RlIik7
CisgICAgY2FzZSBDaGVja0JhZENlbGw6CisgICAgY2FzZSBCb3R0b21WYWx1ZToKKyAgICAgICAg
REZHX0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJVbmV4cGVjdGVkIG5vZGUiKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUz
NTQsNiArNTM1NCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoKE5vZGUqIG5v
CiAgICAgY2FzZSBTd2l0Y2hTdHJpbmc6IHsKICAgICAgICAgZW1pdFN3aXRjaFN0cmluZyhub2Rl
LCBkYXRhKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNlIFN3aXRjaENlbGw6IHsK
KyAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJCYWQgc3dpdGNoIGtpbmQi
KTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0gfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJl
Z2lzdHJhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTcyODU5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDEwICs2Miw2IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgICAgICBj
YXNlIENoZWNrRXhlY3V0YWJsZToKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1
cmUobm9kZS0+ZXhlY3V0YWJsZSgpLT5zdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1
Y3R1cmU6CiAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlcyhub2RlLT5zdHJ1
Y3R1cmVTZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9u
UGhhc2UuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2
ICs2MSw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFPcHRpb25zOjplbmFibGVPU1JFbnRyeVRv
RlRMKCkpCiAgICAgICAgICAgICBsZXZlbCA9IEZUTDo6Q2FuQ29tcGlsZTsKICAgICAgICAgCisg
ICAgICAgIG1fZ3JhcGgubV9zaG91bGRQcm9maWxlID0gdHJ1ZTsKKyAgICAgICAgCiAgICAgICAg
IEluc2VydGlvblNldCBpbnNlcnRpb25TZXQobV9ncmFwaCk7CiAgICAgICAgIGZvciAoQmxvY2tJ
bmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewog
ICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHJldmlz
aW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsNyArMjAwLDggQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW1heUV4aXQobV9ncmFwaCwg
bm9kZSkgfHwgbm9kZS0+b3JpZ2luLmZvckV4aXQuaXNTZXQoKSk7CiAgICAgICAgICAgICAgICAg
VkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+aGFzU3RydWN0dXJlKCkgfHwgISFub2RlLT5zdHJ1Y3R1
cmUoKSk7Ci0gICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+aGFzRnVuY3Rp
b24oKSB8fCBub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpLmlzRnVuY3Rpb24oKSk7CisgICAgICAg
ICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+aGFzQ2VsbE9wZXJhbmQoKSB8fCBub2Rl
LT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpLmlzQ2VsbCgpKTsKKyAgICAgICAgICAgICAgICBWQUxJ
REFURSgobm9kZSksICFub2RlLT5oYXNDZWxsT3BlcmFuZCgpIHx8ICEhbm9kZS0+Y2VsbE9wZXJh
bmQoKS0+dmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmICgh
KG5vZGUtPmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncykpIHsKICAgICAgICAgICAgICAgICAgICAg
aWYgKCFub2RlLT5jaGlsZDIoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
V2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24g
MTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXYXRjaHBvaW50Q29sbGVj
dGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTE0LDcgKzExNCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEFsbG9jYXRpb25Q
cm9maWxlV2F0Y2hwb2ludDoKLSAgICAgICAgICAgIGFkZExhemlseShqc0Nhc3Q8SlNGdW5jdGlv
bio+KG1fbm9kZS0+ZnVuY3Rpb24oKS0+dmFsdWUoKSktPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hw
b2ludFNldCgpKTsKKyAgICAgICAgICAgIGFkZExhemlseShqc0Nhc3Q8SlNGdW5jdGlvbio+KG1f
bm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKSktPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2lu
dFNldCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ug
VmFyaWFibGVXYXRjaHBvaW50OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyAr
MTA0LDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNh
c2UgUHV0Q2xvc3VyZVZhcjoKICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50OgogICAgIGNhc2Ug
U3RyaW5nQ2hhckF0OgotICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKKyAgICBjYXNlIENoZWNrQ2Vs
bDoKKyAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAg
ICAgY2FzZSBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAgICBjYXNlIFJlYWxsb2NhdGVQcm9w
ZXJ0eVN0b3JhZ2U6CkBAIC0xMjYsNyArMTI3LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBj
YW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBj
YXNlIENoZWNrOgogICAgIGNhc2UgQ291bnRFeGVjdXRpb246Ci0gICAgY2FzZSBDaGVja0V4ZWN1
dGFibGU6CisgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgogICAgIGNhc2UgR2V0U2NvcGU6CiAgICAg
Y2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBDaGVja0FyZ3VtZW50
c05vdENyZWF0ZWQ6CkBAIC0xNjYsNiArMTY3LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBj
YW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgR2V0R2VuZXJpY1Byb3BlcnR5RW51bWVyYXRvcjoK
ICAgICBjYXNlIEdldEVudW1lcmF0b3JQbmFtZToKICAgICBjYXNlIFRvSW5kZXhTdHJpbmc6Cisg
ICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICAgICAgLy8gVGhlc2UgYXJlIE9LLgogICAgICAgICBi
cmVhazsKICAgICBjYXNlIElkZW50aXR5OgpAQCAtMzI2LDYgKzMyOCw3IEBAIGlubGluZSBDYXBh
YmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICAgICAgc3dpdGNoIChub2RlLT5zd2l0
Y2hEYXRhKCktPmtpbmQpIHsKICAgICAgICAgY2FzZSBTd2l0Y2hJbW06CiAgICAgICAgIGNhc2Ug
U3dpdGNoQ2hhcjoKKyAgICAgICAgY2FzZSBTd2l0Y2hDZWxsOgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3Bw
CShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNiBAQCBOT19SRVRVUk5f
RFVFX1RPX0NSQVNIIHN0YXRpYyB2b2lkIGZ0bFVuCiBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHN0
YXRpYyB2b2lkIGZ0bFVucmVhY2hhYmxlKAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBCbG9j
a0luZGV4IGJsb2NrSW5kZXgsIHVuc2lnbmVkIG5vZGVJbmRleCkKIHsKLSAgICAKICAgICBkYXRh
TG9nKCJDcmFzaGluZyBpbiB0aG91Z2h0LXRvLWJlLXVucmVhY2hhYmxlIEZUTC1nZW5lcmF0ZWQg
Y29kZSBmb3IgIiwgcG9pbnRlckR1bXAoY29kZUJsb2NrKSwgIiBhdCBiYXNpYyBibG9jayAjIiwg
YmxvY2tJbmRleCk7CiAgICAgaWYgKG5vZGVJbmRleCAhPSBVSU5UX01BWCkKICAgICAgICAgZGF0
YUxvZygiLCBub2RlIEAiLCBub2RlSW5kZXgpOwpAQCAtMTUzLDExICsxNTIsMTcgQEAgcHVibGlj
OgogICAgICAgICBmb3IgKHVuc2lnbmVkIGJsb2NrSW5kZXggPSBkZXB0aEZpcnN0LnNpemUoKTsg
YmxvY2tJbmRleC0tOyApIHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gZGVwdGhG
aXJzdFtibG9ja0luZGV4XTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4ID0g
YmxvY2stPnNpemUoKTsgbm9kZUluZGV4LS07ICkgewotICAgICAgICAgICAgICAgIE5vZGUqIG1f
bm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOwotICAgICAgICAgICAgICAgIGlmIChtX25vZGUt
Pmhhc0tub3duRnVuY3Rpb24oKSkgeworICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9j
ay0+YXQobm9kZUluZGV4KTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsK
KyAgICAgICAgICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6CisgICAgICAgICAgICAgICAgY2FzZSBO
YXRpdmVDb25zdHJ1Y3Q6IHsKICAgICAgICAgICAgICAgICAgICAgaW50IG51bUFyZ3MgPSBtX25v
ZGUtPm51bUNoaWxkcmVuKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChudW1BcmdzID4gbWF4
TnVtYmVyT2ZBcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgICAgICAgICBtYXhOdW1iZXJPZkFy
Z3VtZW50cyA9IG51bUFyZ3M7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ2
OCwxMSArNDczLDE0IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAg
ICAgICAgICAgICBjb21waWxlQ2hlY2tTdHJ1Y3R1cmUoKTsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIENoZWNrRnVuY3Rpb246Ci0gICAgICAgICAgICBjb21waWxlQ2hlY2tGdW5j
dGlvbigpOworICAgICAgICBjYXNlIENoZWNrQ2VsbDoKKyAgICAgICAgICAgIGNvbXBpbGVDaGVj
a0NlbGwoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENoZWNrQmFkQ2VsbDoK
KyAgICAgICAgICAgIGNvbXBpbGVDaGVja0JhZENlbGwoKTsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToKLSAgICAgICAgICAgIGNvbXBpbGVDaGVja0V4
ZWN1dGFibGUoKTsKKyAgICAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgorICAgICAgICAgICAgY29t
cGlsZUdldEV4ZWN1dGFibGUoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFy
cmF5aWZ5VG9TdHJ1Y3R1cmU6CiAgICAgICAgICAgICBjb21waWxlQXJyYXlpZnlUb1N0cnVjdHVy
ZSgpOwpAQCAtMTc0MywyNiArMTc1MSwyNSBAQCBwcml2YXRlOgogICAgICAgICBtX291dC5hcHBl
bmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21w
aWxlQ2hlY2tGdW5jdGlvbigpCisgICAgdm9pZCBjb21waWxlQ2hlY2tDZWxsKCkKICAgICB7CiAg
ICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
CiAgICAgICAgIHNwZWN1bGF0ZSgKLSAgICAgICAgICAgIEJhZEZ1bmN0aW9uLCBqc1ZhbHVlVmFs
dWUoY2VsbCksIG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpLAotICAgICAgICAgICAgbV9vdXQubm90
RXF1YWwoY2VsbCwgd2Vha1BvaW50ZXIobV9ub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpLmFzQ2Vs
bCgpKSkpOworICAgICAgICAgICAgQmFkQ2VsbCwganNWYWx1ZVZhbHVlKGNlbGwpLCBtX25vZGUt
PmNoaWxkMSgpLm5vZGUoKSwKKyAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKGNlbGwsIHdlYWtQ
b2ludGVyKG1fbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5hc0NlbGwoKSkpKTsKICAgICB9
CiAgICAgCi0gICAgdm9pZCBjb21waWxlQ2hlY2tFeGVjdXRhYmxlKCkKKyAgICB2b2lkIGNvbXBp
bGVDaGVja0JhZENlbGwoKQorICAgIHsKKyAgICAgICAgdGVybWluYXRlKEJhZENlbGwpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGNvbXBpbGVHZXRFeGVjdXRhYmxlKCkKICAgICB7CiAgICAgICAg
IExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgCiAgICAg
ICAgIHNwZWN1bGF0ZUZ1bmN0aW9uKG1fbm9kZS0+Y2hpbGQxKCksIGNlbGwpOwotICAgICAgICAK
LSAgICAgICAgc3BlY3VsYXRlKAotICAgICAgICAgICAgQmFkRXhlY3V0YWJsZSwganNWYWx1ZVZh
bHVlKGNlbGwpLCBtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSwKLSAgICAgICAgICAgIG1fb3V0Lm5v
dEVxdWFsKAotICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0Z1
bmN0aW9uX2V4ZWN1dGFibGUpLAotICAgICAgICAgICAgICAgIHdlYWtQb2ludGVyKG1fbm9kZS0+
ZXhlY3V0YWJsZSgpKSkpOworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIoY2VsbCwg
bV9oZWFwcy5KU0Z1bmN0aW9uX2V4ZWN1dGFibGUpKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBj
b21waWxlQXJyYXlpZnlUb1N0cnVjdHVyZSgpCkBAIC0zNjczLDkgKzM2ODAsNyBAQCBwcml2YXRl
OgogICAgICAgICBpbnQgbnVtUGFzc2VkQXJncyA9IG1fbm9kZS0+bnVtQ2hpbGRyZW4oKSAtIDE7
CiAgICAgICAgIGludCBudW1BcmdzID0gbnVtUGFzc2VkQXJncyArIGR1bW15VGhpc0FyZ3VtZW50
OwogCi0gICAgICAgIEFTU0VSVChtX25vZGUtPmhhc0tub3duRnVuY3Rpb24oKSk7Ci0KLSAgICAg
ICAgSlNGdW5jdGlvbioga25vd25GdW5jdGlvbiA9IG1fbm9kZS0+a25vd25GdW5jdGlvbigpOwor
ICAgICAgICBKU0Z1bmN0aW9uKiBrbm93bkZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPiht
X25vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuYXNDZWxsKCkpOwogICAgICAgICBOYXRpdmVG
dW5jdGlvbiBmdW5jdGlvbiA9IGtub3duRnVuY3Rpb24tPm5hdGl2ZUZ1bmN0aW9uKCk7CiAKICAg
ICAgICAgRGxfaW5mbyBpbmZvOwpAQCAtMzkxOCwxMCArMzkyMywzNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBjYXNlIFN3aXRj
aFN0cmluZzoKKyAgICAgICAgY2FzZSBTd2l0Y2hTdHJpbmc6IHsKICAgICAgICAgICAgIERGR19D
UkFTSChtX2dyYXBoLCBtX25vZGUsICJVbmltcGxlbWVudGVkIik7Ci0gICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAg
IGNhc2UgU3dpdGNoQ2VsbDogeworICAgICAgICAgICAgTFZhbHVlIGNlbGw7CisgICAgICAgICAg
ICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgICAgICAgICBjYXNl
IENlbGxVc2U6IHsKKyAgICAgICAgICAgICAgICBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICAgICAgICAgIExW
YWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgY2VsbENhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIlN3aXRjaC9T
d2l0Y2hDZWxsIGNlbGwgY2FzZSIpKTsKKyAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCisg
ICAgICAgICAgICAgICAgICAgIGlzQ2VsbCh2YWx1ZSksIHVuc3VyZShjZWxsQ2FzZSksIHVuc3Vy
ZShsb3dCbG9jayhkYXRhLT5mYWxsVGhyb3VnaC5ibG9jaykpKTsKKyAgICAgICAgICAgICAgICBt
X291dC5hcHBlbmRUbyhjZWxsQ2FzZSk7CisgICAgICAgICAgICAgICAgY2VsbCA9IHZhbHVlOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwg
bV9ub2RlLCAiQmFkIHVzZSBraW5kIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBidWlsZFN3aXRjaChtX25vZGUtPnN3
aXRjaERhdGEoKSwgbV9vdXQuaW50UHRyLCBjZWxsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfSB9CiAgICAgICAgIAogICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAi
QmFkIHN3aXRjaCBraW5kIik7CiAgICAgfQpAQCAtNTE4Niw3ICs1MjE4LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgVmVjdG9yPFN3aXRjaENhc2U+IGNhc2VzOwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZGF0YS0+Y2FzZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGNhc2Vz
LmFwcGVuZChTd2l0Y2hDYXNlKAotICAgICAgICAgICAgICAgIGNvbnN0SW50KHR5cGUsIGRhdGEt
PmNhc2VzW2ldLnZhbHVlLnN3aXRjaExvb2t1cFZhbHVlKCkpLAorICAgICAgICAgICAgICAgIGNv
bnN0SW50KHR5cGUsIGRhdGEtPmNhc2VzW2ldLnZhbHVlLnN3aXRjaExvb2t1cFZhbHVlKGRhdGEt
PmtpbmQpKSwKICAgICAgICAgICAgICAgICBsb3dCbG9jayhkYXRhLT5jYXNlc1tpXS50YXJnZXQu
YmxvY2spLCBXZWlnaHQoZGF0YS0+Y2FzZXNbaV0udGFyZ2V0LmNvdW50KSkpOwogICAgICAgICB9
CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9u
IDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05ODQsNiArOTg0LDExIEBAIHZvaWQgSGVhcDo6Y29sbGVjdChIZWFwT3BlcmF0
aW9uIGNvbGxlY3QKICAgICAgICAgdm0oKS0+dHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dF
bnRyaWVzKEFTQ0lJTGl0ZXJhbCgiR0MiKSk7CiAgICAgfQogICAgIAorICAgIGlmICh2bSgpLT5j
YWxsRWRnZUxvZykgeworICAgICAgICBEZWZlckdDRm9yQVdoaWxlIGF3aGlsZSgqdGhpcyk7Cisg
ICAgICAgIHZtKCktPmNhbGxFZGdlTG9nLT5wcm9jZXNzTG9nKCk7CisgICAgfQorICAgIAogICAg
IFJFTEVBU0VfQVNTRVJUKCFtX2RlZmVycmFsRGVwdGgpOwogICAgIEFTU0VSVCh2bSgpLT5jdXJy
ZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLT5h
dG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgp
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAko
cmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsMjEgQEAgcHVibGljOgogI2VuZGlm
CiAgICAgfQogICAgIAorICAgIHZvaWQgbG9hZFZhbHVlKEFkZHJlc3MgYWRkcmVzcywgSlNWYWx1
ZVJlZ3MgcmVncykKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbG9hZDY0KGFk
ZHJlc3MsIHJlZ3MuZ3ByKCkpOworI2Vsc2UKKyAgICAgICAgaWYgKGFkZHJlc3MuYmFzZSA9PSBy
ZWdzLnBheWxvYWRHUFIoKSkgeworICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNl
dChUYWdPZmZzZXQpLCByZWdzLnRhZ0dQUigpKTsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNz
LndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCksIHJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoUGF5bG9hZE9m
ZnNldCksIHJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndp
dGhPZmZzZXQoVGFnT2Zmc2V0KSwgcmVncy50YWdHUFIoKSk7CisgICAgICAgIH0KKyNlbmRpZgor
ICAgIH0KKyAgICAKICAgICB2b2lkIG1vdmVUcnVzdGVkVmFsdWUoSlNWYWx1ZSB2YWx1ZSwgSlNW
YWx1ZVJlZ3MgcmVncykKICAgICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAkocmV2aXNpb24gMTcyODU5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAt
MTY2Niw2ICsxNjY2LDE1IEBAIHB1YmxpYzoKICAgICAgICAgbW92ZShhcmc0LCBHUFJJbmZvOjph
cmd1bWVudEdQUjMpOwogICAgIH0KICNlbmRpZgorICAgIAorICAgIHZvaWQgc2V0dXBBcmd1bWVu
dHMoSlNWYWx1ZVJlZ3MgYXJnMSkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAg
c2V0dXBBcmd1bWVudHMoYXJnMS5ncHIoKSk7CisjZWxzZQorICAgICAgICBzZXR1cEFyZ3VtZW50
cyhhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSk7CisjZW5kaWYKKyAgICB9CiAKICAg
ICB2b2lkIHNldHVwUmVzdWx0cyhHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QikKICAgICB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAkocmV2aXNpb24gMTcyODU5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTYw
LDYgKzYwLDggQEAgcHVibGljOgogICAgIEdQUlJlZyB0YWdHUFIoKSBjb25zdCB7IHJldHVybiBJ
bnZhbGlkR1BSUmVnOyB9CiAgICAgR1BSUmVnIHBheWxvYWRHUFIoKSBjb25zdCB7IHJldHVybiBt
X2dwcjsgfQogICAgIAorICAgIGJvb2wgdXNlcyhHUFJSZWcgZ3ByKSBjb25zdCB7IHJldHVybiBt
X2dwciA9PSBncHI7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByOwogfTsKQEAg
LTE2OSw2ICsxNzEsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0YWdHUFIoKTsKICAgICB9
CiAKKyAgICBib29sIHVzZXMoR1BSUmVnIGdwcikgY29uc3QgeyByZXR1cm4gbV90YWdHUFIgPT0g
Z3ByIHx8IG1fcGF5bG9hZEdQUiA9PSBncHI7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgaW50OF90
IG1fdGFnR1BSOwogICAgIGludDhfdCBtX3BheWxvYWRHUFI7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMwMCw2ICszMDAsMTMgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2Rl
SQogICAgIHN0b3JlMzIocmVnVDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpTU3Rh
Y2s6OkNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2Fk
T2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAgICAgc3RvcmUzMihyZWdUMSwg
QWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgSlNTdGFjazo6Q2FsbGVlICogc3RhdGljX2Nh
c3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFRhZ09mZnNldCAtIHNpemVvZihDYWxsZXJGcmFt
ZUFuZFBDKSkpOwogCisgICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENh
bGxMaW5rSW5mbygpOworCisgICAgaWYgKENhbGxFZGdlTG9nOjppc0VuYWJsZWQoKSAmJiBzaG91
bGRFbWl0UHJvZmlsaW5nKCkpIHsKKyAgICAgICAgbV92bS0+ZW5zdXJlQ2FsTEVkZ2VMb2coKS5l
bWl0TG9nQ29kZSgKKyAgICAgICAgICAgICp0aGlzLCBpbmZvLT5jYWxsRWRnZVByb2ZpbGUsIEpT
VmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkpOworICAgIH0KKwogICAgIGlmIChvcGNvZGVJRCA9PSBv
cF9jYWxsX2V2YWwpIHsKICAgICAgICAgY29tcGlsZUNhbGxFdmFsKGluc3RydWN0aW9uKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMzEzLDcgKzMyMCw2IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxs
KE9wY29kZUlEIG9wY29kZUkKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZSk7CiAKICAgICBBU1NF
UlQobV9jYWxsQ29tcGlsYXRpb25JbmZvLnNpemUoKSA9PSBjYWxsTGlua0luZm9JbmRleCk7Ci0g
ICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5mbygpOwog
ICAgIGluZm8tPmNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJRCk7
CiAgICAgaW5mby0+Y29kZU9yaWdpbiA9IENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCk7CiAg
ICAgaW5mby0+Y2FsbGVlR1BSID0gcmVnVDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENhbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQ2FsbC5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ2FsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMiw2ICsyMTIsMTEgQEAgdm9pZCBK
SVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoY2FsbGVlLCByZWdUMCk7IC8vIHJlZ1QwIGhvbGRzIGNhbGxlZS4KIAogICAgIHN0b3Jl
NjQocmVnVDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpTU3RhY2s6OkNhbGxlZSAq
IHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVB
bmRQQykpKTsKKyAgICAKKyAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2NvZGVCbG9jay0+YWRk
Q2FsbExpbmtJbmZvKCk7CisKKyAgICBpZiAoQ2FsbEVkZ2VMb2c6OmlzRW5hYmxlZCgpICYmIHNo
b3VsZEVtaXRQcm9maWxpbmcoKSkKKyAgICAgICAgbV92bS0+ZW5zdXJlQ2FsbEVkZ2VMb2coKS5l
bWl0TG9nQ29kZSgqdGhpcywgaW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBKU1ZhbHVlUmVncyhyZWdU
MCkpOwogCiAgICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCkgewogICAgICAgICBjb21w
aWxlQ2FsbEV2YWwoaW5zdHJ1Y3Rpb24pOwpAQCAtMjIzLDcgKzIyOCw2IEBAIHZvaWQgSklUOjpj
b21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZSk7
CiAKICAgICBBU1NFUlQobV9jYWxsQ29tcGlsYXRpb25JbmZvLnNpemUoKSA9PSBjYWxsTGlua0lu
Zm9JbmRleCk7Ci0gICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxM
aW5rSW5mbygpOwogICAgIGluZm8tPmNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZv
cihvcGNvZGVJRCk7CiAgICAgaW5mby0+Y29kZU9yaWdpbiA9IENvZGVPcmlnaW4obV9ieXRlY29k
ZU9mZnNldCk7CiAgICAgaW5mby0+Y2FsbGVlR1BSID0gcmVnVDA7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Nyw2
ICsxNjcsMTAgQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAgdihib29s
LCBlbmFibGVBY2Nlc3NJbmxpbmluZywgdHJ1ZSkgXAogICAgIHYoYm9vbCwgZW5hYmxlUG9seXZh
cmlhbnREZXZpcnR1YWxpemF0aW9uLCB0cnVlKSBcCiAgICAgdihib29sLCBlbmFibGVQb2x5bW9y
cGhpY0FjY2Vzc0lubGluaW5nLCB0cnVlKSBcCisgICAgdihib29sLCBlbmFibGVQb2x5bW9ycGhp
Y0NhbGxJbmxpbmluZywgdHJ1ZSkgXAorICAgIHYoYm9vbCwgY2FsbFN0YXR1c1Nob3VsZFVzZUNh
bGxFZGdlUHJvZmlsZSwgdHJ1ZSkgXAorICAgIHYoYm9vbCwgZW5hYmxlQ2FsbEVkZ2VQcm9maWxp
bmcsIHRydWUpIFwKKyAgICB2KHVuc2lnbmVkLCBmcmVxdWVudENhbGxUaHJlc2hvbGQsIDIpIFwK
ICAgICB2KGJvb2wsIG9wdGltaXplTmF0aXZlQ2FsbHMsIGZhbHNlKSBcCiAgICAgXAogICAgIHYo
Ym9vbCwgZW5hYmxlQ29uY3VycmVudEpJVCwgdHJ1ZSkgXApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzMsNiArMzczLDEzIEBAIFZN
KiYgVk06OnNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKQogICAgIHJldHVybiBzaGFyZWRJbnN0YW5j
ZTsKIH0KIAorQ2FsbEVkZ2VMb2cmIFZNOjplbnN1cmVDYWxsRWRnZUxvZygpCit7CisgICAgaWYg
KCFjYWxsRWRnZUxvZykKKyAgICAgICAgY2FsbEVkZ2VMb2cgPSBzdGQ6Om1ha2VfdW5pcXVlPENh
bGxFZGdlTG9nPigpOworICAgIHJldHVybiAqY2FsbEVkZ2VMb2c7Cit9CisKICNpZiBFTkFCTEUo
SklUKQogc3RhdGljIFRodW5rR2VuZXJhdG9yIHRodW5rR2VuZXJhdG9yRm9ySW50cmluc2ljKElu
dHJpbnNpYyBpbnRyaW5zaWMpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJ
KHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBBcml0eUNoZWNrRmFpbFJldHVyblRodW5rczsKICAgICBjbGFzcyBCdWlsdGluRXhlY3V0
YWJsZXM7CisgICAgY2xhc3MgQ2FsbEVkZ2VMb2c7CiAgICAgY2xhc3MgQ29kZUJsb2NrOwogICAg
IGNsYXNzIENvZGVDYWNoZTsKICAgICBjbGFzcyBDb21tb25JZGVudGlmaWVyczsKQEAgLTIzMyw2
ICsyMzQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAg
T3duUHRyPERGRzo6TG9uZ0xpdmVkU3RhdGU+IGRmZ1N0YXRlOwogI2VuZGlmIC8vIEVOQUJMRShE
RkdfSklUKQorICAgICAgICAKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxFZGdlTG9nPiBj
YWxsRWRnZUxvZzsKKyAgICAgICAgQ2FsbEVkZ2VMb2cmIGVuc3VyZUNhbGxFZGdlTG9nKCk7CiAK
ICAgICAgICAgVk1UeXBlIHZtVHlwZTsKICAgICAgICAgQ2xpZW50RGF0YSogY2xpZW50RGF0YTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbmV3LWFycmF5LXRoZW4t
ZXhpdC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L25ldy1hcnJheS10aGVuLWV4aXQuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL25ldy1hcnJheS10aGVuLWV4aXQuanMJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxNCBAQAorZnVuY3Rpb24gZm9vKGYpIHsKKyAgICByZXR1cm4gbmV3IGYoKTsK
K30KKworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKQor
ICAgIGZvbyhBcnJheSk7CisKK3ZhciBkaWRDYWxsID0gZmFsc2U7Citmb28oZnVuY3Rpb24oKSB7
IGRpZENhbGwgPSB0cnVlOyB9KTsKKworaWYgKCFkaWRDYWxsKQorICAgIHRocm93ICJFcnJvcjog
ZGlkbid0IGNhbGwgbXkgZnVuY3Rpb24uIjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQtdGhpcy5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3BvbHktY2FsbC1leGl0LXRoaXMuanMJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3BvbHktY2FsbC1l
eGl0LXRoaXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOSBAQAorKGZ1bmN0aW9uKCkg
eworICAgIGZ1bmN0aW9uIGZvbyh4KSB7IHJldHVybiAxICsgdGhpcy5mOyB9CisgICAgZnVuY3Rp
b24gYmFyKHgpIHsgcmV0dXJuIHggKyB0aGlzLmY7IH0KKyAgICBmdW5jdGlvbiBiYXooeCkgeyBy
ZXR1cm4geCArIDEgKyB0aGlzLmY7IH0KKyAgICAKKyAgICB2YXIgbiA9IDEwMDAwMDA7CisgICAg
CisgICAgdmFyIHJlc3VsdCA9IChmdW5jdGlvbihvKSB7CisgICAgICAgIHZhciBmID0ge2Z1bjpm
b28sIGY6MX07CisgICAgICAgIHZhciBnID0ge2Z1bjpiYXIsIGY6Mn07CisgICAgICAgIHZhciBo
ID0ge2Z1bjpiYXosIGY6M307CisgICAgICAgIAorICAgICAgICB2YXIgcmVzdWx0ID0gMDsKKyAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChpID09
IG4gLSAxKQorICAgICAgICAgICAgICAgIGYgPSBoOworICAgICAgICAgICAgcmVzdWx0ICs9IGYu
ZnVuKG8uZik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciB0bXAgPSBmOworICAgICAg
ICAgICAgZiA9IGc7CisgICAgICAgICAgICBnID0gdG1wOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0pKHtmOjQyfSk7CisgICAgCisgICAgaWYgKHJl
c3VsdCAhPSAoKG4gLyAyIC0gMSkgKiAoNDIgKyAyKSkgKyAobiAvIDIgKiAoMSArIDEpICsgKDQy
ICsgMSArIDMpKSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0
OworfSkoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcG9seS1j
YWxsLWV4aXQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9wb2x5LWNhbGwtZXhpdC5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyOSBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIGZvbyh4KSB7IHJldHVybiAx
OyB9CisgICAgZnVuY3Rpb24gYmFyKHgpIHsgcmV0dXJuIHg7IH0KKyAgICBmdW5jdGlvbiBiYXoo
eCkgeyByZXR1cm4geCArIDE7IH0KKyAgICAKKyAgICB2YXIgbiA9IDEwMDAwMDA7CisgICAgCisg
ICAgdmFyIHJlc3VsdCA9IChmdW5jdGlvbihvKSB7CisgICAgICAgIHZhciBmID0gZm9vOworICAg
ICAgICB2YXIgZyA9IGJhcjsKKyAgICAgICAgdmFyIGggPSBiYXo7CisgICAgICAgIAorICAgICAg
ICB2YXIgcmVzdWx0ID0gMDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsK
KyAgICAgICAgICAgIGlmIChpID09IG4gLSAxKQorICAgICAgICAgICAgICAgIGYgPSBoOworICAg
ICAgICAgICAgcmVzdWx0ICs9IGYoby5mKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFy
IHRtcCA9IGY7CisgICAgICAgICAgICBmID0gZzsKKyAgICAgICAgICAgIGcgPSB0bXA7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSkoe2Y6NDJ9KTsK
KyAgICAKKyAgICBpZiAocmVzdWx0ICE9ICgobiAvIDIgLSAxKSAqIDQyKSArIChuIC8gMiAqIDEp
ICsgKDQyICsgMSkpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3Vs
dDsKK30pKCk7CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL1dURi9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAxNC0wOC0yMyAgRmlsaXAgUGl6
bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIERGRyAob3IgRlRMKSBzaG91bGQgYmUg
YWJsZSB0byBkbyBwb2x5bW9ycGhpYyBjYWxsIGlubGluaW5nCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUxNDUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFkZCBzb21lIHBvd2VyIHRoYXQg
SSBuZWVkIGZvciBjYWxsIGVkZ2UgcHJvZmlsaW5nLgorCisgICAgICAgICogd3RmL093blB0ci5o
OgorICAgICAgICAoV1RGOjpPd25QdHI8VD46OmNyZWF0ZVRyYW5zYWN0aW9uYWxseSk6CisgICAg
ICAgICogd3RmL1NwZWN0cnVtLmg6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjphZGQpOgorICAg
ICAgICAoV1RGOjpTcGVjdHJ1bTo6YWRkQWxsKToKKyAgICAgICAgKFdURjo6U3BlY3RydW06Omdl
dCk6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpzaXplKToKKyAgICAgICAgKFdURjo6U3BlY3Ry
dW06OktleUFuZENvdW50OjpLZXlBbmRDb3VudCk6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpj
bGVhcik6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpyZW1vdmVJZik6CisKIDIwMTQtMDgtMjEg
IFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0
IHIxNzI4MzEsIGl0IGJyb2tlIHRoZSBXaW5kb3dzIGJ1aWxkLgpJbmRleDogU291cmNlL1dURi93
dGYvT3duUHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvT3duUHRyLmgJKHJldmlz
aW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9XVEYvd3RmL093blB0ci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAo
QykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjIsNiArMjIsNyBAQAogI2Rl
ZmluZSBXVEZfT3duUHRyX2gKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVk
ZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRl
IDx3dGYvT3duUHRyQ29tbW9uLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgpAQCAtNzIsNiArNzMs
MTQgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IE93blB0
ciYgb3BlcmF0b3I9KE93blB0cjxVPiYmKTsKIAogICAgICAgICB2b2lkIHN3YXAoT3duUHRyJiBv
KSB7IHN0ZDo6c3dhcChtX3B0ciwgby5tX3B0cik7IH0KKyAgICAgICAgCisgICAgICAgIC8vIENv
bnN0cnVjdCBhbiBvYmplY3QgdG8gc3RvcmUgaW50byB0aGlzIE93blB0ciwgYnV0IG9ubHkgc28g
bG9uZyBhcyB0aGlzIE93blB0cgorICAgICAgICAvLyBkb2Vzbid0IGFscmVhZHkgcG9pbnQgdG8g
YW4gb2JqZWN0LiBUaGlzIHdpbGwgZW5zdXJlIHRoYXQgYWZ0ZXIgeW91IGNhbGwgdGhpcywKKyAg
ICAgICAgLy8gdGhlIE93blB0ciB3aWxsIHBvaW50IHRvIGFuIGluc3RhbmNlIG9mIFQuIFRoaXMg
aW5zdGFuY2UgbWF5IG9yIG1heSBub3QgaGF2ZSBiZWVuCisgICAgICAgIC8vIGNyZWF0ZWQgYnkg
dGhpcyBjYWxsLiBNb3Jlb3ZlciwgdGhpcyBjYWxsIHVzZXMgYW4gb3Bwb3J0dW5pc3RpYyB0cmFu
c2FjdGlvbiwgaW4KKyAgICAgICAgLy8gdGhhdCB3ZSBtYXkgY3JlYXRlIGFuIGluc3RhbmNlIG9m
IFQgYW5kIHRoZW4gaW1tZWRpYXRlbHkgdGhyb3cgaXQgYXdheS4KKyAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUuLi4gQXJncz4KKyAgICAgICAgdm9pZCBjcmVhdGVUcmFuc2FjdGlvbmFsbHkoQXJn
cy4uLiBhcmdzKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IE93blB0cihQdHJU
eXBlIHB0cikgOiBtX3B0cihwdHIpIHsgfQpAQCAtMTg2LDYgKzE5NSwyOCBAQCBuYW1lc3BhY2Ug
V1RGIHsKICAgICAgICAgcmV0dXJuIHAuZ2V0KCk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gaW5saW5lIHZvaWQgT3duUHRyPFQ+
OjpjcmVhdGVUcmFuc2FjdGlvbmFsbHkoQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgaWYg
KG1fcHRyKSB7CisgICAgICAgICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgVCogbmV3T2JqZWN0ID0gbmV3
IFQoYXJncy4uLik7CisgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CisjaWYgRU5BQkxF
KENPTVBBUkVfQU5EX1NXQVApCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGlmIChtX3B0cikg
eworICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdPYmplY3Q7CisgICAgICAgICAgICAgICAgV1RG
Ojpsb2FkTG9hZEZlbmNlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICB9IHdoaWxlICghV1RGOjp3ZWFrQ29tcGFyZUFuZFN3YXAoYml0d2lzZV9jYXN0
PHZvaWQqdm9sYXRpbGUqPigmbV9wdHIpLCBudWxscHRyLCBuZXdPYmplY3QpKTsKKyNlbHNlCisg
ICAgICAgIG1fcHRyID0gbmV3T2JqZWN0OworI2VuZGlmCisgICAgfQorCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKIAogdXNpbmcgV1RGOjpPd25QdHI7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1
bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgJKHJldmlzaW9uIDE3
Mjg1OSkKKysrIFNvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDIy
ICszMiwzMSBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIENvdW50ZXJUeXBlID0gdW5zaWduZWQ+CiBjbGFz
cyBTcGVjdHJ1bSB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPFQsIHVu
c2lnbmVkIGxvbmc+OjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEhh
c2hNYXA8VCwgdW5zaWduZWQgbG9uZz46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwor
ICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46Oml0ZXJhdG9yIGl0
ZXJhdG9yOworICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46OmNv
bnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwogICAgIAogICAgIFNwZWN0cnVtKCkgeyB9CiAg
ICAgCi0gICAgdm9pZCBhZGQoY29uc3QgVCYga2V5LCB1bnNpZ25lZCBsb25nIGNvdW50ID0gMSkK
KyAgICB2b2lkIGFkZChjb25zdCBUJiBrZXksIENvdW50ZXJUeXBlIGNvdW50ID0gMSkKICAgICB7
Ci0gICAgICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz46OkFkZFJlc3VsdCBy
ZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBjb3VudCk7CisgICAgICAgIGlmICghY291bnQpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+
OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgY291bnQpOwogICAgICAgICBpZiAo
IXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSAr
PSBjb3VudDsKICAgICB9CiAgICAgCi0gICAgdW5zaWduZWQgbG9uZyBnZXQoY29uc3QgVCYga2V5
KSBjb25zdAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAgdm9pZCBhZGRBbGwoY29uc3Qg
U3BlY3RydW08VCwgVT4mIG90aGVyU3BlY3RydW0pCisgICAgeworICAgICAgICBmb3IgKGF1dG8g
ZW50cnkgOiBvdGhlclNwZWN0cnVtKQorICAgICAgICAgICAgYWRkKGVudHJ5LmtleSwgZW50cnku
Y291bnQpOworICAgIH0KKyAgICAKKyAgICBDb3VudGVyVHlwZSBnZXQoY29uc3QgVCYga2V5KSBj
b25zdAogICAgIHsKICAgICAgICAgY29uc3RfaXRlcmF0b3IgaXRlciA9IG1fbWFwLmZpbmQoa2V5
KTsKICAgICAgICAgaWYgKGl0ZXIgPT0gbV9tYXAuZW5kKCkpCkBAIC01NSw2ICs2NCw4IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOwogICAgIH0KICAgICAKKyAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsgfQorICAgIAogICAgIGl0ZXJh
dG9yIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQogICAgIGl0ZXJhdG9yIGVuZCgp
IHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25z
dCB7IHJldHVybiBtX21hcC5iZWdpbigpOyB9CkBAIC02Myw3ICs3NCw3IEBAIHB1YmxpYzoKICAg
ICBzdHJ1Y3QgS2V5QW5kQ291bnQgewogICAgICAgICBLZXlBbmRDb3VudCgpIHsgfQogICAgICAg
ICAKLSAgICAgICAgS2V5QW5kQ291bnQoY29uc3QgVCYga2V5LCB1bnNpZ25lZCBsb25nIGNvdW50
KQorICAgICAgICBLZXlBbmRDb3VudChjb25zdCBUJiBrZXksIENvdW50ZXJUeXBlIGNvdW50KQog
ICAgICAgICAgICAgOiBrZXkoa2V5KQogICAgICAgICAgICAgLCBjb3VudChjb3VudCkKICAgICAg
ICAgewpAQCAtODAsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBUIGtl
eTsKLSAgICAgICAgdW5zaWduZWQgbG9uZyBjb3VudDsKKyAgICAgICAgQ291bnRlclR5cGUgY291
bnQ7CiAgICAgfTsKICAgICAKICAgICAvLyBSZXR1cm5zIGEgbGlzdCBvcmRlcmVkIGZyb20gbG93
ZXN0LWNvdW50IHRvIGhpZ2hlc3QtY291bnQuCkBAIC05NCw4ICsxMDUsMTggQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gbGlzdDsKICAgICB9CiAgICAgCisgICAgdm9pZCBjbGVhcigpIHsgbV9t
YXAuY2xlYXIoKTsgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAg
dm9pZCByZW1vdmVJZihjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAgICAgICAgbV9t
YXAucmVtb3ZlSWYoW2Z1bmN0b3JdICh0eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6
S2V5VmFsdWVQYWlyVHlwZSYgcGFpcikgeworICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdG9y
KEtleUFuZENvdW50KHBhaXIua2V5LCBwYWlyLnZhbHVlKSk7CisgICAgICAgICAgICB9KTsKKyAg
ICB9CisgICAgCiBwcml2YXRlOgotICAgIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz4gbV9tYXA7
CisgICAgSGFzaE1hcDxULCBDb3VudGVyVHlwZT4gbV9tYXA7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3Mjg1OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE0LTA4LTIzICBGaWxpcCBQaXps
byAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgREZHIChvciBGVEwpIHNob3VsZCBiZSBh
YmxlIHRvIGRvIHBvbHltb3JwaGljIGNhbGwgaW5saW5pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTE0NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2lt
cGxlLXBvbHktY2FsbC1uZXN0ZWQuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jl
c3Mvc2ltcGxlLXBvbHktY2FsbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3Jl
Z3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC5odG1sOiBBZGRlZC4KKwogMjAxNC0w
OC0yMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQW5pbWF0
ZWQgR0lGcyBzY3JvbGxlZCBvdXQgb2YgdmlldyBzdGlsbCBjYXVzZSB0aXRsZWJhciBibHVyIHRv
IHVwZGF0ZSwgb24gdHVtYmxyLmNvbSBwYWdlCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3NpbXBsZS1wb2x5LWNhbGwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zaW1wbGUtcG9seS1jYWxs
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJv
d24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCklu
ZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVkLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5
LWNhbGwtbmVzdGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zaW1wbGUtcG9seS1jYWxsLW5lc3RlZAor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3du
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcG9seS1jYWxsLW5lc3RlZC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0
ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBv
bHktY2FsbC1uZXN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zaW1wbGUtcG9seS1j
YWxsLW5lc3RlZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Jl
Z3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
c2NyaXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXBv
bHktY2FsbC1uZXN0ZWQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQuanMJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcG9seS1jYWxsLW5lc3Rl
ZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI1IEBACisoZnVuY3Rpb24oKSB7CisgICAg
ZnVuY3Rpb24gZm9vKHgpIHsgcmV0dXJuIDE7IH0KKyAgICBmdW5jdGlvbiBiYXIoeCkgeyByZXR1
cm4geDsgfQorICAgIAorICAgIHZhciBuID0gMTAwMDAwMDsKKyAgICAKKyAgICB2YXIgcmVzdWx0
ID0gKGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgZiA9IGZvbzsKKyAgICAgICAgdmFyIGcgPSBi
YXI7CisgICAgICAgIAorICAgICAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgICAgIHJlc3VsdCArPSBmKDQyKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgdmFyIHRtcCA9IGY7CisgICAgICAgICAgICBmID0gZzsKKyAg
ICAgICAgICAgIGcgPSB0bXA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfSkoKTsKKyAgICAKKyAgICBpZiAocmVzdWx0ICE9IG4gLyAyICogNDIgKyBu
IC8gMiAqIDEpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsK
K30pKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUt
cG9seS1jYWxsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0
LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcG9seS1jYWxsLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMjAgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBmdW5jdGlvbiBmb28oeCkgeyBy
ZXR1cm4gMTsgfQorICAgIGZ1bmN0aW9uIGJhcih4KSB7IHJldHVybiB4OyB9CisgICAgCisgICAg
dmFyIGYgPSBmb287CisgICAgdmFyIGcgPSBiYXI7CisgICAgCisgICAgdmFyIHJlc3VsdCA9IDA7
CisgICAgdmFyIG4gPSAxMDAwMDA7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsK
KyAgICAgICAgcmVzdWx0ICs9IGYoNDIpOworICAgICAgICAKKyAgICAgICAgdmFyIHRtcCA9IGY7
CisgICAgICAgIGYgPSBnOworICAgICAgICBnID0gdG1wOworICAgIH0KKyAgICAKKyAgICBpZiAo
cmVzdWx0ICE9IG4gLyAyICogNDIgKyBuIC8gMiAqIDEpCisgICAgICAgIHRocm93ICJFcnJvcjog
YmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30pKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237039</attachid>
            <date>2014-08-23 21:12:37 -0700</date>
            <delta_ts>2014-08-24 18:00:22 -0700</delta_ts>
            <desc>closer</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>182646</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyNiBA
QAorMjAxNC0wOC0yMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyAob3IgRlRMKSBzaG91bGQgYmUgYWJsZSB0byBkbyBwb2x5bW9ycGhpYyBjYWxsIGlubGlu
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUx
NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIEFkZCBhIGxvZy1iYXNlZCBoaWdoLWZpZGVsaXR5IGNhbGwgZWRnZSBwcm9maWxlciB0aGF0
IHJ1bnMgaW4gYmFzZWxpbmUgSklUIGFuZCBERkcgSklUIGNvZGUuCisgICAgICAgIFVzZSBpdCB0
byBkbyBwcmVjaXNlIHBvbHltb3JwaGljIGlubGluaW5nIGluIHRoZSBGVEwsIGFuZCB0byBtYWtl
IHRoZSBERkcncyBtb25vbW9ycGhpYworICAgICAgICBpbmxpbmVyIGEgYml0IG1vcmUgaW50ZWxs
aWdlbnQuIFBvdGVudGlhbCBpbmxpbmluZyBzaXRlcyB3aWxsIHVzZSB0aGUgY2FsbCBlZGdlIHBy
b2ZpbGUgaWYKKyAgICAgICAgaXQgaXMgYXZhaWxhYmxlIGJ1dCB0aGV5IHdpbGwgc3RpbGwgZmFs
bCBiYWNrIG9uIHRoZSBjYWxsIGlubGluZSBjYWNoZSBhbmQgcmFyZSBjYXNlIGNvdW50cworICAg
ICAgICBpZiB0aGF0J3Mgbm90IGF2YWlsYWJsZS4KKyAgICAgICAgCisgICAgICAgIFdvcmsgaW4g
cHJvZ3Jlc3MuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxFZGdlLmNwcDogQWRkZWQuCisgICAgICAg
IChKU0M6OkNhbGxFZGdlOjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsRWRnZS5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2U6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6
OkNhbGxFZGdlOjpjYWxsZWUpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZTo6Y291bnQpOgorICAg
ICAgICAoSlNDOjpDYWxsRWRnZTo6ZGVzcGVjaWZpZWRDbG9zdXJlKToKKyAgICAgICAgKEpTQzo6
Q2FsbEVkZ2U6OkNhbGxFZGdlKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VQcm9maWxlOjpjYWxsRWRnZXMpOgor
ICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6Om51bUNhbGxzVG9Lbm93bkNlbGxzKToKKyAg
ICAgICAgKEpTQzo6d29ydGhEZXNwZWNpZnlpbmcpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZVBy
b2ZpbGU6OndvcnRoRGVzcGVjaWZ5aW5nKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VQcm9maWxl
Ojp2aXNpdFdlYWspOgorICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6OmFkZFNsb3cpOgor
ICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6Om1lcmdlQmFjayk6CisgICAgICAgIChKU0M6
OkNhbGxFZGdlUHJvZmlsZTo6ZmFkZUJ5SGFsZik6CisgICAgICAgIChKU0M6OkNhbGxFZGdlTG9n
OjpDYWxsRWRnZUxvZyk6CisgICAgICAgIChKU0M6OkNhbGxFZGdlTG9nOjp+Q2FsbEVkZ2VMb2cp
OgorICAgICAgICAoSlNDOjpDYWxsRWRnZUxvZzo6aXNFbmFibGVkKToKKyAgICAgICAgKEpTQzo6
b3BlcmF0aW9uUHJvY2Vzc0NhbGxFZGdlTG9nKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VMb2c6
OmVtaXRMb2dDb2RlKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VMb2c6OnByb2Nlc3NMb2cpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6Q2FsbEVkZ2VQcm9maWxlOjpudW1DYWxsc1RvTm90Q2VsbCk6CisgICAgICAgIChKU0M6OkNh
bGxFZGdlUHJvZmlsZTo6bnVtQ2FsbHNUb1Vua25vd25DZWxsKToKKyAgICAgICAgKiBieXRlY29k
ZS9DYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpDYWxsRWRn
ZVByb2ZpbGU6OkNhbGxFZGdlUHJvZmlsZSk6CisgICAgICAgIChKU0M6OkNhbGxFZGdlUHJvZmls
ZTo6YWRkKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAo
SlNDOjpDYWxsTGlua0luZm86OnZpc2l0V2Vhayk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmg6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAg
ICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Q2FsbExpbmtTdGF0dXMpOgorICAgICAgICAoSlNDOjpD
YWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5r
U3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZy
b21DYWxsRWRnZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6aXNDbG9z
dXJlQ2FsbCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjptYWtlQ2xvc3VyZUNhbGwp
OgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNh
bGxMaW5rU3RhdHVzOjpmdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNhbGxMaW5r
U3RhdHVzOjppbnRlcm5hbEZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbExp
bmtTdGF0dXM6OmludHJpbnNpY0Zvcik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ2Fs
bExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OkNhbGxMaW5rU3Rh
dHVzKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmlzU2V0KToKKyAgICAgICAgKEpT
Qzo6Q2FsbExpbmtTdGF0dXM6OmNvdWxkVGFrZVNsb3dQYXRoKToKKyAgICAgICAgKEpTQzo6Q2Fs
bExpbmtTdGF0dXM6OmVkZ2VzKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OnNpemUp
OgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6YXQpOgorICAgICAgICAoSlNDOjpDYWxs
TGlua1N0YXR1czo6b3BlcmF0b3JbXSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpj
YW5PcHRpbWl6ZSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjYW5UcnVzdENvdW50
cyk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjppc0Nsb3N1cmVDYWxsKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNhbGxUYXJnZXQpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6ZXhlY3V0YWJsZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjptYWtlQ2xvc3VyZUNhbGwpOiBEZWxldGVkLgorICAg
ICAgICAqIGJ5dGVjb2RlL0NhbGxWYXJpYW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkNh
bGxWYXJpYW50OjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsVmFyaWFudC5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OkNhbGxWYXJpYW50KToKKyAgICAgICAgKEpT
Qzo6Q2FsbFZhcmlhbnQ6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50Ojpk
ZXNwZWNpZmllZENsb3N1cmUpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6cmF3Q2FsbGVl
Q2VsbCk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjppbnRlcm5hbEZ1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OmZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Q2FsbFZh
cmlhbnQ6OmlzQ2xvc3VyZUNhbGwpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZXhlY3V0
YWJsZSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50Ojpub25FeGVjdXRhYmxlQ2FsbGVlKToK
KyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OmludHJpbnNpY0Zvcik6CisgICAgICAgIChKU0M6
OkNhbGxWYXJpYW50OjpmdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpDYWxsVmFy
aWFudDo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFu
dDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpvcGVyYXRvciE9KToK
KyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om9wZXJhdG9yPCk6CisgICAgICAgIChKU0M6OkNh
bGxWYXJpYW50OjpvcGVyYXRvcj4pOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6b3BlcmF0
b3I8PSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpvcGVyYXRvcj49KToKKyAgICAgICAg
KEpTQzo6Q2FsbFZhcmlhbnQ6Omhhc2gpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZGVs
ZXRlZFRva2VuKToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnRIYXNoOjpoYXNoKToKKyAgICAg
ICAgKEpTQzo6Q2FsbFZhcmlhbnRIYXNoOjplcXVhbCk6CisgICAgICAgICogYnl0ZWNvZGUvRXhp
dEtpbmQuY3BwOgorICAgICAgICAoSlNDOjpleGl0S2luZFRvU3RyaW5nKToKKyAgICAgICAgKiBi
eXRlY29kZS9FeGl0S2luZC5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0JhY2t3YXJk
c1Byb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJhY2t3YXJkc1Byb3Bh
Z2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR0Jhc2ljQmxvY2suaDoK
KyAgICAgICAgKEpTQzo6REZHOjpCYXNpY0Jsb2NrOjp0YWtlTGFzdCk6CisgICAgICAgIChKU0M6
OkRGRzo6QmFzaWNCbG9jazo6ZGlkTGluayk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cmVtb3ZlTGFzdE5v
ZGVGcm9tR3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphZGRDYWxs
V2l0aG91dFNldHRpbmdSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjphZGRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmVtaXRGdW5jdGlvbkNoZWNr
cyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnVuZG9GdW5jdGlvbkNoZWNr
cyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpjYW5jZWxMaW5raW5nRm9yQmxvY2spOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdD
UFNSZXRocmVhZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDUFNSZXRocmVhZGlu
Z1BoYXNlOjpmcmVlVW5uZWNlc3NhcnlOb2Rlcyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJp
emUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZH
Q29tbW9uLmg6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6Cisg
ICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToK
KyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxl
SW1wbCk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6R3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6Okdy
YXBoOjpkdW1wKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZn
L0RGR0xhenlKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpMYXp5SlNWYWx1ZTo6c3dp
dGNoTG9va3VwVmFsdWUpOgorICAgICAgICAqIGRmZy9ERkdMYXp5SlNWYWx1ZS5oOgorICAgICAg
ICAoSlNDOjpERkc6OkxhenlKU1ZhbHVlOjpzd2l0Y2hMb29rdXBWYWx1ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogZGZnL0RGR05vZGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToK
KyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok9wSW5mbzo6T3BJ
bmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNDZWxsT3BlcmFuZCk6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6Y2VsbE9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
OnNldENlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjYW5CZUtub3duRnVu
Y3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0tub3duRnVuY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omtub3duRnVuY3Rpb24pOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdpdmVLbm93bkZ1bmN0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNGdW5jdGlvbik6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6ZnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6Omhhc0V4ZWN1dGFibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6OmV4ZWN1dGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5o
OgorICAgICAgICAqIGRmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlOjpydW4pOgorICAg
ICAgICAqIGRmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpQaGFudG9tUmVtb3ZhbFBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpl
bWl0U3dpdGNoKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZTo6cnVuKToKKyAg
ICAgICAgKiBkZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6VGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcv
REZHVmFsaWRhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlZhbGlkYXRlOjp2YWxpZGF0ZSk6
CisgICAgICAgICogZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OldhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2U6OmhhbmRsZSk6CisgICAgICAg
ICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGls
ZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpmdGxVbnJlYWNoYWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
Omxvd2VyKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5vZGUp
OgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ2hlY2tDZWxsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNoZWNrQmFkQ2VsbCk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVHZXRFeGVjdXRhYmxl
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5hdGl2ZUNhbGxP
ckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVT
d2l0Y2gpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpidWlsZFN3aXRjaCk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVDaGVja0Z1bmN0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNo
ZWNrRXhlY3V0YWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAg
ICAgKEpTQzo6SGVhcDo6Y29sbGVjdCk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5o
OgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRWYWx1ZSk6CisgICAgICAgICog
aml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJn
dW1lbnRzKToKKyAgICAgICAgKiBqaXQvR1BSSW5mby5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
UmVnczo6dXNlcyk6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9u
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6ZW5zdXJl
Q2FsbEVkZ2VMb2cpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvbmV3LWFycmF5LXRoZW4tZXhpdC5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9wb2x5LWNhbGwtZXhpdC10aGlzLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiB0ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQuanM6IEFkZGVkLgorCiAyMDE0LTA4LTIx
ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICByMTcxMzYyIGFjY2lk
ZW50YWxseSBpbmNyZWFzZWQgdGhlIHNpemUgb2YgSW5saW5lQ2FsbEZyYW1lLgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNjMsNiArMjYzLDEzIEBACiAJCTBGM0IzQTI4MTU0NEM5OTcwMDNFRDBG
RiAvKiBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCM0EyNTE1NDRDOTkxMDAzRUQwRkYgLyogREZHQ0ZH
U2ltcGxpZmljYXRpb25QaGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGM0IzQTJCMTU0NzUwMDAwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCM0Ey
OTE1NDc0RkY0MDAzRUQwRkYgLyogREZHVmFsaWRhdGUuY3BwICovOyB9OwogCQkwRjNCM0EyQzE1
NDc1MDAyMDAzRUQwRkYgLyogREZHVmFsaWRhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0IzQTJBMTU0NzRGRjQwMDNFRDBGRiAvKiBERkdWYWxp
ZGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTBGM0I3RTI2MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMjAxOUExMUI4MDAwRDlCQzU2IC8q
IENhbGxFZGdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEYzQjdFMjcxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCN0UyMTE5QTEx
QjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmNwcCAqLzsgfTsKKwkJMEYzQjdFMjgxOUEx
MUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMjIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxF
ZGdlUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGM0I3RTI5MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGVJbmxpbmVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCN0Uy
MzE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGM0I3RTJBMTlBMTFCODAw
MEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjNCN0UyNDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQu
Y3BwICovOyB9OworCQkwRjNCN0UyQjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTI1MTlB
MTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGM0I3RTJEMTlBMTJBQUUwMEQ5QkM1NiAvKiBDYWxs
RWRnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjNCN0UyQzE5QTEyQUFFMDBEOUJDNTYgLyogQ2FsbEVkZ2UuY3BwICovOyB9OwogCQkwRjNEMEJC
QzE5NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNEMEJCQTE5NEE0MTQzMDBG
QzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHAgKi87IH07CiAJCTBGM0QwQkJEMTk0
QTQxNDMwMEZDOUNGOSAvKiBDb25zdGFudFN0cnVjdHVyZUNoZWNrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNEMEJCQjE5NEE0MTQzMDBGQzlDRjkg
LyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGNDI2QTQ4MTQ2MENCQjMwMDEzMUY4RiAvKiBWYWx1ZVJl
Y292ZXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMTY3LDYgKzIxNzQsMTMgQEAK
IAkJMEYzQjNBMjUxNTQ0Qzk5MTAwM0VEMEZGIC8qIERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ0ZHU2ltcGxpZmljYXRpb25Q
aGFzZS5oOyBwYXRoID0gZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQjNBMjkxNTQ3NEZGNDAwM0VEMEZGIC8qIERGR1ZhbGlk
YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ZhbGlkYXRl
LmNwcDsgcGF0aCA9IGRmZy9ERkdWYWxpZGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGM0IzQTJBMTU0NzRGRjQwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdWYWxpZGF0ZS5oOyBwYXRoID0gZGZnL0RGR1Zh
bGlkYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGM0I3RTIwMTlBMTFCODAw
MEQ5QkM1NiAvKiBDYWxsRWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YWxsRWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyMTE5QTExQjgw
MDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENhbGxFZGdlUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGM0I3RTIyMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbEVkZ2VQcm9maWxlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGM0I3RTIzMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRn
ZVByb2ZpbGVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxF
ZGdlUHJvZmlsZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzQjdF
MjQxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxWYXJpYW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYzQjdFMjUxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxWYXJpYW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGM0I3RTJDMTlBMTJBQUUwMEQ5QkM1NiAvKiBDYWxsRWRnZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsRWRnZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0QwQkJBMTk0QTQxNDMwMEZDOUNGOSAvKiBDb25z
dGFudFN0cnVjdHVyZUNoZWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENvbnN0YW50U3RydWN0dXJlQ2hlY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjNEMEJCQjE5NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb25zdGFudFN0cnVjdHVyZUNoZWNr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ1MTQ2MENCQUIwMDEzMUY4
RiAvKiBWYWx1ZVJlY292ZXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZh
bHVlUmVjb3ZlcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUxNDQsMTEgKzUx
NTgsMTggQEAKIAkJCQkwRjY2NkVCRTE4MzU2NkY5MDBEMDE3RjEgLyogQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzSW5saW5lcy5oICovLAogCQkJCTBGODg1RTEwMTg0OUEzQkUwMEYxRTNGQSAvKiBC
eXRlY29kZVVzZURlZi5oICovLAogCQkJCTBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZh
bEluZm8uaCAqLywKKwkJCQkwRjNCN0UyQzE5QTEyQUFFMDBEOUJDNTYgLyogQ2FsbEVkZ2UuY3Bw
ICovLAorCQkJCTBGM0I3RTIwMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZS5oICovLAorCQkJ
CTBGM0I3RTIxMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuY3BwICovLAorCQkJ
CTBGM0I3RTIyMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuaCAqLywKKwkJCQkw
RjNCN0UyMzE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oICovLAog
CQkJCTBGMEI4M0FFMTRCQ0Y3MTQwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uY3BwICovLAogCQkJ
CTBGMEI4M0FGMTRCQ0Y3MTQwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uaCAqLywKIAkJCQkwRjkz
MzI5MzE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuY3BwICovLAogCQkJCTBGOTMz
Mjk0MTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5oICovLAogCQkJCTBGMEI4M0I4
MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICov
LAorCQkJCTBGM0I3RTI0MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5jcHAgKi8sCisJ
CQkJMEYzQjdFMjUxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmggKi8sCiAJCQkJOTY5
QTA3OTAwRUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5jcHAgKi8sCiAJCQkJOTY5QTA3OTEw
RUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5oICovLAogCQkJCTBGOEY5NDNEMTY2NzYzMkQw
MEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmNwcCAqLywKQEAgLTU4NzcsNiArNTg5OCw3IEBACiAJ
CQkJMEZGRkM5NUExNEVGOTBBOTAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjJGQzc3MzE2RTEyRjc0MDAzOEQ5NzYgLyogREZHRENFUGhhc2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGOEYyQjlBMTcyRjA1MDEwMDdEQkRBNSAvKiBERkdEZXNpcmVkSWRlbnRp
ZmllcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGM0I3RTI4MTlBMTFCODAwMEQ5QkM1NiAvKiBD
YWxsRWRnZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQzBGN0NFMTdCQkZDNUIwMDQ2
NEZFNCAvKiBERkdEZXNpcmVkVHJhbnNpdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTg1
MzRDMTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUMyOTgxRkQ5MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vha1JlZmVy
ZW5jZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNjE0NSw2ICs2MTY3LDcgQEAKIAkJCQkwRjc2NkQz
MTE1QUE4MTEyMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNzY2RDJDMTVBOENDM0EwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZVNldC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMTRDNTI0MkIwRjUzNTVFOTAwQkEzRDA0IC8qIEpJVFN0dWJzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjNCN0UyQjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUZFRjY4MzVFMTc0MzQzQ0MwMEEzMkUyNSAvKiBKSVRTdHVic0FS
TS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVGNjgzNUYxNzQzNDNDQzAwQTMyRTI1IC8qIEpJVFN0
dWJzQVJNdjcuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFRjY4MzYxMTc0MzQzQ0MwMEEzMkUyNSAv
KiBKSVRTdHVic1g4Ni5oIGluIEhlYWRlcnMgKi8sCkBAIC02MTU2LDYgKzYxNzksNyBAQAogCQkJ
CUE3NkY1NEEzMTNCMjhBQUIwMEVGMkJDRSAvKiBKSVRXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0FjdGl2YXRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg0MDQ4MDEzMTAyMUExRDkwMDhFN0YwMSAvKiBKU0FQSVZhbHVlV3Jh
cHBlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYzQjdFMjkxOUExMUI4MDAwRDlCQzU2IC8qIENh
bGxFZGdlUHJvZmlsZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQ0YzOUMyMTZFMTVB
ODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
NjE0MEQyMTgyOTgyQ0IwMDc1MDYyNCAvKiBKU0FyZ3VtZW50c0l0ZXJhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzE4QzQxNzBFMTZGNUNEMDBCMzQ0NjAgLyogSlNBcnJheS5oIGluIEhlYWRl
cnMgKi8sCkBAIC02NDcxLDYgKzY0OTUsNyBAQAogCQkJCUU0OURDMTZDMTJFRjI5NEUwMDE4NEEx
RiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDlEQzE2RDEy
RUYyOTUzMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQjdGMzlFMTVFRDhFNDYwMEYxNjdCMiAvKiBTcGFyc2VBcnJheVZhbHVlTWFwLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjNCN0UyNjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mzg2NTU0MTE4Njk3QjQwMDU0MDI3OSAvKiBTcGVjaWFs
aXplZFRodW5rSklULmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU1NDFCMjE2MTNDMUZCMDBDRTNF
MjUgLyogU3BlY2lhbFBvaW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgyRTU0MTQxREFF
RUUwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03MzIzLDYg
KzczNDgsNyBAQAogCQkJCTBGMjM1QkQ1MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1l
bnRGb3JPcGVyYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkQ4MTcxNzhFMUMwMDY5
MEM3RiAvKiBGVExFeGl0VGh1bmtHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYy
MzVCREExNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRjNCN0UyNzE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE3RjI5OTZCMTdBMEJCNjcwMDEwNDE3QSAvKiBGVExGYWlsLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRDhBMzE5MTdENTFGMjIwMENBMkM0MCAvKiBGVExGb3JPU1JF
bnRyeUpJVENvZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyNUYxQUYxODE2MzVGMzAwNTIy
RjM5IC8qIEZUTElubGluZUNhY2hlU2l6ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc1MDksNiAr
NzUzNSw3IEBACiAJCQkJMEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjM4QjAxMTE3Q0YwNzgwMDBCMTQ0RDMgLyogTExJbnRFbnRy
eXBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAv
KiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYzQjdFMkQxOUExMkFB
RTAwRDlCQzU2IC8qIENhbGxFZGdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MEE0MTRC
QTdGOEQwMEJGRTI3MiAvKiBMTEludFNsb3dQYXRocy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjBCODM5QzE0QkNGNDYzMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZDRUZBQ0QxODA1RTc1NTAwNDcyQ0U0IC8qIExMVk1BUEkuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC03NjcwLDYgKzc2OTcsNyBAQAogCQkJCTE0RTg0RkEwMTRFRTFBQ0MwMEQ2RDVENCAv
KiBXZWFrU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJBNEVDOTBCMTg2MEQ2QzIwMDk0Rjc4
MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDODE1MEIx
NDA0M0MwRTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMEYzQjdFMkExOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE3RTVBQjNBMTc5OUU0QjIwMEQyODMzRCAvKiBYODZEaXNhc3NlbWJsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODYzQzZEOUMxNTIxMTExQTAwNTg1RTRFIC8qIFlhcnJD
YW5vbmljYWxpemVVQ1MyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0Qjg0MTJEQkEzMzcw
MEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZS5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNhbGxFZGdlLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCit2b2lkIENhbGxFZGdlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0Cit7CisgICAgb3V0LnByaW50KCI8IiwgbV9jYWxsZWUsICIsIGNvdW50OiAiLCBtX2Nv
dW50LCAiPiIpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgQ2FsbEVkZ2VfaAorI2RlZmluZSBDYWxsRWRnZV9oCisKKyNpbmNsdWRlICJDYWxsVmFy
aWFudC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordHlwZWRlZiB1aW50MTZfdCBDYWxsRWRnZUNv
dW50VHlwZTsKKworY2xhc3MgQ2FsbEVkZ2UgeworcHVibGljOgorICAgIENhbGxFZGdlKCk7Cisg
ICAgQ2FsbEVkZ2UoQ2FsbFZhcmlhbnQgY2FsbGVlLCBDYWxsRWRnZUNvdW50VHlwZSBjb3VudCk7
CisgICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7IH0K
KyAgICAKKyAgICBDYWxsVmFyaWFudCBjYWxsZWUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlZTsg
fQorICAgIENhbGxFZGdlQ291bnRUeXBlIGNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb3VudDsg
fQorICAgIAorICAgIENhbGxFZGdlIGRlc3BlY2lmaWVkQ2xvc3VyZSgpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gQ2FsbEVkZ2UobV9jYWxsZWUuZGVzcGVjaWZpZWRDbG9zdXJlKCksIG1f
Y291bnQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsK
KyAgICAKK3B1YmxpYzoKKyAgICBDYWxsVmFyaWFudCBtX2NhbGxlZTsKKyAgICBDYWxsRWRnZUNv
dW50VHlwZSBtX2NvdW50OworfTsKKworaW5saW5lIENhbGxFZGdlOjpDYWxsRWRnZShDYWxsVmFy
aWFudCBjYWxsZWUsIENhbGxFZGdlQ291bnRUeXBlIGNvdW50KQorICAgIDogbV9jYWxsZWUoY2Fs
bGVlKQorICAgICwgbV9jb3VudChjb3VudCkKK3sKK30KKworaW5saW5lIENhbGxFZGdlOjpDYWxs
RWRnZSgpCisgICAgOiBDYWxsRWRnZShDYWxsVmFyaWFudCgpLCAwKQoreworfQorCit0eXBlZGVm
IFZlY3RvcjxDYWxsRWRnZSwgMT4gQ2FsbEVkZ2VMaXN0OworCit9IC8vIG5hbWVzcGFjZSBKU0MK
KworI2VuZGlmIC8vIENhbGxFZGdlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDM0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2FsbEVkZ2VQcm9m
aWxlLmgiCisKKyNpbmNsdWRlICJDYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmgiCisjaW5jbHVkZSAi
Q0NhbGxIZWxwZXJzLmgiCisjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0NhbGxFZGdlTGlzdCBDYWxsRWRnZVBy
b2ZpbGU6OmNhbGxFZGdlcygpIGNvbnN0Cit7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIobV9sb2NrKTsKKyAgICAKKyAgICBDYWxsRWRnZUxpc3QgcmVzdWx0OworICAgIAorICAgIENh
bGxWYXJpYW50IHByaW1hcnlDYWxsZWUgPSBtX3ByaW1hcnlDYWxsZWU7CisgICAgZmxvYXQgbnVt
Q2FsbHNUb1ByaW1hcnkgPSBtX251bUNhbGxzVG9QcmltYXJ5OworICAgIC8vIERlZmVuZCBhZ2Fp
bnN0IHJhY2VzLiBUaGVzZSBmaWVsZHMgYXJlIG1vZGlmaWVkIGJ5IHRoZSBsb2cgcHJvY2Vzc29y
IHdpdGhvdXQgbG9ja2luZy4KKyAgICBpZiAoISFwcmltYXJ5Q2FsbGVlICYmIG51bUNhbGxzVG9Q
cmltYXJ5KQorICAgICAgICByZXN1bHQuYXBwZW5kKENhbGxFZGdlKHByaW1hcnlDYWxsZWUsIG51
bUNhbGxzVG9QcmltYXJ5KSk7CisgICAgCisgICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAg
ICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGlmIHRoZSBwcmltYXJ5IHRocmVhZCBoYWQganVzdCBjcmVh
dGVkIGEgbV9vdGhlckNhbGxlcyB3aGlsZSBsb2cKKyAgICAgICAgLy8gcHJvY2Vzc2luZywgd2Ug
c2VlIGEgY29uc2lzdGVudGx5IGNyZWF0ZWQgb25lLiBUaGUgbG9jayBiZWluZyBoZWxkIGlzIGlu
c3VmZmljaWVudCBmb3IKKyAgICAgICAgLy8gdGhpcywgc2luY2UgdGhlIGxvZyBwcm9jZXNzb3Ig
d2lsbCBvbmx5IGdyYWIgdGhlIGxvY2sgd2hlbiBtZXJnaW5nIHRoZSBzZWNvbmRhcnkKKyAgICAg
ICAgLy8gc3BlY3RydW0gaW50byB0aGUgcHJpbWFyeSBvbmUgYnV0IG1heSBzdGlsbCBjcmVhdGUg
dGhlIGRhdGEgc3RydWN0dXJlIHdpdGhvdXQgaG9sZGluZworICAgICAgICAvLyBsb2Nrcy4KKyAg
ICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CisgICAgICAgIGZvciAoQ2FsbEVkZ2UgZW50cnkg
OiBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQpIHsKKyAgICAgICAgICAgIC8vIERlZmVuZCBh
Z2FpbnN0IHRoZSBwb3NzaWJpbGl0eSB0aGF0IHRoZSBwcmltYXJ5IGR1cGxpY2F0ZXMgYW4gZW50
cnkgaW4gdGhlIHNlY29uZGFyeQorICAgICAgICAgICAgLy8gc3BlY3RydW0uIFRoYXQgY2FuIGhh
cHBlbiB3aGVuIHRoZSBHQyByZW1vdmVzIHRoZSBwcmltYXJ5LiBXZSBjb3VsZCBoYXZlIHRoZSBH
QyBmaXgKKyAgICAgICAgICAgIC8vIHRoZSBzaXR1YXRpb24gYnkgY2hhbmdpbmcgdGhlIHByaW1h
cnkgdG8gYmUgc29tZXRoaW5nIGZyb20gdGhlIHNlY29uZGFyeSBzcGVjdHJ1bSwKKyAgICAgICAg
ICAgIC8vIGJ1dCB0aGlzIGZpeCBzZWVtcyBzaW1wbGVyIHRvIGltcGxlbWVudCBhbmQgYWxzbyBj
aGVhcGVyLgorICAgICAgICAgICAgaWYgKGVudHJ5LmNhbGxlZSgpID09IHJlc3VsdFswXS5jYWxs
ZWUoKSkgeworICAgICAgICAgICAgICAgIHJlc3VsdFswXSA9IENhbGxFZGdlKHJlc3VsdFswXS5j
YWxsZWUoKSwgZW50cnkuY291bnQoKSArIHJlc3VsdFswXS5jb3VudCgpKTsKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZChlbnRyeSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgc3RkOjpz
b3J0KHJlc3VsdC5iZWdpbigpLCByZXN1bHQuZW5kKCksIFtdIChjb25zdCBDYWxsRWRnZSYgYSwg
Y29uc3QgQ2FsbEVkZ2UmIGIpIC0+IGJvb2wgeworICAgICAgICAgICAgcmV0dXJuIGEuY291bnQo
KSA+IGIuY291bnQoKTsKKyAgICAgICAgfSk7CisgICAgCisgICAgaWYgKHJlc3VsdC5zaXplKCkg
Pj0gMikKKyAgICAgICAgQVNTRVJUKHJlc3VsdFswXS5jb3VudCgpID49IHJlc3VsdC5sYXN0KCku
Y291bnQoKSk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQ2FsbEVkZ2VDb3VudFR5
cGUgQ2FsbEVkZ2VQcm9maWxlOjpudW1DYWxsc1RvS25vd25DZWxscygpIGNvbnN0Cit7CisgICAg
Q2FsbEVkZ2VDb3VudFR5cGUgcmVzdWx0ID0gMDsKKyAgICBmb3IgKENhbGxFZGdlIGVkZ2UgOiBj
YWxsRWRnZXMoKSkKKyAgICAgICAgcmVzdWx0ICs9IGVkZ2UuY291bnQoKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitzdGF0aWMgYm9vbCB3b3J0aERlc3BlY2lmeWluZyhjb25zdCBDYWxsVmFy
aWFudCYgdmFyaWFudCkKK3sKKyAgICByZXR1cm4gIUhlYXA6OmlzTWFya2VkKHZhcmlhbnQucmF3
Q2FsbGVlQ2VsbCgpKQorICAgICAgICAmJiBIZWFwOjppc01hcmtlZCh2YXJpYW50LmRlc3BlY2lm
aWVkQ2xvc3VyZSgpLnJhd0NhbGxlZUNlbGwoKSk7Cit9CisKK2Jvb2wgQ2FsbEVkZ2VQcm9maWxl
Ojp3b3J0aERlc3BlY2lmeWluZygpCit7CisgICAgaWYgKG1fY2xvc3VyZXNBcmVEZXNwZWNpZmll
ZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghIW1fcHJpbWFyeUNhbGxl
ZSAmJiAhSlNDOjp3b3J0aERlc3BlY2lmeWluZyhtX3ByaW1hcnlDYWxsZWUpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5zaXplKCk7IGktLTsp
IHsKKyAgICAgICAgICAgIGlmICghSlNDOjp3b3J0aERlc3BlY2lmeWluZyhtX290aGVyQ2FsbGVl
cy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBD
YWxsRWRnZVByb2ZpbGU6OnZpc2l0V2VhaygpCit7CisgICAgaWYgKCFtX3ByaW1hcnlDYWxsZWUg
JiYgIW1fb3RoZXJDYWxsZWVzKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgQ29uY3VycmVu
dEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAKKyAgICAvLyBTZWUgaWYgYW55dGhpbmcg
aXMgZGVhZCBhbmQgaWYgdGhhdCBjYW4gYmUgcmVjdGlmaWVkIGJ5IGRlc3BlY2lmeWluZy4KKyAg
ICBpZiAod29ydGhEZXNwZWNpZnlpbmcoKSkgeworICAgICAgICBDYWxsU3BlY3RydW0gbmV3U3Bl
Y3RydW07CisgICAgICAgIAorICAgICAgICBpZiAoISFtX3ByaW1hcnlDYWxsZWUpCisgICAgICAg
ICAgICBuZXdTcGVjdHJ1bS5hZGQobV9wcmltYXJ5Q2FsbGVlLmRlc3BlY2lmaWVkQ2xvc3VyZSgp
LCBtX251bUNhbGxzVG9QcmltYXJ5KTsKKyAgICAgICAgCisgICAgICAgIGlmIChtX290aGVyQ2Fs
bGVlcykgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9vdGhlckNhbGxlZXMtPm1f
cHJvY2Vzc2VkLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgICAgIG5ld1NwZWN0cnVtLmFk
ZCgKKyAgICAgICAgICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNh
bGxlZSgpLmRlc3BlY2lmaWVkQ2xvc3VyZSgpLAorICAgICAgICAgICAgICAgICAgICBtX290aGVy
Q2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQoKSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgVmVjdG9yPENhbGxTcGVj
dHJ1bTo6S2V5QW5kQ291bnQ+IGxpc3QgPSBuZXdTcGVjdHJ1bS5idWlsZExpc3QoKTsKKyAgICAg
ICAgQVNTRVJUKGxpc3Quc2l6ZSgpKTsKKyAgICAgICAgbV9wcmltYXJ5Q2FsbGVlID0gbGlzdC5s
YXN0KCkua2V5OworICAgICAgICBtX251bUNhbGxzVG9QcmltYXJ5ID0gbGlzdC5sYXN0KCkuY291
bnQ7CisgICAgICAgIAorICAgICAgICBBU1NFUlQoISFtX290aGVyQ2FsbGVlcyA9PSAobGlzdC5z
aXplKCkgPj0gMikpOworICAgICAgICBpZiAobV9vdGhlckNhbGxlZXMpIHsKKyAgICAgICAgICAg
IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5jbGVhcigpOworICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbGlzdC5zaXplKCkgLSAxOyBpLS07KQorICAgICAgICAgICAgICAgIG1fb3Ro
ZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5hcHBlbmQoQ2FsbEVkZ2UobGlzdFtpXS5rZXksIGxpc3Rb
aV0uY291bnQpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbV9jbG9zdXJlc0FyZURl
c3BlY2lmaWVkID0gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
CisgICAgaWYgKCEhbV9wcmltYXJ5Q2FsbGVlICYmICFIZWFwOjppc01hcmtlZChtX3ByaW1hcnlD
YWxsZWUucmF3Q2FsbGVlQ2VsbCgpKSkgeworICAgICAgICBtX251bUNhbGxzVG9Vbmtub3duQ2Vs
bCArPSBtX251bUNhbGxzVG9QcmltYXJ5OworICAgICAgICAKKyAgICAgICAgbV9wcmltYXJ5Q2Fs
bGVlID0gQ2FsbFZhcmlhbnQoKTsKKyAgICAgICAgbV9udW1DYWxsc1RvUHJpbWFyeSA9IDA7Cisg
ICAgfQorICAgIAorICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLnNpemUoKTsgaSsrKSB7
CisgICAgICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQobV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vz
c2VkW2ldLmNhbGxlZSgpLnJhd0NhbGxlZUNlbGwoKSkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxsICs9
IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jb3VudCgpOworICAgICAgICAgICAgbV9v
dGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ktLV0gPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNz
ZWQubGFzdCgpOworICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLnJlbW92
ZUxhc3QoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gT25seSBleGlzdHMgd2hp
bGUgd2UgYXJlIHByb2Nlc3NpbmcgdGhlIGxvZy4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1f
b3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtKTsKKyAgICB9Cit9CisKK3ZvaWQgQ2Fs
bEVkZ2VQcm9maWxlOjphZGRTbG93KENhbGxWYXJpYW50IGNhbGxlZSwgQ2FsbEVkZ2VQcm9maWxl
VmVjdG9yJiBtZXJnZUJhY2tMb2cpCit7CisgICAgLy8gVGhpcyBleGlzdHMgdG8gaGFuZGxlIGNh
c2VzIHdoZXJlIHRoZSBzcGVjdHJ1bSB3YXNuJ3QgY3JlYXRlZCB5ZXQsIG9yIHdlJ3JlIHN0b3Jp
bmcgdG8gYQorICAgIC8vIHBhcnRpY3VsYXIgc3BlY3RydW0gZm9yIHRoZSBmaXJzdCB0aW1lIGR1
cmluZyBhIGxvZyBwcm9jZXNzaW5nIGl0ZXJhdGlvbi4KKyAgICAKKyAgICBpZiAoIW1fb3RoZXJD
YWxsZWVzKSB7CisgICAgICAgIG1fb3RoZXJDYWxsZWVzID0gc3RkOjptYWtlX3VuaXF1ZTxTZWNv
bmRhcnk+KCk7CisgICAgICAgIC8vIElmIGEgY29tcGlsZXIgdGhyZWFkIG5vdGljZXMgdGhlIG1f
b3RoZXJDYWxsZWVzIGJlaW5nIG5vbi1udWxsLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZQorICAgICAg
ICAvLyB0aGF0IGl0IHNlZXMgYSBmdWxseSBjcmVhdGVkIG9uZS4KKyAgICAgICAgV1RGOjpzdG9y
ZVN0b3JlRmVuY2UoKTsKKyAgICB9CisgICAgCisgICAgaWYgKCFtX290aGVyQ2FsbGVlcy0+bV90
ZW1wb3JhcnlTcGVjdHJ1bSkgeworICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlT
cGVjdHJ1bSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbFNwZWN0cnVtPigpOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpLS07KSB7
CisgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+YWRkKAor
ICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jYWxsZWUoKSwK
KyAgICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQoKSk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlzIGlz
IHRoZSBmaXJzdCB0aW1lIHdlJ3JlIHNlZWluZyB0aGlzIHByb2ZpbGUgZHVyaW5nIHRoaXMgbG9n
CisgICAgICAgIC8vIHByb2Nlc3NpbmcgaXRlcmF0aW9uLgorICAgICAgICBtZXJnZUJhY2tMb2cu
YXBwZW5kKHRoaXMpOworICAgIH0KKyAgICAKKyAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3Jh
cnlTcGVjdHJ1bS0+YWRkKGNhbGxlZSk7Cit9CisKK3ZvaWQgQ2FsbEVkZ2VQcm9maWxlOjptZXJn
ZUJhY2soKQoreworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAg
CisgICAgQVNTRVJUKG1fb3RoZXJDYWxsZWVzKTsKKyAgICBBU1NFUlQobV9vdGhlckNhbGxlZXMt
Pm1fdGVtcG9yYXJ5U3BlY3RydW0pOworICAgIAorICAgIGlmICghIW1fcHJpbWFyeUNhbGxlZSkK
KyAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0tPmFkZChtX3ByaW1h
cnlDYWxsZWUsIG1fbnVtQ2FsbHNUb1ByaW1hcnkpOworICAgIAorICAgIGlmICghbV9jbG9zdXJl
c0FyZURlc3BlY2lmaWVkKSB7CisgICAgICAgIENhbGxTcGVjdHJ1bSBuZXdTcGVjdHJ1bTsKKyAg
ICAgICAgZm9yIChhdXRvIGVudHJ5IDogKm1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0
cnVtKQorICAgICAgICAgICAgbmV3U3BlY3RydW0uYWRkKGVudHJ5LmtleS5kZXNwZWNpZmllZENs
b3N1cmUoKSwgZW50cnkudmFsdWUpOworICAgICAgICAKKyAgICAgICAgaWYgKG5ld1NwZWN0cnVt
LnNpemUoKSA8IG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5zaXplKCkpIHsK
KyAgICAgICAgICAgICptX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSA9IG5ld1Nw
ZWN0cnVtOworICAgICAgICAgICAgbV9jbG9zdXJlc0FyZURlc3BlY2lmaWVkID0gdHJ1ZTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICAKKyAgICBWZWN0b3I8Q2FsbFNwZWN0cnVtOjpLZXlBbmRDb3Vu
dD4gbGlzdCA9IG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5idWlsZExpc3Qo
KTsKKyAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSA9IG51bGxwdHI7Cisg
ICAgCisgICAgbV9wcmltYXJ5Q2FsbGVlID0gbGlzdC5sYXN0KCkua2V5OworICAgIG1fbnVtQ2Fs
bHNUb1ByaW1hcnkgPSBsaXN0Lmxhc3QoKS5jb3VudDsKKyAgICBsaXN0LnJlbW92ZUxhc3QoKTsK
KyAgICAKKyAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuY2xlYXIoKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGNvdW50ID0gbWF4S25vd25DYWxsZWVzOyBjb3VudC0tICYmICFsaXN0LmlzRW1w
dHkoKTspIHsKKyAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLmFwcGVuZChDYWxs
RWRnZShsaXN0Lmxhc3QoKS5rZXksIGxpc3QubGFzdCgpLmNvdW50KSk7CisgICAgICAgIGxpc3Qu
cmVtb3ZlTGFzdCgpOworICAgIH0KKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBsaXN0LnNp
emUoKTsgaS0tOykKKyAgICAgICAgbV9udW1DYWxsc1RvVW5rbm93bkNlbGwgKz0gbGlzdFtpXS5j
b3VudDsKK30KKwordm9pZCBDYWxsRWRnZVByb2ZpbGU6OmZhZGVCeUhhbGYoKQoreworICAgIG1f
bnVtQ2FsbHNUb1ByaW1hcnkgPj49IDE7CisgICAgbV9udW1DYWxsc1RvTm90Q2VsbCA+Pj0gMTsK
KyAgICBtX251bUNhbGxzVG9Vbmtub3duQ2VsbCA+Pj0gMTsKKyAgICBtX3RvdGFsQ291bnQgPj49
IDE7CisgICAgCisgICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5zaXplKCk7IGktLTspIHsKKyAgICAg
ICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXSA9IENhbGxFZGdlKAorICAgICAg
ICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jYWxsZWUoKSwKKyAgICAg
ICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQoKSA+PiAxKTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBv
cmFyeVNwZWN0cnVtKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiAqbV9vdGhlckNh
bGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0pCisgICAgICAgICAgICAgICAgZW50cnkudmFsdWUg
Pj49IDE7CisgICAgICAgIH0KKyAgICB9Cit9CisKK0NhbGxFZGdlTG9nOjpDYWxsRWRnZUxvZygp
CisgICAgOiBtX3NjYWxlZExvZ0luZGV4KGxvZ1NpemUgKiBzaXplb2YoRW50cnkpKQoreworICAg
IEFTU0VSVCghKG1fc2NhbGVkTG9nSW5kZXggJSBzaXplb2YoRW50cnkpKSk7Cit9CisKK0NhbGxF
ZGdlTG9nOjp+Q2FsbEVkZ2VMb2coKSB7IH0KKworYm9vbCBDYWxsRWRnZUxvZzo6aXNFbmFibGVk
KCkKK3sKKyAgICByZXR1cm4gT3B0aW9uczo6ZW5hYmxlQ2FsbEVkZ2VQcm9maWxpbmcoKSAmJiBP
cHRpb25zOjp1c2VGVExKSVQoKTsKK30KKworI2lmIEVOQUJMRShKSVQpCisKK2V4dGVybiAiQyIg
SklUX09QRVJBVElPTiB2b2lkIG9wZXJhdGlvblByb2Nlc3NDYWxsRWRnZUxvZyhDYWxsRWRnZUxv
ZyopIFdURl9JTlRFUk5BTDsKK2V4dGVybiAiQyIgSklUX09QRVJBVElPTiB2b2lkIG9wZXJhdGlv
blByb2Nlc3NDYWxsRWRnZUxvZyhDYWxsRWRnZUxvZyogbG9nKQoreworICAgIGxvZy0+cHJvY2Vz
c0xvZygpOworfQorCit2b2lkIENhbGxFZGdlTG9nOjplbWl0TG9nQ29kZShDQ2FsbEhlbHBlcnMm
IGppdCwgQ2FsbEVkZ2VQcm9maWxlJiBwcm9maWxlLCBKU1ZhbHVlUmVncyBjYWxsZWVSZWdzKQor
eworICAgIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzID0gMTsKKyAgICAKKyAgICBH
UFJSZWcgc2NyYXRjaEdQUjsKKyAgICBpZiAoIWNhbGxlZVJlZ3MudXNlcyhHUFJJbmZvOjpyZWdU
MCkpCisgICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJbmZvOjpyZWdUMDsKKyAgICBlbHNlIGlmICgh
Y2FsbGVlUmVncy51c2VzKEdQUkluZm86OnJlZ1QxKSkKKyAgICAgICAgc2NyYXRjaEdQUiA9IEdQ
UkluZm86OnJlZ1QxOworICAgIGVsc2UKKyAgICAgICAgc2NyYXRjaEdQUiA9IEdQUkluZm86OnJl
Z1QyOworICAgIAorICAgIGppdC5sb2FkMzIoJm1fc2NhbGVkTG9nSW5kZXgsIHNjcmF0Y2hHUFIp
OworICAgIAorICAgIENDYWxsSGVscGVyczo6SnVtcCBvayA9IGppdC5icmFuY2hUZXN0MzIoQ0Nh
bGxIZWxwZXJzOjpOb25aZXJvLCBzY3JhdGNoR1BSKTsKKyAgICAKKyAgICBBU1NFUlRfVU5VU0VE
KG51bWJlck9mQXJndW1lbnRzLCBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpID49IDEgKyBudW1i
ZXJPZkFyZ3VtZW50cyk7CisgICAgCisgICAgaml0LnN1YlB0cihDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihzdGFja0FsaWdubWVudEJ5dGVzKCkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRl
clJlZ2lzdGVyKTsKKyAgICAKKyAgICBqaXQuc3RvcmVWYWx1ZShjYWxsZWVSZWdzLCBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2l6ZW9m
KEpTVmFsdWUpKSk7CisgICAgaml0LnNldHVwQXJndW1lbnRzKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cih0aGlzKSk7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGJpdHdpc2VfY2FzdDx2b2lkKj4ob3BlcmF0aW9uUHJvY2Vzc0NhbGxFZGdlTG9nKSksIEdQUklu
Zm86Om5vbkFyZ0dQUjApOworICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjApOworICAg
IGppdC5sb2FkVmFsdWUoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIsIHNpemVvZihKU1ZhbHVlKSksIGNhbGxlZVJlZ3MpOworICAgIAorICAg
IGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhY2tBbGlnbm1lbnRCeXRl
cygpKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgCisgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobG9nU2l6ZSAqIHNpemVvZihFbnRyeSkp
LCBzY3JhdGNoR1BSKTsKKyAgICBvay5saW5rKCZqaXQpOworCisgICAgaml0LnN1YjMyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKHNpemVvZihFbnRyeSkpLCBzY3JhdGNoR1BSKTsKKyAgICBq
aXQuc3RvcmUzMihzY3JhdGNoR1BSLCAmbV9zY2FsZWRMb2dJbmRleCk7CisgICAgaml0LmFkZFB0
cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9sb2cpLCBzY3JhdGNoR1BSKTsKKyAgICBq
aXQuc3RvcmVWYWx1ZShjYWxsZWVSZWdzLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQ
UiwgT0JKRUNUX09GRlNFVE9GKEVudHJ5LCBtX3ZhbHVlKSkpOworICAgIGppdC5zdG9yZVB0cihD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJnByb2ZpbGUpLCBDQ2FsbEhlbHBlcnM6OkFkZHJl
c3Moc2NyYXRjaEdQUiwgT0JKRUNUX09GRlNFVE9GKEVudHJ5LCBtX3Byb2ZpbGUpKSk7Cit9CisK
K3ZvaWQgQ2FsbEVkZ2VMb2c6OmVtaXRMb2dDb2RlKAorICAgIENDYWxsSGVscGVycyYgaml0LCBP
d25QdHI8Q2FsbEVkZ2VQcm9maWxlPiYgcHJvZmlsZVBvaW50ZXIsIEpTVmFsdWVSZWdzIGNhbGxl
ZVJlZ3MpCit7CisgICAgaWYgKCFpc0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAor
ICAgIHByb2ZpbGVQb2ludGVyLmNyZWF0ZVRyYW5zYWN0aW9uYWxseSgpOworICAgIGVtaXRMb2dD
b2RlKGppdCwgKnByb2ZpbGVQb2ludGVyLCBjYWxsZWVSZWdzKTsKK30KKworI2VuZGlmIC8vIEVO
QUJMRShKSVQpCisKK3ZvaWQgQ2FsbEVkZ2VMb2c6OnByb2Nlc3NMb2coKQoreworICAgIEFTU0VS
VCghKG1fc2NhbGVkTG9nSW5kZXggJSBzaXplb2YoRW50cnkpKSk7CisgICAgCisgICAgaWYgKE9w
dGlvbnM6OmNhbGxFZGdlUHJvZmlsZVJlYWxseVByb2Nlc3Nlc0xvZygpKSB7CisgICAgICAgIENh
bGxFZGdlUHJvZmlsZVZlY3RvciBtZXJnZUJhY2tMb2c7CisgICAgICAgIAorICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBtX3NjYWxlZExvZ0luZGV4IC8gc2l6ZW9mKEVudHJ5KTsgaSA8IGxvZ1Np
emU7ICsraSkKKyAgICAgICAgICAgIG1fbG9nW2ldLm1fcHJvZmlsZS0+YWRkKG1fbG9nW2ldLm1f
dmFsdWUsIG1lcmdlQmFja0xvZyk7CisgICAgICAgIAorICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBtZXJnZUJhY2tMb2cuc2l6ZSgpOyBpLS07KQorICAgICAgICAgICAgbWVyZ2VCYWNrTG9nW2ld
LT5tZXJnZUJhY2soKTsKKyAgICB9CisgICAgCisgICAgbV9zY2FsZWRMb2dJbmRleCA9IGxvZ1Np
emUgKiBzaXplb2YoRW50cnkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2Zp
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzMCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENhbGxFZGdlUHJvZmlsZV9oCisj
ZGVmaW5lIENhbGxFZGdlUHJvZmlsZV9oCisKKyNpbmNsdWRlICJDYWxsRWRnZS5oIgorI2luY2x1
ZGUgIkNhbGxWYXJpYW50LmgiCisjaW5jbHVkZSAiQ29uY3VycmVudEpJVExvY2suaCIKKyNpbmNs
dWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBDQ2FsbEhlbHBlcnM7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisK
K2NsYXNzIENhbGxFZGdlTG9nOworY2xhc3MgQ2FsbEVkZ2VQcm9maWxlOwordHlwZWRlZiBWZWN0
b3I8Q2FsbEVkZ2VQcm9maWxlKiwgMTA+IENhbGxFZGdlUHJvZmlsZVZlY3RvcjsKKworY2xhc3Mg
Q2FsbEVkZ2VQcm9maWxlIHsKK3B1YmxpYzoKKyAgICBDYWxsRWRnZVByb2ZpbGUoKTsKKyAgICAK
KyAgICBDYWxsRWRnZUNvdW50VHlwZSBudW1DYWxsc1RvTm90Q2VsbCgpIGNvbnN0IHsgcmV0dXJu
IG1fbnVtQ2FsbHNUb05vdENlbGw7IH0KKyAgICBDYWxsRWRnZUNvdW50VHlwZSBudW1DYWxsc1Rv
VW5rbm93bkNlbGwoKSBjb25zdCB7IHJldHVybiBtX251bUNhbGxzVG9Vbmtub3duQ2VsbDsgfQor
ICAgIENhbGxFZGdlQ291bnRUeXBlIG51bUNhbGxzVG9Lbm93bkNlbGxzKCkgY29uc3Q7CisgICAg
CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgdG90YWxDYWxscygpIGNvbnN0IHsgcmV0dXJuIG1fdG90
YWxDb3VudDsgfQorICAgIAorICAgIC8vIENhbGwgd2hpbGUgaG9sZGluZyB0aGUgb3duaW5nIENv
ZGVCbG9jaydzIGxvY2suCisgICAgQ2FsbEVkZ2VMaXN0IGNhbGxFZGdlcygpIGNvbnN0OworICAg
IAorICAgIHZvaWQgdmlzaXRXZWFrKCk7CisgICAgCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFz
cyBDYWxsRWRnZUxvZzsKKyAgICAKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4S25vd25D
YWxsZWVzID0gNTsKKyAgICAKKyAgICB2b2lkIGFkZChKU1ZhbHVlLCBDYWxsRWRnZVByb2ZpbGVW
ZWN0b3ImIG1lcmdlQmFja0xvZyk7CisgICAgCisgICAgYm9vbCB3b3J0aERlc3BlY2lmeWluZygp
OworICAgIHZvaWQgYWRkU2xvdyhDYWxsVmFyaWFudCwgQ2FsbEVkZ2VQcm9maWxlVmVjdG9yJiBt
ZXJnZUJhY2tMb2cpOworICAgIHZvaWQgbWVyZ2VCYWNrKCk7CisgICAgdm9pZCBmYWRlQnlIYWxm
KCk7CisgICAgCisgICAgLy8gSXQncyBjaGVhcGVyIHRvIGxldCB0aGlzIGhhdmUgaXRzIG93biBs
b2NrLiBJdCBuZWVkcyB0byBiZSBhYmxlIHRvIGZpbmQgd2hpY2ggbG9jayB0bworICAgIC8vIGxv
Y2suIE5vcm1hbGx5IGl0IHdvdWxkIGxvY2sgdGhlIG93bmluZyBDb2RlQmxvY2sncyBsb2NrLCBi
dXQgdGhhdCB3b3VsZCByZXF1aXJlIGEKKyAgICAvLyBwb2ludGVyLXdpZHRoIHdvcmQgdG8gcG9p
bnQgYXQgdGhlIENvZGVCbG9jay4gSGF2aW5nIHRoZSBieXRlLXNpemVkIGxvY2sgaGVyZSBpcwor
ICAgIC8vIGNoZWFwZXIuIEhvd2V2ZXIsIHRoaXMgbWVhbnMgdGhhdCB0aGUgcmVsYXRpb25zaGlw
IHdpdGggdGhlIENvZGVCbG9jayBsb2NrIGlzOgorICAgIC8vIGFjcXVpcmUgdGhlIENvZGVCbG9j
ayBsb2NrIGJlZm9yZSB0aGlzIG9uZS4KKyAgICBtdXRhYmxlIENvbmN1cnJlbnRKSVRMb2NrIG1f
bG9jazsKKyAgICAKKyAgICBib29sIG1fY2xvc3VyZXNBcmVEZXNwZWNpZmllZDsKKyAgICAKKyAg
ICBDYWxsRWRnZUNvdW50VHlwZSBtX251bUNhbGxzVG9QcmltYXJ5OworICAgIENhbGxFZGdlQ291
bnRUeXBlIG1fbnVtQ2FsbHNUb05vdENlbGw7CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbV9udW1D
YWxsc1RvVW5rbm93bkNlbGw7CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbV90b3RhbENvdW50Owor
ICAgIENhbGxWYXJpYW50IG1fcHJpbWFyeUNhbGxlZTsKKyAgICAKKyAgICB0eXBlZGVmIFNwZWN0
cnVtPENhbGxWYXJpYW50LCBDYWxsRWRnZUNvdW50VHlwZT4gQ2FsbFNwZWN0cnVtOworICAgIAor
ICAgIHN0cnVjdCBTZWNvbmRhcnkgeworICAgICAgICBWZWN0b3I8Q2FsbEVkZ2U+IG1fcHJvY2Vz
c2VkOyAvLyBQcm9jZXNzZWQgYnV0IG5vdCBuZWNlc3NhcmlseSBzb3J0ZWQuCisgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxDYWxsU3BlY3RydW0+IG1fdGVtcG9yYXJ5U3BlY3RydW07CisgICAgfTsK
KyAgICAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Vjb25kYXJ5PiBtX290aGVyQ2FsbGVlczsKK307
CisKK2NsYXNzIENhbGxFZGdlTG9nIHsKK3B1YmxpYzoKKyAgICBDYWxsRWRnZUxvZygpOworICAg
IH5DYWxsRWRnZUxvZygpOworCisgICAgc3RhdGljIGJvb2wgaXNFbmFibGVkKCk7CisgICAgCisj
aWYgRU5BQkxFKEpJVCkKKyAgICB2b2lkIGVtaXRMb2dDb2RlKENDYWxsSGVscGVycyYsIENhbGxF
ZGdlUHJvZmlsZSYsIEpTVmFsdWVSZWdzIGNhbGxlZVJlZ3MpOyAvLyBBc3N1bWVzIHRoYXQgc3Rh
Y2sgaXMgYWxpZ25lZCwgYWxsIHZvbGF0aWxlIHJlZ2lzdGVycyAtIG90aGVyIHRoYW4gY2FsbGVl
R1BSIC0gYXJlIGNsb2JiZXJhYmxlLCBhbmQgdGhlIHBhcmFtZXRlciBzcGFjZSBpcyBpbiB1c2Uu
CisgICAgCisgICAgLy8gU2FtZSBhcyBhYm92ZSBidXQgY3JlYXRlcyBhIENhbGxFZGdlUHJvZmls
ZSBpbnN0YW5jZSBpZiBvbmUgZGlkIG5vdCBhbHJlYWR5IGV4aXN0LiBEb2VzCisgICAgLy8gdGhp
cyBpbiBhIHRocmVhZC1zYWZlIG1hbm5lciBieSBjYWxsaW5nIE93blB0cjo6Y3JlYXRlVHJhbnNh
Y3Rpb25hbGx5LgorICAgIHZvaWQgZW1pdExvZ0NvZGUoQ0NhbGxIZWxwZXJzJiwgT3duUHRyPENh
bGxFZGdlUHJvZmlsZT4mLCBKU1ZhbHVlUmVncyBjYWxsZWVSZWdzKTsKKyNlbmRpZiAvLyBFTkFC
TEUoSklUKQorICAgIAorICAgIHZvaWQgcHJvY2Vzc0xvZygpOworICAgIAorcHJpdmF0ZToKKyAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGxvZ1NpemUgPSAxMDAwMDsKKyAgICAKKyAgICBzdHJ1Y3QgRW50cnkgeworICAg
ICAgICBKU1ZhbHVlIG1fdmFsdWU7CisgICAgICAgIENhbGxFZGdlUHJvZmlsZSogbV9wcm9maWxl
OworICAgIH07CisgICAgCisgICAgdW5zaWduZWQgbV9zY2FsZWRMb2dJbmRleDsKKyAgICBFbnRy
eSBtX2xvZ1tsb2dTaXplXTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8g
Q2FsbEVkZ2VQcm9maWxlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxFZGdlUHJvZmlsZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZUlubGluZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ2FsbEVkZ2VQcm9maWxlSW5saW5lc19oCisj
ZGVmaW5lIENhbGxFZGdlUHJvZmlsZUlubGluZXNfaAorCisjaW5jbHVkZSAiQ2FsbEVkZ2VQcm9m
aWxlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitpbmxpbmUgQ2FsbEVkZ2VQcm9maWxlOjpDYWxs
RWRnZVByb2ZpbGUoKQorICAgIDogbV9jbG9zdXJlc0FyZURlc3BlY2lmaWVkKGZhbHNlKQorICAg
ICwgbV9udW1DYWxsc1RvUHJpbWFyeSgwKQorICAgICwgbV9udW1DYWxsc1RvTm90Q2VsbCgwKQor
ICAgICwgbV9udW1DYWxsc1RvVW5rbm93bkNlbGwoMCkKKyAgICAsIG1fdG90YWxDb3VudCgwKQor
ICAgICwgbV9wcmltYXJ5Q2FsbGVlKG51bGxwdHIpCit7Cit9CisKK0FMV0FZU19JTkxJTkUgdm9p
ZCBDYWxsRWRnZVByb2ZpbGU6OmFkZChKU1ZhbHVlIHZhbHVlLCBDYWxsRWRnZVByb2ZpbGVWZWN0
b3ImIG1lcmdlQmFja0xvZykKK3sKKyAgICB1bnNpZ25lZCBuZXdUb3RhbENvdW50ID0gbV90b3Rh
bENvdW50ICsgMTsKKyAgICBpZiAoVU5MSUtFTFkoIW5ld1RvdGFsQ291bnQpKSB7CisgICAgICAg
IGZhZGVCeUhhbGYoKTsgLy8gVGFja2xlIG92ZXJmbG93cyBieSBkaXZpZGluZyBhbGwgY291bnRz
IGJ5IHR3by4KKyAgICAgICAgbmV3VG90YWxDb3VudCA9IG1fdG90YWxDb3VudCArIDE7CisgICAg
fQorICAgIEFTU0VSVChuZXdUb3RhbENvdW50KTsKKyAgICBtX3RvdGFsQ291bnQgPSBuZXdUb3Rh
bENvdW50OworICAgIAorICAgIGlmIChVTkxJS0VMWSghdmFsdWUuaXNDZWxsKCkpKSB7CisgICAg
ICAgIG1fbnVtQ2FsbHNUb05vdENlbGwrKzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IENhbGxWYXJpYW50IGNhbGxlZSA9IENhbGxWYXJpYW50KHZhbHVlLmFzQ2VsbCgpKTsKKyAgICAK
KyAgICBpZiAobV9jbG9zdXJlc0FyZURlc3BlY2lmaWVkKQorICAgICAgICBjYWxsZWUgPSBjYWxs
ZWUuZGVzcGVjaWZpZWRDbG9zdXJlKCk7CisgICAgCisgICAgaWYgKFVOTElLRUxZKCFtX3ByaW1h
cnlDYWxsZWUpKSB7CisgICAgICAgIG1fcHJpbWFyeUNhbGxlZSA9IGNhbGxlZTsKKyAgICAgICAg
bV9udW1DYWxsc1RvUHJpbWFyeSA9IDE7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAg
IAorICAgIGlmIChMSUtFTFkobV9wcmltYXJ5Q2FsbGVlID09IGNhbGxlZSkpIHsKKyAgICAgICAg
bV9udW1DYWxsc1RvUHJpbWFyeSsrOworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAK
KyAgICBpZiAoVU5MSUtFTFkoIW1fb3RoZXJDYWxsZWVzKSkgeworICAgICAgICBhZGRTbG93KGNh
bGxlZSwgbWVyZ2VCYWNrTG9nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisg
ICAgQ2FsbFNwZWN0cnVtKiBzZWNvbmRhcnkgPSBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlT
cGVjdHJ1bS5nZXQoKTsKKyAgICBpZiAoIXNlY29uZGFyeSkgeworICAgICAgICBhZGRTbG93KGNh
bGxlZSwgbWVyZ2VCYWNrTG9nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisg
ICAgc2Vjb25kYXJ5LT5hZGQoY2FsbGVlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNl
bmRpZiAvLyBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAJKHJldmlzaW9uIDE3Mjg1OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Myw2ICs4MywxMSBAQCB2b2lkIENhbGxMaW5rSW5mbzo6dmlzaXRXZWFr
KFJlcGF0Y2hCdWZmCiAgICAgfQogICAgIGlmICghIWxhc3RTZWVuQ2FsbGVlICYmICFIZWFwOjpp
c01hcmtlZChsYXN0U2VlbkNhbGxlZS5nZXQoKSkpCiAgICAgICAgIGxhc3RTZWVuQ2FsbGVlLmNs
ZWFyKCk7CisgICAgCisgICAgaWYgKGNhbGxFZGdlUHJvZmlsZSkgeworICAgICAgICBXVEY6Omxv
YWRMb2FkRmVuY2UoKTsKKyAgICAgICAgY2FsbEVkZ2VQcm9maWxlLT52aXNpdFdlYWsoKTsKKyAg
ICB9CiB9CiAKIENhbGxMaW5rSW5mbyYgQ2FsbExpbmtJbmZvOjpkdW1teSgpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAx
NzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgQ2FsbExpbmtJbmZvX2gK
ICNkZWZpbmUgQ2FsbExpbmtJbmZvX2gKIAorI2luY2x1ZGUgIkNhbGxFZGdlUHJvZmlsZS5oIgog
I2luY2x1ZGUgIkNsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaCIKICNpbmNsdWRlICJDb2RlTG9jYXRp
b24uaCIKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCkBAIC0zMyw2ICszNCw3
IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1
ZGUgIldyaXRlQmFycmllci5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtODgsNiArOTAs
NyBAQCBzdHJ1Y3QgQ2FsbExpbmtJbmZvIDogcHVibGljIEJhc2ljUmF3U2VuCiAgICAgdW5zaWdu
ZWQgY2FsbGVlR1BSIDogODsKICAgICB1bnNpZ25lZCBzbG93UGF0aENvdW50OwogICAgIENvZGVP
cmlnaW4gY29kZU9yaWdpbjsKKyAgICBPd25QdHI8Q2FsbEVkZ2VQcm9maWxlPiBjYWxsRWRnZVBy
b2ZpbGU7CiAKICAgICBib29sIGlzTGlua2VkKCkgeyByZXR1cm4gc3R1YiB8fCBjYWxsZWU7IH0K
ICAgICB2b2lkIHVubGluayhSZXBhdGNoQnVmZmVyJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHJldmlzaW9uIDE3Mjg1
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDU0ICszMiwyMiBAQAogI2luY2x1ZGUgIkxMSW50Q2FsbExp
bmtJbmZvLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVBy
aW50ZXIuaD4KKyNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAK
IHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKIAogQ2FsbExpbmtTdGF0dXM6OkNh
bGxMaW5rU3RhdHVzKEpTVmFsdWUgdmFsdWUpCi0gICAgOiBtX2NhbGxUYXJnZXQodmFsdWUpCi0g
ICAgLCBtX2V4ZWN1dGFibGUoMCkKLSAgICAsIG1fY291bGRUYWtlU2xvd1BhdGgoZmFsc2UpCisg
ICAgOiBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQogICAgICwgbV9pc1Byb3ZlZChmYWxzZSkK
IHsKLSAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS5pc0NlbGwoKSkKKyAgICBpZiAoIXZhbHVlIHx8
ICF2YWx1ZS5pc0NlbGwoKSkgeworICAgICAgICBtX2NvdWxkVGFrZVNsb3dQYXRoID0gdHJ1ZTsK
ICAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAKLSAgICBpZiAoIXZhbHVlLmFzQ2VsbCgpLT5p
bmhlcml0cyhKU0Z1bmN0aW9uOjppbmZvKCkpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAg
bV9leGVjdXRhYmxlID0ganNDYXN0PEpTRnVuY3Rpb24qPih2YWx1ZS5hc0NlbGwoKSktPmV4ZWN1
dGFibGUoKTsKLX0KLQotSlNGdW5jdGlvbiogQ2FsbExpbmtTdGF0dXM6OmZ1bmN0aW9uKCkgY29u
c3QKLXsKLSAgICBpZiAoIW1fY2FsbFRhcmdldCB8fCAhbV9jYWxsVGFyZ2V0LmlzQ2VsbCgpKQot
ICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBpZiAoIW1fY2FsbFRhcmdldC5hc0NlbGwoKS0+
aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0g
ICAgcmV0dXJuIGpzQ2FzdDxKU0Z1bmN0aW9uKj4obV9jYWxsVGFyZ2V0LmFzQ2VsbCgpKTsKLX0K
LQotSW50ZXJuYWxGdW5jdGlvbiogQ2FsbExpbmtTdGF0dXM6OmludGVybmFsRnVuY3Rpb24oKSBj
b25zdAotewotICAgIGlmICghbV9jYWxsVGFyZ2V0IHx8ICFtX2NhbGxUYXJnZXQuaXNDZWxsKCkp
Ci0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIGlmICghbV9jYWxsVGFyZ2V0LmFzQ2VsbCgp
LT5pbmhlcml0cyhJbnRlcm5hbEZ1bmN0aW9uOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gMDsK
LSAgICAKLSAgICByZXR1cm4ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihtX2NhbGxUYXJnZXQu
YXNDZWxsKCkpOwotfQotCi1JbnRyaW5zaWMgQ2FsbExpbmtTdGF0dXM6OmludHJpbnNpY0ZvcihD
b2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2V4ZWN1dGFi
bGUpCi0gICAgICAgIHJldHVybiBOb0ludHJpbnNpYzsKLSAgICAKLSAgICByZXR1cm4gbV9leGVj
dXRhYmxlLT5pbnRyaW5zaWNGb3Ioa2luZCk7CisgICAgbV9lZGdlcy5hcHBlbmQoQ2FsbEVkZ2Uo
Q2FsbFZhcmlhbnQodmFsdWUuYXNDZWxsKCkpLCAxKSk7CiB9CiAKIENhbGxMaW5rU3RhdHVzIENh
bGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXIm
IGxvY2tlciwgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4
KQpAQCAtODcsNyArNTUsNyBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0
ZUZyCiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShi
eXRlY29kZUluZGV4KTsKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAocHJvZmlsZWRCbG9j
ay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRl
eCwgQmFkRnVuY3Rpb24pKSkgeworICAgIGlmIChwcm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0ZShs
b2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDZWxsKSkpIHsK
ICAgICAgICAgLy8gV2UgY291bGQgZm9yY2UgdGhpcyB0byBiZSBhIGNsb3N1cmUgY2FsbCwgYnV0
IGluc3RlYWQgd2UnbGwganVzdCBhc3N1bWUgdGhhdCBpdAogICAgICAgICAvLyB0YWtlcyBzbG93
IHBhdGguCiAgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7CkBAIC0xMjUsNyArOTMsNyBA
QCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvCiAgICAgaWYgKCFjYWxs
TGlua0luZm8pCiAgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KGxvY2tlciwgcHJvZmls
ZWRCbG9jaywgYnl0ZWNvZGVJbmRleCk7CiAgICAgCi0gICAgcmV0dXJuIGNvbXB1dGVGb3IobG9j
a2VyLCAqY2FsbExpbmtJbmZvLCBleGl0U2l0ZURhdGEpOworICAgIHJldHVybiBjb21wdXRlRm9y
KGxvY2tlciwgcHJvZmlsZWRCbG9jaywgKmNhbGxMaW5rSW5mbywgZXhpdFNpdGVEYXRhKTsKICNl
bHNlCiAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKCk7CiAjZW5kaWYKQEAgLTEzOSwxMCArMTA3
LDEwIEBAIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgQ2FsbExpbmtTdGEKICAgICAKICNp
ZiBFTkFCTEUoREZHX0pJVCkKICAgICBleGl0U2l0ZURhdGEubV90YWtlc1Nsb3dQYXRoID0KLSAg
ICAgICAgcHJvZmlsZWRCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhp
dFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkQ2FjaGUsIGV4aXRpbmdKSVRUeXBlKSkKKyAgICAgICAg
cHJvZmlsZWRCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUo
Ynl0ZWNvZGVJbmRleCwgQmFkVHlwZSwgZXhpdGluZ0pJVFR5cGUpKQogICAgICAgICB8fCBwcm9m
aWxlZEJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRl
Y29kZUluZGV4LCBCYWRFeGVjdXRhYmxlLCBleGl0aW5nSklUVHlwZSkpOwogICAgIGV4aXRTaXRl
RGF0YS5tX2JhZEZ1bmN0aW9uID0KLSAgICAgICAgcHJvZmlsZWRCbG9jay0+aGFzRXhpdFNpdGUo
bG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkRnVuY3Rpb24s
IGV4aXRpbmdKSVRUeXBlKSk7CisgICAgICAgIHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxv
Y2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENlbGwsIGV4aXRp
bmdKSVRUeXBlKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShsb2NrZXIpOwogICAgIFVOVVNF
RF9QQVJBTShwcm9maWxlZEJsb2NrKTsKQEAgLTE1NCw3ICsxMjIsMzQgQEAgQ2FsbExpbmtTdGF0
dXM6OkV4aXRTaXRlRGF0YSBDYWxsTGlua1N0YQogfQogCiAjaWYgRU5BQkxFKEpJVCkKLUNhbGxM
aW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKGNvbnN0IENvbmN1cnJlbnRKSVRM
b2NrZXImLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykKK0NhbGxMaW5rU3RhdHVzIENhbGxM
aW5rU3RhdHVzOjpjb21wdXRlRm9yKAorICAgIGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxv
Y2tlciwgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5m
bykKK3sKKyAgICAvLyBXZSBkb24ndCByZWFsbHkgbmVlZCB0aGlzLCBidXQgYW55dGltZSB3ZSBo
YXZlIHRvIGRlYnVnIHRoaXMgY29kZSwgaXQgYmVjb21lcyBpbmRpc3BlbnNhYmxlLgorICAgIFVO
VVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKKyAgICAKKyAgICBpZiAoT3B0aW9uczo6Y2FsbFN0
YXR1c1Nob3VsZFVzZUNhbGxFZGdlUHJvZmlsZSgpKSB7CisgICAgICAgIC8vIEFsd2F5cyB0cnVz
dCB0aGUgY2FsbCBlZGdlIHByb2ZpbGUgb3ZlciBhbnl0aGluZyBlbHNlIHNpbmNlIHRoaXMgaGFz
IHByZWNpc2UgY291bnRzLgorICAgICAgICAvLyBJdCBjYW4gbWFrZSB0aGUgYmVzdCBwb3NzaWJs
ZSBkZWNpc2lvbiBiZWNhdXNlIGl0IG5ldmVyICJmb3JnZXRzIiB3aGF0IGhhcHBlbmVkIGZvciBh
bnkKKyAgICAgICAgLy8gY2FsbCwgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIGZhZGluZyBvdXQgdGhl
IGNvdW50cyBvZiBvbGQgY2FsbHMgKGZvciBleGFtcGxlIGlmIHRoZQorICAgICAgICAvLyBjb3Vu
dGVyIHR5cGUgaXMgMTYtYml0IHRoZW4gY2FsbHMgdGhhdCBoYXBwZW5lZCBtb3JlIHRoYW4gMl4x
NiBjYWxscyBhZ28gYXJlIGdpdmVuIGhhbGYKKyAgICAgICAgLy8gd2VpZ2h0LCBhbmQgdGhpcyBj
b21wb3VuZHMgZm9yIGV2ZXJ5IDJeMTUgW3NpY10gY2FsbHMgYWZ0ZXIgdGhhdCkuIFRoZSBjb21i
aW5hdGlvbiBvZgorICAgICAgICAvLyBoaWdoIGZpZGVsaXR5IGZvciByZWNlbnQgY2FsbHMgYW5k
IGZhZGluZyBmb3Igb2xkZXIgY2FsbHMgbWFrZXMgdGhpcyB0aGUgbW9zdCB1c2VmdWwKKyAgICAg
ICAgLy8gbWVjaGFtaXNtIG9mIGNob29zaW5nIGhvdyB0byBvcHRpbWl6ZSBmdXR1cmUgY2FsbHMu
CisgICAgICAgIENhbGxFZGdlUHJvZmlsZSogZWRnZVByb2ZpbGUgPSBjYWxsTGlua0luZm8uY2Fs
bEVkZ2VQcm9maWxlLmdldCgpOworICAgICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKKyAgICAg
ICAgaWYgKGVkZ2VQcm9maWxlKSB7CisgICAgICAgICAgICBDYWxsTGlua1N0YXR1cyByZXN1bHQg
PSBjb21wdXRlRnJvbUNhbGxFZGdlUHJvZmlsZShlZGdlUHJvZmlsZSk7CisgICAgICAgICAgICBp
ZiAoISFyZXN1bHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQor
ICAgIH0KKyAgICAKKyAgICByZXR1cm4gY29tcHV0ZUZyb21DYWxsTGlua0luZm8obG9ja2VyLCBj
YWxsTGlua0luZm8pOworfQorCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0
ZUZyb21DYWxsTGlua0luZm8oCisgICAgY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENhbGxM
aW5rSW5mbyYgY2FsbExpbmtJbmZvKQogewogICAgIC8vIE5vdGUgdGhhdCBkZXNwaXRlIHJlcXVp
cmluZyB0aGF0IHRoZSBsb2NrZXIgaXMgaGVsZCwgdGhpcyBjb2RlIGlzIHJhY3kgd2l0aCByZXNw
ZWN0CiAgICAgLy8gdG8gdGhlIENhbGxMaW5rSW5mbzogaXQgbWF5IGdldCBjbGVhcmVkIHdoaWxl
IHRoaXMgY29kZSBydW5zISBUaGlzIGlzIGJlY2F1c2UKQEAgLTE3Nyw3ICsxNzIsNyBAQCBDYWxs
TGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvCiAgICAgCiAgICAgSlNGdW5jdGlv
biogdGFyZ2V0ID0gY2FsbExpbmtJbmZvLmxhc3RTZWVuQ2FsbGVlLmdldCgpOwogICAgIGlmICgh
dGFyZ2V0KQotICAgICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoKTsKKyAgICAgICAgcmV0dXJu
IHRha2VzU2xvd1BhdGgoKTsKICAgICAKICAgICBpZiAoY2FsbExpbmtJbmZvLmhhc1NlZW5DbG9z
dXJlKQogICAgICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXModGFyZ2V0LT5leGVjdXRhYmxlKCkp
OwpAQCAtMTg1LDE1ICsxODAsNDMgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNv
bXB1dGVGbwogICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyh0YXJnZXQpOwogfQogCi1DYWxsTGlu
a1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKLSAgICBjb25zdCBDb25jdXJyZW50
SklUTG9ja2VyJiBsb2NrZXIsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBFeGl0U2l0ZURh
dGEgZXhpdFNpdGVEYXRhKQorQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVG
cm9tQ2FsbEVkZ2VQcm9maWxlKENhbGxFZGdlUHJvZmlsZSogZWRnZVByb2ZpbGUpCiB7Ci0gICAg
aWYgKGV4aXRTaXRlRGF0YS5tX3Rha2VzU2xvd1BhdGgpCisgICAgLy8gSW4gY2FzZXMgd2hlcmUg
dGhlIGNhbGwgZWRnZSBwcm9maWxlIHNhdyBub3RoaW5nLCB1c2UgdGhlIENhbGxMaW5rSW5mbyBp
bnN0ZWFkLgorICAgIGlmICghZWRnZVByb2ZpbGUtPnRvdGFsQ2FsbHMoKSkKKyAgICAgICAgcmV0
dXJuIENhbGxMaW5rU3RhdHVzKCk7CisgICAgCisgICAgLy8gVG8gZG8gYW55dGhpbmcgbWVhbmlu
Z2Z1bCwgd2UgcmVxdWlyZSB0aGF0IHRoZSBtYWpvcml0eSBvZiBjYWxscyBhcmUgdG8gc29tZXRo
aW5nIHdlCisgICAgLy8ga25vdyBob3cgdG8gaGFuZGxlLgorICAgIHVuc2lnbmVkIG51bUNhbGxz
VG9Lbm93biA9IGVkZ2VQcm9maWxlLT5udW1DYWxsc1RvS25vd25DZWxscygpOworICAgIHVuc2ln
bmVkIG51bUNhbGxzVG9Vbmtub3duID0gZWRnZVByb2ZpbGUtPm51bUNhbGxzVG9Ob3RDZWxsKCkg
KyBlZGdlUHJvZmlsZS0+bnVtQ2FsbHNUb1Vua25vd25DZWxsKCk7CisgICAgCisgICAgLy8gV2Ug
cmVxdWlyZSB0aGF0IHRoZSBtYWpvcml0eSBvZiBjYWxscyB3ZXJlIHRvIHNvbWV0aGluZyB0aGF0
IHdlIGNvdWxkIHBvc3NpYmx5IGlubGluZS4KKyAgICBpZiAobnVtQ2FsbHNUb0tub3duIDw9IG51
bUNhbGxzVG9Vbmtub3duKQorICAgICAgICByZXR1cm4gdGFrZXNTbG93UGF0aCgpOworICAgIAor
ICAgIC8vIFdlIHJlcXVpcmUgdGhhdCB0aGUgbnVtYmVyIG9mIHN1Y2ggY2FsbHMgaXMgZ3JlYXRl
ciB0aGFuIHNvbWUgbWluaW1hbCB0aHJlc2hvbGQsIHNvIHRoYXQgd2UKKyAgICAvLyBhdm9pZCBp
bmxpbmluZyBjb21wbGV0ZWx5IGNvbGQgY2FsbHMuCisgICAgaWYgKG51bUNhbGxzVG9Lbm93biA8
IE9wdGlvbnM6OmZyZXF1ZW50Q2FsbFRocmVzaG9sZCgpKQogICAgICAgICByZXR1cm4gdGFrZXNT
bG93UGF0aCgpOwogICAgIAotICAgIENhbGxMaW5rU3RhdHVzIHJlc3VsdCA9IGNvbXB1dGVGb3Io
bG9ja2VyLCBjYWxsTGlua0luZm8pOworICAgIENhbGxMaW5rU3RhdHVzIHJlc3VsdDsKKyAgICBy
ZXN1bHQubV9lZGdlcyA9IGVkZ2VQcm9maWxlLT5jYWxsRWRnZXMoKTsKKyAgICByZXN1bHQubV9j
b3VsZFRha2VTbG93UGF0aCA9ICEhbnVtQ2FsbHNUb1Vua25vd247CisgICAgcmVzdWx0Lm1fY2Fu
VHJ1c3RDb3VudHMgPSB0cnVlOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0NhbGxM
aW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAorICAgIGNvbnN0IENvbmN1cnJl
bnRKSVRMb2NrZXImIGxvY2tlciwgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBDYWxsTGlua0lu
Zm8mIGNhbGxMaW5rSW5mbywKKyAgICBFeGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhKQoreworICAg
IENhbGxMaW5rU3RhdHVzIHJlc3VsdCA9IGNvbXB1dGVGb3IobG9ja2VyLCBwcm9maWxlZEJsb2Nr
LCBjYWxsTGlua0luZm8pOwogICAgIGlmIChleGl0U2l0ZURhdGEubV9iYWRGdW5jdGlvbikKICAg
ICAgICAgcmVzdWx0Lm1ha2VDbG9zdXJlQ2FsbCgpOworICAgIGlmIChleGl0U2l0ZURhdGEubV90
YWtlc1Nsb3dQYXRoKQorICAgICAgICByZXN1bHQubV9jb3VsZFRha2VTbG93UGF0aCA9IHRydWU7
CiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTIyNyw3ICsyNTAsNyBAQCB2b2lkIENh
bGxMaW5rU3RhdHVzOjpjb21wdXRlREZHU3RhdHVzZXMoCiAgICAgICAgIAogICAgICAgICB7CiAg
ICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihkZmdDb2RlQmxvY2stPm1fbG9j
ayk7Ci0gICAgICAgICAgICBtYXAuYWRkKGluZm8uY29kZU9yaWdpbiwgY29tcHV0ZUZvcihsb2Nr
ZXIsIGluZm8sIGV4aXRTaXRlRGF0YSkpOworICAgICAgICAgICAgbWFwLmFkZChpbmZvLmNvZGVP
cmlnaW4sIGNvbXB1dGVGb3IobG9ja2VyLCBkZmdDb2RlQmxvY2ssIGluZm8sIGV4aXRTaXRlRGF0
YSkpOwogICAgICAgICB9CiAgICAgfQogI2Vsc2UKQEAgLTI1Niw2ICsyNzksMzEgQEAgQ2FsbExp
bmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGbwogICAgIHJldHVybiBjb21wdXRlRm9y
KHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgYmFzZWxpbmVNYXApOwog
fQogCitib29sIENhbGxMaW5rU3RhdHVzOjppc0Nsb3N1cmVDYWxsKCkgY29uc3QKK3sKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtX2VkZ2VzLnNpemUoKTsgaS0tOykgeworICAgICAgICBpZiAobV9l
ZGdlc1tpXS5jYWxsZWUoKS5pc0Nsb3N1cmVDYWxsKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIENhbGxMaW5rU3RhdHVzOjpt
YWtlQ2xvc3VyZUNhbGwoKQoreworICAgIEFTU0VSVCghbV9pc1Byb3ZlZCk7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gbV9lZGdlcy5zaXplKCk7IGktLTspCisgICAgICAgIG1fZWRnZXNbaV0gPSBt
X2VkZ2VzW2ldLmRlc3BlY2lmaWVkQ2xvc3VyZSgpOworICAgIAorICAgIGlmICghQVNTRVJUX0RJ
U0FCTEVEKSB7CisgICAgICAgIC8vIERvaW5nIHRoaXMgc2hvdWxkIG5vdCBoYXZlIGNyZWF0ZWQg
ZHVwbGljYXRlcywgYmVjYXVzZSB0aGUgQ2FsbEVkZ2VQcm9maWxlCisgICAgICAgIC8vIHNob3Vs
ZCBkZXNwZWNpZnkgY2xvc3VyZXMgaWYgZG9pbmcgc28gd291bGQgcmVkdWNlIHRoZSBudW1iZXIg
b2Yga25vd24gY2FsbGVlcy4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZWRn
ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IGkgKyAxOyBq
IDwgbV9lZGdlcy5zaXplKCk7ICsraikKKyAgICAgICAgICAgICAgICBBU1NFUlQobV9lZGdlc1tp
XS5jYWxsZWUoKSAhPSBtX2VkZ2VzW2pdLmNhbGxlZSgpKTsKKyAgICAgICAgfQorICAgIH0KK30K
Kwogdm9pZCBDYWxsTGlua1N0YXR1czo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewog
ICAgIGlmICghaXNTZXQoKSkgewpAQCAtMjcxLDE0ICszMTksNyBAQCB2b2lkIENhbGxMaW5rU3Rh
dHVzOjpkdW1wKFByaW50U3RyZWFtJiBvCiAgICAgaWYgKG1fY291bGRUYWtlU2xvd1BhdGgpCiAg
ICAgICAgIG91dC5wcmludChjb21tYSwgIkNvdWxkIFRha2UgU2xvdyBQYXRoIik7CiAgICAgCi0g
ICAgaWYgKG1fY2FsbFRhcmdldCkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiS25vd24gdGFy
Z2V0OiAiLCBtX2NhbGxUYXJnZXQpOwotICAgIAotICAgIGlmIChtX2V4ZWN1dGFibGUpIHsKLSAg
ICAgICAgb3V0LnByaW50KGNvbW1hLCAiRXhlY3V0YWJsZS9DYWxsSGFzaDogIiwgUmF3UG9pbnRl
cihtX2V4ZWN1dGFibGUpKTsKLSAgICAgICAgaWYgKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpCi0g
ICAgICAgICAgICBvdXQucHJpbnQoIi8iLCBtX2V4ZWN1dGFibGUtPmhhc2hGb3IoQ29kZUZvckNh
bGwpKTsKLSAgICB9CisgICAgb3V0LnByaW50KGxpc3REdW1wKG1fZWRnZXMpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bExpbmtTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtTdGF0dXMuaAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDkg
KzQ2LDkgQEAgc3RydWN0IENhbGxMaW5rSW5mbzsKIGNsYXNzIENhbGxMaW5rU3RhdHVzIHsKIHB1
YmxpYzoKICAgICBDYWxsTGlua1N0YXR1cygpCi0gICAgICAgIDogbV9leGVjdXRhYmxlKDApCi0g
ICAgICAgICwgbV9jb3VsZFRha2VTbG93UGF0aChmYWxzZSkKKyAgICAgICAgOiBtX2NvdWxkVGFr
ZVNsb3dQYXRoKGZhbHNlKQogICAgICAgICAsIG1faXNQcm92ZWQoZmFsc2UpCisgICAgICAgICwg
bV9jYW5UcnVzdENvdW50cyhmYWxzZSkKICAgICB7CiAgICAgfQogICAgIApAQCAtNjEsMTAgKzYx
LDExIEBAIHB1YmxpYzoKICAgICAKICAgICBleHBsaWNpdCBDYWxsTGlua1N0YXR1cyhKU1ZhbHVl
KTsKICAgICAKLSAgICBDYWxsTGlua1N0YXR1cyhFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSkK
LSAgICAgICAgOiBtX2V4ZWN1dGFibGUoZXhlY3V0YWJsZSkKKyAgICBDYWxsTGlua1N0YXR1cyhD
YWxsVmFyaWFudCB2YXJpYW50KQorICAgICAgICA6IG1fZWRnZXMoMSwgQ2FsbEVkZ2UodmFyaWFu
dCwgMSkpCiAgICAgICAgICwgbV9jb3VsZFRha2VTbG93UGF0aChmYWxzZSkKICAgICAgICAgLCBt
X2lzUHJvdmVkKGZhbHNlKQorICAgICAgICAsIG1fY2FuVHJ1c3RDb3VudHMoZmFsc2UpCiAgICAg
ewogICAgIH0KICAgICAKQEAgLTkyLDggKzkzLDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShKSVQp
CiAgICAgLy8gQ29tcHV0ZXMgdGhlIHN0YXR1cyBhc3N1bWluZyB0aGF0IHdlIG5ldmVyIHRvb2sg
c2xvdyBwYXRoIGFuZCBuZXZlciBwcmV2aW91c2x5CiAgICAgLy8gZXhpdGVkLgotICAgIHN0YXRp
YyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBD
YWxsTGlua0luZm8mKTsKLSAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcihjb25z
dCBDb25jdXJyZW50SklUTG9ja2VyJiwgQ2FsbExpbmtJbmZvJiwgRXhpdFNpdGVEYXRhKTsKKyAg
ICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcihjb25zdCBDb25jdXJyZW50SklUTG9j
a2VyJiwgQ29kZUJsb2NrKiwgQ2FsbExpbmtJbmZvJik7CisgICAgc3RhdGljIENhbGxMaW5rU3Rh
dHVzIGNvbXB1dGVGb3IoCisgICAgICAgIGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBDb2Rl
QmxvY2sqLCBDYWxsTGlua0luZm8mLCBFeGl0U2l0ZURhdGEpOwogI2VuZGlmCiAgICAgCiAgICAg
dHlwZWRlZiBIYXNoTWFwPENvZGVPcmlnaW4sIENhbGxMaW5rU3RhdHVzLCBDb2RlT3JpZ2luQXBw
cm94aW1hdGVIYXNoPiBDb250ZXh0TWFwOwpAQCAtMTA3LDM3ICsxMDksMzggQEAgcHVibGljOgog
ICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKAogICAgICAgICBDb2RlQmxvY2sq
LCBDb2RlT3JpZ2luLCBjb25zdCBDYWxsTGlua0luZm9NYXAmLCBjb25zdCBDb250ZXh0TWFwJik7
CiAgICAgCi0gICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdldCB8fCBt
X2V4ZWN1dGFibGUgfHwgbV9jb3VsZFRha2VTbG93UGF0aDsgfQorICAgIGJvb2wgaXNTZXQoKSBj
b25zdCB7IHJldHVybiAhbV9lZGdlcy5pc0VtcHR5KCkgfHwgbV9jb3VsZFRha2VTbG93UGF0aDsg
fQogICAgIAogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7IH0K
ICAgICAKICAgICBib29sIGNvdWxkVGFrZVNsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9jb3Vs
ZFRha2VTbG93UGF0aDsgfQotICAgIGJvb2wgaXNDbG9zdXJlQ2FsbCgpIGNvbnN0IHsgcmV0dXJu
IG1fZXhlY3V0YWJsZSAmJiAhbV9jYWxsVGFyZ2V0OyB9CiAgICAgCi0gICAgSlNWYWx1ZSBjYWxs
VGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0OyB9Ci0gICAgSlNGdW5jdGlvbiog
ZnVuY3Rpb24oKSBjb25zdDsKLSAgICBJbnRlcm5hbEZ1bmN0aW9uKiBpbnRlcm5hbEZ1bmN0aW9u
KCkgY29uc3Q7Ci0gICAgSW50cmluc2ljIGludHJpbnNpY0ZvcihDb2RlU3BlY2lhbGl6YXRpb25L
aW5kKSBjb25zdDsKLSAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZXhlY3V0YWJsZTsgfQorICAgIENhbGxFZGdlTGlzdCBlZGdlcygpIGNvbnN0IHsgcmV0
dXJuIG1fZWRnZXM7IH0KKyAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9lZGdl
cy5zaXplKCk7IH0KKyAgICBDYWxsRWRnZSBhdCh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBt
X2VkZ2VzW2ldOyB9CisgICAgQ2FsbEVkZ2Ugb3BlcmF0b3JbXSh1bnNpZ25lZCBpKSBjb25zdCB7
IHJldHVybiBhdChpKTsgfQogICAgIGJvb2wgaXNQcm92ZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
UHJvdmVkOyB9Ci0gICAgYm9vbCBjYW5PcHRpbWl6ZSgpIGNvbnN0IHsgcmV0dXJuIChtX2NhbGxU
YXJnZXQgfHwgbV9leGVjdXRhYmxlKSAmJiAhbV9jb3VsZFRha2VTbG93UGF0aDsgfQorICAgIGJv
b2wgY2FuT3B0aW1pemUoKSBjb25zdCB7IHJldHVybiAhbV9lZGdlcy5pc0VtcHR5KCk7IH0KKyAg
ICBib29sIGNhblRydXN0Q291bnRzKCkgY29uc3QgeyByZXR1cm4gbV9jYW5UcnVzdENvdW50czsg
fQorICAgIAorICAgIGJvb2wgaXNDbG9zdXJlQ2FsbCgpIGNvbnN0OyAvLyBSZXR1cm5zIHRydWUg
aWYgYW55IGNhbGxlZSBpcyBhIGNsb3N1cmUgY2FsbC4KICAgICAKICAgICB2b2lkIGR1bXAoUHJp
bnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6Ci0gICAgdm9pZCBtYWtlQ2xvc3VyZUNh
bGwoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2lzUHJvdmVkKTsKLSAgICAgICAgLy8gVHVy
biB0aGlzIGludG8gYSBjbG9zdXJlIGNhbGwuCi0gICAgICAgIG1fY2FsbFRhcmdldCA9IEpTVmFs
dWUoKTsKLSAgICB9CisgICAgdm9pZCBtYWtlQ2xvc3VyZUNhbGwoKTsKICAgICAKICAgICBzdGF0
aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZyb21MTEludChjb25zdCBDb25jdXJyZW50SklUTG9j
a2VyJiwgQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CisjaWYgRU5BQkxFKEpJ
VCkKKyAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZyb21DYWxsRWRnZVByb2ZpbGUo
Q2FsbEVkZ2VQcm9maWxlKik7CisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGcm9t
Q2FsbExpbmtJbmZvKAorICAgICAgICBjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgQ2FsbExp
bmtJbmZvJik7CisjZW5kaWYKICAgICAKLSAgICBKU1ZhbHVlIG1fY2FsbFRhcmdldDsKLSAgICBF
eGVjdXRhYmxlQmFzZSogbV9leGVjdXRhYmxlOworICAgIENhbGxFZGdlTGlzdCBtX2VkZ2VzOwog
ICAgIGJvb2wgbV9jb3VsZFRha2VTbG93UGF0aDsKICAgICBib29sIG1faXNQcm92ZWQ7CisgICAg
Ym9vbCBtX2NhblRydXN0Q291bnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNh
bGxWYXJpYW50LmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCit2b2lkIENhbGxWYXJpYW50OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7Cisg
ICAgaWYgKCEqdGhpcykgeworICAgICAgICBvdXQucHJpbnQoIm51bGwiKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoSW50ZXJuYWxGdW5jdGlvbiogaW50ZXJuYWxGdW5j
dGlvbiA9IHRoaXMtPmludGVybmFsRnVuY3Rpb24oKSkgeworICAgICAgICBvdXQucHJpbnQoIklu
dGVybmFsRnVuY3Rpb246ICIsIEpTVmFsdWUoaW50ZXJuYWxGdW5jdGlvbikpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IHRoaXMt
PmZ1bmN0aW9uKCkpIHsKKyAgICAgICAgb3V0LnByaW50KCIoRnVuY3Rpb246ICIsIEpTVmFsdWUo
ZnVuY3Rpb24pLCAiOyBFeGVjdXRhYmxlOiAiLCAqZXhlY3V0YWJsZSgpLCAiKSIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIAorICAgIG91dC5wcmludCgiRXhlY3V0YWJsZTogIiwgKmV4
ZWN1dGFibGUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgQ2FsbFZhcmlhbnRfaAorI2RlZmluZSBDYWxsVmFyaWFudF9oCisK
KyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQ2FsbFZhcmlhbnQgewor
cHVibGljOgorICAgIGV4cGxpY2l0IENhbGxWYXJpYW50KEpTQ2VsbCogY2FsbGVlID0gbnVsbHB0
cikKKyAgICAgICAgOiBtX2NhbGxlZShjYWxsZWUpCisgICAgeworICAgIH0KKyAgICAKKyAgICBD
YWxsVmFyaWFudChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIDogbV9j
YWxsZWUoZGVsZXRlZFRva2VuKCkpCisgICAgeworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJh
dG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX2NhbGxlZTsgfQorICAgIAorICAgIC8vIElmIHRoaXMg
dmFyaWFudCByZWZlcnMgdG8gYSBmdW5jdGlvbiwgY2hhbmdlIGl0IHRvIHJlZmVyIHRvIGl0cyBl
eGVjdXRhYmxlLgorICAgIEFMV0FZU19JTkxJTkUgQ2FsbFZhcmlhbnQgZGVzcGVjaWZpZWRDbG9z
dXJlKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2NhbGxlZS0+dHlwZSgpID09IEpTRnVu
Y3Rpb25UeXBlKQorICAgICAgICAgICAgcmV0dXJuIENhbGxWYXJpYW50KGpzQ2FzdDxKU0Z1bmN0
aW9uKj4obV9jYWxsZWUpLT5leGVjdXRhYmxlKCkpOworICAgICAgICByZXR1cm4gKnRoaXM7Cisg
ICAgfQorICAgIAorICAgIEpTQ2VsbCogcmF3Q2FsbGVlQ2VsbCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FsbGVlOyB9CisgICAgCisgICAgSW50ZXJuYWxGdW5jdGlvbiogaW50ZXJuYWxGdW5jdGlvbigp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxJbnRlcm5hbEZ1bmN0
aW9uKj4obV9jYWxsZWUpOworICAgIH0KKyAgICAKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbigp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4o
bV9jYWxsZWUpOworICAgIH0KKyAgICAKKyAgICBib29sIGlzQ2xvc3VyZUNhbGwoKSBjb25zdCB7
IHJldHVybiAhIWpzRHluYW1pY0Nhc3Q8RXhlY3V0YWJsZUJhc2UqPihtX2NhbGxlZSk7IH0KKyAg
ICAKKyAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSgpIGNvbnN0CisgICAgeworICAgICAg
ICBpZiAoSlNGdW5jdGlvbiogZnVuY3Rpb24gPSB0aGlzLT5mdW5jdGlvbigpKQorICAgICAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uLT5leGVjdXRhYmxlKCk7CisgICAgICAgIHJldHVybiBqc0R5bmFt
aWNDYXN0PEV4ZWN1dGFibGVCYXNlKj4obV9jYWxsZWUpOworICAgIH0KKyAgICAKKyAgICBKU0Nl
bGwqIG5vbkV4ZWN1dGFibGVDYWxsZWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoIWlzQ2xvc3VyZUNhbGwoKSk7CisgICAgICAgIHJldHVybiBtX2NhbGxlZTsKKyAgICB9
CisgICAgCisgICAgSW50cmluc2ljIGludHJpbnNpY0ZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IGtpbmQpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFi
bGUgPSB0aGlzLT5leGVjdXRhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4gZXhlY3V0YWJsZS0+
aW50cmluc2ljRm9yKGtpbmQpOworICAgICAgICByZXR1cm4gTm9JbnRyaW5zaWM7CisgICAgfQor
ICAgIAorICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlKCkgY29uc3QK
KyAgICB7CisgICAgICAgIGlmIChFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IHRoaXMtPmV4
ZWN1dGFibGUoKSkKKyAgICAgICAgICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEZ1bmN0aW9uRXhl
Y3V0YWJsZSo+KGV4ZWN1dGFibGUpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OworICAgIAorICAgIGJv
b2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fY2FsbGVlID09IGRlbGV0ZWRUb2tlbigpOworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fY2FsbGVlID09IG90aGVyLm1fY2FsbGVlOworICAgIH0KKyAgICAKKyAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9y
PChjb25zdCBDYWxsVmFyaWFudCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9jYWxsZWUgPCBvdGhlci5tX2NhbGxlZTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRv
cj4oY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG90aGVyIDwgKnRoaXM7CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBD
YWxsVmFyaWFudCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA8
IG90aGVyKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IENhbGxWYXJp
YW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBvdGhlciA8PSAqdGhpczsK
KyAgICB9CisgICAgCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gV1RGOjpQdHJIYXNoPEpTQ2VsbCo+OjpoYXNoKG1fY2FsbGVlKTsKKyAgICB9CisgICAg
Citwcml2YXRlOgorICAgIHN0YXRpYyBKU0NlbGwqIGRlbGV0ZWRUb2tlbigpIHsgcmV0dXJuIGJp
dHdpc2VfY2FzdDxKU0NlbGwqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsgfQorICAgICAg
ICAgICAgICAgICAgIAorICAgIEpTQ2VsbCogbV9jYWxsZWU7Cit9OworCitzdHJ1Y3QgQ2FsbFZh
cmlhbnRIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBDYWxsVmFyaWFudCYg
a2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qg
Q2FsbFZhcmlhbnQmIGEsIGNvbnN0IENhbGxWYXJpYW50JiBiKSB7IHJldHVybiBhID09IGI7IH0K
KyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRy
dWU7Cit9OworCit0eXBlZGVmIFZlY3RvcjxDYWxsVmFyaWFudCwgMT4gQ2FsbFZhcmlhbnRMaXN0
OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRI
YXNoPEpTQzo6Q2FsbFZhcmlhbnQ+IHsKKyAgICB0eXBlZGVmIEpTQzo6Q2FsbFZhcmlhbnRIYXNo
IEhhc2g7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czsKK3Rl
bXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpDYWxsVmFyaWFudD4gOiBTaW1wbGVDbGFz
c0hhc2hUcmFpdHM8SlNDOjpDYWxsVmFyaWFudD4geyB9OworCit9IC8vIG5hbWVzcGFjZSBXVEYK
KworI2VuZGlmIC8vIENhbGxWYXJpYW50X2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQs
NiArMTU0LDE3IEBAIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWUgewogICAgICAgICByZXR1cm4gQ29k
ZUZvckNhbGw7CiAgICAgfQogICAgIAorICAgIHN0YXRpYyBib29sIGlzTm9ybWFsQ2FsbChLaW5k
IGtpbmQpCisgICAgeworICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgY2FzZSBDYWxs
OgorICAgICAgICBjYXNlIENvbnN0cnVjdDoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
fQorICAgIAogICAgIFZlY3RvcjxWYWx1ZVJlY292ZXJ5PiBhcmd1bWVudHM7IC8vIEluY2x1ZGVz
ICd0aGlzJy4KICAgICBXcml0ZUJhcnJpZXI8U2NyaXB0RXhlY3V0YWJsZT4gZXhlY3V0YWJsZTsK
ICAgICBWYWx1ZVJlY292ZXJ5IGNhbGxlZVJlY292ZXJ5OwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zOCw4ICszOCw4IEBAIGNvbnN0IGNoYXIqIGV4aXRLaW5kVG9TdHJpbmcoRXhpdEtpbmQga2kK
ICAgICAgICAgcmV0dXJuICJVbnNldCI7CiAgICAgY2FzZSBCYWRUeXBlOgogICAgICAgICByZXR1
cm4gIkJhZFR5cGUiOwotICAgIGNhc2UgQmFkRnVuY3Rpb246Ci0gICAgICAgIHJldHVybiAiQmFk
RnVuY3Rpb24iOworICAgIGNhc2UgQmFkQ2VsbDoKKyAgICAgICAgcmV0dXJuICJCYWRDZWxsIjsK
ICAgICBjYXNlIEJhZEV4ZWN1dGFibGU6CiAgICAgICAgIHJldHVybiAiQmFkRXhlY3V0YWJsZSI7
CiAgICAgY2FzZSBCYWRDYWNoZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FeGl0S2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FeGl0S2luZC5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRXhpdEtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIGVudW0gRXhpdEtpbmQgOiB1aW50OF90IHsKICAgICBFeGl0S2luZFVuc2V0
LAogICAgIEJhZFR5cGUsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIGEgdHlwZSBwcmVkaWN0aW9uIHdh
cyB3cm9uZy4KLSAgICBCYWRGdW5jdGlvbiwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2UgbWFkZSBh
biBpbmNvcnJlY3QgYXNzdW1wdGlvbiBhYm91dCB3aGF0IGZ1bmN0aW9uIHdlIHdvdWxkIHNlZS4K
KyAgICBCYWRDZWxsLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSB3ZSBtYWRlIGFuIGluY29ycmVjdCBh
c3N1bXB0aW9uIGFib3V0IHdoYXQgY2VsbCB3ZSB3b3VsZCBzZWUuIFVzdWFsbHkgdXNlZCBmb3Ig
ZnVuY3Rpb24gY2hlY2tzLgogICAgIEJhZEV4ZWN1dGFibGUsIC8vIFdlIGV4aXRlZCBiZWNhdXNl
IHdlIG1hZGUgYW4gaW5jb3JyZWN0IGFzc3VtcHRpb24gYWJvdXQgd2hhdCBleGVjdXRhYmxlIHdl
IHdvdWxkIHNlZS4KICAgICBCYWRDYWNoZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2UgYW4gaW5saW5l
IGNhY2hlIHdhcyB3cm9uZy4KICAgICBCYWRDb25zdGFudENhY2hlLCAvLyBXZSBleGl0ZWQgYmVj
YXVzZSBhIGNhY2hlIG9uIGEgd2VhayBjb25zdGFudCAodXN1YWxseSBhIHByb3RvdHlwZSkgd2Fz
IHdyb25nLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRC
eUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsNyArMTg3
LDggQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yUwogICAgICAgICAg
ICAgICAgICAgICBBY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZSogc3R1YiA9IHN0YXRpY19jYXN0
PEFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lKj4oCiAgICAgICAgICAgICAgICAgICAgICAgICBs
aXN0LT5hdChsaXN0SW5kZXgpLnN0dWJSb3V0aW5lKCkpOwogICAgICAgICAgICAgICAgICAgICBj
YWxsTGlua1N0YXR1cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtTdGF0dXM+KAotICAgICAg
ICAgICAgICAgICAgICAgICAgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IobG9ja2VyLCAqc3R1
Yi0+bV9jYWxsTGlua0luZm8sIGNhbGxFeGl0U2l0ZURhdGEpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxvY2tlciwgcHJvZmlsZWRCbG9jaywgKnN0dWItPm1fY2FsbExpbmtJbmZvLCBjYWxs
RXhpdFNpdGVEYXRhKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBjYXNlIEdldEJ5SWRBY2Nlc3M6OkN1c3RvbUdldHRlcjoK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QdXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ3LDcgKzI0Nyw3IEBAIFB1
dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclMKICAgICAgICAgICAgICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPENhbGxMaW5rU3RhdHVzPiBjYWxsTGlua1N0YXR1cyA9CiAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5rU3RhdHVzPigKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9ja2VyLCAqc3R1Yi0+bV9jYWxsTGlua0lu
Zm8sIGNhbGxFeGl0U2l0ZURhdGEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bG9ja2VyLCBwcm9maWxlZEJsb2NrLCAqc3R1Yi0+bV9jYWxsTGlua0luZm8sIGNhbGxFeGl0U2l0
ZURhdGEpKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIHZhcmlh
bnQgPSBQdXRCeUlkVmFyaWFudDo6c2V0dGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0dXJlLCBjb21wbGV4R2V0U3RhdHVzLm9mZnNldCgpLCBjb21wbGV4R2V0U3RhdHVzLmNoYWlu
KCksCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE0NTksMTQgKzE0NTksNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIp
OwogICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6IHsK
LSAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIHRyYWNrIGV4ZWN1dGFibGVzIGluIEFic3RyYWN0
VmFsdWUsIHdoaWNoIHdvdWxkIGFsbG93IHVzIHRvIGdldCByaWQgb2YgdGhlc2UgY2hlY2tzCi0g
ICAgICAgIC8vIG1vcmUgdGhvcm91Z2hseS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNjIwMAotICAgICAgICAvLyBGSVhNRTogV2UgY291bGQgZWxpbWluYXRlIHRo
ZXNlIGVudGlyZWx5IGlmIHdlIGtub3cgdGhlIGV4YWN0IHZhbHVlIHRoYXQgZmxvd3MgaW50byB0
aGlzLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA2MjAxCi0gICAgICAgIGJyZWFrOwotICAgIH0KLQogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6
IHsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIHByb3BhZ2F0ZSB0aGUg
c3RydWN0dXJlIHNldHMgb2YgY29uc3RhbnRzIChpLmUuIHByb3RvdHlwZXMpLgogICAgICAgICBB
YnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTcyNiwx
NiArMTcxOCwyOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAg
ICAgICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwogICAgICAgICBicmVhazsKICAg
ICB9CisgICAgICAgIAorICAgIGNhc2UgR2V0RXhlY3V0YWJsZTogeworICAgICAgICBKU1ZhbHVl
IHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKHZh
bHVlKSB7CisgICAgICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8
SlNGdW5jdGlvbio+KHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChmdW5jdGlvbikgeworICAgICAg
ICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6ZShmdW5jdGlvbi0+ZXhl
Y3V0YWJsZSgpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNDZWxsT3RoZXIpOworICAg
ICAgICBicmVhazsKKyAgICB9CiAgICAgCi0gICAgY2FzZSBDaGVja0Z1bmN0aW9uOiB7CisgICAg
Y2FzZSBDaGVja0NlbGw6IHsKICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLnZhbHVlKCk7Ci0gICAgICAgIGlmICh2YWx1ZSA9PSBub2RlLT5mdW5jdGlvbigp
LT52YWx1ZSgpKSB7CisgICAgICAgIGlmICh2YWx1ZSA9PSBub2RlLT5jZWxsT3BlcmFuZCgpLT52
YWx1ZSgpKSB7CiAgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOwog
ICAgICAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIAotICAgICAgICBmaWx0ZXJCeVZhbHVlKG5vZGUtPmNoaWxkMSgpLCAqbm9kZS0+
ZnVuY3Rpb24oKSk7CisgICAgICAgIGZpbHRlckJ5VmFsdWUobm9kZS0+Y2hpbGQxKCksICpub2Rl
LT5jZWxsT3BlcmFuZCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKQEAgLTE4
NTksOCArMTg2NCw2IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkK
ICAgICAgICAgCiAgICAgY2FzZSBWYXJpYWJsZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBWYXJJbmpl
Y3Rpb25XYXRjaHBvaW50OgotICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAogICAgIGNhc2Ug
UHV0R2xvYmFsVmFyOgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgICAgIGJyZWFrOwpAQCAt
MTkwMCw3ICsxOTAzLDE2IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHkKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwogICAgICAgICBicmVhazsK
IAorICAgIGNhc2UgUHJvZmlsZWRDYWxsOgorICAgIGNhc2UgUHJvZmlsZWRDb25zdHJ1Y3Q6Cisg
ICAgICAgIGlmIChmb3JOb2RlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpLm1fdmFsdWUp
CisgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOworICAgICAgICBj
bG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgICAg
ICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2Fz
ZSBGb3JjZU9TUkV4aXQ6CisgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgICAgIG1fc3RhdGUu
c2V0SXNWYWxpZChmYWxzZSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKQEAgLTE5NTUsNyAr
MTk2Nyw4IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICBj
YXNlIExhc3ROb2RlVHlwZToKICAgICBjYXNlIEFyaXRoSU11bDoKICAgICBjYXNlIEZpYXRJbnQ1
MjoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIEJvdHRv
bVZhbHVlOgorICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbm9kZSwgIlVuZXhwZWN0ZWQgbm9k
ZSB0eXBlIik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBo
YXNlLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzg5LDYg
KzM4OSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIC8vIHRoZW4gLTAgYW5kIDAgYXJl
IHRyZWF0ZWQgdGhlIHNhbWUuCiAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCktPm1lcmdl
RmxhZ3MoTm9kZUJ5dGVjb2RlVXNlc0FzTnVtYmVyIHwgTm9kZUJ5dGVjb2RlVXNlc0FzT3RoZXIp
OwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTd2l0Y2hDZWxsOgor
ICAgICAgICAgICAgICAgIC8vIFRoZXJlIGlzIGN1cnJlbnRseSBubyBwb2ludCB0byBiZWluZyBj
bGV2ZXIgaGVyZSBzaW5jZSB0aGlzIGlzIHVzZWQgZm9yIHN3aXRjaGluZworICAgICAgICAgICAg
ICAgIC8vIG9uIG9iamVjdHMuCisgICAgICAgICAgICAgICAgbWVyZ2VEZWZhdWx0RmxhZ3Mobm9k
ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNp
Y0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jh
c2ljQmxvY2suY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Jhc2ljQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw5IEBAIEJh
c2ljQmxvY2s6OkJhc2ljQmxvY2soCiB7CiB9CiAKLUJhc2ljQmxvY2s6On5CYXNpY0Jsb2NrKCkg
eyB9CitCYXNpY0Jsb2NrOjp+QmFzaWNCbG9jaygpCit7Cit9CiAKIHZvaWQgQmFzaWNCbG9jazo6
ZW5zdXJlTG9jYWxzKHVuc2lnbmVkIG5ld051bUxvY2FscykKIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAt
NjIsNiArNjIsNyBAQCBzdHJ1Y3QgQmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAg
ICAgTm9kZSomIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsgcmV0dXJuIGF0KGkpOyB9CiAgICAgTm9k
ZSogb3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0KICAgICBOb2Rl
KiBsYXN0KCkgY29uc3QgeyByZXR1cm4gYXQoc2l6ZSgpIC0gMSk7IH0KKyAgICBOb2RlKiB0YWtl
TGFzdCgpIHsgcmV0dXJuIG1fbm9kZXMudGFrZUxhc3QoKTsgfQogICAgIHZvaWQgcmVzaXplKHNp
emVfdCBzaXplKSB7IG1fbm9kZXMucmVzaXplKHNpemUpOyB9CiAgICAgdm9pZCBncm93KHNpemVf
dCBzaXplKSB7IG1fbm9kZXMuZ3JvdyhzaXplKTsgfQogICAgIApAQCAtMTA2LDYgKzEwNywxMyBA
QCBzdHJ1Y3QgQmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgCiAgICAgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwogICAgIAorICAgIHZvaWQgZGlkTGluaygp
CisgICAgeworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgaXNMaW5rZWQgPSB0cnVlOwor
I2VuZGlmCisgICAgfQorICAgIAogICAgIC8vIFRoaXMgdmFsdWUgaXMgdXNlZCBpbnRlcm5hbGx5
IGZvciBibG9jayBsaW5raW5nIGFuZCBPU1IgZW50cnkuIEl0IGlzIG1vc3RseSBtZWFuaW5nbGVz
cwogICAgIC8vIGZvciBvdGhlciBwdXJwb3NlcyBkdWUgdG8gaW5saW5pbmcuCiAgICAgdW5zaWdu
ZWQgYnl0ZWNvZGVCZWdpbjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAs
NiArNTAsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKK3N0YXRpYyBj
b25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKKwogY2xhc3MgQ29uc3RhbnRCdWZmZXJLZXkgewog
cHVibGljOgogICAgIENvbnN0YW50QnVmZmVyS2V5KCkKQEAgLTE3OCwxNCArMTgwLDIwIEBAIHBy
aXZhdGU6CiAgICAgICAgIE5vZGUqIGNhbGxUYXJnZXQsIGludCBhcmdDb3VudCwgaW50IHJlZ2lz
dGVyT2Zmc2V0LCBDYWxsTGlua1N0YXR1cyk7CiAgICAgdm9pZCBoYW5kbGVDYWxsKGludCByZXN1
bHQsIE5vZGVUeXBlIG9wLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCB1bnNpZ25lZCBpbnN0cnVj
dGlvblNpemUsIGludCBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0KTsK
ICAgICB2b2lkIGhhbmRsZUNhbGwoSW5zdHJ1Y3Rpb24qIHBjLCBOb2RlVHlwZSBvcCwgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCk7Ci0gICAgdm9pZCBlbWl0RnVuY3Rpb25DaGVja3MoY29uc3QgQ2Fs
bExpbmtTdGF0dXMmLCBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENvZGVT
cGVjaWFsaXphdGlvbktpbmQpOworICAgIHZvaWQgZW1pdEZ1bmN0aW9uQ2hlY2tzKENhbGxWYXJp
YW50LCBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQpOworICAgIHZvaWQgdW5kb0Z1bmN0aW9uQ2hlY2tzKENhbGxWYXJpYW50KTsKICAg
ICB2b2lkIGVtaXRBcmd1bWVudFBoYW50b21zKGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICB1bnNp
Z25lZCBpbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7IC8vIFJldHVybiBVSU5UX01BWCBpZiBpdCdz
IG5vdCBhbiBpbmxpbmluZyBjYW5kaWRhdGUuIEJ5IGNvbnZlbnRpb24sIGludHJpbnNpY3MgaGF2
ZSBhIGNvc3Qgb2YgMS4KICAgICAvLyBIYW5kbGUgaW5saW5pbmcuIFJldHVybiB0cnVlIGlmIGl0
IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCi0gICAgYm9vbCBo
YW5kbGVJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNv
bnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2lu
ZCk7CisgICAgYm9vbCBoYW5kbGVJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJl
c3VsdE9wZXJhbmQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBp
bnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIE5vZGVU
eXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uKTsKKyAgICBlbnVtIENhbGxlckxpbmthYmlsaXR5IHsgQ2FsbGVyRG9lc05vcm1hbExpbmtp
bmcsIENhbGxlckxpbmtzTWFudWFsbHkgfTsKKyAgICBib29sIGF0dGVtcHRUb0lubGluZUNhbGwo
Tm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyaWFudCwgaW50
IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVk
IG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2luZCwgQ2FsbGVyTGlua2FiaWxpdHksIFNw
ZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxpbmluZ0JhbGFuY2UpOworICAg
IHZvaWQgaW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQs
IENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBDYWxs
ZXJMaW5rYWJpbGl0eSk7CisgICAgdm9pZCBjYW5jZWxMaW5raW5nRm9yQmxvY2soSW5saW5lU3Rh
Y2tFbnRyeSosIEJhc2ljQmxvY2sqKTsgLy8gT25seSB3b3JrcyB3aGVuIHRoZSBnaXZlbiBibG9j
ayBpcyB0aGUgbGFzdCBvbmUgdG8gaGF2ZSBiZWVuIGFkZGVkIGZvciB0aGF0IGlubGluZSBzdGFj
ayBlbnRyeS4KICAgICAvLyBIYW5kbGUgaW50cmluc2ljIGZ1bmN0aW9ucy4gUmV0dXJuIHRydWUg
aWYgaXQgc3VjY2VlZGVkLCBmYWxzZSBpZiB3ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4KICAgICBi
b29sIGhhbmRsZUludHJpbnNpYyhpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluc2ljLCBpbnQgcmVn
aXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5
cGUgcHJlZGljdGlvbik7CiAgICAgYm9vbCBoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IoaW50
IHJlc3VsdE9wZXJhbmQsIEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgVHlwZWRBcnJheVR5cGUpOwotICAgIGJvb2wg
aGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKGludCByZXN1bHRPcGVyYW5kLCBJbnRlcm5h
bEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIENvZGVTcGVjaWFsaXphdGlvbktpbmQp
OworICAgIGJvb2wgaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKGludCByZXN1bHRPcGVy
YW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwogICAgIE5vZGUqIGhh
bmRsZVB1dEJ5T2Zmc2V0KE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXIsIFByb3BlcnR5
T2Zmc2V0LCBOb2RlKiB2YWx1ZSk7CiAgICAgTm9kZSogaGFuZGxlR2V0QnlPZmZzZXQoU3BlY3Vs
YXRlZFR5cGUsIE5vZGUqIGJhc2UsIGNvbnN0IFN0cnVjdHVyZVNldCYsIHVuc2lnbmVkIGlkZW50
aWZpZXJOdW1iZXIsIFByb3BlcnR5T2Zmc2V0LCBOb2RlVHlwZSBvcCA9IEdldEJ5T2Zmc2V0KTsK
ICAgICB2b2lkIGhhbmRsZUdldEJ5SWQoCkBAIC0yMDAsOCArMjA4LDkgQEAgcHJpdmF0ZToKIAog
ICAgIE5vZGUqIGdldFNjb3BlKHVuc2lnbmVkIHNraXBDb3VudCk7CiAgICAgCi0gICAgLy8gUHJl
cGFyZSB0byBwYXJzZSBhIGJsb2NrLgogICAgIHZvaWQgcHJlcGFyZVRvUGFyc2VCbG9jaygpOwor
ICAgIHZvaWQgY2xlYXJDYWNoZXMoKTsKKwogICAgIC8vIFBhcnNlIGEgc2luZ2xlIGJhc2ljIGJs
b2NrIG9mIGJ5dGVjb2RlIGluc3RydWN0aW9ucy4KICAgICBib29sIHBhcnNlQmxvY2sodW5zaWdu
ZWQgbGltaXQpOwogICAgIC8vIExpbmsgYmxvY2sgc3VjY2Vzc29ycy4KQEAgLTI5Niw2ICszMDUs
MTMgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIHJldHVybiBkZWxheWVkLmV4ZWN1dGUo
dGhpcywgc2V0TW9kZSk7CiAgICAgfQorICAgIAorICAgIHZvaWQgcHJvY2Vzc1NldExvY2FsUXVl
dWUoKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2V0TG9jYWxR
dWV1ZS5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG1fc2V0TG9jYWxRdWV1ZVtpXS5leGVjdXRl
KHRoaXMpOworICAgICAgICBtX3NldExvY2FsUXVldWUucmVzaXplKDApOworICAgIH0KIAogICAg
IE5vZGUqIHNldChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCwgTm9kZSogdmFsdWUsIFNldE1vZGUg
c2V0TW9kZSA9IE5vcm1hbFNldCkKICAgICB7CkBAIC02MzcsNiArNjUzLDEzIEBAIHByaXZhdGU6
CiAgICAgICAgIAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKyAgICAKKyAgICB2b2lk
IHJlbW92ZUxhc3ROb2RlRnJvbUdyYXBoKE5vZGVUeXBlIGV4cGVjdGVkTm9kZVR5cGUpCisgICAg
eworICAgICAgICBOb2RlKiBub2RlID0gbV9jdXJyZW50QmxvY2stPnRha2VMYXN0KCk7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPm9wKCkgPT0gZXhwZWN0ZWROb2RlVHlwZSk7CisgICAg
ICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKKyAgICB9CiAKICAgICB2b2lkIGFk
ZFZhckFyZ0NoaWxkKE5vZGUqIGNoaWxkKQogICAgIHsKQEAgLTY0NSw3ICs2NjgsNyBAQCBwcml2
YXRlOgogICAgIH0KICAgICAKICAgICBOb2RlKiBhZGRDYWxsV2l0aG91dFNldHRpbmdSZXN1bHQo
Ci0gICAgICAgIE5vZGVUeXBlIG9wLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJl
Z2lzdGVyT2Zmc2V0LAorICAgICAgICBOb2RlVHlwZSBvcCwgT3BJbmZvIG9wSW5mbywgTm9kZSog
Y2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCwKICAgICAgICAgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljdGlvbikKICAgICB7CiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGNhbGxl
ZSk7CkBAIC02NTMsMTkgKzY3NiwxOSBAQCBwcml2YXRlOgogICAgICAgICBpZiAocGFyYW1ldGVy
U2xvdHMgPiBtX3BhcmFtZXRlclNsb3RzKQogICAgICAgICAgICAgbV9wYXJhbWV0ZXJTbG90cyA9
IHBhcmFtZXRlclNsb3RzOwogCi0gICAgICAgIGludCBkdW1teVRoaXNBcmd1bWVudCA9IG9wID09
IENhbGwgfHwgb3AgPT0gTmF0aXZlQ2FsbCA/IDAgOiAxOworICAgICAgICBpbnQgZHVtbXlUaGlz
QXJndW1lbnQgPSBvcCA9PSBDYWxsIHx8IG9wID09IE5hdGl2ZUNhbGwgfHwgb3AgPT0gUHJvZmls
ZWRDYWxsID8gMCA6IDE7CiAgICAgICAgIGZvciAoaW50IGkgPSAwICsgZHVtbXlUaGlzQXJndW1l
bnQ7IGkgPCBhcmdDb3VudDsgKytpKQogICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KHZp
cnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGksIHJlZ2lzdGVyT2Zmc2V0KSkpOwogCi0gICAgICAg
IHJldHVybiBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgb3AsIE9wSW5mbygwKSwgT3BJbmZvKHBy
ZWRpY3Rpb24pKTsKKyAgICAgICAgcmV0dXJuIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBvcCwg
b3BJbmZvLCBPcEluZm8ocHJlZGljdGlvbikpOwogICAgIH0KICAgICAKICAgICBOb2RlKiBhZGRD
YWxsKAotICAgICAgICBpbnQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgTm9kZSogY2FsbGVlLCBpbnQg
YXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCwKKyAgICAgICAgaW50IHJlc3VsdCwgTm9kZVR5
cGUgb3AsIE9wSW5mbyBvcEluZm8sIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVn
aXN0ZXJPZmZzZXQsCiAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiAgICAgewog
ICAgICAgICBOb2RlKiBjYWxsID0gYWRkQ2FsbFdpdGhvdXRTZXR0aW5nUmVzdWx0KAotICAgICAg
ICAgICAgb3AsIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsK
KyAgICAgICAgICAgIG9wLCBvcEluZm8sIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0
LCBwcmVkaWN0aW9uKTsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdFJlZyhyZXN1bHQp
OwogICAgICAgICBpZiAocmVzdWx0UmVnLmlzVmFsaWQoKSkKICAgICAgICAgICAgIHNldChWaXJ0
dWFsUmVnaXN0ZXIocmVzdWx0KSwgY2FsbCk7CkBAIC04NzEsOCArODk0LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgVmVjdG9yPFVubGlua2VkQmxvY2s+IG1fdW5saW5rZWRCbG9ja3M7CiAgICAgICAg
IAogICAgICAgICAvLyBQb3RlbnRpYWwgYmxvY2sgbGlua2luZyB0YXJnZXRzLiBNdXN0IGJlIHNv
cnRlZCBieSBieXRlY29kZUJlZ2luLCBhbmQKLSAgICAgICAgLy8gY2Fubm90IGhhdmUgdHdvIGJs
b2NrcyB0aGF0IGhhdmUgdGhlIHNhbWUgYnl0ZWNvZGVCZWdpbi4gRm9yIHRoaXMgdmVyeQotICAg
ICAgICAvLyByZWFzb24sIHRoaXMgaXMgbm90IGVxdWl2YWxlbnQgdG8gCisgICAgICAgIC8vIGNh
bm5vdCBoYXZlIHR3byBibG9ja3MgdGhhdCBoYXZlIHRoZSBzYW1lIGJ5dGVjb2RlQmVnaW4uCiAg
ICAgICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gbV9ibG9ja0xpbmtpbmdUYXJnZXRzOwogICAgICAg
ICAKICAgICAgICAgLy8gSWYgdGhlIGNhbGxzaXRlJ3MgYmFzaWMgYmxvY2sgd2FzIHNwbGl0IGlu
dG8gdHdvLCB0aGVuIHRoaXMgd2lsbCBiZQpAQCAtMTAyNCw3MiArMTA0Niw1NiBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKAogICAgIGlmIChjYWxsVGFyZ2V0LT5oYXNDb25zdGFu
dCgpKQogICAgICAgICBjYWxsTGlua1N0YXR1cyA9IENhbGxMaW5rU3RhdHVzKGNhbGxUYXJnZXQt
PmFzSlNWYWx1ZSgpKS5zZXRJc1Byb3ZlZCh0cnVlKTsKICAgICAKKyAgICBpZiAoKCFjYWxsTGlu
a1N0YXR1cy5jYW5PcHRpbWl6ZSgpIHx8IGNhbGxMaW5rU3RhdHVzLnNpemUoKSAhPSAxKQorICAg
ICAgICAmJiAhaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkgJiYgT3B0aW9uczo6dXNlRlRMSklU
KCkKKyAgICAgICAgJiYgSW5saW5lQ2FsbEZyYW1lOjppc05vcm1hbENhbGwoa2luZCkKKyAgICAg
ICAgJiYgQ2FsbEVkZ2VMb2c6OmlzRW5hYmxlZCgpCisgICAgICAgICYmIE9wdGlvbnM6OmRmZ0Rv
ZXNDYWxsRWRnZVByb2ZpbGluZygpKSB7CisgICAgICAgIEFTU0VSVChvcCA9PSBDYWxsIHx8IG9w
ID09IENvbnN0cnVjdCk7CisgICAgICAgIGlmIChvcCA9PSBDYWxsKQorICAgICAgICAgICAgb3Ag
PSBQcm9maWxlZENhbGw7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG9wID0gUHJvZmlsZWRD
b25zdHJ1Y3Q7CisgICAgfQorICAgIAogICAgIGlmICghY2FsbExpbmtTdGF0dXMuY2FuT3B0aW1p
emUoKSkgewogICAgICAgICAvLyBPZGRseSwgdGhpcyBjb25mbGF0ZXMgY2FsbHMgdGhhdCBoYXZl
bid0IGV4ZWN1dGVkIHdpdGggY2FsbHMgdGhhdCBiZWhhdmVkIHN1ZmZpY2llbnRseSBwb2x5bW9y
cGhpY2FsbHkKICAgICAgICAgLy8gdGhhdCB3ZSBjYW5ub3Qgb3B0aW1pemUgdGhlbS4KICAgICAg
ICAgCi0gICAgICAgIGFkZENhbGwocmVzdWx0LCBvcCwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKKyAgICAgICAgYWRk
Q2FsbChyZXN1bHQsIG9wLCBPcEluZm8oKSwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBuZXh0T2Zmc2V0ID0gbV9jdXJyZW50SW5kZXggKyBp
bnN0cnVjdGlvblNpemU7Ci0KLSAgICBpZiAoSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24gPSBj
YWxsTGlua1N0YXR1cy5pbnRlcm5hbEZ1bmN0aW9uKCkpIHsKLSAgICAgICAgaWYgKGhhbmRsZUNv
bnN0YW50SW50ZXJuYWxGdW5jdGlvbihyZXN1bHQsIGZ1bmN0aW9uLCByZWdpc3Rlck9mZnNldCwg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHByZWRpY3Rpb24sIHNwZWNpYWxpemF0aW9uS2lu
ZCkpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgcGhhbnRvbWluZyBoYXMgdG8gYmUgKmFmdGVyKiB0
aGUgY29kZSBmb3IgdGhlIGludHJpbnNpYywgdG8gc2lnbmlmeSB0aGF0Ci0gICAgICAgICAgICAv
LyB0aGUgaW5wdXRzIG11c3QgYmUga2VwdCBhbGl2ZSB3aGF0ZXZlciBleGl0cyB0aGUgaW50cmlu
c2ljIG1heSBkby4KLSAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldCk7
Ci0gICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIENhbiBvbmx5IGhhbmRsZSB0
aGlzIHVzaW5nIHRoZSBnZW5lcmljIGNhbGwgaGFuZGxlci4KLSAgICAgICAgYWRkQ2FsbChyZXN1
bHQsIG9wLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJP
ZmZzZXQsIHByZWRpY3Rpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgICAgICAKLSAg
ICBJbnRyaW5zaWMgaW50cmluc2ljID0gY2FsbExpbmtTdGF0dXMuaW50cmluc2ljRm9yKHNwZWNp
YWxpemF0aW9uS2luZCk7Ci0KLSAgICBKU0Z1bmN0aW9uKiBrbm93bkZ1bmN0aW9uID0gbnVsbHB0
cjsKLSAgICBpZiAoaW50cmluc2ljICE9IE5vSW50cmluc2ljKSB7Ci0gICAgICAgIGVtaXRGdW5j
dGlvbkNoZWNrcyhjYWxsTGlua1N0YXR1cywgY2FsbFRhcmdldCwgcmVnaXN0ZXJPZmZzZXQsIHNw
ZWNpYWxpemF0aW9uS2luZCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgaWYgKGhhbmRsZUludHJp
bnNpYyhyZXN1bHQsIGludHJpbnNpYywgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBwcmVkaWN0aW9uKSkgewotICAgICAgICAgICAgLy8gVGhpcyBwaGFudG9taW5n
IGhhcyB0byBiZSAqYWZ0ZXIqIHRoZSBjb2RlIGZvciB0aGUgaW50cmluc2ljLCB0byBzaWduaWZ5
IHRoYXQKLSAgICAgICAgICAgIC8vIHRoZSBpbnB1dHMgbXVzdCBiZSBrZXB0IGFsaXZlIHdoYXRl
dmVyIGV4aXRzIHRoZSBpbnRyaW5zaWMgbWF5IGRvLgotICAgICAgICAgICAgYWRkVG9HcmFwaChQ
aGFudG9tLCBjYWxsVGFyZ2V0KTsKLSAgICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJl
Z2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25L
aW5kKTsKLSAgICAgICAgICAgIGlmIChtX2dyYXBoLmNvbXBpbGF0aW9uKCkpCi0gICAgICAgICAg
ICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkQ2FsbCgpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChoYW5kbGVJbmxpbmluZyhj
YWxsVGFyZ2V0LCByZXN1bHQsIGNhbGxMaW5rU3RhdHVzLCByZWdpc3Rlck9mZnNldCwgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQsIGtpbmQpKSB7CisgICAgCisgICAgT3BJ
bmZvIGNhbGxPcEluZm87CisgICAgCisgICAgaWYgKGhhbmRsZUlubGluaW5nKGNhbGxUYXJnZXQs
IHJlc3VsdCwgY2FsbExpbmtTdGF0dXMsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgbmV4dE9mZnNldCwgb3AsIGtpbmQsIHByZWRpY3Rpb24pKSB7CiAgICAgICAg
IGlmIChtX2dyYXBoLmNvbXBpbGF0aW9uKCkpCiAgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0
aW9uKCktPm5vdGljZUlubGluZWRDYWxsKCk7CiAgICAgICAgIHJldHVybjsKICNpZiBFTkFCTEUo
RlRMX05BVElWRV9DQUxMX0lOTElOSU5HKQotICAgIH0gZWxzZSBpZiAoaXNGVEwobV9ncmFwaC5t
X3BsYW4ubW9kZSkgJiYgT3B0aW9uczo6b3B0aW1pemVOYXRpdmVDYWxscygpKSB7Ci0gICAgICAg
IEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbExpbmtTdGF0dXMuZnVuY3Rpb24oKTsKKyAgICB9
IGVsc2UgaWYgKGlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpICYmIE9wdGlvbnM6Om9wdGltaXpl
TmF0aXZlQ2FsbHMoKSAmJiBjYWxsTGlua1N0YXR1cy5zaXplKCkgPT0gMSAmJiAhY2FsbExpbmtT
dGF0dXMuY291bGRUYWtlU2xvd1BhdGgoKSkgeworICAgICAgICBDYWxsVmFyaWFudCBjYWxsZWUg
PSBjYWxsTGlua1N0YXR1c1swXS5jYWxsZWUoKTsKKyAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rp
b24gPSBjYWxsZWUuZnVuY3Rpb24oKTsKICAgICAgICAgaWYgKGZ1bmN0aW9uICYmIGZ1bmN0aW9u
LT5pc0hvc3RGdW5jdGlvbigpKSB7Ci0gICAgICAgICAgICBlbWl0RnVuY3Rpb25DaGVja3MoY2Fs
bExpbmtTdGF0dXMsIGNhbGxUYXJnZXQsIHJlZ2lzdGVyT2Zmc2V0LCBzcGVjaWFsaXphdGlvbktp
bmQpOwotICAgICAgICAgICAga25vd25GdW5jdGlvbiA9IGZ1bmN0aW9uOworICAgICAgICAgICAg
ZW1pdEZ1bmN0aW9uQ2hlY2tzKGNhbGxlZSwgY2FsbFRhcmdldCwgcmVnaXN0ZXJPZmZzZXQsIHNw
ZWNpYWxpemF0aW9uS2luZCk7CisgICAgICAgICAgICBjYWxsT3BJbmZvID0gT3BJbmZvKG1fZ3Jh
cGguZnJlZXplKGZ1bmN0aW9uKSk7CiAKLSAgICAgICAgICAgIGlmIChvcCA9PSBDYWxsKSAKKyAg
ICAgICAgICAgIGlmIChvcCA9PSBDYWxsIHx8IG9wID09IFByb2ZpbGVkQ2FsbCkKICAgICAgICAg
ICAgICAgICBvcCA9IE5hdGl2ZUNhbGw7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBBU1NFUlQob3AgPT0gQ29uc3RydWN0KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQob3Ag
PT0gQ29uc3RydWN0IHx8IG9wID0gUHJvZmlsZWRDb25zdHJ1Y3QpOwogICAgICAgICAgICAgICAg
IG9wID0gTmF0aXZlQ29uc3RydWN0OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAjZW5kaWYK
ICAgICB9Ci0gICAgTm9kZSogY2FsbCA9IGFkZENhbGwocmVzdWx0LCBvcCwgY2FsbFRhcmdldCwg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsK
LQotICAgIGlmIChrbm93bkZ1bmN0aW9uKSAKLSAgICAgICAgY2FsbC0+Z2l2ZUtub3duRnVuY3Rp
b24oa25vd25GdW5jdGlvbik7CisgICAgCisgICAgYWRkQ2FsbChyZXN1bHQsIG9wLCBjYWxsT3BJ
bmZvLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZz
ZXQsIHByZWRpY3Rpb24pOwogfQogCi12b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0RnVuY3Rpb25D
aGVja3MoY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBOb2RlKiBjYWxsVGFy
Z2V0LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3Zv
aWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRGdW5jdGlvbkNoZWNrcyhDYWxsVmFyaWFudCBjYWxsZWUs
IE5vZGUqIGNhbGxUYXJnZXQsIGludCByZWdpc3Rlck9mZnNldCwgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kKQogewogICAgIE5vZGUqIHRoaXNBcmd1bWVudDsKICAgICBpZiAoa2luZCA9PSBD
b2RlRm9yQ2FsbCkKQEAgLTEwOTcsMjAgKzExMDMsMjUgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
ZW1pdEZ1bmN0aW9uQ2hlY2tzKAogICAgIGVsc2UKICAgICAgICAgdGhpc0FyZ3VtZW50ID0gMDsK
IAotICAgIGlmIChjYWxsTGlua1N0YXR1cy5pc1Byb3ZlZCgpKSB7Ci0gICAgICAgIGFkZFRvR3Jh
cGgoUGhhbnRvbSwgY2FsbFRhcmdldCwgdGhpc0FyZ3VtZW50KTsKLSAgICAgICAgcmV0dXJuOwor
ICAgIEpTQ2VsbCogY2FsbGVlQ2VsbDsKKyAgICBOb2RlKiBjYWxsVGFyZ2V0Rm9yQ2hlY2s7Cisg
ICAgaWYgKGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpIHsKKyAgICAgICAgY2FsbGVlQ2VsbCA9IGNh
bGxlZS5leGVjdXRhYmxlKCk7CisgICAgICAgIGNhbGxUYXJnZXRGb3JDaGVjayA9IGFkZFRvR3Jh
cGgoR2V0RXhlY3V0YWJsZSwgY2FsbFRhcmdldCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY2Fs
bGVlQ2VsbCA9IGNhbGxlZS5ub25FeGVjdXRhYmxlQ2FsbGVlKCk7CisgICAgICAgIGNhbGxUYXJn
ZXRGb3JDaGVjayA9IGNhbGxUYXJnZXQ7CiAgICAgfQogICAgIAotICAgIEFTU0VSVChjYWxsTGlu
a1N0YXR1cy5jYW5PcHRpbWl6ZSgpKTsKLSAgICAKLSAgICBpZiAoSlNGdW5jdGlvbiogZnVuY3Rp
b24gPSBjYWxsTGlua1N0YXR1cy5mdW5jdGlvbigpKQotICAgICAgICBhZGRUb0dyYXBoKENoZWNr
RnVuY3Rpb24sIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShmdW5jdGlvbikpLCBjYWxsVGFyZ2V0LCB0
aGlzQXJndW1lbnQpOwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQoY2FsbExpbmtTdGF0dXMu
ZXhlY3V0YWJsZSgpKTsKLSAgICAgICAgCi0gICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tFeGVjdXRh
YmxlLCBPcEluZm8oY2FsbExpbmtTdGF0dXMuZXhlY3V0YWJsZSgpKSwgY2FsbFRhcmdldCwgdGhp
c0FyZ3VtZW50KTsKLSAgICB9CisgICAgQVNTRVJUKGNhbGxlZUNlbGwpOworICAgIGFkZFRvR3Jh
cGgoQ2hlY2tDZWxsLCBPcEluZm8obV9ncmFwaC5mcmVlemUoY2FsbGVlQ2VsbCkpLCBjYWxsVGFy
Z2V0Rm9yQ2hlY2ssIHRoaXNBcmd1bWVudCk7Cit9CisKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OnVu
ZG9GdW5jdGlvbkNoZWNrcyhDYWxsVmFyaWFudCBjYWxsZWUpCit7CisgICAgcmVtb3ZlTGFzdE5v
ZGVGcm9tR3JhcGgoQ2hlY2tDZWxsKTsKKyAgICBpZiAoY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSkK
KyAgICAgICAgcmVtb3ZlTGFzdE5vZGVGcm9tR3JhcGgoR2V0RXhlY3V0YWJsZSk7CiB9CiAKIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRBcmd1bWVudFBoYW50b21zKGludCByZWdpc3Rlck9mZnNl
dCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IGtpbmQpCkBAIC0xMTE5LDM2ICsxMTMwLDI1IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRB
cmd1bWVudFBoYW50b20KICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBnZXQodmlydHVhbFJl
Z2lzdGVyRm9yQXJndW1lbnQoaSwgcmVnaXN0ZXJPZmZzZXQpKSk7CiB9CiAKLWJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0
T3BlcmFuZCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBpbnQgcmVnaXN0
ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9m
ZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQpCit1bnNpZ25lZCBCeXRlQ29kZVBhcnNl
cjo6aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7Ci0gICAgc3RhdGljIGNv
bnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwotICAgIAotICAgIENvZGVTcGVjaWFsaXphdGlvbktp
bmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXphdGlvbktp
bmRGb3Ioa2luZCk7Ci0gICAgCiAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2coIkNv
bnNpZGVyaW5nIGlubGluaW5nICIsIGNhbGxMaW5rU3RhdHVzLCAiIGludG8gIiwgY3VycmVudENv
ZGVPcmlnaW4oKSwgIlxuIik7CisgICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nIGlubGluaW5n
ICIsIGNhbGxlZSwgIiBpbnRvICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOwogICAgIAot
ICAgIC8vIEZpcnN0LCB0aGUgcmVhbGx5IHNpbXBsZSBjaGVja3M6IGRvIHdlIGhhdmUgYW4gYWN0
dWFsIEpTIGZ1bmN0aW9uPwotICAgIGlmICghY2FsbExpbmtTdGF0dXMuZXhlY3V0YWJsZSgpKSB7
CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY2FsbGVlLmZ1bmN0aW9uRXhl
Y3V0YWJsZSgpOworICAgIGlmICghZXhlY3V0YWJsZSkgewogICAgICAgICBpZiAodmVyYm9zZSkK
LSAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgdGhlcmUgaXMgbm8gZXhl
Y3V0YWJsZS5cbiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGlmIChjYWxs
TGlua1N0YXR1cy5leGVjdXRhYmxlKCktPmlzSG9zdEZ1bmN0aW9uKCkpIHsKLSAgICAgICAgaWYg
KHZlcmJvc2UpCi0gICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIGl0J3Mg
YSBob3N0IGZ1bmN0aW9uLlxuIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgdGhlcmUgaXMgbm8gZnVuY3Rpb24gZXhlY3V0
YWJsZS4iKTsKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgIH0KICAgICAKLSAgICBGdW5j
dGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4o
Y2FsbExpbmtTdGF0dXMuZXhlY3V0YWJsZSgpKTsKLSAgICAKICAgICAvLyBEb2VzIHRoZSBudW1i
ZXIgb2YgYXJndW1lbnRzIHdlJ3JlIHBhc3NpbmcgbWF0Y2ggdGhlIGFyaXR5IG9mIHRoZSB0YXJn
ZXQ/IFdlIGN1cnJlbnRseQogICAgIC8vIGlubGluZSBvbmx5IGlmIHRoZSBudW1iZXIgb2YgYXJn
dW1lbnRzIHBhc3NlZCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG51bWJlcgogICAg
IC8vIGFyZ3VtZW50cyBleHBlY3RlZC4KICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihleGVjdXRh
YmxlLT5wYXJhbWV0ZXJDb3VudCgpKSArIDEgPiBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykg
ewogICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5n
IGJlY2F1c2Ugb2YgYXJpdHkgbWlzbWF0Y2guXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQogICAgIAogICAgIC8vIERvIHdlIGhhdmUg
YSBjb2RlIGJsb2NrLCBhbmQgZG9lcyB0aGUgY29kZSBibG9jaydzIHNpemUgbWF0Y2ggdGhlIGhl
dXJpc3RpY3MvcmVxdWlyZW1lbnRzIGZvcgpAQCAtMTE1NywxOCArMTE1NywxOCBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgLy8gaWYgd2UgaGFkIGEgc3Rh
dGljIHByb29mIG9mIHdoYXQgd2FzIGJlaW5nIGNhbGxlZDsgdGhpcyBtaWdodCBoYXBwZW4gZm9y
IGV4YW1wbGUgaWYgeW91IGNhbGwgYQogICAgIC8vIGdsb2JhbCBmdW5jdGlvbiwgd2hlcmUgd2F0
Y2hwb2ludGluZyBnaXZlcyB1cyBzdGF0aWMgaW5mb3JtYXRpb24uIE92ZXJhbGwsIGl0J3MgYSBy
YXJlIGNhc2UKICAgICAvLyBiZWNhdXNlIHdlIGV4cGVjdCB0aGF0IGFueSBob3QgY2FsbGVlcyB3
b3VsZCBoYXZlIGFscmVhZHkgYmVlbiBjb21waWxlZC4KLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGV4ZWN1dGFibGUtPmJhc2VsaW5lQ29kZUJsb2NrRm9yKHNwZWNpYWxpemF0aW9uS2luZCk7
CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5iYXNlbGluZUNvZGVCbG9j
a0ZvcihraW5kKTsKICAgICBpZiAoIWNvZGVCbG9jaykgewogICAgICAgICBpZiAodmVyYm9zZSkK
ICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2Ugbm8gY29kZSBibG9jayBh
dmFpbGFibGUuXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gVUlO
VF9NQVg7CiAgICAgfQogICAgIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwgPSBpbmxp
bmVGdW5jdGlvbkZvckNhcGFiaWxpdHlMZXZlbCgKLSAgICAgICAgY29kZUJsb2NrLCBzcGVjaWFs
aXphdGlvbktpbmQsIGNhbGxMaW5rU3RhdHVzLmlzQ2xvc3VyZUNhbGwoKSk7CisgICAgICAgIGNv
ZGVCbG9jaywga2luZCwgY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSk7CiAgICAgaWYgKCFjYW5Jbmxp
bmUoY2FwYWJpbGl0eUxldmVsKSkgewogICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAg
IGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGlzIG5vdCBpbmxpbmVh
YmxlLlxuIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFY
OwogICAgIH0KICAgICAKICAgICAvLyBDaGVjayBpZiB0aGUgY2FsbGVyIGlzIGFscmVhZHkgdG9v
IGxhcmdlLiBXZSBkbyB0aGlzIGNoZWNrIGhlcmUgYmVjYXVzZSB0aGF0J3MganVzdApAQCAtMTE3
OCw3ICsxMTc4LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQog
ICAgICAgICBjb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID0gZmFsc2U7CiAgICAg
ICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVz
ZSB0aGUgY2FsbGVyIGlzIHRvbyBsYXJnZS5cbiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CiAgICAgCiAgICAgLy8gRklYTUU6IHRoaXMg
c2hvdWxkIGJlIGJldHRlciBhdCBwcmVkaWN0aW5nIGhvdyBtdWNoIGJsb2F0IHdlIHdpbGwgaW50
cm9kdWNlIGJ5IGlubGluaW5nCkBAIC0xMTk3LDcgKzExOTcsNyBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgICAgIGlmIChkZXB0aCA+PSBPcHRpb25zOjpt
YXhpbXVtSW5saW5pbmdEZXB0aCgpKSB7CiAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIGRlcHRoIGV4Y2VlZGVkLlxu
Iik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gVUlOVF9N
QVg7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChlbnRyeS0+ZXhlY3V0YWJsZSgp
ID09IGV4ZWN1dGFibGUpIHsKQEAgLTEyMDUsMTkgKzEyMDUsMjYgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgICAgICAgICAgaWYgKHJlY3Vyc2lvbiA+PSBP
cHRpb25zOjptYXhpbXVtSW5saW5pbmdSZWN1cnNpb24oKSkgewogICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNh
dXNlIHJlY3Vyc2lvbiBkZXRlY3RlZC5cbiIpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICB9CiAgICAgCiAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2coIiAg
ICBDb21taXR0aW5nIHRvIGlubGluaW5nLlxuIik7CisgICAgICAgIGRhdGFMb2coIiAgICBJbmxp
bmluZyBzaG91bGQgYmUgcG9zc2libGUuXG4iKTsKICAgICAKLSAgICAvLyBOb3cgd2Uga25vdyB3
aXRob3V0IGEgZG91YnQgdGhhdCB3ZSBhcmUgY29tbWl0dGVkIHRvIGlubGluaW5nLiBTbyBiZWdp
biB0aGUgcHJvY2VzcwotICAgIC8vIGJ5IGNoZWNraW5nIHRoZSBjYWxsZWUgKGlmIG5lY2Vzc2Fy
eSkgYW5kIG1ha2luZyBzdXJlIHRoYXQgYXJndW1lbnRzIGFuZCB0aGUgY2FsbGVlCi0gICAgLy8g
YXJlIGZsdXNoZWQuCi0gICAgZW1pdEZ1bmN0aW9uQ2hlY2tzKGNhbGxMaW5rU3RhdHVzLCBjYWxs
VGFyZ2V0Tm9kZSwgcmVnaXN0ZXJPZmZzZXQsIHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgLy8g
SXQgbWlnaHQgYmUgcG9zc2libGUgdG8gaW5saW5lLgorICAgIHJldHVybiBjb2RlQmxvY2stPmlu
c3RydWN0aW9uQ291bnQoKTsKK30KKwordm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChO
b2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENhbGxWYXJpYW50IGNhbGxl
ZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVu
c2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBDYWxsZXJMaW5r
YWJpbGl0eSBjYWxsZXJMaW5rYWJpbGl0eSkKK3sKKyAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IHNwZWNpYWxpemF0aW9uS2luZCA9IElubGluZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5k
Rm9yKGtpbmQpOworICAgIAorICAgIEFTU0VSVChpbmxpbmluZ0Nvc3QoY2FsbGVlLCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kKSAhPSBVSU5UX01BWCk7CiAg
ICAgCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsZWUuZnVuY3Rpb25FeGVjdXRhYmxl
KCktPmJhc2VsaW5lQ29kZUJsb2NrRm9yKHNwZWNpYWxpemF0aW9uS2luZCk7CisKICAgICAvLyBG
SVhNRTogRG9uJ3QgZmx1c2ggY29uc3RhbnRzIQogICAgIAogICAgIGludCBpbmxpbmVDYWxsRnJh
bWVTdGFydCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIo
cmVnaXN0ZXJPZmZzZXQpKS5vZmZzZXQoKSArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7
CkBAIC0xMjMzLDcgKzEyNDAsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmlu
ZyhOb2RlCiAgICAgICAgIHJlc3VsdFJlZyA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFu
ZChyZXN1bHRSZWcpOwogICAgIAogICAgIElubGluZVN0YWNrRW50cnkgaW5saW5lU3RhY2tFbnRy
eSgKLSAgICAgICAgdGhpcywgY29kZUJsb2NrLCBjb2RlQmxvY2ssIG1fZ3JhcGgubGFzdEJsb2Nr
KCksIGNhbGxMaW5rU3RhdHVzLmZ1bmN0aW9uKCksIHJlc3VsdFJlZywKKyAgICAgICAgdGhpcywg
Y29kZUJsb2NrLCBjb2RlQmxvY2ssIG1fZ3JhcGgubGFzdEJsb2NrKCksIGNhbGxlZS5mdW5jdGlv
bigpLCByZXN1bHRSZWcsCiAgICAgICAgIChWaXJ0dWFsUmVnaXN0ZXIpaW5saW5lQ2FsbEZyYW1l
U3RhcnQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBraW5kKTsKICAgICAKICAgICAvLyBU
aGlzIGlzIHdoZXJlIHRoZSBhY3R1YWwgaW5saW5pbmcgcmVhbGx5IGhhcHBlbnMuCkBAIC0xMjQ3
LDggKzEyNTQsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAg
ICAgCiAgICAgUkVMRUFTRV9BU1NFUlQoCiAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1faW5s
aW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsCi0gICAgICAgID09IGNhbGxMaW5rU3RhdHVzLmlz
Q2xvc3VyZUNhbGwoKSk7Ci0gICAgaWYgKGNhbGxMaW5rU3RhdHVzLmlzQ2xvc3VyZUNhbGwoKSkg
eworICAgICAgICA9PSBjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKTsKKyAgICBpZiAoY2FsbGVlLmlz
Q2xvc3VyZUNhbGwoKSkgewogICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGNhbGxlZVZhcmlh
YmxlID0KICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6Q2FsbGVlKSwg
Y2FsbFRhcmdldE5vZGUsIEltbWVkaWF0ZU5ha2VkU2V0KS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7
CiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogc2NvcGVWYXJpYWJsZSA9CkBAIC0xMjYzLDcg
KzEyNzAsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAg
bV9ncmFwaC5tX2lubGluZVZhcmlhYmxlRGF0YS5hcHBlbmQoaW5saW5lVmFyaWFibGVEYXRhKTsK
ICAgICAKICAgICBwYXJzZUNvZGVCbG9jaygpOwotICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsg
Ly8gUmVzZXQgb3VyIHN0YXRlIG5vdyB0aGF0IHdlJ3JlIGJhY2sgdG8gdGhlIG91dGVyIGNvZGUu
CisgICAgY2xlYXJDYWNoZXMoKTsgLy8gUmVzZXQgb3VyIHN0YXRlIG5vdyB0aGF0IHdlJ3JlIGJh
Y2sgdG8gdGhlIG91dGVyIGNvZGUuCiAgICAgCiAgICAgbV9jdXJyZW50SW5kZXggPSBvbGRJbmRl
eDsKICAgICAKQEAgLTEyNzYsMjAgKzEyODMsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVJbmxpbmluZyhOb2RlCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIEFTU0VSVChpbmxpbmVT
dGFja0VudHJ5Lm1fY2FsbHNpdGVCbG9ja0hlYWQtPmlzTGlua2VkKTsKICAgICAgICAgCi0gICAg
ICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB0aGUgY2FsbHNpdGUgYmxvY2sgaGVhZCBpcyBub3Qg
b3duZWQgYnkgdGhlIGNhbGxlci4KLSAgICAgICAgaWYgKCFpbmxpbmVTdGFja0VudHJ5Lm1fY2Fs
bGVyLT5tX3VubGlua2VkQmxvY2tzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgLy8gSXQncyBk
ZWZpbml0ZWx5IG93bmVkIGJ5IHRoZSBjYWxsZXIsIGJlY2F1c2UgdGhlIGNhbGxlciBjcmVhdGVk
IG5ldyBibG9ja3MuCi0gICAgICAgICAgICAvLyBBc3NlcnQgdGhhdCB0aGlzIGFsbCBhZGRzIHVw
LgotICAgICAgICAgICAgQVNTRVJUKGlubGluZVN0YWNrRW50cnkubV9jYWxsZXItPm1fdW5saW5r
ZWRCbG9ja3MubGFzdCgpLm1fYmxvY2sgPT0gaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxzaXRlQmxv
Y2tIZWFkKTsKLSAgICAgICAgICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLT5t
X3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX25lZWRzTm9ybWFsTGlua2luZyk7Ci0gICAgICAgICAg
ICBpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX25l
ZWRzTm9ybWFsTGlua2luZyA9IGZhbHNlOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
Ly8gSXQncyBkZWZpbml0ZWx5IG5vdCBvd25lZCBieSB0aGUgY2FsbGVyLiBUZWxsIHRoZSBjYWxs
ZXIgdGhhdCBoZSBkb2VzIG5vdAotICAgICAgICAgICAgLy8gbmVlZCB0byBsaW5rIGhpcyBjYWxs
c2l0ZSBibG9jayBoZWFkLCBiZWNhdXNlIHdlIGRpZCBpdCBmb3IgaGltLgotICAgICAgICAgICAg
QVNTRVJUKGlubGluZVN0YWNrRW50cnkubV9jYWxsZXItPm1fY2FsbHNpdGVCbG9ja0hlYWROZWVk
c0xpbmtpbmcpOwotICAgICAgICAgICAgQVNTRVJUKGlubGluZVN0YWNrRW50cnkubV9jYWxsZXIt
Pm1fY2FsbHNpdGVCbG9ja0hlYWQgPT0gaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxzaXRlQmxvY2tI
ZWFkKTsKLSAgICAgICAgICAgIGlubGluZVN0YWNrRW50cnkubV9jYWxsZXItPm1fY2FsbHNpdGVC
bG9ja0hlYWROZWVkc0xpbmtpbmcgPSBmYWxzZTsKLSAgICAgICAgfQorICAgICAgICBpZiAoY2Fs
bGVyTGlua2FiaWxpdHkgPT0gQ2FsbGVyRG9lc05vcm1hbExpbmtpbmcpCisgICAgICAgICAgICBj
YW5jZWxMaW5raW5nRm9yQmxvY2soaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlciwgaW5saW5lU3Rh
Y2tFbnRyeS5tX2NhbGxzaXRlQmxvY2tIZWFkKTsKICAgICAgICAgCiAgICAgICAgIGxpbmtCbG9j
a3MoaW5saW5lU3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLCBpbmxpbmVTdGFja0VudHJ5Lm1f
YmxvY2tMaW5raW5nVGFyZ2V0cyk7CiAgICAgfSBlbHNlCkBAIC0xMzA4LDE2ICsxMzAzLDE5IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAgICAgICAgIC8v
IGZvciByZWxlYXNlIGJ1aWxkcyBiZWNhdXNlIHRoaXMgYmxvY2sgd2lsbCBuZXZlciBzZXJ2ZSBh
cyBhIHBvdGVudGlhbCB0YXJnZXQKICAgICAgICAgICAgIC8vIGluIHRoZSBsaW5rZXIncyBiaW5h
cnkgc2VhcmNoLgogICAgICAgICAgICAgbGFzdEJsb2NrLT5ieXRlY29kZUJlZ2luID0gbV9jdXJy
ZW50SW5kZXg7Ci0gICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV91bmxp
bmtlZEJsb2Nrcy5hcHBlbmQoVW5saW5rZWRCbG9jayhtX2dyYXBoLmxhc3RCbG9jaygpKSk7Cisg
ICAgICAgICAgICBpZiAoY2FsbGVyTGlua2FiaWxpdHkgPT0gQ2FsbGVyRG9lc05vcm1hbExpbmtp
bmcpIHsKKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiQWRkaW5nIHVubGlua2VkIGJsb2NrICIsIFJhd1BvaW50ZXIobV9ncmFwaC5sYXN0
QmxvY2soKSksICIgKG9uZSByZXR1cm4pXG4iKTsKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0
YWNrVG9wLT5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5hcHBlbmQoVW5saW5rZWRCbG9jayht
X2dyYXBoLmxhc3RCbG9jaygpKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIG1fY3VycmVudEJsb2NrID0gbV9ncmFwaC5sYXN0QmxvY2soKTsKLSAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgLy8gSWYgd2Ug
Z2V0IHRvIHRoaXMgcG9pbnQgdGhlbiBhbGwgYmxvY2tzIG11c3QgZW5kIGluIHNvbWUgc29ydCBv
ZiB0ZXJtaW5hbHMuCiAgICAgQVNTRVJUKGxhc3RCbG9jay0+bGFzdCgpLT5pc1Rlcm1pbmFsKCkp
OwotICAgIAogCiAgICAgLy8gTmVlZCB0byBjcmVhdGUgYSBuZXcgYmFzaWMgYmxvY2sgZm9yIHRo
ZSBjb250aW51YXRpb24gYXQgdGhlIGNhbGxlci4KICAgICBSZWZQdHI8QmFzaWNCbG9jaz4gYmxv
Y2sgPSBhZG9wdFJlZihuZXcgQmFzaWNCbG9jayhuZXh0T2Zmc2V0LCBtX251bUFyZ3VtZW50cywg
bV9udW1Mb2NhbHMsIFBOYU4pKTsKQEAgLTEzMzMsMjAgKzEzMzEsMjkzIEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAgICAgQVNTRVJUKCFub2RlLT50YXJn
ZXRCbG9jaygpKTsKICAgICAgICAgbm9kZS0+dGFyZ2V0QmxvY2soKSA9IGJsb2NrLmdldCgpOwog
ICAgICAgICBpbmxpbmVTdGFja0VudHJ5Lm1fdW5saW5rZWRCbG9ja3NbaV0ubV9uZWVkc0Vhcmx5
UmV0dXJuTGlua2luZyA9IGZhbHNlOwotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICAgICAgYmxv
Y2tUb0xpbmstPmlzTGlua2VkID0gdHJ1ZTsKLSNlbmRpZgorICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgICAgIGRhdGFMb2coIk1hcmtpbmcgIiwgUmF3UG9pbnRlcihibG9ja1RvTGluayks
ICIgYXMgbGlua2VkIChqdW1wcyB0byByZXR1cm4pXG4iKTsKKyAgICAgICAgYmxvY2tUb0xpbmst
PmRpZExpbmsoKTsKICAgICB9CiAgICAgCiAgICAgbV9jdXJyZW50QmxvY2sgPSBibG9jay5nZXQo
KTsKICAgICBBU1NFUlQobV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5n
VGFyZ2V0cy5pc0VtcHR5KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tM
aW5raW5nVGFyZ2V0cy5sYXN0KCktPmJ5dGVjb2RlQmVnaW4gPCBuZXh0T2Zmc2V0KTsKLSAgICBt
X2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5hcHBlbmQoVW5saW5r
ZWRCbG9jayhibG9jay5nZXQoKSkpOwotICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5t
X2Jsb2NrTGlua2luZ1RhcmdldHMuYXBwZW5kKGJsb2NrLmdldCgpKTsKKyAgICBpZiAodmVyYm9z
ZSkKKyAgICAgICAgZGF0YUxvZygiQWRkaW5nIHVubGlua2VkIGJsb2NrICIsIFJhd1BvaW50ZXIo
YmxvY2suZ2V0KCkpLCAiIChtYW55IHJldHVybnMpXG4iKTsKKyAgICBpZiAoY2FsbGVyTGlua2Fi
aWxpdHkgPT0gQ2FsbGVyRG9lc05vcm1hbExpbmtpbmcpIHsKKyAgICAgICAgbV9pbmxpbmVTdGFj
a1RvcC0+bV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxv
Y2suZ2V0KCkpKTsKKyAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tM
aW5raW5nVGFyZ2V0cy5hcHBlbmQoYmxvY2suZ2V0KCkpOworICAgIH0KICAgICBtX2dyYXBoLmFw
cGVuZEJsb2NrKGJsb2NrKTsKICAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7Cit9CisKK3ZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OmNhbmNlbExpbmtpbmdGb3JCbG9jayhJbmxpbmVTdGFja0VudHJ5KiBp
bmxpbmVTdGFja0VudHJ5LCBCYXNpY0Jsb2NrKiBibG9jaykKK3sKKyAgICAvLyBJdCdzIHBvc3Np
YmxlIHRoYXQgdGhlIGNhbGxzaXRlIGJsb2NrIGhlYWQgaXMgbm90IG93bmVkIGJ5IHRoZSBjYWxs
ZXIuCisgICAgaWYgKCFpbmxpbmVTdGFja0VudHJ5LT5tX3VubGlua2VkQmxvY2tzLmlzRW1wdHko
KSkgeworICAgICAgICAvLyBJdCdzIGRlZmluaXRlbHkgb3duZWQgYnkgdGhlIGNhbGxlciwgYmVj
YXVzZSB0aGUgY2FsbGVyIGNyZWF0ZWQgbmV3IGJsb2Nrcy4KKyAgICAgICAgLy8gQXNzZXJ0IHRo
YXQgdGhpcyBhbGwgYWRkcyB1cC4KKyAgICAgICAgQVNTRVJUX1VOVVNFRChibG9jaywgaW5saW5l
U3RhY2tFbnRyeS0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9ibG9jayA9PSBibG9jayk7Cisg
ICAgICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5LT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5t
X25lZWRzTm9ybWFsTGlua2luZyk7CisgICAgICAgIGlubGluZVN0YWNrRW50cnktPm1fdW5saW5r
ZWRCbG9ja3MubGFzdCgpLm1fbmVlZHNOb3JtYWxMaW5raW5nID0gZmFsc2U7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgLy8gSXQncyBkZWZpbml0ZWx5IG5vdCBvd25lZCBieSB0aGUgY2FsbGVyLiBU
ZWxsIHRoZSBjYWxsZXIgdGhhdCBoZSBkb2VzIG5vdAorICAgICAgICAvLyBuZWVkIHRvIGxpbmsg
aGlzIGNhbGxzaXRlIGJsb2NrIGhlYWQsIGJlY2F1c2Ugd2UgZGlkIGl0IGZvciBoaW0uCisgICAg
ICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5LT5tX2NhbGxzaXRlQmxvY2tIZWFkTmVlZHNMaW5r
aW5nKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChibG9jaywgaW5saW5lU3RhY2tFbnRyeS0+bV9j
YWxsc2l0ZUJsb2NrSGVhZCA9PSBibG9jayk7CisgICAgICAgIGlubGluZVN0YWNrRW50cnktPm1f
Y2FsbHNpdGVCbG9ja0hlYWROZWVkc0xpbmtpbmcgPSBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wg
Qnl0ZUNvZGVQYXJzZXI6OmF0dGVtcHRUb0lubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUs
IGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyaWFudCBjYWxsZWUsIGludCByZWdpc3Rlck9mZnNl
dCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBJ
bmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgQ2FsbGVyTGlua2FiaWxpdHkgY2FsbGVyTGlua2Fi
aWxpdHksIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxpbmluZ0JhbGFu
Y2UpCit7CisgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQgPSBJ
bmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5kKTsKKyAgICAKKyAgICBp
ZiAoIWlubGluaW5nQmFsYW5jZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlm
IChJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS5pbnRlcm5hbEZ1bmN0aW9uKCkp
IHsKKyAgICAgICAgaWYgKGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihyZXN1bHRPcGVy
YW5kLCBmdW5jdGlvbiwgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LCBzcGVjaWFsaXphdGlvbktpbmQpKSB7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20s
IGNhbGxUYXJnZXROb2RlKTsKKyAgICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lz
dGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5k
KTsKKyAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZS0tOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBJ
bnRyaW5zaWMgaW50cmluc2ljID0gY2FsbGVlLmludHJpbnNpY0ZvcihzcGVjaWFsaXphdGlvbktp
bmQpOworICAgIGlmIChpbnRyaW5zaWMgIT0gTm9JbnRyaW5zaWMpIHsKKyAgICAgICAgaWYgKGhh
bmRsZUludHJpbnNpYyhyZXN1bHRPcGVyYW5kLCBpbnRyaW5zaWMsIHJlZ2lzdGVyT2Zmc2V0LCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbikpIHsKKyAgICAgICAgICAgIGFk
ZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldE5vZGUpOworICAgICAgICAgICAgZW1pdEFyZ3Vt
ZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBz
cGVjaWFsaXphdGlvbktpbmQpOworICAgICAgICAgICAgaW5saW5pbmdCYWxhbmNlLS07CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIAorICAgIHVuc2lnbmVkIG15SW5saW5pbmdDb3N0ID0gaW5saW5pbmdDb3N0KGNh
bGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7Cisg
ICAgaWYgKG15SW5saW5pbmdDb3N0ID4gaW5saW5pbmdCYWxhbmNlKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgCisgICAgaW5saW5lQ2FsbChjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0T3BlcmFu
ZCwgY2FsbGVlLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG5l
eHRPZmZzZXQsIGtpbmQsIGNhbGxlckxpbmthYmlsaXR5KTsKKyAgICBpbmxpbmluZ0JhbGFuY2Ug
LT0gbXlJbmxpbmluZ0Nvc3Q7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3Bl
cmFuZCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBpbnQgcmVnaXN0ZXJP
ZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNl
dCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbikKK3sKKyAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBkYXRhTG9n
KCJIYW5kbGluZyBpbmxpbmluZy4uLlxuIik7CisgICAgICAgIGRhdGFMb2coIlN0YWNrOiAiLCBj
dXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKKyAgICB9CisgICAgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBzcGVjaWFsaXphdGlvbktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9u
S2luZEZvcihraW5kKTsKKyAgICAKKyAgICBpZiAoIWNhbGxMaW5rU3RhdHVzLnNpemUoKSkgewor
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGRhdGFMb2coIkJhaWxpbmcgaW5saW5p
bmcuXG4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25l
ZCBpbmxpbmluZ0JhbGFuY2UgPSBPcHRpb25zOjptYXhpbXVtRnVuY3Rpb25Gb3JDYWxsSW5saW5l
Q2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgpOworICAgIGlmIChzcGVjaWFsaXphdGlvbktpbmQg
PT0gQ29kZUZvckNvbnN0cnVjdCkKKyAgICAgICAgaW5saW5pbmdCYWxhbmNlID0gc3RkOjptaW4o
aW5saW5pbmdCYWxhbmNlLCBPcHRpb25zOjptYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxp
bmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCkpOworICAgIGlmIChjYWxsTGlua1N0YXR1cy5p
c0Nsb3N1cmVDYWxsKCkpCisgICAgICAgIGlubGluaW5nQmFsYW5jZSA9IHN0ZDo6bWluKGlubGlu
aW5nQmFsYW5jZSwgT3B0aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9yQ2xvc3VyZUNhbGxJbmxpbmVD
YW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCkpOworICAgIAorICAgIC8vIEZpcnN0IGNoZWNrIGlm
IHdlIGNhbiBhdm9pZCBjcmVhdGluZyBjb250cm9sIGZsb3cuIE91ciBpbmxpbmVyIGRvZXMgc29t
ZSBDRkcKKyAgICAvLyBzaW1wbGlmaWNhdGlvbiBvbiB0aGUgZmx5IGFuZCB0aGlzIGhlbHBzIHJl
ZHVjZSBjb21waWxlIHRpbWVzLCBidXQgd2UgY2FuIG9ubHkgbGV2ZXJhZ2UKKyAgICAvLyB0aGlz
IGluIGNhc2VzIHdoZXJlIHdlIGRvbid0IG5lZWQgY29udHJvbCBmbG93IGRpYW1vbmRzIHRvIGNo
ZWNrIHRoZSBjYWxsZWUuCisgICAgaWYgKCFjYWxsTGlua1N0YXR1cy5jb3VsZFRha2VTbG93UGF0
aCgpICYmIGNhbGxMaW5rU3RhdHVzLnNpemUoKSA9PSAxKSB7CisgICAgICAgIGVtaXRGdW5jdGlv
bkNoZWNrcygKKyAgICAgICAgICAgIGNhbGxMaW5rU3RhdHVzWzBdLmNhbGxlZSgpLCBjYWxsVGFy
Z2V0Tm9kZSwgcmVnaXN0ZXJPZmZzZXQsIHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgICAgIGJv
b2wgcmVzdWx0ID0gYXR0ZW1wdFRvSW5saW5lQ2FsbCgKKyAgICAgICAgICAgIGNhbGxUYXJnZXRO
b2RlLCByZXN1bHRPcGVyYW5kLCBjYWxsTGlua1N0YXR1c1swXS5jYWxsZWUoKSwgcmVnaXN0ZXJP
ZmZzZXQsCisgICAgICAgICAgICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbmV4dE9mZnNl
dCwga2luZCwgQ2FsbGVyRG9lc05vcm1hbExpbmtpbmcsIHByZWRpY3Rpb24sCisgICAgICAgICAg
ICBpbmxpbmluZ0JhbGFuY2UpOworICAgICAgICBpZiAoIXJlc3VsdCAmJiAhY2FsbExpbmtTdGF0
dXMuaXNQcm92ZWQoKSkKKyAgICAgICAgICAgIHVuZG9GdW5jdGlvbkNoZWNrcyhjYWxsTGlua1N0
YXR1c1swXS5jYWxsZWUoKSk7CisgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICBk
YXRhTG9nKCJEb25lIGlubGluaW5nIChzaW1wbGUpLlxuIik7CisgICAgICAgICAgICBkYXRhTG9n
KCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgLy8gV2UgbmVlZCB0byBjcmVhdGUg
c29tZSBraW5kIG9mIHN3aXRjaCBvdmVyIGNhbGxlZS4gRm9yIG5vdyB3ZSBvbmx5IGRvIHRoaXMg
aWYgd2UgYmVsaWV2ZSB0aGF0CisgICAgLy8gd2UncmUgaW4gdGhlIHRvcCB0aWVyLiBXZSBoYXZl
IHR3byByZWFzb25zIGZvciB0aGlzOiBmaXJzdCwgaXQgcHJvdmlkZXMgdXMgYW4gb3Bwb3J0dW5p
dHkgdG8KKyAgICAvLyBkbyBtb3JlIGRldGFpbGVkIHBvbHl2YXJpYW50L3BvbHltb3JwaGljIHBy
b2ZpbGluZzsgYW5kIHNlY29uZCwgaXQgcmVkdWNlcyBjb21waWxlIHRpbWVzIGluCisgICAgLy8g
dGhlIERGRy4gQW5kIGJ5IHBvbHl2YXJpYW50IHByb2ZpbGluZyB3ZSBtZWFuIHBvbHl2YXJpYW50
IHByb2ZpbGluZyBvZiAqdGhpcyogY2FsbC4gTm90ZSB0aGF0CisgICAgLy8gd2UgY291bGQgaW1w
cm92ZSB0aGF0IGFzcGVjdCBvZiB0aGlzIGJ5IGRvaW5nIHBvbHltb3JwaGljIGlubGluaW5nIGJ1
dCBoYXZpbmcgdGhlIHByb2ZpbGluZworICAgIC8vIGFsc28uIEN1cnJlbnRseSB3ZSBvcHQgYWdh
aW5zdCB0aGlzLCBidXQgaXQgY291bGQgYmUgaW50ZXJlc3RpbmcuIFRoYXQgd291bGQgcmVxdWly
ZSBoYXZpbmcgYQorICAgIC8vIHNlcGFyYXRlIG5vZGUgZm9yIGNhbGwgZWRnZSBwcm9maWxpbmcu
CisgICAgLy8gRklYTUU6IEludHJvZHVjZSB0aGUgbm90aW9uIG9mIGEgc2VwYXJhdGUgY2FsbCBl
ZGdlIHByb2ZpbGluZyBub2RlLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzYwMzMKKyAgICBpZiAoIWlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpIHx8
ICFPcHRpb25zOjplbmFibGVQb2x5bW9ycGhpY0NhbGxJbmxpbmluZygpKSB7CisgICAgICAgIGlm
ICh2ZXJib3NlKSB7CisgICAgICAgICAgICBkYXRhTG9nKCJCYWlsaW5nIGlubGluaW5nIChoYXJk
KS5cbiIpOworICAgICAgICAgICAgZGF0YUxvZygiU3RhY2s6ICIsIGN1cnJlbnRDb2RlT3JpZ2lu
KCksICJcbiIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAg
CisgICAgdW5zaWduZWQgb2xkT2Zmc2V0ID0gbV9jdXJyZW50SW5kZXg7CisgICAgCisgICAgYm9v
bCBhbGxBcmVDbG9zdXJlQ2FsbHMgPSB0cnVlOworICAgIGJvb2wgYWxsQXJlRGlyZWN0Q2FsbHMg
PSB0cnVlOworICAgIGZvciAodW5zaWduZWQgaSA9IGNhbGxMaW5rU3RhdHVzLnNpemUoKTsgaS0t
OykgeworICAgICAgICBpZiAoY2FsbExpbmtTdGF0dXNbaV0uY2FsbGVlKCkuaXNDbG9zdXJlQ2Fs
bCgpKQorICAgICAgICAgICAgYWxsQXJlRGlyZWN0Q2FsbHMgPSBmYWxzZTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgYWxsQXJlQ2xvc3VyZUNhbGxzID0gZmFsc2U7CisgICAgfQorICAgIAor
ICAgIE5vZGUqIHRoaW5nVG9Td2l0Y2hPbjsKKyAgICBpZiAoYWxsQXJlRGlyZWN0Q2FsbHMpCisg
ICAgICAgIHRoaW5nVG9Td2l0Y2hPbiA9IGNhbGxUYXJnZXROb2RlOworICAgIGVsc2UgaWYgKGFs
bEFyZUNsb3N1cmVDYWxscykKKyAgICAgICAgdGhpbmdUb1N3aXRjaE9uID0gYWRkVG9HcmFwaChH
ZXRFeGVjdXRhYmxlLCBjYWxsVGFyZ2V0Tm9kZSk7CisgICAgZWxzZSB7CisgICAgICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgdGhpcyBjYXNlLCBidXQgaXQncyB0cmlj
a3kgYW5kIHdlIGRvbid0IGtub3cgb2YgY2FzZXMKKyAgICAgICAgLy8gd2hlcmUgaXQgd291bGQg
YmUgYmVuZWZpY2lhbC4gQWxzbywgQ2FsbExpbmtTdGF0dXMgd291bGQgbWFrZSBhbGwgY2FsbGVl
cyBhcHBlYXIgbGlrZQorICAgICAgICAvLyBjbG9zdXJlIGNhbGxzIGlmIGFueSBjYWxscyB3ZXJl
IGNsb3N1cmUgY2FsbHMgLSBleGNlcHQgZm9yIGNhbGxzIHRvIGludGVybmFsIGZ1bmN0aW9ucy4K
KyAgICAgICAgLy8gU28gdGhpcyB3aWxsIG9ubHkgYXJpc2UgaWYgc29tZSBjYWxsZWVzIGFyZSBp
bnRlcm5hbCBmdW5jdGlvbnMgYW5kIG90aGVycyBhcmUgY2xvc3VyZXMuCisgICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYwMjAKKyAgICAgICAgaWYg
KHZlcmJvc2UpIHsKKyAgICAgICAgICAgIGRhdGFMb2coIkJhaWxpbmcgaW5saW5pbmcgKG1peCku
XG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigp
LCAiXG4iKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAor
ICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGRhdGFMb2coIkRvaW5nIGhhcmQgaW5saW5pbmcu
Li5cbiIpOworICAgICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwg
IlxuIik7CisgICAgfQorICAgIAorICAgIC8vIFRoaXMgbWFrZXMgbWUgd2lzaCB0aGF0IHdlIHdl
cmUgaW4gU1NBIGFsbCB0aGUgdGltZS4gV2UgbmVlZCB0byBwaWNrIGEgdmFyaWFibGUgaW50byB3
aGljaCB0bworICAgIC8vIHN0b3JlIHRoZSBjYWxsZWUgc28gdGhhdCBpdCB3aWxsIGJlIGFjY2Vz
c2libGUgdG8gYWxsIG9mIHRoZSBibG9ja3Mgd2UncmUgYWJvdXQgdG8gY3JlYXRlLiBXZQorICAg
IC8vIGdldCBhd2F5IHdpdGggZG9pbmcgYW4gaW1tZWRpYXRlLXNldCBoZXJlIGJlY2F1c2Ugd2Ug
d291bGRuJ3QgaGF2ZSBwZXJmb3JtZWQgYW55IHNpZGUgZWZmZWN0cworICAgIC8vIHlldC4KKyAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygiUmVnaXN0ZXIgb2Zmc2V0OiAiLCByZWdp
c3Rlck9mZnNldCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZVJlZyhyZWdpc3Rlck9mZnNl
dCArIEpTU3RhY2s6OkNhbGxlZSk7CisgICAgY2FsbGVlUmVnID0gbV9pbmxpbmVTdGFja1RvcC0+
cmVtYXBPcGVyYW5kKGNhbGxlZVJlZyk7CisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGRhdGFM
b2coIkNhbGxlZSBpcyBnb2luZyB0byBiZSAiLCBjYWxsZWVSZWcsICJcbiIpOworICAgIHNldERp
cmVjdChjYWxsZWVSZWcsIGNhbGxUYXJnZXROb2RlLCBJbW1lZGlhdGVTZXRXaXRoRmx1c2gpOwor
ICAgIAorICAgIFN3aXRjaERhdGEmIGRhdGEgPSAqbV9ncmFwaC5tX3N3aXRjaERhdGEuYWRkKCk7
CisgICAgZGF0YS5raW5kID0gU3dpdGNoQ2VsbDsKKyAgICBhZGRUb0dyYXBoKFN3aXRjaCwgT3BJ
bmZvKCZkYXRhKSwgdGhpbmdUb1N3aXRjaE9uKTsKKyAgICAKKyAgICBCYXNpY0Jsb2NrKiBvcmln
aW5CbG9jayA9IG1fY3VycmVudEJsb2NrOworICAgIGlmICh2ZXJib3NlKQorICAgICAgICBkYXRh
TG9nKCJNYXJraW5nICIsIFJhd1BvaW50ZXIob3JpZ2luQmxvY2spLCAiIGFzIGxpbmtlZCAob3Jp
Z2luIG9mIHBvbHkgaW5saW5lKVxuIik7CisgICAgb3JpZ2luQmxvY2stPmRpZExpbmsoKTsKKyAg
ICBjYW5jZWxMaW5raW5nRm9yQmxvY2sobV9pbmxpbmVTdGFja1RvcCwgb3JpZ2luQmxvY2spOwor
ICAgIAorICAgIC8vIEVhY2ggaW5saW5lZCBjYWxsZWUgd2lsbCBoYXZlIGEgbGFuZGluZyBibG9j
ayB0aGF0IGl0IHJldHVybnMgYXQuIFRoZXkgc2hvdWxkIGFsbCBoYXZlIGp1bXBzCisgICAgLy8g
dG8gdGhlIGNvbnRpbnVhdGlvbiBibG9jaywgd2hpY2ggd2UgY3JlYXRlIGxhc3QuCisgICAgVmVj
dG9yPEJhc2ljQmxvY2sqPiBsYW5kaW5nQmxvY2tzOworICAgIAorICAgIC8vIFdlIG1ha2UgZm9y
Y2UgdGhpcyB0cnVlIGlmIHdlIGdpdmUgdXAgb24gaW5saW5pbmcgYW55IG9mIHRoZSBlZGdlcy4K
KyAgICBib29sIGNvdWxkVGFrZVNsb3dQYXRoID0gY2FsbExpbmtTdGF0dXMuY291bGRUYWtlU2xv
d1BhdGgoKTsKKyAgICAKKyAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygiQWJvdXQg
dG8gbG9vcCBvdmVyIGZ1bmN0aW9ucyBhdCAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiLlxuIik7
CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxMaW5rU3RhdHVzLnNpemUo
KTsgKytpKSB7CisgICAgICAgIG1fY3VycmVudEluZGV4ID0gb2xkT2Zmc2V0OworICAgICAgICBS
ZWZQdHI8QmFzaWNCbG9jaz4gYmxvY2sgPSBhZG9wdFJlZihuZXcgQmFzaWNCbG9jayhVSU5UX01B
WCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCBQTmFOKSk7CisgICAgICAgIG1fY3VycmVu
dEJsb2NrID0gYmxvY2suZ2V0KCk7CisgICAgICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soYmxvY2sp
OworICAgICAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CisgICAgICAgIAorICAgICAgICBOb2Rl
KiBteUNhbGxUYXJnZXROb2RlID0gZ2V0RGlyZWN0KGNhbGxlZVJlZyk7CisgICAgICAgIAorICAg
ICAgICBib29sIGlubGluaW5nUmVzdWx0ID0gYXR0ZW1wdFRvSW5saW5lQ2FsbCgKKyAgICAgICAg
ICAgIG15Q2FsbFRhcmdldE5vZGUsIHJlc3VsdE9wZXJhbmQsIGNhbGxMaW5rU3RhdHVzW2ldLmNh
bGxlZSgpLCByZWdpc3Rlck9mZnNldCwKKyAgICAgICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBuZXh0T2Zmc2V0LCBraW5kLCBDYWxsZXJMaW5rc01hbnVhbGx5LCBwcmVkaWN0aW9u
LAorICAgICAgICAgICAgaW5saW5pbmdCYWxhbmNlKTsKKyAgICAgICAgCisgICAgICAgIGlmICgh
aW5saW5pbmdSZXN1bHQpIHsKKyAgICAgICAgICAgIC8vIFRoYXQgZmFpbGVkIHNvIHdlIGxldCB0
aGUgYmxvY2sgZGllLiBOb3RoaW5nIGludGVyZXN0aW5nIHNob3VsZCBoYXZlIGJlZW4gYWRkZWQg
dG8KKyAgICAgICAgICAgIC8vIHRoZSBibG9jay4gV2UgYWxzbyBnaXZlIHVwIG9uIGlubGluaW5n
IGFueSBvZiB0aGUgKGxlc3MgZnJlcXVlbnQpIGNhbGxlZXMuCisgICAgICAgICAgICBBU1NFUlQo
bV9jdXJyZW50QmxvY2sgPT0gYmxvY2suZ2V0KCkpOworICAgICAgICAgICAgQVNTRVJUKG1fZ3Jh
cGgubV9ibG9ja3MubGFzdCgpID09IGJsb2NrKTsKKyAgICAgICAgICAgIG1fZ3JhcGgua2lsbEJs
b2NrQW5kSXRzQ29udGVudHMoYmxvY2suZ2V0KCkpOworICAgICAgICAgICAgbV9ncmFwaC5tX2Js
b2Nrcy5yZW1vdmVMYXN0KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFRoZSBmYWN0
IHRoYXQgaW5saW5pbmcgZmFpbGVkIG1lYW5zIHdlIG5lZWQgYSBzbG93IHBhdGguCisgICAgICAg
ICAgICBjb3VsZFRha2VTbG93UGF0aCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgSlNDZWxsKiB0aGluZ1RvQ2FzZU9uOworICAgICAgICBp
ZiAoYWxsQXJlRGlyZWN0Q2FsbHMpCisgICAgICAgICAgICB0aGluZ1RvQ2FzZU9uID0gY2FsbExp
bmtTdGF0dXNbaV0uY2FsbGVlKCkubm9uRXhlY3V0YWJsZUNhbGxlZSgpOworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIEFTU0VSVChhbGxBcmVDbG9zdXJlQ2FsbHMpOworICAgICAgICAgICAg
dGhpbmdUb0Nhc2VPbiA9IGNhbGxMaW5rU3RhdHVzW2ldLmNhbGxlZSgpLmV4ZWN1dGFibGUoKTsK
KyAgICAgICAgfQorICAgICAgICBkYXRhLmNhc2VzLmFwcGVuZChTd2l0Y2hDYXNlKG1fZ3JhcGgu
ZnJlZXplKHRoaW5nVG9DYXNlT24pLCBibG9jay5nZXQoKSkpOworICAgICAgICBtX2N1cnJlbnRJ
bmRleCA9IG5leHRPZmZzZXQ7CisgICAgICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7IC8vIFRo
aXMgb25seSBjb21lcyBpbnRvIHBsYXkgZm9yIGludHJpbnNpY3MsIHNpbmNlIG5vcm1hbCBpbmxp
bmVkIGNvZGUgd2lsbCBsZWF2ZSBhbiBlbXB0eSBxdWV1ZS4KKyAgICAgICAgYWRkVG9HcmFwaChK
dW1wKTsKKyAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBkYXRhTG9nKCJNYXJraW5n
ICIsIFJhd1BvaW50ZXIobV9jdXJyZW50QmxvY2spLCAiIGFzIGxpbmtlZCAodGFpbCBvZiBwb2x5
IGlubGluZWUpXG4iKTsKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmRpZExpbmsoKTsKKyAgICAg
ICAgbGFuZGluZ0Jsb2Nrcy5hcHBlbmQobV9jdXJyZW50QmxvY2spOworCisgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgZGF0YUxvZygiRmluaXNoZWQgaW5saW5pbmcgIiwgY2FsbExp
bmtTdGF0dXNbaV0uY2FsbGVlKCksICIgYXQgIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIi5cbiIp
OworICAgIH0KKyAgICAKKyAgICBSZWZQdHI8QmFzaWNCbG9jaz4gc2xvd1BhdGhCbG9jayA9IGFk
b3B0UmVmKAorICAgICAgICBuZXcgQmFzaWNCbG9jayhVSU5UX01BWCwgbV9udW1Bcmd1bWVudHMs
IG1fbnVtTG9jYWxzLCBQTmFOKSk7CisgICAgbV9jdXJyZW50SW5kZXggPSBvbGRPZmZzZXQ7Cisg
ICAgZGF0YS5mYWxsVGhyb3VnaCA9IEJyYW5jaFRhcmdldChzbG93UGF0aEJsb2NrLmdldCgpKTsK
KyAgICBtX2dyYXBoLmFwcGVuZEJsb2NrKHNsb3dQYXRoQmxvY2spOworICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICBkYXRhTG9nKCJNYXJraW5nICIsIFJhd1BvaW50ZXIoc2xvd1BhdGhCbG9jay5n
ZXQoKSksICIgYXMgbGlua2VkIChzbG93IHBhdGggYmxvY2spXG4iKTsKKyAgICBzbG93UGF0aEJs
b2NrLT5kaWRMaW5rKCk7CisgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOworICAgIG1fY3VycmVu
dEJsb2NrID0gc2xvd1BhdGhCbG9jay5nZXQoKTsKKyAgICBOb2RlKiBteUNhbGxUYXJnZXROb2Rl
ID0gZ2V0RGlyZWN0KGNhbGxlZVJlZyk7CisgICAgaWYgKGNvdWxkVGFrZVNsb3dQYXRoKSB7Cisg
ICAgICAgIGFkZENhbGwoCisgICAgICAgICAgICByZXN1bHRPcGVyYW5kLCBjYWxsT3AsIE9wSW5m
bygpLCBteUNhbGxUYXJnZXROb2RlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywKKyAgICAg
ICAgICAgIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBhZGRUb0dyYXBoKENoZWNrQmFkQ2VsbCk7CisgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwg
bXlDYWxsVGFyZ2V0Tm9kZSk7CisgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVy
T2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kKTsK
KyAgICAgICAgCisgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGFk
ZFRvR3JhcGgoQm90dG9tVmFsdWUpKTsKKyAgICB9CisKKyAgICBtX2N1cnJlbnRJbmRleCA9IG5l
eHRPZmZzZXQ7CisgICAgcHJvY2Vzc1NldExvY2FsUXVldWUoKTsKKyAgICBhZGRUb0dyYXBoKEp1
bXApOworICAgIGxhbmRpbmdCbG9ja3MuYXBwZW5kKG1fY3VycmVudEJsb2NrKTsKKyAgICAKKyAg
ICBSZWZQdHI8QmFzaWNCbG9jaz4gY29udGludWF0aW9uQmxvY2sgPSBhZG9wdFJlZigKKyAgICAg
ICAgbmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2Fscywg
UE5hTikpOworICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soY29udGludWF0aW9uQmxvY2spOworICAg
IGlmICh2ZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJBZGRpbmcgdW5saW5rZWQgYmxvY2sgIiwg
UmF3UG9pbnRlcihjb250aW51YXRpb25CbG9jay5nZXQoKSksICIgKGNvbnRpbnVhdGlvbilcbiIp
OworICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2Vk
QmxvY2soY29udGludWF0aW9uQmxvY2suZ2V0KCkpKTsKKyAgICBwcmVwYXJlVG9QYXJzZUJsb2Nr
KCk7CisgICAgbV9jdXJyZW50QmxvY2sgPSBjb250aW51YXRpb25CbG9jay5nZXQoKTsKKyAgICAK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSBsYW5kaW5nQmxvY2tzLnNpemUoKTsgaS0tOykKKyAgICAg
ICAgbGFuZGluZ0Jsb2Nrc1tpXS0+bGFzdCgpLT50YXJnZXRCbG9jaygpID0gY29udGludWF0aW9u
QmxvY2suZ2V0KCk7CiAgICAgCi0gICAgLy8gQXQgdGhpcyBwb2ludCB3ZSByZXR1cm4gYW5kIGNv
bnRpbnVlIHRvIGdlbmVyYXRlIGNvZGUgZm9yIHRoZSBjYWxsZXIsIGJ1dAotICAgIC8vIGluIHRo
ZSBuZXcgYmFzaWMgYmxvY2suCisgICAgbV9jdXJyZW50SW5kZXggPSBvbGRPZmZzZXQ7CisgICAg
CisgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgZGF0YUxvZygiRG9uZSBpbmxpbmluZyAoaGFy
ZCkuXG4iKTsKKyAgICAgICAgZGF0YUxvZygiU3RhY2s6ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCks
ICJcbiIpOworICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTY0NSw3ICsxOTE2LDcg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVHlwZWRBcnJheUNvbgogCiBib29sIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oCiAgICAgaW50IHJlc3Vs
dE9wZXJhbmQsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgcmVnaXN0ZXJPZmZzZXQs
Ci0gICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVk
aWN0aW9uLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAgaW50IGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgLy8g
SWYgd2UgZXZlciBmaW5kIHRoYXQgd2UgaGF2ZSBhIGxvdCBvZiBpbnRlcm5hbCBmdW5jdGlvbnMg
dGhhdCB3ZSBzcGVjaWFsaXplIGZvciwKICAgICAvLyB0aGVuIHdlIHNob3VsZCBwcm9iYWJseSBo
YXZlIHNvbWUgc29ydCBvZiBoYXNodGFibGUgZGlzcGF0Y2gsIG9yIG1heWJlIGV2ZW4KQEAgLTE2
NTQsOCArMTkyNSw2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50SW50ZXIK
ICAgICAvLyB3ZSBrbm93IGFib3V0IGlzIHNtYWxsIGVub3VnaCwgdGhhdCBoYXZpbmcganVzdCBh
IGxpbmVhciBjYXNjYWRlIG9mIGlmIHN0YXRlbWVudHMKICAgICAvLyBpcyBnb29kIGVub3VnaC4K
ICAgICAKLSAgICBVTlVTRURfUEFSQU0ocHJlZGljdGlvbik7IC8vIFJlbW92ZSB0aGlzIG9uY2Ug
d2UgZG8gbW9yZSB0aGluZ3MuCi0gICAgCiAgICAgaWYgKGZ1bmN0aW9uLT5jbGFzc0luZm8oKSA9
PSBBcnJheUNvbnN0cnVjdG9yOjppbmZvKCkpIHsKICAgICAgICAgaWYgKGZ1bmN0aW9uLT5nbG9i
YWxPYmplY3QoKSAhPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMDIwLDYgKzIyODksMTIgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6
cHJlcGFyZVRvUGFyc2VCbG9jaygpCiB7CisgICAgY2xlYXJDYWNoZXMoKTsKKyAgICBBU1NFUlQo
bV9zZXRMb2NhbFF1ZXVlLmlzRW1wdHkoKSk7Cit9CisKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OmNs
ZWFyQ2FjaGVzKCkKK3sKICAgICBtX2NvbnN0YW50cy5yZXNpemUoMCk7CiB9CiAKQEAgLTIwNTks
OSArMjMzNCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAg
ICB9CiAKICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9zZXRMb2NhbFF1ZXVlLnNpemUoKTsgKytpKQotICAgICAgICAgICAgbV9zZXRMb2NhbFF1
ZXVlW2ldLmV4ZWN1dGUodGhpcyk7Ci0gICAgICAgIG1fc2V0TG9jYWxRdWV1ZS5yZXNpemUoMCk7
CisgICAgICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7CiAgICAgICAgIAogICAgICAgICAvLyBE
b24ndCBleHRlbmQgb3ZlciBqdW1wIGRlc3RpbmF0aW9ucy4KICAgICAgICAgaWYgKG1fY3VycmVu
dEluZGV4ID09IGxpbWl0KSB7CkBAIC0yMjA1LDEzICsyNDc4LDEzIEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIEpTQ2VsbCogY2FjaGVkRnVu
Y3Rpb24gPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5qc0NlbGwuZ2V0KCk7CiAgICAgICAgICAg
ICBpZiAoIWNhY2hlZEZ1bmN0aW9uIAogICAgICAgICAgICAgICAgIHx8IG1faW5saW5lU3RhY2tU
b3AtPm1fcHJvZmlsZWRCbG9jay0+Y291bGRUYWtlU2xvd0Nhc2UobV9jdXJyZW50SW5kZXgpCi0g
ICAgICAgICAgICAgICAgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0
U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkRnVuY3Rpb24pKSB7CisgICAgICAgICAgICAgICAgfHwg
bV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRl
eCwgQmFkQ2VsbCkpIHsKICAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6
OkNhbGxlZSkpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgRnJvemVu
VmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJlZXplKGNhY2hlZEZ1bmN0aW9uKTsKICAgICAgICAg
ICAgICAgICBBU1NFUlQoY2FjaGVkRnVuY3Rpb24tPmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8o
KSkpOwogICAgICAgICAgICAgICAgIE5vZGUqIGFjdHVhbENhbGxlZSA9IGdldChWaXJ0dWFsUmVn
aXN0ZXIoSlNTdGFjazo6Q2FsbGVlKSk7Ci0gICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVj
a0Z1bmN0aW9uLCBPcEluZm8oZnJvemVuKSwgYWN0dWFsQ2FsbGVlKTsKKyAgICAgICAgICAgICAg
ICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKGZyb3plbiksIGFjdHVhbENhbGxlZSk7CiAg
ICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKSwgYWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8oZnJvemVuKSkpOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2NhbGxlZSk7CkBAIC0y
ODkzLDcgKzMxNjYsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVk
CiAgICAgICAgICAgICAvLyBhbHJlYWR5IGduYXJseSBlbm91Z2ggYXMgaXQgaXMuCiAgICAgICAg
ICAgICBBU1NFUlQocG9pbnRlcklzRnVuY3Rpb24oY3VycmVudEluc3RydWN0aW9uWzJdLnUuc3Bl
Y2lhbFBvaW50ZXIpKTsKICAgICAgICAgICAgIGFkZFRvR3JhcGgoCi0gICAgICAgICAgICAgICAg
Q2hlY2tGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICBDaGVja0NlbGwsCiAgICAgICAgICAgICAg
ICAgT3BJbmZvKG1fZ3JhcGguZnJlZXplKHN0YXRpY19jYXN0PEpTQ2VsbCo+KGFjdHVhbFBvaW50
ZXJGb3IoCiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2Nr
LCBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5zcGVjaWFsUG9pbnRlcikpKSksCiAgICAgICAgICAg
ICAgICAgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
KSkpOwpAQCAtMzMxNywxNSArMzU5MCwxOSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxv
Y2soQmFzaWNCbG9jCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKLSNpZiAhQVNTRVJUX0RJ
U0FCTEVECi0gICAgYmxvY2stPmlzTGlua2VkID0gdHJ1ZTsKLSNlbmRpZgorICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICBkYXRhTG9nKCJNYXJraW5nICIsIFJhd1BvaW50ZXIoYmxvY2spLCAiIGFz
IGxpbmtlZCAoYWN0dWFsbHkgZGlkIGxpbmtpbmcpXG4iKTsKKyAgICBibG9jay0+ZGlkTGluaygp
OwogfQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2tzKFZlY3RvcjxVbmxpbmtlZEJs
b2NrPiYgdW5saW5rZWRCbG9ja3MsIFZlY3RvcjxCYXNpY0Jsb2NrKj4mIHBvc3NpYmxlVGFyZ2V0
cykKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHVubGlua2VkQmxvY2tzLnNpemUoKTsg
KytpKSB7CisgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgZGF0YUxvZygiQXR0ZW1w
dGluZyB0byBsaW5rICIsIFJhd1BvaW50ZXIodW5saW5rZWRCbG9ja3NbaV0ubV9ibG9jayksICJc
biIpOwogICAgICAgICBpZiAodW5saW5rZWRCbG9ja3NbaV0ubV9uZWVkc05vcm1hbExpbmtpbmcp
IHsKKyAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGRhdGFMb2coIiAg
ICBEb2VzIG5lZWQgbm9ybWFsIGxpbmtpbmcuXG4iKTsKICAgICAgICAgICAgIGxpbmtCbG9jayh1
bmxpbmtlZEJsb2Nrc1tpXS5tX2Jsb2NrLCBwb3NzaWJsZVRhcmdldHMpOwogICAgICAgICAgICAg
dW5saW5rZWRCbG9ja3NbaV0ubV9uZWVkc05vcm1hbExpbmtpbmcgPSBmYWxzZTsKICAgICAgICAg
fQpAQCAtMzQ5Miw3ICszNzY5LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6
OklubGluZQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiB7Ci0gICAg
cHJlcGFyZVRvUGFyc2VCbG9jaygpOworICAgIGNsZWFyQ2FjaGVzKCk7CiAgICAgCiAgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jazsKICAgICAK
QEAgLTM1NTgsNyArMzgzNSwxMiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9j
aygpCiAgICAgICAgICAgICAgICAgICAgIC8vIDIpIElmIHRoZSBieXRlY29kZUJlZ2luIGlzIGVx
dWFsIHRvIHRoZSBjdXJyZW50SW5kZXgsIHRoZW4gd2UgZmFpbGVkIHRvIGRvCiAgICAgICAgICAg
ICAgICAgICAgIC8vICAgIGEgcGVlcGhvbGUgY29hbGVzY2luZyBvZiB0aGlzIGJsb2NrIGluIHRo
ZSBpZiBzdGF0ZW1lbnQgYWJvdmUuIFNvLCB3ZSdyZQogICAgICAgICAgICAgICAgICAgICAvLyAg
ICBnZW5lcmF0aW5nIHN1Ym9wdGltYWwgY29kZSBhbmQgbGVhdmluZyBtb3JlIHdvcmsgZm9yIHRo
ZSBDRkcgc2ltcGxpZmllci4KLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1faW5saW5lU3Rh
Y2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuaXNFbXB0eSgpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1f
dW5saW5rZWRCbG9ja3MubGFzdCgpLm1fYmxvY2stPmJ5dGVjb2RlQmVnaW4gPCBtX2N1cnJlbnRJ
bmRleCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghbV9pbmxpbmVTdGFja1RvcC0+bV91bmxp
bmtlZEJsb2Nrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGxhc3RCZWdpbiA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1Rv
cC0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9ibG9jay0+Ynl0ZWNvZGVCZWdpbjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbGFzdEJlZ2luLCBsYXN0QmVnaW4gPT0gVUlOVF9NQVggfHwgbGFzdEJlZ2luIDwgbV9j
dXJyZW50SW5kZXgpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
IG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2so
YmxvY2suZ2V0KCkpKTsKICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9i
bG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9jay5nZXQoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIC8vIFRoZSBmaXJzdCBibG9jayBpcyBkZWZpbml0ZWx5IGFuIE9TUiB0YXJnZXQuCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQ
aGFzZS5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDggKzkwLDEw
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnNldENoaWxk
MShFZGdlKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBj
YXNlIFBoYW50b206Ci0gICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS0+Y2hpbGQxKCkpCisg
ICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS0+Y2hpbGQxKCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCktPm9wKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBQaGk6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgU2V0QXJndW1lbnQ6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMTcy
ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE0NCw2ICsxNDQsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlCiAgICAgY2FzZSBGaWF0SW50NTI6CiAgICAgY2FzZSBNYWtlUm9wZToKICAg
ICBjYXNlIFZhbHVlVG9JbnQzMjoKKyAgICBjYXNlIEdldEV4ZWN1dGFibGU6CisgICAgY2FzZSBC
b3R0b21WYWx1ZToKICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICAgICAgCkBAIC0yMzksMTIgKzI0MSw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlLCBub2RlLT5hcml0
aE1vZGUoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIGNhc2UgQ2hlY2tGdW5j
dGlvbjoKLSAgICAgICAgZGVmKFB1cmVWYWx1ZShDaGVja0Z1bmN0aW9uLCBBZGphY2VuY3lMaXN0
KEFkamFjZW5jeUxpc3Q6OkZpeGVkLCBub2RlLT5jaGlsZDEoKSksIG5vZGUtPmZ1bmN0aW9uKCkp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToK
LSAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlLCBub2RlLT5leGVjdXRhYmxlKCkpKTsKKyAgICBj
YXNlIENoZWNrQ2VsbDoKKyAgICAgICAgZGVmKFB1cmVWYWx1ZShDaGVja0NlbGwsIEFkamFjZW5j
eUxpc3QoQWRqYWNlbmN5TGlzdDo6Rml4ZWQsIG5vZGUtPmNoaWxkMSgpKSwgbm9kZS0+Y2VsbE9w
ZXJhbmQoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgQ29uc3RhbnRT
dG9yYWdlUG9pbnRlcjoKQEAgLTI2Myw2ICsyNjEsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBTd2l0Y2g6CiAgICAgY2FzZSBUaHJvdzoKICAg
ICBjYXNlIEZvcmNlT1NSRXhpdDoKKyAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICBjYXNlIFJl
dHVybjoKICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6
CkBAIC0zNTgsNiArMzU3LDggQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZQogICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgY2FzZSBDYWxsOgogICAgIGNhc2UgQ29uc3Ry
dWN0OgorICAgIGNhc2UgUHJvZmlsZWRDYWxsOgorICAgIGNhc2UgUHJvZmlsZWRDb25zdHJ1Y3Q6
CiAgICAgY2FzZSBOYXRpdmVDYWxsOgogICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OgogICAgIGNh
c2UgVG9QcmltaXRpdmU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1v
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJ
KHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDEzIEBAIGVudW0gUmVmTm9kZU1vZGUgewog
ICAgIERvbnRSZWZOb2RlCiB9OwogCitlbnVtIFN3aXRjaEtpbmQgeworICAgIFN3aXRjaEltbSwK
KyAgICBTd2l0Y2hDaGFyLAorICAgIFN3aXRjaFN0cmluZywKKyAgICBTd2l0Y2hDZWxsCit9Owor
CiBpbmxpbmUgYm9vbCB2ZXJib3NlQ29tcGlsYXRpb25FbmFibGVkKENvbXBpbGF0aW9uTW9kZSBt
b2RlID0gREZHTW9kZSkKIHsKICAgICByZXR1cm4gT3B0aW9uczo6dmVyYm9zZUNvbXBpbGF0aW9u
KCkgfHwgT3B0aW9uczo6ZHVtcEdyYXBoQXRFYWNoUGhhc2UoKSB8fCAoaXNGVEwobW9kZSkgJiYg
T3B0aW9uczo6dmVyYm9zZUZUTENvbXBpbGF0aW9uKCkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHJldmlz
aW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsOCArMTQyLDggQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjogewotICAgICAgICAgICAgICAgIGlmICht
X3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCkgIT0gbm9kZS0+ZnVuY3Rpb24o
KS0+dmFsdWUoKSkKKyAgICAgICAgICAgIGNhc2UgQ2hlY2tDZWxsOiB7CisgICAgICAgICAgICAg
ICAgaWYgKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKSAhPSBub2RlLT5j
ZWxsT3BlcmFuZCgpLT52YWx1ZSgpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CiAgICAgICAgICAgICAgICAgZWxp
bWluYXRlZCA9IHRydWU7CkBAIC0zODQsNiArMzg0LDE5IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgY2FzZSBQcm9maWxlZENhbGw6CisgICAgICAgICAgICBjYXNl
IFByb2ZpbGVkQ29uc3RydWN0OiB7CisgICAgICAgICAgICAgICAgaWYgKCFtX3N0YXRlLmZvck5v
ZGUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSkubV92YWx1ZSkKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gSWYgd2Ug
d2VyZSBhYmxlIHRvIHByb3ZlIHRoYXQgdGhlIGNhbGxlZSBpcyBhIGNvbnN0YW50IHRoZW4gdGhl
IG5vcm1hbCBjYWxsCisgICAgICAgICAgICAgICAgLy8gaW5saW5lIGNhY2hlIHdpbGwgcmVjb3Jk
IHRoaXMgY2FsbGVlLiBUaGlzIG1lYW5zIHRoYXQgdGhlcmUgaXMgbm8gbmVlZCB0byBkbyBhbnkK
KyAgICAgICAgICAgICAgICAvLyBhZGRpdGlvbmFsIHByb2ZpbGluZy4KKyAgICAgICAgICAgICAg
ICBub2RlLT5zZXRPcChub2RlLT5vcCgpID09IFByb2ZpbGVkQ2FsbCA/IENhbGwgOiBDb25zdHJ1
Y3QpOworICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNw
cAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAgICBjYXNlIFB1
dEJ5SWREaXJlY3Q6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKLSAgICBjYXNlIENoZWNrRXhl
Y3V0YWJsZToKKyAgICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6
CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgR2V0U2NvcGU6CkBAIC0xMDQsNyArMTA0
LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0
R2xvYmFsVmFyOgogICAgIGNhc2UgVmFyaWFibGVXYXRjaHBvaW50OgogICAgIGNhc2UgVmFySW5q
ZWN0aW9uV2F0Y2hwb2ludDoKLSAgICBjYXNlIENoZWNrRnVuY3Rpb246CisgICAgY2FzZSBDaGVj
a0NlbGw6CiAgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBS
ZWdFeHBFeGVjOgogICAgIGNhc2UgUmVnRXhwVGVzdDoKQEAgLTExOSw2ICsxMTksOCBAQCBib29s
IGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb25zdHJ1Y3Q6CiAg
ICAgY2FzZSBOYXRpdmVDYWxsOgogICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OgorICAgIGNhc2Ug
UHJvZmlsZWRDYWxsOgorICAgIGNhc2UgUHJvZmlsZWRDb25zdHJ1Y3Q6CiAgICAgY2FzZSBCcmVh
a3BvaW50OgogICAgIGNhc2UgUHJvZmlsZVdpbGxDYWxsOgogICAgIGNhc2UgUHJvZmlsZURpZENh
bGw6CkBAIC0xOTUsNiArMTk3LDggQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlKQogICAgIGNhc2UgR2V0RGlyZWN0UG5hbWU6CiAgICAgY2FzZSBGaWF0SW50NTI6CiAgICAg
Y2FzZSBCb29sZWFuVG9OdW1iZXI6CisgICAgY2FzZSBDaGVja0JhZENlbGw6CisgICAgY2FzZSBC
b3R0b21WYWx1ZToKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY2FzZSBDcmVhdGVBY3Rp
dmF0aW9uOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkocmV2
aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSw5IEBAIHN0YXRpYyBDb21waWxhdGlvblJlc3Vs
dCBjb21waWxlSW1wbCgKICAgICAgICAgdm0uZ2V0Q1RJU3R1Yih2aXJ0dWFsQ29uc3RydWN0VGhh
dFByZXNlcnZlc1JlZ3NUaHVua0dlbmVyYXRvcik7CiAgICAgfQogICAgIAorICAgIGlmIChDYWxs
RWRnZUxvZzo6aXNFbmFibGVkKCkpCisgICAgICAgIHZtLmVuc3VyZUNhbGxFZGdlTG9nKCkucHJv
Y2Vzc0xvZygpOworICAgIAogICAgIFJlZlB0cjxQbGFuPiBwbGFuID0gYWRvcHRSZWYoCiAgICAg
ICAgIG5ldyBQbGFuKGNvZGVCbG9jaywgcHJvZmlsZWRERkdDb2RlQmxvY2ssIG1vZGUsIG9zckVu
dHJ5Qnl0ZWNvZGVJbmRleCwgbXVzdEhhbmRsZVZhbHVlcykpOwogICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxNzI4NTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03MzYsNiArNzM2LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZWxz
ZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKQogICAgICAgICAg
ICAgICAgICAgICBmaXhFZGdlPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTd2l0Y2hDZWxsOgorICAgICAgICAgICAg
ICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKQorICAgICAgICAg
ICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
ICAgICAvLyBlbHNlIGl0J3MgZmluZSBmb3IgdGhpcyB0byBoYXZlIFVudHlwZWRVc2U7IHdlIHdp
bGwgaGFuZGxlIHRoaXMgYnkganVzdCBtYWtpbmcKKyAgICAgICAgICAgICAgICAvLyBub24tY2Vs
bHMgdGFrZSB0aGUgZGVmYXVsdCBjYXNlLgorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTg5NywxMyArOTAzLDEz
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNh
c2UgQ2hlY2tFeGVjdXRhYmxlOiB7CisgICAgICAgIGNhc2UgR2V0RXhlY3V0YWJsZTogewogICAg
ICAgICAgICAgZml4RWRnZTxGdW5jdGlvblVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIENoZWNrU3Ry
dWN0dXJlOgotICAgICAgICBjYXNlIENoZWNrRnVuY3Rpb246CisgICAgICAgIGNhc2UgQ2hlY2tD
ZWxsOgogICAgICAgICBjYXNlIENoZWNrSGFzSW5zdGFuY2U6CiAgICAgICAgIGNhc2UgQ3JlYXRl
VGhpczoKICAgICAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6IHsKQEAgLTExMjAsNiArMTEyNiw4IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OgogICAg
ICAgICBjYXNlIENhbGw6CiAgICAgICAgIGNhc2UgQ29uc3RydWN0OgorICAgICAgICBjYXNlIFBy
b2ZpbGVkQ2FsbDoKKyAgICAgICAgY2FzZSBQcm9maWxlZENvbnN0cnVjdDoKICAgICAgICAgY2Fz
ZSBOYXRpdmVDYWxsOgogICAgICAgICBjYXNlIE5hdGl2ZUNvbnN0cnVjdDoKICAgICAgICAgY2Fz
ZSBOZXdPYmplY3Q6CkBAIC0xMTQ5LDYgKzExNTcsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IFRocm93UmVmZXJlbmNlRXJyb3I6CiAgICAgICAgIGNhc2UgQ291bnRFeGVjdXRpb246CiAgICAg
ICAgIGNhc2UgRm9yY2VPU1JFeGl0OgorICAgICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICAg
ICAgY2FzZSBDaGVja1dhdGNoZG9nVGltZXI6CiAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CiAg
ICAgICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CkBAIC0xMTU5LDYgKzExNjgsNyBAQCBw
cml2YXRlOgogICAgICAgICBjYXNlIFR5cGVkQXJyYXlXYXRjaHBvaW50OgogICAgICAgICBjYXNl
IE1vdkhpbnQ6CiAgICAgICAgIGNhc2UgWm9tYmllSGludDoKKyAgICAgICAgY2FzZSBCb3R0b21W
YWx1ZToKICAgICAgICAgICAgIGJyZWFrOwogI2Vsc2UKICAgICAgICAgZGVmYXVsdDoKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAxNzI4NTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjIyLDI0ICsyMjIsMjMgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBj
b25zdAogICAgICAgICBvdXQucHJpbnQoY29tbWEsIGluQ29udGV4dCgqbm9kZS0+c3RydWN0dXJl
KCksIGNvbnRleHQpKTsKICAgICBpZiAobm9kZS0+aGFzVHJhbnNpdGlvbigpKQogICAgICAgICBv
dXQucHJpbnQoY29tbWEsIHBvaW50ZXJEdW1wSW5Db250ZXh0KG5vZGUtPnRyYW5zaXRpb24oKSwg
Y29udGV4dCkpOwotICAgIGlmIChub2RlLT5oYXNGdW5jdGlvbigpKSB7Ci0gICAgICAgIG91dC5w
cmludChjb21tYSwgImZ1bmN0aW9uKCIsIHBvaW50ZXJEdW1wKG5vZGUtPmZ1bmN0aW9uKCkpLCAi
LCAiKTsKLSAgICAgICAgaWYgKG5vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkuaXNDZWxsKCkKLSAg
ICAgICAgICAgICYmIG5vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkuYXNDZWxsKCktPmluaGVyaXRz
KEpTRnVuY3Rpb246OmluZm8oKSkpIHsKLSAgICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9u
ID0ganNDYXN0PEpTRnVuY3Rpb24qPihub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpLmFzQ2VsbCgp
KTsKLSAgICAgICAgICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSkKLSAgICAgICAg
ICAgICAgICBvdXQucHJpbnQoIjxob3N0IGZ1bmN0aW9uPiIpOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIG91dC5wcmludChGdW5jdGlvbkV4ZWN1dGFibGVEdW1wKGZ1bmN0aW9u
LT5qc0V4ZWN1dGFibGUoKSkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG91dC5wcmlu
dCgiPG5vdCBKU0Z1bmN0aW9uPiIpOwotICAgICAgICBvdXQucHJpbnQoIikiKTsKLSAgICB9Ci0g
ICAgaWYgKG5vZGUtPmhhc0V4ZWN1dGFibGUoKSkgewotICAgICAgICBpZiAobm9kZS0+ZXhlY3V0
YWJsZSgpLT5pbmhlcml0cyhGdW5jdGlvbkV4ZWN1dGFibGU6OmluZm8oKSkpCi0gICAgICAgICAg
ICBvdXQucHJpbnQoY29tbWEsICJleGVjdXRhYmxlKCIsIEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAo
anNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG5vZGUtPmV4ZWN1dGFibGUoKSkpLCAiKSIpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJleGVjdXRhYmxlKG5v
dCBmdW5jdGlvbjogIiwgUmF3UG9pbnRlcihub2RlLT5leGVjdXRhYmxlKCkpLCAiKSIpOworICAg
IGlmIChub2RlLT5oYXNDZWxsT3BlcmFuZCgpKSB7CisgICAgICAgIGlmICghbm9kZS0+Y2VsbE9w
ZXJhbmQoKS0+dmFsdWUoKSB8fCAhbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5pc0NlbGwo
KSkKKyAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgImludmFsaWQgY2VsbCBvcGVyYW5kOiAi
LCBub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICBvdXQucHJpbnQoY29tbWEsIHBvaW50ZXJEdW1wKG5vZGUtPmNlbGxPcGVyYW5kKCktPnZh
bHVlKCkuYXNDZWxsKCkpKTsKKyAgICAgICAgICAgIGlmIChub2RlLT5jZWxsT3BlcmFuZCgpLT52
YWx1ZSgpLmlzQ2VsbCgpKSB7CisgICAgICAgICAgICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFudChu
b2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpLmFzQ2VsbCgpKTsKKyAgICAgICAgICAgICAgICBp
ZiAoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSB2YXJpYW50LmV4ZWN1dGFibGUoKSkgewor
ICAgICAgICAgICAgICAgICAgICBpZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgIjxob3N0IGZ1bmN0aW9uPiIp
OworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0
aW9uRXhlY3V0YWJsZSA9IGpzRHluYW1pY0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0
YWJsZSkpCisgICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIEZ1bmN0aW9u
RXhlY3V0YWJsZUR1bXAoZnVuY3Rpb25FeGVjdXRhYmxlKSk7CisgICAgICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgIjxub24tZnVu
Y3Rpb24gZXhlY3V0YWJsZT4iKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KICAgICB9CiAgICAgaWYgKG5vZGUtPmhhc0Z1bmN0aW9uRGVjbEluZGV4KCkpIHsK
ICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbV9jb2RlQmxvY2stPmZ1
bmN0aW9uRGVjbChub2RlLT5mdW5jdGlvbkRlY2xJbmRleCgpKTsKQEAgLTk4NSwxMCArOTg0LDYg
QEAgdm9pZCBHcmFwaDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdgogICAgICAgICAgICAg
Tm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgQ2hlY2tFeGVjdXRh
YmxlOgotICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRSZWFkT25seVBv
aW50ZXIobm9kZS0+ZXhlY3V0YWJsZSgpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbm9kZS0+c3RydWN0dXJlU2V0KCkuc2l6ZSgpOyBpLS07
KQogICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlQ
b2ludGVyKG5vZGUtPnN0cnVjdHVyZVNldCgpW2ldKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlu
a0IKICAgICAgICAgICAgIHRhYmxlLmN0aU9mZnNldHNbal0gPSB0YWJsZS5jdGlEZWZhdWx0Owog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSBkYXRhLmNhc2VzLnNpemUoKTsgai0tOykgewogICAg
ICAgICAgICAgU3dpdGNoQ2FzZSYgbXlDYXNlID0gZGF0YS5jYXNlc1tqXTsKLSAgICAgICAgICAg
IHRhYmxlLmN0aU9mZnNldHNbbXlDYXNlLnZhbHVlLnN3aXRjaExvb2t1cFZhbHVlKCkgLSB0YWJs
ZS5taW5dID0KKyAgICAgICAgICAgIHRhYmxlLmN0aU9mZnNldHNbbXlDYXNlLnZhbHVlLnN3aXRj
aExvb2t1cFZhbHVlKGRhdGEua2luZCkgLSB0YWJsZS5taW5dID0KICAgICAgICAgICAgICAgICBs
aW5rQnVmZmVyLmxvY2F0aW9uT2YobV9ibG9ja0hlYWRzW215Q2FzZS50YXJnZXQuYmxvY2stPmlu
ZGV4XSk7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0xhenlKU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0xhenlKU1ZhbHVlLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw2
ICsxMTMsMzYgQEAgVHJpU3RhdGUgTGF6eUpTVmFsdWU6OnN0cmljdEVxdWFsKGNvbnN0IAogICAg
IHJldHVybiBGYWxzZVRyaVN0YXRlOwogfQogCit1aW50cHRyX3QgTGF6eUpTVmFsdWU6OnN3aXRj
aExvb2t1cFZhbHVlKFN3aXRjaEtpbmQga2luZCkgY29uc3QKK3sKKyAgICAvLyBOQi4gTm90IGV2
ZXJ5IGtpbmQgb2YgSlNWYWx1ZSB3aWxsIGJlIGFibGUgdG8gZ2l2ZSB5b3UgYSBzd2l0Y2ggbG9v
a3VwCisgICAgLy8gdmFsdWUsIGFuZCB0aGlzIG1ldGhvZCB3aWxsIGFzc2VydCwgb3IgZG8gYmFk
IHRoaW5ncywgaWYgeW91IHVzZSBpdAorICAgIC8vIGZvciBhIGtpbmQgb2YgdmFsdWUgdGhhdCBj
YW4ndC4KKyAgICBzd2l0Y2ggKG1fa2luZCkgeworICAgIGNhc2UgS25vd25WYWx1ZToKKyAgICAg
ICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIGNhc2UgU3dpdGNoSW1tOgorICAgICAgICAgICAg
cmV0dXJuIHZhbHVlKCktPnZhbHVlKCkuYXNJbnQzMigpOworICAgICAgICBjYXNlIFN3aXRjaENl
bGw6CisgICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4odmFsdWUoKS0+
dmFsdWUoKS5hc0NlbGwoKSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0K
KyAgICBjYXNlIFNpbmdsZUNoYXJhY3RlclN0cmluZzoKKyAgICAgICAgc3dpdGNoIChraW5kKSB7
CisgICAgICAgIGNhc2UgU3dpdGNoQ2hhcjoKKyAgICAgICAgICAgIHJldHVybiBjaGFyYWN0ZXIo
KTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIGRlZmF1bHQ6Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KK30KKwogdm9pZCBMYXp5SlNWYWx1ZTo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYg
b3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fa2luZCkg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuaAkocmV2
aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJ
VCkKIAorI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgogI2luY2x1ZGUgIkRGR0Zyb3plblZhbHVlLmgi
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCkBAIC05NSwyMSArOTYsNyBAQCBw
dWJsaWM6CiAgICAgCiAgICAgVHJpU3RhdGUgc3RyaWN0RXF1YWwoY29uc3QgTGF6eUpTVmFsdWUm
IG90aGVyKSBjb25zdDsKICAgICAKLSAgICB1bnNpZ25lZCBzd2l0Y2hMb29rdXBWYWx1ZSgpIGNv
bnN0Ci0gICAgewotICAgICAgICAvLyBOQi4gTm90IGV2ZXJ5IGtpbmQgb2YgSlNWYWx1ZSB3aWxs
IGJlIGFibGUgdG8gZ2l2ZSB5b3UgYSBzd2l0Y2ggbG9va3VwCi0gICAgICAgIC8vIHZhbHVlLCBh
bmQgdGhpcyBtZXRob2Qgd2lsbCBhc3NlcnQsIG9yIGRvIGJhZCB0aGluZ3MsIGlmIHlvdSB1c2Ug
aXQKLSAgICAgICAgLy8gZm9yIGEga2luZCBvZiB2YWx1ZSB0aGF0IGNhbid0LgotICAgICAgICBz
d2l0Y2ggKG1fa2luZCkgewotICAgICAgICBjYXNlIEtub3duVmFsdWU6Ci0gICAgICAgICAgICBy
ZXR1cm4gdmFsdWUoKS0+dmFsdWUoKS5hc0ludDMyKCk7Ci0gICAgICAgIGNhc2UgU2luZ2xlQ2hh
cmFjdGVyU3RyaW5nOgotICAgICAgICAgICAgcmV0dXJuIGNoYXJhY3RlcigpOwotICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgfQorICAgIHVpbnRwdHJfdCBzd2l0Y2hM
b29rdXBWYWx1ZShTd2l0Y2hLaW5kIGtpbmQpIGNvbnN0OwogICAgIAogICAgIHZvaWQgZHVtcChQ
cmludFN0cmVhbSYpIGNvbnN0OwogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYs
IER1bXBDb250ZXh0KikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsOSBAQCB2b2lkIHByaW50SW50
ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgU3dpCiAgICAgY2FzZSBTd2l0Y2hTdHJpbmc6CiAgICAg
ICAgIG91dC5wcmludCgiU3dpdGNoU3RyaW5nIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IFN3aXRjaENlbGw6CisgICAgICAgIG91dC5wcmludCgiU3dpdGNoQ2VsbCIpOworICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTcyODU5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Nywx
MiArMTU3LDYgQEAgc3RydWN0IFN3aXRjaENhc2UgewogICAgIEJyYW5jaFRhcmdldCB0YXJnZXQ7
CiB9OwogCi1lbnVtIFN3aXRjaEtpbmQgewotICAgIFN3aXRjaEltbSwKLSAgICBTd2l0Y2hDaGFy
LAotICAgIFN3aXRjaFN0cmluZwotfTsKLQogc3RydWN0IFN3aXRjaERhdGEgewogICAgIC8vIElu
aXRpYWxpemVzIG1vc3QgZmllbGRzIHRvIG9idmlvdXNseSBpbnZhbGlkIHZhbHVlcy4gQW55b25l
CiAgICAgLy8gY29uc3RydWN0aW5nIHRoaXMgc2hvdWxkIG1ha2Ugc3VyZSB0byBpbml0aWFsaXpl
IGV2ZXJ5dGhpbmcgdGhleQpAQCAtMTg1LDYgKzE3OSw3IEBAIHN0cnVjdCBTd2l0Y2hEYXRhIHsK
IC8vIGRpc3Rpbmd1aXNoZXMgYW4gaW1tZWRpYXRlIHZhbHVlICh0eXBpY2FsbHkgYW4gaW5kZXgg
aW50byBhIENvZGVCbG9jayBkYXRhIHN0cnVjdHVyZSAtIAogLy8gYSBjb25zdGFudCBpbmRleCwg
YXJndW1lbnQsIG9yIGlkZW50aWZpZXIpIGZyb20gYSBOb2RlKi4KIHN0cnVjdCBPcEluZm8gewor
ICAgIE9wSW5mbygpIDogbV92YWx1ZSgwKSB7IH0KICAgICBleHBsaWNpdCBPcEluZm8oaW50MzJf
dCB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KICAg
ICBleHBsaWNpdCBPcEluZm8odWludDMyX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KHZhbHVlKSkgeyB9CiAjaWYgT1MoREFSV0lOKSB8fCBVU0UoSlNWQUxVRTY0KQpA
QCAtMTAwOSw2ICsxMDA0LDggQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIEdldE15QXJn
dW1lbnRCeVZhbFNhZmU6CiAgICAgICAgIGNhc2UgQ2FsbDoKICAgICAgICAgY2FzZSBDb25zdHJ1
Y3Q6CisgICAgICAgIGNhc2UgUHJvZmlsZWRDYWxsOgorICAgICAgICBjYXNlIFByb2ZpbGVkQ29u
c3RydWN0OgogICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6CiAgICAgICAgIGNhc2UgTmF0aXZlQ29u
c3RydWN0OgogICAgICAgICBjYXNlIEdldEJ5T2Zmc2V0OgpAQCAtMTA0NCw5ICsxMDQxLDExIEBA
IHN0cnVjdCBOb2RlIHsKICAgICAgICAgbV9vcEluZm8yID0gcHJlZGljdGlvbjsKICAgICB9CiAg
ICAgCi0gICAgYm9vbCBjYW5CZUtub3duRnVuY3Rpb24oKQorICAgIGJvb2wgaGFzQ2VsbE9wZXJh
bmQoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgQWxsb2Nh
dGlvblByb2ZpbGVXYXRjaHBvaW50OgorICAgICAgICBjYXNlIENoZWNrQ2VsbDoKICAgICAgICAg
Y2FzZSBOYXRpdmVDb25zdHJ1Y3Q6CiAgICAgICAgIGNhc2UgTmF0aXZlQ2FsbDoKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtMTA1NSw1NCArMTA1NCwxNiBAQCBzdHJ1Y3QgTm9kZSB7CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBib29sIGhhc0tub3duRnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgc3dpdGNoIChvcCgpKSB7Ci0gICAgICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OgotICAg
ICAgICBjYXNlIE5hdGl2ZUNhbGw6Ci0gICAgICAgICAgICByZXR1cm4gKGJvb2wpbV9vcEluZm87
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgCi0gICAgSlNGdW5jdGlvbioga25vd25GdW5jdGlvbigpCi0gICAgewotICAg
ICAgICBBU1NFUlQoY2FuQmVLbm93bkZ1bmN0aW9uKCkpOwotICAgICAgICByZXR1cm4gYml0d2lz
ZV9jYXN0PEpTRnVuY3Rpb24qPihtX29wSW5mbyk7Ci0gICAgfQotCi0gICAgdm9pZCBnaXZlS25v
d25GdW5jdGlvbihKU0Z1bmN0aW9uKiBjYWxsRGF0YSkgCisgICAgRnJvemVuVmFsdWUqIGNlbGxP
cGVyYW5kKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChjYW5CZUtub3duRnVuY3Rpb24oKSk7Ci0g
ICAgICAgIG1fb3BJbmZvID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oY2FsbERhdGEpOwotICAg
IH0KLQotICAgIGJvb2wgaGFzRnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgc3dpdGNoIChvcCgp
KSB7Ci0gICAgICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKLSAgICAgICAgY2FzZSBBbGxvY2F0aW9u
UHJvZmlsZVdhdGNocG9pbnQ6Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IEZyb3plblZhbHVlKiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBBU1NFUlQoaGFzRnVuY3Rp
b24oKSk7CisgICAgICAgIEFTU0VSVChoYXNDZWxsT3BlcmFuZCgpKTsKICAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8RnJvemVuVmFsdWUqPihtX29wSW5mbyk7CiAgICAgfQogICAgIAot
ICAgIGJvb2wgaGFzRXhlY3V0YWJsZSgpCisgICAgdm9pZCBzZXRDZWxsT3BlcmFuZChGcm96ZW5W
YWx1ZSogdmFsdWUpCiAgICAgewotICAgICAgICByZXR1cm4gb3AoKSA9PSBDaGVja0V4ZWN1dGFi
bGU7Ci0gICAgfQotICAgIAotICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBqc0Nhc3Q8RXhlY3V0YWJsZUJhc2UqPihyZWludGVycHJldF9jYXN0
PEpTQ2VsbCo+KG1fb3BJbmZvKSk7CisgICAgICAgIEFTU0VSVChoYXNDZWxsT3BlcmFuZCgpKTsK
KyAgICAgICAgbV9vcEluZm8gPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSk7CiAgICAg
fQogICAgIAogICAgIGJvb2wgaGFzVmFyaWFibGVXYXRjaHBvaW50U2V0KCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MTUzLDcgKzE1Myw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNy
byhQdXRCeUlkRmx1c2gsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9k
ZUNsb2JiZXJzV29ybGQpIFwKICAgICBtYWNybyhQdXRCeUlkRGlyZWN0LCBOb2RlTXVzdEdlbmVy
YXRlIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKICAgICBtYWNybyhDaGVja1N0cnVjdHVyZSwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAotICAgIG1hY3JvKENoZWNrRXhlY3V0YWJsZSwgTm9kZU11c3RHZW5l
cmF0ZSkgXAorICAgIG1hY3JvKEdldEV4ZWN1dGFibGUsIE5vZGVSZXN1bHRKUykgXAogICAgIG1h
Y3JvKFB1dFN0cnVjdHVyZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEFsbG9jYXRl
UHJvcGVydHlTdG9yYWdlLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdFN0b3JhZ2UpIFwK
ICAgICBtYWNybyhSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlLCBOb2RlTXVzdEdlbmVyYXRlIHwg
Tm9kZVJlc3VsdFN0b3JhZ2UpIFwKQEAgLTE4NSw3ICsxODUsOCBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oVmFyaWFibGVXYXRjaHBvaW50LCBOb2RlTXVzdEdl
bmVyYXRlKSBcCiAgICAgbWFjcm8oVmFySW5qZWN0aW9uV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5l
cmF0ZSkgXAogICAgIG1hY3JvKEZ1bmN0aW9uUmVlbnRyeVdhdGNocG9pbnQsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKLSAgICBtYWNybyhDaGVja0Z1bmN0aW9uLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisg
ICAgbWFjcm8oQ2hlY2tDZWxsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oQ2hlY2tC
YWRDZWxsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQWxsb2NhdGlvblByb2ZpbGVX
YXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tJbkJvdW5kcywg
Tm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIFwKQEAgLTIxNCw2ICsyMTUsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyogQ2FsbHMuICovXAogICAgIG1hY3JvKENhbGws
IE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncyB8IE5vZGVD
bG9iYmVyc1dvcmxkKSBcCiAgICAgbWFjcm8oQ29uc3RydWN0LCBOb2RlUmVzdWx0SlMgfCBOb2Rl
TXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAorICAg
IG1hY3JvKFByb2ZpbGVkQ2FsbCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5v
ZGVIYXNWYXJBcmdzIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKKyAgICBtYWNybyhQcm9maWxlZENv
bnN0cnVjdCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdz
IHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKICAgICBtYWNybyhOYXRpdmVDYWxsLCBOb2RlUmVzdWx0
SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MgfCBOb2RlQ2xvYmJlcnNXb3Js
ZCkgXAogICAgIG1hY3JvKE5hdGl2ZUNvbnN0cnVjdCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RH
ZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKICAgICBcCkBA
IC0yODYsNiArMjg5LDExIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAv
KiBkaWZmZXJlbnQgY29tcGlsZXIuICovXAogICAgIG1hY3JvKEZvcmNlT1NSRXhpdCwgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIFwKKyAgICAvKiBWZW5kcyBhIGJvdHRvbSBKUyB2YWx1ZS4gSXQg
aXMgaW52YWxpZCB0byBldmVyIGV4ZWN1dGUgdGhpcy4gVXNlZnVsIGZvciBjYXNlcyAqL1wKKyAg
ICAvKiB3aGVyZSB3ZSBrbm93IHRoYXQgd2Ugd291bGQgaGF2ZSBleGl0ZWQgYnV0IHdlJ2QgbGlr
ZSB0byBzdGlsbCB0cmFjayB0aGUgY29udHJvbCAqL1wKKyAgICAvKiBmbG93LiAqL1wKKyAgICBt
YWNybyhCb3R0b21WYWx1ZSwgTm9kZVJlc3VsdEpTKSBcCisgICAgXAogICAgIC8qIENoZWNrcyB0
aGUgd2F0Y2hkb2cgdGltZXIuIElmIHRoZSB0aW1lciBoYXMgZmlyZWQsIHdlIE9TUiBleGl0IHRv
IHRoZSAqLyBcCiAgICAgLyogYmFzZWxpbmUgSklUIHRvIHJlZG8gdGhlIHdhdGNoZG9nIHRpbWVy
IGNoZWNrLCBhbmQgc2VydmljZSB0aGUgdGltZXIuICovIFwKICAgICBtYWNybyhDaGVja1dhdGNo
ZG9nVGltZXIsIE5vZGVNdXN0R2VuZXJhdGUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNl
LmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
aGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsOCAr
OTIsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4u
cmVtb3ZlRWRnZShpLS0pOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKQor
ICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvQ2hl
Y2soKTsKICAgICAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1BoYW50b21SZW1vdmFsUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAJKHJldmlzaW9uIDE3Mjg1OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNSw2ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3Jh
cGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5n
ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICAgICAgICAgIH0KQEAgLTE0Miw2ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0xNDksOCArMTUxLDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IGNhc2UgSGFyZFBoYW50b206IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
cmVuLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlz
RW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5m
cmVlKG5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZp
c2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg4LDYgKzE4OCw4IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgR2V0RGlyZWN0UG5hbWU6CiAgICAgICAgIGNhc2UgQ2FsbDoK
ICAgICAgICAgY2FzZSBDb25zdHJ1Y3Q6CisgICAgICAgIGNhc2UgUHJvZmlsZWRDYWxsOgorICAg
ICAgICBjYXNlIFByb2ZpbGVkQ29uc3RydWN0OgogICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6CiAg
ICAgICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OgogICAgICAgICBjYXNlIEdldEdsb2JhbFZhcjoK
QEAgLTE5Niw3ICsxOTgsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIEdldEdldHRlclNldHRlckJ5T2Zmc2V0OiB7
CisgICAgICAgIGNhc2UgR2V0R2V0dGVyU2V0dGVyQnlPZmZzZXQ6CisgICAgICAgIGNhc2UgR2V0
RXhlY3V0YWJsZTogewogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWND
ZWxsT3RoZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTY0Miw4ICs2NDUs
OCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEZvcmNlT1NSRXhpdDoKICAgICAgICAgY2FzZSBT
ZXRBcmd1bWVudDoKICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKLSAgICAgICAgY2FzZSBD
aGVja0V4ZWN1dGFibGU6Ci0gICAgICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKKyAgICAgICAgY2Fz
ZSBDaGVja0NlbGw6CisgICAgICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgICAgICBjYXNlIFB1
dFN0cnVjdHVyZToKICAgICAgICAgY2FzZSBUZWFyT2ZmQWN0aXZhdGlvbjoKICAgICAgICAgY2Fz
ZSBUZWFyT2ZmQXJndW1lbnRzOgpAQCAtNjY1LDYgKzY2OCwxMCBAQCBwcml2YXRlOgogICAgICAg
ICBjYXNlIFpvbWJpZUhpbnQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAorICAg
ICAgICAvLyBUaGlzIGdldHMgaWdub3JlZCBiZWNhdXNlIGl0IG9ubHkgcHJldGVuZHMgdG8gcHJv
ZHVjZSBhIHZhbHVlLgorICAgICAgICBjYXNlIEJvdHRvbVZhbHVlOgorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAKICAgICAgICAgLy8gVGhpcyBnZXRzIGlnbm9yZWQgYmVjYXVzZSBp
dCBhbHJlYWR5IGhhcyBhIHByZWRpY3Rpb24uCiAgICAgICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5
TG9jYWw6CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5
LDcgKzE1OSw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAg
ICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgY2FzZSBD
aGVja1N0cnVjdHVyZToKLSAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToKKyAgICBjYXNlIEdldEV4
ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6CiAgICAgY2FzZSBDaGVja0FycmF5Ogog
ICAgIGNhc2UgQXJyYXlpZnk6CkBAIC0xNzQsNyArMTc0LDggQEAgYm9vbCBzYWZlVG9FeGVjdXRl
KEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgUHV0R2xvYmFsVmFyOgogICAgIGNhc2Ug
VmFyaWFibGVXYXRjaHBvaW50OgogICAgIGNhc2UgVmFySW5qZWN0aW9uV2F0Y2hwb2ludDoKLSAg
ICBjYXNlIENoZWNrRnVuY3Rpb246CisgICAgY2FzZSBDaGVja0NlbGw6CisgICAgY2FzZSBDaGVj
a0JhZENlbGw6CiAgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6CiAgICAgY2Fz
ZSBSZWdFeHBFeGVjOgogICAgIGNhc2UgUmVnRXhwVGVzdDoKQEAgLTE4Nyw2ICsxODgsOCBAQCBi
b29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBDb21wYXJl
U3RyaWN0RXE6CiAgICAgY2FzZSBDYWxsOgogICAgIGNhc2UgQ29uc3RydWN0OgorICAgIGNhc2Ug
UHJvZmlsZWRDYWxsOgorICAgIGNhc2UgUHJvZmlsZWRDb25zdHJ1Y3Q6CiAgICAgY2FzZSBOZXdP
YmplY3Q6CiAgICAgY2FzZSBOZXdBcnJheToKICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CkBA
IC0yNzMsNiArMjc2LDExIEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYg
c3QKICAgICBjYXNlIE5hdGl2ZUNvbnN0cnVjdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBU
T0RPOiBhZGQgYSBjaGVjayBmb3IgYWxyZWFkeSBjaGVja2VkLiAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzc2OQogCisgICAgY2FzZSBCb3R0b21WYWx1ZToKKyAg
ICAgICAgLy8gSWYgaW4gZG91YnQsIGFzc3VtZSB0aGF0IHRoaXMgaXNuJ3Qgc2FmZSB0byBleGVj
dXRlLCBqdXN0IGJlY2F1c2Ugd2UgaGF2ZSBubyB3YXkgb2YKKyAgICAgICAgLy8gY29tcGlsaW5n
IHRoaXMgbm9kZS4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgY2FzZSBHZXRCeVZhbDoK
ICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBHZXRBcnJheUxl
bmd0aDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Njg5LDYgKzY4OSwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2Rl
CiAKICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CiAgICAgCisgICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZENh
bGxMaW5rSW5mbygpOworCisgICAgaWYgKG1faml0LmdyYXBoKCkubV9zaG91bGRQcm9maWxlICYm
ICFtX3N0YXRlLmZvck5vZGUoY2FsbGVlRWRnZSkubV92YWx1ZSkgeworICAgICAgICBtX2ppdC52
bSgpLmNhbGxFZGdlTG9nLT5lbWl0TG9nQ29kZSgKKyAgICAgICAgICAgIG1faml0LCBjYWxsTGlu
a0luZm8tPmNhbGxFZGdlUHJvZmlsZSwgY2FsbGVlLmpzVmFsdWVSZWdzKCkpOworICAgIH0KKyAg
ICAKICAgICBzbG93UGF0aC5hcHBlbmQoYnJhbmNoTm90Q2VsbChjYWxsZWUuanNWYWx1ZVJlZ3Mo
KSkpOwogICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hQdHJXaXRoUGF0Y2goTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBjYWxsZWVQYXlsb2FkR1BSLCB0YXJnZXRUb0NoZWNrKSk7CiAg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjYWxsZWVQYXlsb2FkR1BS
LCBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9zY29wZSkpLCByZXN1bHRQYXlsb2FkR1BS
KTsKQEAgLTcxMyw3ICs3MjAsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2Rl
KiBub2RlCiAgICAgICAgIG1faml0Lm1vdmUoY2FsbGVlUGF5bG9hZEdQUiwgR1BSSW5mbzo6cmVn
VDApOwogICAgICAgICBtX2ppdC5tb3ZlKGNhbGxlZVRhZ0dQUiwgR1BSSW5mbzo6cmVnVDEpOwog
ICAgIH0KLSAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkQ2Fs
bExpbmtJbmZvKCk7CiAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihpbmZvKSwgR1BSSW5mbzo6cmVnVDIpOwogICAgIEpJVENvbXBpbGVyOjpDYWxsIHNsb3dDYWxs
ID0gbV9qaXQubmVhckNhbGwoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MjYsMTAgKzYyNiw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNaXNj
U3RyaWN0RXEKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKIHsK
LQotICAgIGJvb2wgaXNDYWxsID0gbm9kZS0+b3AoKSA9PSBDYWxsOworICAgIGJvb2wgaXNDYWxs
ID0gbm9kZS0+b3AoKSA9PSBDYWxsIHx8IG5vZGUtPm9wKCkgPT0gUHJvZmlsZWRDYWxsOwogICAg
IGlmICghaXNDYWxsKQotICAgICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5v
ZGUtPm9wKCkgPT0gQ29uc3RydWN0KTsKKyAgICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgp
LCBub2RlLCBub2RlLT5vcCgpID09IENvbnN0cnVjdCB8fCBub2RlLT5vcCgpID09IFByb2ZpbGVk
Q29uc3RydWN0KTsKICAgICAKICAgICAvLyBGb3IgY29uc3RydWN0b3JzLCB0aGUgdGhpcyBhcmd1
bWVudCBpcyBub3QgcGFzc2VkIGJ1dCB3ZSBoYXZlIHRvIG1ha2Ugc3BhY2UKICAgICAvLyBmb3Ig
aXQuCkBAIC02NzAsNiArNjY5LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5v
ZGUqIG5vZGUKIAogICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4obm9kZS0+b3JpZ2luLnNl
bWFudGljKTsKICAgICAKKyAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IG1faml0LmNv
ZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKKyAgICAKKyAgICBpZiAobm9kZS0+b3AoKSA9
PSBQcm9maWxlZENhbGwgfHwgbm9kZS0+b3AoKSA9PSBQcm9maWxlZENvbnN0cnVjdCkgeworICAg
ICAgICBtX2ppdC52bSgpLT5jYWxsRWRnZUxvZy0+ZW1pdExvZ0NvZGUoCisgICAgICAgICAgICBt
X2ppdCwgY2FsbExpbmtJbmZvLT5jYWxsRWRnZVByb2ZpbGUsIEpTVmFsdWVSZWdzKGNhbGxlZUdQ
UikpOworICAgIH0KKwogICAgIHNsb3dQYXRoID0gbV9qaXQuYnJhbmNoUHRyV2l0aFBhdGNoKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgY2FsbGVlR1BSLCB0YXJnZXRUb0NoZWNrLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cigwKSk7CiAKICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGNhbGxlZUdQUiwgT0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rpb24sIG1f
c2NvcGUpKSwgcmVzdWx0R1BSKTsKQEAgLTY4Miw3ICs2ODgsNiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgc2xvd1BhdGgubGluaygmbV9qaXQpOwogICAg
IAogICAgIG1faml0Lm1vdmUoY2FsbGVlR1BSLCBHUFJJbmZvOjpyZWdUMCk7IC8vIENhbGxlZSBu
ZWVkcyB0byBiZSBpbiByZWdUMAotICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gbV9q
aXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbygpOwogICAgIG1faml0Lm1vdmUoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6cmVnVDIpOyAv
LyBMaW5rIGluZm8gbmVlZHMgdG8gYmUgaW4gcmVnVDIKICAgICBKSVRDb21waWxlcjo6Q2FsbCBz
bG93Q2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7CiAgICAgCkBAIC0zNzY4LDE4ICszNzczLDIxIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGls
ZUdldEFycmF5TGVuZ3RoKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgY2Fz
ZSBDaGVja0Z1bmN0aW9uOiB7Ci0gICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZ1bmN0aW9u
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRGdW5j
dGlvbiwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoZnVuY3Rpb24uZ3ByKCkpLCBub2RlLT5j
aGlsZDEoKSwgbV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGZ1bmN0
aW9uLmdwcigpLCBub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpLmFzQ2VsbCgpKSk7CisgICAgY2Fz
ZSBDaGVja0NlbGw6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2VsbCh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkQ2VsbCwgSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbC5ncHIoKSksIG5vZGUtPmNoaWxkMSgpLCBtX2ppdC5i
cmFuY2hXZWFrUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgY2VsbC5ncHIoKSwgbm9kZS0+Y2Vs
bE9wZXJhbmQoKS0+dmFsdWUoKS5hc0NlbGwoKSkpOwogICAgICAgICBub1Jlc3VsdChub2RlKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIENoZWNrRXhlY3V0YWJs
ZTogeworICAgIGNhc2UgR2V0RXhlY3V0YWJsZTogewogICAgICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBmdW5jdGlvbih0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIHNwZWN1bGF0ZUNl
bGxUeXBlKG5vZGUtPmNoaWxkMSgpLCBmdW5jdGlvbi5ncHIoKSwgU3BlY0Z1bmN0aW9uLCBKU0Z1
bmN0aW9uVHlwZSk7Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkRXhlY3V0YWJsZSwgSlNW
YWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoZnVuY3Rpb24uZ3ByKCkpLCBub2RlLT5jaGlsZDEoKSwg
bV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpB
ZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSks
IG5vZGUtPmV4ZWN1dGFibGUoKSkpOwotICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgZnVuY3Rpb24pOworICAgICAgICBHUFJS
ZWcgZnVuY3Rpb25HUFIgPSBmdW5jdGlvbi5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgc3BlY3VsYXRlQ2VsbFR5cGUobm9kZS0+Y2hpbGQx
KCksIGZ1bmN0aW9uR1BSLCBTcGVjRnVuY3Rpb24sIEpTRnVuY3Rpb25UeXBlKTsKKyAgICAgICAg
bV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhmdW5jdGlvbkdQUiwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCByZXN1bHRHUFIpOworICAgICAgICBjZWxsUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC00
MjE5LDkgKzQyMjcsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogCiAgICAgY2FzZSBDYWxsOgogICAgIGNhc2UgQ29uc3RydWN0OgorICAgIGNhc2UgUHJvZmls
ZWRDYWxsOgorICAgIGNhc2UgUHJvZmlsZWRDb25zdHJ1Y3Q6CiAgICAgICAgIGVtaXRDYWxsKG5v
ZGUpOwogICAgICAgICBicmVhazsKLQorICAgICAgICAKICAgICBjYXNlIENyZWF0ZUFjdGl2YXRp
b246IHsKICAgICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCAhbm9kZS0+b3Jp
Z2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSk7CiAgICAgICAgIApAQCAtNDk3MCw3ICs0OTgw
LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2Ug
TXVsdGlHZXRCeU9mZnNldDoKICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CiAgICAgY2FzZSBG
aWF0SW50NTI6Ci0gICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiVW5leHBl
Y3RlZCBGVEwgbm9kZSIpOworICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgorICAgIGNhc2UgQm90dG9t
VmFsdWU6CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiVW5leHBlY3Rl
ZCBub2RlIik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE3Mjg1OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MzU0LDYgKzUzNTQsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN3aXRjaChOb2RlKiBubwogICAgIGNhc2UgU3dpdGNoU3RyaW5nOiB7CiAgICAgICAgIGVtaXRT
d2l0Y2hTdHJpbmcobm9kZSwgZGF0YSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2Fz
ZSBTd2l0Y2hDZWxsOiB7CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAi
QmFkIHN3aXRjaCBraW5kIik7CisgICAgICAgIHJldHVybjsKICAgICB9IH0KICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAJKHJl
dmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJl
UmVnaXN0cmF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MiwxMCArNjIsNiBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6Ci0gICAgICAgICAgICAgICAgICAg
IHJlZ2lzdGVyU3RydWN0dXJlKG5vZGUtPmV4ZWN1dGFibGUoKS0+c3RydWN0dXJlKCkpOwotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVj
dHVyZXMobm9kZS0+c3RydWN0dXJlU2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25Q
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVy
VXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTAsMTMgKzUwLDE3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFPcHRpb25z
Ojp1c2VGVExKSVQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAg
ICAgIGlmIChtX2dyYXBoLm1fcHJvZmlsZWRCbG9jay0+bV9kaWRGYWlsRlRMQ29tcGlsYXRpb24p
CisgICAgICAgIGlmIChtX2dyYXBoLm1fcHJvZmlsZWRCbG9jay0+bV9kaWRGYWlsRlRMQ29tcGls
YXRpb24pIHsKKyAgICAgICAgICAgIHJlbW92ZUZUTFByb2ZpbGluZygpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgICAgIAogI2lmIEVOQUJMRShGVExfSklUKQog
ICAgICAgICBGVEw6OkNhcGFiaWxpdHlMZXZlbCBsZXZlbCA9IEZUTDo6Y2FuQ29tcGlsZShtX2dy
YXBoKTsKLSAgICAgICAgaWYgKGxldmVsID09IEZUTDo6Q2Fubm90Q29tcGlsZSkKKyAgICAgICAg
aWYgKGxldmVsID09IEZUTDo6Q2Fubm90Q29tcGlsZSkgeworICAgICAgICAgICAgcmVtb3ZlRlRM
UHJvZmlsaW5nKCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIGlmICghT3B0aW9uczo6ZW5hYmxlT1NSRW50cnlUb0ZUTCgpKQogICAgICAg
ICAgICAgbGV2ZWwgPSBGVEw6OkNhbkNvbXBpbGU7CkBAIC0xMTgsNiArMTIyLDMyIEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQogICAg
IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIHJlbW92ZUZUTFByb2ZpbGluZygpCisgICAgeworICAg
ICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJs
b2NrSW5kZXgtLTspIHsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5i
bG9jayhibG9ja0luZGV4KTsKKyAgICAgICAgICAgIGlmICghYmxvY2spCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9k
ZUluZGV4ID0gMDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKKyAg
ICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7CisgICAgICAg
ICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBQcm9m
aWxlZENhbGw6CisgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wKENhbGwpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgY2FzZSBQcm9maWxlZENvbnN0cnVjdDoKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0
T3AoQ29uc3RydWN0KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
IH07CiAKIGJvb2wgcGVyZm9ybVRpZXJVcENoZWNrSW5qZWN0aW9uKEdyYXBoJiBncmFwaCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAx
NzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjAwLDcgKzIwMCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFtYXlFeGl0KG1fZ3JhcGgsIG5vZGUp
IHx8IG5vZGUtPm9yaWdpbi5mb3JFeGl0LmlzU2V0KCkpOwogICAgICAgICAgICAgICAgIFZBTElE
QVRFKChub2RlKSwgIW5vZGUtPmhhc1N0cnVjdHVyZSgpIHx8ICEhbm9kZS0+c3RydWN0dXJlKCkp
OwotICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhhc0Z1bmN0aW9uKCkg
fHwgbm9kZS0+ZnVuY3Rpb24oKS0+dmFsdWUoKS5pc0Z1bmN0aW9uKCkpOworICAgICAgICAgICAg
ICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhhc0NlbGxPcGVyYW5kKCkgfHwgbm9kZS0+Y2Vs
bE9wZXJhbmQoKS0+dmFsdWUoKS5pc0NlbGwoKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUo
KG5vZGUpLCAhbm9kZS0+aGFzQ2VsbE9wZXJhbmQoKSB8fCAhIW5vZGUtPmNlbGxPcGVyYW5kKCkt
PnZhbHVlKCkpOwogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoIShub2Rl
LT5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgh
bm9kZS0+Y2hpbGQyKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dhdGNo
cG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE3Mjg1
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rpb25Q
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExNCw3ICsxMTQsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmls
ZVdhdGNocG9pbnQ6Ci0gICAgICAgICAgICBhZGRMYXppbHkoanNDYXN0PEpTRnVuY3Rpb24qPiht
X25vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkpLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRT
ZXQoKSk7CisgICAgICAgICAgICBhZGRMYXppbHkoanNDYXN0PEpTRnVuY3Rpb24qPihtX25vZGUt
PmNlbGxPcGVyYW5kKCktPnZhbHVlKCkpLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQo
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFZhcmlh
YmxlV2F0Y2hwb2ludDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw4
IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIFB1
dENsb3N1cmVWYXI6CiAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKICAgICBjYXNlIFN0cmlu
Z0NoYXJBdDoKLSAgICBjYXNlIENoZWNrRnVuY3Rpb246CisgICAgY2FzZSBDaGVja0NlbGw6Cisg
ICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgogICAgIGNh
c2UgQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBSZWFsbG9jYXRlUHJvcGVydHlT
dG9yYWdlOgpAQCAtMTI2LDcgKzEyNyw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29t
cGlsZShOb2RlKiAKICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6CiAgICAgY2FzZSBD
aGVjazoKICAgICBjYXNlIENvdW50RXhlY3V0aW9uOgotICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxl
OgorICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNlIEdldFNjb3BlOgogICAgIGNhc2Ug
QWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OgogICAgIGNhc2UgQ2hlY2tBcmd1bWVudHNOb3RD
cmVhdGVkOgpAQCAtMTY2LDggKzE2NywxNCBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNv
bXBpbGUoTm9kZSogCiAgICAgY2FzZSBHZXRHZW5lcmljUHJvcGVydHlFbnVtZXJhdG9yOgogICAg
IGNhc2UgR2V0RW51bWVyYXRvclBuYW1lOgogICAgIGNhc2UgVG9JbmRleFN0cmluZzoKKyAgICBj
YXNlIEJvdHRvbVZhbHVlOgogICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUHJvZmlsZWRDYWxsOgorICAgIGNhc2UgUHJvZmlsZWRDb25zdHJ1Y3Q6Cisg
ICAgICAgIC8vIFRoZXNlIGFyZSBPSyBub3QgYmVjYXVzZSB0aGUgRlRMIGNhbiBzdXBwb3J0IHRo
ZW0sIGJ1dCBiZWNhdXNlIGlmIHRoZSBERkcgc2VlcyBvbmUgb2YKKyAgICAgICAgLy8gdGhlc2Ug
dGhlbiB0aGUgRlRMIHdpbGwgc2VlIGEgbm9ybWFsIENhbGwvQ29uc3RydWN0LgorICAgICAgICBi
cmVhazsKICAgICBjYXNlIElkZW50aXR5OgogICAgICAgICAvLyBObyBiYWNrZW5kIGhhbmRsZXMg
dGhpcyBiZWNhdXNlIGl0IHdpbGwgYmUgb3B0aW1pemVkIG91dC4gQnV0IHdlIG1heSBjaGVjawog
ICAgICAgICAvLyBmb3IgY2FwYWJpbGl0aWVzIGJlZm9yZSBvcHRpbWl6YXRpb24uIEl0IHdvdWxk
IGJlIGEgZGVlcCBlcnJvciB0byByZW1vdmUgdGhpcwpAQCAtMzI2LDYgKzMzMyw3IEBAIGlubGlu
ZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICAgICAgc3dpdGNoIChub2Rl
LT5zd2l0Y2hEYXRhKCktPmtpbmQpIHsKICAgICAgICAgY2FzZSBTd2l0Y2hJbW06CiAgICAgICAg
IGNhc2UgU3dpdGNoQ2hhcjoKKyAgICAgICAgY2FzZSBTd2l0Y2hDZWxsOgogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGls
ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xM
Vk0uY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNiBAQCBOT19S
RVRVUk5fRFVFX1RPX0NSQVNIIHN0YXRpYyB2b2lkIGZ0bFVuCiBOT19SRVRVUk5fRFVFX1RPX0NS
QVNIIHN0YXRpYyB2b2lkIGZ0bFVucmVhY2hhYmxlKAogICAgIENvZGVCbG9jayogY29kZUJsb2Nr
LCBCbG9ja0luZGV4IGJsb2NrSW5kZXgsIHVuc2lnbmVkIG5vZGVJbmRleCkKIHsKLSAgICAKICAg
ICBkYXRhTG9nKCJDcmFzaGluZyBpbiB0aG91Z2h0LXRvLWJlLXVucmVhY2hhYmxlIEZUTC1nZW5l
cmF0ZWQgY29kZSBmb3IgIiwgcG9pbnRlckR1bXAoY29kZUJsb2NrKSwgIiBhdCBiYXNpYyBibG9j
ayAjIiwgYmxvY2tJbmRleCk7CiAgICAgaWYgKG5vZGVJbmRleCAhPSBVSU5UX01BWCkKICAgICAg
ICAgZGF0YUxvZygiLCBub2RlIEAiLCBub2RlSW5kZXgpOwpAQCAtMTUzLDExICsxNTIsMTcgQEAg
cHVibGljOgogICAgICAgICBmb3IgKHVuc2lnbmVkIGJsb2NrSW5kZXggPSBkZXB0aEZpcnN0LnNp
emUoKTsgYmxvY2tJbmRleC0tOyApIHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0g
ZGVwdGhGaXJzdFtibG9ja0luZGV4XTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUlu
ZGV4ID0gYmxvY2stPnNpemUoKTsgbm9kZUluZGV4LS07ICkgewotICAgICAgICAgICAgICAgIE5v
ZGUqIG1fbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOwotICAgICAgICAgICAgICAgIGlmICht
X25vZGUtPmhhc0tub3duRnVuY3Rpb24oKSkgeworICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUg
PSBibG9jay0+YXQobm9kZUluZGV4KTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9w
KCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6CisgICAgICAgICAgICAgICAg
Y2FzZSBOYXRpdmVDb25zdHJ1Y3Q6IHsKICAgICAgICAgICAgICAgICAgICAgaW50IG51bUFyZ3Mg
PSBtX25vZGUtPm51bUNoaWxkcmVuKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChudW1Bcmdz
ID4gbWF4TnVtYmVyT2ZBcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgICAgICAgICBtYXhOdW1i
ZXJPZkFyZ3VtZW50cyA9IG51bUFyZ3M7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
QEAgLTQ2OCwxMSArNDczLDE0IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1
cmU6CiAgICAgICAgICAgICBjb21waWxlQ2hlY2tTdHJ1Y3R1cmUoKTsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIENoZWNrRnVuY3Rpb246Ci0gICAgICAgICAgICBjb21waWxlQ2hl
Y2tGdW5jdGlvbigpOworICAgICAgICBjYXNlIENoZWNrQ2VsbDoKKyAgICAgICAgICAgIGNvbXBp
bGVDaGVja0NlbGwoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENoZWNrQmFk
Q2VsbDoKKyAgICAgICAgICAgIGNvbXBpbGVDaGVja0JhZENlbGwoKTsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToKLSAgICAgICAgICAgIGNvbXBpbGVD
aGVja0V4ZWN1dGFibGUoKTsKKyAgICAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgorICAgICAgICAg
ICAgY29tcGlsZUdldEV4ZWN1dGFibGUoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6CiAgICAgICAgICAgICBjb21waWxlQXJyYXlpZnlUb1N0
cnVjdHVyZSgpOwpAQCAtMTc0MywyNiArMTc1MSwyNSBAQCBwcml2YXRlOgogICAgICAgICBtX291
dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKICAgICB9CiAgICAgCi0gICAgdm9p
ZCBjb21waWxlQ2hlY2tGdW5jdGlvbigpCisgICAgdm9pZCBjb21waWxlQ2hlY2tDZWxsKCkKICAg
ICB7CiAgICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgCiAgICAgICAgIHNwZWN1bGF0ZSgKLSAgICAgICAgICAgIEJhZEZ1bmN0aW9uLCBqc1Zh
bHVlVmFsdWUoY2VsbCksIG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpLAotICAgICAgICAgICAgbV9v
dXQubm90RXF1YWwoY2VsbCwgd2Vha1BvaW50ZXIobV9ub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgp
LmFzQ2VsbCgpKSkpOworICAgICAgICAgICAgQmFkQ2VsbCwganNWYWx1ZVZhbHVlKGNlbGwpLCBt
X25vZGUtPmNoaWxkMSgpLm5vZGUoKSwKKyAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKGNlbGws
IHdlYWtQb2ludGVyKG1fbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5hc0NlbGwoKSkpKTsK
ICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21waWxlQ2hlY2tFeGVjdXRhYmxlKCkKKyAgICB2b2lk
IGNvbXBpbGVDaGVja0JhZENlbGwoKQorICAgIHsKKyAgICAgICAgdGVybWluYXRlKEJhZENlbGwp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGNvbXBpbGVHZXRFeGVjdXRhYmxlKCkKICAgICB7CiAg
ICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
CiAgICAgICAgIHNwZWN1bGF0ZUZ1bmN0aW9uKG1fbm9kZS0+Y2hpbGQxKCksIGNlbGwpOwotICAg
ICAgICAKLSAgICAgICAgc3BlY3VsYXRlKAotICAgICAgICAgICAgQmFkRXhlY3V0YWJsZSwganNW
YWx1ZVZhbHVlKGNlbGwpLCBtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSwKLSAgICAgICAgICAgIG1f
b3V0Lm5vdEVxdWFsKAotICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFw
cy5KU0Z1bmN0aW9uX2V4ZWN1dGFibGUpLAotICAgICAgICAgICAgICAgIHdlYWtQb2ludGVyKG1f
bm9kZS0+ZXhlY3V0YWJsZSgpKSkpOworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIo
Y2VsbCwgbV9oZWFwcy5KU0Z1bmN0aW9uX2V4ZWN1dGFibGUpKTsKICAgICB9CiAgICAgCiAgICAg
dm9pZCBjb21waWxlQXJyYXlpZnlUb1N0cnVjdHVyZSgpCkBAIC0zNjczLDkgKzM2ODAsNyBAQCBw
cml2YXRlOgogICAgICAgICBpbnQgbnVtUGFzc2VkQXJncyA9IG1fbm9kZS0+bnVtQ2hpbGRyZW4o
KSAtIDE7CiAgICAgICAgIGludCBudW1BcmdzID0gbnVtUGFzc2VkQXJncyArIGR1bW15VGhpc0Fy
Z3VtZW50OwogCi0gICAgICAgIEFTU0VSVChtX25vZGUtPmhhc0tub3duRnVuY3Rpb24oKSk7Ci0K
LSAgICAgICAgSlNGdW5jdGlvbioga25vd25GdW5jdGlvbiA9IG1fbm9kZS0+a25vd25GdW5jdGlv
bigpOworICAgICAgICBKU0Z1bmN0aW9uKiBrbm93bkZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rp
b24qPihtX25vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuYXNDZWxsKCkpOwogICAgICAgICBO
YXRpdmVGdW5jdGlvbiBmdW5jdGlvbiA9IGtub3duRnVuY3Rpb24tPm5hdGl2ZUZ1bmN0aW9uKCk7
CiAKICAgICAgICAgRGxfaW5mbyBpbmZvOwpAQCAtMzkxOCwxMCArMzkyMywzNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBjYXNl
IFN3aXRjaFN0cmluZzoKKyAgICAgICAgY2FzZSBTd2l0Y2hTdHJpbmc6IHsKICAgICAgICAgICAg
IERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJVbmltcGxlbWVudGVkIik7Ci0gICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgIGNhc2UgU3dpdGNoQ2VsbDogeworICAgICAgICAgICAgTFZhbHVlIGNlbGw7CisgICAg
ICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgICAgICAg
ICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgICAgICAgICBjZWxsID0gbG93Q2VsbChtX25vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICAgICAg
ICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgY2VsbENhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIlN3
aXRjaC9Td2l0Y2hDZWxsIGNlbGwgY2FzZSIpKTsKKyAgICAgICAgICAgICAgICBtX291dC5icmFu
Y2goCisgICAgICAgICAgICAgICAgICAgIGlzQ2VsbCh2YWx1ZSksIHVuc3VyZShjZWxsQ2FzZSks
IHVuc3VyZShsb3dCbG9jayhkYXRhLT5mYWxsVGhyb3VnaC5ibG9jaykpKTsKKyAgICAgICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhjZWxsQ2FzZSk7CisgICAgICAgICAgICAgICAgY2VsbCA9IHZh
bHVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBERkdfQ1JBU0gobV9n
cmFwaCwgbV9ub2RlLCAiQmFkIHVzZSBraW5kIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBidWlsZFN3aXRjaChtX25v
ZGUtPnN3aXRjaERhdGEoKSwgbV9vdXQuaW50UHRyLCBjZWxsKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfSB9CiAgICAgICAgIAogICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9u
b2RlLCAiQmFkIHN3aXRjaCBraW5kIik7CiAgICAgfQpAQCAtNTE4Niw3ICs1MjE4LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgVmVjdG9yPFN3aXRjaENhc2U+IGNhc2VzOwogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZGF0YS0+Y2FzZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAg
IGNhc2VzLmFwcGVuZChTd2l0Y2hDYXNlKAotICAgICAgICAgICAgICAgIGNvbnN0SW50KHR5cGUs
IGRhdGEtPmNhc2VzW2ldLnZhbHVlLnN3aXRjaExvb2t1cFZhbHVlKCkpLAorICAgICAgICAgICAg
ICAgIGNvbnN0SW50KHR5cGUsIGRhdGEtPmNhc2VzW2ldLnZhbHVlLnN3aXRjaExvb2t1cFZhbHVl
KGRhdGEtPmtpbmQpKSwKICAgICAgICAgICAgICAgICBsb3dCbG9jayhkYXRhLT5jYXNlc1tpXS50
YXJnZXQuYmxvY2spLCBXZWlnaHQoZGF0YS0+Y2FzZXNbaV0udGFyZ2V0LmNvdW50KSkpOwogICAg
ICAgICB9CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJl
dmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05ODQsNiArOTg0LDExIEBAIHZvaWQgSGVhcDo6Y29sbGVjdChIZWFw
T3BlcmF0aW9uIGNvbGxlY3QKICAgICAgICAgdm0oKS0+dHlwZVByb2ZpbGVyTG9nKCktPnByb2Nl
c3NMb2dFbnRyaWVzKEFTQ0lJTGl0ZXJhbCgiR0MiKSk7CiAgICAgfQogICAgIAorICAgIGlmICh2
bSgpLT5jYWxsRWRnZUxvZykgeworICAgICAgICBEZWZlckdDRm9yQVdoaWxlIGF3aGlsZSgqdGhp
cyk7CisgICAgICAgIHZtKCktPmNhbGxFZGdlTG9nLT5wcm9jZXNzTG9nKCk7CisgICAgfQorICAg
IAogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2RlZmVycmFsRGVwdGgpOwogICAgIEFTU0VSVCh2bSgp
LT5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2
bSgpLT5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdU
YWJsZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuaAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsMjEgQEAgcHVibGljOgog
I2VuZGlmCiAgICAgfQogICAgIAorICAgIHZvaWQgbG9hZFZhbHVlKEFkZHJlc3MgYWRkcmVzcywg
SlNWYWx1ZVJlZ3MgcmVncykKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbG9h
ZDY0KGFkZHJlc3MsIHJlZ3MuZ3ByKCkpOworI2Vsc2UKKyAgICAgICAgaWYgKGFkZHJlc3MuYmFz
ZSA9PSByZWdzLnBheWxvYWRHUFIoKSkgeworICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0
aE9mZnNldChUYWdPZmZzZXQpLCByZWdzLnRhZ0dQUigpKTsKKyAgICAgICAgICAgIGxvYWQzMihh
ZGRyZXNzLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCksIHJlZ3MucGF5bG9hZEdQUigpKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoUGF5
bG9hZE9mZnNldCksIHJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAgICAgIGxvYWQzMihhZGRy
ZXNzLndpdGhPZmZzZXQoVGFnT2Zmc2V0KSwgcmVncy50YWdHUFIoKSk7CisgICAgICAgIH0KKyNl
bmRpZgorICAgIH0KKyAgICAKICAgICB2b2lkIG1vdmVUcnVzdGVkVmFsdWUoSlNWYWx1ZSB2YWx1
ZSwgSlNWYWx1ZVJlZ3MgcmVncykKICAgICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAkocmV2aXNpb24gMTcyODU5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAkod29ya2luZyBjb3B5
KQpAQCAtMTY2Niw2ICsxNjY2LDE1IEBAIHB1YmxpYzoKICAgICAgICAgbW92ZShhcmc0LCBHUFJJ
bmZvOjphcmd1bWVudEdQUjMpOwogICAgIH0KICNlbmRpZgorICAgIAorICAgIHZvaWQgc2V0dXBB
cmd1bWVudHMoSlNWYWx1ZVJlZ3MgYXJnMSkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICAgICAgc2V0dXBBcmd1bWVudHMoYXJnMS5ncHIoKSk7CisjZWxzZQorICAgICAgICBzZXR1cEFy
Z3VtZW50cyhhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSk7CisjZW5kaWYKKyAgICB9
CiAKICAgICB2b2lkIHNldHVwUmVzdWx0cyhHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QikKICAg
ICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAkocmV2aXNpb24gMTcyODU5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgJKHdvcmtpbmcgY29weSkK
QEAgLTYwLDYgKzYwLDggQEAgcHVibGljOgogICAgIEdQUlJlZyB0YWdHUFIoKSBjb25zdCB7IHJl
dHVybiBJbnZhbGlkR1BSUmVnOyB9CiAgICAgR1BSUmVnIHBheWxvYWRHUFIoKSBjb25zdCB7IHJl
dHVybiBtX2dwcjsgfQogICAgIAorICAgIGJvb2wgdXNlcyhHUFJSZWcgZ3ByKSBjb25zdCB7IHJl
dHVybiBtX2dwciA9PSBncHI7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByOwog
fTsKQEAgLTE2OSw2ICsxNzEsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0YWdHUFIoKTsK
ICAgICB9CiAKKyAgICBib29sIHVzZXMoR1BSUmVnIGdwcikgY29uc3QgeyByZXR1cm4gbV90YWdH
UFIgPT0gZ3ByIHx8IG1fcGF5bG9hZEdQUiA9PSBncHI7IH0KKyAgICAKIHByaXZhdGU6CiAgICAg
aW50OF90IG1fdGFnR1BSOwogICAgIGludDhfdCBtX3BheWxvYWRHUFI7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMwMCw2ICszMDAsMTMgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQg
b3Bjb2RlSQogICAgIHN0b3JlMzIocmVnVDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIs
IEpTU3RhY2s6OkNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQ
YXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAgICAgc3RvcmUzMihy
ZWdUMSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgSlNTdGFjazo6Q2FsbGVlICogc3Rh
dGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFRhZ09mZnNldCAtIHNpemVvZihDYWxs
ZXJGcmFtZUFuZFBDKSkpOwogCisgICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2st
PmFkZENhbGxMaW5rSW5mbygpOworCisgICAgaWYgKENhbGxFZGdlTG9nOjppc0VuYWJsZWQoKSAm
JiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKKyAgICAgICAgbV92bS0+ZW5zdXJlQ2FsTEVkZ2VM
b2coKS5lbWl0TG9nQ29kZSgKKyAgICAgICAgICAgICp0aGlzLCBpbmZvLT5jYWxsRWRnZVByb2Zp
bGUsIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkpOworICAgIH0KKwogICAgIGlmIChvcGNvZGVJ
RCA9PSBvcF9jYWxsX2V2YWwpIHsKICAgICAgICAgY29tcGlsZUNhbGxFdmFsKGluc3RydWN0aW9u
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzEzLDcgKzMyMCw2IEBAIHZvaWQgSklUOjpjb21waWxl
T3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZSk7CiAKICAg
ICBBU1NFUlQobV9jYWxsQ29tcGlsYXRpb25JbmZvLnNpemUoKSA9PSBjYWxsTGlua0luZm9JbmRl
eCk7Ci0gICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5m
bygpOwogICAgIGluZm8tPmNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihvcGNv
ZGVJRCk7CiAgICAgaW5mby0+Y29kZU9yaWdpbiA9IENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNl
dCk7CiAgICAgaW5mby0+Y2FsbGVlR1BSID0gcmVnVDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENhbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQ2FsbC5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMiw2ICsyMTIsMTIgQEAg
dm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoY2FsbGVlLCByZWdUMCk7IC8vIHJlZ1QwIGhvbGRzIGNhbGxlZS4KIAogICAg
IHN0b3JlNjQocmVnVDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpTU3RhY2s6OkNh
bGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVy
RnJhbWVBbmRQQykpKTsKKyAgICAKKyAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2NvZGVCbG9j
ay0+YWRkQ2FsbExpbmtJbmZvKCk7CisKKyAgICBpZiAoQ2FsbEVkZ2VMb2c6OmlzRW5hYmxlZCgp
ICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKQorICAgICAgICAmJiBPcHRpb25zOjpiYXNlbGluZURv
ZXNDYWxsRWRnZVByb2ZpbGluZygpKQorICAgICAgICBtX3ZtLT5lbnN1cmVDYWxsRWRnZUxvZygp
LmVtaXRMb2dDb2RlKCp0aGlzLCBpbmZvLT5jYWxsRWRnZVByb2ZpbGUsIEpTVmFsdWVSZWdzKHJl
Z1QwKSk7CiAKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbF9ldmFsKSB7CiAgICAgICAgIGNv
bXBpbGVDYWxsRXZhbChpbnN0cnVjdGlvbik7CkBAIC0yMjMsNyArMjI5LDYgQEAgdm9pZCBKSVQ6
OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIGFkZFNsb3dDYXNlKHNsb3dDYXNl
KTsKIAogICAgIEFTU0VSVChtX2NhbGxDb21waWxhdGlvbkluZm8uc2l6ZSgpID09IGNhbGxMaW5r
SW5mb0luZGV4KTsKLSAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2NvZGVCbG9jay0+YWRkQ2Fs
bExpbmtJbmZvKCk7CiAgICAgaW5mby0+Y2FsbFR5cGUgPSBDYWxsTGlua0luZm86OmNhbGxUeXBl
Rm9yKG9wY29kZUlEKTsKICAgICBpbmZvLT5jb2RlT3JpZ2luID0gQ29kZU9yaWdpbihtX2J5dGVj
b2RlT2Zmc2V0KTsKICAgICBpbmZvLT5jYWxsZWVHUFIgPSByZWdUMDsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3
LDYgKzE2NywxMyBAQCB0eXBlZGVmIGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICB2KGJv
b2wsIGVuYWJsZUFjY2Vzc0lubGluaW5nLCB0cnVlKSBcCiAgICAgdihib29sLCBlbmFibGVQb2x5
dmFyaWFudERldmlydHVhbGl6YXRpb24sIHRydWUpIFwKICAgICB2KGJvb2wsIGVuYWJsZVBvbHlt
b3JwaGljQWNjZXNzSW5saW5pbmcsIHRydWUpIFwKKyAgICB2KGJvb2wsIGVuYWJsZVBvbHltb3Jw
aGljQ2FsbElubGluaW5nLCB0cnVlKSBcCisgICAgdihib29sLCBjYWxsU3RhdHVzU2hvdWxkVXNl
Q2FsbEVkZ2VQcm9maWxlLCB0cnVlKSBcCisgICAgdihib29sLCBjYWxsRWRnZVByb2ZpbGVSZWFs
bHlQcm9jZXNzZXNMb2csIHRydWUpIFwKKyAgICB2KGJvb2wsIGJhc2VsaW5lRG9lc0NhbGxFZGdl
UHJvZmlsaW5nLCBmYWxzZSkgXAorICAgIHYoYm9vbCwgZGZnRG9lc0NhbGxFZGdlUHJvZmlsaW5n
LCB0cnVlKSBcCisgICAgdihib29sLCBlbmFibGVDYWxsRWRnZVByb2ZpbGluZywgdHJ1ZSkgXAor
ICAgIHYodW5zaWduZWQsIGZyZXF1ZW50Q2FsbFRocmVzaG9sZCwgMikgXAogICAgIHYoYm9vbCwg
b3B0aW1pemVOYXRpdmVDYWxscywgZmFsc2UpIFwKICAgICBcCiAgICAgdihib29sLCBlbmFibGVD
b25jdXJyZW50SklULCB0cnVlKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Myw2ICszNzMsMTMgQEAgVk0qJiBWTTo6c2hhcmVk
SW5zdGFuY2VJbnRlcm5hbCgpCiAgICAgcmV0dXJuIHNoYXJlZEluc3RhbmNlOwogfQogCitDYWxs
RWRnZUxvZyYgVk06OmVuc3VyZUNhbGxFZGdlTG9nKCkKK3sKKyAgICBpZiAoIWNhbGxFZGdlTG9n
KQorICAgICAgICBjYWxsRWRnZUxvZyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbEVkZ2VMb2c+KCk7
CisgICAgcmV0dXJuICpjYWxsRWRnZUxvZzsKK30KKwogI2lmIEVOQUJMRShKSVQpCiBzdGF0aWMg
VGh1bmtHZW5lcmF0b3IgdGh1bmtHZW5lcmF0b3JGb3JJbnRyaW5zaWMoSW50cmluc2ljIGludHJp
bnNpYykKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMTcy
ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5
KQpAQCAtNzIsNiArNzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFyaXR5Q2hl
Y2tGYWlsUmV0dXJuVGh1bmtzOwogICAgIGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlczsKKyAgICBj
bGFzcyBDYWxsRWRnZUxvZzsKICAgICBjbGFzcyBDb2RlQmxvY2s7CiAgICAgY2xhc3MgQ29kZUNh
Y2hlOwogICAgIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwpAQCAtMjMzLDYgKzIzNCw5IEBAIG5h
bWVzcGFjZSBKU0MgewogI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBPd25QdHI8REZHOjpM
b25nTGl2ZWRTdGF0ZT4gZGZnU3RhdGU7CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisgICAg
ICAgIAorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbEVkZ2VMb2c+IGNhbGxFZGdlTG9nOwor
ICAgICAgICBDYWxsRWRnZUxvZyYgZW5zdXJlQ2FsbEVkZ2VMb2coKTsKIAogICAgICAgICBWTVR5
cGUgdm1UeXBlOwogICAgICAgICBDbGllbnREYXRhKiBjbGllbnREYXRhOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9uZXctYXJyYXktdGhlbi1leGl0LmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbmV3LWFycmF5LXRo
ZW4tZXhpdC5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvbmV3LWFycmF5LXRoZW4tZXhpdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0
IEBACitmdW5jdGlvbiBmb28oZikgeworICAgIHJldHVybiBuZXcgZigpOworfQorCitub0lubGlu
ZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpCisgICAgZm9vKEFycmF5
KTsKKwordmFyIGRpZENhbGwgPSBmYWxzZTsKK2ZvbyhmdW5jdGlvbigpIHsgZGlkQ2FsbCA9IHRy
dWU7IH0pOworCitpZiAoIWRpZENhbGwpCisgICAgdGhyb3cgIkVycm9yOiBkaWRuJ3QgY2FsbCBt
eSBmdW5jdGlvbi4iOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9w
b2x5LWNhbGwtZXhpdC10aGlzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQtdGhpcy5qcwkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQtdGhpcy5qcwko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5IEBACisoZnVuY3Rpb24oKSB7CisgICAgZnVuY3Rp
b24gZm9vKHgpIHsgcmV0dXJuIDEgKyB0aGlzLmY7IH0KKyAgICBmdW5jdGlvbiBiYXIoeCkgeyBy
ZXR1cm4geCArIHRoaXMuZjsgfQorICAgIGZ1bmN0aW9uIGJheih4KSB7IHJldHVybiB4ICsgMSAr
IHRoaXMuZjsgfQorICAgIAorICAgIHZhciBuID0gMTAwMDAwMDsKKyAgICAKKyAgICB2YXIgcmVz
dWx0ID0gKGZ1bmN0aW9uKG8pIHsKKyAgICAgICAgdmFyIGYgPSB7ZnVuOmZvbywgZjoxfTsKKyAg
ICAgICAgdmFyIGcgPSB7ZnVuOmJhciwgZjoyfTsKKyAgICAgICAgdmFyIGggPSB7ZnVuOmJheiwg
ZjozfTsKKyAgICAgICAgCisgICAgICAgIHZhciByZXN1bHQgPSAwOworICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IG47ICsraSkgeworICAgICAgICAgICAgaWYgKGkgPT0gbiAtIDEpCisgICAg
ICAgICAgICAgICAgZiA9IGg7CisgICAgICAgICAgICByZXN1bHQgKz0gZi5mdW4oby5mKTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgdmFyIHRtcCA9IGY7CisgICAgICAgICAgICBmID0gZzsK
KyAgICAgICAgICAgIGcgPSB0bXA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfSkoe2Y6NDJ9KTsKKyAgICAKKyAgICBpZiAocmVzdWx0ICE9ICgobiAv
IDIgLSAxKSAqICg0MiArIDIpKSArIChuIC8gMiAqICgxICsgMSkgKyAoNDIgKyAxICsgMykpKQor
ICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9KSgpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wb2x5LWNhbGwtZXhpdC5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3BvbHktY2Fs
bC1leGl0LmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9wb2x5LWNhbGwtZXhpdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5IEBACiso
ZnVuY3Rpb24oKSB7CisgICAgZnVuY3Rpb24gZm9vKHgpIHsgcmV0dXJuIDE7IH0KKyAgICBmdW5j
dGlvbiBiYXIoeCkgeyByZXR1cm4geDsgfQorICAgIGZ1bmN0aW9uIGJheih4KSB7IHJldHVybiB4
ICsgMTsgfQorICAgIAorICAgIHZhciBuID0gMTAwMDAwMDsKKyAgICAKKyAgICB2YXIgcmVzdWx0
ID0gKGZ1bmN0aW9uKG8pIHsKKyAgICAgICAgdmFyIGYgPSBmb287CisgICAgICAgIHZhciBnID0g
YmFyOworICAgICAgICB2YXIgaCA9IGJhejsKKyAgICAgICAgCisgICAgICAgIHZhciByZXN1bHQg
PSAwOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkgeworICAgICAgICAgICAg
aWYgKGkgPT0gbiAtIDEpCisgICAgICAgICAgICAgICAgZiA9IGg7CisgICAgICAgICAgICByZXN1
bHQgKz0gZihvLmYpOworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgdG1wID0gZjsKKyAg
ICAgICAgICAgIGYgPSBnOworICAgICAgICAgICAgZyA9IHRtcDsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9KSh7Zjo0Mn0pOworICAgIAorICAgIGlm
IChyZXN1bHQgIT0gKChuIC8gMiAtIDEpICogNDIpICsgKG4gLyAyICogMSkgKyAoNDIgKyAxKSkK
KyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfSkoKTsKSW5k
ZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE0LTA4LTIzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0Bh
cHBsZS5jb20+CisKKyAgICAgICAgREZHIChvciBGVEwpIHNob3VsZCBiZSBhYmxlIHRvIGRvIHBv
bHltb3JwaGljIGNhbGwgaW5saW5pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNTE0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorICAgICAgICAKKyAgICAgICAgQWRkIHNvbWUgcG93ZXIgdGhhdCBJIG5lZWQgZm9yIGNh
bGwgZWRnZSBwcm9maWxpbmcuCisKKyAgICAgICAgKiB3dGYvT3duUHRyLmg6CisgICAgICAgIChX
VEY6Ok93blB0cjxUPjo6Y3JlYXRlVHJhbnNhY3Rpb25hbGx5KToKKyAgICAgICAgKiB3dGYvU3Bl
Y3RydW0uaDoKKyAgICAgICAgKFdURjo6U3BlY3RydW06OmFkZCk6CisgICAgICAgIChXVEY6OlNw
ZWN0cnVtOjphZGRBbGwpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6Z2V0KToKKyAgICAgICAg
KFdURjo6U3BlY3RydW06OnNpemUpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6S2V5QW5kQ291
bnQ6OktleUFuZENvdW50KToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OmNsZWFyKToKKyAgICAg
ICAgKFdURjo6U3BlY3RydW06OnJlbW92ZUlmKToKKwogMjAxNC0wOC0yMSAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZlcnQgcjE3MjgzMSwgaXQg
YnJva2UgdGhlIFdpbmRvd3MgYnVpbGQuCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Pd25QdHIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Pd25QdHIuaAkocmV2aXNpb24gMTcyODU5KQor
KysgU291cmNlL1dURi93dGYvT3duUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3
LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMiw2ICsyMiw3IEBACiAjZGVmaW5lIFdURl9Pd25Q
dHJfaAogCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvQXRvbWlj
cy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHJD
b21tb24uaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CkBAIC03Miw2ICs3MywxNCBAQCBuYW1lc3Bh
Y2UgV1RGIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gT3duUHRyJiBvcGVyYXRvcj0o
T3duUHRyPFU+JiYpOwogCiAgICAgICAgIHZvaWQgc3dhcChPd25QdHImIG8pIHsgc3RkOjpzd2Fw
KG1fcHRyLCBvLm1fcHRyKTsgfQorICAgICAgICAKKyAgICAgICAgLy8gQ29uc3RydWN0IGFuIG9i
amVjdCB0byBzdG9yZSBpbnRvIHRoaXMgT3duUHRyLCBidXQgb25seSBzbyBsb25nIGFzIHRoaXMg
T3duUHRyCisgICAgICAgIC8vIGRvZXNuJ3QgYWxyZWFkeSBwb2ludCB0byBhbiBvYmplY3QuIFRo
aXMgd2lsbCBlbnN1cmUgdGhhdCBhZnRlciB5b3UgY2FsbCB0aGlzLAorICAgICAgICAvLyB0aGUg
T3duUHRyIHdpbGwgcG9pbnQgdG8gYW4gaW5zdGFuY2Ugb2YgVC4gVGhpcyBpbnN0YW5jZSBtYXkg
b3IgbWF5IG5vdCBoYXZlIGJlZW4KKyAgICAgICAgLy8gY3JlYXRlZCBieSB0aGlzIGNhbGwuIE1v
cmVvdmVyLCB0aGlzIGNhbGwgdXNlcyBhbiBvcHBvcnR1bmlzdGljIHRyYW5zYWN0aW9uLCBpbgor
ICAgICAgICAvLyB0aGF0IHdlIG1heSBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgVCBhbmQgdGhlbiBp
bW1lZGlhdGVseSB0aHJvdyBpdCBhd2F5LgorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBB
cmdzPgorICAgICAgICB2b2lkIGNyZWF0ZVRyYW5zYWN0aW9uYWxseShBcmdzLi4uIGFyZ3MpOwog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgZXhwbGljaXQgT3duUHRyKFB0clR5cGUgcHRyKSA6IG1f
cHRyKHB0cikgeyB9CkBAIC0xODYsNiArMTk1LDI4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAg
ICByZXR1cm4gcC5nZXQoKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1w
bGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBpbmxpbmUgdm9pZCBPd25QdHI8VD46OmNyZWF0ZVRyYW5z
YWN0aW9uYWxseShBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICBpZiAobV9wdHIpIHsKKyAg
ICAgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBUKiBuZXdPYmplY3QgPSBuZXcgVChhcmdzLi4uKTsK
KyAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKKyNpZiBFTkFCTEUoQ09NUEFSRV9BTkRf
U1dBUCkKKyAgICAgICAgZG8geworICAgICAgICAgICAgaWYgKG1fcHRyKSB7CisgICAgICAgICAg
ICAgICAgZGVsZXRlIG5ld09iamVjdDsKKyAgICAgICAgICAgICAgICBXVEY6OmxvYWRMb2FkRmVu
Y2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0g
d2hpbGUgKCFXVEY6OndlYWtDb21wYXJlQW5kU3dhcChiaXR3aXNlX2Nhc3Q8dm9pZCp2b2xhdGls
ZSo+KCZtX3B0ciksIG51bGxwdHIsIG5ld09iamVjdCkpOworI2Vsc2UKKyAgICAgICAgbV9wdHIg
PSBuZXdPYmplY3Q7CisjZW5kaWYKKyAgICB9CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2lu
ZyBXVEY6Ok93blB0cjsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvU3BlY3RydW0uaAkocmV2aXNpb24gMTcyODU5KQorKysgU291
cmNlL1dURi93dGYvU3BlY3RydW0uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMjIgKzMyLDMxIEBACiAK
IG5hbWVzcGFjZSBXVEYgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgQ291bnRlclR5cGUgPSB1bnNpZ25lZD4KIGNsYXNzIFNwZWN0cnVtIHsK
IHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz46
Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCB1bnNp
Z25lZCBsb25nPjo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CisgICAgdHlwZWRlZiB0
eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6aXRlcmF0b3IgaXRlcmF0b3I7CisgICAg
dHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6Y29uc3RfaXRlcmF0b3Ig
Y29uc3RfaXRlcmF0b3I7CiAgICAgCiAgICAgU3BlY3RydW0oKSB7IH0KICAgICAKLSAgICB2b2lk
IGFkZChjb25zdCBUJiBrZXksIHVuc2lnbmVkIGxvbmcgY291bnQgPSAxKQorICAgIHZvaWQgYWRk
KGNvbnN0IFQmIGtleSwgQ291bnRlclR5cGUgY291bnQgPSAxKQogICAgIHsKLSAgICAgICAgdHlw
ZW5hbWUgSGFzaE1hcDxULCB1bnNpZ25lZCBsb25nPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFw
LmFkZChrZXksIGNvdW50KTsKKyAgICAgICAgaWYgKCFjb3VudCkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgdHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46OkFkZFJlc3VsdCBy
ZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBjb3VudCk7CiAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3
RW50cnkpCiAgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlICs9IGNvdW50OwogICAg
IH0KICAgICAKLSAgICB1bnNpZ25lZCBsb25nIGdldChjb25zdCBUJiBrZXkpIGNvbnN0CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVT4KKyAgICB2b2lkIGFkZEFsbChjb25zdCBTcGVjdHJ1bTxULCBV
PiYgb3RoZXJTcGVjdHJ1bSkKKyAgICB7CisgICAgICAgIGZvciAoYXV0byBlbnRyeSA6IG90aGVy
U3BlY3RydW0pCisgICAgICAgICAgICBhZGQoZW50cnkua2V5LCBlbnRyeS5jb3VudCk7CisgICAg
fQorICAgIAorICAgIENvdW50ZXJUeXBlIGdldChjb25zdCBUJiBrZXkpIGNvbnN0CiAgICAgewog
ICAgICAgICBjb25zdF9pdGVyYXRvciBpdGVyID0gbV9tYXAuZmluZChrZXkpOwogICAgICAgICBp
ZiAoaXRlciA9PSBtX21hcC5lbmQoKSkKQEAgLTU1LDYgKzY0LDggQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gaXRlci0+dmFsdWU7CiAgICAgfQogICAgIAorICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9CisgICAgCiAgICAgaXRlcmF0b3IgYmVnaW4oKSB7
IHJldHVybiBtX21hcC5iZWdpbigpOyB9CiAgICAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gbV9t
YXAuZW5kKCk7IH0KICAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1f
bWFwLmJlZ2luKCk7IH0KQEAgLTYzLDcgKzc0LDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBLZXlB
bmRDb3VudCB7CiAgICAgICAgIEtleUFuZENvdW50KCkgeyB9CiAgICAgICAgIAotICAgICAgICBL
ZXlBbmRDb3VudChjb25zdCBUJiBrZXksIHVuc2lnbmVkIGxvbmcgY291bnQpCisgICAgICAgIEtl
eUFuZENvdW50KGNvbnN0IFQmIGtleSwgQ291bnRlclR5cGUgY291bnQpCiAgICAgICAgICAgICA6
IGtleShrZXkpCiAgICAgICAgICAgICAsIGNvdW50KGNvdW50KQogICAgICAgICB7CkBAIC04MCw3
ICs5MSw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIFQga2V5OwotICAgICAgICB1
bnNpZ25lZCBsb25nIGNvdW50OworICAgICAgICBDb3VudGVyVHlwZSBjb3VudDsKICAgICB9Owog
ICAgIAogICAgIC8vIFJldHVybnMgYSBsaXN0IG9yZGVyZWQgZnJvbSBsb3dlc3QtY291bnQgdG8g
aGlnaGVzdC1jb3VudC4KQEAgLTk0LDggKzEwNSwxOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBsaXN0OwogICAgIH0KICAgICAKKyAgICB2b2lkIGNsZWFyKCkgeyBtX21hcC5jbGVhcigpOyB9
CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICB2b2lkIHJlbW92ZUlm
KGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgeworICAgICAgICBtX21hcC5yZW1vdmVJZihb
ZnVuY3Rvcl0gKHR5cGVuYW1lIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+OjpLZXlWYWx1ZVBhaXJU
eXBlJiBwYWlyKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0b3IoS2V5QW5kQ291bnQo
cGFpci5rZXksIHBhaXIudmFsdWUpKTsKKyAgICAgICAgICAgIH0pOworICAgIH0KKyAgICAKIHBy
aXZhdGU6Ci0gICAgSGFzaE1hcDxULCB1bnNpZ25lZCBsb25nPiBtX21hcDsKKyAgICBIYXNoTWFw
PFQsIENvdW50ZXJUeXBlPiBtX21hcDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTcyODU5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDgtMjMgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KKworICAgICAgICBERkcgKG9yIEZUTCkgc2hvdWxkIGJlIGFibGUgdG8gZG8gcG9s
eW1vcnBoaWMgY2FsbCBpbmxpbmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM1MTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcG9seS1jYWxs
LW5lc3RlZC5qczogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2lt
cGxlLXBvbHktY2FsbC5qczogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zaW1wbGUtcG9s
eS1jYWxsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zaW1wbGUt
cG9seS1jYWxsLW5lc3RlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jl
c3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVn
cmVzcy9zaW1wbGUtcG9seS1jYWxsLmh0bWw6IEFkZGVkLgorCiAyMDE0LTA4LTIxICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBBbmltYXRlZCBHSUZzIHNjcm9s
bGVkIG91dCBvZiB2aWV3IHN0aWxsIGNhdXNlIHRpdGxlYmFyIGJsdXIgdG8gdXBkYXRlLCBvbiB0
dW1ibHIuY29tIHBhZ2UKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHkt
Y2FsbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
aW1wbGUtcG9seS1jYWxsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwKKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRl
c3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1w
bGUtcG9seS1jYWxsLW5lc3RlZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMCBAQAorSlNSZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVkCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVkLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcG9seS1jYWxsLW5lc3RlZC5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcG9seS1jYWxsLW5lc3Rl
ZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVkLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jl
c3Mvc2ltcGxlLXBvbHktY2FsbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3Jl
Z3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zaW1wbGUtcG9seS1jYWxsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMv
c2ltcGxlLXBvbHktY2FsbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcG9seS1jYWxsLW5lc3Rl
ZC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9z
aW1wbGUtcG9seS1jYWxsLW5lc3RlZC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVkLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMjUgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBmdW5jdGlvbiBmb28o
eCkgeyByZXR1cm4gMTsgfQorICAgIGZ1bmN0aW9uIGJhcih4KSB7IHJldHVybiB4OyB9CisgICAg
CisgICAgdmFyIG4gPSAxMDAwMDAwOworICAgIAorICAgIHZhciByZXN1bHQgPSAoZnVuY3Rpb24o
KSB7CisgICAgICAgIHZhciBmID0gZm9vOworICAgICAgICB2YXIgZyA9IGJhcjsKKyAgICAgICAg
CisgICAgICAgIHZhciByZXN1bHQgPSAwOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47
ICsraSkgeworICAgICAgICAgICAgcmVzdWx0ICs9IGYoNDIpOworICAgICAgICAgICAgCisgICAg
ICAgICAgICB2YXIgdG1wID0gZjsKKyAgICAgICAgICAgIGYgPSBnOworICAgICAgICAgICAgZyA9
IHRtcDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
KSgpOworICAgIAorICAgIGlmIChyZXN1bHQgIT0gbiAvIDIgKiA0MiArIG4gLyAyICogMSkKKyAg
ICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfSkoKTsKSW5kZXg6
IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxl
LXBvbHktY2FsbC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwy
MCBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIGZvbyh4KSB7IHJldHVybiAxOyB9Cisg
ICAgZnVuY3Rpb24gYmFyKHgpIHsgcmV0dXJuIHg7IH0KKyAgICAKKyAgICB2YXIgZiA9IGZvbzsK
KyAgICB2YXIgZyA9IGJhcjsKKyAgICAKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICB2YXIgbiA9
IDEwMDAwMDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkgeworICAgICAgICByZXN1
bHQgKz0gZig0Mik7CisgICAgICAgIAorICAgICAgICB2YXIgdG1wID0gZjsKKyAgICAgICAgZiA9
IGc7CisgICAgICAgIGcgPSB0bXA7CisgICAgfQorICAgIAorICAgIGlmIChyZXN1bHQgIT0gbiAv
IDIgKiA0MiArIG4gLyAyICogMSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAi
ICsgcmVzdWx0OworfSkoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237040</attachid>
            <date>2014-08-23 21:13:31 -0700</date>
            <delta_ts>2014-08-24 18:00:22 -0700</delta_ts>
            <desc>the wrong approach, for real</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>178715</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyNiBA
QAorMjAxNC0wOC0yMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyAob3IgRlRMKSBzaG91bGQgYmUgYWJsZSB0byBkbyBwb2x5bW9ycGhpYyBjYWxsIGlubGlu
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUx
NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIEFkZCBhIGxvZy1iYXNlZCBoaWdoLWZpZGVsaXR5IGNhbGwgZWRnZSBwcm9maWxlciB0aGF0
IHJ1bnMgaW4gYmFzZWxpbmUgSklUIGFuZCBERkcgSklUIGNvZGUuCisgICAgICAgIFVzZSBpdCB0
byBkbyBwcmVjaXNlIHBvbHltb3JwaGljIGlubGluaW5nIGluIHRoZSBGVEwsIGFuZCB0byBtYWtl
IHRoZSBERkcncyBtb25vbW9ycGhpYworICAgICAgICBpbmxpbmVyIGEgYml0IG1vcmUgaW50ZWxs
aWdlbnQuIFBvdGVudGlhbCBpbmxpbmluZyBzaXRlcyB3aWxsIHVzZSB0aGUgY2FsbCBlZGdlIHBy
b2ZpbGUgaWYKKyAgICAgICAgaXQgaXMgYXZhaWxhYmxlIGJ1dCB0aGV5IHdpbGwgc3RpbGwgZmFs
bCBiYWNrIG9uIHRoZSBjYWxsIGlubGluZSBjYWNoZSBhbmQgcmFyZSBjYXNlIGNvdW50cworICAg
ICAgICBpZiB0aGF0J3Mgbm90IGF2YWlsYWJsZS4KKyAgICAgICAgCisgICAgICAgIFdvcmsgaW4g
cHJvZ3Jlc3MuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxFZGdlLmNwcDogQWRkZWQuCisgICAgICAg
IChKU0M6OkNhbGxFZGdlOjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsRWRnZS5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2U6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6
OkNhbGxFZGdlOjpjYWxsZWUpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZTo6Y291bnQpOgorICAg
ICAgICAoSlNDOjpDYWxsRWRnZTo6ZGVzcGVjaWZpZWRDbG9zdXJlKToKKyAgICAgICAgKEpTQzo6
Q2FsbEVkZ2U6OkNhbGxFZGdlKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VQcm9maWxlOjpjYWxsRWRnZXMpOgor
ICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6Om51bUNhbGxzVG9Lbm93bkNlbGxzKToKKyAg
ICAgICAgKEpTQzo6d29ydGhEZXNwZWNpZnlpbmcpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZVBy
b2ZpbGU6OndvcnRoRGVzcGVjaWZ5aW5nKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VQcm9maWxl
Ojp2aXNpdFdlYWspOgorICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6OmFkZFNsb3cpOgor
ICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6Om1lcmdlQmFjayk6CisgICAgICAgIChKU0M6
OkNhbGxFZGdlUHJvZmlsZTo6ZmFkZUJ5SGFsZik6CisgICAgICAgIChKU0M6OkNhbGxFZGdlTG9n
OjpDYWxsRWRnZUxvZyk6CisgICAgICAgIChKU0M6OkNhbGxFZGdlTG9nOjp+Q2FsbEVkZ2VMb2cp
OgorICAgICAgICAoSlNDOjpDYWxsRWRnZUxvZzo6aXNFbmFibGVkKToKKyAgICAgICAgKEpTQzo6
b3BlcmF0aW9uUHJvY2Vzc0NhbGxFZGdlTG9nKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VMb2c6
OmVtaXRMb2dDb2RlKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VMb2c6OnByb2Nlc3NMb2cpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6Q2FsbEVkZ2VQcm9maWxlOjpudW1DYWxsc1RvTm90Q2VsbCk6CisgICAgICAgIChKU0M6OkNh
bGxFZGdlUHJvZmlsZTo6bnVtQ2FsbHNUb1Vua25vd25DZWxsKToKKyAgICAgICAgKiBieXRlY29k
ZS9DYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpDYWxsRWRn
ZVByb2ZpbGU6OkNhbGxFZGdlUHJvZmlsZSk6CisgICAgICAgIChKU0M6OkNhbGxFZGdlUHJvZmls
ZTo6YWRkKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAo
SlNDOjpDYWxsTGlua0luZm86OnZpc2l0V2Vhayk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmg6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAg
ICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Q2FsbExpbmtTdGF0dXMpOgorICAgICAgICAoSlNDOjpD
YWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5r
U3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZy
b21DYWxsRWRnZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6aXNDbG9z
dXJlQ2FsbCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjptYWtlQ2xvc3VyZUNhbGwp
OgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNh
bGxMaW5rU3RhdHVzOjpmdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNhbGxMaW5r
U3RhdHVzOjppbnRlcm5hbEZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbExp
bmtTdGF0dXM6OmludHJpbnNpY0Zvcik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ2Fs
bExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OkNhbGxMaW5rU3Rh
dHVzKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmlzU2V0KToKKyAgICAgICAgKEpT
Qzo6Q2FsbExpbmtTdGF0dXM6OmNvdWxkVGFrZVNsb3dQYXRoKToKKyAgICAgICAgKEpTQzo6Q2Fs
bExpbmtTdGF0dXM6OmVkZ2VzKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OnNpemUp
OgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6YXQpOgorICAgICAgICAoSlNDOjpDYWxs
TGlua1N0YXR1czo6b3BlcmF0b3JbXSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpj
YW5PcHRpbWl6ZSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjYW5UcnVzdENvdW50
cyk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjppc0Nsb3N1cmVDYWxsKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNhbGxUYXJnZXQpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6ZXhlY3V0YWJsZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjptYWtlQ2xvc3VyZUNhbGwpOiBEZWxldGVkLgorICAg
ICAgICAqIGJ5dGVjb2RlL0NhbGxWYXJpYW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkNh
bGxWYXJpYW50OjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsVmFyaWFudC5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OkNhbGxWYXJpYW50KToKKyAgICAgICAgKEpT
Qzo6Q2FsbFZhcmlhbnQ6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50Ojpk
ZXNwZWNpZmllZENsb3N1cmUpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6cmF3Q2FsbGVl
Q2VsbCk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjppbnRlcm5hbEZ1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OmZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Q2FsbFZh
cmlhbnQ6OmlzQ2xvc3VyZUNhbGwpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZXhlY3V0
YWJsZSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50Ojpub25FeGVjdXRhYmxlQ2FsbGVlKToK
KyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OmludHJpbnNpY0Zvcik6CisgICAgICAgIChKU0M6
OkNhbGxWYXJpYW50OjpmdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpDYWxsVmFy
aWFudDo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFu
dDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpvcGVyYXRvciE9KToK
KyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om9wZXJhdG9yPCk6CisgICAgICAgIChKU0M6OkNh
bGxWYXJpYW50OjpvcGVyYXRvcj4pOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6b3BlcmF0
b3I8PSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpvcGVyYXRvcj49KToKKyAgICAgICAg
KEpTQzo6Q2FsbFZhcmlhbnQ6Omhhc2gpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZGVs
ZXRlZFRva2VuKToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnRIYXNoOjpoYXNoKToKKyAgICAg
ICAgKEpTQzo6Q2FsbFZhcmlhbnRIYXNoOjplcXVhbCk6CisgICAgICAgICogYnl0ZWNvZGUvRXhp
dEtpbmQuY3BwOgorICAgICAgICAoSlNDOjpleGl0S2luZFRvU3RyaW5nKToKKyAgICAgICAgKiBi
eXRlY29kZS9FeGl0S2luZC5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0JhY2t3YXJk
c1Byb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJhY2t3YXJkc1Byb3Bh
Z2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR0Jhc2ljQmxvY2suaDoK
KyAgICAgICAgKEpTQzo6REZHOjpCYXNpY0Jsb2NrOjp0YWtlTGFzdCk6CisgICAgICAgIChKU0M6
OkRGRzo6QmFzaWNCbG9jazo6ZGlkTGluayk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cmVtb3ZlTGFzdE5v
ZGVGcm9tR3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphZGRDYWxs
V2l0aG91dFNldHRpbmdSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjphZGRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmVtaXRGdW5jdGlvbkNoZWNr
cyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnVuZG9GdW5jdGlvbkNoZWNr
cyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpjYW5jZWxMaW5raW5nRm9yQmxvY2spOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdD
UFNSZXRocmVhZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDUFNSZXRocmVhZGlu
Z1BoYXNlOjpmcmVlVW5uZWNlc3NhcnlOb2Rlcyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJp
emUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZH
Q29tbW9uLmg6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6Cisg
ICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToK
KyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxl
SW1wbCk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6R3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6Okdy
YXBoOjpkdW1wKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZn
L0RGR0xhenlKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpMYXp5SlNWYWx1ZTo6c3dp
dGNoTG9va3VwVmFsdWUpOgorICAgICAgICAqIGRmZy9ERkdMYXp5SlNWYWx1ZS5oOgorICAgICAg
ICAoSlNDOjpERkc6OkxhenlKU1ZhbHVlOjpzd2l0Y2hMb29rdXBWYWx1ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogZGZnL0RGR05vZGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToK
KyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok9wSW5mbzo6T3BJ
bmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNDZWxsT3BlcmFuZCk6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6Y2VsbE9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
OnNldENlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjYW5CZUtub3duRnVu
Y3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0tub3duRnVuY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omtub3duRnVuY3Rpb24pOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdpdmVLbm93bkZ1bmN0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNGdW5jdGlvbik6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6ZnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6Omhhc0V4ZWN1dGFibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6OmV4ZWN1dGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5o
OgorICAgICAgICAqIGRmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlOjpydW4pOgorICAg
ICAgICAqIGRmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpQaGFudG9tUmVtb3ZhbFBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpl
bWl0U3dpdGNoKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZTo6cnVuKToKKyAg
ICAgICAgKiBkZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6VGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcv
REZHVmFsaWRhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlZhbGlkYXRlOjp2YWxpZGF0ZSk6
CisgICAgICAgICogZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OldhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2U6OmhhbmRsZSk6CisgICAgICAg
ICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGls
ZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpmdGxVbnJlYWNoYWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
Omxvd2VyKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5vZGUp
OgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ2hlY2tDZWxsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNoZWNrQmFkQ2VsbCk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVHZXRFeGVjdXRhYmxl
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5hdGl2ZUNhbGxP
ckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVT
d2l0Y2gpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpidWlsZFN3aXRjaCk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVDaGVja0Z1bmN0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNo
ZWNrRXhlY3V0YWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAg
ICAgKEpTQzo6SGVhcDo6Y29sbGVjdCk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5o
OgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRWYWx1ZSk6CisgICAgICAgICog
aml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJn
dW1lbnRzKToKKyAgICAgICAgKiBqaXQvR1BSSW5mby5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
UmVnczo6dXNlcyk6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9u
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6ZW5zdXJl
Q2FsbEVkZ2VMb2cpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvbmV3LWFycmF5LXRoZW4tZXhpdC5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9wb2x5LWNhbGwtZXhpdC10aGlzLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiB0ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQuanM6IEFkZGVkLgorCiAyMDE0LTA4LTIx
ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICByMTcxMzYyIGFjY2lk
ZW50YWxseSBpbmNyZWFzZWQgdGhlIHNpemUgb2YgSW5saW5lQ2FsbEZyYW1lLgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNjMsNiArMjYzLDEzIEBACiAJCTBGM0IzQTI4MTU0NEM5OTcwMDNFRDBG
RiAvKiBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCM0EyNTE1NDRDOTkxMDAzRUQwRkYgLyogREZHQ0ZH
U2ltcGxpZmljYXRpb25QaGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGM0IzQTJCMTU0NzUwMDAwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCM0Ey
OTE1NDc0RkY0MDAzRUQwRkYgLyogREZHVmFsaWRhdGUuY3BwICovOyB9OwogCQkwRjNCM0EyQzE1
NDc1MDAyMDAzRUQwRkYgLyogREZHVmFsaWRhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0IzQTJBMTU0NzRGRjQwMDNFRDBGRiAvKiBERkdWYWxp
ZGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTBGM0I3RTI2MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMjAxOUExMUI4MDAwRDlCQzU2IC8q
IENhbGxFZGdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEYzQjdFMjcxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCN0UyMTE5QTEx
QjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmNwcCAqLzsgfTsKKwkJMEYzQjdFMjgxOUEx
MUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMjIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxF
ZGdlUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGM0I3RTI5MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGVJbmxpbmVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCN0Uy
MzE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGM0I3RTJBMTlBMTFCODAw
MEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjNCN0UyNDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQu
Y3BwICovOyB9OworCQkwRjNCN0UyQjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTI1MTlB
MTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGM0I3RTJEMTlBMTJBQUUwMEQ5QkM1NiAvKiBDYWxs
RWRnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjNCN0UyQzE5QTEyQUFFMDBEOUJDNTYgLyogQ2FsbEVkZ2UuY3BwICovOyB9OwogCQkwRjNEMEJC
QzE5NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNEMEJCQTE5NEE0MTQzMDBG
QzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHAgKi87IH07CiAJCTBGM0QwQkJEMTk0
QTQxNDMwMEZDOUNGOSAvKiBDb25zdGFudFN0cnVjdHVyZUNoZWNrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNEMEJCQjE5NEE0MTQzMDBGQzlDRjkg
LyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGNDI2QTQ4MTQ2MENCQjMwMDEzMUY4RiAvKiBWYWx1ZVJl
Y292ZXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMTY3LDYgKzIxNzQsMTMgQEAK
IAkJMEYzQjNBMjUxNTQ0Qzk5MTAwM0VEMEZGIC8qIERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ0ZHU2ltcGxpZmljYXRpb25Q
aGFzZS5oOyBwYXRoID0gZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQjNBMjkxNTQ3NEZGNDAwM0VEMEZGIC8qIERGR1ZhbGlk
YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ZhbGlkYXRl
LmNwcDsgcGF0aCA9IGRmZy9ERkdWYWxpZGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGM0IzQTJBMTU0NzRGRjQwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdWYWxpZGF0ZS5oOyBwYXRoID0gZGZnL0RGR1Zh
bGlkYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGM0I3RTIwMTlBMTFCODAw
MEQ5QkM1NiAvKiBDYWxsRWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YWxsRWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyMTE5QTExQjgw
MDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENhbGxFZGdlUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGM0I3RTIyMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbEVkZ2VQcm9maWxlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGM0I3RTIzMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRn
ZVByb2ZpbGVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxF
ZGdlUHJvZmlsZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzQjdF
MjQxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxWYXJpYW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYzQjdFMjUxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxWYXJpYW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGM0I3RTJDMTlBMTJBQUUwMEQ5QkM1NiAvKiBDYWxsRWRnZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsRWRnZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0QwQkJBMTk0QTQxNDMwMEZDOUNGOSAvKiBDb25z
dGFudFN0cnVjdHVyZUNoZWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENvbnN0YW50U3RydWN0dXJlQ2hlY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjNEMEJCQjE5NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb25zdGFudFN0cnVjdHVyZUNoZWNr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ1MTQ2MENCQUIwMDEzMUY4
RiAvKiBWYWx1ZVJlY292ZXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZh
bHVlUmVjb3ZlcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUxNDQsMTEgKzUx
NTgsMTggQEAKIAkJCQkwRjY2NkVCRTE4MzU2NkY5MDBEMDE3RjEgLyogQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzSW5saW5lcy5oICovLAogCQkJCTBGODg1RTEwMTg0OUEzQkUwMEYxRTNGQSAvKiBC
eXRlY29kZVVzZURlZi5oICovLAogCQkJCTBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZh
bEluZm8uaCAqLywKKwkJCQkwRjNCN0UyQzE5QTEyQUFFMDBEOUJDNTYgLyogQ2FsbEVkZ2UuY3Bw
ICovLAorCQkJCTBGM0I3RTIwMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZS5oICovLAorCQkJ
CTBGM0I3RTIxMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuY3BwICovLAorCQkJ
CTBGM0I3RTIyMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuaCAqLywKKwkJCQkw
RjNCN0UyMzE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oICovLAog
CQkJCTBGMEI4M0FFMTRCQ0Y3MTQwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uY3BwICovLAogCQkJ
CTBGMEI4M0FGMTRCQ0Y3MTQwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uaCAqLywKIAkJCQkwRjkz
MzI5MzE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuY3BwICovLAogCQkJCTBGOTMz
Mjk0MTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5oICovLAogCQkJCTBGMEI4M0I4
MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICov
LAorCQkJCTBGM0I3RTI0MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5jcHAgKi8sCisJ
CQkJMEYzQjdFMjUxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmggKi8sCiAJCQkJOTY5
QTA3OTAwRUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5jcHAgKi8sCiAJCQkJOTY5QTA3OTEw
RUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5oICovLAogCQkJCTBGOEY5NDNEMTY2NzYzMkQw
MEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmNwcCAqLywKQEAgLTU4NzcsNiArNTg5OCw3IEBACiAJ
CQkJMEZGRkM5NUExNEVGOTBBOTAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjJGQzc3MzE2RTEyRjc0MDAzOEQ5NzYgLyogREZHRENFUGhhc2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGOEYyQjlBMTcyRjA1MDEwMDdEQkRBNSAvKiBERkdEZXNpcmVkSWRlbnRp
ZmllcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGM0I3RTI4MTlBMTFCODAwMEQ5QkM1NiAvKiBD
YWxsRWRnZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQzBGN0NFMTdCQkZDNUIwMDQ2
NEZFNCAvKiBERkdEZXNpcmVkVHJhbnNpdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTg1
MzRDMTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUMyOTgxRkQ5MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vha1JlZmVy
ZW5jZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNjE0NSw2ICs2MTY3LDcgQEAKIAkJCQkwRjc2NkQz
MTE1QUE4MTEyMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNzY2RDJDMTVBOENDM0EwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZVNldC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMTRDNTI0MkIwRjUzNTVFOTAwQkEzRDA0IC8qIEpJVFN0dWJzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjNCN0UyQjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUZFRjY4MzVFMTc0MzQzQ0MwMEEzMkUyNSAvKiBKSVRTdHVic0FS
TS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVGNjgzNUYxNzQzNDNDQzAwQTMyRTI1IC8qIEpJVFN0
dWJzQVJNdjcuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFRjY4MzYxMTc0MzQzQ0MwMEEzMkUyNSAv
KiBKSVRTdHVic1g4Ni5oIGluIEhlYWRlcnMgKi8sCkBAIC02MTU2LDYgKzYxNzksNyBAQAogCQkJ
CUE3NkY1NEEzMTNCMjhBQUIwMEVGMkJDRSAvKiBKSVRXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0FjdGl2YXRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg0MDQ4MDEzMTAyMUExRDkwMDhFN0YwMSAvKiBKU0FQSVZhbHVlV3Jh
cHBlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYzQjdFMjkxOUExMUI4MDAwRDlCQzU2IC8qIENh
bGxFZGdlUHJvZmlsZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQ0YzOUMyMTZFMTVB
ODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
NjE0MEQyMTgyOTgyQ0IwMDc1MDYyNCAvKiBKU0FyZ3VtZW50c0l0ZXJhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzE4QzQxNzBFMTZGNUNEMDBCMzQ0NjAgLyogSlNBcnJheS5oIGluIEhlYWRl
cnMgKi8sCkBAIC02NDcxLDYgKzY0OTUsNyBAQAogCQkJCUU0OURDMTZDMTJFRjI5NEUwMDE4NEEx
RiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDlEQzE2RDEy
RUYyOTUzMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQjdGMzlFMTVFRDhFNDYwMEYxNjdCMiAvKiBTcGFyc2VBcnJheVZhbHVlTWFwLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjNCN0UyNjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mzg2NTU0MTE4Njk3QjQwMDU0MDI3OSAvKiBTcGVjaWFs
aXplZFRodW5rSklULmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU1NDFCMjE2MTNDMUZCMDBDRTNF
MjUgLyogU3BlY2lhbFBvaW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgyRTU0MTQxREFF
RUUwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03MzIzLDYg
KzczNDgsNyBAQAogCQkJCTBGMjM1QkQ1MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1l
bnRGb3JPcGVyYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkQ4MTcxNzhFMUMwMDY5
MEM3RiAvKiBGVExFeGl0VGh1bmtHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYy
MzVCREExNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRjNCN0UyNzE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE3RjI5OTZCMTdBMEJCNjcwMDEwNDE3QSAvKiBGVExGYWlsLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRDhBMzE5MTdENTFGMjIwMENBMkM0MCAvKiBGVExGb3JPU1JF
bnRyeUpJVENvZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyNUYxQUYxODE2MzVGMzAwNTIy
RjM5IC8qIEZUTElubGluZUNhY2hlU2l6ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc1MDksNiAr
NzUzNSw3IEBACiAJCQkJMEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjM4QjAxMTE3Q0YwNzgwMDBCMTQ0RDMgLyogTExJbnRFbnRy
eXBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAv
KiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYzQjdFMkQxOUExMkFB
RTAwRDlCQzU2IC8qIENhbGxFZGdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MEE0MTRC
QTdGOEQwMEJGRTI3MiAvKiBMTEludFNsb3dQYXRocy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjBCODM5QzE0QkNGNDYzMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZDRUZBQ0QxODA1RTc1NTAwNDcyQ0U0IC8qIExMVk1BUEkuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC03NjcwLDYgKzc2OTcsNyBAQAogCQkJCTE0RTg0RkEwMTRFRTFBQ0MwMEQ2RDVENCAv
KiBXZWFrU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJBNEVDOTBCMTg2MEQ2QzIwMDk0Rjc4
MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDODE1MEIx
NDA0M0MwRTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMEYzQjdFMkExOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE3RTVBQjNBMTc5OUU0QjIwMEQyODMzRCAvKiBYODZEaXNhc3NlbWJsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODYzQzZEOUMxNTIxMTExQTAwNTg1RTRFIC8qIFlhcnJD
YW5vbmljYWxpemVVQ1MyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0Qjg0MTJEQkEzMzcw
MEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZS5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNhbGxFZGdlLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCit2b2lkIENhbGxFZGdlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0Cit7CisgICAgb3V0LnByaW50KCI8IiwgbV9jYWxsZWUsICIsIGNvdW50OiAiLCBtX2Nv
dW50LCAiPiIpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgQ2FsbEVkZ2VfaAorI2RlZmluZSBDYWxsRWRnZV9oCisKKyNpbmNsdWRlICJDYWxsVmFy
aWFudC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordHlwZWRlZiB1aW50MTZfdCBDYWxsRWRnZUNv
dW50VHlwZTsKKworY2xhc3MgQ2FsbEVkZ2UgeworcHVibGljOgorICAgIENhbGxFZGdlKCk7Cisg
ICAgQ2FsbEVkZ2UoQ2FsbFZhcmlhbnQgY2FsbGVlLCBDYWxsRWRnZUNvdW50VHlwZSBjb3VudCk7
CisgICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7IH0K
KyAgICAKKyAgICBDYWxsVmFyaWFudCBjYWxsZWUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlZTsg
fQorICAgIENhbGxFZGdlQ291bnRUeXBlIGNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb3VudDsg
fQorICAgIAorICAgIENhbGxFZGdlIGRlc3BlY2lmaWVkQ2xvc3VyZSgpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gQ2FsbEVkZ2UobV9jYWxsZWUuZGVzcGVjaWZpZWRDbG9zdXJlKCksIG1f
Y291bnQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsK
KyAgICAKK3B1YmxpYzoKKyAgICBDYWxsVmFyaWFudCBtX2NhbGxlZTsKKyAgICBDYWxsRWRnZUNv
dW50VHlwZSBtX2NvdW50OworfTsKKworaW5saW5lIENhbGxFZGdlOjpDYWxsRWRnZShDYWxsVmFy
aWFudCBjYWxsZWUsIENhbGxFZGdlQ291bnRUeXBlIGNvdW50KQorICAgIDogbV9jYWxsZWUoY2Fs
bGVlKQorICAgICwgbV9jb3VudChjb3VudCkKK3sKK30KKworaW5saW5lIENhbGxFZGdlOjpDYWxs
RWRnZSgpCisgICAgOiBDYWxsRWRnZShDYWxsVmFyaWFudCgpLCAwKQoreworfQorCit0eXBlZGVm
IFZlY3RvcjxDYWxsRWRnZSwgMT4gQ2FsbEVkZ2VMaXN0OworCit9IC8vIG5hbWVzcGFjZSBKU0MK
KworI2VuZGlmIC8vIENhbGxFZGdlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQ4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2FsbEVkZ2VQcm9m
aWxlLmgiCisKKyNpbmNsdWRlICJDYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmgiCisjaW5jbHVkZSAi
Q0NhbGxIZWxwZXJzLmgiCisjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBjb25zdCBib29sIHZlcmJv
c2UgPSBmYWxzZTsKKworQ2FsbEVkZ2VMaXN0IENhbGxFZGdlUHJvZmlsZTo6Y2FsbEVkZ2VzKCkg
Y29uc3QKK3sKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIAor
ICAgIENhbGxFZGdlTGlzdCByZXN1bHQ7CisgICAgCisgICAgQ2FsbFZhcmlhbnQgcHJpbWFyeUNh
bGxlZSA9IG1fcHJpbWFyeUNhbGxlZTsKKyAgICBmbG9hdCBudW1DYWxsc1RvUHJpbWFyeSA9IG1f
bnVtQ2FsbHNUb1ByaW1hcnk7CisgICAgLy8gRGVmZW5kIGFnYWluc3QgcmFjZXMuIFRoZXNlIGZp
ZWxkcyBhcmUgbW9kaWZpZWQgYnkgdGhlIGxvZyBwcm9jZXNzb3Igd2l0aG91dCBsb2NraW5nLgor
ICAgIGlmICghIXByaW1hcnlDYWxsZWUgJiYgbnVtQ2FsbHNUb1ByaW1hcnkpCisgICAgICAgIHJl
c3VsdC5hcHBlbmQoQ2FsbEVkZ2UocHJpbWFyeUNhbGxlZSwgbnVtQ2FsbHNUb1ByaW1hcnkpKTsK
KyAgICAKKyAgICBpZiAobV9vdGhlckNhbGxlZXMpIHsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRo
YXQgaWYgdGhlIHByaW1hcnkgdGhyZWFkIGhhZCBqdXN0IGNyZWF0ZWQgYSBtX290aGVyQ2FsbGVz
IHdoaWxlIGxvZworICAgICAgICAvLyBwcm9jZXNzaW5nLCB3ZSBzZWUgYSBjb25zaXN0ZW50bHkg
Y3JlYXRlZCBvbmUuIFRoZSBsb2NrIGJlaW5nIGhlbGQgaXMgaW5zdWZmaWNpZW50IGZvcgorICAg
ICAgICAvLyB0aGlzLCBzaW5jZSB0aGUgbG9nIHByb2Nlc3NvciB3aWxsIG9ubHkgZ3JhYiB0aGUg
bG9jayB3aGVuIG1lcmdpbmcgdGhlIHNlY29uZGFyeQorICAgICAgICAvLyBzcGVjdHJ1bSBpbnRv
IHRoZSBwcmltYXJ5IG9uZSBidXQgbWF5IHN0aWxsIGNyZWF0ZSB0aGUgZGF0YSBzdHJ1Y3R1cmUg
d2l0aG91dCBob2xkaW5nCisgICAgICAgIC8vIGxvY2tzLgorICAgICAgICBXVEY6OmxvYWRMb2Fk
RmVuY2UoKTsKKyAgICAgICAgZm9yIChDYWxsRWRnZSBlbnRyeSA6IG1fb3RoZXJDYWxsZWVzLT5t
X3Byb2Nlc3NlZCkgeworICAgICAgICAgICAgLy8gRGVmZW5kIGFnYWluc3QgdGhlIHBvc3NpYmls
aXR5IHRoYXQgdGhlIHByaW1hcnkgZHVwbGljYXRlcyBhbiBlbnRyeSBpbiB0aGUgc2Vjb25kYXJ5
CisgICAgICAgICAgICAvLyBzcGVjdHJ1bS4gVGhhdCBjYW4gaGFwcGVuIHdoZW4gdGhlIEdDIHJl
bW92ZXMgdGhlIHByaW1hcnkuIFdlIGNvdWxkIGhhdmUgdGhlIEdDIGZpeAorICAgICAgICAgICAg
Ly8gdGhlIHNpdHVhdGlvbiBieSBjaGFuZ2luZyB0aGUgcHJpbWFyeSB0byBiZSBzb21ldGhpbmcg
ZnJvbSB0aGUgc2Vjb25kYXJ5IHNwZWN0cnVtLAorICAgICAgICAgICAgLy8gYnV0IHRoaXMgZml4
IHNlZW1zIHNpbXBsZXIgdG8gaW1wbGVtZW50IGFuZCBhbHNvIGNoZWFwZXIuCisgICAgICAgICAg
ICBpZiAoZW50cnkuY2FsbGVlKCkgPT0gcmVzdWx0WzBdLmNhbGxlZSgpKSB7CisgICAgICAgICAg
ICAgICAgcmVzdWx0WzBdID0gQ2FsbEVkZ2UocmVzdWx0WzBdLmNhbGxlZSgpLCBlbnRyeS5jb3Vu
dCgpICsgcmVzdWx0WzBdLmNvdW50KCkpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGVudHJ5
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBzdGQ6OnNvcnQocmVzdWx0LmJlZ2luKCks
IHJlc3VsdC5lbmQoKSwgW10gKGNvbnN0IENhbGxFZGdlJiBhLCBjb25zdCBDYWxsRWRnZSYgYikg
LT4gYm9vbCB7CisgICAgICAgICAgICByZXR1cm4gYS5jb3VudCgpID4gYi5jb3VudCgpOworICAg
ICAgICB9KTsKKyAgICAKKyAgICBpZiAocmVzdWx0LnNpemUoKSA+PSAyKQorICAgICAgICBBU1NF
UlQocmVzdWx0WzBdLmNvdW50KCkgPj0gcmVzdWx0Lmxhc3QoKS5jb3VudCgpKTsKKyAgICAKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitDYWxsRWRnZUNvdW50VHlwZSBDYWxsRWRnZVByb2ZpbGU6
Om51bUNhbGxzVG9Lbm93bkNlbGxzKCkgY29uc3QKK3sKKyAgICBDYWxsRWRnZUNvdW50VHlwZSBy
ZXN1bHQgPSAwOworICAgIGZvciAoQ2FsbEVkZ2UgZWRnZSA6IGNhbGxFZGdlcygpKQorICAgICAg
ICByZXN1bHQgKz0gZWRnZS5jb3VudCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRp
YyBib29sIHdvcnRoRGVzcGVjaWZ5aW5nKGNvbnN0IENhbGxWYXJpYW50JiB2YXJpYW50KQorewor
ICAgIHJldHVybiAhSGVhcDo6aXNNYXJrZWQodmFyaWFudC5yYXdDYWxsZWVDZWxsKCkpCisgICAg
ICAgICYmIEhlYXA6OmlzTWFya2VkKHZhcmlhbnQuZGVzcGVjaWZpZWRDbG9zdXJlKCkucmF3Q2Fs
bGVlQ2VsbCgpKTsKK30KKworYm9vbCBDYWxsRWRnZVByb2ZpbGU6OndvcnRoRGVzcGVjaWZ5aW5n
KCkKK3sKKyAgICBpZiAobV9jbG9zdXJlc0FyZURlc3BlY2lmaWVkKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgCisgICAgaWYgKCEhbV9wcmltYXJ5Q2FsbGVlICYmICFKU0M6OndvcnRoRGVz
cGVjaWZ5aW5nKG1fcHJpbWFyeUNhbGxlZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAK
KyAgICBpZiAobV9vdGhlckNhbGxlZXMpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9v
dGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgaWYg
KCFKU0M6OndvcnRoRGVzcGVjaWZ5aW5nKG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5j
YWxsZWUoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
fQorICAgIAorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIENhbGxFZGdlUHJvZmlsZTo6dmlz
aXRXZWFrKCkKK3sKKyAgICBpZiAoIW1fcHJpbWFyeUNhbGxlZSAmJiAhbV9vdGhlckNhbGxlZXMp
CisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlciht
X2xvY2spOworICAgIAorICAgIC8vIFNlZSBpZiBhbnl0aGluZyBpcyBkZWFkIGFuZCBpZiB0aGF0
IGNhbiBiZSByZWN0aWZpZWQgYnkgZGVzcGVjaWZ5aW5nLgorICAgIGlmICh3b3J0aERlc3BlY2lm
eWluZygpKSB7CisgICAgICAgIENhbGxTcGVjdHJ1bSBuZXdTcGVjdHJ1bTsKKyAgICAgICAgCisg
ICAgICAgIGlmICghIW1fcHJpbWFyeUNhbGxlZSkKKyAgICAgICAgICAgIG5ld1NwZWN0cnVtLmFk
ZChtX3ByaW1hcnlDYWxsZWUuZGVzcGVjaWZpZWRDbG9zdXJlKCksIG1fbnVtQ2FsbHNUb1ByaW1h
cnkpOworICAgICAgICAKKyAgICAgICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBp
LS07KSB7CisgICAgICAgICAgICAgICAgbmV3U3BlY3RydW0uYWRkKAorICAgICAgICAgICAgICAg
ICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCkuZGVzcGVjaWZpZWRD
bG9zdXJlKCksCisgICAgICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3Nl
ZFtpXS5jb3VudCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIAorICAgICAgICBWZWN0b3I8Q2FsbFNwZWN0cnVtOjpLZXlBbmRDb3VudD4g
bGlzdCA9IG5ld1NwZWN0cnVtLmJ1aWxkTGlzdCgpOworICAgICAgICBBU1NFUlQobGlzdC5zaXpl
KCkpOworICAgICAgICBtX3ByaW1hcnlDYWxsZWUgPSBsaXN0Lmxhc3QoKS5rZXk7CisgICAgICAg
IG1fbnVtQ2FsbHNUb1ByaW1hcnkgPSBsaXN0Lmxhc3QoKS5jb3VudDsKKyAgICAgICAgCisgICAg
ICAgIEFTU0VSVCghIW1fb3RoZXJDYWxsZWVzID09IChsaXN0LnNpemUoKSA+PSAyKSk7CisgICAg
ICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1f
cHJvY2Vzc2VkLmNsZWFyKCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBsaXN0LnNp
emUoKSAtIDE7IGktLTspCisgICAgICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vz
c2VkLmFwcGVuZChDYWxsRWRnZShsaXN0W2ldLmtleSwgbGlzdFtpXS5jb3VudCkpOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQgPSB0cnVlOwor
ICAgICAgICAKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoISFtX3ByaW1h
cnlDYWxsZWUgJiYgIUhlYXA6OmlzTWFya2VkKG1fcHJpbWFyeUNhbGxlZS5yYXdDYWxsZWVDZWxs
KCkpKSB7CisgICAgICAgIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxsICs9IG1fbnVtQ2FsbHNUb1By
aW1hcnk7CisgICAgICAgIAorICAgICAgICBtX3ByaW1hcnlDYWxsZWUgPSBDYWxsVmFyaWFudCgp
OworICAgICAgICBtX251bUNhbGxzVG9QcmltYXJ5ID0gMDsKKyAgICB9CisgICAgCisgICAgaWYg
KG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX290
aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChI
ZWFwOjppc01hcmtlZChtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCkucmF3
Q2FsbGVlQ2VsbCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgbV9udW1DYWxsc1RvVW5rbm93bkNlbGwgKz0gbV9vdGhlckNhbGxlZXMtPm1f
cHJvY2Vzc2VkW2ldLmNvdW50KCk7CisgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9j
ZXNzZWRbaS0tXSA9IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5sYXN0KCk7CisgICAgICAg
ICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQucmVtb3ZlTGFzdCgpOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICAvLyBPbmx5IGV4aXN0cyB3aGlsZSB3ZSBhcmUgcHJvY2Vzc2lu
ZyB0aGUgbG9nLgorICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9vdGhlckNhbGxlZXMtPm1fdGVt
cG9yYXJ5U3BlY3RydW0pOworICAgIH0KK30KKwordm9pZCBDYWxsRWRnZVByb2ZpbGU6OmFkZFNs
b3coQ2FsbFZhcmlhbnQgY2FsbGVlLCBDYWxsRWRnZVByb2ZpbGVWZWN0b3ImIG1lcmdlQmFja0xv
ZykKK3sKKyAgICAvLyBUaGlzIGV4aXN0cyB0byBoYW5kbGUgY2FzZXMgd2hlcmUgdGhlIHNwZWN0
cnVtIHdhc24ndCBjcmVhdGVkIHlldCwgb3Igd2UncmUgc3RvcmluZyB0byBhCisgICAgLy8gcGFy
dGljdWxhciBzcGVjdHJ1bSBmb3IgdGhlIGZpcnN0IHRpbWUgZHVyaW5nIGEgbG9nIHByb2Nlc3Np
bmcgaXRlcmF0aW9uLgorICAgIAorICAgIGlmICghbV9vdGhlckNhbGxlZXMpIHsKKyAgICAgICAg
bV9vdGhlckNhbGxlZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlY29uZGFyeT4oKTsKKyAgICAgICAg
Ly8gSWYgYSBjb21waWxlciB0aHJlYWQgbm90aWNlcyB0aGUgbV9vdGhlckNhbGxlZXMgYmVpbmcg
bm9uLW51bGwsIHdlIHdhbnQgdG8gbWFrZSBzdXJlCisgICAgICAgIC8vIHRoYXQgaXQgc2VlcyBh
IGZ1bGx5IGNyZWF0ZWQgb25lLgorICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOworICAg
IH0KKyAgICAKKyAgICBpZiAoIW1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtKSB7
CisgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtID0gc3RkOjptYWtl
X3VuaXF1ZTxDYWxsU3BlY3RydW0+KCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fb3Ro
ZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIG1fb3Ro
ZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5hZGQoCisgICAgICAgICAgICAgICAgbV9v
dGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNhbGxlZSgpLAorICAgICAgICAgICAgICAgIG1f
b3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jb3VudCgpKTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgd2Un
cmUgc2VlaW5nIHRoaXMgcHJvZmlsZSBkdXJpbmcgdGhpcyBsb2cKKyAgICAgICAgLy8gcHJvY2Vz
c2luZyBpdGVyYXRpb24uCisgICAgICAgIG1lcmdlQmFja0xvZy5hcHBlbmQodGhpcyk7CisgICAg
fQorICAgIAorICAgIG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5hZGQoY2Fs
bGVlKTsKK30KKwordm9pZCBDYWxsRWRnZVByb2ZpbGU6Om1lcmdlQmFjaygpCit7CisgICAgQ29u
Y3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAKKyAgICBBU1NFUlQobV9vdGhl
ckNhbGxlZXMpOworICAgIEFTU0VSVChtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1
bSk7CisgICAgCisgICAgaWYgKCEhbV9wcmltYXJ5Q2FsbGVlKQorICAgICAgICBtX290aGVyQ2Fs
bGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+YWRkKG1fcHJpbWFyeUNhbGxlZSwgbV9udW1DYWxs
c1RvUHJpbWFyeSk7CisgICAgCisgICAgaWYgKCFtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQpIHsK
KyAgICAgICAgQ2FsbFNwZWN0cnVtIG5ld1NwZWN0cnVtOworICAgICAgICBmb3IgKGF1dG8gZW50
cnkgOiAqbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0pCisgICAgICAgICAgICBu
ZXdTcGVjdHJ1bS5hZGQoZW50cnkua2V5LmRlc3BlY2lmaWVkQ2xvc3VyZSgpLCBlbnRyeS52YWx1
ZSk7CisgICAgICAgIAorICAgICAgICBpZiAobmV3U3BlY3RydW0uc2l6ZSgpIDwgbV9vdGhlckNh
bGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0tPnNpemUoKSkgeworICAgICAgICAgICAgKm1fb3Ro
ZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtID0gbmV3U3BlY3RydW07CisgICAgICAgICAg
ICBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQgPSB0cnVlOworICAgICAgICB9CisgICAgfQorICAg
IAorICAgIFZlY3RvcjxDYWxsU3BlY3RydW06OktleUFuZENvdW50PiBsaXN0ID0gbV9vdGhlckNh
bGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0tPmJ1aWxkTGlzdCgpOworICAgIG1fb3RoZXJDYWxs
ZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtID0gbnVsbHB0cjsKKyAgICAKKyAgICBtX3ByaW1hcnlD
YWxsZWUgPSBsaXN0Lmxhc3QoKS5rZXk7CisgICAgbV9udW1DYWxsc1RvUHJpbWFyeSA9IGxpc3Qu
bGFzdCgpLmNvdW50OworICAgIGxpc3QucmVtb3ZlTGFzdCgpOworICAgIAorICAgIG1fb3RoZXJD
YWxsZWVzLT5tX3Byb2Nlc3NlZC5jbGVhcigpOworICAgIGZvciAodW5zaWduZWQgY291bnQgPSBt
YXhLbm93bkNhbGxlZXM7IGNvdW50LS0gJiYgIWxpc3QuaXNFbXB0eSgpOykgeworICAgICAgICBt
X290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuYXBwZW5kKENhbGxFZGdlKGxpc3QubGFzdCgpLmtl
eSwgbGlzdC5sYXN0KCkuY291bnQpKTsKKyAgICAgICAgbGlzdC5yZW1vdmVMYXN0KCk7CisgICAg
fQorICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IGxpc3Quc2l6ZSgpOyBpLS07KQorICAgICAg
ICBtX251bUNhbGxzVG9Vbmtub3duQ2VsbCArPSBsaXN0W2ldLmNvdW50OworfQorCit2b2lkIENh
bGxFZGdlUHJvZmlsZTo6ZmFkZUJ5SGFsZigpCit7CisgICAgbV9udW1DYWxsc1RvUHJpbWFyeSA+
Pj0gMTsKKyAgICBtX251bUNhbGxzVG9Ob3RDZWxsID4+PSAxOworICAgIG1fbnVtQ2FsbHNUb1Vu
a25vd25DZWxsID4+PSAxOworICAgIG1fdG90YWxDb3VudCA+Pj0gMTsKKyAgICAKKyAgICBpZiAo
bV9vdGhlckNhbGxlZXMpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9vdGhlckNhbGxl
ZXMtPm1fcHJvY2Vzc2VkLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgbV9vdGhlckNhbGxl
ZXMtPm1fcHJvY2Vzc2VkW2ldID0gQ2FsbEVkZ2UoCisgICAgICAgICAgICAgICAgbV9vdGhlckNh
bGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNhbGxlZSgpLAorICAgICAgICAgICAgICAgIG1fb3RoZXJD
YWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jb3VudCgpID4+IDEpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBpZiAobV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0pIHsKKyAg
ICAgICAgICAgIGZvciAoYXV0byBlbnRyeSA6ICptX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlT
cGVjdHJ1bSkKKyAgICAgICAgICAgICAgICBlbnRyeS52YWx1ZSA+Pj0gMTsKKyAgICAgICAgfQor
ICAgIH0KK30KKworQ2FsbEVkZ2VMb2c6OkNhbGxFZGdlTG9nKCkKKyAgICA6IG1fc2NhbGVkQnVm
ZmVySW5kZXgodXNhYmxlU2xhYlNpemUgKiBzaXplb2YoRW50cnkpKQorICAgICwgbV9jdXJyZW50
U2xhYkluZGV4KDApCit7CisgICAgQVNTRVJUKCEobV9zY2FsZWRCdWZmZXJJbmRleCAlIHNpemVv
ZihFbnRyeSkpKTsKKyAgICAKKyAgICBtX3NsYWJTdGF0ZVttX2N1cnJlbnRTbGFiSW5kZXhdLm1f
bG9jay5sb2NrKCk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1iZXJPZlNsYWJzOyBpLS07
KQorICAgICAgICBtX3NsYWJTdGF0ZVtpXS5tX2luZGV4SW5TbGFiID0gdXNhYmxlU2xhYlNpemU7
Cit9CisKK0NhbGxFZGdlTG9nOjp+Q2FsbEVkZ2VMb2coKSB7IH0KKworYm9vbCBDYWxsRWRnZUxv
Zzo6aXNFbmFibGVkKCkKK3sKKyAgICByZXR1cm4gT3B0aW9uczo6ZW5hYmxlQ2FsbEVkZ2VQcm9m
aWxpbmcoKSAmJiBPcHRpb25zOjp1c2VGVExKSVQoKTsKK30KKworI2lmIEVOQUJMRShKSVQpCisK
K2V4dGVybiAiQyIgSklUX09QRVJBVElPTiB2b2lkIG9wZXJhdGlvblByb2Nlc3NDYWxsRWRnZUxv
ZyhDYWxsRWRnZUxvZyopIFdURl9JTlRFUk5BTDsKK2V4dGVybiAiQyIgSklUX09QRVJBVElPTiB2
b2lkIG9wZXJhdGlvblByb2Nlc3NDYWxsRWRnZUxvZyhDYWxsRWRnZUxvZyogbG9nKQoreworICAg
IGxvZy0+cm90YXRlQW5kUHJvY2Vzc0FzeW5jaHJvbm91c2x5KCk7Cit9CisKK3ZvaWQgQ2FsbEVk
Z2VMb2c6OmVtaXRMb2dDb2RlKENDYWxsSGVscGVycyYgaml0LCBDYWxsRWRnZVByb2ZpbGUmIHBy
b2ZpbGUsIEpTVmFsdWVSZWdzIGNhbGxlZVJlZ3MpCit7CisgICAgQVNTRVJUKGJpdENvdW50KHNp
emVvZihFbnRyeSkpID09IDEpOworICAgIAorICAgIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQXJn
dW1lbnRzID0gMTsKKyAgICAKKyAgICBHUFJSZWcgc2NyYXRjaEdQUjsKKyAgICBpZiAoIWNhbGxl
ZVJlZ3MudXNlcyhHUFJJbmZvOjpyZWdUMCkpCisgICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJbmZv
OjpyZWdUMDsKKyAgICBlbHNlIGlmICghY2FsbGVlUmVncy51c2VzKEdQUkluZm86OnJlZ1QxKSkK
KyAgICAgICAgc2NyYXRjaEdQUiA9IEdQUkluZm86OnJlZ1QxOworICAgIGVsc2UKKyAgICAgICAg
c2NyYXRjaEdQUiA9IEdQUkluZm86OnJlZ1QyOworICAgIAorICAgIGppdC5sb2FkMzIoJm1fc2Nh
bGVkQnVmZmVySW5kZXgsIHNjcmF0Y2hHUFIpOworICAgIAorICAgIENDYWxsSGVscGVyczo6SnVt
cCBvayA9IGppdC5icmFuY2hUZXN0MzIoCisgICAgICAgIENDYWxsSGVscGVyczo6Tm9uWmVybywg
c2NyYXRjaEdQUiwKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2l6ZW9mKEVu
dHJ5KSAqIHNsYWJTaXplIC0gMSkpOworICAgIAorICAgIEFTU0VSVF9VTlVTRUQobnVtYmVyT2ZB
cmd1bWVudHMsIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkgPj0gMSArIG51bWJlck9mQXJndW1l
bnRzKTsKKyAgICAKKyAgICBqaXQuc3ViUHRyKAorICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihzdGFja0FsaWdubWVudEJ5dGVzKCkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRl
clJlZ2lzdGVyKTsKKyAgICAKKyAgICBqaXQuc3RvcmVWYWx1ZSgKKyAgICAgICAgY2FsbGVlUmVn
cywgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIsIHNpemVvZihKU1ZhbHVlKSkpOworICAgIGppdC5zZXR1cEFyZ3VtZW50cyhDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIodGhpcykpOworICAgIGppdC5tb3ZlKAorICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihvcGVyYXRpb25Qcm9jZXNz
Q2FsbEVkZ2VMb2cpKSwKKyAgICAgICAgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgaml0LmNh
bGwoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgaml0LmxvYWRWYWx1ZSgKKyAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIHNp
emVvZihKU1ZhbHVlKSksIGNhbGxlZVJlZ3MpOworICAgIAorICAgIGppdC5hZGRQdHIoCisgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSksIEND
YWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIAorICAgIGppdC5sb2FkMzIo
Jm1fc2NhbGVkQnVmZmVySW5kZXgsIHNjcmF0Y2hHUFIpOworICAgIG9rLmxpbmsoJmppdCk7CisK
KyAgICBqaXQuc3ViMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2l6ZW9mKEVudHJ5KSks
IHNjcmF0Y2hHUFIpOworICAgIGppdC5zdG9yZTMyKHNjcmF0Y2hHUFIsICZtX3NjYWxlZEJ1ZmZl
ckluZGV4KTsKKyAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX2J1
ZmZlciksIHNjcmF0Y2hHUFIpOworICAgIGppdC5zdG9yZVZhbHVlKGNhbGxlZVJlZ3MsIENDYWxs
SGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW50cnksIG1fdmFs
dWUpKSk7CisgICAgaml0LnN0b3JlUHRyKAorICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoJnByb2ZpbGUpLAorICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQ
UiwgT0JKRUNUX09GRlNFVE9GKEVudHJ5LCBtX3Byb2ZpbGUpKSk7Cit9CisKK3ZvaWQgQ2FsbEVk
Z2VMb2c6OmVtaXRMb2dDb2RlKAorICAgIENDYWxsSGVscGVycyYgaml0LCBPd25QdHI8Q2FsbEVk
Z2VQcm9maWxlPiYgcHJvZmlsZVBvaW50ZXIsIEpTVmFsdWVSZWdzIGNhbGxlZVJlZ3MpCit7Cisg
ICAgaWYgKCFpc0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHByb2ZpbGVQ
b2ludGVyLmNyZWF0ZVRyYW5zYWN0aW9uYWxseSgpOworICAgIGVtaXRMb2dDb2RlKGppdCwgKnBy
b2ZpbGVQb2ludGVyLCBjYWxsZWVSZWdzKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShKSVQpCisK
K3ZvaWQgQ2FsbEVkZ2VMb2c6OnByb2Nlc3NMb2dTbGFiV2hpbGVIb2xkaW5nTG9jayh1bnNpZ25l
ZCBpbmRleCkKK3sKKyAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygiUHJvY2Vzc2lu
ZyBsb2cgc2xhYiAiLCBpbmRleCwgIlxuIik7CisgICAgCisgICAgU2xhYlN0YXRlJiBzdGF0ZSA9
IG1fc2xhYlN0YXRlW2luZGV4XTsKKyAgICAKKyAgICBpZiAoT3B0aW9uczo6Y2FsbEVkZ2VQcm9m
aWxlUmVhbGx5UHJvY2Vzc2VzTG9nKCkpIHsKKyAgICAgICAgQ2FsbEVkZ2VQcm9maWxlVmVjdG9y
IG1lcmdlQmFja0xvZzsKKyAgICAgICAgCisgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAg
ICAgZGF0YUxvZygiUHJvY2Vzc2luZyAiLCB1c2FibGVTbGFiU2l6ZSAtIHN0YXRlLm1faW5kZXhJ
blNsYWIsICIgZW50cmllcy5cbiIpOworICAgICAgICAKKyAgICAgICAgdW5zaWduZWQgc3RhcnQg
PSBzdGF0ZS5tX2luZGV4SW5TbGFiOworICAgICAgICB1bnNpZ25lZCBlbmQgPSB1c2FibGVTbGFi
U2l6ZTsKKyAgICAgICAgCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHN0YXJ0OyBpIDwgZW5k
OyArK2kpIHsKKyAgICAgICAgICAgIEVudHJ5JiBlbnRyeSA9IG1fYnVmZmVyWyhpbmRleCA8PCBs
b2dPZlNsYWJTaXplKSArIGldOworICAgICAgICAgICAgZW50cnkubV9wcm9maWxlLT5hZGQoZW50
cnkubV92YWx1ZSwgbWVyZ2VCYWNrTG9nKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbWVyZ2VCYWNrTG9nLnNpemUoKTsgaS0tOykKKyAgICAgICAgICAg
IG1lcmdlQmFja0xvZ1tpXS0+bWVyZ2VCYWNrKCk7CisgICAgfQorCisgICAgc3RhdGUubV9pbmRl
eEluU2xhYiA9IHVzYWJsZVNsYWJTaXplOworICAgIAorICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICBkYXRhTG9nKCJEb25lIHByb2Nlc3NpbmcgbG9nIHNsYWIgIiwgaW5kZXgsICJcbiIpOworfQor
Cit2b2lkIENhbGxFZGdlTG9nOjpwcm9jZXNzTG9nU2xhYih1bnNpZ25lZCBpbmRleCkKK3sKKyAg
ICBNdXRleExvY2tlciBsb2NrZXIobV9zbGFiU3RhdGVbaW5kZXhdLm1fbG9jayk7CisgICAgcHJv
Y2Vzc0xvZ1NsYWJXaGlsZUhvbGRpbmdMb2NrKGluZGV4KTsKK30KKwordm9pZCBDYWxsRWRnZUxv
Zzo6dHJ5VG9Qcm9jZXNzTG9nU2xhYih1bnNpZ25lZCBpbmRleCkKK3sKKyAgICBpZiAoIW1fc2xh
YlN0YXRlW2luZGV4XS5tX2xvY2sudHJ5TG9jaygpKSB7CisgICAgICAgIGlmIChPcHRpb25zOjp2
ZXJib3NlQ2FsbEVkZ2VQcm9maWxlUmFjZSgpKQorICAgICAgICAgICAgZGF0YUxvZygiQWJvcnRp
bmcgYXN5bmNocm9ub3VzIGxvZyBwcm9jZXNzaW5nIGR1ZSB0byByYWNlLlxuIik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgCisgICAgcHJvY2Vzc0xvZ1NsYWJXaGlsZUhvbGRpbmdMb2Nr
KGluZGV4KTsKKyAgICBtX3NsYWJTdGF0ZVtpbmRleF0ubV9sb2NrLnVubG9jaygpOworfQorCit2
b2lkIENhbGxFZGdlTG9nOjpyb3RhdGVBbmRQcm9jZXNzKCkKK3sKKyAgICBwcm9jZXNzTG9nU2xh
Yihyb3RhdGVTbGFicygpLnNsYWJJbmRleCk7CisgICAgCisgICAgLy8gSXQncyBndWFyYW50ZWVk
IHRoYXQgbm8gc2xhYiBoYXMgYW55IGludGVyZXN0aW5nIHN0YXRlIGFueW1vcmUuCisgICAgZm9y
ICh1bnNpZ25lZCBpID0gbnVtYmVyT2ZTbGFiczsgaS0tOykKKyAgICAgICAgQVNTRVJUKG1fc2xh
YlN0YXRlW2ldLm1faW5kZXhJblNsYWIgPT0gdXNhYmxlU2xhYlNpemUpOworfQorCit2b2lkIENh
bGxFZGdlTG9nOjpyb3RhdGVBbmRQcm9jZXNzQXN5bmNocm9ub3VzbHkoKQoreworI2lmIEVOQUJM
RShUSFJFQURJTkdfTElCRElTUEFUQ0gpCisgICAgUm90YXRlU2xhYnNSZXN1bHQgcmVzdWx0ID0g
cm90YXRlU2xhYnMoKTsKKyAgICBpZiAoIU9wdGlvbnM6OmVuYWJsZUFzeW5jaHJvbm91c0xvZ1By
b2Nlc3NpbmcoKSkgeworICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGRhdGFMb2co
IlJvdGF0aW5nIHN5bmNocm9ub3VzbHkgZHVlIHRvIGNvbmZpZ3VyYXRpb24hXG4iKTsKKyAgICAg
ICAgcHJvY2Vzc0xvZ1NsYWIocmVzdWx0LnNsYWJJbmRleCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGRhdGFMb2coIlJvdGF0aW5nIGFzeW5jaHJv
bm91c2x5LlxuIik7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1
ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgXnsKKyAgICAgICAgICAgIHRy
eVRvUHJvY2Vzc0xvZ1NsYWIocmVzdWx0LnNsYWJJbmRleCk7CisgICAgICAgIH0pOworI2Vsc2UK
KyAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygiUm90YXRpbmcgc3luY2hyb25vdXNs
eSBkdWUgdG8gcGxhdGZvcm0hXG4iKTsKKyAgICByb3RhdGVBbmRQcm9jZXNzKCk7CisjZW5kaWYK
K30KKwordm9pZCBDYWxsRWRnZUxvZzo6dHJ5VG9Qcm9jZXNzQWxsU2xhYnMoKQoreworICAgIGZv
ciAodW5zaWduZWQgaSA9IG51bWJlck9mU2xhYnM7IGktLTspCisgICAgICAgIHRyeVRvUHJvY2Vz
c0xvZ1NsYWIoaSk7Cit9CisKK0NhbGxFZGdlTG9nOjpSb3RhdGVTbGFic1Jlc3VsdCBDYWxsRWRn
ZUxvZzo6cm90YXRlU2xhYnMoKQoreworICAgIEFTU0VSVCghKG1fc2NhbGVkQnVmZmVySW5kZXgg
JSBzaXplb2YoRW50cnkpKSk7CisgICAgCisgICAgUm90YXRlU2xhYnNSZXN1bHQgcmVzdWx0Owor
ICAgIHJlc3VsdC5zbGFiSW5kZXggPSBtX2N1cnJlbnRTbGFiSW5kZXg7CisgICAgCisgICAgdW5z
aWduZWQgaW5kZXhJblNsYWIgPQorICAgICAgICBtX3NjYWxlZEJ1ZmZlckluZGV4IC8gc2l6ZW9m
KEVudHJ5KSAtIChtX2N1cnJlbnRTbGFiSW5kZXggPDwgbG9nT2ZTbGFiU2l6ZSk7CisgICAgQVNT
RVJUKGluZGV4SW5TbGFiIDwgdXNhYmxlU2xhYlNpemUpOworICAgIHJlc3VsdC5sZWZ0b3ZlciA9
IHVzYWJsZVNsYWJTaXplIC0gaW5kZXhJblNsYWI7CisgICAgCisgICAgbV9zbGFiU3RhdGVbbV9j
dXJyZW50U2xhYkluZGV4XS5tX2luZGV4SW5TbGFiID0gaW5kZXhJblNsYWI7CisgICAgbV9zbGFi
U3RhdGVbbV9jdXJyZW50U2xhYkluZGV4XS5tX2xvY2sudW5sb2NrKCk7CisgICAgCisgICAgbV9j
dXJyZW50U2xhYkluZGV4ID0gKG1fY3VycmVudFNsYWJJbmRleCArIDEpICUgbnVtYmVyT2ZTbGFi
czsKKyAgICBpZiAoT3B0aW9uczo6dmVyYm9zZUNhbGxFZGdlUHJvZmlsZVJhY2UoKSkgeworICAg
ICAgICBpZiAoIW1fc2xhYlN0YXRlW21fY3VycmVudFNsYWJJbmRleF0ubV9sb2NrLnRyeUxvY2so
KSkgeworICAgICAgICAgICAgc3RhdGljIGRvdWJsZSB0b3RhbFdhaXRTb0ZhciA9IDA7CisgICAg
CisgICAgICAgICAgICBkYXRhTG9nKCJXaWxsIGhhdmUgdG8gd2FpdCBmb3IgbG9nIHByb2Nlc3Nv
ciBiZWZvcmUgcHJvY2VlZGluZy5cbiIpOworICAgICAgICAgICAgZG91YmxlIGJlZm9yZSA9IGN1
cnJlbnRUaW1lTVMoKTsKKyAgICAgICAgICAgIG1fc2xhYlN0YXRlW21fY3VycmVudFNsYWJJbmRl
eF0ubV9sb2NrLmxvY2soKTsKKyAgICAgICAgICAgIGRvdWJsZSB3YWl0VGltZSA9IGN1cnJlbnRU
aW1lTVMoKSAtIGJlZm9yZTsKKyAgICAgICAgICAgIHRvdGFsV2FpdFNvRmFyICs9IHdhaXRUaW1l
OworICAgICAgICAgICAgZGF0YUxvZygiV2FpdGluZyB0b29rICIsIHdhaXRUaW1lLCAiIG1zICgi
LCB0b3RhbFdhaXRTb0ZhciwgIiBtcyB0b3RhbCBzbyBmYXIpLlxuIik7CisgICAgICAgIH0KKyAg
ICB9IGVsc2UKKyAgICAgICAgbV9zbGFiU3RhdGVbbV9jdXJyZW50U2xhYkluZGV4XS5tX2xvY2su
bG9jaygpOworICAgIGlmICh2ZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJTd2l0Y2hlZCB0byBs
b2cgc2xhYiAiLCBtX2N1cnJlbnRTbGFiSW5kZXgsICIsIHByZXZpb3VzIGluZGV4SW5TbGFiID0g
IiwgaW5kZXhJblNsYWIsICIgYW5kIGN1cnJlbnQgPSAiLCBtX3NsYWJTdGF0ZVttX2N1cnJlbnRT
bGFiSW5kZXhdLm1faW5kZXhJblNsYWIsICJcbiIpOworICAgIAorICAgIG1fdG90YWxSb3RhdGlv
bnMrKzsKKyAgICBpZiAobV9zbGFiU3RhdGVbbV9jdXJyZW50U2xhYkluZGV4XS5tX2luZGV4SW5T
bGFiICE9IHVzYWJsZVNsYWJTaXplKSB7CisgICAgICAgIG1fcmFjeVJvdGF0aW9ucysrOworICAg
ICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZUNhbGxFZGdlUHJvZmlsZVJhY2UoKSkgeworICAgICAg
ICAgICAgZGF0YUxvZygKKyAgICAgICAgICAgICAgICAiUmFjeSByb3RhdGlvbiBkZXRlY3RlZCEg
IiwgbV9yYWN5Um90YXRpb25zLCAiLyIsIG1fdG90YWxSb3RhdGlvbnMsCisgICAgICAgICAgICAg
ICAgIiByb3RhdGlvbnMgd2VyZSByYWN5LlxuIik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisg
ICAgbV9zbGFiU3RhdGVbbV9jdXJyZW50U2xhYkluZGV4XS5tX2luZGV4SW5TbGFiID0gdXNhYmxl
U2xhYlNpemU7CisgICAgbV9zY2FsZWRCdWZmZXJJbmRleCA9ICgobV9jdXJyZW50U2xhYkluZGV4
IDw8IGxvZ09mU2xhYlNpemUpICsgdXNhYmxlU2xhYlNpemUpICogc2l6ZW9mKEVudHJ5KTsKKyAg
ICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVBy
b2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENhbGxFZGdlUHJvZmlsZV9o
CisjZGVmaW5lIENhbGxFZGdlUHJvZmlsZV9oCisKKyNpbmNsdWRlICJDYWxsRWRnZS5oIgorI2lu
Y2x1ZGUgIkNhbGxWYXJpYW50LmgiCisjaW5jbHVkZSAiQ29uY3VycmVudEpJVExvY2suaCIKKyNp
bmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBDQ2FsbEhlbHBlcnM7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CisKK2NsYXNzIENhbGxFZGdlTG9nOworY2xhc3MgQ2FsbEVkZ2VQcm9maWxlOwordHlwZWRlZiBW
ZWN0b3I8Q2FsbEVkZ2VQcm9maWxlKiwgMTA+IENhbGxFZGdlUHJvZmlsZVZlY3RvcjsKKworY2xh
c3MgQ2FsbEVkZ2VQcm9maWxlIHsKK3B1YmxpYzoKKyAgICBDYWxsRWRnZVByb2ZpbGUoKTsKKyAg
ICAKKyAgICBDYWxsRWRnZUNvdW50VHlwZSBudW1DYWxsc1RvTm90Q2VsbCgpIGNvbnN0IHsgcmV0
dXJuIG1fbnVtQ2FsbHNUb05vdENlbGw7IH0KKyAgICBDYWxsRWRnZUNvdW50VHlwZSBudW1DYWxs
c1RvVW5rbm93bkNlbGwoKSBjb25zdCB7IHJldHVybiBtX251bUNhbGxzVG9Vbmtub3duQ2VsbDsg
fQorICAgIENhbGxFZGdlQ291bnRUeXBlIG51bUNhbGxzVG9Lbm93bkNlbGxzKCkgY29uc3Q7Cisg
ICAgQ2FsbEVkZ2VDb3VudFR5cGUgdG90YWxDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxD
b3VudDsgfQorICAgIAorICAgIC8vIENhbGwgd2hpbGUgaG9sZGluZyB0aGUgb3duaW5nIENvZGVC
bG9jaydzIGxvY2suCisgICAgQ2FsbEVkZ2VMaXN0IGNhbGxFZGdlcygpIGNvbnN0OworICAgIAor
ICAgIHZvaWQgdmlzaXRXZWFrKCk7CisgICAgCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBD
YWxsRWRnZUxvZzsKKyAgICAKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4S25vd25DYWxs
ZWVzID0gNTsKKyAgICAKKyAgICB2b2lkIGFkZChKU1ZhbHVlLCBDYWxsRWRnZVByb2ZpbGVWZWN0
b3ImIG1lcmdlQmFja0xvZyk7CisgICAgCisgICAgYm9vbCB3b3J0aERlc3BlY2lmeWluZygpOwor
ICAgIHZvaWQgYWRkU2xvdyhDYWxsVmFyaWFudCwgQ2FsbEVkZ2VQcm9maWxlVmVjdG9yJiBtZXJn
ZUJhY2tMb2cpOworICAgIHZvaWQgbWVyZ2VCYWNrKCk7CisgICAgdm9pZCBmYWRlQnlIYWxmKCk7
CisgICAgCisgICAgLy8gSXQncyBjaGVhcGVyIHRvIGxldCB0aGlzIGhhdmUgaXRzIG93biBsb2Nr
LiBJdCBuZWVkcyB0byBiZSBhYmxlIHRvIGZpbmQgd2hpY2ggbG9jayB0bworICAgIC8vIGxvY2su
IE5vcm1hbGx5IGl0IHdvdWxkIGxvY2sgdGhlIG93bmluZyBDb2RlQmxvY2sncyBsb2NrLCBidXQg
dGhhdCB3b3VsZCByZXF1aXJlIGEKKyAgICAvLyBwb2ludGVyLXdpZHRoIHdvcmQgdG8gcG9pbnQg
YXQgdGhlIENvZGVCbG9jay4gSGF2aW5nIHRoZSBieXRlLXNpemVkIGxvY2sgaGVyZSBpcworICAg
IC8vIGNoZWFwZXIuIEhvd2V2ZXIsIHRoaXMgbWVhbnMgdGhhdCB0aGUgcmVsYXRpb25zaGlwIHdp
dGggdGhlIENvZGVCbG9jayBsb2NrIGlzOgorICAgIC8vIGFjcXVpcmUgdGhlIENvZGVCbG9jayBs
b2NrIGJlZm9yZSB0aGlzIG9uZS4KKyAgICBtdXRhYmxlIENvbmN1cnJlbnRKSVRMb2NrIG1fbG9j
azsKKyAgICAKKyAgICBib29sIG1fY2xvc3VyZXNBcmVEZXNwZWNpZmllZDsKKyAgICAKKyAgICBD
YWxsRWRnZUNvdW50VHlwZSBtX251bUNhbGxzVG9QcmltYXJ5OworICAgIENhbGxFZGdlQ291bnRU
eXBlIG1fbnVtQ2FsbHNUb05vdENlbGw7CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbV9udW1DYWxs
c1RvVW5rbm93bkNlbGw7CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbV90b3RhbENvdW50OworICAg
IENhbGxWYXJpYW50IG1fcHJpbWFyeUNhbGxlZTsKKyAgICAKKyAgICB0eXBlZGVmIFNwZWN0cnVt
PENhbGxWYXJpYW50LCBDYWxsRWRnZUNvdW50VHlwZT4gQ2FsbFNwZWN0cnVtOworICAgIAorICAg
IHN0cnVjdCBTZWNvbmRhcnkgeworICAgICAgICBWZWN0b3I8Q2FsbEVkZ2U+IG1fcHJvY2Vzc2Vk
OyAvLyBQcm9jZXNzZWQgYnV0IG5vdCBuZWNlc3NhcmlseSBzb3J0ZWQuCisgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxDYWxsU3BlY3RydW0+IG1fdGVtcG9yYXJ5U3BlY3RydW07CisgICAgfTsKKyAg
ICAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Vjb25kYXJ5PiBtX290aGVyQ2FsbGVlczsKK307CisK
K2NsYXNzIENhbGxFZGdlTG9nIHsKK3B1YmxpYzoKKyAgICBDYWxsRWRnZUxvZygpOworICAgIH5D
YWxsRWRnZUxvZygpOworCisgICAgc3RhdGljIGJvb2wgaXNFbmFibGVkKCk7CisgICAgCisjaWYg
RU5BQkxFKEpJVCkKKyAgICB2b2lkIGVtaXRMb2dDb2RlKENDYWxsSGVscGVycyYsIENhbGxFZGdl
UHJvZmlsZSYsIEpTVmFsdWVSZWdzIGNhbGxlZVJlZ3MpOyAvLyBBc3N1bWVzIHRoYXQgc3RhY2sg
aXMgYWxpZ25lZCwgYWxsIHZvbGF0aWxlIHJlZ2lzdGVycyAtIG90aGVyIHRoYW4gY2FsbGVlR1BS
IC0gYXJlIGNsb2JiZXJhYmxlLCBhbmQgdGhlIHBhcmFtZXRlciBzcGFjZSBpcyBpbiB1c2UuCisg
ICAgCisgICAgLy8gU2FtZSBhcyBhYm92ZSBidXQgY3JlYXRlcyBhIENhbGxFZGdlUHJvZmlsZSBp
bnN0YW5jZSBpZiBvbmUgZGlkIG5vdCBhbHJlYWR5IGV4aXN0LiBEb2VzCisgICAgLy8gdGhpcyBp
biBhIHRocmVhZC1zYWZlIG1hbm5lciBieSBjYWxsaW5nIE93blB0cjo6Y3JlYXRlVHJhbnNhY3Rp
b25hbGx5LgorICAgIHZvaWQgZW1pdExvZ0NvZGUoQ0NhbGxIZWxwZXJzJiwgT3duUHRyPENhbGxF
ZGdlUHJvZmlsZT4mLCBKU1ZhbHVlUmVncyBjYWxsZWVSZWdzKTsKKyNlbmRpZiAvLyBFTkFCTEUo
SklUKQorICAgIAorICAgIHZvaWQgcm90YXRlQW5kUHJvY2VzcygpOworICAgIHZvaWQgcm90YXRl
QW5kUHJvY2Vzc0FzeW5jaHJvbm91c2x5KCk7CisgICAgCisgICAgdm9pZCBwcm9jZXNzTG9nU2xh
Yih1bnNpZ25lZCBpbmRleCk7CisgICAgCisgICAgdm9pZCB0cnlUb1Byb2Nlc3NMb2dTbGFiKHVu
c2lnbmVkIGluZGV4KTsKKyAgICB2b2lkIHRyeVRvUHJvY2Vzc1Jlc2VydmVkU2xhYigpOworICAg
IHZvaWQgdHJ5VG9Qcm9jZXNzQWxsU2xhYnMoKTsKKyAgICAKK3ByaXZhdGU6CisgICAgdm9pZCBw
cm9jZXNzTG9nU2xhYldoaWxlSG9sZGluZ0xvY2sodW5zaWduZWQgaW5kZXgpOworICAgIAorICAg
IHN0cnVjdCBSb3RhdGVTbGFic1Jlc3VsdCB7CisgICAgICAgIHVuc2lnbmVkIHNsYWJJbmRleDsK
KyAgICAgICAgdW5zaWduZWQgbGVmdG92ZXI7CisgICAgfTsKKyAgICBSb3RhdGVTbGFic1Jlc3Vs
dCByb3RhdGVTbGFicygpOworCisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb2dPZlNsYWJTaXplID0gMjA7CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHNsYWJTaXplID0gMSA8PCBsb2dPZlNsYWJTaXplOworICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCB1c2FibGVTbGFiU2l6ZSA9IHNsYWJTaXplIC0gMTsKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZTbGFicyA9IDI7CisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGJ1ZmZlclNpemUgPSBzbGFiU2l6ZSAqIG51bWJlck9mU2xhYnM7CisgICAg
CisgICAgc3RydWN0IEVudHJ5IHsKKyAgICAgICAgSlNWYWx1ZSBtX3ZhbHVlOworICAgICAgICBD
YWxsRWRnZVByb2ZpbGUqIG1fcHJvZmlsZTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAg
ICB2b2lkKiBtX2R1bW15OworI2VuZGlmCisgICAgfTsKKyAgICAKKyAgICB1bnNpZ25lZCBtX3Nj
YWxlZEJ1ZmZlckluZGV4OworICAgIEVudHJ5IG1fYnVmZmVyW2J1ZmZlclNpemVdOworICAgIAor
ICAgIHN0cnVjdCBTbGFiU3RhdGUgeworICAgICAgICBNdXRleCBtX2xvY2s7CisgICAgICAgIAor
ICAgICAgICAvLyBFcXVhbCB0byB1c2FibGVTbGFiU2l6ZSBpZiB0aGUgc2xhYiBpcyBjbGVhciwg
b3RoZXJ3aXNlIHJlZmVycyB0byB0aGUKKyAgICAgICAgLy8gZmlyc3QgdG8tYmUtcHJvY2Vzc2Vk
IGVudHJ5LiBOb3RlIHRoYXQgd2UgYWx3YXlzIGxvc2Ugb25lIAorICAgICAgICB1bnNpZ25lZCBt
X2luZGV4SW5TbGFiOworICAgIH07CisgICAgCisgICAgU2xhYlN0YXRlIG1fc2xhYlN0YXRlW251
bWJlck9mU2xhYnNdOworICAgIHVuc2lnbmVkIG1fY3VycmVudFNsYWJJbmRleDsKKyAgICAKKyAg
ICB1bnNpZ25lZCBtX3RvdGFsUm90YXRpb25zOworICAgIHVuc2lnbmVkIG1fcmFjeVJvdGF0aW9u
czsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ2FsbEVkZ2VQcm9maWxl
X2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmls
ZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgQ2FsbEVkZ2VQcm9maWxlSW5saW5lc19oCisjZGVmaW5lIENhbGxFZGdl
UHJvZmlsZUlubGluZXNfaAorCisjaW5jbHVkZSAiQ2FsbEVkZ2VQcm9maWxlLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitpbmxpbmUgQ2FsbEVkZ2VQcm9maWxlOjpDYWxsRWRnZVByb2ZpbGUoKQor
ICAgIDogbV9jbG9zdXJlc0FyZURlc3BlY2lmaWVkKGZhbHNlKQorICAgICwgbV9udW1DYWxsc1Rv
UHJpbWFyeSgwKQorICAgICwgbV9udW1DYWxsc1RvTm90Q2VsbCgwKQorICAgICwgbV9udW1DYWxs
c1RvVW5rbm93bkNlbGwoMCkKKyAgICAsIG1fdG90YWxDb3VudCgwKQorICAgICwgbV9wcmltYXJ5
Q2FsbGVlKG51bGxwdHIpCit7Cit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCBDYWxsRWRnZVByb2Zp
bGU6OmFkZChKU1ZhbHVlIHZhbHVlLCBDYWxsRWRnZVByb2ZpbGVWZWN0b3ImIG1lcmdlQmFja0xv
ZykKK3sKKyAgICB1bnNpZ25lZCBuZXdUb3RhbENvdW50ID0gbV90b3RhbENvdW50ICsgMTsKKyAg
ICBpZiAoVU5MSUtFTFkoIW5ld1RvdGFsQ291bnQpKSB7CisgICAgICAgIGZhZGVCeUhhbGYoKTsg
Ly8gVGFja2xlIG92ZXJmbG93cyBieSBkaXZpZGluZyBhbGwgY291bnRzIGJ5IHR3by4KKyAgICAg
ICAgbmV3VG90YWxDb3VudCA9IG1fdG90YWxDb3VudCArIDE7CisgICAgfQorICAgIEFTU0VSVChu
ZXdUb3RhbENvdW50KTsKKyAgICBtX3RvdGFsQ291bnQgPSBuZXdUb3RhbENvdW50OworICAgIAor
ICAgIGlmIChVTkxJS0VMWSghdmFsdWUuaXNDZWxsKCkpKSB7CisgICAgICAgIG1fbnVtQ2FsbHNU
b05vdENlbGwrKzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIENhbGxWYXJpYW50IGNh
bGxlZSA9IENhbGxWYXJpYW50KHZhbHVlLmFzQ2VsbCgpKTsKKyAgICAKKyAgICBpZiAobV9jbG9z
dXJlc0FyZURlc3BlY2lmaWVkKQorICAgICAgICBjYWxsZWUgPSBjYWxsZWUuZGVzcGVjaWZpZWRD
bG9zdXJlKCk7CisgICAgCisgICAgaWYgKFVOTElLRUxZKCFtX3ByaW1hcnlDYWxsZWUpKSB7Cisg
ICAgICAgIG1fcHJpbWFyeUNhbGxlZSA9IGNhbGxlZTsKKyAgICAgICAgbV9udW1DYWxsc1RvUHJp
bWFyeSA9IDE7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAorICAgIGlmIChMSUtF
TFkobV9wcmltYXJ5Q2FsbGVlID09IGNhbGxlZSkpIHsKKyAgICAgICAgbV9udW1DYWxsc1RvUHJp
bWFyeSsrOworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBpZiAoVU5MSUtF
TFkoIW1fb3RoZXJDYWxsZWVzKSkgeworICAgICAgICBhZGRTbG93KGNhbGxlZSwgbWVyZ2VCYWNr
TG9nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAgQ2FsbFNwZWN0cnVt
KiBzZWNvbmRhcnkgPSBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS5nZXQoKTsK
KyAgICBpZiAoIXNlY29uZGFyeSkgeworICAgICAgICBhZGRTbG93KGNhbGxlZSwgbWVyZ2VCYWNr
TG9nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAgc2Vjb25kYXJ5LT5h
ZGQoY2FsbGVlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDYWxsRWRn
ZVByb2ZpbGVJbmxpbmVzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rSW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
Myw2ICs4MywxMSBAQCB2b2lkIENhbGxMaW5rSW5mbzo6dmlzaXRXZWFrKFJlcGF0Y2hCdWZmCiAg
ICAgfQogICAgIGlmICghIWxhc3RTZWVuQ2FsbGVlICYmICFIZWFwOjppc01hcmtlZChsYXN0U2Vl
bkNhbGxlZS5nZXQoKSkpCiAgICAgICAgIGxhc3RTZWVuQ2FsbGVlLmNsZWFyKCk7CisgICAgCisg
ICAgaWYgKGNhbGxFZGdlUHJvZmlsZSkgeworICAgICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsK
KyAgICAgICAgY2FsbEVkZ2VQcm9maWxlLT52aXNpdFdlYWsoKTsKKyAgICB9CiB9CiAKIENhbGxM
aW5rSW5mbyYgQ2FsbExpbmtJbmZvOjpkdW1teSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgQ2FsbExpbmtJbmZvX2gKICNkZWZpbmUgQ2FsbExp
bmtJbmZvX2gKIAorI2luY2x1ZGUgIkNhbGxFZGdlUHJvZmlsZS5oIgogI2luY2x1ZGUgIkNsb3N1
cmVDYWxsU3R1YlJvdXRpbmUuaCIKICNpbmNsdWRlICJDb2RlTG9jYXRpb24uaCIKICNpbmNsdWRl
ICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCkBAIC0zMyw2ICszNCw3IEBACiAjaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIldyaXRlQmFycmll
ci5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvU2VudGluZWxMaW5r
ZWRMaXN0Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtODgsNiArOTAsNyBAQCBzdHJ1Y3QgQ2Fs
bExpbmtJbmZvIDogcHVibGljIEJhc2ljUmF3U2VuCiAgICAgdW5zaWduZWQgY2FsbGVlR1BSIDog
ODsKICAgICB1bnNpZ25lZCBzbG93UGF0aENvdW50OwogICAgIENvZGVPcmlnaW4gY29kZU9yaWdp
bjsKKyAgICBPd25QdHI8Q2FsbEVkZ2VQcm9maWxlPiBjYWxsRWRnZVByb2ZpbGU7CiAKICAgICBi
b29sIGlzTGlua2VkKCkgeyByZXR1cm4gc3R1YiB8fCBjYWxsZWU7IH0KICAgICB2b2lkIHVubGlu
ayhSZXBhdGNoQnVmZmVyJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDU0ICszMiwyMiBAQAogI2luY2x1ZGUgIkxMSW50Q2FsbExpbmtJbmZvLmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KKyNpbmNs
dWRlIDx3dGYvTGlzdER1bXAuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKIHN0YXRpYyBjb25zdCBi
b29sIHZlcmJvc2UgPSBmYWxzZTsKIAogQ2FsbExpbmtTdGF0dXM6OkNhbGxMaW5rU3RhdHVzKEpT
VmFsdWUgdmFsdWUpCi0gICAgOiBtX2NhbGxUYXJnZXQodmFsdWUpCi0gICAgLCBtX2V4ZWN1dGFi
bGUoMCkKLSAgICAsIG1fY291bGRUYWtlU2xvd1BhdGgoZmFsc2UpCisgICAgOiBtX2NvdWxkVGFr
ZVNsb3dQYXRoKGZhbHNlKQogICAgICwgbV9pc1Byb3ZlZChmYWxzZSkKIHsKLSAgICBpZiAoIXZh
bHVlIHx8ICF2YWx1ZS5pc0NlbGwoKSkKKyAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS5pc0NlbGwo
KSkgeworICAgICAgICBtX2NvdWxkVGFrZVNsb3dQYXRoID0gdHJ1ZTsKICAgICAgICAgcmV0dXJu
OworICAgIH0KICAgICAKLSAgICBpZiAoIXZhbHVlLmFzQ2VsbCgpLT5pbmhlcml0cyhKU0Z1bmN0
aW9uOjppbmZvKCkpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9leGVjdXRhYmxlID0g
anNDYXN0PEpTRnVuY3Rpb24qPih2YWx1ZS5hc0NlbGwoKSktPmV4ZWN1dGFibGUoKTsKLX0KLQot
SlNGdW5jdGlvbiogQ2FsbExpbmtTdGF0dXM6OmZ1bmN0aW9uKCkgY29uc3QKLXsKLSAgICBpZiAo
IW1fY2FsbFRhcmdldCB8fCAhbV9jYWxsVGFyZ2V0LmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4g
MDsKLSAgICAKLSAgICBpZiAoIW1fY2FsbFRhcmdldC5hc0NlbGwoKS0+aW5oZXJpdHMoSlNGdW5j
dGlvbjo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgcmV0dXJuIGpzQ2Fz
dDxKU0Z1bmN0aW9uKj4obV9jYWxsVGFyZ2V0LmFzQ2VsbCgpKTsKLX0KLQotSW50ZXJuYWxGdW5j
dGlvbiogQ2FsbExpbmtTdGF0dXM6OmludGVybmFsRnVuY3Rpb24oKSBjb25zdAotewotICAgIGlm
ICghbV9jYWxsVGFyZ2V0IHx8ICFtX2NhbGxUYXJnZXQuaXNDZWxsKCkpCi0gICAgICAgIHJldHVy
biAwOwotICAgIAotICAgIGlmICghbV9jYWxsVGFyZ2V0LmFzQ2VsbCgpLT5pbmhlcml0cyhJbnRl
cm5hbEZ1bmN0aW9uOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICByZXR1
cm4ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihtX2NhbGxUYXJnZXQuYXNDZWxsKCkpOwotfQot
Ci1JbnRyaW5zaWMgQ2FsbExpbmtTdGF0dXM6OmludHJpbnNpY0ZvcihDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIGtpbmQpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2V4ZWN1dGFibGUpCi0gICAgICAgIHJl
dHVybiBOb0ludHJpbnNpYzsKLSAgICAKLSAgICByZXR1cm4gbV9leGVjdXRhYmxlLT5pbnRyaW5z
aWNGb3Ioa2luZCk7CisgICAgbV9lZGdlcy5hcHBlbmQoQ2FsbEVkZ2UoQ2FsbFZhcmlhbnQodmFs
dWUuYXNDZWxsKCkpLCAxKSk7CiB9CiAKIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpj
b21wdXRlRnJvbUxMSW50KGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgQ29kZUJs
b2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQpAQCAtODcsNyArNTUs
NyBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyCiAgICAgVU5VU0VE
X1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsK
ICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAocHJvZmlsZWRCbG9jay0+aGFzRXhpdFNpdGUo
bG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkRnVuY3Rpb24p
KSkgeworICAgIGlmIChwcm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJl
cXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDZWxsKSkpIHsKICAgICAgICAgLy8gV2Ug
Y291bGQgZm9yY2UgdGhpcyB0byBiZSBhIGNsb3N1cmUgY2FsbCwgYnV0IGluc3RlYWQgd2UnbGwg
anVzdCBhc3N1bWUgdGhhdCBpdAogICAgICAgICAvLyB0YWtlcyBzbG93IHBhdGguCiAgICAgICAg
IHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7CkBAIC0xMzksMTAgKzEwNywxMCBAQCBDYWxsTGlua1N0
YXR1czo6RXhpdFNpdGVEYXRhIENhbGxMaW5rU3RhCiAgICAgCiAjaWYgRU5BQkxFKERGR19KSVQp
CiAgICAgZXhpdFNpdGVEYXRhLm1fdGFrZXNTbG93UGF0aCA9Ci0gICAgICAgIHByb2ZpbGVkQmxv
Y2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5k
ZXgsIEJhZENhY2hlLCBleGl0aW5nSklUVHlwZSkpCisgICAgICAgIHByb2ZpbGVkQmxvY2stPmhh
c0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJh
ZFR5cGUsIGV4aXRpbmdKSVRUeXBlKSkKICAgICAgICAgfHwgcHJvZmlsZWRCbG9jay0+aGFzRXhp
dFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkRXhl
Y3V0YWJsZSwgZXhpdGluZ0pJVFR5cGUpKTsKICAgICBleGl0U2l0ZURhdGEubV9iYWRGdW5jdGlv
biA9Ci0gICAgICAgIHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVx
dWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZEZ1bmN0aW9uLCBleGl0aW5nSklUVHlwZSkp
OworICAgICAgICBwcm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVl
bnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDZWxsLCBleGl0aW5nSklUVHlwZSkpOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0obG9ja2VyKTsKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRC
bG9jayk7CkBAIC0xNTYsNiArMTI0LDI2IEBAIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEg
Q2FsbExpbmtTdGEKICNpZiBFTkFCTEUoSklUKQogQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVGb3IoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENhbGxMaW5rSW5mbyYg
Y2FsbExpbmtJbmZvKQogeworICAgIC8vIEFsd2F5cyB0cnVzdCB0aGUgY2FsbCBlZGdlIHByb2Zp
bGUgb3ZlciBhbnl0aGluZyBlbHNlIHNpbmNlIHRoaXMgaGFzIHByZWNpc2UgY291bnRzLgorICAg
IC8vIEl0IGNhbiBtYWtlIHRoZSBiZXN0IHBvc3NpYmxlIGRlY2lzaW9uIGJlY2F1c2UgaXQgbmV2
ZXIgImZvcmdldHMiIHdoYXQgaGFwcGVuZWQgZm9yIGFueQorICAgIC8vIGNhbGwsIHdpdGggdGhl
IGV4Y2VwdGlvbiBvZiBmYWRpbmcgb3V0IHRoZSBjb3VudHMgb2Ygb2xkIGNhbGxzIChmb3IgZXhh
bXBsZSBpZiB0aGUKKyAgICAvLyBjb3VudGVyIHR5cGUgaXMgMTYtYml0IHRoZW4gY2FsbHMgdGhh
dCBoYXBwZW5lZCBtb3JlIHRoYW4gMl4xNiBjYWxscyBhZ28gYXJlIGdpdmVuIGhhbGYKKyAgICAv
LyB3ZWlnaHQsIGFuZCB0aGlzIGNvbXBvdW5kcyBmb3IgZXZlcnkgMl4xNSBbc2ljXSBjYWxscyBh
ZnRlciB0aGF0KS4gVGhlIGNvbWJpbmF0aW9uIG9mCisgICAgLy8gaGlnaCBmaWRlbGl0eSBmb3Ig
cmVjZW50IGNhbGxzIGFuZCBmYWRpbmcgZm9yIG9sZGVyIGNhbGxzIG1ha2VzIHRoaXMgdGhlIG1v
c3QgdXNlZnVsCisgICAgLy8gbWVjaGFtaXNtIG9mIGNob29zaW5nIGhvdyB0byBvcHRpbWl6ZSBm
dXR1cmUgY2FsbHMuCisgICAgaWYgKE9wdGlvbnM6OmNhbGxTdGF0dXNTaG91bGRVc2VDYWxsRWRn
ZVByb2ZpbGUoKSkgeworICAgICAgICBDYWxsRWRnZVByb2ZpbGUqIGVkZ2VQcm9maWxlID0gY2Fs
bExpbmtJbmZvLmNhbGxFZGdlUHJvZmlsZS5nZXQoKTsKKyAgICAgICAgV1RGOjpsb2FkTG9hZEZl
bmNlKCk7CisgICAgICAgIGlmIChlZGdlUHJvZmlsZSkgeworICAgICAgICAgICAgQ2FsbExpbmtT
dGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZyb21DYWxsRWRnZVByb2ZpbGUoZWRnZVByb2ZpbGUpOwor
ICAgICAgICAgICAgaWYgKCEhcmVzdWx0KQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIEVsc2Ugd2UncmUgaW4gdGhlIHVudXN1YWwg
c3RhdGUgd2hlcmUgdGhlIGxvZyBuZXZlciBjb2xsZWN0ZWQgZGF0YS4gVGhpcyBoYXBwZW5zCisg
ICAgICAgICAgICAvLyByYXJlbHkgYW5kIG9ubHkgZHVlIHRvIHN0cmFuZ2UgcmFjZXMuIEJ1dCBp
dCdzIGdvb2QgdG8gZGVmZW5kIGFnYWluc3QgaXQgYW55d2F5LgorICAgICAgICB9CisgICAgfQor
ICAgIAogICAgIC8vIE5vdGUgdGhhdCBkZXNwaXRlIHJlcXVpcmluZyB0aGF0IHRoZSBsb2NrZXIg
aXMgaGVsZCwgdGhpcyBjb2RlIGlzIHJhY3kgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gdGhlIENh
bGxMaW5rSW5mbzogaXQgbWF5IGdldCBjbGVhcmVkIHdoaWxlIHRoaXMgY29kZSBydW5zISBUaGlz
IGlzIGJlY2F1c2UKICAgICAvLyBDYWxsTGlua0luZm86OnVubGluaygpIG1heSBiZSBjYWxsZWQg
ZnJvbSBhIGRpZmZlcmVudCBDb2RlQmxvY2sgdGhhbiB0aGUgb25lIHRoYXQgb3ducwpAQCAtMTc3
LDcgKzE2NSw3IEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICAg
ICAKICAgICBKU0Z1bmN0aW9uKiB0YXJnZXQgPSBjYWxsTGlua0luZm8ubGFzdFNlZW5DYWxsZWUu
Z2V0KCk7CiAgICAgaWYgKCF0YXJnZXQpCi0gICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygp
OworICAgICAgICByZXR1cm4gdGFrZXNTbG93UGF0aCgpOwogICAgIAogICAgIGlmIChjYWxsTGlu
a0luZm8uaGFzU2VlbkNsb3N1cmUpCiAgICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyh0YXJn
ZXQtPmV4ZWN1dGFibGUoKSk7CkBAIC0xODUsMTUgKzE3Myw0MCBAQCBDYWxsTGlua1N0YXR1cyBD
YWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvCiAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKHRhcmdl
dCk7CiB9CiAKLUNhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAotICAg
IGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgQ2FsbExpbmtJbmZvJiBjYWxsTGlu
a0luZm8sIEV4aXRTaXRlRGF0YSBleGl0U2l0ZURhdGEpCitDYWxsTGlua1N0YXR1cyBDYWxsTGlu
a1N0YXR1czo6Y29tcHV0ZUZyb21DYWxsRWRnZVByb2ZpbGUoQ2FsbEVkZ2VQcm9maWxlKiBlZGdl
UHJvZmlsZSkKIHsKLSAgICBpZiAoZXhpdFNpdGVEYXRhLm1fdGFrZXNTbG93UGF0aCkKKyAgICBp
ZiAoIWVkZ2VQcm9maWxlLT50b3RhbENvdW50KCkpCisgICAgICAgIHJldHVybiBDYWxsTGlua1N0
YXR1cygpOworICAgIAorICAgIC8vIFRvIGRvIGFueXRoaW5nIG1lYW5pbmdmdWwsIHdlIHJlcXVp
cmUgdGhhdCB0aGUgbWFqb3JpdHkgb2YgY2FsbHMgYXJlIHRvIHNvbWV0aGluZyB3ZQorICAgIC8v
IGtub3cgaG93IHRvIGhhbmRsZS4KKyAgICB1bnNpZ25lZCBudW1DYWxsc1RvS25vd24gPSBlZGdl
UHJvZmlsZS0+bnVtQ2FsbHNUb0tub3duQ2VsbHMoKTsKKyAgICB1bnNpZ25lZCBudW1DYWxsc1Rv
VW5rbm93biA9IGVkZ2VQcm9maWxlLT5udW1DYWxsc1RvTm90Q2VsbCgpICsgZWRnZVByb2ZpbGUt
Pm51bUNhbGxzVG9Vbmtub3duQ2VsbCgpOworICAgIGlmIChudW1DYWxsc1RvS25vd24gPD0gbnVt
Q2FsbHNUb1Vua25vd24pCisgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7CisgICAgCisg
ICAgLy8gVGhpcyB0dXJucyBvdXQgdG8gYmUgaW1wb3J0YW50LiBXZSBkb24ndCB3YW50IHRvIGlu
bGluZSBhIGNhbGwgdGhhdCBoYXMgb25seSBoYXBwZW5lZCBhIHNtYWxsCisgICAgLy8gbnVtYmVy
IG9mIHRpbWVzIGJlY2F1c2U6ICgxKSBpdCdzIGxpa2VseSB0byBsZWFkIHRvIHBvaW50bGVzcyBj
b2RlYmxvYXQgYW5kICgyKSB0aGUgY2FsbGVlCisgICAgLy8gaXMgbGlrZWx5IHRvIGJlIHVuZGVy
cHJvZmlsZWQsIGxlYWRpbmcgdG8gdW5uZWNlc3NhcnkgZXhpdHMuCisgICAgaWYgKG51bUNhbGxz
VG9Lbm93biA8IE9wdGlvbnM6OmZyZXF1ZW50Q2FsbFRocmVzaG9sZCgpKQogICAgICAgICByZXR1
cm4gdGFrZXNTbG93UGF0aCgpOwogICAgIAorICAgIENhbGxMaW5rU3RhdHVzIHJlc3VsdDsKKyAg
ICByZXN1bHQubV9lZGdlcyA9IGVkZ2VQcm9maWxlLT5jYWxsRWRnZXMoKTsKKyAgICByZXN1bHQu
bV9jb3VsZFRha2VTbG93UGF0aCA9ICEhbnVtQ2FsbHNUb1Vua25vd247CisgICAgcmVzdWx0Lm1f
Y2FuVHJ1c3RDb3VudHMgPSB0cnVlOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0Nh
bGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAorICAgIGNvbnN0IENvbmN1
cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIEV4aXRT
aXRlRGF0YSBleGl0U2l0ZURhdGEpCit7CiAgICAgQ2FsbExpbmtTdGF0dXMgcmVzdWx0ID0gY29t
cHV0ZUZvcihsb2NrZXIsIGNhbGxMaW5rSW5mbyk7CiAgICAgaWYgKGV4aXRTaXRlRGF0YS5tX2Jh
ZEZ1bmN0aW9uKQogICAgICAgICByZXN1bHQubWFrZUNsb3N1cmVDYWxsKCk7CisgICAgaWYgKGV4
aXRTaXRlRGF0YS5tX3Rha2VzU2xvd1BhdGgpCisgICAgICAgIHJlc3VsdC5tX2NvdWxkVGFrZVNs
b3dQYXRoID0gdHJ1ZTsKICAgICAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjU2LDYgKzI2
OSwzMSBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvCiAgICAgcmV0
dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBi
YXNlbGluZU1hcCk7CiB9CiAKK2Jvb2wgQ2FsbExpbmtTdGF0dXM6OmlzQ2xvc3VyZUNhbGwoKSBj
b25zdAoreworICAgIGZvciAodW5zaWduZWQgaSA9IG1fZWRnZXMuc2l6ZSgpOyBpLS07KSB7Cisg
ICAgICAgIGlmIChtX2VkZ2VzW2ldLmNhbGxlZSgpLmlzQ2xvc3VyZUNhbGwoKSkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQ2Fs
bExpbmtTdGF0dXM6Om1ha2VDbG9zdXJlQ2FsbCgpCit7CisgICAgQVNTRVJUKCFtX2lzUHJvdmVk
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2VkZ2VzLnNpemUoKTsgaS0tOykKKyAgICAgICAg
bV9lZGdlc1tpXSA9IG1fZWRnZXNbaV0uZGVzcGVjaWZpZWRDbG9zdXJlKCk7CisgICAgCisgICAg
aWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgLy8gRG9pbmcgdGhpcyBzaG91bGQgbm90
IGhhdmUgY3JlYXRlZCBkdXBsaWNhdGVzLCBiZWNhdXNlIHRoZSBDYWxsRWRnZVByb2ZpbGUKKyAg
ICAgICAgLy8gc2hvdWxkIGRlc3BlY2lmeSBjbG9zdXJlcyBpZiBkb2luZyBzbyB3b3VsZCByZWR1
Y2UgdGhlIG51bWJlciBvZiBrbm93biBjYWxsZWVzLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9lZGdlcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBqID0gaSArIDE7IGogPCBtX2VkZ2VzLnNpemUoKTsgKytqKQorICAgICAgICAgICAgICAgIEFT
U0VSVChtX2VkZ2VzW2ldLmNhbGxlZSgpICE9IG1fZWRnZXNbal0uY2FsbGVlKCkpOworICAgICAg
ICB9CisgICAgfQorfQorCiB2b2lkIENhbGxMaW5rU3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1NldCgpKSB7CkBAIC0yNzEsMTQgKzMwOSw3IEBAIHZv
aWQgQ2FsbExpbmtTdGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG8KICAgICBpZiAobV9jb3VsZFRh
a2VTbG93UGF0aCkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiQ291bGQgVGFrZSBTbG93IFBh
dGgiKTsKICAgICAKLSAgICBpZiAobV9jYWxsVGFyZ2V0KQotICAgICAgICBvdXQucHJpbnQoY29t
bWEsICJLbm93biB0YXJnZXQ6ICIsIG1fY2FsbFRhcmdldCk7Ci0gICAgCi0gICAgaWYgKG1fZXhl
Y3V0YWJsZSkgewotICAgICAgICBvdXQucHJpbnQoY29tbWEsICJFeGVjdXRhYmxlL0NhbGxIYXNo
OiAiLCBSYXdQb2ludGVyKG1fZXhlY3V0YWJsZSkpOwotICAgICAgICBpZiAoIWlzQ29tcGlsYXRp
b25UaHJlYWQoKSkKLSAgICAgICAgICAgIG91dC5wcmludCgiLyIsIG1fZXhlY3V0YWJsZS0+aGFz
aEZvcihDb2RlRm9yQ2FsbCkpOwotICAgIH0KKyAgICBvdXQucHJpbnQobGlzdER1bXAobV9lZGdl
cykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkod29ya2luZyBj
b3B5KQpAQCAtNDYsOSArNDYsOSBAQCBzdHJ1Y3QgQ2FsbExpbmtJbmZvOwogY2xhc3MgQ2FsbExp
bmtTdGF0dXMgewogcHVibGljOgogICAgIENhbGxMaW5rU3RhdHVzKCkKLSAgICAgICAgOiBtX2V4
ZWN1dGFibGUoMCkKLSAgICAgICAgLCBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQorICAgICAg
ICA6IG1fY291bGRUYWtlU2xvd1BhdGgoZmFsc2UpCiAgICAgICAgICwgbV9pc1Byb3ZlZChmYWxz
ZSkKKyAgICAgICAgLCBtX2NhblRydXN0Q291bnRzKGZhbHNlKQogICAgIHsKICAgICB9CiAgICAg
CkBAIC02MSwxMCArNjEsMTEgQEAgcHVibGljOgogICAgIAogICAgIGV4cGxpY2l0IENhbGxMaW5r
U3RhdHVzKEpTVmFsdWUpOwogICAgIAotICAgIENhbGxMaW5rU3RhdHVzKEV4ZWN1dGFibGVCYXNl
KiBleGVjdXRhYmxlKQotICAgICAgICA6IG1fZXhlY3V0YWJsZShleGVjdXRhYmxlKQorICAgIENh
bGxMaW5rU3RhdHVzKENhbGxWYXJpYW50IHZhcmlhbnQpCisgICAgICAgIDogbV9lZGdlcygxLCBD
YWxsRWRnZSh2YXJpYW50LCAxKSkKICAgICAgICAgLCBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNl
KQogICAgICAgICAsIG1faXNQcm92ZWQoZmFsc2UpCisgICAgICAgICwgbV9jYW5UcnVzdENvdW50
cyhmYWxzZSkKICAgICB7CiAgICAgfQogICAgIApAQCAtMTA3LDM3ICsxMDgsMzYgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKAogICAgICAgICBDb2RlQmxv
Y2sqLCBDb2RlT3JpZ2luLCBjb25zdCBDYWxsTGlua0luZm9NYXAmLCBjb25zdCBDb250ZXh0TWFw
Jik7CiAgICAgCi0gICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdldCB8
fCBtX2V4ZWN1dGFibGUgfHwgbV9jb3VsZFRha2VTbG93UGF0aDsgfQorICAgIGJvb2wgaXNTZXQo
KSBjb25zdCB7IHJldHVybiAhbV9lZGdlcy5pc0VtcHR5KCkgfHwgbV9jb3VsZFRha2VTbG93UGF0
aDsgfQogICAgIAogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7
IH0KICAgICAKICAgICBib29sIGNvdWxkVGFrZVNsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9j
b3VsZFRha2VTbG93UGF0aDsgfQotICAgIGJvb2wgaXNDbG9zdXJlQ2FsbCgpIGNvbnN0IHsgcmV0
dXJuIG1fZXhlY3V0YWJsZSAmJiAhbV9jYWxsVGFyZ2V0OyB9CiAgICAgCi0gICAgSlNWYWx1ZSBj
YWxsVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0OyB9Ci0gICAgSlNGdW5jdGlv
biogZnVuY3Rpb24oKSBjb25zdDsKLSAgICBJbnRlcm5hbEZ1bmN0aW9uKiBpbnRlcm5hbEZ1bmN0
aW9uKCkgY29uc3Q7Ci0gICAgSW50cmluc2ljIGludHJpbnNpY0ZvcihDb2RlU3BlY2lhbGl6YXRp
b25LaW5kKSBjb25zdDsKLSAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZXhlY3V0YWJsZTsgfQorICAgIENhbGxFZGdlTGlzdCBlZGdlcygpIGNvbnN0IHsg
cmV0dXJuIG1fZWRnZXM7IH0KKyAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9l
ZGdlcy5zaXplKCk7IH0KKyAgICBDYWxsRWRnZSBhdCh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVy
biBtX2VkZ2VzW2ldOyB9CisgICAgQ2FsbEVkZ2Ugb3BlcmF0b3JbXSh1bnNpZ25lZCBpKSBjb25z
dCB7IHJldHVybiBhdChpKTsgfQogICAgIGJvb2wgaXNQcm92ZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzUHJvdmVkOyB9Ci0gICAgYm9vbCBjYW5PcHRpbWl6ZSgpIGNvbnN0IHsgcmV0dXJuIChtX2Nh
bGxUYXJnZXQgfHwgbV9leGVjdXRhYmxlKSAmJiAhbV9jb3VsZFRha2VTbG93UGF0aDsgfQorICAg
IGJvb2wgY2FuT3B0aW1pemUoKSBjb25zdCB7IHJldHVybiAhbV9lZGdlcy5pc0VtcHR5KCk7IH0K
KyAgICBib29sIGNhblRydXN0Q291bnRzKCkgY29uc3QgeyByZXR1cm4gbV9jYW5UcnVzdENvdW50
czsgfQorICAgIAorICAgIGJvb2wgaXNDbG9zdXJlQ2FsbCgpIGNvbnN0OyAvLyBSZXR1cm5zIHRy
dWUgaWYgYW55IGNhbGxlZSBpcyBhIGNsb3N1cmUgY2FsbC4KICAgICAKICAgICB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6Ci0gICAgdm9pZCBtYWtlQ2xvc3Vy
ZUNhbGwoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2lzUHJvdmVkKTsKLSAgICAgICAgLy8g
VHVybiB0aGlzIGludG8gYSBjbG9zdXJlIGNhbGwuCi0gICAgICAgIG1fY2FsbFRhcmdldCA9IEpT
VmFsdWUoKTsKLSAgICB9CisgICAgdm9pZCBtYWtlQ2xvc3VyZUNhbGwoKTsKICAgICAKICAgICBz
dGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZyb21MTEludChjb25zdCBDb25jdXJyZW50SklU
TG9ja2VyJiwgQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CisjaWYgRU5BQkxF
KEpJVCkKKyAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZyb21DYWxsRWRnZVByb2Zp
bGUoQ2FsbEVkZ2VQcm9maWxlKik7CisjZW5kaWYKICAgICAKLSAgICBKU1ZhbHVlIG1fY2FsbFRh
cmdldDsKLSAgICBFeGVjdXRhYmxlQmFzZSogbV9leGVjdXRhYmxlOworICAgIENhbGxFZGdlTGlz
dCBtX2VkZ2VzOwogICAgIGJvb2wgbV9jb3VsZFRha2VTbG93UGF0aDsKICAgICBib29sIG1faXNQ
cm92ZWQ7CisgICAgYm9vbCBtX2NhblRydXN0Q291bnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFu
dC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bFZhcmlhbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkNhbGxWYXJpYW50LmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCit2b2lkIENhbGxWYXJpYW50OjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0Cit7CisgICAgaWYgKCEqdGhpcykgeworICAgICAgICBvdXQucHJpbnQoIm51bGwiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoSW50ZXJuYWxGdW5jdGlvbiog
aW50ZXJuYWxGdW5jdGlvbiA9IHRoaXMtPmludGVybmFsRnVuY3Rpb24oKSkgeworICAgICAgICBv
dXQucHJpbnQoIkludGVybmFsRnVuY3Rpb246ICIsIEpTVmFsdWUoaW50ZXJuYWxGdW5jdGlvbikp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChKU0Z1bmN0aW9uKiBmdW5j
dGlvbiA9IHRoaXMtPmZ1bmN0aW9uKCkpIHsKKyAgICAgICAgb3V0LnByaW50KCIoRnVuY3Rpb246
ICIsIEpTVmFsdWUoZnVuY3Rpb24pLCAiOyBFeGVjdXRhYmxlOiAiLCAqZXhlY3V0YWJsZSgpLCAi
KSIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIG91dC5wcmludCgiRXhlY3V0
YWJsZTogIiwgKmV4ZWN1dGFibGUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ2FsbFZhcmlhbnRfaAorI2RlZmluZSBDYWxs
VmFyaWFudF9oCisKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSlNDZWxsLmgi
CisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQ2Fs
bFZhcmlhbnQgeworcHVibGljOgorICAgIGV4cGxpY2l0IENhbGxWYXJpYW50KEpTQ2VsbCogY2Fs
bGVlID0gbnVsbHB0cikKKyAgICAgICAgOiBtX2NhbGxlZShjYWxsZWUpCisgICAgeworICAgIH0K
KyAgICAKKyAgICBDYWxsVmFyaWFudChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisg
ICAgICAgIDogbV9jYWxsZWUoZGVsZXRlZFRva2VuKCkpCisgICAgeworICAgIH0KKyAgICAKKyAg
ICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX2NhbGxlZTsgfQorICAgIAorICAg
IC8vIElmIHRoaXMgdmFyaWFudCByZWZlcnMgdG8gYSBmdW5jdGlvbiwgY2hhbmdlIGl0IHRvIHJl
ZmVyIHRvIGl0cyBleGVjdXRhYmxlLgorICAgIEFMV0FZU19JTkxJTkUgQ2FsbFZhcmlhbnQgZGVz
cGVjaWZpZWRDbG9zdXJlKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2NhbGxlZS0+dHlw
ZSgpID09IEpTRnVuY3Rpb25UeXBlKQorICAgICAgICAgICAgcmV0dXJuIENhbGxWYXJpYW50KGpz
Q2FzdDxKU0Z1bmN0aW9uKj4obV9jYWxsZWUpLT5leGVjdXRhYmxlKCkpOworICAgICAgICByZXR1
cm4gKnRoaXM7CisgICAgfQorICAgIAorICAgIEpTQ2VsbCogcmF3Q2FsbGVlQ2VsbCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FsbGVlOyB9CisgICAgCisgICAgSW50ZXJuYWxGdW5jdGlvbiogaW50ZXJu
YWxGdW5jdGlvbigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxJ
bnRlcm5hbEZ1bmN0aW9uKj4obV9jYWxsZWUpOworICAgIH0KKyAgICAKKyAgICBKU0Z1bmN0aW9u
KiBmdW5jdGlvbigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxK
U0Z1bmN0aW9uKj4obV9jYWxsZWUpOworICAgIH0KKyAgICAKKyAgICBib29sIGlzQ2xvc3VyZUNh
bGwoKSBjb25zdCB7IHJldHVybiAhIWpzRHluYW1pY0Nhc3Q8RXhlY3V0YWJsZUJhc2UqPihtX2Nh
bGxlZSk7IH0KKyAgICAKKyAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSgpIGNvbnN0Cisg
ICAgeworICAgICAgICBpZiAoSlNGdW5jdGlvbiogZnVuY3Rpb24gPSB0aGlzLT5mdW5jdGlvbigp
KQorICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uLT5leGVjdXRhYmxlKCk7CisgICAgICAgIHJl
dHVybiBqc0R5bmFtaWNDYXN0PEV4ZWN1dGFibGVCYXNlKj4obV9jYWxsZWUpOworICAgIH0KKyAg
ICAKKyAgICBKU0NlbGwqIG5vbkV4ZWN1dGFibGVDYWxsZWUoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoIWlzQ2xvc3VyZUNhbGwoKSk7CisgICAgICAgIHJldHVybiBtX2Nh
bGxlZTsKKyAgICB9CisgICAgCisgICAgSW50cmluc2ljIGludHJpbnNpY0ZvcihDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIGtpbmQpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoRXhlY3V0YWJsZUJh
c2UqIGV4ZWN1dGFibGUgPSB0aGlzLT5leGVjdXRhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4g
ZXhlY3V0YWJsZS0+aW50cmluc2ljRm9yKGtpbmQpOworICAgICAgICByZXR1cm4gTm9JbnRyaW5z
aWM7CisgICAgfQorICAgIAorICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRh
YmxlKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJs
ZSA9IHRoaXMtPmV4ZWN1dGFibGUoKSkKKyAgICAgICAgICAgIHJldHVybiBqc0R5bmFtaWNDYXN0
PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisgICAgCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Owor
ICAgIAorICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fY2FsbGVlID09IGRlbGV0ZWRUb2tlbigpOworICAgIH0KKyAgICAKKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fY2FsbGVlID09IG90aGVyLm1fY2FsbGVlOworICAgIH0KKyAgICAK
KyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKyAgICAKKyAgICBi
b29sIG9wZXJhdG9yPChjb25zdCBDYWxsVmFyaWFudCYgb3RoZXIpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gbV9jYWxsZWUgPCBvdGhlci5tX2NhbGxlZTsKKyAgICB9CisgICAgCisgICAg
Ym9vbCBvcGVyYXRvcj4oY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG90aGVyIDwgKnRoaXM7CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0
b3I8PShjb25zdCBDYWxsVmFyaWFudCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gISgqdGhpcyA8IG90aGVyKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvcj49KGNv
bnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBvdGhl
ciA8PSAqdGhpczsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gV1RGOjpQdHJIYXNoPEpTQ2VsbCo+OjpoYXNoKG1fY2FsbGVlKTsK
KyAgICB9CisgICAgCitwcml2YXRlOgorICAgIHN0YXRpYyBKU0NlbGwqIGRlbGV0ZWRUb2tlbigp
IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU0NlbGwqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEp
KTsgfQorICAgICAgICAgICAgICAgICAgIAorICAgIEpTQ2VsbCogbV9jYWxsZWU7Cit9OworCitz
dHJ1Y3QgQ2FsbFZhcmlhbnRIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBD
YWxsVmFyaWFudCYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgc3RhdGljIGJvb2wg
ZXF1YWwoY29uc3QgQ2FsbFZhcmlhbnQmIGEsIGNvbnN0IENhbGxWYXJpYW50JiBiKSB7IHJldHVy
biBhID09IGI7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9y
RGVsZXRlZCA9IHRydWU7Cit9OworCit0eXBlZGVmIFZlY3RvcjxDYWxsVmFyaWFudCwgMT4gQ2Fs
bFZhcmlhbnRMaXN0OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKK3RlbXBsYXRlPD4gc3Ry
dWN0IERlZmF1bHRIYXNoPEpTQzo6Q2FsbFZhcmlhbnQ+IHsKKyAgICB0eXBlZGVmIEpTQzo6Q2Fs
bFZhcmlhbnRIYXNoIEhhc2g7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFz
aFRyYWl0czsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpDYWxsVmFyaWFudD4g
OiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8SlNDOjpDYWxsVmFyaWFudD4geyB9OworCit9IC8vIG5h
bWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIENhbGxWYXJpYW50X2gKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCw4ICszOCw4IEBAIGNvbnN0IGNoYXIqIGV4aXRLaW5kVG9TdHJpbmcoRXhpdEtp
bmQga2kKICAgICAgICAgcmV0dXJuICJVbnNldCI7CiAgICAgY2FzZSBCYWRUeXBlOgogICAgICAg
ICByZXR1cm4gIkJhZFR5cGUiOwotICAgIGNhc2UgQmFkRnVuY3Rpb246Ci0gICAgICAgIHJldHVy
biAiQmFkRnVuY3Rpb24iOworICAgIGNhc2UgQmFkQ2VsbDoKKyAgICAgICAgcmV0dXJuICJCYWRD
ZWxsIjsKICAgICBjYXNlIEJhZEV4ZWN1dGFibGU6CiAgICAgICAgIHJldHVybiAiQmFkRXhlY3V0
YWJsZSI7CiAgICAgY2FzZSBCYWRDYWNoZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGl0S2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGl0S2luZC5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIGVudW0gRXhpdEtpbmQgOiB1aW50OF90IHsKICAgICBFeGl0S2lu
ZFVuc2V0LAogICAgIEJhZFR5cGUsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIGEgdHlwZSBwcmVkaWN0
aW9uIHdhcyB3cm9uZy4KLSAgICBCYWRGdW5jdGlvbiwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2Ug
bWFkZSBhbiBpbmNvcnJlY3QgYXNzdW1wdGlvbiBhYm91dCB3aGF0IGZ1bmN0aW9uIHdlIHdvdWxk
IHNlZS4KKyAgICBCYWRDZWxsLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSB3ZSBtYWRlIGFuIGluY29y
cmVjdCBhc3N1bXB0aW9uIGFib3V0IHdoYXQgY2VsbCB3ZSB3b3VsZCBzZWUuIFVzdWFsbHkgdXNl
ZCBmb3IgZnVuY3Rpb24gY2hlY2tzLgogICAgIEJhZEV4ZWN1dGFibGUsIC8vIFdlIGV4aXRlZCBi
ZWNhdXNlIHdlIG1hZGUgYW4gaW5jb3JyZWN0IGFzc3VtcHRpb24gYWJvdXQgd2hhdCBleGVjdXRh
YmxlIHdlIHdvdWxkIHNlZS4KICAgICBCYWRDYWNoZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2UgYW4g
aW5saW5lIGNhY2hlIHdhcyB3cm9uZy4KICAgICBCYWRDb25zdGFudENhY2hlLCAvLyBXZSBleGl0
ZWQgYmVjYXVzZSBhIGNhY2hlIG9uIGEgd2VhayBjb25zdGFudCAodXN1YWxseSBhIHByb3RvdHlw
ZSkgd2FzIHdyb25nLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMTcyODU5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDU5LDE0ICsxNDU5LDYgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUo
U3BlY0ludDMyKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgIGNhc2UgQ2hlY2tFeGVj
dXRhYmxlOiB7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBjb3VsZCB0cmFjayBleGVjdXRhYmxlcyBp
biBBYnN0cmFjdFZhbHVlLCB3aGljaCB3b3VsZCBhbGxvdyB1cyB0byBnZXQgcmlkIG9mIHRoZXNl
IGNoZWNrcwotICAgICAgICAvLyBtb3JlIHRob3JvdWdobHkuIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYyMDAKLSAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIGVs
aW1pbmF0ZSB0aGVzZSBlbnRpcmVseSBpZiB3ZSBrbm93IHRoZSBleGFjdCB2YWx1ZSB0aGF0IGZs
b3dzIGludG8gdGhpcy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNjIwMQotICAgICAgICBicmVhazsKLSAgICB9Ci0KICAgICBjYXNlIENoZWNr
U3RydWN0dXJlOiB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBwcm9w
YWdhdGUgdGhlIHN0cnVjdHVyZSBzZXRzIG9mIGNvbnN0YW50cyAoaS5lLiBwcm90b3R5cGVzKS4K
ICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsK
QEAgLTE3MjYsMTYgKzE3MTgsMjkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeQogICAgICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQorICAgICAgICAKKyAgICBjYXNlIEdldEV4ZWN1dGFibGU6IHsKKyAgICAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CisgICAg
ICAgIGlmICh2YWx1ZSkgeworICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0R5
bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2YWx1ZSk7CisgICAgICAgICAgICBpZiAoZnVuY3Rpb24p
IHsKKyAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCAqbV9ncmFwaC5mcmVlemUoZnVu
Y3Rpb24tPmV4ZWN1dGFibGUoKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjQ2VsbE90
aGVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIAotICAgIGNhc2UgQ2hlY2tGdW5jdGlv
bjogeworICAgIGNhc2UgQ2hlY2tDZWxsOiB7CiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBmb3JO
b2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwotICAgICAgICBpZiAodmFsdWUgPT0gbm9kZS0+
ZnVuY3Rpb24oKS0+dmFsdWUoKSkgeworICAgICAgICBpZiAodmFsdWUgPT0gbm9kZS0+Y2VsbE9w
ZXJhbmQoKS0+dmFsdWUoKSkgewogICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50
cyh0cnVlKTsKICAgICAgICAgICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgZmlsdGVyQnlWYWx1ZShub2RlLT5jaGlsZDEo
KSwgKm5vZGUtPmZ1bmN0aW9uKCkpOworICAgICAgICBmaWx0ZXJCeVZhbHVlKG5vZGUtPmNoaWxk
MSgpLCAqbm9kZS0+Y2VsbE9wZXJhbmQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAg
ICAgCkBAIC0xOTAxLDYgKzE5MDYsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6CisgICAg
Y2FzZSBDaGVja0JhZENlbGw6CiAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7CiAg
ICAgICAgIGJyZWFrOwogICAgICAgICAKQEAgLTE5NTUsNyArMTk2MSw4IEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICBjYXNlIExhc3ROb2RlVHlwZToKICAg
ICBjYXNlIEFyaXRoSU11bDoKICAgICBjYXNlIEZpYXRJbnQ1MjoKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIEJvdHRvbVZhbHVlOgorICAgICAgICBERkdf
Q1JBU0gobV9ncmFwaCwgbm9kZSwgIlVuZXhwZWN0ZWQgbm9kZSB0eXBlIik7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFj
a3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTcy
ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlv
blBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzg5LDYgKzM4OSwxMSBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIC8vIHRoZW4gLTAgYW5kIDAgYXJlIHRyZWF0ZWQgdGhlIHNhbWUuCiAg
ICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCktPm1lcmdlRmxhZ3MoTm9kZUJ5dGVjb2RlVXNl
c0FzTnVtYmVyIHwgTm9kZUJ5dGVjb2RlVXNlc0FzT3RoZXIpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBTd2l0Y2hDZWxsOgorICAgICAgICAgICAgICAgIC8vIFRo
ZXJlIGlzIGN1cnJlbnRseSBubyBwb2ludCB0byBiZWluZyBjbGV2ZXIgaGVyZSBzaW5jZSB0aGlz
IGlzIHVzZWQgZm9yIHN3aXRjaGluZworICAgICAgICAgICAgICAgIC8vIG9uIG9iamVjdHMuCisg
ICAgICAgICAgICAgICAgbWVyZ2VEZWZhdWx0RmxhZ3Mobm9kZSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwCShyZXZpc2lv
biAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw5IEBAIEJhc2ljQmxvY2s6OkJhc2ljQmxvY2so
CiB7CiB9CiAKLUJhc2ljQmxvY2s6On5CYXNpY0Jsb2NrKCkgeyB9CitCYXNpY0Jsb2NrOjp+QmFz
aWNCbG9jaygpCit7Cit9CiAKIHZvaWQgQmFzaWNCbG9jazo6ZW5zdXJlTG9jYWxzKHVuc2lnbmVk
IG5ld051bUxvY2FscykKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFz
aWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFz
aWNCbG9jay5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jhc2ljQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQCBzdHJ1Y3Qg
QmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgTm9kZSomIG9wZXJhdG9yW10o
c2l6ZV90IGkpIHsgcmV0dXJuIGF0KGkpOyB9CiAgICAgTm9kZSogb3BlcmF0b3JbXShzaXplX3Qg
aSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0KICAgICBOb2RlKiBsYXN0KCkgY29uc3QgeyByZXR1
cm4gYXQoc2l6ZSgpIC0gMSk7IH0KKyAgICBOb2RlKiB0YWtlTGFzdCgpIHsgcmV0dXJuIG1fbm9k
ZXMudGFrZUxhc3QoKTsgfQogICAgIHZvaWQgcmVzaXplKHNpemVfdCBzaXplKSB7IG1fbm9kZXMu
cmVzaXplKHNpemUpOyB9CiAgICAgdm9pZCBncm93KHNpemVfdCBzaXplKSB7IG1fbm9kZXMuZ3Jv
dyhzaXplKTsgfQogICAgIApAQCAtMTA2LDYgKzEwNywxMyBAQCBzdHJ1Y3QgQmFzaWNCbG9jayA6
IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0OwogICAgIAorICAgIHZvaWQgZGlkTGluaygpCisgICAgeworI2lmICFBU1NFUlRf
RElTQUJMRUQKKyAgICAgICAgaXNMaW5rZWQgPSB0cnVlOworI2VuZGlmCisgICAgfQorICAgIAog
ICAgIC8vIFRoaXMgdmFsdWUgaXMgdXNlZCBpbnRlcm5hbGx5IGZvciBibG9jayBsaW5raW5nIGFu
ZCBPU1IgZW50cnkuIEl0IGlzIG1vc3RseSBtZWFuaW5nbGVzcwogICAgIC8vIGZvciBvdGhlciBw
dXJwb3NlcyBkdWUgdG8gaW5saW5pbmcuCiAgICAgdW5zaWduZWQgYnl0ZWNvZGVCZWdpbjsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsOCBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBm
YWxzZTsKKwogY2xhc3MgQ29uc3RhbnRCdWZmZXJLZXkgewogcHVibGljOgogICAgIENvbnN0YW50
QnVmZmVyS2V5KCkKQEAgLTE3OCwxNCArMTgwLDIwIEBAIHByaXZhdGU6CiAgICAgICAgIE5vZGUq
IGNhbGxUYXJnZXQsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBDYWxsTGlua1N0
YXR1cyk7CiAgICAgdm9pZCBoYW5kbGVDYWxsKGludCByZXN1bHQsIE5vZGVUeXBlIG9wLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUsIGludCBjYWxsZWUs
IGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0KTsKICAgICB2b2lkIGhhbmRsZUNhbGwo
SW5zdHJ1Y3Rpb24qIHBjLCBOb2RlVHlwZSBvcCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7Ci0g
ICAgdm9pZCBlbWl0RnVuY3Rpb25DaGVja3MoY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBOb2RlKiBj
YWxsVGFyZ2V0LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwor
ICAgIHZvaWQgZW1pdEZ1bmN0aW9uQ2hlY2tzKENhbGxWYXJpYW50LCBOb2RlKiBjYWxsVGFyZ2V0
LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOworICAgIHZvaWQg
dW5kb0Z1bmN0aW9uQ2hlY2tzKENhbGxWYXJpYW50KTsKICAgICB2b2lkIGVtaXRBcmd1bWVudFBo
YW50b21zKGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICB1bnNpZ25lZCBpbmxpbmluZ0Nvc3QoQ2Fs
bFZhcmlhbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCk7IC8vIFJldHVybiBVSU5UX01BWCBpZiBpdCdzIG5vdCBhbiBpbmxpbmluZyBjYW5k
aWRhdGUuIEJ5IGNvbnZlbnRpb24sIGludHJpbnNpY3MgaGF2ZSBhIGNvc3Qgb2YgMS4KICAgICAv
LyBIYW5kbGUgaW5saW5pbmcuIFJldHVybiB0cnVlIGlmIGl0IHN1Y2NlZWRlZCwgZmFsc2UgaWYg
d2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCi0gICAgYm9vbCBoYW5kbGVJbmxpbmluZyhOb2RlKiBj
YWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwg
aW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2ln
bmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2luZCk7CisgICAgYm9vbCBoYW5kbGVJ
bmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IENh
bGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2Fs
bEZyYW1lOjpLaW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKKyAgICBlbnVtIENhbGxl
ckxpbmthYmlsaXR5IHsgQ2FsbGVyRG9lc05vcm1hbExpbmtpbmcsIENhbGxlckxpbmtzTWFudWFs
bHkgfTsKKyAgICBib29sIGF0dGVtcHRUb0lubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUs
IGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNh
bGxGcmFtZTo6S2luZCwgQ2FsbGVyTGlua2FiaWxpdHksIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rp
b24sIHVuc2lnbmVkJiBpbmxpbmluZ0JhbGFuY2UpOworICAgIHZvaWQgaW5saW5lQ2FsbChOb2Rl
KiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENhbGxWYXJpYW50LCBpbnQgcmVn
aXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4
dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBDYWxsZXJMaW5rYWJpbGl0eSk7CisgICAg
dm9pZCBjYW5jZWxMaW5raW5nRm9yQmxvY2soSW5saW5lU3RhY2tFbnRyeSosIEJhc2ljQmxvY2sq
KTsgLy8gT25seSB3b3JrcyB3aGVuIHRoZSBnaXZlbiBibG9jayBpcyB0aGUgbGFzdCBvbmUgdG8g
aGF2ZSBiZWVuIGFkZGVkIGZvciB0aGF0IGlubGluZSBzdGFjayBlbnRyeS4KICAgICAvLyBIYW5k
bGUgaW50cmluc2ljIGZ1bmN0aW9ucy4gUmV0dXJuIHRydWUgaWYgaXQgc3VjY2VlZGVkLCBmYWxz
ZSBpZiB3ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4KICAgICBib29sIGhhbmRsZUludHJpbnNpYyhp
bnQgcmVzdWx0T3BlcmFuZCwgSW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CiAgICAg
Ym9vbCBoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IoaW50IHJlc3VsdE9wZXJhbmQsIEludGVy
bmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgVHlwZWRBcnJheVR5cGUpOwotICAgIGJvb2wgaGFuZGxlQ29uc3RhbnRJbnRlcm5h
bEZ1bmN0aW9uKGludCByZXN1bHRPcGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lz
dGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBl
IHByZWRpY3Rpb24sIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOworICAgIGJvb2wgaGFuZGxlQ29u
c3RhbnRJbnRlcm5hbEZ1bmN0aW9uKGludCByZXN1bHRPcGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9u
KiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQpOwogICAgIE5vZGUqIGhhbmRsZVB1dEJ5T2Zmc2V0KE5vZGUq
IGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBOb2RlKiB2YWx1ZSk7
CiAgICAgTm9kZSogaGFuZGxlR2V0QnlPZmZzZXQoU3BlY3VsYXRlZFR5cGUsIE5vZGUqIGJhc2Us
IGNvbnN0IFN0cnVjdHVyZVNldCYsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFByb3BlcnR5
T2Zmc2V0LCBOb2RlVHlwZSBvcCA9IEdldEJ5T2Zmc2V0KTsKICAgICB2b2lkIGhhbmRsZUdldEJ5
SWQoCkBAIC0yMDAsOCArMjA4LDkgQEAgcHJpdmF0ZToKIAogICAgIE5vZGUqIGdldFNjb3BlKHVu
c2lnbmVkIHNraXBDb3VudCk7CiAgICAgCi0gICAgLy8gUHJlcGFyZSB0byBwYXJzZSBhIGJsb2Nr
LgogICAgIHZvaWQgcHJlcGFyZVRvUGFyc2VCbG9jaygpOworICAgIHZvaWQgY2xlYXJDYWNoZXMo
KTsKKwogICAgIC8vIFBhcnNlIGEgc2luZ2xlIGJhc2ljIGJsb2NrIG9mIGJ5dGVjb2RlIGluc3Ry
dWN0aW9ucy4KICAgICBib29sIHBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpOwogICAgIC8vIExp
bmsgYmxvY2sgc3VjY2Vzc29ycy4KQEAgLTI5Niw2ICszMDUsMTMgQEAgcHJpdmF0ZToKICAgICAg
ICAgCiAgICAgICAgIHJldHVybiBkZWxheWVkLmV4ZWN1dGUodGhpcywgc2V0TW9kZSk7CiAgICAg
fQorICAgIAorICAgIHZvaWQgcHJvY2Vzc1NldExvY2FsUXVldWUoKQorICAgIHsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2V0TG9jYWxRdWV1ZS5zaXplKCk7ICsraSkKKyAg
ICAgICAgICAgIG1fc2V0TG9jYWxRdWV1ZVtpXS5leGVjdXRlKHRoaXMpOworICAgICAgICBtX3Nl
dExvY2FsUXVldWUucmVzaXplKDApOworICAgIH0KIAogICAgIE5vZGUqIHNldChWaXJ0dWFsUmVn
aXN0ZXIgb3BlcmFuZCwgTm9kZSogdmFsdWUsIFNldE1vZGUgc2V0TW9kZSA9IE5vcm1hbFNldCkK
ICAgICB7CkBAIC02MzcsNiArNjUzLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KKyAgICAKKyAgICB2b2lkIHJlbW92ZUxhc3ROb2RlRnJvbUdy
YXBoKE5vZGVUeXBlIGV4cGVjdGVkTm9kZVR5cGUpCisgICAgeworICAgICAgICBOb2RlKiBub2Rl
ID0gbV9jdXJyZW50QmxvY2stPnRha2VMYXN0KCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG5v
ZGUtPm9wKCkgPT0gZXhwZWN0ZWROb2RlVHlwZSk7CisgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0
b3IuZnJlZShub2RlKTsKKyAgICB9CiAKICAgICB2b2lkIGFkZFZhckFyZ0NoaWxkKE5vZGUqIGNo
aWxkKQogICAgIHsKQEAgLTY0NSw3ICs2NjgsNyBAQCBwcml2YXRlOgogICAgIH0KICAgICAKICAg
ICBOb2RlKiBhZGRDYWxsV2l0aG91dFNldHRpbmdSZXN1bHQoCi0gICAgICAgIE5vZGVUeXBlIG9w
LCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAorICAgICAg
ICBOb2RlVHlwZSBvcCwgT3BJbmZvIG9wSW5mbywgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQs
IGludCByZWdpc3Rlck9mZnNldCwKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikK
ICAgICB7CiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGNhbGxlZSk7CkBAIC02NTcsMTUgKzY4MCwx
NSBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKGludCBpID0gMCArIGR1bW15VGhpc0FyZ3VtZW50
OyBpIDwgYXJnQ291bnQ7ICsraSkKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldCh2aXJ0
dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpLCByZWdpc3Rlck9mZnNldCkpKTsKIAotICAgICAgICBy
ZXR1cm4gYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIG9wLCBPcEluZm8oMCksIE9wSW5mbyhwcmVk
aWN0aW9uKSk7CisgICAgICAgIHJldHVybiBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgb3AsIG9w
SW5mbywgT3BJbmZvKHByZWRpY3Rpb24pKTsKICAgICB9CiAgICAgCiAgICAgTm9kZSogYWRkQ2Fs
bCgKLSAgICAgICAgaW50IHJlc3VsdCwgTm9kZVR5cGUgb3AsIE5vZGUqIGNhbGxlZSwgaW50IGFy
Z0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgICAgIGludCByZXN1bHQsIE5vZGVUeXBl
IG9wLCBPcEluZm8gb3BJbmZvLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lz
dGVyT2Zmc2V0LAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogICAgIHsKICAg
ICAgICAgTm9kZSogY2FsbCA9IGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdCgKLSAgICAgICAg
ICAgIG9wLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7Cisg
ICAgICAgICAgICBvcCwgb3BJbmZvLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCwg
cHJlZGljdGlvbik7CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHRSZWcocmVzdWx0KTsK
ICAgICAgICAgaWYgKHJlc3VsdFJlZy5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBzZXQoVmlydHVh
bFJlZ2lzdGVyKHJlc3VsdCksIGNhbGwpOwpAQCAtODcxLDggKzg5NCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIFZlY3RvcjxVbmxpbmtlZEJsb2NrPiBtX3VubGlua2VkQmxvY2tzOwogICAgICAgICAK
ICAgICAgICAgLy8gUG90ZW50aWFsIGJsb2NrIGxpbmtpbmcgdGFyZ2V0cy4gTXVzdCBiZSBzb3J0
ZWQgYnkgYnl0ZWNvZGVCZWdpbiwgYW5kCi0gICAgICAgIC8vIGNhbm5vdCBoYXZlIHR3byBibG9j
a3MgdGhhdCBoYXZlIHRoZSBzYW1lIGJ5dGVjb2RlQmVnaW4uIEZvciB0aGlzIHZlcnkKLSAgICAg
ICAgLy8gcmVhc29uLCB0aGlzIGlzIG5vdCBlcXVpdmFsZW50IHRvIAorICAgICAgICAvLyBjYW5u
b3QgaGF2ZSB0d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRlY29kZUJlZ2luLgogICAg
ICAgICBWZWN0b3I8QmFzaWNCbG9jayo+IG1fYmxvY2tMaW5raW5nVGFyZ2V0czsKICAgICAgICAg
CiAgICAgICAgIC8vIElmIHRoZSBjYWxsc2l0ZSdzIGJhc2ljIGJsb2NrIHdhcyBzcGxpdCBpbnRv
IHR3bywgdGhlbiB0aGlzIHdpbGwgYmUKQEAgLTEwMjgsNTMgKzEwNTAsMjcgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlQ2FsbCgKICAgICAgICAgLy8gT2RkbHksIHRoaXMgY29uZmxhdGVz
IGNhbGxzIHRoYXQgaGF2ZW4ndCBleGVjdXRlZCB3aXRoIGNhbGxzIHRoYXQgYmVoYXZlZCBzdWZm
aWNpZW50bHkgcG9seW1vcnBoaWNhbGx5CiAgICAgICAgIC8vIHRoYXQgd2UgY2Fubm90IG9wdGlt
aXplIHRoZW0uCiAgICAgICAgIAotICAgICAgICBhZGRDYWxsKHJlc3VsdCwgb3AsIGNhbGxUYXJn
ZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlv
bik7CisgICAgICAgIGFkZENhbGwocmVzdWx0LCBvcCwgT3BJbmZvKCksIGNhbGxUYXJnZXQsIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgbmV4dE9mZnNldCA9IG1f
Y3VycmVudEluZGV4ICsgaW5zdHJ1Y3Rpb25TaXplOworICAgIAorICAgIE9wSW5mbyBjYWxsT3BJ
bmZvOwogCi0gICAgaWYgKEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbExpbmtTdGF0
dXMuaW50ZXJuYWxGdW5jdGlvbigpKSB7Ci0gICAgICAgIGlmIChoYW5kbGVDb25zdGFudEludGVy
bmFsRnVuY3Rpb24ocmVzdWx0LCBmdW5jdGlvbiwgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCBwcmVkaWN0aW9uLCBzcGVjaWFsaXphdGlvbktpbmQpKSB7Ci0gICAg
ICAgICAgICAvLyBUaGlzIHBoYW50b21pbmcgaGFzIHRvIGJlICphZnRlciogdGhlIGNvZGUgZm9y
IHRoZSBpbnRyaW5zaWMsIHRvIHNpZ25pZnkgdGhhdAotICAgICAgICAgICAgLy8gdGhlIGlucHV0
cyBtdXN0IGJlIGtlcHQgYWxpdmUgd2hhdGV2ZXIgZXhpdHMgdGhlIGludHJpbnNpYyBtYXkgZG8u
Ci0gICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXQpOwotICAgICAgICAg
ICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBDYW4gb25seSBoYW5kbGUgdGhpcyB1c2luZyB0
aGUgZ2VuZXJpYyBjYWxsIGhhbmRsZXIuCi0gICAgICAgIGFkZENhbGwocmVzdWx0LCBvcCwgY2Fs
bFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVk
aWN0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAgICAgCi0gICAgSW50cmluc2lj
IGludHJpbnNpYyA9IGNhbGxMaW5rU3RhdHVzLmludHJpbnNpY0ZvcihzcGVjaWFsaXphdGlvbktp
bmQpOwotCi0gICAgSlNGdW5jdGlvbioga25vd25GdW5jdGlvbiA9IG51bGxwdHI7Ci0gICAgaWYg
KGludHJpbnNpYyAhPSBOb0ludHJpbnNpYykgewotICAgICAgICBlbWl0RnVuY3Rpb25DaGVja3Mo
Y2FsbExpbmtTdGF0dXMsIGNhbGxUYXJnZXQsIHJlZ2lzdGVyT2Zmc2V0LCBzcGVjaWFsaXphdGlv
bktpbmQpOwotICAgICAgICAgICAgCi0gICAgICAgIGlmIChoYW5kbGVJbnRyaW5zaWMocmVzdWx0
LCBpbnRyaW5zaWMsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
cHJlZGljdGlvbikpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgcGhhbnRvbWluZyBoYXMgdG8gYmUg
KmFmdGVyKiB0aGUgY29kZSBmb3IgdGhlIGludHJpbnNpYywgdG8gc2lnbmlmeSB0aGF0Ci0gICAg
ICAgICAgICAvLyB0aGUgaW5wdXRzIG11c3QgYmUga2VwdCBhbGl2ZSB3aGF0ZXZlciBleGl0cyB0
aGUgaW50cmluc2ljIG1heSBkby4KLSAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2Fs
bFRhcmdldCk7Ci0gICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNl
dCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7Ci0gICAg
ICAgICAgICBpZiAobV9ncmFwaC5jb21waWxhdGlvbigpKQotICAgICAgICAgICAgICAgIG1fZ3Jh
cGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZENhbGwoKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoaGFuZGxlSW5saW5pbmcoY2FsbFRhcmdldCwg
cmVzdWx0LCBjYWxsTGlua1N0YXR1cywgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBuZXh0T2Zmc2V0LCBraW5kKSkgeworICAgIGlmIChoYW5kbGVJbmxpbmluZyhj
YWxsVGFyZ2V0LCByZXN1bHQsIGNhbGxMaW5rU3RhdHVzLCByZWdpc3Rlck9mZnNldCwgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQsIG9wLCBraW5kLCBwcmVkaWN0aW9uKSkg
ewogICAgICAgICBpZiAobV9ncmFwaC5jb21waWxhdGlvbigpKQogICAgICAgICAgICAgbV9ncmFw
aC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkQ2FsbCgpOwogICAgICAgICByZXR1cm47CiAj
aWYgRU5BQkxFKEZUTF9OQVRJVkVfQ0FMTF9JTkxJTklORykKLSAgICB9IGVsc2UgaWYgKGlzRlRM
KG1fZ3JhcGgubV9wbGFuLm1vZGUpICYmIE9wdGlvbnM6Om9wdGltaXplTmF0aXZlQ2FsbHMoKSkg
ewotICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxMaW5rU3RhdHVzLmZ1bmN0aW9u
KCk7CisgICAgfSBlbHNlIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSAmJiBPcHRpb25z
OjpvcHRpbWl6ZU5hdGl2ZUNhbGxzKCkgJiYgY2FsbExpbmtTdGF0dXMuc2l6ZSgpID09IDEgJiYg
IWNhbGxMaW5rU3RhdHVzLmNvdWxkVGFrZVNsb3dQYXRoKCkpIHsKKyAgICAgICAgQ2FsbFZhcmlh
bnQgY2FsbGVlID0gY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVlKCk7CisgICAgICAgIEpTRnVuY3Rp
b24qIGZ1bmN0aW9uID0gY2FsbGVlLmZ1bmN0aW9uKCk7CiAgICAgICAgIGlmIChmdW5jdGlvbiAm
JiBmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSkgewotICAgICAgICAgICAgZW1pdEZ1bmN0aW9u
Q2hlY2tzKGNhbGxMaW5rU3RhdHVzLCBjYWxsVGFyZ2V0LCByZWdpc3Rlck9mZnNldCwgc3BlY2lh
bGl6YXRpb25LaW5kKTsKLSAgICAgICAgICAgIGtub3duRnVuY3Rpb24gPSBmdW5jdGlvbjsKKyAg
ICAgICAgICAgIGVtaXRGdW5jdGlvbkNoZWNrcyhjYWxsZWUsIGNhbGxUYXJnZXQsIHJlZ2lzdGVy
T2Zmc2V0LCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgICAgICAgICAgY2FsbE9wSW5mbyA9IE9w
SW5mbyhtX2dyYXBoLmZyZWV6ZShmdW5jdGlvbikpOwogCi0gICAgICAgICAgICBpZiAob3AgPT0g
Q2FsbCkgCisgICAgICAgICAgICBpZiAob3AgPT0gQ2FsbCkKICAgICAgICAgICAgICAgICBvcCA9
IE5hdGl2ZUNhbGw7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQo
b3AgPT0gQ29uc3RydWN0KTsKQEAgLTEwODMsMTMgKzEwNzksMTEgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlQ2FsbCgKICAgICAgICAgfQogI2VuZGlmCiAgICAgfQotICAgIE5vZGUqIGNh
bGwgPSBhZGRDYWxsKHJlc3VsdCwgb3AsIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7Ci0KLSAgICBpZiAoa25vd25GdW5j
dGlvbikgCi0gICAgICAgIGNhbGwtPmdpdmVLbm93bkZ1bmN0aW9uKGtub3duRnVuY3Rpb24pOwor
ICAgIAorICAgIGFkZENhbGwocmVzdWx0LCBvcCwgY2FsbE9wSW5mbywgY2FsbFRhcmdldCwgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKIH0K
IAotdm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdEZ1bmN0aW9uQ2hlY2tzKGNvbnN0IENhbGxMaW5r
U3RhdHVzJiBjYWxsTGlua1N0YXR1cywgTm9kZSogY2FsbFRhcmdldCwgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpl
bWl0RnVuY3Rpb25DaGVja3MoQ2FsbFZhcmlhbnQgY2FsbGVlLCBOb2RlKiBjYWxsVGFyZ2V0LCBp
bnQgcmVnaXN0ZXJPZmZzZXQsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICBO
b2RlKiB0aGlzQXJndW1lbnQ7CiAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpCkBAIC0xMDk3
LDIwICsxMDkxLDI1IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRGdW5jdGlvbkNoZWNrcygK
ICAgICBlbHNlCiAgICAgICAgIHRoaXNBcmd1bWVudCA9IDA7CiAKLSAgICBpZiAoY2FsbExpbmtT
dGF0dXMuaXNQcm92ZWQoKSkgewotICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJn
ZXQsIHRoaXNBcmd1bWVudCk7Ci0gICAgICAgIHJldHVybjsKKyAgICBKU0NlbGwqIGNhbGxlZUNl
bGw7CisgICAgTm9kZSogY2FsbFRhcmdldEZvckNoZWNrOworICAgIGlmIChjYWxsZWUuaXNDbG9z
dXJlQ2FsbCgpKSB7CisgICAgICAgIGNhbGxlZUNlbGwgPSBjYWxsZWUuZXhlY3V0YWJsZSgpOwor
ICAgICAgICBjYWxsVGFyZ2V0Rm9yQ2hlY2sgPSBhZGRUb0dyYXBoKEdldEV4ZWN1dGFibGUsIGNh
bGxUYXJnZXQpOworICAgIH0gZWxzZSB7CisgICAgICAgIGNhbGxlZUNlbGwgPSBjYWxsZWUubm9u
RXhlY3V0YWJsZUNhbGxlZSgpOworICAgICAgICBjYWxsVGFyZ2V0Rm9yQ2hlY2sgPSBjYWxsVGFy
Z2V0OwogICAgIH0KICAgICAKLSAgICBBU1NFUlQoY2FsbExpbmtTdGF0dXMuY2FuT3B0aW1pemUo
KSk7Ci0gICAgCi0gICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbExpbmtTdGF0dXMu
ZnVuY3Rpb24oKSkKLSAgICAgICAgYWRkVG9HcmFwaChDaGVja0Z1bmN0aW9uLCBPcEluZm8obV9n
cmFwaC5mcmVlemUoZnVuY3Rpb24pKSwgY2FsbFRhcmdldCwgdGhpc0FyZ3VtZW50KTsKLSAgICBl
bHNlIHsKLSAgICAgICAgQVNTRVJUKGNhbGxMaW5rU3RhdHVzLmV4ZWN1dGFibGUoKSk7Ci0gICAg
ICAgIAotICAgICAgICBhZGRUb0dyYXBoKENoZWNrRXhlY3V0YWJsZSwgT3BJbmZvKGNhbGxMaW5r
U3RhdHVzLmV4ZWN1dGFibGUoKSksIGNhbGxUYXJnZXQsIHRoaXNBcmd1bWVudCk7Ci0gICAgfQor
ICAgIEFTU0VSVChjYWxsZWVDZWxsKTsKKyAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZv
KG1fZ3JhcGguZnJlZXplKGNhbGxlZUNlbGwpKSwgY2FsbFRhcmdldEZvckNoZWNrLCB0aGlzQXJn
dW1lbnQpOworfQorCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjp1bmRvRnVuY3Rpb25DaGVja3MoQ2Fs
bFZhcmlhbnQgY2FsbGVlKQoreworICAgIHJlbW92ZUxhc3ROb2RlRnJvbUdyYXBoKENoZWNrQ2Vs
bCk7CisgICAgaWYgKGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpCisgICAgICAgIHJlbW92ZUxhc3RO
b2RlRnJvbUdyYXBoKEdldEV4ZWN1dGFibGUpOwogfQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpl
bWl0QXJndW1lbnRQaGFudG9tcyhpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpAQCAtMTExOSwzNiAr
MTExOCwyNSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0QXJndW1lbnRQaGFudG9tCiAgICAg
ICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGks
IHJlZ2lzdGVyT2Zmc2V0KSkpOwogfQogCi1ib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxp
bmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IENhbGxM
aW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFt
ZTo6S2luZCBraW5kKQordW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxs
VmFyaWFudCBjYWxsZWUsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kKQogewotICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBm
YWxzZTsKLSAgICAKLSAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2lu
ZCA9IElubGluZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOwotICAgIAog
ICAgIGlmICh2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyBpbmxpbmluZyAi
LCBjYWxsTGlua1N0YXR1cywgIiBpbnRvICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOwor
ICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyBpbmxpbmluZyAiLCBjYWxsZWUsICIgaW50byAi
LCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKICAgICAKLSAgICAvLyBGaXJzdCwgdGhlIHJl
YWxseSBzaW1wbGUgY2hlY2tzOiBkbyB3ZSBoYXZlIGFuIGFjdHVhbCBKUyBmdW5jdGlvbj8KLSAg
ICBpZiAoIWNhbGxMaW5rU3RhdHVzLmV4ZWN1dGFibGUoKSkgeworICAgIEZ1bmN0aW9uRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS5mdW5jdGlvbkV4ZWN1dGFibGUoKTsKKyAgICBpZiAo
IWV4ZWN1dGFibGUpIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAgICBkYXRhTG9n
KCIgICAgRmFpbGluZyBiZWNhdXNlIHRoZXJlIGlzIG5vIGV4ZWN1dGFibGUuXG4iKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBpZiAoY2FsbExpbmtTdGF0dXMuZXhlY3V0YWJs
ZSgpLT5pc0hvc3RGdW5jdGlvbigpKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAg
ICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSBpdCdzIGEgaG9zdCBmdW5jdGlvbi5cbiIp
OwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGlu
ZyBiZWNhdXNlIHRoZXJlIGlzIG5vIGZ1bmN0aW9uIGV4ZWN1dGFibGUuIik7CisgICAgICAgIHJl
dHVybiBVSU5UX01BWDsKICAgICB9CiAgICAgCi0gICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVj
dXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNhbGxMaW5rU3RhdHVzLmV4ZWN1
dGFibGUoKSk7Ci0gICAgCiAgICAgLy8gRG9lcyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyB3ZSdy
ZSBwYXNzaW5nIG1hdGNoIHRoZSBhcml0eSBvZiB0aGUgdGFyZ2V0PyBXZSBjdXJyZW50bHkKICAg
ICAvLyBpbmxpbmUgb25seSBpZiB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgaXMgZ3Jl
YXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBudW1iZXIKICAgICAvLyBhcmd1bWVudHMgZXhwZWN0
ZWQuCiAgICAgaWYgKHN0YXRpY19jYXN0PGludD4oZXhlY3V0YWJsZS0+cGFyYW1ldGVyQ291bnQo
KSkgKyAxID4gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpIHsKICAgICAgICAgaWYgKHZlcmJv
c2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIG9mIGFyaXR5IG1p
c21hdGNoLlxuIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFVJTlRf
TUFYOwogICAgIH0KICAgICAKICAgICAvLyBEbyB3ZSBoYXZlIGEgY29kZSBibG9jaywgYW5kIGRv
ZXMgdGhlIGNvZGUgYmxvY2sncyBzaXplIG1hdGNoIHRoZSBoZXVyaXN0aWNzL3JlcXVpcmVtZW50
cyBmb3IKQEAgLTExNTcsMTggKzExNDUsMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW5saW5pbmcoTm9kZQogICAgIC8vIGlmIHdlIGhhZCBhIHN0YXRpYyBwcm9vZiBvZiB3aGF0IHdh
cyBiZWluZyBjYWxsZWQ7IHRoaXMgbWlnaHQgaGFwcGVuIGZvciBleGFtcGxlIGlmIHlvdSBjYWxs
IGEKICAgICAvLyBnbG9iYWwgZnVuY3Rpb24sIHdoZXJlIHdhdGNocG9pbnRpbmcgZ2l2ZXMgdXMg
c3RhdGljIGluZm9ybWF0aW9uLiBPdmVyYWxsLCBpdCdzIGEgcmFyZSBjYXNlCiAgICAgLy8gYmVj
YXVzZSB3ZSBleHBlY3QgdGhhdCBhbnkgaG90IGNhbGxlZXMgd291bGQgaGF2ZSBhbHJlYWR5IGJl
ZW4gY29tcGlsZWQuCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5iYXNl
bGluZUNvZGVCbG9ja0ZvcihzcGVjaWFsaXphdGlvbktpbmQpOworICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gZXhlY3V0YWJsZS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Ioa2luZCk7CiAgICAgaWYg
KCFjb2RlQmxvY2spIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9n
KCIgICAgRmFpbGluZyBiZWNhdXNlIG5vIGNvZGUgYmxvY2sgYXZhaWxhYmxlLlxuIik7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgIH0KICAgICBD
YXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsID0gaW5saW5lRnVuY3Rpb25Gb3JDYXBhYmls
aXR5TGV2ZWwoCi0gICAgICAgIGNvZGVCbG9jaywgc3BlY2lhbGl6YXRpb25LaW5kLCBjYWxsTGlu
a1N0YXR1cy5pc0Nsb3N1cmVDYWxsKCkpOworICAgICAgICBjb2RlQmxvY2ssIGtpbmQsIGNhbGxl
ZS5pc0Nsb3N1cmVDYWxsKCkpOwogICAgIGlmICghY2FuSW5saW5lKGNhcGFiaWxpdHlMZXZlbCkp
IHsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGlu
ZyBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpcyBub3QgaW5saW5lYWJsZS5cbiIpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CiAgICAgCiAgICAg
Ly8gQ2hlY2sgaWYgdGhlIGNhbGxlciBpcyBhbHJlYWR5IHRvbyBsYXJnZS4gV2UgZG8gdGhpcyBj
aGVjayBoZXJlIGJlY2F1c2UgdGhhdCdzIGp1c3QKQEAgLTExNzgsNyArMTE2Niw3IEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAgICAgY29kZUJsb2NrLT5t
X3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNlOwogICAgICAgICBpZiAodmVyYm9zZSkKICAg
ICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgdGhlIGNhbGxlciBpcyB0b28g
bGFyZ2UuXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gVUlOVF9N
QVg7CiAgICAgfQogICAgIAogICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBiZXR0ZXIgYXQg
cHJlZGljdGluZyBob3cgbXVjaCBibG9hdCB3ZSB3aWxsIGludHJvZHVjZSBieSBpbmxpbmluZwpA
QCAtMTE5Nyw3ICsxMTg1LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmco
Tm9kZQogICAgICAgICBpZiAoZGVwdGggPj0gT3B0aW9uczo6bWF4aW11bUlubGluaW5nRGVwdGgo
KSkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygi
ICAgIEZhaWxpbmcgYmVjYXVzZSBkZXB0aCBleGNlZWRlZC5cbiIpOwotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICBpZiAoZW50cnktPmV4ZWN1dGFibGUoKSA9PSBleGVjdXRhYmxlKSB7CkBA
IC0xMjA1LDE5ICsxMTkzLDI2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5n
KE5vZGUKICAgICAgICAgICAgIGlmIChyZWN1cnNpb24gPj0gT3B0aW9uczo6bWF4aW11bUlubGlu
aW5nUmVjdXJzaW9uKCkpIHsKICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSByZWN1cnNpb24gZGV0ZWN0
ZWQuXG4iKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
cmV0dXJuIFVJTlRfTUFYOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIAog
ICAgIGlmICh2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKCIgICAgQ29tbWl0dGluZyB0byBpbmxp
bmluZy5cbiIpOworICAgICAgICBkYXRhTG9nKCIgICAgSW5saW5pbmcgc2hvdWxkIGJlIHBvc3Np
YmxlLlxuIik7CiAgICAgCi0gICAgLy8gTm93IHdlIGtub3cgd2l0aG91dCBhIGRvdWJ0IHRoYXQg
d2UgYXJlIGNvbW1pdHRlZCB0byBpbmxpbmluZy4gU28gYmVnaW4gdGhlIHByb2Nlc3MKLSAgICAv
LyBieSBjaGVja2luZyB0aGUgY2FsbGVlIChpZiBuZWNlc3NhcnkpIGFuZCBtYWtpbmcgc3VyZSB0
aGF0IGFyZ3VtZW50cyBhbmQgdGhlIGNhbGxlZQotICAgIC8vIGFyZSBmbHVzaGVkLgotICAgIGVt
aXRGdW5jdGlvbkNoZWNrcyhjYWxsTGlua1N0YXR1cywgY2FsbFRhcmdldE5vZGUsIHJlZ2lzdGVy
T2Zmc2V0LCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgIC8vIEl0IG1pZ2h0IGJlIHBvc3NpYmxl
IHRvIGlubGluZS4KKyAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCk7Cit9
CisKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUs
IGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyaWFudCBjYWxsZWUsIGludCByZWdpc3Rlck9mZnNl
dCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBJ
bmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgQ2FsbGVyTGlua2FiaWxpdHkgY2FsbGVyTGlua2Fi
aWxpdHkpCit7CisgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQg
PSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5kKTsKICAgICAKKyAg
ICBBU1NFUlQoaW5saW5pbmdDb3N0KGNhbGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IHNwZWNpYWxpemF0aW9uS2luZCkgIT0gVUlOVF9NQVgpOworICAgIAorICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gY2FsbGVlLmZ1bmN0aW9uRXhlY3V0YWJsZSgpLT5iYXNlbGluZUNvZGVCbG9j
a0ZvcihzcGVjaWFsaXphdGlvbktpbmQpOworCiAgICAgLy8gRklYTUU6IERvbid0IGZsdXNoIGNv
bnN0YW50cyEKICAgICAKICAgICBpbnQgaW5saW5lQ2FsbEZyYW1lU3RhcnQgPSBtX2lubGluZVN0
YWNrVG9wLT5yZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0KSkub2Zm
c2V0KCkgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOwpAQCAtMTIzMyw3ICsxMjI4LDcg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgICAgICByZXN1
bHRSZWcgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQocmVzdWx0UmVnKTsKICAgICAK
ICAgICBJbmxpbmVTdGFja0VudHJ5IGlubGluZVN0YWNrRW50cnkoCi0gICAgICAgIHRoaXMsIGNv
ZGVCbG9jaywgY29kZUJsb2NrLCBtX2dyYXBoLmxhc3RCbG9jaygpLCBjYWxsTGlua1N0YXR1cy5m
dW5jdGlvbigpLCByZXN1bHRSZWcsCisgICAgICAgIHRoaXMsIGNvZGVCbG9jaywgY29kZUJsb2Nr
LCBtX2dyYXBoLmxhc3RCbG9jaygpLCBjYWxsZWUuZnVuY3Rpb24oKSwgcmVzdWx0UmVnLAogICAg
ICAgICAoVmlydHVhbFJlZ2lzdGVyKWlubGluZUNhbGxGcmFtZVN0YXJ0LCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywga2luZCk7CiAgICAgCiAgICAgLy8gVGhpcyBpcyB3aGVyZSB0aGUgYWN0
dWFsIGlubGluaW5nIHJlYWxseSBoYXBwZW5zLgpAQCAtMTI0Nyw4ICsxMjQyLDggQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgIAogICAgIFJFTEVBU0VfQVNT
RVJUKAogICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxGcmFtZS0+aXNDbG9z
dXJlQ2FsbAotICAgICAgICA9PSBjYWxsTGlua1N0YXR1cy5pc0Nsb3N1cmVDYWxsKCkpOwotICAg
IGlmIChjYWxsTGlua1N0YXR1cy5pc0Nsb3N1cmVDYWxsKCkpIHsKKyAgICAgICAgPT0gY2FsbGVl
LmlzQ2xvc3VyZUNhbGwoKSk7CisgICAgaWYgKGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpIHsKICAg
ICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBjYWxsZWVWYXJpYWJsZSA9CiAgICAgICAgICAgICBz
ZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkNhbGxlZSksIGNhbGxUYXJnZXROb2RlLCBJbW1l
ZGlhdGVOYWtlZFNldCktPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwogICAgICAgICBWYXJpYWJsZUFj
Y2Vzc0RhdGEqIHNjb3BlVmFyaWFibGUgPQpAQCAtMTI2Myw3ICsxMjU4LDcgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgIG1fZ3JhcGgubV9pbmxpbmVWYXJp
YWJsZURhdGEuYXBwZW5kKGlubGluZVZhcmlhYmxlRGF0YSk7CiAgICAgCiAgICAgcGFyc2VDb2Rl
QmxvY2soKTsKLSAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7IC8vIFJlc2V0IG91ciBzdGF0ZSBu
b3cgdGhhdCB3ZSdyZSBiYWNrIHRvIHRoZSBvdXRlciBjb2RlLgorICAgIGNsZWFyQ2FjaGVzKCk7
IC8vIFJlc2V0IG91ciBzdGF0ZSBub3cgdGhhdCB3ZSdyZSBiYWNrIHRvIHRoZSBvdXRlciBjb2Rl
LgogICAgIAogICAgIG1fY3VycmVudEluZGV4ID0gb2xkSW5kZXg7CiAgICAgCkBAIC0xMjc2LDIw
ICsxMjcxLDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxzaXRl
QmxvY2tIZWFkLT5pc0xpbmtlZCk7CiAgICAgICAgIAotICAgICAgICAvLyBJdCdzIHBvc3NpYmxl
IHRoYXQgdGhlIGNhbGxzaXRlIGJsb2NrIGhlYWQgaXMgbm90IG93bmVkIGJ5IHRoZSBjYWxsZXIu
Ci0gICAgICAgIGlmICghaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nr
cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIC8vIEl0J3MgZGVmaW5pdGVseSBvd25lZCBieSB0
aGUgY2FsbGVyLCBiZWNhdXNlIHRoZSBjYWxsZXIgY3JlYXRlZCBuZXcgYmxvY2tzLgotICAgICAg
ICAgICAgLy8gQXNzZXJ0IHRoYXQgdGhpcyBhbGwgYWRkcyB1cC4KLSAgICAgICAgICAgIEFTU0VS
VChpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX2Js
b2NrID09IGlubGluZVN0YWNrRW50cnkubV9jYWxsc2l0ZUJsb2NrSGVhZCk7Ci0gICAgICAgICAg
ICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0
KCkubV9uZWVkc05vcm1hbExpbmtpbmcpOwotICAgICAgICAgICAgaW5saW5lU3RhY2tFbnRyeS5t
X2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9uZWVkc05vcm1hbExpbmtpbmcgPSBm
YWxzZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIEl0J3MgZGVmaW5pdGVseSBu
b3Qgb3duZWQgYnkgdGhlIGNhbGxlci4gVGVsbCB0aGUgY2FsbGVyIHRoYXQgaGUgZG9lcyBub3QK
LSAgICAgICAgICAgIC8vIG5lZWQgdG8gbGluayBoaXMgY2FsbHNpdGUgYmxvY2sgaGVhZCwgYmVj
YXVzZSB3ZSBkaWQgaXQgZm9yIGhpbS4KLSAgICAgICAgICAgIEFTU0VSVChpbmxpbmVTdGFja0Vu
dHJ5Lm1fY2FsbGVyLT5tX2NhbGxzaXRlQmxvY2tIZWFkTmVlZHNMaW5raW5nKTsKLSAgICAgICAg
ICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLT5tX2NhbGxzaXRlQmxvY2tIZWFk
ID09IGlubGluZVN0YWNrRW50cnkubV9jYWxsc2l0ZUJsb2NrSGVhZCk7Ci0gICAgICAgICAgICBp
bmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLT5tX2NhbGxzaXRlQmxvY2tIZWFkTmVlZHNMaW5raW5n
ID0gZmFsc2U7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGNhbGxlckxpbmthYmlsaXR5ID09IENh
bGxlckRvZXNOb3JtYWxMaW5raW5nKQorICAgICAgICAgICAgY2FuY2VsTGlua2luZ0ZvckJsb2Nr
KGlubGluZVN0YWNrRW50cnkubV9jYWxsZXIsIGlubGluZVN0YWNrRW50cnkubV9jYWxsc2l0ZUJs
b2NrSGVhZCk7CiAgICAgICAgIAogICAgICAgICBsaW5rQmxvY2tzKGlubGluZVN0YWNrRW50cnku
bV91bmxpbmtlZEJsb2NrcywgaW5saW5lU3RhY2tFbnRyeS5tX2Jsb2NrTGlua2luZ1RhcmdldHMp
OwogICAgIH0gZWxzZQpAQCAtMTMwOCwxNiArMTI5MSwxOSBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgICAgICAgICAvLyBmb3IgcmVsZWFzZSBidWlsZHMg
YmVjYXVzZSB0aGlzIGJsb2NrIHdpbGwgbmV2ZXIgc2VydmUgYXMgYSBwb3RlbnRpYWwgdGFyZ2V0
CiAgICAgICAgICAgICAvLyBpbiB0aGUgbGlua2VyJ3MgYmluYXJ5IHNlYXJjaC4KICAgICAgICAg
ICAgIGxhc3RCbG9jay0+Ynl0ZWNvZGVCZWdpbiA9IG1fY3VycmVudEluZGV4OwotICAgICAgICAg
ICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVu
bGlua2VkQmxvY2sobV9ncmFwaC5sYXN0QmxvY2soKSkpOworICAgICAgICAgICAgaWYgKGNhbGxl
ckxpbmthYmlsaXR5ID09IENhbGxlckRvZXNOb3JtYWxMaW5raW5nKSB7CisgICAgICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkFkZGluZyB1bmxp
bmtlZCBibG9jayAiLCBSYXdQb2ludGVyKG1fZ3JhcGgubGFzdEJsb2NrKCkpLCAiIChvbmUgcmV0
dXJuKVxuIik7CisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1f
dW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2sobV9ncmFwaC5sYXN0QmxvY2soKSkp
OworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBtX2N1cnJlbnRC
bG9jayA9IG1fZ3JhcGgubGFzdEJsb2NrKCk7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIAogICAgIC8vIElmIHdlIGdldCB0byB0aGlzIHBvaW50IHRo
ZW4gYWxsIGJsb2NrcyBtdXN0IGVuZCBpbiBzb21lIHNvcnQgb2YgdGVybWluYWxzLgogICAgIEFT
U0VSVChsYXN0QmxvY2stPmxhc3QoKS0+aXNUZXJtaW5hbCgpKTsKLSAgICAKIAogICAgIC8vIE5l
ZWQgdG8gY3JlYXRlIGEgbmV3IGJhc2ljIGJsb2NrIGZvciB0aGUgY29udGludWF0aW9uIGF0IHRo
ZSBjYWxsZXIuCiAgICAgUmVmUHRyPEJhc2ljQmxvY2s+IGJsb2NrID0gYWRvcHRSZWYobmV3IEJh
c2ljQmxvY2sobmV4dE9mZnNldCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCBQTmFOKSk7
CkBAIC0xMzMzLDIwICsxMzE5LDI5MyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxp
bmluZyhOb2RlCiAgICAgICAgIEFTU0VSVCghbm9kZS0+dGFyZ2V0QmxvY2soKSk7CiAgICAgICAg
IG5vZGUtPnRhcmdldEJsb2NrKCkgPSBibG9jay5nZXQoKTsKICAgICAgICAgaW5saW5lU3RhY2tF
bnRyeS5tX3VubGlua2VkQmxvY2tzW2ldLm1fbmVlZHNFYXJseVJldHVybkxpbmtpbmcgPSBmYWxz
ZTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgICAgIGJsb2NrVG9MaW5rLT5pc0xpbmtlZCA9
IHRydWU7Ci0jZW5kaWYKKyAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBkYXRhTG9n
KCJNYXJraW5nICIsIFJhd1BvaW50ZXIoYmxvY2tUb0xpbmspLCAiIGFzIGxpbmtlZCAoanVtcHMg
dG8gcmV0dXJuKVxuIik7CisgICAgICAgIGJsb2NrVG9MaW5rLT5kaWRMaW5rKCk7CiAgICAgfQog
ICAgIAogICAgIG1fY3VycmVudEJsb2NrID0gYmxvY2suZ2V0KCk7CiAgICAgQVNTRVJUKG1faW5s
aW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuaXNFbXB0eSgpIHx8
IG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMubGFzdCgp
LT5ieXRlY29kZUJlZ2luIDwgbmV4dE9mZnNldCk7Ci0gICAgbV9pbmxpbmVTdGFja1RvcC0+bV9j
YWxsZXItPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2suZ2V0KCkp
KTsKLSAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRz
LmFwcGVuZChibG9jay5nZXQoKSk7CisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGRhdGFMb2co
IkFkZGluZyB1bmxpbmtlZCBibG9jayAiLCBSYXdQb2ludGVyKGJsb2NrLmdldCgpKSwgIiAobWFu
eSByZXR1cm5zKVxuIik7CisgICAgaWYgKGNhbGxlckxpbmthYmlsaXR5ID09IENhbGxlckRvZXNO
b3JtYWxMaW5raW5nKSB7CisgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX3Vu
bGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLmdldCgpKSk7CisgICAgICAg
IG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuYXBwZW5k
KGJsb2NrLmdldCgpKTsKKyAgICB9CiAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhibG9jayk7CiAg
ICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOworfQorCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpjYW5j
ZWxMaW5raW5nRm9yQmxvY2soSW5saW5lU3RhY2tFbnRyeSogaW5saW5lU3RhY2tFbnRyeSwgQmFz
aWNCbG9jayogYmxvY2spCit7CisgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHRoZSBjYWxsc2l0
ZSBibG9jayBoZWFkIGlzIG5vdCBvd25lZCBieSB0aGUgY2FsbGVyLgorICAgIGlmICghaW5saW5l
U3RhY2tFbnRyeS0+bV91bmxpbmtlZEJsb2Nrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gSXQn
cyBkZWZpbml0ZWx5IG93bmVkIGJ5IHRoZSBjYWxsZXIsIGJlY2F1c2UgdGhlIGNhbGxlciBjcmVh
dGVkIG5ldyBibG9ja3MuCisgICAgICAgIC8vIEFzc2VydCB0aGF0IHRoaXMgYWxsIGFkZHMgdXAu
CisgICAgICAgIEFTU0VSVF9VTlVTRUQoYmxvY2ssIGlubGluZVN0YWNrRW50cnktPm1fdW5saW5r
ZWRCbG9ja3MubGFzdCgpLm1fYmxvY2sgPT0gYmxvY2spOworICAgICAgICBBU1NFUlQoaW5saW5l
U3RhY2tFbnRyeS0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9uZWVkc05vcm1hbExpbmtpbmcp
OworICAgICAgICBpbmxpbmVTdGFja0VudHJ5LT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX25l
ZWRzTm9ybWFsTGlua2luZyA9IGZhbHNlOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEl0J3Mg
ZGVmaW5pdGVseSBub3Qgb3duZWQgYnkgdGhlIGNhbGxlci4gVGVsbCB0aGUgY2FsbGVyIHRoYXQg
aGUgZG9lcyBub3QKKyAgICAgICAgLy8gbmVlZCB0byBsaW5rIGhpcyBjYWxsc2l0ZSBibG9jayBo
ZWFkLCBiZWNhdXNlIHdlIGRpZCBpdCBmb3IgaGltLgorICAgICAgICBBU1NFUlQoaW5saW5lU3Rh
Y2tFbnRyeS0+bV9jYWxsc2l0ZUJsb2NrSGVhZE5lZWRzTGlua2luZyk7CisgICAgICAgIEFTU0VS
VF9VTlVTRUQoYmxvY2ssIGlubGluZVN0YWNrRW50cnktPm1fY2FsbHNpdGVCbG9ja0hlYWQgPT0g
YmxvY2spOworICAgICAgICBpbmxpbmVTdGFja0VudHJ5LT5tX2NhbGxzaXRlQmxvY2tIZWFkTmVl
ZHNMaW5raW5nID0gZmFsc2U7CisgICAgfQorfQorCitib29sIEJ5dGVDb2RlUGFyc2VyOjphdHRl
bXB0VG9JbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwg
Q2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5k
IGtpbmQsIENhbGxlckxpbmthYmlsaXR5IGNhbGxlckxpbmthYmlsaXR5LCBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWN0aW9uLCB1bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlKQoreworICAgIENvZGVTcGVj
aWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVj
aWFsaXphdGlvbktpbmRGb3Ioa2luZCk7CisgICAgCisgICAgaWYgKCFpbmxpbmluZ0JhbGFuY2Up
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoSW50ZXJuYWxGdW5jdGlvbiog
ZnVuY3Rpb24gPSBjYWxsZWUuaW50ZXJuYWxGdW5jdGlvbigpKSB7CisgICAgICAgIGlmIChoYW5k
bGVDb25zdGFudEludGVybmFsRnVuY3Rpb24ocmVzdWx0T3BlcmFuZCwgZnVuY3Rpb24sIHJlZ2lz
dGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5k
KSkgeworICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0Tm9kZSk7Cisg
ICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgICAgICAgICBpbmxp
bmluZ0JhbGFuY2UtLTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgCi0gICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBy
ZXR1cm4gYW5kIGNvbnRpbnVlIHRvIGdlbmVyYXRlIGNvZGUgZm9yIHRoZSBjYWxsZXIsIGJ1dAot
ICAgIC8vIGluIHRoZSBuZXcgYmFzaWMgYmxvY2suCisgICAgSW50cmluc2ljIGludHJpbnNpYyA9
IGNhbGxlZS5pbnRyaW5zaWNGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICBpZiAoaW50cmlu
c2ljICE9IE5vSW50cmluc2ljKSB7CisgICAgICAgIGlmIChoYW5kbGVJbnRyaW5zaWMocmVzdWx0
T3BlcmFuZCwgaW50cmluc2ljLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIHByZWRpY3Rpb24pKSB7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNh
bGxUYXJnZXROb2RlKTsKKyAgICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVy
T2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kKTsK
KyAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZS0tOworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICB1bnNp
Z25lZCBteUlubGluaW5nQ29zdCA9IGlubGluaW5nQ29zdChjYWxsZWUsIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgIGlmIChteUlubGluaW5nQ29z
dCA+IGlubGluaW5nQmFsYW5jZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlu
bGluZUNhbGwoY2FsbFRhcmdldE5vZGUsIHJlc3VsdE9wZXJhbmQsIGNhbGxlZSwgcmVnaXN0ZXJP
ZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zmc2V0LCBraW5kLCBjYWxs
ZXJMaW5rYWJpbGl0eSk7CisgICAgaW5saW5pbmdCYWxhbmNlIC09IG15SW5saW5pbmdDb3N0Owor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmlu
ZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IENhbGxMaW5r
U3RhdHVzJiBjYWxsTGlua1N0YXR1cywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIE5vZGVUeXBlIGNhbGxPcCwg
SW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCit7
CisgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgZGF0YUxvZygiSGFuZGxpbmcgaW5saW5pbmcu
Li5cbiIpOworICAgICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwg
IlxuIik7CisgICAgfQorICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25L
aW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXphdGlvbktpbmRGb3Ioa2luZCk7CisgICAg
CisgICAgaWYgKCFjYWxsTGlua1N0YXR1cy5zaXplKCkpIHsKKyAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgICAgICBkYXRhTG9nKCJCYWlsaW5nIGlubGluaW5nLlxuIik7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgaW5saW5pbmdCYWxhbmNlID0g
T3B0aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9u
Q291bnQoKTsKKyAgICBpZiAoc3BlY2lhbGl6YXRpb25LaW5kID09IENvZGVGb3JDb25zdHJ1Y3Qp
CisgICAgICAgIGlubGluaW5nQmFsYW5jZSA9IHN0ZDo6bWluKGlubGluaW5nQmFsYW5jZSwgT3B0
aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rp
b25Db3VudCgpKTsKKyAgICBpZiAoY2FsbExpbmtTdGF0dXMuaXNDbG9zdXJlQ2FsbCgpKQorICAg
ICAgICBpbmxpbmluZ0JhbGFuY2UgPSBzdGQ6Om1pbihpbmxpbmluZ0JhbGFuY2UsIE9wdGlvbnM6
Om1heGltdW1GdW5jdGlvbkZvckNsb3N1cmVDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25D
b3VudCgpKTsKKyAgICAKKyAgICAvLyBGaXJzdCBjaGVjayBpZiB3ZSBjYW4gYXZvaWQgY3JlYXRp
bmcgY29udHJvbCBmbG93LiBPdXIgaW5saW5lciBkb2VzIHNvbWUgQ0ZHCisgICAgLy8gc2ltcGxp
ZmljYXRpb24gb24gdGhlIGZseSBhbmQgdGhpcyBoZWxwcyByZWR1Y2UgY29tcGlsZSB0aW1lcywg
YnV0IHdlIGNhbiBvbmx5IGxldmVyYWdlCisgICAgLy8gdGhpcyBpbiBjYXNlcyB3aGVyZSB3ZSBk
b24ndCBuZWVkIGNvbnRyb2wgZmxvdyBkaWFtb25kcyB0byBjaGVjayB0aGUgY2FsbGVlLgorICAg
IGlmICghY2FsbExpbmtTdGF0dXMuY291bGRUYWtlU2xvd1BhdGgoKSAmJiBjYWxsTGlua1N0YXR1
cy5zaXplKCkgPT0gMSkgeworICAgICAgICBlbWl0RnVuY3Rpb25DaGVja3MoCisgICAgICAgICAg
ICBjYWxsTGlua1N0YXR1c1swXS5jYWxsZWUoKSwgY2FsbFRhcmdldE5vZGUsIHJlZ2lzdGVyT2Zm
c2V0LCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgICAgICBib29sIHJlc3VsdCA9IGF0dGVtcHRU
b0lubGluZUNhbGwoCisgICAgICAgICAgICBjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0T3BlcmFuZCwg
Y2FsbExpbmtTdGF0dXNbMF0uY2FsbGVlKCksIHJlZ2lzdGVyT2Zmc2V0LAorICAgICAgICAgICAg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQsIGtpbmQsIENhbGxlckRvZXNO
b3JtYWxMaW5raW5nLCBwcmVkaWN0aW9uLAorICAgICAgICAgICAgaW5saW5pbmdCYWxhbmNlKTsK
KyAgICAgICAgaWYgKCFyZXN1bHQgJiYgIWNhbGxMaW5rU3RhdHVzLmlzUHJvdmVkKCkpCisgICAg
ICAgICAgICB1bmRvRnVuY3Rpb25DaGVja3MoY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVlKCkpOwor
ICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgZGF0YUxvZygiRG9uZSBpbmxpbmlu
ZyAoc2ltcGxlKS5cbiIpOworICAgICAgICAgICAgZGF0YUxvZygiU3RhY2s6ICIsIGN1cnJlbnRD
b2RlT3JpZ2luKCksICJcbiIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorICAgIAorICAgIC8vIFdlIG5lZWQgdG8gY3JlYXRlIHNvbWUga2luZCBvZiBzd2l0Y2gg
b3ZlciBjYWxsZWUuIEZvciBub3cgd2Ugb25seSBkbyB0aGlzIGlmIHdlIGJlbGlldmUgdGhhdAor
ICAgIC8vIHdlJ3JlIGluIHRoZSB0b3AgdGllci4gV2UgaGF2ZSB0d28gcmVhc29ucyBmb3IgdGhp
czogZmlyc3QsIGl0IHByb3ZpZGVzIHVzIGFuIG9wcG9ydHVuaXR5IHRvCisgICAgLy8gZG8gbW9y
ZSBkZXRhaWxlZCBwb2x5dmFyaWFudC9wb2x5bW9ycGhpYyBwcm9maWxpbmc7IGFuZCBzZWNvbmQs
IGl0IHJlZHVjZXMgY29tcGlsZSB0aW1lcyBpbgorICAgIC8vIHRoZSBERkcuIEFuZCBieSBwb2x5
dmFyaWFudCBwcm9maWxpbmcgd2UgbWVhbiBwb2x5dmFyaWFudCBwcm9maWxpbmcgb2YgKnRoaXMq
IGNhbGwuIE5vdGUgdGhhdAorICAgIC8vIHdlIGNvdWxkIGltcHJvdmUgdGhhdCBhc3BlY3Qgb2Yg
dGhpcyBieSBkb2luZyBwb2x5bW9ycGhpYyBpbmxpbmluZyBidXQgaGF2aW5nIHRoZSBwcm9maWxp
bmcKKyAgICAvLyBhbHNvLiBDdXJyZW50bHkgd2Ugb3B0IGFnYWluc3QgdGhpcywgYnV0IGl0IGNv
dWxkIGJlIGludGVyZXN0aW5nLiBUaGF0IHdvdWxkIHJlcXVpcmUgaGF2aW5nIGEKKyAgICAvLyBz
ZXBhcmF0ZSBub2RlIGZvciBjYWxsIGVkZ2UgcHJvZmlsaW5nLgorICAgIC8vIEZJWE1FOiBJbnRy
b2R1Y2UgdGhlIG5vdGlvbiBvZiBhIHNlcGFyYXRlIGNhbGwgZWRnZSBwcm9maWxpbmcgbm9kZS4K
KyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MDMzCisg
ICAgaWYgKCFpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSB8fCAhT3B0aW9uczo6ZW5hYmxlUG9s
eW1vcnBoaWNDYWxsSW5saW5pbmcoKSkgeworICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAg
ICAgICAgZGF0YUxvZygiQmFpbGluZyBpbmxpbmluZyAoaGFyZCkuXG4iKTsKKyAgICAgICAgICAg
IGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIG9sZE9m
ZnNldCA9IG1fY3VycmVudEluZGV4OworICAgIAorICAgIGJvb2wgYWxsQXJlQ2xvc3VyZUNhbGxz
ID0gdHJ1ZTsKKyAgICBib29sIGFsbEFyZURpcmVjdENhbGxzID0gdHJ1ZTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSBjYWxsTGlua1N0YXR1cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgaWYgKGNh
bGxMaW5rU3RhdHVzW2ldLmNhbGxlZSgpLmlzQ2xvc3VyZUNhbGwoKSkKKyAgICAgICAgICAgIGFs
bEFyZURpcmVjdENhbGxzID0gZmFsc2U7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFsbEFy
ZUNsb3N1cmVDYWxscyA9IGZhbHNlOworICAgIH0KKyAgICAKKyAgICBOb2RlKiB0aGluZ1RvU3dp
dGNoT247CisgICAgaWYgKGFsbEFyZURpcmVjdENhbGxzKQorICAgICAgICB0aGluZ1RvU3dpdGNo
T24gPSBjYWxsVGFyZ2V0Tm9kZTsKKyAgICBlbHNlIGlmIChhbGxBcmVDbG9zdXJlQ2FsbHMpCisg
ICAgICAgIHRoaW5nVG9Td2l0Y2hPbiA9IGFkZFRvR3JhcGgoR2V0RXhlY3V0YWJsZSwgY2FsbFRh
cmdldE5vZGUpOworICAgIGVsc2UgeworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFi
bGUgdG8gaGFuZGxlIHRoaXMgY2FzZSwgYnV0IGl0J3MgdHJpY2t5IGFuZCB3ZSBkb24ndCBrbm93
IG9mIGNhc2VzCisgICAgICAgIC8vIHdoZXJlIGl0IHdvdWxkIGJlIGJlbmVmaWNpYWwuIEFsc28s
IENhbGxMaW5rU3RhdHVzIHdvdWxkIG1ha2UgYWxsIGNhbGxlZXMgYXBwZWFyIGxpa2UKKyAgICAg
ICAgLy8gY2xvc3VyZSBjYWxscyBpZiBhbnkgY2FsbHMgd2VyZSBjbG9zdXJlIGNhbGxzIC0gZXhj
ZXB0IGZvciBjYWxscyB0byBpbnRlcm5hbCBmdW5jdGlvbnMuCisgICAgICAgIC8vIFNvIHRoaXMg
d2lsbCBvbmx5IGFyaXNlIGlmIHNvbWUgY2FsbGVlcyBhcmUgaW50ZXJuYWwgZnVuY3Rpb25zIGFu
ZCBvdGhlcnMgYXJlIGNsb3N1cmVzLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MDIwCisgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAg
ICAgICBkYXRhTG9nKCJCYWlsaW5nIGlubGluaW5nIChtaXgpLlxuIik7CisgICAgICAgICAgICBk
YXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBpZiAodmVyYm9zZSkgewor
ICAgICAgICBkYXRhTG9nKCJEb2luZyBoYXJkIGlubGluaW5nLi4uXG4iKTsKKyAgICAgICAgZGF0
YUxvZygiU3RhY2s6ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOworICAgIH0KKyAgICAK
KyAgICAvLyBUaGlzIG1ha2VzIG1lIHdpc2ggdGhhdCB3ZSB3ZXJlIGluIFNTQSBhbGwgdGhlIHRp
bWUuIFdlIG5lZWQgdG8gcGljayBhIHZhcmlhYmxlIGludG8gd2hpY2ggdG8KKyAgICAvLyBzdG9y
ZSB0aGUgY2FsbGVlIHNvIHRoYXQgaXQgd2lsbCBiZSBhY2Nlc3NpYmxlIHRvIGFsbCBvZiB0aGUg
YmxvY2tzIHdlJ3JlIGFib3V0IHRvIGNyZWF0ZS4gV2UKKyAgICAvLyBnZXQgYXdheSB3aXRoIGRv
aW5nIGFuIGltbWVkaWF0ZS1zZXQgaGVyZSBiZWNhdXNlIHdlIHdvdWxkbid0IGhhdmUgcGVyZm9y
bWVkIGFueSBzaWRlIGVmZmVjdHMKKyAgICAvLyB5ZXQuCisgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgIGRhdGFMb2coIlJlZ2lzdGVyIG9mZnNldDogIiwgcmVnaXN0ZXJPZmZzZXQpOworICAgIFZp
cnR1YWxSZWdpc3RlciBjYWxsZWVSZWcocmVnaXN0ZXJPZmZzZXQgKyBKU1N0YWNrOjpDYWxsZWUp
OworICAgIGNhbGxlZVJlZyA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChjYWxsZWVS
ZWcpOworICAgIGlmICh2ZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJDYWxsZWUgaXMgZ29pbmcg
dG8gYmUgIiwgY2FsbGVlUmVnLCAiXG4iKTsKKyAgICBzZXREaXJlY3QoY2FsbGVlUmVnLCBjYWxs
VGFyZ2V0Tm9kZSwgSW1tZWRpYXRlU2V0V2l0aEZsdXNoKTsKKyAgICAKKyAgICBTd2l0Y2hEYXRh
JiBkYXRhID0gKm1fZ3JhcGgubV9zd2l0Y2hEYXRhLmFkZCgpOworICAgIGRhdGEua2luZCA9IFN3
aXRjaENlbGw7CisgICAgYWRkVG9HcmFwaChTd2l0Y2gsIE9wSW5mbygmZGF0YSksIHRoaW5nVG9T
d2l0Y2hPbik7CisgICAgCisgICAgQmFzaWNCbG9jayogb3JpZ2luQmxvY2sgPSBtX2N1cnJlbnRC
bG9jazsKKyAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygiTWFya2luZyAiLCBSYXdQ
b2ludGVyKG9yaWdpbkJsb2NrKSwgIiBhcyBsaW5rZWQgKG9yaWdpbiBvZiBwb2x5IGlubGluZSlc
biIpOworICAgIG9yaWdpbkJsb2NrLT5kaWRMaW5rKCk7CisgICAgY2FuY2VsTGlua2luZ0ZvckJs
b2NrKG1faW5saW5lU3RhY2tUb3AsIG9yaWdpbkJsb2NrKTsKKyAgICAKKyAgICAvLyBFYWNoIGlu
bGluZWQgY2FsbGVlIHdpbGwgaGF2ZSBhIGxhbmRpbmcgYmxvY2sgdGhhdCBpdCByZXR1cm5zIGF0
LiBUaGV5IHNob3VsZCBhbGwgaGF2ZSBqdW1wcworICAgIC8vIHRvIHRoZSBjb250aW51YXRpb24g
YmxvY2ssIHdoaWNoIHdlIGNyZWF0ZSBsYXN0LgorICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gbGFu
ZGluZ0Jsb2NrczsKKyAgICAKKyAgICAvLyBXZSBtYWtlIGZvcmNlIHRoaXMgdHJ1ZSBpZiB3ZSBn
aXZlIHVwIG9uIGlubGluaW5nIGFueSBvZiB0aGUgZWRnZXMuCisgICAgYm9vbCBjb3VsZFRha2VT
bG93UGF0aCA9IGNhbGxMaW5rU3RhdHVzLmNvdWxkVGFrZVNsb3dQYXRoKCk7CisgICAgCisgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgIGRhdGFMb2coIkFib3V0IHRvIGxvb3Agb3ZlciBmdW5jdGlv
bnMgYXQgIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIi5cbiIpOworICAgIAorICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBjYWxsTGlua1N0YXR1cy5zaXplKCk7ICsraSkgeworICAgICAgICBt
X2N1cnJlbnRJbmRleCA9IG9sZE9mZnNldDsKKyAgICAgICAgUmVmUHRyPEJhc2ljQmxvY2s+IGJs
b2NrID0gYWRvcHRSZWYobmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIG1fbnVtQXJndW1lbnRzLCBt
X251bUxvY2FscywgUE5hTikpOworICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrLmdldCgp
OworICAgICAgICBtX2dyYXBoLmFwcGVuZEJsb2NrKGJsb2NrKTsKKyAgICAgICAgcHJlcGFyZVRv
UGFyc2VCbG9jaygpOworICAgICAgICAKKyAgICAgICAgTm9kZSogbXlDYWxsVGFyZ2V0Tm9kZSA9
IGdldERpcmVjdChjYWxsZWVSZWcpOworICAgICAgICAKKyAgICAgICAgYm9vbCBpbmxpbmluZ1Jl
c3VsdCA9IGF0dGVtcHRUb0lubGluZUNhbGwoCisgICAgICAgICAgICBteUNhbGxUYXJnZXROb2Rl
LCByZXN1bHRPcGVyYW5kLCBjYWxsTGlua1N0YXR1c1tpXS5jYWxsZWUoKSwgcmVnaXN0ZXJPZmZz
ZXQsCisgICAgICAgICAgICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbmV4dE9mZnNldCwg
a2luZCwgQ2FsbGVyTGlua3NNYW51YWxseSwgcHJlZGljdGlvbiwKKyAgICAgICAgICAgIGlubGlu
aW5nQmFsYW5jZSk7CisgICAgICAgIAorICAgICAgICBpZiAoIWlubGluaW5nUmVzdWx0KSB7Cisg
ICAgICAgICAgICAvLyBUaGF0IGZhaWxlZCBzbyB3ZSBsZXQgdGhlIGJsb2NrIGRpZS4gTm90aGlu
ZyBpbnRlcmVzdGluZyBzaG91bGQgaGF2ZSBiZWVuIGFkZGVkIHRvCisgICAgICAgICAgICAvLyB0
aGUgYmxvY2suIFdlIGFsc28gZ2l2ZSB1cCBvbiBpbmxpbmluZyBhbnkgb2YgdGhlIChsZXNzIGZy
ZXF1ZW50KSBjYWxsZWVzLgorICAgICAgICAgICAgQVNTRVJUKG1fY3VycmVudEJsb2NrID09IGJs
b2NrLmdldCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLm1fYmxvY2tzLmxhc3QoKSA9
PSBibG9jayk7CisgICAgICAgICAgICBtX2dyYXBoLmtpbGxCbG9ja0FuZEl0c0NvbnRlbnRzKGJs
b2NrLmdldCgpKTsKKyAgICAgICAgICAgIG1fZ3JhcGgubV9ibG9ja3MucmVtb3ZlTGFzdCgpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBUaGUgZmFjdCB0aGF0IGlubGluaW5nIGZhaWxl
ZCBtZWFucyB3ZSBuZWVkIGEgc2xvdyBwYXRoLgorICAgICAgICAgICAgY291bGRUYWtlU2xvd1Bh
dGggPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIEpTQ2VsbCogdGhpbmdUb0Nhc2VPbjsKKyAgICAgICAgaWYgKGFsbEFyZURpcmVjdENhbGxz
KQorICAgICAgICAgICAgdGhpbmdUb0Nhc2VPbiA9IGNhbGxMaW5rU3RhdHVzW2ldLmNhbGxlZSgp
Lm5vbkV4ZWN1dGFibGVDYWxsZWUoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NF
UlQoYWxsQXJlQ2xvc3VyZUNhbGxzKTsKKyAgICAgICAgICAgIHRoaW5nVG9DYXNlT24gPSBjYWxs
TGlua1N0YXR1c1tpXS5jYWxsZWUoKS5leGVjdXRhYmxlKCk7CisgICAgICAgIH0KKyAgICAgICAg
ZGF0YS5jYXNlcy5hcHBlbmQoU3dpdGNoQ2FzZShtX2dyYXBoLmZyZWV6ZSh0aGluZ1RvQ2FzZU9u
KSwgYmxvY2suZ2V0KCkpKTsKKyAgICAgICAgbV9jdXJyZW50SW5kZXggPSBuZXh0T2Zmc2V0Owor
ICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOyAvLyBUaGlzIG9ubHkgY29tZXMgaW50byBw
bGF5IGZvciBpbnRyaW5zaWNzLCBzaW5jZSBub3JtYWwgaW5saW5lZCBjb2RlIHdpbGwgbGVhdmUg
YW4gZW1wdHkgcXVldWUuCisgICAgICAgIGFkZFRvR3JhcGgoSnVtcCk7CisgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgZGF0YUxvZygiTWFya2luZyAiLCBSYXdQb2ludGVyKG1fY3Vy
cmVudEJsb2NrKSwgIiBhcyBsaW5rZWQgKHRhaWwgb2YgcG9seSBpbmxpbmVlKVxuIik7CisgICAg
ICAgIG1fY3VycmVudEJsb2NrLT5kaWRMaW5rKCk7CisgICAgICAgIGxhbmRpbmdCbG9ja3MuYXBw
ZW5kKG1fY3VycmVudEJsb2NrKTsKKworICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAg
IGRhdGFMb2coIkZpbmlzaGVkIGlubGluaW5nICIsIGNhbGxMaW5rU3RhdHVzW2ldLmNhbGxlZSgp
LCAiIGF0ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICIuXG4iKTsKKyAgICB9CisgICAgCisgICAg
UmVmUHRyPEJhc2ljQmxvY2s+IHNsb3dQYXRoQmxvY2sgPSBhZG9wdFJlZigKKyAgICAgICAgbmV3
IEJhc2ljQmxvY2soVUlOVF9NQVgsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgUE5hTikp
OworICAgIG1fY3VycmVudEluZGV4ID0gb2xkT2Zmc2V0OworICAgIGRhdGEuZmFsbFRocm91Z2gg
PSBCcmFuY2hUYXJnZXQoc2xvd1BhdGhCbG9jay5nZXQoKSk7CisgICAgbV9ncmFwaC5hcHBlbmRC
bG9jayhzbG93UGF0aEJsb2NrKTsKKyAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygi
TWFya2luZyAiLCBSYXdQb2ludGVyKHNsb3dQYXRoQmxvY2suZ2V0KCkpLCAiIGFzIGxpbmtlZCAo
c2xvdyBwYXRoIGJsb2NrKVxuIik7CisgICAgc2xvd1BhdGhCbG9jay0+ZGlkTGluaygpOworICAg
IHByZXBhcmVUb1BhcnNlQmxvY2soKTsKKyAgICBtX2N1cnJlbnRCbG9jayA9IHNsb3dQYXRoQmxv
Y2suZ2V0KCk7CisgICAgTm9kZSogbXlDYWxsVGFyZ2V0Tm9kZSA9IGdldERpcmVjdChjYWxsZWVS
ZWcpOworICAgIGlmIChjb3VsZFRha2VTbG93UGF0aCkgeworICAgICAgICBhZGRDYWxsKAorICAg
ICAgICAgICAgcmVzdWx0T3BlcmFuZCwgY2FsbE9wLCBPcEluZm8oKSwgbXlDYWxsVGFyZ2V0Tm9k
ZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCisgICAgICAgICAgICByZWdpc3Rlck9mZnNl
dCwgcHJlZGljdGlvbik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYWRkVG9HcmFwaChDaGVja0Jh
ZENlbGwpOworICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIG15Q2FsbFRhcmdldE5vZGUpOwor
ICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgICAgIAorICAgICAgICBz
ZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBhZGRUb0dyYXBoKEJvdHRvbVZhbHVl
KSk7CisgICAgfQorCisgICAgbV9jdXJyZW50SW5kZXggPSBuZXh0T2Zmc2V0OworICAgIHByb2Nl
c3NTZXRMb2NhbFF1ZXVlKCk7CisgICAgYWRkVG9HcmFwaChKdW1wKTsKKyAgICBsYW5kaW5nQmxv
Y2tzLmFwcGVuZChtX2N1cnJlbnRCbG9jayk7CisgICAgCisgICAgUmVmUHRyPEJhc2ljQmxvY2s+
IGNvbnRpbnVhdGlvbkJsb2NrID0gYWRvcHRSZWYoCisgICAgICAgIG5ldyBCYXNpY0Jsb2NrKFVJ
TlRfTUFYLCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIFBOYU4pKTsKKyAgICBtX2dyYXBo
LmFwcGVuZEJsb2NrKGNvbnRpbnVhdGlvbkJsb2NrKTsKKyAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgZGF0YUxvZygiQWRkaW5nIHVubGlua2VkIGJsb2NrICIsIFJhd1BvaW50ZXIoY29udGludWF0
aW9uQmxvY2suZ2V0KCkpLCAiIChjb250aW51YXRpb24pXG4iKTsKKyAgICBtX2lubGluZVN0YWNr
VG9wLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGNvbnRpbnVhdGlvbkJs
b2NrLmdldCgpKSk7CisgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOworICAgIG1fY3VycmVudEJs
b2NrID0gY29udGludWF0aW9uQmxvY2suZ2V0KCk7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBp
ID0gbGFuZGluZ0Jsb2Nrcy5zaXplKCk7IGktLTspCisgICAgICAgIGxhbmRpbmdCbG9ja3NbaV0t
Pmxhc3QoKS0+dGFyZ2V0QmxvY2soKSA9IGNvbnRpbnVhdGlvbkJsb2NrLmdldCgpOworICAgIAor
ICAgIG1fY3VycmVudEluZGV4ID0gb2xkT2Zmc2V0OworICAgIAorICAgIGlmICh2ZXJib3NlKSB7
CisgICAgICAgIGRhdGFMb2coIkRvbmUgaW5saW5pbmcgKGhhcmQpLlxuIik7CisgICAgICAgIGRh
dGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKKyAgICB9CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTE2NDUsNyArMTkwNCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZVR5cGVkQXJyYXlDb24KIAogYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29u
c3RhbnRJbnRlcm5hbEZ1bmN0aW9uKAogICAgIGludCByZXN1bHRPcGVyYW5kLCBJbnRlcm5hbEZ1
bmN0aW9uKiBmdW5jdGlvbiwgaW50IHJlZ2lzdGVyT2Zmc2V0LAotICAgIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKQorICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIC8vIElmIHdlIGV2ZXIgZmluZCB0aGF0
IHdlIGhhdmUgYSBsb3Qgb2YgaW50ZXJuYWwgZnVuY3Rpb25zIHRoYXQgd2Ugc3BlY2lhbGl6ZSBm
b3IsCiAgICAgLy8gdGhlbiB3ZSBzaG91bGQgcHJvYmFibHkgaGF2ZSBzb21lIHNvcnQgb2YgaGFz
aHRhYmxlIGRpc3BhdGNoLCBvciBtYXliZSBldmVuCkBAIC0xNjU0LDggKzE5MTMsNiBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVyCiAgICAgLy8gd2Uga25vdyBhYm91
dCBpcyBzbWFsbCBlbm91Z2gsIHRoYXQgaGF2aW5nIGp1c3QgYSBsaW5lYXIgY2FzY2FkZSBvZiBp
ZiBzdGF0ZW1lbnRzCiAgICAgLy8gaXMgZ29vZCBlbm91Z2guCiAgICAgCi0gICAgVU5VU0VEX1BB
UkFNKHByZWRpY3Rpb24pOyAvLyBSZW1vdmUgdGhpcyBvbmNlIHdlIGRvIG1vcmUgdGhpbmdzLgot
ICAgIAogICAgIGlmIChmdW5jdGlvbi0+Y2xhc3NJbmZvKCkgPT0gQXJyYXlDb25zdHJ1Y3Rvcjo6
aW5mbygpKSB7CiAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCkgIT0gbV9pbmxp
bmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMjAyMCw2ICsyMjc3LDEyIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZVB1dEJ5SWQoCiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnByZXBhcmVUb1BhcnNlQmxvY2so
KQogeworICAgIGNsZWFyQ2FjaGVzKCk7CisgICAgQVNTRVJUKG1fc2V0TG9jYWxRdWV1ZS5pc0Vt
cHR5KCkpOworfQorCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpjbGVhckNhY2hlcygpCit7CiAgICAg
bV9jb25zdGFudHMucmVzaXplKDApOwogfQogCkBAIC0yMDU5LDkgKzIzMjIsNyBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgfQogCiAgICAgd2hpbGUgKHRy
dWUpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2V0TG9jYWxRdWV1ZS5z
aXplKCk7ICsraSkKLSAgICAgICAgICAgIG1fc2V0TG9jYWxRdWV1ZVtpXS5leGVjdXRlKHRoaXMp
OwotICAgICAgICBtX3NldExvY2FsUXVldWUucmVzaXplKDApOworICAgICAgICBwcm9jZXNzU2V0
TG9jYWxRdWV1ZSgpOwogICAgICAgICAKICAgICAgICAgLy8gRG9uJ3QgZXh0ZW5kIG92ZXIganVt
cCBkZXN0aW5hdGlvbnMuCiAgICAgICAgIGlmIChtX2N1cnJlbnRJbmRleCA9PSBsaW1pdCkgewpA
QCAtMjIwNSwxMyArMjQ2NiwxMyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkCiAgICAgICAgICAgICBKU0NlbGwqIGNhY2hlZEZ1bmN0aW9uID0gY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUuanNDZWxsLmdldCgpOwogICAgICAgICAgICAgaWYgKCFjYWNoZWRGdW5jdGlv
biAKICAgICAgICAgICAgICAgICB8fCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2st
PmNvdWxkVGFrZVNsb3dDYXNlKG1fY3VycmVudEluZGV4KQotICAgICAgICAgICAgICAgIHx8IG1f
aW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgs
IEJhZEZ1bmN0aW9uKSkgeworICAgICAgICAgICAgICAgIHx8IG1faW5saW5lU3RhY2tUb3AtPm1f
ZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENlbGwpKSB7CiAgICAg
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihKU1N0YWNrOjpDYWxsZWUpKSk7CiAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dy
YXBoLmZyZWV6ZShjYWNoZWRGdW5jdGlvbik7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGNhY2hl
ZEZ1bmN0aW9uLT5pbmhlcml0cyhKU0Z1bmN0aW9uOjppbmZvKCkpKTsKICAgICAgICAgICAgICAg
ICBOb2RlKiBhY3R1YWxDYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkNhbGxl
ZSkpOwotICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tGdW5jdGlvbiwgT3BJbmZvKGZy
b3plbiksIGFjdHVhbENhbGxlZSk7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0Nl
bGwsIE9wSW5mbyhmcm96ZW4pLCBhY3R1YWxDYWxsZWUpOwogICAgICAgICAgICAgICAgIHNldChW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3Jh
cGgoSlNDb25zdGFudCwgT3BJbmZvKGZyb3plbikpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIE5FWFRfT1BDT0RFKG9wX2dldF9jYWxsZWUpOwpAQCAtMjg5Myw3ICszMTU0LDcgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgLy8gYWxy
ZWFkeSBnbmFybHkgZW5vdWdoIGFzIGl0IGlzLgogICAgICAgICAgICAgQVNTRVJUKHBvaW50ZXJJ
c0Z1bmN0aW9uKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnNwZWNpYWxQb2ludGVyKSk7CiAgICAg
ICAgICAgICBhZGRUb0dyYXBoKAotICAgICAgICAgICAgICAgIENoZWNrRnVuY3Rpb24sCisgICAg
ICAgICAgICAgICAgQ2hlY2tDZWxsLAogICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLmZy
ZWV6ZShzdGF0aWNfY2FzdDxKU0NlbGwqPihhY3R1YWxQb2ludGVyRm9yKAogICAgICAgICAgICAg
ICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jaywgY3VycmVudEluc3RydWN0aW9u
WzJdLnUuc3BlY2lhbFBvaW50ZXIpKSkpLAogICAgICAgICAgICAgICAgIGdldChWaXJ0dWFsUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpKTsKQEAgLTMzMTcsMTUgKzM1
NzgsMTkgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrKEJhc2ljQmxvYwogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIGJsb2NrLT5p
c0xpbmtlZCA9IHRydWU7Ci0jZW5kaWYKKyAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgZGF0YUxv
ZygiTWFya2luZyAiLCBSYXdQb2ludGVyKGJsb2NrKSwgIiBhcyBsaW5rZWQgKGFjdHVhbGx5IGRp
ZCBsaW5raW5nKVxuIik7CisgICAgYmxvY2stPmRpZExpbmsoKTsKIH0KIAogdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6bGlua0Jsb2NrcyhWZWN0b3I8VW5saW5rZWRCbG9jaz4mIHVubGlua2VkQmxvY2tz
LCBWZWN0b3I8QmFzaWNCbG9jayo+JiBwb3NzaWJsZVRhcmdldHMpCiB7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCB1bmxpbmtlZEJsb2Nrcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgICAgIGRhdGFMb2coIkF0dGVtcHRpbmcgdG8gbGluayAiLCBSYXdQ
b2ludGVyKHVubGlua2VkQmxvY2tzW2ldLm1fYmxvY2spLCAiXG4iKTsKICAgICAgICAgaWYgKHVu
bGlua2VkQmxvY2tzW2ldLm1fbmVlZHNOb3JtYWxMaW5raW5nKSB7CisgICAgICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRG9lcyBuZWVkIG5vcm1hbCBs
aW5raW5nLlxuIik7CiAgICAgICAgICAgICBsaW5rQmxvY2sodW5saW5rZWRCbG9ja3NbaV0ubV9i
bG9jaywgcG9zc2libGVUYXJnZXRzKTsKICAgICAgICAgICAgIHVubGlua2VkQmxvY2tzW2ldLm1f
bmVlZHNOb3JtYWxMaW5raW5nID0gZmFsc2U7CiAgICAgICAgIH0KQEAgLTM0OTIsNyArMzc1Nyw3
IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmUKIAogdm9pZCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogewotICAgIHByZXBhcmVUb1BhcnNlQmxvY2so
KTsKKyAgICBjbGVhckNhY2hlcygpOwogICAgIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
bV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2s7CiAgICAgCkBAIC0zNTU4LDcgKzM4MjMsMTIg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogICAgICAgICAgICAgICAg
ICAgICAvLyAyKSBJZiB0aGUgYnl0ZWNvZGVCZWdpbiBpcyBlcXVhbCB0byB0aGUgY3VycmVudElu
ZGV4LCB0aGVuIHdlIGZhaWxlZCB0byBkbwogICAgICAgICAgICAgICAgICAgICAvLyAgICBhIHBl
ZXBob2xlIGNvYWxlc2Npbmcgb2YgdGhpcyBibG9jayBpbiB0aGUgaWYgc3RhdGVtZW50IGFib3Zl
LiBTbywgd2UncmUKICAgICAgICAgICAgICAgICAgICAgLy8gICAgZ2VuZXJhdGluZyBzdWJvcHRp
bWFsIGNvZGUgYW5kIGxlYXZpbmcgbW9yZSB3b3JrIGZvciB0aGUgQ0ZHIHNpbXBsaWZpZXIuCi0g
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2lubGluZVN0YWNrVG9wLT5tX3VubGlua2VkQmxv
Y2tzLmlzRW1wdHkoKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmxhc3Qo
KS5tX2Jsb2NrLT5ieXRlY29kZUJlZ2luIDwgbV9jdXJyZW50SW5kZXgpOworICAgICAgICAgICAg
ICAgICAgICBpZiAoIW1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuaXNFbXB0eSgp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsYXN0QmVnaW4gPQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3Mu
bGFzdCgpLm1fYmxvY2stPmJ5dGVjb2RlQmVnaW47CisgICAgICAgICAgICAgICAgICAgICAgICBB
U1NFUlRfVU5VU0VEKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RCZWdpbiwgbGFz
dEJlZ2luID09IFVJTlRfTUFYIHx8IGxhc3RCZWdpbiA8IG1fY3VycmVudEluZGV4KTsKKyAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLmdldCgpKSk7CiAgICAg
ICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5h
cHBlbmQoYmxvY2suZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICAvLyBUaGUgZmlyc3QgYmxv
Y2sgaXMgZGVmaW5pdGVseSBhbiBPU1IgdGFyZ2V0LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAx
NzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MCw4ICs5MCwxMCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5zZXRDaGlsZDEoRWRnZSgpKTsKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOgotICAgICAg
ICAgICAgICAgICAgICBpZiAoIW5vZGUtPmNoaWxkMSgpKQorICAgICAgICAgICAgICAgICAgICBp
ZiAoIW5vZGUtPmNoaWxkMSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1f
YWxsb2NhdG9yLmZyZWUobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUt
PmNoaWxkMSgpLT5vcCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgUGhpOgogICAgICAg
ICAgICAgICAgICAgICBjYXNlIFNldEFyZ3VtZW50OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNiAr
MTQ0LDggQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNh
c2UgRmlhdEludDUyOgogICAgIGNhc2UgTWFrZVJvcGU6CiAgICAgY2FzZSBWYWx1ZVRvSW50MzI6
CisgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgorICAgIGNhc2UgQm90dG9tVmFsdWU6CiAgICAgICAg
IGRlZihQdXJlVmFsdWUobm9kZSkpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIApAQCAtMjM5
LDEyICsyNDEsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAg
ICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwgbm9kZS0+YXJpdGhNb2RlKCkpKTsKICAgICAgICAg
cmV0dXJuOwogICAgICAgICAKLSAgICBjYXNlIENoZWNrRnVuY3Rpb246Ci0gICAgICAgIGRlZihQ
dXJlVmFsdWUoQ2hlY2tGdW5jdGlvbiwgQWRqYWNlbmN5TGlzdChBZGphY2VuY3lMaXN0OjpGaXhl
ZCwgbm9kZS0+Y2hpbGQxKCkpLCBub2RlLT5mdW5jdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICAgICAgCi0gICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6Ci0gICAgICAgIGRlZihQdXJlVmFs
dWUobm9kZSwgbm9kZS0+ZXhlY3V0YWJsZSgpKSk7CisgICAgY2FzZSBDaGVja0NlbGw6CisgICAg
ICAgIGRlZihQdXJlVmFsdWUoQ2hlY2tDZWxsLCBBZGphY2VuY3lMaXN0KEFkamFjZW5jeUxpc3Q6
OkZpeGVkLCBub2RlLT5jaGlsZDEoKSksIG5vZGUtPmNlbGxPcGVyYW5kKCkpKTsKICAgICAgICAg
cmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6CkBAIC0y
NjMsNiArMjYxLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQog
ICAgIGNhc2UgU3dpdGNoOgogICAgIGNhc2UgVGhyb3c6CiAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6
CisgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgY2FzZSBSZXR1cm46CiAgICAgY2FzZSBVbnJl
YWNoYWJsZToKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2MywxMyBA
QCBlbnVtIFJlZk5vZGVNb2RlIHsKICAgICBEb250UmVmTm9kZQogfTsKIAorZW51bSBTd2l0Y2hL
aW5kIHsKKyAgICBTd2l0Y2hJbW0sCisgICAgU3dpdGNoQ2hhciwKKyAgICBTd2l0Y2hTdHJpbmcs
CisgICAgU3dpdGNoQ2VsbAorfTsKKwogaW5saW5lIGJvb2wgdmVyYm9zZUNvbXBpbGF0aW9uRW5h
YmxlZChDb21waWxhdGlvbk1vZGUgbW9kZSA9IERGR01vZGUpCiB7CiAgICAgcmV0dXJuIE9wdGlv
bnM6OnZlcmJvc2VDb21waWxhdGlvbigpIHx8IE9wdGlvbnM6OmR1bXBHcmFwaEF0RWFjaFBoYXNl
KCkgfHwgKGlzRlRMKG1vZGUpICYmIE9wdGlvbnM6OnZlcmJvc2VGVExDb21waWxhdGlvbigpKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQy
LDggKzE0Miw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlIENoZWNrRnVuY3Rpb246IHsK
LSAgICAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1
ZSgpICE9IG5vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkpCisgICAgICAgICAgICBjYXNlIENoZWNr
Q2VsbDogeworICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQx
KCkpLnZhbHVlKCkgIT0gbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKSkKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgp
OwogICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5
MSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFB1
dEJ5SWRGbHVzaDoKICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgY2FzZSBDaGVja1N0cnVj
dHVyZToKLSAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToKKyAgICBjYXNlIEdldEV4ZWN1dGFibGU6
CiAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2Ug
R2V0U2NvcGU6CkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlKQogICAgIGNhc2UgUHV0R2xvYmFsVmFyOgogICAgIGNhc2UgVmFyaWFibGVXYXRj
aHBvaW50OgogICAgIGNhc2UgVmFySW5qZWN0aW9uV2F0Y2hwb2ludDoKLSAgICBjYXNlIENoZWNr
RnVuY3Rpb246CisgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmls
ZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBSZWdFeHBFeGVjOgogICAgIGNhc2UgUmVnRXhwVGVzdDoK
QEAgLTE5NSw2ICsxOTUsOCBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBHZXREaXJlY3RQbmFtZToKICAgICBjYXNlIEZpYXRJbnQ1MjoKICAgICBjYXNl
IEJvb2xlYW5Ub051bWJlcjoKKyAgICBjYXNlIENoZWNrQmFkQ2VsbDoKKyAgICBjYXNlIEJvdHRv
bVZhbHVlOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjYXNlIENyZWF0ZUFjdGl2YXRp
b246CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCShyZXZpc2lv
biAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDEwIEBAIHN0YXRpYyBDb21waWxhdGlvblJlc3VsdCBj
b21waWxlSW1wbCgKICAgICAgICAgdm0uZ2V0Q1RJU3R1Yih2aXJ0dWFsQ29uc3RydWN0VGhhdFBy
ZXNlcnZlc1JlZ3NUaHVua0dlbmVyYXRvcik7CiAgICAgfQogICAgIAorICAgIC8vIEVuc3VyZSB0
aGF0IHRoZSBjb21waWxlciBoYXMgYSBjaGFuY2UgdG8gc2VlIG5ld2x5IGFkZGVkIGxvZyBlbnRy
aWVzLgorICAgIGlmIChDYWxsRWRnZUxvZzo6aXNFbmFibGVkKCkgJiYgaXNGVEwobW9kZSkpCisg
ICAgICAgIHZtLmVuc3VyZUNhbGxFZGdlTG9nKCkucm90YXRlQW5kUHJvY2Vzc0FzeW5jaHJvbm91
c2x5KCk7CisgICAgCiAgICAgUmVmUHRyPFBsYW4+IHBsYW4gPSBhZG9wdFJlZigKICAgICAgICAg
bmV3IFBsYW4oY29kZUJsb2NrLCBwcm9maWxlZERGR0NvZGVCbG9jaywgbW9kZSwgb3NyRW50cnlC
eXRlY29kZUluZGV4LCBtdXN0SGFuZGxlVmFsdWVzKSk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTczNiw2ICs3MzYsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBlbHNlIGlm
IChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nKCkpCiAgICAgICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8U3RyaW5nVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFN3aXRjaENlbGw6CisgICAgICAgICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVDZWxsKCkpCisgICAgICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAg
IC8vIGVsc2UgaXQncyBmaW5lIGZvciB0aGlzIHRvIGhhdmUgVW50eXBlZFVzZTsgd2Ugd2lsbCBo
YW5kbGUgdGhpcyBieSBqdXN0IG1ha2luZworICAgICAgICAgICAgICAgIC8vIG5vbi1jZWxscyB0
YWtlIHRoZSBkZWZhdWx0IGNhc2UuCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtODk3LDEzICs5MDMsMTMgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBD
aGVja0V4ZWN1dGFibGU6IHsKKyAgICAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOiB7CiAgICAgICAg
ICAgICBmaXhFZGdlPEZ1bmN0aW9uVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1
cmU6Ci0gICAgICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBDaGVja0NlbGw6
CiAgICAgICAgIGNhc2UgQ2hlY2tIYXNJbnN0YW5jZToKICAgICAgICAgY2FzZSBDcmVhdGVUaGlz
OgogICAgICAgICBjYXNlIEdldEJ1dHRlcmZseTogewpAQCAtMTE0OSw2ICsxMTU1LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgogICAgICAgICBjYXNlIENv
dW50RXhlY3V0aW9uOgogICAgICAgICBjYXNlIEZvcmNlT1NSRXhpdDoKKyAgICAgICAgY2FzZSBD
aGVja0JhZENlbGw6CiAgICAgICAgIGNhc2UgQ2hlY2tXYXRjaGRvZ1RpbWVyOgogICAgICAgICBj
YXNlIFVucmVhY2hhYmxlOgogICAgICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgpAQCAt
MTE1OSw2ICsxMTY2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBUeXBlZEFycmF5V2F0Y2hw
b2ludDoKICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICBjYXNlIFpvbWJpZUhpbnQ6Cisg
ICAgICAgIGNhc2UgQm90dG9tVmFsdWU6CiAgICAgICAgICAgICBicmVhazsKICNlbHNlCiAgICAg
ICAgIGRlZmF1bHQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAko
cmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAgR3JhcGg6OkdyYXBoKFZNJiB2bSwg
UGxhbiYgcGxhbiwgTG9uZ0xpdgogICAgICwgbV9mb3JtKExvYWRTdG9yZSkKICAgICAsIG1fdW5p
ZmljYXRpb25TdGF0ZShMb2NhbGx5VW5pZmllZCkKICAgICAsIG1fcmVmQ291bnRTdGF0ZShFdmVy
eXRoaW5nSXNMaXZlKQorICAgICwgbV9zaG91bGRQcm9maWxlKGZhbHNlKQogewogICAgIEFTU0VS
VChtX3Byb2ZpbGVkQmxvY2spOwogICAgIApAQCAtMjIyLDI0ICsyMjMsMjMgQEAgdm9pZCBHcmFw
aDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAogICAgICAgICBvdXQucHJpbnQoY29tbWEs
IGluQ29udGV4dCgqbm9kZS0+c3RydWN0dXJlKCksIGNvbnRleHQpKTsKICAgICBpZiAobm9kZS0+
aGFzVHJhbnNpdGlvbigpKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsIHBvaW50ZXJEdW1wSW5D
b250ZXh0KG5vZGUtPnRyYW5zaXRpb24oKSwgY29udGV4dCkpOwotICAgIGlmIChub2RlLT5oYXNG
dW5jdGlvbigpKSB7Ci0gICAgICAgIG91dC5wcmludChjb21tYSwgImZ1bmN0aW9uKCIsIHBvaW50
ZXJEdW1wKG5vZGUtPmZ1bmN0aW9uKCkpLCAiLCAiKTsKLSAgICAgICAgaWYgKG5vZGUtPmZ1bmN0
aW9uKCktPnZhbHVlKCkuaXNDZWxsKCkKLSAgICAgICAgICAgICYmIG5vZGUtPmZ1bmN0aW9uKCkt
PnZhbHVlKCkuYXNDZWxsKCktPmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpIHsKLSAgICAg
ICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihub2RlLT5m
dW5jdGlvbigpLT52YWx1ZSgpLmFzQ2VsbCgpKTsKLSAgICAgICAgICAgIGlmIChmdW5jdGlvbi0+
aXNIb3N0RnVuY3Rpb24oKSkKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQoIjxob3N0IGZ1bmN0
aW9uPiIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG91dC5wcmludChGdW5j
dGlvbkV4ZWN1dGFibGVEdW1wKGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKSkpOwotICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgIG91dC5wcmludCgiPG5vdCBKU0Z1bmN0aW9uPiIpOwotICAgICAg
ICBvdXQucHJpbnQoIikiKTsKLSAgICB9Ci0gICAgaWYgKG5vZGUtPmhhc0V4ZWN1dGFibGUoKSkg
ewotICAgICAgICBpZiAobm9kZS0+ZXhlY3V0YWJsZSgpLT5pbmhlcml0cyhGdW5jdGlvbkV4ZWN1
dGFibGU6OmluZm8oKSkpCi0gICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJleGVjdXRhYmxl
KCIsIEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAoanNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG5v
ZGUtPmV4ZWN1dGFibGUoKSkpLCAiKSIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBvdXQu
cHJpbnQoY29tbWEsICJleGVjdXRhYmxlKG5vdCBmdW5jdGlvbjogIiwgUmF3UG9pbnRlcihub2Rl
LT5leGVjdXRhYmxlKCkpLCAiKSIpOworICAgIGlmIChub2RlLT5oYXNDZWxsT3BlcmFuZCgpKSB7
CisgICAgICAgIGlmICghbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKSB8fCAhbm9kZS0+Y2Vs
bE9wZXJhbmQoKS0+dmFsdWUoKS5pc0NlbGwoKSkKKyAgICAgICAgICAgIG91dC5wcmludChjb21t
YSwgImludmFsaWQgY2VsbCBvcGVyYW5kOiAiLCBub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgp
KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIHBvaW50ZXJE
dW1wKG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuYXNDZWxsKCkpKTsKKyAgICAgICAgICAg
IGlmIChub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpLmlzQ2VsbCgpKSB7CisgICAgICAgICAg
ICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFudChub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpLmFz
Q2VsbCgpKTsKKyAgICAgICAgICAgICAgICBpZiAoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUg
PSB2YXJpYW50LmV4ZWN1dGFibGUoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZXhlY3V0
YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmlu
dChjb21tYSwgIjxob3N0IGZ1bmN0aW9uPiIpOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlm
IChGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IGpzRHluYW1pY0Nhc3Q8
RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSkpCisgICAgICAgICAgICAgICAgICAgICAg
ICBvdXQucHJpbnQoY29tbWEsIEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAoZnVuY3Rpb25FeGVjdXRh
YmxlKSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAg
IG91dC5wcmludChjb21tYSwgIjxub24tZnVuY3Rpb24gZXhlY3V0YWJsZT4iKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAgICAgaWYgKG5vZGUt
Pmhhc0Z1bmN0aW9uRGVjbEluZGV4KCkpIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlID0gbV9jb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChub2RlLT5mdW5jdGlvbkRlY2xJ
bmRleCgpKTsKQEAgLTk4NSwxMCArOTg1LDYgQEAgdm9pZCBHcmFwaDo6dmlzaXRDaGlsZHJlbihT
bG90VmlzaXRvciYgdgogICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5k
ZXgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAg
ICAgICAgICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOgotICAgICAgICAgICAgICAgIHZpc2l0b3Iu
YXBwZW5kVW5iYXJyaWVyZWRSZWFkT25seVBvaW50ZXIobm9kZS0+ZXhlY3V0YWJsZSgpKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2Ug
Q2hlY2tTdHJ1Y3R1cmU6CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbm9kZS0+
c3RydWN0dXJlU2V0KCkuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgICAgICAgICB2aXNpdG9y
LmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlQb2ludGVyKG5vZGUtPnN0cnVjdHVyZVNldCgpW2ld
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDE3Mjg1
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5
KQpAQCAtNzYyLDYgKzc2Miw3IEBAIHB1YmxpYzoKICAgICBHcmFwaEZvcm0gbV9mb3JtOwogICAg
IFVuaWZpY2F0aW9uU3RhdGUgbV91bmlmaWNhdGlvblN0YXRlOwogICAgIFJlZkNvdW50U3RhdGUg
bV9yZWZDb3VudFN0YXRlOworICAgIGJvb2wgbV9zaG91bGRQcm9maWxlOwogcHJpdmF0ZToKICAg
ICAKICAgICB2b2lkIGhhbmRsZVN1Y2Nlc3NvcihWZWN0b3I8QmFzaWNCbG9jayosIDE2PiYgd29y
a2xpc3QsIEJhc2ljQmxvY2sqLCBCYXNpY0Jsb2NrKiBzdWNjZXNzb3IpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDE3Mjg1
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5r
QnVmZmVyJiBsaW5rQgogICAgICAgICAgICAgdGFibGUuY3RpT2Zmc2V0c1tqXSA9IHRhYmxlLmN0
aURlZmF1bHQ7CiAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IGRhdGEuY2FzZXMuc2l6ZSgpOyBq
LS07KSB7CiAgICAgICAgICAgICBTd2l0Y2hDYXNlJiBteUNhc2UgPSBkYXRhLmNhc2VzW2pdOwot
ICAgICAgICAgICAgdGFibGUuY3RpT2Zmc2V0c1tteUNhc2UudmFsdWUuc3dpdGNoTG9va3VwVmFs
dWUoKSAtIHRhYmxlLm1pbl0gPQorICAgICAgICAgICAgdGFibGUuY3RpT2Zmc2V0c1tteUNhc2Uu
dmFsdWUuc3dpdGNoTG9va3VwVmFsdWUoZGF0YS5raW5kKSAtIHRhYmxlLm1pbl0gPQogICAgICAg
ICAgICAgICAgIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX2Jsb2NrSGVhZHNbbXlDYXNlLnRhcmdl
dC5ibG9jay0+aW5kZXhdKTsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTEzLDYgKzExMywzNiBAQCBUcmlTdGF0ZSBMYXp5SlNWYWx1ZTo6c3RyaWN0RXF1YWwo
Y29uc3QgCiAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CiB9CiAKK3VpbnRwdHJfdCBMYXp5SlNW
YWx1ZTo6c3dpdGNoTG9va3VwVmFsdWUoU3dpdGNoS2luZCBraW5kKSBjb25zdAoreworICAgIC8v
IE5CLiBOb3QgZXZlcnkga2luZCBvZiBKU1ZhbHVlIHdpbGwgYmUgYWJsZSB0byBnaXZlIHlvdSBh
IHN3aXRjaCBsb29rdXAKKyAgICAvLyB2YWx1ZSwgYW5kIHRoaXMgbWV0aG9kIHdpbGwgYXNzZXJ0
LCBvciBkbyBiYWQgdGhpbmdzLCBpZiB5b3UgdXNlIGl0CisgICAgLy8gZm9yIGEga2luZCBvZiB2
YWx1ZSB0aGF0IGNhbid0LgorICAgIHN3aXRjaCAobV9raW5kKSB7CisgICAgY2FzZSBLbm93blZh
bHVlOgorICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgY2FzZSBTd2l0Y2hJbW06Cisg
ICAgICAgICAgICByZXR1cm4gdmFsdWUoKS0+dmFsdWUoKS5hc0ludDMyKCk7CisgICAgICAgIGNh
c2UgU3dpdGNoQ2VsbDoKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dWludHB0cl90
Pih2YWx1ZSgpLT52YWx1ZSgpLmFzQ2VsbCgpKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgfQorICAgIGNhc2UgU2luZ2xlQ2hhcmFjdGVyU3RyaW5nOgorICAgICAgICBzd2l0
Y2ggKGtpbmQpIHsKKyAgICAgICAgY2FzZSBTd2l0Y2hDaGFyOgorICAgICAgICAgICAgcmV0dXJu
IGNoYXJhY3RlcigpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorfQorCiB2b2lkIExhenlKU1ZhbHVlOjpkdW1wSW5Db250ZXh0KFBy
aW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAogewogICAgIHN3aXRj
aCAobV9raW5kKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1Zh
bHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNW
YWx1ZS5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0xhenlKU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVO
QUJMRShERkdfSklUKQogCisjaW5jbHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSAiREZHRnJv
emVuVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAKQEAgLTk1LDIx
ICs5Niw3IEBAIHB1YmxpYzoKICAgICAKICAgICBUcmlTdGF0ZSBzdHJpY3RFcXVhbChjb25zdCBM
YXp5SlNWYWx1ZSYgb3RoZXIpIGNvbnN0OwogICAgIAotICAgIHVuc2lnbmVkIHN3aXRjaExvb2t1
cFZhbHVlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIC8vIE5CLiBOb3QgZXZlcnkga2luZCBvZiBK
U1ZhbHVlIHdpbGwgYmUgYWJsZSB0byBnaXZlIHlvdSBhIHN3aXRjaCBsb29rdXAKLSAgICAgICAg
Ly8gdmFsdWUsIGFuZCB0aGlzIG1ldGhvZCB3aWxsIGFzc2VydCwgb3IgZG8gYmFkIHRoaW5ncywg
aWYgeW91IHVzZSBpdAotICAgICAgICAvLyBmb3IgYSBraW5kIG9mIHZhbHVlIHRoYXQgY2FuJ3Qu
Ci0gICAgICAgIHN3aXRjaCAobV9raW5kKSB7Ci0gICAgICAgIGNhc2UgS25vd25WYWx1ZToKLSAg
ICAgICAgICAgIHJldHVybiB2YWx1ZSgpLT52YWx1ZSgpLmFzSW50MzIoKTsKLSAgICAgICAgY2Fz
ZSBTaW5nbGVDaGFyYWN0ZXJTdHJpbmc6Ci0gICAgICAgICAgICByZXR1cm4gY2hhcmFjdGVyKCk7
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICB9CisgICAgdWludHB0
cl90IHN3aXRjaExvb2t1cFZhbHVlKFN3aXRjaEtpbmQga2luZCkgY29uc3Q7CiAgICAgCiAgICAg
dm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgdm9pZCBkdW1wSW5Db250ZXh0KFBy
aW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMyw5IEBAIHZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBTd2kKICAgICBjYXNlIFN3aXRjaFN0
cmluZzoKICAgICAgICAgb3V0LnByaW50KCJTd2l0Y2hTdHJpbmciKTsKICAgICAgICAgcmV0dXJu
OworICAgIGNhc2UgU3dpdGNoQ2VsbDoKKyAgICAgICAgb3V0LnByaW50KCJTd2l0Y2hDZWxsIik7
CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAxNzI4
NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTU3LDEyICsxNTcsNiBAQCBzdHJ1Y3QgU3dpdGNoQ2FzZSB7CiAgICAgQnJhbmNoVGFy
Z2V0IHRhcmdldDsKIH07CiAKLWVudW0gU3dpdGNoS2luZCB7Ci0gICAgU3dpdGNoSW1tLAotICAg
IFN3aXRjaENoYXIsCi0gICAgU3dpdGNoU3RyaW5nCi19OwotCiBzdHJ1Y3QgU3dpdGNoRGF0YSB7
CiAgICAgLy8gSW5pdGlhbGl6ZXMgbW9zdCBmaWVsZHMgdG8gb2J2aW91c2x5IGludmFsaWQgdmFs
dWVzLiBBbnlvbmUKICAgICAvLyBjb25zdHJ1Y3RpbmcgdGhpcyBzaG91bGQgbWFrZSBzdXJlIHRv
IGluaXRpYWxpemUgZXZlcnl0aGluZyB0aGV5CkBAIC0xODUsNiArMTc5LDcgQEAgc3RydWN0IFN3
aXRjaERhdGEgewogLy8gZGlzdGluZ3Vpc2hlcyBhbiBpbW1lZGlhdGUgdmFsdWUgKHR5cGljYWxs
eSBhbiBpbmRleCBpbnRvIGEgQ29kZUJsb2NrIGRhdGEgc3RydWN0dXJlIC0gCiAvLyBhIGNvbnN0
YW50IGluZGV4LCBhcmd1bWVudCwgb3IgaWRlbnRpZmllcikgZnJvbSBhIE5vZGUqLgogc3RydWN0
IE9wSW5mbyB7CisgICAgT3BJbmZvKCkgOiBtX3ZhbHVlKDApIHsgfQogICAgIGV4cGxpY2l0IE9w
SW5mbyhpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih2YWx1
ZSkpIHsgfQogICAgIGV4cGxpY2l0IE9wSW5mbyh1aW50MzJfdCB2YWx1ZSkgOiBtX3ZhbHVlKHN0
YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KICNpZiBPUyhEQVJXSU4pIHx8IFVTRShK
U1ZBTFVFNjQpCkBAIC0xMDQ0LDkgKzEwMzksMTEgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBt
X29wSW5mbzIgPSBwcmVkaWN0aW9uOwogICAgIH0KICAgICAKLSAgICBib29sIGNhbkJlS25vd25G
dW5jdGlvbigpCisgICAgYm9vbCBoYXNDZWxsT3BlcmFuZCgpCiAgICAgewogICAgICAgICBzd2l0
Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6Cisg
ICAgICAgIGNhc2UgQ2hlY2tDZWxsOgogICAgICAgICBjYXNlIE5hdGl2ZUNvbnN0cnVjdDoKICAg
ICAgICAgY2FzZSBOYXRpdmVDYWxsOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDU1
LDU0ICsxMDUyLDE2IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgfQogICAgIH0KIAotICAgIGJv
b2wgaGFzS25vd25GdW5jdGlvbigpCi0gICAgewotICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKLSAg
ICAgICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6Ci0gICAgICAgIGNhc2UgTmF0aXZlQ2FsbDoKLSAg
ICAgICAgICAgIHJldHVybiAoYm9vbCltX29wSW5mbzsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBKU0Z1bmN0
aW9uKiBrbm93bkZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjYW5CZUtub3duRnVu
Y3Rpb24oKSk7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNGdW5jdGlvbio+KG1fb3BJ
bmZvKTsKLSAgICB9Ci0KLSAgICB2b2lkIGdpdmVLbm93bkZ1bmN0aW9uKEpTRnVuY3Rpb24qIGNh
bGxEYXRhKSAKKyAgICBGcm96ZW5WYWx1ZSogY2VsbE9wZXJhbmQoKQogICAgIHsKLSAgICAgICAg
QVNTRVJUKGNhbkJlS25vd25GdW5jdGlvbigpKTsKLSAgICAgICAgbV9vcEluZm8gPSBiaXR3aXNl
X2Nhc3Q8dWludHB0cl90PihjYWxsRGF0YSk7Ci0gICAgfQotCi0gICAgYm9vbCBoYXNGdW5jdGlv
bigpCi0gICAgewotICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKLSAgICAgICAgY2FzZSBDaGVja0Z1
bmN0aW9uOgotICAgICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDoKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgRnJvemVuVmFsdWUqIGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChoYXNGdW5jdGlvbigpKTsKKyAgICAgICAgQVNTRVJUKGhh
c0NlbGxPcGVyYW5kKCkpOwogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxGcm96ZW5W
YWx1ZSo+KG1fb3BJbmZvKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBoYXNFeGVjdXRhYmxlKCkK
KyAgICB2b2lkIHNldENlbGxPcGVyYW5kKEZyb3plblZhbHVlKiB2YWx1ZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBvcCgpID09IENoZWNrRXhlY3V0YWJsZTsKLSAgICB9Ci0gICAgCi0gICAgRXhl
Y3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGpzQ2FzdDxF
eGVjdXRhYmxlQmFzZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4obV9vcEluZm8pKTsKKyAg
ICAgICAgQVNTRVJUKGhhc0NlbGxPcGVyYW5kKCkpOworICAgICAgICBtX29wSW5mbyA9IGJpdHdp
c2VfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNWYXJp
YWJsZVdhdGNocG9pbnRTZXQoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDcgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFB1dEJ5SWRGbHVzaCwgTm9kZU11c3RH
ZW5lcmF0ZSB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAogICAgIG1h
Y3JvKFB1dEJ5SWREaXJlY3QsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkg
XAogICAgIG1hY3JvKENoZWNrU3RydWN0dXJlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCi0gICAgbWFj
cm8oQ2hlY2tFeGVjdXRhYmxlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oR2V0RXhl
Y3V0YWJsZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUHV0U3RydWN0dXJlLCBOb2RlTXVz
dEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UsIE5vZGVNdXN0
R2VuZXJhdGUgfCBOb2RlUmVzdWx0U3RvcmFnZSkgXAogICAgIG1hY3JvKFJlYWxsb2NhdGVQcm9w
ZXJ0eVN0b3JhZ2UsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0U3RvcmFnZSkgXApAQCAt
MTg1LDcgKzE4NSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNy
byhWYXJpYWJsZVdhdGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhWYXJJ
bmplY3Rpb25XYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oRnVuY3Rp
b25SZWVudHJ5V2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAotICAgIG1hY3JvKENoZWNr
RnVuY3Rpb24sIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhDaGVja0NlbGwsIE5vZGVN
dXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhDaGVja0JhZENlbGwsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQsIE5vZGVNdXN0R2VuZXJh
dGUpIFwKICAgICBtYWNybyhDaGVja0luQm91bmRzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAg
XApAQCAtMjg2LDYgKzI4NywxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAg
ICAgLyogZGlmZmVyZW50IGNvbXBpbGVyLiAqL1wKICAgICBtYWNybyhGb3JjZU9TUkV4aXQsIE5v
ZGVNdXN0R2VuZXJhdGUpIFwKICAgICBcCisgICAgLyogVmVuZHMgYSBib3R0b20gSlMgdmFsdWUu
IEl0IGlzIGludmFsaWQgdG8gZXZlciBleGVjdXRlIHRoaXMuIFVzZWZ1bCBmb3IgY2FzZXMgKi9c
CisgICAgLyogd2hlcmUgd2Uga25vdyB0aGF0IHdlIHdvdWxkIGhhdmUgZXhpdGVkIGJ1dCB3ZSdk
IGxpa2UgdG8gc3RpbGwgdHJhY2sgdGhlIGNvbnRyb2wgKi9cCisgICAgLyogZmxvdy4gKi9cCisg
ICAgbWFjcm8oQm90dG9tVmFsdWUsIE5vZGVSZXN1bHRKUykgXAorICAgIFwKICAgICAvKiBDaGVj
a3MgdGhlIHdhdGNoZG9nIHRpbWVyLiBJZiB0aGUgdGltZXIgaGFzIGZpcmVkLCB3ZSBPU1IgZXhp
dCB0byB0aGUgKi8gXAogICAgIC8qIGJhc2VsaW5lIEpJVCB0byByZWRvIHRoZSB3YXRjaGRvZyB0
aW1lciBjaGVjaywgYW5kIHNlcnZpY2UgdGhlIHRpbWVyLiAqLyBcCiAgICAgbWFjcm8oQ2hlY2tX
YXRjaGRvZ1RpbWVyLCBOb2RlTXVzdEdlbmVyYXRlKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25Q
aGFzZS5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTky
LDggKzkyLDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxk
cmVuLnJlbW92ZUVkZ2UoaS0tKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHko
KSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRU
b0NoZWNrKCk7CiAgICAgICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21SZW1vdmFsUGhhc2UuY3BwCShyZXZpc2lvbiAxNzI4
NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21SZW1vdmFsUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNiArMTI1LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBt
X2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgICAgICAgICB9CkBAIC0xNDIsNiArMTQzLDcgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTQ5LDggKzE1MSwxMCBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBjYXNlIEhhcmRQaGFudG9tOiB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZHJlbi5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJl
bi5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0
b3IuZnJlZShub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUGxhbi5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMCw2ICsyMDAsOSBAQCBQbGFuOjpD
b21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyCiAgICAgICAgIGRhdGFMb2coIlxuIik7
CiAgICAgfQogICAgIAorICAgIGlmIChpc0ZUTChtb2RlKSAmJiBDYWxsRWRnZUxvZzo6aXNFbmFi
bGVkKCkpCisgICAgICAgIHZtLmVuc3VyZUNhbGxFZGdlTG9nKCkudHJ5VG9Qcm9jZXNzQWxsU2xh
YnMoKTsKKyAgICAKICAgICBHcmFwaCBkZmcodm0sICp0aGlzLCBsb25nTGl2ZWRTdGF0ZSk7CiAg
ICAgCiAgICAgaWYgKCFwYXJzZShkZmcpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAko
cmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw3ICsxOTYsOCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAot
ICAgICAgICBjYXNlIEdldEdldHRlclNldHRlckJ5T2Zmc2V0OiB7CisgICAgICAgIGNhc2UgR2V0
R2V0dGVyU2V0dGVyQnlPZmZzZXQ6CisgICAgICAgIGNhc2UgR2V0RXhlY3V0YWJsZTogewogICAg
ICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNDZWxsT3RoZXIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTY0Miw4ICs2NDMsOCBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIEZvcmNlT1NSRXhpdDoKICAgICAgICAgY2FzZSBTZXRBcmd1bWVudDoKICAgICAg
ICAgY2FzZSBDaGVja1N0cnVjdHVyZToKLSAgICAgICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6Ci0g
ICAgICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBDaGVja0NlbGw6CisgICAg
ICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgICAgICBjYXNlIFB1dFN0cnVjdHVyZToKICAgICAg
ICAgY2FzZSBUZWFyT2ZmQWN0aXZhdGlvbjoKICAgICAgICAgY2FzZSBUZWFyT2ZmQXJndW1lbnRz
OgpAQCAtNjY1LDYgKzY2NiwxMCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFpvbWJpZUhpbnQ6
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAorICAgICAgICAvLyBUaGlzIGdldHMg
aWdub3JlZCBiZWNhdXNlIGl0IG9ubHkgcHJldGVuZHMgdG8gcHJvZHVjZSBhIHZhbHVlLgorICAg
ICAgICBjYXNlIEJvdHRvbVZhbHVlOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAK
ICAgICAgICAgLy8gVGhpcyBnZXRzIGlnbm9yZWQgYmVjYXVzZSBpdCBhbHJlYWR5IGhhcyBhIHBy
ZWRpY3Rpb24uCiAgICAgICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAgICAgICAgICAg
ICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSw3IEBAIGJvb2wg
c2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIFB1dEJ5SWRGbHVz
aDoKICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKLSAg
ICBjYXNlIENoZWNrRXhlY3V0YWJsZToKKyAgICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAgY2Fz
ZSBHZXRCdXR0ZXJmbHk6CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgQXJyYXlpZnk6
CkBAIC0xNzQsNyArMTc0LDggQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBl
JiBzdAogICAgIGNhc2UgUHV0R2xvYmFsVmFyOgogICAgIGNhc2UgVmFyaWFibGVXYXRjaHBvaW50
OgogICAgIGNhc2UgVmFySW5qZWN0aW9uV2F0Y2hwb2ludDoKLSAgICBjYXNlIENoZWNrRnVuY3Rp
b246CisgICAgY2FzZSBDaGVja0NlbGw6CisgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgY2Fz
ZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBSZWdFeHBFeGVjOgogICAg
IGNhc2UgUmVnRXhwVGVzdDoKQEAgLTI3Myw2ICsyNzQsMTEgQEAgYm9vbCBzYWZlVG9FeGVjdXRl
KEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OgogICAgICAg
ICByZXR1cm4gZmFsc2U7IC8vIFRPRE86IGFkZCBhIGNoZWNrIGZvciBhbHJlYWR5IGNoZWNrZWQu
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNzY5CiAKKyAgICBj
YXNlIEJvdHRvbVZhbHVlOgorICAgICAgICAvLyBJZiBpbiBkb3VidCwgYXNzdW1lIHRoYXQgdGhp
cyBpc24ndCBzYWZlIHRvIGV4ZWN1dGUsIGp1c3QgYmVjYXVzZSB3ZSBoYXZlIG5vIHdheSBvZgor
ICAgICAgICAvLyBjb21waWxpbmcgdGhpcyBub2RlLgorICAgICAgICByZXR1cm4gZmFsc2U7CisK
ICAgICBjYXNlIEdldEJ5VmFsOgogICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToK
ICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxNzI4NTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02ODksNiArNjg5LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRDYWxsKE5vZGUqIG5vZGUKIAogICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4obm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAKKyAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2pp
dC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7CisKKyAgICBpZiAobV9qaXQuZ3JhcGgo
KS5tX3Nob3VsZFByb2ZpbGUgJiYgIW1fc3RhdGUuZm9yTm9kZShjYWxsZWVFZGdlKS5tX3ZhbHVl
KSB7CisgICAgICAgIG1faml0LnZtKCkuY2FsbEVkZ2VMb2ctPmVtaXRMb2dDb2RlKAorICAgICAg
ICAgICAgbV9qaXQsIGNhbGxMaW5rSW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBjYWxsZWUuanNWYWx1
ZVJlZ3MoKSk7CisgICAgfQorICAgIAogICAgIHNsb3dQYXRoLmFwcGVuZChicmFuY2hOb3RDZWxs
KGNhbGxlZS5qc1ZhbHVlUmVncygpKSk7CiAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5j
aFB0cldpdGhQYXRjaChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxlZVBheWxvYWRHUFIs
IHRhcmdldFRvQ2hlY2spKTsKICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGNhbGxlZVBheWxvYWRHUFIsIE9CSkVDVF9PRkZTRVRPRihKU0Z1bmN0aW9uLCBtX3Njb3Bl
KSksIHJlc3VsdFBheWxvYWRHUFIpOwpAQCAtNzEzLDcgKzcyMCw2IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgbV9qaXQubW92ZShjYWxsZWVQYXls
b2FkR1BSLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgIG1faml0Lm1vdmUoY2FsbGVlVGFnR1BS
LCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgfQotICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1faml0
LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGluZm8pLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgc2xvd0NhbGwgPSBtX2ppdC5uZWFyQ2FsbCgpOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlz
aW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyNiw3ICs2MjYsNiBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlTWlzY1N0cmljdEVxCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRD
YWxsKE5vZGUqIG5vZGUpCiB7Ci0KICAgICBib29sIGlzQ2FsbCA9IG5vZGUtPm9wKCkgPT0gQ2Fs
bDsKICAgICBpZiAoIWlzQ2FsbCkKICAgICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBu
b2RlLCBub2RlLT5vcCgpID09IENvbnN0cnVjdCk7CkBAIC02NzAsNiArNjY5LDE1IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKIAogICAgIG1faml0LmVtaXRTdG9y
ZUNvZGVPcmlnaW4obm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAKKyAgICBDYWxsTGlua0lu
Zm8qIGNhbGxMaW5rSW5mbyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsK
KyAgICAKKyAgICBpZiAoQ2FsbEVkZ2VMb2c6OmlzRW5hYmxlZCgpCisgICAgICAgICYmIG1faml0
LmdyYXBoKCkubV9zaG91bGRQcm9maWxlCisgICAgICAgICYmICFtX3N0YXRlLmZvck5vZGUoY2Fs
bGVlRWRnZSkubV92YWx1ZSkgeworICAgICAgICBtX2ppdC52bSgpLT5jYWxsRWRnZUxvZy0+ZW1p
dExvZ0NvZGUoCisgICAgICAgICAgICBtX2ppdCwgY2FsbExpbmtJbmZvLT5jYWxsRWRnZVByb2Zp
bGUsIEpTVmFsdWVSZWdzKGNhbGxlZUdQUikpOworICAgIH0KKwogICAgIHNsb3dQYXRoID0gbV9q
aXQuYnJhbmNoUHRyV2l0aFBhdGNoKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgY2FsbGVlR1BS
LCB0YXJnZXRUb0NoZWNrLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigwKSk7CiAKICAg
ICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNhbGxlZUdQUiwgT0JKRUNU
X09GRlNFVE9GKEpTRnVuY3Rpb24sIG1fc2NvcGUpKSwgcmVzdWx0R1BSKTsKQEAgLTY4Miw3ICs2
OTAsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgc2xv
d1BhdGgubGluaygmbV9qaXQpOwogICAgIAogICAgIG1faml0Lm1vdmUoY2FsbGVlR1BSLCBHUFJJ
bmZvOjpyZWdUMCk7IC8vIENhbGxlZSBuZWVkcyB0byBiZSBpbiByZWdUMAotICAgIENhbGxMaW5r
SW5mbyogY2FsbExpbmtJbmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbygp
OwogICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJ
bmZvKSwgR1BSSW5mbzo6cmVnVDIpOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8gYmUgaW4gcmVnVDIK
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7CiAgICAg
CkBAIC0zNzY4LDE4ICszNzc1LDIxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgY29tcGlsZUdldEFycmF5TGVuZ3RoKG5vZGUpOwogICAgICAgICBi
cmVhazsKICAgICAgICAgCi0gICAgY2FzZSBDaGVja0Z1bmN0aW9uOiB7Ci0gICAgICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIGZ1bmN0aW9uKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhCYWRGdW5jdGlvbiwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
ZnVuY3Rpb24uZ3ByKCkpLCBub2RlLT5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoV2Vha1B0cihKSVRD
b21waWxlcjo6Tm90RXF1YWwsIGZ1bmN0aW9uLmdwcigpLCBub2RlLT5mdW5jdGlvbigpLT52YWx1
ZSgpLmFzQ2VsbCgpKSk7CisgICAgY2FzZSBDaGVja0NlbGw6IHsKKyAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgY2VsbCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soQmFkQ2VsbCwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbC5ncHIoKSks
IG5vZGUtPmNoaWxkMSgpLCBtX2ppdC5icmFuY2hXZWFrUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVh
bCwgY2VsbC5ncHIoKSwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5hc0NlbGwoKSkpOwog
ICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAK
LSAgICBjYXNlIENoZWNrRXhlY3V0YWJsZTogeworICAgIGNhc2UgR2V0RXhlY3V0YWJsZTogewog
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmdW5jdGlvbih0aGlzLCBub2RlLT5jaGlsZDEo
KSk7Ci0gICAgICAgIHNwZWN1bGF0ZUNlbGxUeXBlKG5vZGUtPmNoaWxkMSgpLCBmdW5jdGlvbi5n
cHIoKSwgU3BlY0Z1bmN0aW9uLCBKU0Z1bmN0aW9uVHlwZSk7Ci0gICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soQmFkRXhlY3V0YWJsZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoZnVuY3Rpb24u
Z3ByKCkpLCBub2RlLT5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6
Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Z1bmN0aW9u
OjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIG5vZGUtPmV4ZWN1dGFibGUoKSkpOwotICAgICAgICBu
b1Jlc3VsdChub2RlKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwg
ZnVuY3Rpb24pOworICAgICAgICBHUFJSZWcgZnVuY3Rpb25HUFIgPSBmdW5jdGlvbi5ncHIoKTsK
KyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgc3BlY3Vs
YXRlQ2VsbFR5cGUobm9kZS0+Y2hpbGQxKCksIGZ1bmN0aW9uR1BSLCBTcGVjRnVuY3Rpb24sIEpT
RnVuY3Rpb25UeXBlKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVz
cyhmdW5jdGlvbkdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCByZXN1bHRH
UFIpOworICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICAgICAgCkBAIC00OTcwLDcgKzQ5ODAsOSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAg
IGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKICAgICBjYXNlIEZpYXRJbnQ1MjoKLSAgICAgICAgREZH
X0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJVbmV4cGVjdGVkIEZUTCBub2RlIik7CisgICAg
Y2FzZSBDaGVja0JhZENlbGw6CisgICAgY2FzZSBCb3R0b21WYWx1ZToKKyAgICAgICAgREZHX0NS
QVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJVbmV4cGVjdGVkIG5vZGUiKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzNTQsNiAr
NTM1NCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoKE5vZGUqIG5vCiAgICAg
Y2FzZSBTd2l0Y2hTdHJpbmc6IHsKICAgICAgICAgZW1pdFN3aXRjaFN0cmluZyhub2RlLCBkYXRh
KTsKICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNlIFN3aXRjaENlbGw6IHsKKyAgICAg
ICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJCYWQgc3dpdGNoIGtpbmQiKTsKKyAg
ICAgICAgcmV0dXJuOwogICAgIH0gfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYyLDEwICs2Miw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENo
ZWNrRXhlY3V0YWJsZToKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobm9k
ZS0+ZXhlY3V0YWJsZSgpLT5zdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6
CiAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlcyhub2RlLT5zdHJ1Y3R1cmVT
ZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2Uu
Y3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Rp
ZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw4
IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFPcHRpb25zOjplbmFibGVPU1JFbnRyeVRvRlRMKCkp
CiAgICAgICAgICAgICBsZXZlbCA9IEZUTDo6Q2FuQ29tcGlsZTsKICAgICAgICAgCisgICAgICAg
IG1fZ3JhcGgubV9zaG91bGRQcm9maWxlID0gdHJ1ZTsKKyAgICAgICAgCiAgICAgICAgIEluc2Vy
dGlvblNldCBpbnNlcnRpb25TZXQobV9ncmFwaCk7CiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBi
bG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewogICAgICAg
ICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHJldmlzaW9uIDE3
Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMDAsNyArMjAwLDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW1heUV4aXQobV9ncmFwaCwgbm9kZSkg
fHwgbm9kZS0+b3JpZ2luLmZvckV4aXQuaXNTZXQoKSk7CiAgICAgICAgICAgICAgICAgVkFMSURB
VEUoKG5vZGUpLCAhbm9kZS0+aGFzU3RydWN0dXJlKCkgfHwgISFub2RlLT5zdHJ1Y3R1cmUoKSk7
Ci0gICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+aGFzRnVuY3Rpb24oKSB8
fCBub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpLmlzRnVuY3Rpb24oKSk7CisgICAgICAgICAgICAg
ICAgVkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+aGFzQ2VsbE9wZXJhbmQoKSB8fCBub2RlLT5jZWxs
T3BlcmFuZCgpLT52YWx1ZSgpLmlzQ2VsbCgpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSgo
bm9kZSksICFub2RlLT5oYXNDZWxsT3BlcmFuZCgpIHx8ICEhbm9kZS0+Y2VsbE9wZXJhbmQoKS0+
dmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmICghKG5vZGUt
PmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncykpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFu
b2RlLT5jaGlsZDIoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hw
b2ludENvbGxlY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTcyODU5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXYXRjaHBvaW50Q29sbGVjdGlvblBo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTE0LDcgKzExNCw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxl
V2F0Y2hwb2ludDoKLSAgICAgICAgICAgIGFkZExhemlseShqc0Nhc3Q8SlNGdW5jdGlvbio+KG1f
bm9kZS0+ZnVuY3Rpb24oKS0+dmFsdWUoKSktPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNl
dCgpKTsKKyAgICAgICAgICAgIGFkZExhemlseShqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fbm9kZS0+
Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKSktPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgp
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVmFyaWFi
bGVXYXRjaHBvaW50OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDgg
QEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgUHV0
Q2xvc3VyZVZhcjoKICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50OgogICAgIGNhc2UgU3RyaW5n
Q2hhckF0OgotICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKKyAgICBjYXNlIENoZWNrQ2VsbDoKKyAg
ICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAgY2Fz
ZSBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0eVN0
b3JhZ2U6CkBAIC0xMjYsNyArMTI3LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21w
aWxlKE5vZGUqIAogICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENo
ZWNrOgogICAgIGNhc2UgQ291bnRFeGVjdXRpb246Ci0gICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6
CisgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgogICAgIGNhc2UgR2V0U2NvcGU6CiAgICAgY2FzZSBB
bGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBDaGVja0FyZ3VtZW50c05vdENy
ZWF0ZWQ6CkBAIC0xNjYsNiArMTY3LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21w
aWxlKE5vZGUqIAogICAgIGNhc2UgR2V0R2VuZXJpY1Byb3BlcnR5RW51bWVyYXRvcjoKICAgICBj
YXNlIEdldEVudW1lcmF0b3JQbmFtZToKICAgICBjYXNlIFRvSW5kZXhTdHJpbmc6CisgICAgY2Fz
ZSBCb3R0b21WYWx1ZToKICAgICAgICAgLy8gVGhlc2UgYXJlIE9LLgogICAgICAgICBicmVhazsK
ICAgICBjYXNlIElkZW50aXR5OgpAQCAtMzI2LDYgKzMyOCw3IEBAIGlubGluZSBDYXBhYmlsaXR5
TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICAgICAgc3dpdGNoIChub2RlLT5zd2l0Y2hEYXRh
KCktPmtpbmQpIHsKICAgICAgICAgY2FzZSBTd2l0Y2hJbW06CiAgICAgICAgIGNhc2UgU3dpdGNo
Q2hhcjoKKyAgICAgICAgY2FzZSBTd2l0Y2hDZWxsOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZp
c2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9M
TFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNiBAQCBOT19SRVRVUk5fRFVFX1RP
X0NSQVNIIHN0YXRpYyB2b2lkIGZ0bFVuCiBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHN0YXRpYyB2
b2lkIGZ0bFVucmVhY2hhYmxlKAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBCbG9ja0luZGV4
IGJsb2NrSW5kZXgsIHVuc2lnbmVkIG5vZGVJbmRleCkKIHsKLSAgICAKICAgICBkYXRhTG9nKCJD
cmFzaGluZyBpbiB0aG91Z2h0LXRvLWJlLXVucmVhY2hhYmxlIEZUTC1nZW5lcmF0ZWQgY29kZSBm
b3IgIiwgcG9pbnRlckR1bXAoY29kZUJsb2NrKSwgIiBhdCBiYXNpYyBibG9jayAjIiwgYmxvY2tJ
bmRleCk7CiAgICAgaWYgKG5vZGVJbmRleCAhPSBVSU5UX01BWCkKICAgICAgICAgZGF0YUxvZygi
LCBub2RlIEAiLCBub2RlSW5kZXgpOwpAQCAtMTUzLDExICsxNTIsMTcgQEAgcHVibGljOgogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGJsb2NrSW5kZXggPSBkZXB0aEZpcnN0LnNpemUoKTsgYmxvY2tJ
bmRleC0tOyApIHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gZGVwdGhGaXJzdFti
bG9ja0luZGV4XTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4ID0gYmxvY2st
PnNpemUoKTsgbm9kZUluZGV4LS07ICkgewotICAgICAgICAgICAgICAgIE5vZGUqIG1fbm9kZSA9
IGJsb2NrLT5hdChub2RlSW5kZXgpOwotICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmhhc0tu
b3duRnVuY3Rpb24oKSkgeworICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQo
bm9kZUluZGV4KTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKKyAgICAg
ICAgICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6CisgICAgICAgICAgICAgICAgY2FzZSBOYXRpdmVD
b25zdHJ1Y3Q6IHsKICAgICAgICAgICAgICAgICAgICAgaW50IG51bUFyZ3MgPSBtX25vZGUtPm51
bUNoaWxkcmVuKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChudW1BcmdzID4gbWF4TnVtYmVy
T2ZBcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgICAgICAgICBtYXhOdW1iZXJPZkFyZ3VtZW50
cyA9IG51bUFyZ3M7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ2OCwxMSAr
NDczLDE0IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgICAg
ICAgICBjb21waWxlQ2hlY2tTdHJ1Y3R1cmUoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIENoZWNrRnVuY3Rpb246Ci0gICAgICAgICAgICBjb21waWxlQ2hlY2tGdW5jdGlvbigp
OworICAgICAgICBjYXNlIENoZWNrQ2VsbDoKKyAgICAgICAgICAgIGNvbXBpbGVDaGVja0NlbGwo
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKKyAgICAg
ICAgICAgIGNvbXBpbGVDaGVja0JhZENlbGwoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIENoZWNrRXhlY3V0YWJsZToKLSAgICAgICAgICAgIGNvbXBpbGVDaGVja0V4ZWN1dGFi
bGUoKTsKKyAgICAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgorICAgICAgICAgICAgY29tcGlsZUdl
dEV4ZWN1dGFibGUoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5aWZ5
VG9TdHJ1Y3R1cmU6CiAgICAgICAgICAgICBjb21waWxlQXJyYXlpZnlUb1N0cnVjdHVyZSgpOwpA
QCAtMTc0MywyNiArMTc1MSwyNSBAQCBwcml2YXRlOgogICAgICAgICBtX291dC5hcHBlbmRUbyhj
b250aW51YXRpb24sIGxhc3ROZXh0KTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21waWxlQ2hl
Y2tGdW5jdGlvbigpCisgICAgdm9pZCBjb21waWxlQ2hlY2tDZWxsKCkKICAgICB7CiAgICAgICAg
IExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgCiAgICAg
ICAgIHNwZWN1bGF0ZSgKLSAgICAgICAgICAgIEJhZEZ1bmN0aW9uLCBqc1ZhbHVlVmFsdWUoY2Vs
bCksIG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpLAotICAgICAgICAgICAgbV9vdXQubm90RXF1YWwo
Y2VsbCwgd2Vha1BvaW50ZXIobV9ub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpLmFzQ2VsbCgpKSkp
OworICAgICAgICAgICAgQmFkQ2VsbCwganNWYWx1ZVZhbHVlKGNlbGwpLCBtX25vZGUtPmNoaWxk
MSgpLm5vZGUoKSwKKyAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKGNlbGwsIHdlYWtQb2ludGVy
KG1fbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5hc0NlbGwoKSkpKTsKICAgICB9CiAgICAg
Ci0gICAgdm9pZCBjb21waWxlQ2hlY2tFeGVjdXRhYmxlKCkKKyAgICB2b2lkIGNvbXBpbGVDaGVj
a0JhZENlbGwoKQorICAgIHsKKyAgICAgICAgdGVybWluYXRlKEJhZENlbGwpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGNvbXBpbGVHZXRFeGVjdXRhYmxlKCkKICAgICB7CiAgICAgICAgIExWYWx1
ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgCiAgICAgICAgIHNw
ZWN1bGF0ZUZ1bmN0aW9uKG1fbm9kZS0+Y2hpbGQxKCksIGNlbGwpOwotICAgICAgICAKLSAgICAg
ICAgc3BlY3VsYXRlKAotICAgICAgICAgICAgQmFkRXhlY3V0YWJsZSwganNWYWx1ZVZhbHVlKGNl
bGwpLCBtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSwKLSAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFs
KAotICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0Z1bmN0aW9u
X2V4ZWN1dGFibGUpLAotICAgICAgICAgICAgICAgIHdlYWtQb2ludGVyKG1fbm9kZS0+ZXhlY3V0
YWJsZSgpKSkpOworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFw
cy5KU0Z1bmN0aW9uX2V4ZWN1dGFibGUpKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxl
QXJyYXlpZnlUb1N0cnVjdHVyZSgpCkBAIC0zNjczLDkgKzM2ODAsNyBAQCBwcml2YXRlOgogICAg
ICAgICBpbnQgbnVtUGFzc2VkQXJncyA9IG1fbm9kZS0+bnVtQ2hpbGRyZW4oKSAtIDE7CiAgICAg
ICAgIGludCBudW1BcmdzID0gbnVtUGFzc2VkQXJncyArIGR1bW15VGhpc0FyZ3VtZW50OwogCi0g
ICAgICAgIEFTU0VSVChtX25vZGUtPmhhc0tub3duRnVuY3Rpb24oKSk7Ci0KLSAgICAgICAgSlNG
dW5jdGlvbioga25vd25GdW5jdGlvbiA9IG1fbm9kZS0+a25vd25GdW5jdGlvbigpOworICAgICAg
ICBKU0Z1bmN0aW9uKiBrbm93bkZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihtX25vZGUt
PmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuYXNDZWxsKCkpOwogICAgICAgICBOYXRpdmVGdW5jdGlv
biBmdW5jdGlvbiA9IGtub3duRnVuY3Rpb24tPm5hdGl2ZUZ1bmN0aW9uKCk7CiAKICAgICAgICAg
RGxfaW5mbyBpbmZvOwpAQCAtMzkxOCwxMCArMzkyMywzNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBjYXNlIFN3aXRjaFN0cmlu
ZzoKKyAgICAgICAgY2FzZSBTd2l0Y2hTdHJpbmc6IHsKICAgICAgICAgICAgIERGR19DUkFTSCht
X2dyYXBoLCBtX25vZGUsICJVbmltcGxlbWVudGVkIik7Ci0gICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2Ug
U3dpdGNoQ2VsbDogeworICAgICAgICAgICAgTFZhbHVlIGNlbGw7CisgICAgICAgICAgICBzd2l0
Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgICAgICAgICBjYXNlIENlbGxV
c2U6IHsKKyAgICAgICAgICAgICAgICBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICAgICAgICAgIExWYWx1ZSB2
YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgTEJh
c2ljQmxvY2sgY2VsbENhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIlN3aXRjaC9Td2l0Y2hD
ZWxsIGNlbGwgY2FzZSIpKTsKKyAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCisgICAgICAg
ICAgICAgICAgICAgIGlzQ2VsbCh2YWx1ZSksIHVuc3VyZShjZWxsQ2FzZSksIHVuc3VyZShsb3dC
bG9jayhkYXRhLT5mYWxsVGhyb3VnaC5ibG9jaykpKTsKKyAgICAgICAgICAgICAgICBtX291dC5h
cHBlbmRUbyhjZWxsQ2FzZSk7CisgICAgICAgICAgICAgICAgY2VsbCA9IHZhbHVlOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2Rl
LCAiQmFkIHVzZSBraW5kIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgICAgICBidWlsZFN3aXRjaChtX25vZGUtPnN3aXRjaERh
dGEoKSwgbV9vdXQuaW50UHRyLCBjZWxsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fSB9CiAgICAgICAgIAogICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiQmFkIHN3
aXRjaCBraW5kIik7CiAgICAgfQpAQCAtNTE4Niw3ICs1MjE4LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgVmVjdG9yPFN3aXRjaENhc2U+IGNhc2VzOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgZGF0YS0+Y2FzZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGNhc2VzLmFwcGVu
ZChTd2l0Y2hDYXNlKAotICAgICAgICAgICAgICAgIGNvbnN0SW50KHR5cGUsIGRhdGEtPmNhc2Vz
W2ldLnZhbHVlLnN3aXRjaExvb2t1cFZhbHVlKCkpLAorICAgICAgICAgICAgICAgIGNvbnN0SW50
KHR5cGUsIGRhdGEtPmNhc2VzW2ldLnZhbHVlLnN3aXRjaExvb2t1cFZhbHVlKGRhdGEtPmtpbmQp
KSwKICAgICAgICAgICAgICAgICBsb3dCbG9jayhkYXRhLT5jYXNlc1tpXS50YXJnZXQuYmxvY2sp
LCBXZWlnaHQoZGF0YS0+Y2FzZXNbaV0udGFyZ2V0LmNvdW50KSkpOwogICAgICAgICB9CiAgICAg
ICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDE3Mjg1
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05ODQsNiArOTg0LDExIEBAIHZvaWQgSGVhcDo6Y29sbGVjdChIZWFwT3BlcmF0aW9uIGNv
bGxlY3QKICAgICAgICAgdm0oKS0+dHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVz
KEFTQ0lJTGl0ZXJhbCgiR0MiKSk7CiAgICAgfQogICAgIAorICAgIGlmICh2bSgpLT5jYWxsRWRn
ZUxvZykgeworICAgICAgICBEZWZlckdDRm9yQVdoaWxlIGF3aGlsZSgqdGhpcyk7CisgICAgICAg
IHZtKCktPmNhbGxFZGdlTG9nLT5yb3RhdGVBbmRQcm9jZXNzKCk7CisgICAgfQorICAgIAogICAg
IFJFTEVBU0VfQVNTRVJUKCFtX2RlZmVycmFsRGVwdGgpOwogICAgIEFTU0VSVCh2bSgpLT5jdXJy
ZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLT5h
dG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgp
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAko
cmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsMjEgQEAgcHVibGljOgogI2VuZGlm
CiAgICAgfQogICAgIAorICAgIHZvaWQgbG9hZFZhbHVlKEFkZHJlc3MgYWRkcmVzcywgSlNWYWx1
ZVJlZ3MgcmVncykKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbG9hZDY0KGFk
ZHJlc3MsIHJlZ3MuZ3ByKCkpOworI2Vsc2UKKyAgICAgICAgaWYgKGFkZHJlc3MuYmFzZSA9PSBy
ZWdzLnBheWxvYWRHUFIoKSkgeworICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNl
dChUYWdPZmZzZXQpLCByZWdzLnRhZ0dQUigpKTsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNz
LndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCksIHJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoUGF5bG9hZE9m
ZnNldCksIHJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndp
dGhPZmZzZXQoVGFnT2Zmc2V0KSwgcmVncy50YWdHUFIoKSk7CisgICAgICAgIH0KKyNlbmRpZgor
ICAgIH0KKyAgICAKICAgICB2b2lkIG1vdmVUcnVzdGVkVmFsdWUoSlNWYWx1ZSB2YWx1ZSwgSlNW
YWx1ZVJlZ3MgcmVncykKICAgICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAkocmV2aXNpb24gMTcyODU5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAt
MTY2Niw2ICsxNjY2LDE1IEBAIHB1YmxpYzoKICAgICAgICAgbW92ZShhcmc0LCBHUFJJbmZvOjph
cmd1bWVudEdQUjMpOwogICAgIH0KICNlbmRpZgorICAgIAorICAgIHZvaWQgc2V0dXBBcmd1bWVu
dHMoSlNWYWx1ZVJlZ3MgYXJnMSkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAg
c2V0dXBBcmd1bWVudHMoYXJnMS5ncHIoKSk7CisjZWxzZQorICAgICAgICBzZXR1cEFyZ3VtZW50
cyhhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSk7CisjZW5kaWYKKyAgICB9CiAKICAg
ICB2b2lkIHNldHVwUmVzdWx0cyhHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QikKICAgICB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAkocmV2aXNpb24gMTcyODU5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTYw
LDYgKzYwLDggQEAgcHVibGljOgogICAgIEdQUlJlZyB0YWdHUFIoKSBjb25zdCB7IHJldHVybiBJ
bnZhbGlkR1BSUmVnOyB9CiAgICAgR1BSUmVnIHBheWxvYWRHUFIoKSBjb25zdCB7IHJldHVybiBt
X2dwcjsgfQogICAgIAorICAgIGJvb2wgdXNlcyhHUFJSZWcgZ3ByKSBjb25zdCB7IHJldHVybiBt
X2dwciA9PSBncHI7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByOwogfTsKQEAg
LTE2OSw2ICsxNzEsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0YWdHUFIoKTsKICAgICB9
CiAKKyAgICBib29sIHVzZXMoR1BSUmVnIGdwcikgY29uc3QgeyByZXR1cm4gbV90YWdHUFIgPT0g
Z3ByIHx8IG1fcGF5bG9hZEdQUiA9PSBncHI7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgaW50OF90
IG1fdGFnR1BSOwogICAgIGludDhfdCBtX3BheWxvYWRHUFI7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMwMCw2ICszMDAsMTMgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2Rl
SQogICAgIHN0b3JlMzIocmVnVDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpTU3Rh
Y2s6OkNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2Fk
T2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAgICAgc3RvcmUzMihyZWdUMSwg
QWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgSlNTdGFjazo6Q2FsbGVlICogc3RhdGljX2Nh
c3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFRhZ09mZnNldCAtIHNpemVvZihDYWxsZXJGcmFt
ZUFuZFBDKSkpOwogCisgICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENh
bGxMaW5rSW5mbygpOworCisgICAgaWYgKENhbGxFZGdlTG9nOjppc0VuYWJsZWQoKSAmJiBzaG91
bGRFbWl0UHJvZmlsaW5nKCkpIHsKKyAgICAgICAgbV92bS0+ZW5zdXJlQ2FsTEVkZ2VMb2coKS5l
bWl0TG9nQ29kZSgKKyAgICAgICAgICAgICp0aGlzLCBpbmZvLT5jYWxsRWRnZVByb2ZpbGUsIEpT
VmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkpOworICAgIH0KKwogICAgIGlmIChvcGNvZGVJRCA9PSBv
cF9jYWxsX2V2YWwpIHsKICAgICAgICAgY29tcGlsZUNhbGxFdmFsKGluc3RydWN0aW9uKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMzEzLDcgKzMyMCw2IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxs
KE9wY29kZUlEIG9wY29kZUkKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZSk7CiAKICAgICBBU1NF
UlQobV9jYWxsQ29tcGlsYXRpb25JbmZvLnNpemUoKSA9PSBjYWxsTGlua0luZm9JbmRleCk7Ci0g
ICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5mbygpOwog
ICAgIGluZm8tPmNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJRCk7
CiAgICAgaW5mby0+Y29kZU9yaWdpbiA9IENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCk7CiAg
ICAgaW5mby0+Y2FsbGVlR1BSID0gcmVnVDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENhbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQ2FsbC5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ2FsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMiw2ICsyMTIsMTEgQEAgdm9pZCBK
SVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoY2FsbGVlLCByZWdUMCk7IC8vIHJlZ1QwIGhvbGRzIGNhbGxlZS4KIAogICAgIHN0b3Jl
NjQocmVnVDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpTU3RhY2s6OkNhbGxlZSAq
IHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVB
bmRQQykpKTsKKyAgICAKKyAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2NvZGVCbG9jay0+YWRk
Q2FsbExpbmtJbmZvKCk7CisKKyAgICBpZiAoQ2FsbEVkZ2VMb2c6OmlzRW5hYmxlZCgpICYmIHNo
b3VsZEVtaXRQcm9maWxpbmcoKSkKKyAgICAgICAgbV92bS0+ZW5zdXJlQ2FsbEVkZ2VMb2coKS5l
bWl0TG9nQ29kZSgqdGhpcywgaW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBKU1ZhbHVlUmVncyhyZWdU
MCkpOwogCiAgICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCkgewogICAgICAgICBjb21w
aWxlQ2FsbEV2YWwoaW5zdHJ1Y3Rpb24pOwpAQCAtMjIzLDcgKzIyOCw2IEBAIHZvaWQgSklUOjpj
b21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZSk7
CiAKICAgICBBU1NFUlQobV9jYWxsQ29tcGlsYXRpb25JbmZvLnNpemUoKSA9PSBjYWxsTGlua0lu
Zm9JbmRleCk7Ci0gICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxM
aW5rSW5mbygpOwogICAgIGluZm8tPmNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZv
cihvcGNvZGVJRCk7CiAgICAgaW5mby0+Y29kZU9yaWdpbiA9IENvZGVPcmlnaW4obV9ieXRlY29k
ZU9mZnNldCk7CiAgICAgaW5mby0+Y2FsbGVlR1BSID0gcmVnVDA7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Nyw2
ICsxNjcsMTMgQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAgdihib29s
LCBlbmFibGVBY2Nlc3NJbmxpbmluZywgdHJ1ZSkgXAogICAgIHYoYm9vbCwgZW5hYmxlUG9seXZh
cmlhbnREZXZpcnR1YWxpemF0aW9uLCB0cnVlKSBcCiAgICAgdihib29sLCBlbmFibGVQb2x5bW9y
cGhpY0FjY2Vzc0lubGluaW5nLCB0cnVlKSBcCisgICAgdihib29sLCBlbmFibGVQb2x5bW9ycGhp
Y0NhbGxJbmxpbmluZywgdHJ1ZSkgXAorICAgIHYoYm9vbCwgY2FsbFN0YXR1c1Nob3VsZFVzZUNh
bGxFZGdlUHJvZmlsZSwgdHJ1ZSkgXAorICAgIHYoYm9vbCwgZW5hYmxlQ2FsbEVkZ2VQcm9maWxp
bmcsIHRydWUpIFwKKyAgICB2KGJvb2wsIGNhbGxFZGdlUHJvZmlsZVJlYWxseVByb2Nlc3Nlc0xv
ZywgdHJ1ZSkgXAorICAgIHYoYm9vbCwgdmVyYm9zZUNhbGxFZGdlUHJvZmlsZVJhY2UsIGZhbHNl
KSBcCisgICAgdihib29sLCBlbmFibGVBc3luY2hyb25vdXNMb2dQcm9jZXNzaW5nLCB0cnVlKSBc
CisgICAgdih1bnNpZ25lZCwgZnJlcXVlbnRDYWxsVGhyZXNob2xkLCAyKSBcCiAgICAgdihib29s
LCBvcHRpbWl6ZU5hdGl2ZUNhbGxzLCBmYWxzZSkgXAogICAgIFwKICAgICB2KGJvb2wsIGVuYWJs
ZUNvbmN1cnJlbnRKSVQsIHRydWUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzczLDYgKzM3MywxMyBAQCBWTSomIFZNOjpzaGFy
ZWRJbnN0YW5jZUludGVybmFsKCkKICAgICByZXR1cm4gc2hhcmVkSW5zdGFuY2U7CiB9CiAKK0Nh
bGxFZGdlTG9nJiBWTTo6ZW5zdXJlQ2FsbEVkZ2VMb2coKQoreworICAgIGlmICghY2FsbEVkZ2VM
b2cpCisgICAgICAgIGNhbGxFZGdlTG9nID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsRWRnZUxvZz4o
KTsKKyAgICByZXR1cm4gKmNhbGxFZGdlTG9nOworfQorCiAjaWYgRU5BQkxFKEpJVCkKIHN0YXRp
YyBUaHVua0dlbmVyYXRvciB0aHVua0dlbmVyYXRvckZvckludHJpbnNpYyhJbnRyaW5zaWMgaW50
cmluc2ljKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAx
NzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNv
cHkpCkBAIC03Miw2ICs3Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQXJpdHlD
aGVja0ZhaWxSZXR1cm5UaHVua3M7CiAgICAgY2xhc3MgQnVpbHRpbkV4ZWN1dGFibGVzOworICAg
IGNsYXNzIENhbGxFZGdlTG9nOwogICAgIGNsYXNzIENvZGVCbG9jazsKICAgICBjbGFzcyBDb2Rl
Q2FjaGU7CiAgICAgY2xhc3MgQ29tbW9uSWRlbnRpZmllcnM7CkBAIC0yMzMsNiArMjM0LDkgQEAg
bmFtZXNwYWNlIEpTQyB7CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIE93blB0cjxERkc6
OkxvbmdMaXZlZFN0YXRlPiBkZmdTdGF0ZTsKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKyAg
ICAgICAgCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsRWRnZUxvZz4gY2FsbEVkZ2VMb2c7
CisgICAgICAgIENhbGxFZGdlTG9nJiBlbnN1cmVDYWxsRWRnZUxvZygpOwogCiAgICAgICAgIFZN
VHlwZSB2bVR5cGU7CiAgICAgICAgIENsaWVudERhdGEqIGNsaWVudERhdGE7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL25ldy1hcnJheS10aGVuLWV4aXQuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9uZXctYXJyYXkt
dGhlbi1leGl0LmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9uZXctYXJyYXktdGhlbi1leGl0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTQgQEAKK2Z1bmN0aW9uIGZvbyhmKSB7CisgICAgcmV0dXJuIG5ldyBmKCk7Cit9CisKK25vSW5s
aW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKKyAgICBmb28oQXJy
YXkpOworCit2YXIgZGlkQ2FsbCA9IGZhbHNlOworZm9vKGZ1bmN0aW9uKCkgeyBkaWRDYWxsID0g
dHJ1ZTsgfSk7CisKK2lmICghZGlkQ2FsbCkKKyAgICB0aHJvdyAiRXJyb3I6IGRpZG4ndCBjYWxs
IG15IGZ1bmN0aW9uLiI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L3BvbHktY2FsbC1leGl0LXRoaXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9wb2x5LWNhbGwtZXhpdC10aGlzLmpzCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wb2x5LWNhbGwtZXhpdC10aGlzLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjkgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBmdW5j
dGlvbiBmb28oeCkgeyByZXR1cm4gMSArIHRoaXMuZjsgfQorICAgIGZ1bmN0aW9uIGJhcih4KSB7
IHJldHVybiB4ICsgdGhpcy5mOyB9CisgICAgZnVuY3Rpb24gYmF6KHgpIHsgcmV0dXJuIHggKyAx
ICsgdGhpcy5mOyB9CisgICAgCisgICAgdmFyIG4gPSAxMDAwMDAwOworICAgIAorICAgIHZhciBy
ZXN1bHQgPSAoZnVuY3Rpb24obykgeworICAgICAgICB2YXIgZiA9IHtmdW46Zm9vLCBmOjF9Owor
ICAgICAgICB2YXIgZyA9IHtmdW46YmFyLCBmOjJ9OworICAgICAgICB2YXIgaCA9IHtmdW46YmF6
LCBmOjN9OworICAgICAgICAKKyAgICAgICAgdmFyIHJlc3VsdCA9IDA7CisgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgICAgICBpZiAoaSA9PSBuIC0gMSkKKyAg
ICAgICAgICAgICAgICBmID0gaDsKKyAgICAgICAgICAgIHJlc3VsdCArPSBmLmZ1bihvLmYpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgdG1wID0gZjsKKyAgICAgICAgICAgIGYgPSBn
OworICAgICAgICAgICAgZyA9IHRtcDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9KSh7Zjo0Mn0pOworICAgIAorICAgIGlmIChyZXN1bHQgIT0gKChu
IC8gMiAtIDEpICogKDQyICsgMikpICsgKG4gLyAyICogKDEgKyAxKSArICg0MiArIDEgKyAzKSkp
CisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30pKCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3BvbHktY2FsbC1leGl0Lmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcG9seS1j
YWxsLWV4aXQuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL3BvbHktY2FsbC1leGl0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjkgQEAK
KyhmdW5jdGlvbigpIHsKKyAgICBmdW5jdGlvbiBmb28oeCkgeyByZXR1cm4gMTsgfQorICAgIGZ1
bmN0aW9uIGJhcih4KSB7IHJldHVybiB4OyB9CisgICAgZnVuY3Rpb24gYmF6KHgpIHsgcmV0dXJu
IHggKyAxOyB9CisgICAgCisgICAgdmFyIG4gPSAxMDAwMDAwOworICAgIAorICAgIHZhciByZXN1
bHQgPSAoZnVuY3Rpb24obykgeworICAgICAgICB2YXIgZiA9IGZvbzsKKyAgICAgICAgdmFyIGcg
PSBiYXI7CisgICAgICAgIHZhciBoID0gYmF6OworICAgICAgICAKKyAgICAgICAgdmFyIHJlc3Vs
dCA9IDA7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgICAg
ICBpZiAoaSA9PSBuIC0gMSkKKyAgICAgICAgICAgICAgICBmID0gaDsKKyAgICAgICAgICAgIHJl
c3VsdCArPSBmKG8uZik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciB0bXAgPSBmOwor
ICAgICAgICAgICAgZiA9IGc7CisgICAgICAgICAgICBnID0gdG1wOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0pKHtmOjQyfSk7CisgICAgCisgICAg
aWYgKHJlc3VsdCAhPSAoKG4gLyAyIC0gMSkgKiA0MikgKyAobiAvIDIgKiAxKSArICg0MiArIDEp
KQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9KSgpOwpJ
bmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTQtMDgtMjIgIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KKworICAgICAgICBERkcgKG9yIEZUTCkgc2hvdWxkIGJlIGFibGUgdG8gZG8g
cG9seW1vcnBoaWMgY2FsbCBpbmxpbmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisgICAgICAgIAorICAgICAgICBBZGQgc29tZSBwb3dlciB0aGF0IEkgbmVlZCBmb3Ig
Y2FsbCBlZGdlIHByb2ZpbGluZy4KKworICAgICAgICAqIHd0Zi9Pd25QdHIuaDoKKyAgICAgICAg
KFdURjo6T3duUHRyPFQ+OjpjcmVhdGVUcmFuc2FjdGlvbmFsbHkpOgorICAgICAgICAqIHd0Zi9T
cGVjdHJ1bS5oOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6YWRkKToKKyAgICAgICAgKFdURjo6
U3BlY3RydW06OmFkZEFsbCk6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpnZXQpOgorICAgICAg
ICAoV1RGOjpTcGVjdHJ1bTo6c2l6ZSk6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpLZXlBbmRD
b3VudDo6S2V5QW5kQ291bnQpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6Y2xlYXIpOgorICAg
ICAgICAoV1RGOjpTcGVjdHJ1bTo6cmVtb3ZlSWYpOgorCiAyMDE0LTA4LTIxICBUaW0gSG9ydG9u
ICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmVydCByMTcyODMxLCBp
dCBicm9rZSB0aGUgV2luZG93cyBidWlsZC4KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL093blB0ci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL093blB0ci5oCShyZXZpc2lvbiAxNzI4NTkp
CisrKyBTb3VyY2UvV1RGL3d0Zi9Pd25QdHIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIyLDYgKzIyLDcgQEAKICNkZWZpbmUgV1RGX093
blB0cl9oCiAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9BdG9t
aWNzLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL093blB0
ckNvbW1vbi5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KQEAgLTcyLDYgKzczLDE0IEBAIG5hbWVz
cGFjZSBXVEYgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBPd25QdHImIG9wZXJhdG9y
PShPd25QdHI8VT4mJik7CiAKICAgICAgICAgdm9pZCBzd2FwKE93blB0ciYgbykgeyBzdGQ6OnN3
YXAobV9wdHIsIG8ubV9wdHIpOyB9CisgICAgICAgIAorICAgICAgICAvLyBDb25zdHJ1Y3QgYW4g
b2JqZWN0IHRvIHN0b3JlIGludG8gdGhpcyBPd25QdHIsIGJ1dCBvbmx5IHNvIGxvbmcgYXMgdGhp
cyBPd25QdHIKKyAgICAgICAgLy8gZG9lc24ndCBhbHJlYWR5IHBvaW50IHRvIGFuIG9iamVjdC4g
VGhpcyB3aWxsIGVuc3VyZSB0aGF0IGFmdGVyIHlvdSBjYWxsIHRoaXMsCisgICAgICAgIC8vIHRo
ZSBPd25QdHIgd2lsbCBwb2ludCB0byBhbiBpbnN0YW5jZSBvZiBULiBUaGlzIGluc3RhbmNlIG1h
eSBvciBtYXkgbm90IGhhdmUgYmVlbgorICAgICAgICAvLyBjcmVhdGVkIGJ5IHRoaXMgY2FsbC4g
TW9yZW92ZXIsIHRoaXMgY2FsbCB1c2VzIGFuIG9wcG9ydHVuaXN0aWMgdHJhbnNhY3Rpb24sIGlu
CisgICAgICAgIC8vIHRoYXQgd2UgbWF5IGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiBUIGFuZCB0aGVu
IGltbWVkaWF0ZWx5IHRocm93IGl0IGF3YXkuCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4u
IEFyZ3M+CisgICAgICAgIHZvaWQgY3JlYXRlVHJhbnNhY3Rpb25hbGx5KEFyZ3MuLi4gYXJncyk7
CiAKICAgICBwcml2YXRlOgogICAgICAgICBleHBsaWNpdCBPd25QdHIoUHRyVHlwZSBwdHIpIDog
bV9wdHIocHRyKSB7IH0KQEAgLTE4Niw2ICsxOTUsMjggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAg
ICAgIHJldHVybiBwLmdldCgpOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHRl
bXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IGlubGluZSB2b2lkIE93blB0cjxUPjo6Y3JlYXRlVHJh
bnNhY3Rpb25hbGx5KEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIGlmIChtX3B0cikgewor
ICAgICAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFQqIG5ld09iamVjdCA9IG5ldyBUKGFyZ3MuLi4p
OworICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOworI2lmIEVOQUJMRShDT01QQVJFX0FO
RF9TV0FQKQorICAgICAgICBkbyB7CisgICAgICAgICAgICBpZiAobV9wdHIpIHsKKyAgICAgICAg
ICAgICAgICBkZWxldGUgbmV3T2JqZWN0OworICAgICAgICAgICAgICAgIFdURjo6bG9hZExvYWRG
ZW5jZSgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSB3aGlsZSAoIVdURjo6d2Vha0NvbXBhcmVBbmRTd2FwKGJpdHdpc2VfY2FzdDx2b2lkKnZvbGF0
aWxlKj4oJm1fcHRyKSwgbnVsbHB0ciwgbmV3T2JqZWN0KSk7CisjZWxzZQorICAgICAgICBtX3B0
ciA9IG5ld09iamVjdDsKKyNlbmRpZgorICAgIH0KKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVz
aW5nIFdURjo6T3duUHRyOwpJbmRleDogU291cmNlL1dURi93dGYvU3BlY3RydW0uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBT
b3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwyMiArMzIsMzEgQEAK
IAogbmFtZXNwYWNlIFdURiB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBDb3VudGVyVHlwZSA9IHVuc2lnbmVkPgogY2xhc3MgU3BlY3RydW0g
ewogcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCB1bnNpZ25lZCBsb25n
Pjo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPFQsIHVu
c2lnbmVkIGxvbmc+Ojpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKKyAgICB0eXBlZGVm
IHR5cGVuYW1lIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+OjppdGVyYXRvciBpdGVyYXRvcjsKKyAg
ICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+Ojpjb25zdF9pdGVyYXRv
ciBjb25zdF9pdGVyYXRvcjsKICAgICAKICAgICBTcGVjdHJ1bSgpIHsgfQogICAgIAotICAgIHZv
aWQgYWRkKGNvbnN0IFQmIGtleSwgdW5zaWduZWQgbG9uZyBjb3VudCA9IDEpCisgICAgdm9pZCBh
ZGQoY29uc3QgVCYga2V5LCBDb3VudGVyVHlwZSBjb3VudCA9IDEpCiAgICAgewotICAgICAgICB0
eXBlbmFtZSBIYXNoTWFwPFQsIHVuc2lnbmVkIGxvbmc+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9t
YXAuYWRkKGtleSwgY291bnQpOworICAgICAgICBpZiAoIWNvdW50KQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB0eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6QWRkUmVzdWx0
IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGNvdW50KTsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNO
ZXdFbnRyeSkKICAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgKz0gY291bnQ7CiAg
ICAgfQogICAgIAotICAgIHVuc2lnbmVkIGxvbmcgZ2V0KGNvbnN0IFQmIGtleSkgY29uc3QKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIHZvaWQgYWRkQWxsKGNvbnN0IFNwZWN0cnVtPFQs
IFU+JiBvdGhlclNwZWN0cnVtKQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvIGVudHJ5IDogb3Ro
ZXJTcGVjdHJ1bSkKKyAgICAgICAgICAgIGFkZChlbnRyeS5rZXksIGVudHJ5LmNvdW50KTsKKyAg
ICB9CisgICAgCisgICAgQ291bnRlclR5cGUgZ2V0KGNvbnN0IFQmIGtleSkgY29uc3QKICAgICB7
CiAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX21hcC5maW5kKGtleSk7CiAgICAgICAg
IGlmIChpdGVyID09IG1fbWFwLmVuZCgpKQpAQCAtNTUsNiArNjQsOCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBpdGVyLT52YWx1ZTsKICAgICB9CiAgICAgCisgICAgc2l6ZV90IHNpemUoKSBj
b25zdCB7IHJldHVybiBtX21hcC5zaXplKCk7IH0KKyAgICAKICAgICBpdGVyYXRvciBiZWdpbigp
IHsgcmV0dXJuIG1fbWFwLmJlZ2luKCk7IH0KICAgICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBt
X21hcC5lbmQoKTsgfQogICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4g
bV9tYXAuYmVnaW4oKTsgfQpAQCAtNjMsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgc3RydWN0IEtl
eUFuZENvdW50IHsKICAgICAgICAgS2V5QW5kQ291bnQoKSB7IH0KICAgICAgICAgCi0gICAgICAg
IEtleUFuZENvdW50KGNvbnN0IFQmIGtleSwgdW5zaWduZWQgbG9uZyBjb3VudCkKKyAgICAgICAg
S2V5QW5kQ291bnQoY29uc3QgVCYga2V5LCBDb3VudGVyVHlwZSBjb3VudCkKICAgICAgICAgICAg
IDoga2V5KGtleSkKICAgICAgICAgICAgICwgY291bnQoY291bnQpCiAgICAgICAgIHsKQEAgLTgw
LDcgKzkxLDcgQEAgcHVibGljOgogICAgICAgICB9CiAKICAgICAgICAgVCBrZXk7Ci0gICAgICAg
IHVuc2lnbmVkIGxvbmcgY291bnQ7CisgICAgICAgIENvdW50ZXJUeXBlIGNvdW50OwogICAgIH07
CiAgICAgCiAgICAgLy8gUmV0dXJucyBhIGxpc3Qgb3JkZXJlZCBmcm9tIGxvd2VzdC1jb3VudCB0
byBoaWdoZXN0LWNvdW50LgpAQCAtOTQsOCArMTA1LDE4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGxpc3Q7CiAgICAgfQogICAgIAorICAgIHZvaWQgY2xlYXIoKSB7IG1fbWFwLmNsZWFyKCk7
IH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIHZvaWQgcmVtb3Zl
SWYoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB7CisgICAgICAgIG1fbWFwLnJlbW92ZUlm
KFtmdW5jdG9yXSAodHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46OktleVZhbHVlUGFp
clR5cGUmIHBhaXIpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3RvcihLZXlBbmRDb3Vu
dChwYWlyLmtleSwgcGFpci52YWx1ZSkpOworICAgICAgICAgICAgfSk7CisgICAgfQorICAgIAog
cHJpdmF0ZToKLSAgICBIYXNoTWFwPFQsIHVuc2lnbmVkIGxvbmc+IG1fbWFwOworICAgIEhhc2hN
YXA8VCwgQ291bnRlclR5cGU+IG1fbWFwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxNzI4NTkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxNC0wOC0yMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9A
YXBwbGUuY29tPgorCisgICAgICAgIERGRyAob3IgRlRMKSBzaG91bGQgYmUgYWJsZSB0byBkbyBw
b2x5bW9ycGhpYyBjYWxsIGlubGluaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzUxNDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNh
bGwtbmVzdGVkLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9z
aW1wbGUtcG9seS1jYWxsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1w
b2x5LWNhbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NpbXBs
ZS1wb2x5LWNhbGwtbmVzdGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVn
cmVzcy9zaW1wbGUtcG9seS1jYWxsLW5lc3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9y
ZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwuaHRtbDogQWRkZWQuCisKIDIwMTQtMDgtMjEgIEFudHRp
IEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEFuaW1hdGVkIEdJRnMgc2Ny
b2xsZWQgb3V0IG9mIHZpZXcgc3RpbGwgY2F1c2UgdGl0bGViYXIgYmx1ciB0byB1cGRhdGUsIG9u
IHR1bWJsci5jb20gcGFnZQpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcG9s
eS1jYWxsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3NpbXBsZS1wb2x5LWNhbGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9zaW1wbGUtcG9seS1jYWxsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbAorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcG9seS1jYWxsLW5lc3RlZC1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcG9seS1jYWxsLW5lc3Rl
ZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Np
bXBsZS1wb2x5LWNhbGwtbmVzdGVkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEwIEBACitKU1JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQKKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRl
c3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVkLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtbmVz
dGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3Qu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zaW1wbGUtcG9seS1jYWxsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zaW1wbGUtcG9seS1jYWxsLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0
cy9zaW1wbGUtcG9seS1jYWxsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwtbmVz
dGVkLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3Rz
L3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVkLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQuanMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwyNSBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIGZv
byh4KSB7IHJldHVybiAxOyB9CisgICAgZnVuY3Rpb24gYmFyKHgpIHsgcmV0dXJuIHg7IH0KKyAg
ICAKKyAgICB2YXIgbiA9IDEwMDAwMDA7CisgICAgCisgICAgdmFyIHJlc3VsdCA9IChmdW5jdGlv
bigpIHsKKyAgICAgICAgdmFyIGYgPSBmb287CisgICAgICAgIHZhciBnID0gYmFyOworICAgICAg
ICAKKyAgICAgICAgdmFyIHJlc3VsdCA9IDA7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
bjsgKytpKSB7CisgICAgICAgICAgICByZXN1bHQgKz0gZig0Mik7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIHZhciB0bXAgPSBmOworICAgICAgICAgICAgZiA9IGc7CisgICAgICAgICAgICBn
ID0gdG1wOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0pKCk7CisgICAgCisgICAgaWYgKHJlc3VsdCAhPSBuIC8gMiAqIDQyICsgbiAvIDIgKiAxKQor
ICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9KSgpOwpJbmRl
eDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXBvbHktY2FsbC5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1w
bGUtcG9seS1jYWxsLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvc2ltcGxlLXBvbHktY2FsbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDIwIEBACisoZnVuY3Rpb24oKSB7CisgICAgZnVuY3Rpb24gZm9vKHgpIHsgcmV0dXJuIDE7IH0K
KyAgICBmdW5jdGlvbiBiYXIoeCkgeyByZXR1cm4geDsgfQorICAgIAorICAgIHZhciBmID0gZm9v
OworICAgIHZhciBnID0gYmFyOworICAgIAorICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBu
ID0gMTAwMDAwOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgIHJl
c3VsdCArPSBmKDQyKTsKKyAgICAgICAgCisgICAgICAgIHZhciB0bXAgPSBmOworICAgICAgICBm
ID0gZzsKKyAgICAgICAgZyA9IHRtcDsKKyAgICB9CisgICAgCisgICAgaWYgKHJlc3VsdCAhPSBu
IC8gMiAqIDQyICsgbiAvIDIgKiAxKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6
ICIgKyByZXN1bHQ7Cit9KSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237053</attachid>
            <date>2014-08-24 18:00:22 -0700</date>
            <delta_ts>2014-08-24 21:37:58 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>187522</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyODk3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0OSBA
QAorMjAxNC0wOC0yNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEZUTCBzaG91bGQgYmUgYWJsZSB0byBkbyBwb2x5bW9ycGhpYyBjYWxsIGlubGluaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUxNDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFkZGVk
IGEgbG9nLWJhc2VkIGhpZ2gtZmlkZWxpdHkgY2FsbCBlZGdlIHByb2ZpbGVyIHRoYXQgcnVucyBp
biBERkcgSklUIChhbmQgb3B0aW9uYWxseQorICAgICAgICBiYXNlbGluZSBKSVQpIGNvZGUuIFVz
ZWQgaXQgdG8gZG8gcHJlY2lzZSBwb2x5bW9ycGhpYyBpbmxpbmluZyBpbiB0aGUgRlRMLiBQb3Rl
bnRpYWwKKyAgICAgICAgaW5saW5pbmcgc2l0ZXMgdXNlIHRoZSBjYWxsIGVkZ2UgcHJvZmlsZSBp
ZiBpdCBpcyBhdmFpbGFibGUsIGJ1dCB0aGV5IHdpbGwgc3RpbGwgZmFsbCBiYWNrCisgICAgICAg
IG9uIHRoZSBjYWxsIGlubGluZSBjYWNoZSBhbmQgcmFyZSBjYXNlIGNvdW50cyBpZiBpdCdzIG5v
dC4gVGhpcyBhbHNvIGVuYWJsZXMgZmFpcmx5CisgICAgICAgIGFnZ3Jlc3NpdmUgZWxpbWluYXRp
b24gb2YgY2FsbCBlZGdlIHByb2ZpbGluZyBzaXRlcyAtIGZvciBleGFtcGxlIHRoZSBERkcgd29u
J3QgZG8gY2FsbCBlZGdlCisgICAgICAgIHByb2ZpbGluZyBpZiBpdCBhbHJlYWR5IGtub3dzIHRo
YXQgdGhlIGNhbGwgaXMgbW9ub21vcnBoaWMuCisgICAgICAgIAorICAgICAgICBUaGlzIGlzIGEg
fjMwJSBzcGVlZC11cCBvbiBkZWx0YWJsdWUsIHdpdGggc21hbGwgc3BlZWQtdXBzIG9uIG90aGVy
IHByb2dyYW1zIGFzIHdlbGwuIEl0J3MKKyAgICAgICAgbm90IGEgc2lnbmlmaWNhbnQgc2xvdy1k
b3duIG9uIGFueSBtYWpvciBiZW5jaG1hcmssIGFsdGhvdWdoIGl0J3MgY2VydGFpbmx5IHBvc3Np
YmxlIHRvCisgICAgICAgIGNyZWF0ZSBhIHBhdGhvbG9naWNhbCBwcm9ncmFtIHRoYXQgc2xvd3Mg
ZG93biBiZWNhdXNlIG9mIHRoZSBvdmVyaGVhZCBvZiBjYWxsIGVkZ2UKKyAgICAgICAgcHJvZmls
aW5nLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbEVk
Z2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2U6OmR1bXApOgorICAgICAgICAq
IGJ5dGVjb2RlL0NhbGxFZGdlLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpDYWxsRWRnZTo6b3Bl
cmF0b3IhKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2U6OmNhbGxlZSk6CisgICAgICAgIChKU0M6
OkNhbGxFZGdlOjpjb3VudCk6CisgICAgICAgIChKU0M6OkNhbGxFZGdlOjpkZXNwZWNpZmllZENs
b3N1cmUpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZTo6Q2FsbEVkZ2UpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpDYWxsRWRn
ZVByb2ZpbGU6OmNhbGxFZGdlcyk6CisgICAgICAgIChKU0M6OkNhbGxFZGdlUHJvZmlsZTo6bnVt
Q2FsbHNUb0tub3duQ2VsbHMpOgorICAgICAgICAoSlNDOjp3b3J0aERlc3BlY2lmeWluZyk6Cisg
ICAgICAgIChKU0M6OkNhbGxFZGdlUHJvZmlsZTo6d29ydGhEZXNwZWNpZnlpbmcpOgorICAgICAg
ICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6OnZpc2l0V2Vhayk6CisgICAgICAgIChKU0M6OkNhbGxF
ZGdlUHJvZmlsZTo6YWRkU2xvdyk6CisgICAgICAgIChKU0M6OkNhbGxFZGdlUHJvZmlsZTo6bWVy
Z2VCYWNrKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VQcm9maWxlOjpmYWRlQnlIYWxmKToKKyAg
ICAgICAgKEpTQzo6Q2FsbEVkZ2VMb2c6OkNhbGxFZGdlTG9nKToKKyAgICAgICAgKEpTQzo6Q2Fs
bEVkZ2VMb2c6On5DYWxsRWRnZUxvZyk6CisgICAgICAgIChKU0M6OkNhbGxFZGdlTG9nOjppc0Vu
YWJsZWQpOgorICAgICAgICAoSlNDOjpvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2cpOgorICAg
ICAgICAoSlNDOjpDYWxsRWRnZUxvZzo6ZW1pdExvZ0NvZGUpOgorICAgICAgICAoSlNDOjpDYWxs
RWRnZUxvZzo6cHJvY2Vzc0xvZyk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxl
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6Om51bUNhbGxzVG9Ob3RD
ZWxsKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VQcm9maWxlOjpudW1DYWxsc1RvVW5rbm93bkNl
bGwpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6OnRvdGFsQ2FsbHMpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZUlubGluZXMuaDogQWRkZWQuCisgICAgICAgIChK
U0M6OkNhbGxFZGdlUHJvZmlsZTo6Q2FsbEVkZ2VQcm9maWxlKToKKyAgICAgICAgKEpTQzo6Q2Fs
bEVkZ2VQcm9maWxlOjphZGQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6
CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6dmlzaXRXZWFrKToKKyAgICAgICAgKiBieXRl
Y29kZS9DYWxsTGlua0luZm8uaDoKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua1N0YXR1cy5j
cHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpDYWxsTGlua1N0YXR1cyk6CisgICAg
ICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpT
Qzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0
YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVz
Ojpjb21wdXRlRnJvbUNhbGxMaW5rSW5mbyk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVz
Ojpjb21wdXRlRnJvbUNhbGxFZGdlUHJvZmlsZSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3Rh
dHVzOjpjb21wdXRlREZHU3RhdHVzZXMpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6
aXNDbG9zdXJlQ2FsbCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjptYWtlQ2xvc3Vy
ZUNhbGwpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6ZHVtcCk6CisgICAgICAgIChK
U0M6OkNhbGxMaW5rU3RhdHVzOjpmdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNh
bGxMaW5rU3RhdHVzOjppbnRlcm5hbEZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
Q2FsbExpbmtTdGF0dXM6OmludHJpbnNpY0Zvcik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNv
ZGUvQ2FsbExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OkNhbGxM
aW5rU3RhdHVzKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmlzU2V0KToKKyAgICAg
ICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvdWxkVGFrZVNsb3dQYXRoKToKKyAgICAgICAgKEpT
Qzo6Q2FsbExpbmtTdGF0dXM6OmVkZ2VzKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6
OnNpemUpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6YXQpOgorICAgICAgICAoSlND
OjpDYWxsTGlua1N0YXR1czo6b3BlcmF0b3JbXSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3Rh
dHVzOjpjYW5PcHRpbWl6ZSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjYW5UcnVz
dENvdW50cyk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjppc0Nsb3N1cmVDYWxsKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNhbGxUYXJnZXQpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6ZXhlY3V0YWJsZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjptYWtlQ2xvc3VyZUNhbGwpOiBEZWxldGVk
LgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxWYXJpYW50LmNwcDogQWRkZWQuCisgICAgICAgIChK
U0M6OkNhbGxWYXJpYW50OjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsVmFyaWFudC5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OkNhbGxWYXJpYW50KToKKyAgICAg
ICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6OkNhbGxWYXJp
YW50OjpkZXNwZWNpZmllZENsb3N1cmUpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6cmF3
Q2FsbGVlQ2VsbCk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjppbnRlcm5hbEZ1bmN0aW9u
KToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OmZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6
Q2FsbFZhcmlhbnQ6OmlzQ2xvc3VyZUNhbGwpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6
ZXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50Ojpub25FeGVjdXRhYmxlQ2Fs
bGVlKToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OmludHJpbnNpY0Zvcik6CisgICAgICAg
IChKU0M6OkNhbGxWYXJpYW50OjpmdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpD
YWxsVmFyaWFudDo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpDYWxs
VmFyaWFudDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpvcGVyYXRv
ciE9KToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om9wZXJhdG9yPCk6CisgICAgICAgIChK
U0M6OkNhbGxWYXJpYW50OjpvcGVyYXRvcj4pOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6
b3BlcmF0b3I8PSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpvcGVyYXRvcj49KToKKyAg
ICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Omhhc2gpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFu
dDo6ZGVsZXRlZFRva2VuKToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnRIYXNoOjpoYXNoKToK
KyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnRIYXNoOjplcXVhbCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZU9yaWdpbi5oOgorICAgICAgICAoSlNDOjpJbmxpbmVDYWxsRnJhbWU6OmlzTm9ybWFs
Q2FsbCk6CisgICAgICAgICogYnl0ZWNvZGUvRXhpdEtpbmQuY3BwOgorICAgICAgICAoSlNDOjpl
eGl0S2luZFRvU3RyaW5nKToKKyAgICAgICAgKiBieXRlY29kZS9FeGl0S2luZC5oOgorICAgICAg
ICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3Rh
dHVzOjpjb21wdXRlRm9yU3R1YkluZm8pOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0
dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8p
OgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVj
dXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkJhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2U6OnByb3Bh
Z2F0ZSk6CisgICAgICAgICogZGZnL0RGR0Jhc2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkJhc2ljQmxvY2s6On5CYXNpY0Jsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQmFzaWNCbG9j
ay5oOgorICAgICAgICAoSlNDOjpERkc6OkJhc2ljQmxvY2s6OnRha2VMYXN0KToKKyAgICAgICAg
KEpTQzo6REZHOjpCYXNpY0Jsb2NrOjpkaWRMaW5rKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwcm9jZXNz
U2V0TG9jYWxRdWV1ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnJlbW92
ZUxhc3ROb2RlRnJvbUdyYXBoKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
YWRkQ2FsbFdpdGhvdXRTZXR0aW5nUmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6YWRkQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjplbWl0RnVuY3Rp
b25DaGVja3MpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjp1bmRvRnVuY3Rp
b25DaGVja3MpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nv
c3QpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Y2FuY2VsTGlua2luZ0ZvckJsb2NrKToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRvSW5saW5lQ2FsbCk6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1
bmN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cHJlcGFyZVRvUGFy
c2VCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmNsZWFyQ2FjaGVz
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmxpbmtCbG9jayk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmxpbmtCbG9ja3MpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NQU1JldGhy
ZWFkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNQU1JldGhyZWFkaW5nUGhhc2U6
OmZyZWVVbm5lY2Vzc2FyeU5vZGVzKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgor
ICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb21tb24u
aDoKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAg
KiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAg
ICAqIGRmZy9ERkdEcml2ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNvbXBpbGVJbXBsKToK
KyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4
dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6dmlz
aXRDaGlsZHJlbik6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZnL0RGR0xhenlKU1Zh
bHVlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpMYXp5SlNWYWx1ZTo6c3dpdGNoTG9va3VwVmFs
dWUpOgorICAgICAgICAqIGRmZy9ERkdMYXp5SlNWYWx1ZS5oOgorICAgICAgICAoSlNDOjpERkc6
OkxhenlKU1ZhbHVlOjpzd2l0Y2hMb29rdXBWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICogZGZn
L0RGR05vZGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBk
ZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok9wSW5mbzo6T3BJbmZvKToKKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjpoYXNIZWFwUHJlZGljdGlvbik6CisgICAgICAgIChKU0M6OkRG
Rzo6Tm9kZTo6aGFzQ2VsbE9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNlbGxP
cGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzZXRDZWxsT3BlcmFuZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Tm9kZTo6Y2FuQmVLbm93bkZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjpoYXNLbm93bkZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6REZHOjpOb2RlOjprbm93bkZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
REZHOjpOb2RlOjpnaXZlS25vd25GdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRG
Rzo6Tm9kZTo6aGFzRnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
OmZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNFeGVjdXRh
YmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpleGVjdXRhYmxlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHUGhh
bnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGhhbnRv
bUNhbm9uaWNhbGl6YXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHUGhhbnRvbVJl
bW92YWxQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGhhbnRvbVJlbW92YWxQaGFzZTo6
cnVuKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUp
OgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6
c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaCk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3RydWN0dXJl
UmVnaXN0cmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZVJlZ2lz
dHJhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdUaWVyVXBDaGVja0luamVjdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpUaWVyVXBDaGVja0luamVjdGlvblBoYXNl
OjpydW4pOgorICAgICAgICAoSlNDOjpERkc6OlRpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2U6OnJl
bW92ZUZUTFByb2ZpbGluZyk6CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpWYWxpZGF0ZTo6dmFsaWRhdGUpOgorICAgICAgICAqIGRmZy9ERkdXYXRj
aHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpXYXRjaHBvaW50
Q29sbGVjdGlvblBoYXNlOjpoYW5kbGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExM
b3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6ZnRsVW5yZWFjaGFibGUpOgor
ICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpsb3dlcik6CisgICAgICAgIChKU0M6
OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpM
b3dlckRGR1RvTExWTTo6Y29tcGlsZUNoZWNrQ2VsbCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93
ZXJERkdUb0xMVk06OmNvbXBpbGVDaGVja0JhZENlbGwpOgorICAgICAgICAoSlNDOjpGVEw6Okxv
d2VyREZHVG9MTFZNOjpjb21waWxlR2V0RXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6
TG93ZXJERkdUb0xMVk06OmNvbXBpbGVOYXRpdmVDYWxsT3JDb25zdHJ1Y3QpOgorICAgICAgICAo
SlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlU3dpdGNoKToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6YnVpbGRTd2l0Y2gpOgorICAgICAgICAoSlNDOjpGVEw6Okxv
d2VyREZHVG9MTFZNOjpjb21waWxlQ2hlY2tGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVDaGVja0V4ZWN1dGFibGUpOiBEZWxldGVk
LgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3Qp
OgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1i
bHlIZWxwZXJzOjpzdG9yZVZhbHVlKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjps
b2FkVmFsdWUpOgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6
Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50cyk6CisgICAgICAgICogaml0L0dQUkluZm8uaDoK
KyAgICAgICAgKEpTQzo6SlNWYWx1ZVJlZ3M6OnVzZXMpOgorICAgICAgICAqIGppdC9KSVRDYWxs
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKiBqaXQv
SklUQ2FsbDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAg
ICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAg
ICAgICAgKEpTQzo6Vk06OmVuc3VyZUNhbGxFZGdlTG9nKToKKyAgICAgICAgKiBydW50aW1lL1ZN
Lmg6CisgICAgICAgICogdGVzdHMvc3RyZXNzL25ldy1hcnJheS10aGVuLWV4aXQuanM6IEFkZGVk
LgorICAgICAgICAoZm9vKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQt
dGhpcy5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL3BvbHktY2FsbC1leGl0Lmpz
OiBBZGRlZC4KKwogMjAxNC0wOC0yNCAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUmVuYW1lIERPTS5SR0JBIGFuZCByZW1v
dmUgd29ya2Fyb3VuZHMgaW4gdGhlIGJpbmRpbmdzIGdlbmVyYXRvcgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02NSw4ICs2NSwxMSBA
QCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5j
cHAKICAgICBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCiAgICAgYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAorICAgIGJ5dGVjb2RlL0NhbGxFZGdlLmNwcAorICAg
IGJ5dGVjb2RlL0NhbExFZGdlUHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9DYWxsTGlua0luZm8u
Y3BwCiAgICAgYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCisgICAgYnl0ZWNvZGUvQ2FsbFZh
cmlhbnQuY3BwCiAgICAgYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAogICAgIGJ5dGVjb2RlL0NvZGVC
bG9ja0hhc2guY3BwCiAgICAgYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50
LmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShyZXZpc2lv
biAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMTQsOCArMzE0LDEx
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheVByb2ZpbGUuY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQnl0ZWNvZGVCYXNpY0Js
b2NrLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpcy5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRl
Y29kZVxDYWxsRWRnZS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29k
ZVxDYWxsRWRnZVByb2ZpbGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0
ZWNvZGVcQ2FsbExpbmtJbmZvLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5
dGVjb2RlXENhbGxMaW5rU3RhdHVzLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGJ5dGVjb2RlXENhbGxWYXJpYW50LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGJ5dGVjb2RlXENvZGVCbG9jay5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxi
eXRlY29kZVxDb2RlQmxvY2tIYXNoLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGJ5dGVjb2RlXENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAiIC8+CkBAIC05MDUs
OSArOTA4LDEzIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeXRlY29k
ZUJhc2ljQmxvY2suaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
Ynl0ZWNvZGVcQnl0ZWNvZGVVc2VEZWYuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGJ5dGVjb2RlXENhbGxFZGdlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRl
Y29kZVxDYWxsRWRnZVByb2ZpbGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5
dGVjb2RlXENhbGxFZGdlUHJvZmlsZUlubGluZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGJ5dGVjb2RlXENhbGxMaW5rSW5mby5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cYnl0ZWNvZGVcQ2FsbExpbmtTdGF0dXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGJ5dGVjb2RlXENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmgiIC8+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDYWxsVmFyaWFudC5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ29kZUJsb2NrLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDb2RlQmxvY2tIYXNoLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9p
bnQuaCIgLz4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzI4
NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjYzLDYgKzI2MywxMyBAQAogCQkwRjNC
M0EyODE1NDRDOTk3MDAzRUQwRkYgLyogREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjNBMjUxNTQ0Qzk5
MTAwM0VEMEZGIC8qIERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjNCM0EyQjE1NDc1MDAwMDAzRUQw
RkYgLyogREZHVmFsaWRhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYzQjNBMjkxNTQ3NEZGNDAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmNwcCAq
LzsgfTsKIAkJMEYzQjNBMkMxNTQ3NTAwMjAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCM0EyQTE1NDc0RkY0
MDAzRUQwRkYgLyogREZHVmFsaWRhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRjNCN0UyNjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTIw
MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGM0I3RTI3MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxs
RWRnZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYzQjdFMjExOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAgKi87
IH07CisJCTBGM0I3RTI4MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTIyMTlBMTFC
ODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjNCN0UyOTE5QTExQjgwMDBEOUJDNTYgLyogQ2Fs
bEVkZ2VQcm9maWxlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYzQjdFMjMxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZUlu
bGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjNCN0UyQTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMjQxOUExMUI4MDAwRDlC
QzU2IC8qIENhbGxWYXJpYW50LmNwcCAqLzsgfTsKKwkJMEYzQjdFMkIxOUExMUI4MDAwRDlCQzU2
IC8qIENhbGxWYXJpYW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjNCN0UyNTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjNCN0UyRDE5QTEy
QUFFMDBEOUJDNTYgLyogQ2FsbEVkZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMkMxOUExMkFBRTAwRDlCQzU2IC8qIENhbGxFZGdlLmNw
cCAqLzsgfTsKIAkJMEYzRDBCQkMxOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJl
Q2hlY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYzRDBCQkExOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suY3BwICov
OyB9OwogCQkwRjNEMEJCRDE5NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVj
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRDBC
QkIxOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQyNkE0ODE0NjBDQkIz
MDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY0MjZBNDUxNDYwQ0JBQjAwMTMxRjhGIC8qIFZhbHVlUmVjb3Zl
cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MjE2Nyw2ICsyMTc0LDEzIEBACiAJCTBGM0IzQTI1MTU0NEM5OTEwMDNFRDBGRiAvKiBERkdDRkdT
aW1wbGlmaWNhdGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERG
R0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdDRkdTaW1wbGlmaWNhdGlv
blBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0IzQTI5MTU0NzRGRjQw
MDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBERkdWYWxpZGF0ZS5jcHA7IHBhdGggPSBkZmcvREZHVmFsaWRhdGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNCM0EyQTE1NDc0RkY0MDAzRUQwRkYgLyogREZH
VmFsaWRhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVmFsaWRhdGUu
aDsgcGF0aCA9IGRmZy9ERkdWYWxpZGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjNCN0UyMDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2FsbEVkZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYzQjdFMjExOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsRWRnZVByb2ZpbGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyMjE5QTExQjgwMDBEOUJDNTYgLyogQ2Fs
bEVkZ2VQcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxFZGdl
UHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyMzE5QTExQjgw
MDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGM0I3RTI0MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsVmFyaWFudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGM0I3RTI1MTlBMTFCODAwMEQ5QkM1NiAvKiBD
YWxsVmFyaWFudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsVmFyaWFu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyQzE5QTEyQUFFMDBEOUJD
NTYgLyogQ2FsbEVkZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q2FsbEVkZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNEMEJCQTE5NEE0
MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb25zdGFudFN0cnVjdHVyZUNoZWNrLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzRDBCQkIxOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0
YW50U3RydWN0dXJlQ2hlY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29u
c3RhbnRTdHJ1Y3R1cmVDaGVjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQy
NkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC01MTQ0LDExICs1MTU4LDE4IEBACiAJCQkJMEY2NjZFQkUxODM1NjZGOTAwRDAxN0Yx
IC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCAqLywKIAkJCQkwRjg4NUUxMDE4
NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VEZWYuaCAqLywKIAkJCQkwRjgwMjNFOTE2MTM4
MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8sCisJCQkJMEYzQjdFMkMxOUExMkFBRTAwRDlC
QzU2IC8qIENhbGxFZGdlLmNwcCAqLywKKwkJCQkwRjNCN0UyMDE5QTExQjgwMDBEOUJDNTYgLyog
Q2FsbEVkZ2UuaCAqLywKKwkJCQkwRjNCN0UyMTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQ
cm9maWxlLmNwcCAqLywKKwkJCQkwRjNCN0UyMjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQ
cm9maWxlLmggKi8sCisJCQkJMEYzQjdFMjMxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJv
ZmlsZUlubGluZXMuaCAqLywKIAkJCQkwRjBCODNBRTE0QkNGNzE0MDA4ODVCNEYgLyogQ2FsbExp
bmtJbmZvLmNwcCAqLywKIAkJCQkwRjBCODNBRjE0QkNGNzE0MDA4ODVCNEYgLyogQ2FsbExpbmtJ
bmZvLmggKi8sCiAJCQkJMEY5MzMyOTMxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVz
LmNwcCAqLywKIAkJCQkwRjkzMzI5NDE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMu
aCAqLywKIAkJCQkwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRv
Qnl0ZWNvZGVPZmZzZXQuaCAqLywKKwkJCQkwRjNCN0UyNDE5QTExQjgwMDBEOUJDNTYgLyogQ2Fs
bFZhcmlhbnQuY3BwICovLAorCQkJCTBGM0I3RTI1MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFy
aWFudC5oICovLAogCQkJCTk2OUEwNzkwMEVEMUQzQUUwMEYxRjY4MSAvKiBDb2RlQmxvY2suY3Bw
ICovLAogCQkJCTk2OUEwNzkxMEVEMUQzQUUwMEYxRjY4MSAvKiBDb2RlQmxvY2suaCAqLywKIAkJ
CQkwRjhGOTQzRDE2Njc2MzJEMDBENjE5NzEgLyogQ29kZUJsb2NrSGFzaC5jcHAgKi8sCkBAIC01
ODc3LDYgKzU4OTgsNyBAQAogCQkJCTBGRkZDOTVBMTRFRjkwQTkwMEM3MjUzMiAvKiBERkdDU0VQ
aGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyRkM3NzMxNkUxMkY3NDAwMzhEOTc2IC8qIERG
R0RDRVBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjhGMkI5QTE3MkYwNTAxMDA3REJEQTUg
LyogREZHRGVzaXJlZElkZW50aWZpZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjNCN0UyODE5
QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
MkMwRjdDRTE3QkJGQzVCMDA0NjRGRTQgLyogREZHRGVzaXJlZFRyYW5zaXRpb25zLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkU4NTM0QzE3MjNDREE1MDBCNjE4RjUgLyogREZHRGVzaXJlZFdhdGNo
cG9pbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjk4MUZEOTE3QkFFRTRCMDBBM0JDOTggLyog
REZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLywKQEAgLTYxNDUsNiArNjE2
Nyw3IEBACiAJCQkJMEY3NjZEMzExNUFBODExMjAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjc2NkQyQzE1QThDQzNBMDA4RjM2M0UgLyogSklUU3R1YlJv
dXRpbmVTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QzUyNDJCMEY1MzU1RTkwMEJBM0QwNCAv
KiBKSVRTdHVicy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYzQjdFMkIxOUExMUI4MDAwRDlCQzU2
IC8qIENhbGxWYXJpYW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUY2ODM1RTE3NDM0M0NDMDBB
MzJFMjUgLyogSklUU3R1YnNBUk0uaCBpbiBIZWFkZXJzICovLAogCQkJCUZFRjY4MzVGMTc0MzQz
Q0MwMEEzMkUyNSAvKiBKSVRTdHVic0FSTXY3LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUY2ODM2
MTE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1YnNYODYuaCBpbiBIZWFkZXJzICovLApAQCAtNjE1
Niw2ICs2MTc5LDcgQEAKIAkJCQlBNzZGNTRBMzEzQjI4QUFCMDBFRjJCQ0UgLyogSklUV3JpdGVC
YXJyaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxNjBFMTZGNUNEMDBCMzQ0NjAgLyog
SlNBY3RpdmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDA0ODAxMzEwMjFBMUQ5MDA4RTdG
MDEgLyogSlNBUElWYWx1ZVdyYXBwZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGM0I3RTI5MTlB
MTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDMkNGMzlDMjE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNzYxNDBEMjE4Mjk4MkNCMDA3NTA2MjQgLyogSlNBcmd1bWVudHNJ
dGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTcwRTE2RjVDRDAwQjM0NDYwIC8q
IEpTQXJyYXkuaCBpbiBIZWFkZXJzICovLApAQCAtNjQ3MSw2ICs2NDk1LDcgQEAKIAkJCQlFNDlE
QzE2QzEyRUYyOTRFMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTQ5REMxNkQxMkVGMjk1MzAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGVJ
dGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5RTE1RUQ4RTQ2MDBGMTY3QjIgLyogU3Bh
cnNlQXJyYXlWYWx1ZU1hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYzQjdFMjYxOUExMUI4MDAw
RDlCQzU2IC8qIENhbGxFZGdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzM4NjU1NDExODY5N0I0
MDA1NDAyNzkgLyogU3BlY2lhbGl6ZWRUaHVua0pJVC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1
NTQxQjIxNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkQ4MkU1NDE0MURBRUVFMDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5cGUuaCBpbiBIZWFk
ZXJzICovLApAQCAtNzMyMyw2ICs3MzQ4LDcgQEAKIAkJCQkwRjIzNUJENTE3MTc4RTFDMDA2OTBD
N0YgLyogRlRMRXhpdEFyZ3VtZW50Rm9yT3BlcmFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjIzNUJEODE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdFRodW5rR2VuZXJhdG9yLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGMjM1QkRBMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0VmFsdWUu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYzQjdFMjcxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxF
ZGdlUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0YyOTk2QjE3QTBCQjY3MDAxMDQx
N0EgLyogRlRMRmFpbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4QTMxOTE3RDUxRjIyMDBD
QTJDNDAgLyogRlRMRm9yT1NSRW50cnlKSVRDb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MjVGMUFGMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExJbmxpbmVDYWNoZVNpemUuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC03NTA5LDYgKzc1MzUsNyBAQAogCQkJCTBGNDY4MEQyMTRCQkQxNjUwMEJGRTI3
MiAvKiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzOEIwMTExN0NGMDc4MDAw
QjE0NEQzIC8qIExMSW50RW50cnlwb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ2ODBB
ODE0QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTBGM0I3RTJEMTlBMTJBQUUwMEQ5QkM1NiAvKiBDYWxsRWRnZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRTbG93UGF0aHMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8qIExMSW50VGh1bmtz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0VGQUNEMTgwNUU3NTUwMDQ3MkNFNCAvKiBMTFZN
QVBJLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzY3MCw2ICs3Njk3LDcgQEAKIAkJCQkxNEU4NEZB
MDE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha1NldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyQTRF
QzkwQjE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGQzgxNTBCMTQwNDNDMEUwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGM0I3RTJBMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxs
VmFyaWFudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0U1QUIzQTE3OTlFNEIyMDBEMjgzM0Qg
LyogWDg2RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2M0M2RDlDMTUyMTEx
MUEwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXplVUNTMi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4NjcwNEI4NDEyREJBMzM3MDBBOUZFN0IgLyogWWFyckludGVycHJldGVyLmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2Uu
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxF
ZGdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJDYWxsRWRnZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBDYWxsRWRnZTo6ZHVt
cChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludCgiPCIsIG1fY2FsbGVl
LCAiLCBjb3VudDogIiwgbV9jb3VudCwgIj4iKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZS5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIENhbGxFZGdlX2gKKyNkZWZpbmUgQ2FsbEVkZ2VfaAor
CisjaW5jbHVkZSAiQ2FsbFZhcmlhbnQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3R5cGVkZWYg
dWludDE2X3QgQ2FsbEVkZ2VDb3VudFR5cGU7CisKK2NsYXNzIENhbGxFZGdlIHsKK3B1YmxpYzoK
KyAgICBDYWxsRWRnZSgpOworICAgIENhbGxFZGdlKENhbGxWYXJpYW50IGNhbGxlZSwgQ2FsbEVk
Z2VDb3VudFR5cGUgY291bnQpOworICAgIAorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyBy
ZXR1cm4gIW1fY2FsbGVlOyB9CisgICAgCisgICAgQ2FsbFZhcmlhbnQgY2FsbGVlKCkgY29uc3Qg
eyByZXR1cm4gbV9jYWxsZWU7IH0KKyAgICBDYWxsRWRnZUNvdW50VHlwZSBjb3VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fY291bnQ7IH0KKyAgICAKKyAgICBDYWxsRWRnZSBkZXNwZWNpZmllZENsb3N1
cmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIENhbGxFZGdlKG1fY2FsbGVlLmRlc3Bl
Y2lmaWVkQ2xvc3VyZSgpLCBtX2NvdW50KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBkdW1wKFBy
aW50U3RyZWFtJikgY29uc3Q7CisgICAgCitwdWJsaWM6CisgICAgQ2FsbFZhcmlhbnQgbV9jYWxs
ZWU7CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbV9jb3VudDsKK307CisKK2lubGluZSBDYWxsRWRn
ZTo6Q2FsbEVkZ2UoQ2FsbFZhcmlhbnQgY2FsbGVlLCBDYWxsRWRnZUNvdW50VHlwZSBjb3VudCkK
KyAgICA6IG1fY2FsbGVlKGNhbGxlZSkKKyAgICAsIG1fY291bnQoY291bnQpCit7Cit9CisKK2lu
bGluZSBDYWxsRWRnZTo6Q2FsbEVkZ2UoKQorICAgIDogQ2FsbEVkZ2UoQ2FsbFZhcmlhbnQoKSwg
MCkKK3sKK30KKwordHlwZWRlZiBWZWN0b3I8Q2FsbEVkZ2UsIDE+IENhbGxFZGdlTGlzdDsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDYWxsRWRnZV9oCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJv
ZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNDggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkNhbGxFZGdlUHJvZmlsZS5oIgorCisjaW5jbHVkZSAiQ2FsbEVkZ2VQcm9maWxlSW5s
aW5lcy5oIgorI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgorI2luY2x1ZGUgIkpJVE9wZXJhdGlv
bnMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitDYWxs
RWRnZUxpc3QgQ2FsbEVkZ2VQcm9maWxlOjpjYWxsRWRnZXMoKSBjb25zdAoreworICAgIENvbmN1
cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCisgICAgQ2FsbEVkZ2VMaXN0IHJl
c3VsdDsKKyAgICAKKyAgICBDYWxsVmFyaWFudCBwcmltYXJ5Q2FsbGVlID0gbV9wcmltYXJ5Q2Fs
bGVlOworICAgIGZsb2F0IG51bUNhbGxzVG9QcmltYXJ5ID0gbV9udW1DYWxsc1RvUHJpbWFyeTsK
KyAgICAvLyBEZWZlbmQgYWdhaW5zdCByYWNlcy4gVGhlc2UgZmllbGRzIGFyZSBtb2RpZmllZCBi
eSB0aGUgbG9nIHByb2Nlc3NvciB3aXRob3V0IGxvY2tpbmcuCisgICAgaWYgKCEhcHJpbWFyeUNh
bGxlZSAmJiBudW1DYWxsc1RvUHJpbWFyeSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZChDYWxsRWRn
ZShwcmltYXJ5Q2FsbGVlLCBudW1DYWxsc1RvUHJpbWFyeSkpOworICAgIAorICAgIGlmIChtX290
aGVyQ2FsbGVlcykgeworICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBpZiB0aGUgcHJpbWFyeSB0
aHJlYWQgaGFkIGp1c3QgY3JlYXRlZCBhIG1fb3RoZXJDYWxsZXMgd2hpbGUgbG9nCisgICAgICAg
IC8vIHByb2Nlc3NpbmcsIHdlIHNlZSBhIGNvbnNpc3RlbnRseSBjcmVhdGVkIG9uZS4gVGhlIGxv
Y2sgYmVpbmcgaGVsZCBpcyBpbnN1ZmZpY2llbnQgZm9yCisgICAgICAgIC8vIHRoaXMsIHNpbmNl
IHRoZSBsb2cgcHJvY2Vzc29yIHdpbGwgb25seSBncmFiIHRoZSBsb2NrIHdoZW4gbWVyZ2luZyB0
aGUgc2Vjb25kYXJ5CisgICAgICAgIC8vIHNwZWN0cnVtIGludG8gdGhlIHByaW1hcnkgb25lIGJ1
dCBtYXkgc3RpbGwgY3JlYXRlIHRoZSBkYXRhIHN0cnVjdHVyZSB3aXRob3V0IGhvbGRpbmcKKyAg
ICAgICAgLy8gbG9ja3MuCisgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOworICAgICAgICBm
b3IgKENhbGxFZGdlIGVudHJ5IDogbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkKSB7CisgICAg
ICAgICAgICAvLyBEZWZlbmQgYWdhaW5zdCB0aGUgcG9zc2liaWxpdHkgdGhhdCB0aGUgcHJpbWFy
eSBkdXBsaWNhdGVzIGFuIGVudHJ5IGluIHRoZSBzZWNvbmRhcnkKKyAgICAgICAgICAgIC8vIHNw
ZWN0cnVtLiBUaGF0IGNhbiBoYXBwZW4gd2hlbiB0aGUgR0MgcmVtb3ZlcyB0aGUgcHJpbWFyeS4g
V2UgY291bGQgaGF2ZSB0aGUgR0MgZml4CisgICAgICAgICAgICAvLyB0aGUgc2l0dWF0aW9uIGJ5
IGNoYW5naW5nIHRoZSBwcmltYXJ5IHRvIGJlIHNvbWV0aGluZyBmcm9tIHRoZSBzZWNvbmRhcnkg
c3BlY3RydW0sCisgICAgICAgICAgICAvLyBidXQgdGhpcyBmaXggc2VlbXMgc2ltcGxlciB0byBp
bXBsZW1lbnQgYW5kIGFsc28gY2hlYXBlci4KKyAgICAgICAgICAgIGlmIChlbnRyeS5jYWxsZWUo
KSA9PSByZXN1bHRbMF0uY2FsbGVlKCkpIHsKKyAgICAgICAgICAgICAgICByZXN1bHRbMF0gPSBD
YWxsRWRnZShyZXN1bHRbMF0uY2FsbGVlKCksIGVudHJ5LmNvdW50KCkgKyByZXN1bHRbMF0uY291
bnQoKSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZW50cnkpOworICAgICAgICB9CisgICAg
fQorICAgIAorICAgIHN0ZDo6c29ydChyZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpLCBbXSAo
Y29uc3QgQ2FsbEVkZ2UmIGEsIGNvbnN0IENhbGxFZGdlJiBiKSAtPiBib29sIHsKKyAgICAgICAg
ICAgIHJldHVybiBhLmNvdW50KCkgPiBiLmNvdW50KCk7CisgICAgICAgIH0pOworICAgIAorICAg
IGlmIChyZXN1bHQuc2l6ZSgpID49IDIpCisgICAgICAgIEFTU0VSVChyZXN1bHRbMF0uY291bnQo
KSA+PSByZXN1bHQubGFzdCgpLmNvdW50KCkpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK0NhbGxFZGdlQ291bnRUeXBlIENhbGxFZGdlUHJvZmlsZTo6bnVtQ2FsbHNUb0tub3duQ2Vs
bHMoKSBjb25zdAoreworICAgIENhbGxFZGdlQ291bnRUeXBlIHJlc3VsdCA9IDA7CisgICAgZm9y
IChDYWxsRWRnZSBlZGdlIDogY2FsbEVkZ2VzKCkpCisgICAgICAgIHJlc3VsdCArPSBlZGdlLmNv
dW50KCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGJvb2wgd29ydGhEZXNwZWNp
ZnlpbmcoY29uc3QgQ2FsbFZhcmlhbnQmIHZhcmlhbnQpCit7CisgICAgcmV0dXJuICFIZWFwOjpp
c01hcmtlZCh2YXJpYW50LnJhd0NhbGxlZUNlbGwoKSkKKyAgICAgICAgJiYgSGVhcDo6aXNNYXJr
ZWQodmFyaWFudC5kZXNwZWNpZmllZENsb3N1cmUoKS5yYXdDYWxsZWVDZWxsKCkpOworfQorCiti
b29sIENhbGxFZGdlUHJvZmlsZTo6d29ydGhEZXNwZWNpZnlpbmcoKQoreworICAgIGlmIChtX2Ns
b3N1cmVzQXJlRGVzcGVjaWZpZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBp
ZiAoISFtX3ByaW1hcnlDYWxsZWUgJiYgIUpTQzo6d29ydGhEZXNwZWNpZnlpbmcobV9wcmltYXJ5
Q2FsbGVlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmIChtX290aGVyQ2Fs
bGVlcykgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9j
ZXNzZWQuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBpZiAoIUpTQzo6d29ydGhEZXNwZWNp
ZnlpbmcobV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNhbGxlZSgpKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3ZvaWQgQ2FsbEVkZ2VQcm9maWxlOjp2aXNpdFdlYWsoKQoreworICAgIGlm
ICghbV9wcmltYXJ5Q2FsbGVlICYmICFtX290aGVyQ2FsbGVlcykKKyAgICAgICAgcmV0dXJuOwor
ICAgIAorICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCisgICAg
Ly8gU2VlIGlmIGFueXRoaW5nIGlzIGRlYWQgYW5kIGlmIHRoYXQgY2FuIGJlIHJlY3RpZmllZCBi
eSBkZXNwZWNpZnlpbmcuCisgICAgaWYgKHdvcnRoRGVzcGVjaWZ5aW5nKCkpIHsKKyAgICAgICAg
Q2FsbFNwZWN0cnVtIG5ld1NwZWN0cnVtOworICAgICAgICAKKyAgICAgICAgaWYgKCEhbV9wcmlt
YXJ5Q2FsbGVlKQorICAgICAgICAgICAgbmV3U3BlY3RydW0uYWRkKG1fcHJpbWFyeUNhbGxlZS5k
ZXNwZWNpZmllZENsb3N1cmUoKSwgbV9udW1DYWxsc1RvUHJpbWFyeSk7CisgICAgICAgIAorICAg
ICAgICBpZiAobV9vdGhlckNhbGxlZXMpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAg
ICAgICBuZXdTcGVjdHJ1bS5hZGQoCisgICAgICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVz
LT5tX3Byb2Nlc3NlZFtpXS5jYWxsZWUoKS5kZXNwZWNpZmllZENsb3N1cmUoKSwKKyAgICAgICAg
ICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNvdW50KCkpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAg
ICAgIFZlY3RvcjxDYWxsU3BlY3RydW06OktleUFuZENvdW50PiBsaXN0ID0gbmV3U3BlY3RydW0u
YnVpbGRMaXN0KCk7CisgICAgICAgIEFTU0VSVChsaXN0LnNpemUoKSk7CisgICAgICAgIG1fcHJp
bWFyeUNhbGxlZSA9IGxpc3QubGFzdCgpLmtleTsKKyAgICAgICAgbV9udW1DYWxsc1RvUHJpbWFy
eSA9IGxpc3QubGFzdCgpLmNvdW50OworICAgICAgICAKKyAgICAgICAgQVNTRVJUKCEhbV9vdGhl
ckNhbGxlZXMgPT0gKGxpc3Quc2l6ZSgpID49IDIpKTsKKyAgICAgICAgaWYgKG1fb3RoZXJDYWxs
ZWVzKSB7CisgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuY2xlYXIoKTsK
KyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGxpc3Quc2l6ZSgpIC0gMTsgaS0tOykKKyAg
ICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuYXBwZW5kKENhbGxFZGdl
KGxpc3RbaV0ua2V5LCBsaXN0W2ldLmNvdW50KSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIG1fY2xvc3VyZXNBcmVEZXNwZWNpZmllZCA9IHRydWU7CisgICAgICAgIAorICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAorICAgIGlmICghIW1fcHJpbWFyeUNhbGxlZSAmJiAhSGVhcDo6
aXNNYXJrZWQobV9wcmltYXJ5Q2FsbGVlLnJhd0NhbGxlZUNlbGwoKSkpIHsKKyAgICAgICAgbV9u
dW1DYWxsc1RvVW5rbm93bkNlbGwgKz0gbV9udW1DYWxsc1RvUHJpbWFyeTsKKyAgICAgICAgCisg
ICAgICAgIG1fcHJpbWFyeUNhbGxlZSA9IENhbGxWYXJpYW50KCk7CisgICAgICAgIG1fbnVtQ2Fs
bHNUb1ByaW1hcnkgPSAwOworICAgIH0KKyAgICAKKyAgICBpZiAobV9vdGhlckNhbGxlZXMpIHsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nl
c3NlZC5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKG1fb3Ro
ZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jYWxsZWUoKS5yYXdDYWxsZWVDZWxsKCkpKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBtX251bUNh
bGxzVG9Vbmtub3duQ2VsbCArPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQo
KTsKKyAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpLS1dID0gbV9vdGhl
ckNhbGxlZXMtPm1fcHJvY2Vzc2VkLmxhc3QoKTsKKyAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVz
LT5tX3Byb2Nlc3NlZC5yZW1vdmVMYXN0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IC8vIE9ubHkgZXhpc3RzIHdoaWxlIHdlIGFyZSBwcm9jZXNzaW5nIHRoZSBsb2cuCisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKCFtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSk7Cisg
ICAgfQorfQorCit2b2lkIENhbGxFZGdlUHJvZmlsZTo6YWRkU2xvdyhDYWxsVmFyaWFudCBjYWxs
ZWUsIENhbGxFZGdlUHJvZmlsZVZlY3RvciYgbWVyZ2VCYWNrTG9nKQoreworICAgIC8vIFRoaXMg
ZXhpc3RzIHRvIGhhbmRsZSBjYXNlcyB3aGVyZSB0aGUgc3BlY3RydW0gd2Fzbid0IGNyZWF0ZWQg
eWV0LCBvciB3ZSdyZSBzdG9yaW5nIHRvIGEKKyAgICAvLyBwYXJ0aWN1bGFyIHNwZWN0cnVtIGZv
ciB0aGUgZmlyc3QgdGltZSBkdXJpbmcgYSBsb2cgcHJvY2Vzc2luZyBpdGVyYXRpb24uCisgICAg
CisgICAgaWYgKCFtX290aGVyQ2FsbGVlcykgeworICAgICAgICBtX290aGVyQ2FsbGVlcyA9IHN0
ZDo6bWFrZV91bmlxdWU8U2Vjb25kYXJ5PigpOworICAgICAgICAvLyBJZiBhIGNvbXBpbGVyIHRo
cmVhZCBub3RpY2VzIHRoZSBtX290aGVyQ2FsbGVlcyBiZWluZyBub24tbnVsbCwgd2Ugd2FudCB0
byBtYWtlIHN1cmUKKyAgICAgICAgLy8gdGhhdCBpdCBzZWVzIGEgZnVsbHkgY3JlYXRlZCBvbmUu
CisgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CisgICAgfQorICAgIAorICAgIGlmICgh
bV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0pIHsKKyAgICAgICAgbV9vdGhlckNh
bGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0gPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxTcGVjdHJ1
bT4oKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vz
c2VkLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9y
YXJ5U3BlY3RydW0tPmFkZCgKKyAgICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9j
ZXNzZWRbaV0uY2FsbGVlKCksCisgICAgICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJv
Y2Vzc2VkW2ldLmNvdW50KCkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBUaGlz
IG1lYW5zIHRoYXQgdGhpcyBpcyB0aGUgZmlyc3QgdGltZSB3ZSdyZSBzZWVpbmcgdGhpcyBwcm9m
aWxlIGR1cmluZyB0aGlzIGxvZworICAgICAgICAvLyBwcm9jZXNzaW5nIGl0ZXJhdGlvbi4KKyAg
ICAgICAgbWVyZ2VCYWNrTG9nLmFwcGVuZCh0aGlzKTsKKyAgICB9CisgICAgCisgICAgbV9vdGhl
ckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0tPmFkZChjYWxsZWUpOworfQorCit2b2lkIENh
bGxFZGdlUHJvZmlsZTo6bWVyZ2VCYWNrKCkKK3sKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxv
Y2tlcihtX2xvY2spOworICAgIAorICAgIEFTU0VSVChtX290aGVyQ2FsbGVlcyk7CisgICAgQVNT
RVJUKG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtKTsKKyAgICAKKyAgICBpZiAo
ISFtX3ByaW1hcnlDYWxsZWUpCisgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNw
ZWN0cnVtLT5hZGQobV9wcmltYXJ5Q2FsbGVlLCBtX251bUNhbGxzVG9QcmltYXJ5KTsKKyAgICAK
KyAgICBpZiAoIW1fY2xvc3VyZXNBcmVEZXNwZWNpZmllZCkgeworICAgICAgICBDYWxsU3BlY3Ry
dW0gbmV3U3BlY3RydW07CisgICAgICAgIGZvciAoYXV0byBlbnRyeSA6ICptX290aGVyQ2FsbGVl
cy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSkKKyAgICAgICAgICAgIG5ld1NwZWN0cnVtLmFkZChlbnRy
eS5rZXkuZGVzcGVjaWZpZWRDbG9zdXJlKCksIGVudHJ5LnZhbHVlKTsKKyAgICAgICAgCisgICAg
ICAgIGlmIChuZXdTcGVjdHJ1bS5zaXplKCkgPCBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlT
cGVjdHJ1bS0+c2l6ZSgpKSB7CisgICAgICAgICAgICAqbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9y
YXJ5U3BlY3RydW0gPSBuZXdTcGVjdHJ1bTsKKyAgICAgICAgICAgIG1fY2xvc3VyZXNBcmVEZXNw
ZWNpZmllZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgVmVjdG9yPENhbGxT
cGVjdHJ1bTo6S2V5QW5kQ291bnQ+IGxpc3QgPSBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlT
cGVjdHJ1bS0+YnVpbGRMaXN0KCk7CisgICAgbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3Bl
Y3RydW0gPSBudWxscHRyOworICAgIAorICAgIG1fcHJpbWFyeUNhbGxlZSA9IGxpc3QubGFzdCgp
LmtleTsKKyAgICBtX251bUNhbGxzVG9QcmltYXJ5ID0gbGlzdC5sYXN0KCkuY291bnQ7CisgICAg
bGlzdC5yZW1vdmVMYXN0KCk7CisgICAgCisgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2Vk
LmNsZWFyKCk7CisgICAgZm9yICh1bnNpZ25lZCBjb3VudCA9IG1heEtub3duQ2FsbGVlczsgY291
bnQtLSAmJiAhbGlzdC5pc0VtcHR5KCk7KSB7CisgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3By
b2Nlc3NlZC5hcHBlbmQoQ2FsbEVkZ2UobGlzdC5sYXN0KCkua2V5LCBsaXN0Lmxhc3QoKS5jb3Vu
dCkpOworICAgICAgICBsaXN0LnJlbW92ZUxhc3QoKTsKKyAgICB9CisgICAgCisgICAgZm9yICh1
bnNpZ25lZCBpID0gbGlzdC5zaXplKCk7IGktLTspCisgICAgICAgIG1fbnVtQ2FsbHNUb1Vua25v
d25DZWxsICs9IGxpc3RbaV0uY291bnQ7Cit9CisKK3ZvaWQgQ2FsbEVkZ2VQcm9maWxlOjpmYWRl
QnlIYWxmKCkKK3sKKyAgICBtX251bUNhbGxzVG9QcmltYXJ5ID4+PSAxOworICAgIG1fbnVtQ2Fs
bHNUb05vdENlbGwgPj49IDE7CisgICAgbV9udW1DYWxsc1RvVW5rbm93bkNlbGwgPj49IDE7Cisg
ICAgbV90b3RhbENvdW50ID4+PSAxOworICAgIAorICAgIGlmIChtX290aGVyQ2FsbGVlcykgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6
ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0g
PSBDYWxsRWRnZSgKKyAgICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRb
aV0uY2FsbGVlKCksCisgICAgICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2Vk
W2ldLmNvdW50KCkgPj4gMSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChtX290
aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSkgeworICAgICAgICAgICAgZm9yIChhdXRv
IGVudHJ5IDogKm1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtKQorICAgICAgICAg
ICAgICAgIGVudHJ5LnZhbHVlID4+PSAxOworICAgICAgICB9CisgICAgfQorfQorCitDYWxsRWRn
ZUxvZzo6Q2FsbEVkZ2VMb2coKQorICAgIDogbV9zY2FsZWRMb2dJbmRleChsb2dTaXplICogc2l6
ZW9mKEVudHJ5KSkKK3sKKyAgICBBU1NFUlQoIShtX3NjYWxlZExvZ0luZGV4ICUgc2l6ZW9mKEVu
dHJ5KSkpOworfQorCitDYWxsRWRnZUxvZzo6fkNhbGxFZGdlTG9nKCkgeyB9CisKK2Jvb2wgQ2Fs
bEVkZ2VMb2c6OmlzRW5hYmxlZCgpCit7CisgICAgcmV0dXJuIE9wdGlvbnM6OmVuYWJsZUNhbGxF
ZGdlUHJvZmlsaW5nKCkgJiYgT3B0aW9uczo6dXNlRlRMSklUKCk7Cit9CisKKyNpZiBFTkFCTEUo
SklUKQorCitleHRlcm4gIkMiIEpJVF9PUEVSQVRJT04gdm9pZCBvcGVyYXRpb25Qcm9jZXNzQ2Fs
bEVkZ2VMb2coQ2FsbEVkZ2VMb2cqKSBXVEZfSU5URVJOQUw7CitleHRlcm4gIkMiIEpJVF9PUEVS
QVRJT04gdm9pZCBvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2coQ2FsbEVkZ2VMb2cqIGxvZykK
K3sKKyAgICBsb2ctPnByb2Nlc3NMb2coKTsKK30KKwordm9pZCBDYWxsRWRnZUxvZzo6ZW1pdExv
Z0NvZGUoQ0NhbGxIZWxwZXJzJiBqaXQsIENhbGxFZGdlUHJvZmlsZSYgcHJvZmlsZSwgSlNWYWx1
ZVJlZ3MgY2FsbGVlUmVncykKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50
cyA9IDE7CisgICAgCisgICAgR1BSUmVnIHNjcmF0Y2hHUFI7CisgICAgaWYgKCFjYWxsZWVSZWdz
LnVzZXMoR1BSSW5mbzo6cmVnVDApKQorICAgICAgICBzY3JhdGNoR1BSID0gR1BSSW5mbzo6cmVn
VDA7CisgICAgZWxzZSBpZiAoIWNhbGxlZVJlZ3MudXNlcyhHUFJJbmZvOjpyZWdUMSkpCisgICAg
ICAgIHNjcmF0Y2hHUFIgPSBHUFJJbmZvOjpyZWdUMTsKKyAgICBlbHNlCisgICAgICAgIHNjcmF0
Y2hHUFIgPSBHUFJJbmZvOjpyZWdUMjsKKyAgICAKKyAgICBqaXQubG9hZDMyKCZtX3NjYWxlZExv
Z0luZGV4LCBzY3JhdGNoR1BSKTsKKyAgICAKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgb2sgPSBq
aXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6Tm9uWmVybywgc2NyYXRjaEdQUik7CisgICAg
CisgICAgQVNTRVJUX1VOVVNFRChudW1iZXJPZkFyZ3VtZW50cywgc3RhY2tBbGlnbm1lbnRSZWdp
c3RlcnMoKSA+PSAxICsgbnVtYmVyT2ZBcmd1bWVudHMpOworICAgIAorICAgIGppdC5zdWJQdHIo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhY2tBbGlnbm1lbnRCeXRlcygpKSwgQ0NhbGxI
ZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgCisgICAgaml0LnN0b3JlVmFsdWUo
Y2FsbGVlUmVncywgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2lu
dGVyUmVnaXN0ZXIsIHNpemVvZihKU1ZhbHVlKSkpOworICAgIGppdC5zZXR1cEFyZ3VtZW50cyhD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGhpcykpOworICAgIGppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlvblByb2Nlc3ND
YWxsRWRnZUxvZykpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICBqaXQuY2FsbChHUFJJbmZv
Ojpub25BcmdHUFIwKTsKKyAgICBqaXQubG9hZFZhbHVlKENDYWxsSGVscGVyczo6QWRkcmVzcyhD
Q2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzaXplb2YoSlNWYWx1ZSkpLCBjYWxs
ZWVSZWdzKTsKKyAgICAKKyAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIpOworICAgIAorICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGxvZ1Np
emUgKiBzaXplb2YoRW50cnkpKSwgc2NyYXRjaEdQUik7CisgICAgb2subGluaygmaml0KTsKKwor
ICAgIGppdC5zdWIzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzaXplb2YoRW50cnkpKSwg
c2NyYXRjaEdQUik7CisgICAgaml0LnN0b3JlMzIoc2NyYXRjaEdQUiwgJm1fc2NhbGVkTG9nSW5k
ZXgpOworICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fbG9nKSwg
c2NyYXRjaEdQUik7CisgICAgaml0LnN0b3JlVmFsdWUoY2FsbGVlUmVncywgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHNjcmF0Y2hHUFIsIE9CSkVDVF9PRkZTRVRPRihFbnRyeSwgbV92YWx1ZSkpKTsK
KyAgICBqaXQuc3RvcmVQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZwcm9maWxlKSwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIE9CSkVDVF9PRkZTRVRPRihFbnRyeSwg
bV9wcm9maWxlKSkpOworfQorCit2b2lkIENhbGxFZGdlTG9nOjplbWl0TG9nQ29kZSgKKyAgICBD
Q2FsbEhlbHBlcnMmIGppdCwgT3duUHRyPENhbGxFZGdlUHJvZmlsZT4mIHByb2ZpbGVQb2ludGVy
LCBKU1ZhbHVlUmVncyBjYWxsZWVSZWdzKQoreworICAgIGlmICghaXNFbmFibGVkKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICAKKyAgICBwcm9maWxlUG9pbnRlci5jcmVhdGVUcmFuc2FjdGlvbmFs
bHkoKTsKKyAgICBlbWl0TG9nQ29kZShqaXQsICpwcm9maWxlUG9pbnRlciwgY2FsbGVlUmVncyk7
Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCit2b2lkIENhbGxFZGdlTG9nOjpwcm9jZXNz
TG9nKCkKK3sKKyAgICBBU1NFUlQoIShtX3NjYWxlZExvZ0luZGV4ICUgc2l6ZW9mKEVudHJ5KSkp
OworICAgIAorICAgIGlmIChPcHRpb25zOjpjYWxsRWRnZVByb2ZpbGVSZWFsbHlQcm9jZXNzZXNM
b2coKSkgeworICAgICAgICBDYWxsRWRnZVByb2ZpbGVWZWN0b3IgbWVyZ2VCYWNrTG9nOworICAg
ICAgICAKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9zY2FsZWRMb2dJbmRleCAvIHNpemVv
ZihFbnRyeSk7IGkgPCBsb2dTaXplOyArK2kpCisgICAgICAgICAgICBtX2xvZ1tpXS5tX3Byb2Zp
bGUtPmFkZChtX2xvZ1tpXS5tX3ZhbHVlLCBtZXJnZUJhY2tMb2cpOworICAgICAgICAKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbWVyZ2VCYWNrTG9nLnNpemUoKTsgaS0tOykKKyAgICAgICAg
ICAgIG1lcmdlQmFja0xvZ1tpXS0+bWVyZ2VCYWNrKCk7CisgICAgfQorICAgIAorICAgIG1fc2Nh
bGVkTG9nSW5kZXggPSBsb2dTaXplICogc2l6ZW9mKEVudHJ5KTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVBy
b2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bEVkZ2VQcm9maWxlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBD
YWxsRWRnZVByb2ZpbGVfaAorI2RlZmluZSBDYWxsRWRnZVByb2ZpbGVfaAorCisjaW5jbHVkZSAi
Q2FsbEVkZ2UuaCIKKyNpbmNsdWRlICJDYWxsVmFyaWFudC5oIgorI2luY2x1ZGUgIkNvbmN1cnJl
bnRKSVRMb2NrLmgiCisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5o
PgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQ0NhbGxIZWxwZXJzOworY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworCitjbGFzcyBDYWxsRWRnZUxvZzsKK2NsYXNzIENhbGxFZGdlUHJv
ZmlsZTsKK3R5cGVkZWYgVmVjdG9yPENhbGxFZGdlUHJvZmlsZSosIDEwPiBDYWxsRWRnZVByb2Zp
bGVWZWN0b3I7CisKK2NsYXNzIENhbGxFZGdlUHJvZmlsZSB7CitwdWJsaWM6CisgICAgQ2FsbEVk
Z2VQcm9maWxlKCk7CisgICAgCisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbnVtQ2FsbHNUb05vdENl
bGwoKSBjb25zdCB7IHJldHVybiBtX251bUNhbGxzVG9Ob3RDZWxsOyB9CisgICAgQ2FsbEVkZ2VD
b3VudFR5cGUgbnVtQ2FsbHNUb1Vua25vd25DZWxsKCkgY29uc3QgeyByZXR1cm4gbV9udW1DYWxs
c1RvVW5rbm93bkNlbGw7IH0KKyAgICBDYWxsRWRnZUNvdW50VHlwZSBudW1DYWxsc1RvS25vd25D
ZWxscygpIGNvbnN0OworICAgIAorICAgIENhbGxFZGdlQ291bnRUeXBlIHRvdGFsQ2FsbHMoKSBj
b25zdCB7IHJldHVybiBtX3RvdGFsQ291bnQ7IH0KKyAgICAKKyAgICAvLyBDYWxsIHdoaWxlIGhv
bGRpbmcgdGhlIG93bmluZyBDb2RlQmxvY2sncyBsb2NrLgorICAgIENhbGxFZGdlTGlzdCBjYWxs
RWRnZXMoKSBjb25zdDsKKyAgICAKKyAgICB2b2lkIHZpc2l0V2VhaygpOworICAgIAorcHJpdmF0
ZToKKyAgICBmcmllbmQgY2xhc3MgQ2FsbEVkZ2VMb2c7CisgICAgCisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIG1heEtub3duQ2FsbGVlcyA9IDU7CisgICAgCisgICAgdm9pZCBhZGQoSlNWYWx1
ZSwgQ2FsbEVkZ2VQcm9maWxlVmVjdG9yJiBtZXJnZUJhY2tMb2cpOworICAgIAorICAgIGJvb2wg
d29ydGhEZXNwZWNpZnlpbmcoKTsKKyAgICB2b2lkIGFkZFNsb3coQ2FsbFZhcmlhbnQsIENhbGxF
ZGdlUHJvZmlsZVZlY3RvciYgbWVyZ2VCYWNrTG9nKTsKKyAgICB2b2lkIG1lcmdlQmFjaygpOwor
ICAgIHZvaWQgZmFkZUJ5SGFsZigpOworICAgIAorICAgIC8vIEl0J3MgY2hlYXBlciB0byBsZXQg
dGhpcyBoYXZlIGl0cyBvd24gbG9jay4gSXQgbmVlZHMgdG8gYmUgYWJsZSB0byBmaW5kIHdoaWNo
IGxvY2sgdG8KKyAgICAvLyBsb2NrLiBOb3JtYWxseSBpdCB3b3VsZCBsb2NrIHRoZSBvd25pbmcg
Q29kZUJsb2NrJ3MgbG9jaywgYnV0IHRoYXQgd291bGQgcmVxdWlyZSBhCisgICAgLy8gcG9pbnRl
ci13aWR0aCB3b3JkIHRvIHBvaW50IGF0IHRoZSBDb2RlQmxvY2suIEhhdmluZyB0aGUgYnl0ZS1z
aXplZCBsb2NrIGhlcmUgaXMKKyAgICAvLyBjaGVhcGVyLiBIb3dldmVyLCB0aGlzIG1lYW5zIHRo
YXQgdGhlIHJlbGF0aW9uc2hpcCB3aXRoIHRoZSBDb2RlQmxvY2sgbG9jayBpczoKKyAgICAvLyBh
Y3F1aXJlIHRoZSBDb2RlQmxvY2sgbG9jayBiZWZvcmUgdGhpcyBvbmUuCisgICAgbXV0YWJsZSBD
b25jdXJyZW50SklUTG9jayBtX2xvY2s7CisgICAgCisgICAgYm9vbCBtX2Nsb3N1cmVzQXJlRGVz
cGVjaWZpZWQ7CisgICAgCisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbV9udW1DYWxsc1RvUHJpbWFy
eTsKKyAgICBDYWxsRWRnZUNvdW50VHlwZSBtX251bUNhbGxzVG9Ob3RDZWxsOworICAgIENhbGxF
ZGdlQ291bnRUeXBlIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxsOworICAgIENhbGxFZGdlQ291bnRU
eXBlIG1fdG90YWxDb3VudDsKKyAgICBDYWxsVmFyaWFudCBtX3ByaW1hcnlDYWxsZWU7CisgICAg
CisgICAgdHlwZWRlZiBTcGVjdHJ1bTxDYWxsVmFyaWFudCwgQ2FsbEVkZ2VDb3VudFR5cGU+IENh
bGxTcGVjdHJ1bTsKKyAgICAKKyAgICBzdHJ1Y3QgU2Vjb25kYXJ5IHsKKyAgICAgICAgVmVjdG9y
PENhbGxFZGdlPiBtX3Byb2Nlc3NlZDsgLy8gUHJvY2Vzc2VkIGJ1dCBub3QgbmVjZXNzYXJpbHkg
c29ydGVkLgorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbFNwZWN0cnVtPiBtX3RlbXBvcmFy
eVNwZWN0cnVtOworICAgIH07CisgICAgCisgICAgc3RkOjp1bmlxdWVfcHRyPFNlY29uZGFyeT4g
bV9vdGhlckNhbGxlZXM7Cit9OworCitjbGFzcyBDYWxsRWRnZUxvZyB7CitwdWJsaWM6CisgICAg
Q2FsbEVkZ2VMb2coKTsKKyAgICB+Q2FsbEVkZ2VMb2coKTsKKworICAgIHN0YXRpYyBib29sIGlz
RW5hYmxlZCgpOworICAgIAorI2lmIEVOQUJMRShKSVQpCisgICAgdm9pZCBlbWl0TG9nQ29kZShD
Q2FsbEhlbHBlcnMmLCBDYWxsRWRnZVByb2ZpbGUmLCBKU1ZhbHVlUmVncyBjYWxsZWVSZWdzKTsg
Ly8gQXNzdW1lcyB0aGF0IHN0YWNrIGlzIGFsaWduZWQsIGFsbCB2b2xhdGlsZSByZWdpc3RlcnMg
LSBvdGhlciB0aGFuIGNhbGxlZUdQUiAtIGFyZSBjbG9iYmVyYWJsZSwgYW5kIHRoZSBwYXJhbWV0
ZXIgc3BhY2UgaXMgaW4gdXNlLgorICAgIAorICAgIC8vIFNhbWUgYXMgYWJvdmUgYnV0IGNyZWF0
ZXMgYSBDYWxsRWRnZVByb2ZpbGUgaW5zdGFuY2UgaWYgb25lIGRpZCBub3QgYWxyZWFkeSBleGlz
dC4gRG9lcworICAgIC8vIHRoaXMgaW4gYSB0aHJlYWQtc2FmZSBtYW5uZXIgYnkgY2FsbGluZyBP
d25QdHI6OmNyZWF0ZVRyYW5zYWN0aW9uYWxseS4KKyAgICB2b2lkIGVtaXRMb2dDb2RlKENDYWxs
SGVscGVycyYsIE93blB0cjxDYWxsRWRnZVByb2ZpbGU+JiwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVn
cyk7CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKyAgICAKKyAgICB2b2lkIHByb2Nlc3NMb2coKTsK
KyAgICAKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb2dTaXplID0gMTAwMDA7CisgICAgCisgICAg
c3RydWN0IEVudHJ5IHsKKyAgICAgICAgSlNWYWx1ZSBtX3ZhbHVlOworICAgICAgICBDYWxsRWRn
ZVByb2ZpbGUqIG1fcHJvZmlsZTsKKyAgICB9OworICAgIAorICAgIHVuc2lnbmVkIG1fc2NhbGVk
TG9nSW5kZXg7CisgICAgRW50cnkgbV9sb2dbbG9nU2l6ZV07Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKworI2VuZGlmIC8vIENhbGxFZGdlUHJvZmlsZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZUlubGluZXMu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRn
ZVByb2ZpbGVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENhbGxFZGdl
UHJvZmlsZUlubGluZXNfaAorI2RlZmluZSBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzX2gKKworI2lu
Y2x1ZGUgIkNhbGxFZGdlUHJvZmlsZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworaW5saW5lIENh
bGxFZGdlUHJvZmlsZTo6Q2FsbEVkZ2VQcm9maWxlKCkKKyAgICA6IG1fY2xvc3VyZXNBcmVEZXNw
ZWNpZmllZChmYWxzZSkKKyAgICAsIG1fbnVtQ2FsbHNUb1ByaW1hcnkoMCkKKyAgICAsIG1fbnVt
Q2FsbHNUb05vdENlbGwoMCkKKyAgICAsIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxsKDApCisgICAg
LCBtX3RvdGFsQ291bnQoMCkKKyAgICAsIG1fcHJpbWFyeUNhbGxlZShudWxscHRyKQoreworfQor
CitBTFdBWVNfSU5MSU5FIHZvaWQgQ2FsbEVkZ2VQcm9maWxlOjphZGQoSlNWYWx1ZSB2YWx1ZSwg
Q2FsbEVkZ2VQcm9maWxlVmVjdG9yJiBtZXJnZUJhY2tMb2cpCit7CisgICAgdW5zaWduZWQgbmV3
VG90YWxDb3VudCA9IG1fdG90YWxDb3VudCArIDE7CisgICAgaWYgKFVOTElLRUxZKCFuZXdUb3Rh
bENvdW50KSkgeworICAgICAgICBmYWRlQnlIYWxmKCk7IC8vIFRhY2tsZSBvdmVyZmxvd3MgYnkg
ZGl2aWRpbmcgYWxsIGNvdW50cyBieSB0d28uCisgICAgICAgIG5ld1RvdGFsQ291bnQgPSBtX3Rv
dGFsQ291bnQgKyAxOworICAgIH0KKyAgICBBU1NFUlQobmV3VG90YWxDb3VudCk7CisgICAgbV90
b3RhbENvdW50ID0gbmV3VG90YWxDb3VudDsKKyAgICAKKyAgICBpZiAoVU5MSUtFTFkoIXZhbHVl
LmlzQ2VsbCgpKSkgeworICAgICAgICBtX251bUNhbGxzVG9Ob3RDZWxsKys7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBDYWxsVmFyaWFudCBjYWxsZWUgPSBDYWxsVmFyaWFudCh2YWx1
ZS5hc0NlbGwoKSk7CisgICAgCisgICAgaWYgKG1fY2xvc3VyZXNBcmVEZXNwZWNpZmllZCkKKyAg
ICAgICAgY2FsbGVlID0gY2FsbGVlLmRlc3BlY2lmaWVkQ2xvc3VyZSgpOworICAgIAorICAgIGlm
IChVTkxJS0VMWSghbV9wcmltYXJ5Q2FsbGVlKSkgeworICAgICAgICBtX3ByaW1hcnlDYWxsZWUg
PSBjYWxsZWU7CisgICAgICAgIG1fbnVtQ2FsbHNUb1ByaW1hcnkgPSAxOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgICAgICAKKyAgICBpZiAoTElLRUxZKG1fcHJpbWFyeUNhbGxlZSA9PSBj
YWxsZWUpKSB7CisgICAgICAgIG1fbnVtQ2FsbHNUb1ByaW1hcnkrKzsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICAgICAgCisgICAgaWYgKFVOTElLRUxZKCFtX290aGVyQ2FsbGVlcykpIHsK
KyAgICAgICAgYWRkU2xvdyhjYWxsZWUsIG1lcmdlQmFja0xvZyk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgICAgIAorICAgIENhbGxTcGVjdHJ1bSogc2Vjb25kYXJ5ID0gbV9vdGhlckNh
bGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0uZ2V0KCk7CisgICAgaWYgKCFzZWNvbmRhcnkpIHsK
KyAgICAgICAgYWRkU2xvdyhjYWxsZWUsIG1lcmdlQmFja0xvZyk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgICAgIAorICAgIHNlY29uZGFyeS0+YWRkKGNhbGxlZSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ2FsbEVkZ2VQcm9maWxlSW5saW5lc19oCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3Bw
CShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bExpbmtJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsMTEgQEAgdm9pZCBDYWxs
TGlua0luZm86OnZpc2l0V2VhayhSZXBhdGNoQnVmZgogICAgIH0KICAgICBpZiAoISFsYXN0U2Vl
bkNhbGxlZSAmJiAhSGVhcDo6aXNNYXJrZWQobGFzdFNlZW5DYWxsZWUuZ2V0KCkpKQogICAgICAg
ICBsYXN0U2VlbkNhbGxlZS5jbGVhcigpOworICAgIAorICAgIGlmIChjYWxsRWRnZVByb2ZpbGUp
IHsKKyAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CisgICAgICAgIGNhbGxFZGdlUHJvZmls
ZS0+dmlzaXRXZWFrKCk7CisgICAgfQogfQogCiBDYWxsTGlua0luZm8mIENhbGxMaW5rSW5mbzo6
ZHVtbXkoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5m
by5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlu
a0luZm8uaAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxMaW5rSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZu
ZGVmIENhbGxMaW5rSW5mb19oCiAjZGVmaW5lIENhbGxMaW5rSW5mb19oCiAKKyNpbmNsdWRlICJD
YWxsRWRnZVByb2ZpbGUuaCIKICNpbmNsdWRlICJDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmgiCiAj
aW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZC5oIgpAQCAtMzMsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJPcGNvZGUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKKyNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKQEAgLTg4LDYgKzkwLDcgQEAgc3RydWN0IENhbGxMaW5rSW5mbyA6IHB1YmxpYyBCYXNp
Y1Jhd1NlbgogICAgIHVuc2lnbmVkIGNhbGxlZUdQUiA6IDg7CiAgICAgdW5zaWduZWQgc2xvd1Bh
dGhDb3VudDsKICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW47CisgICAgT3duUHRyPENhbGxFZGdl
UHJvZmlsZT4gY2FsbEVkZ2VQcm9maWxlOwogCiAgICAgYm9vbCBpc0xpbmtlZCgpIHsgcmV0dXJu
IHN0dWIgfHwgY2FsbGVlOyB9CiAgICAgdm9pZCB1bmxpbmsoUmVwYXRjaEJ1ZmZlciYpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMu
Y3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw1NCArMzIsMjIgQEAKICNp
bmNsdWRlICJMTEludENhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNp
bmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CisjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CiAK
IG5hbWVzcGFjZSBKU0MgewogCiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAK
IENhbGxMaW5rU3RhdHVzOjpDYWxsTGlua1N0YXR1cyhKU1ZhbHVlIHZhbHVlKQotICAgIDogbV9j
YWxsVGFyZ2V0KHZhbHVlKQotICAgICwgbV9leGVjdXRhYmxlKDApCi0gICAgLCBtX2NvdWxkVGFr
ZVNsb3dQYXRoKGZhbHNlKQorICAgIDogbV9jb3VsZFRha2VTbG93UGF0aChmYWxzZSkKICAgICAs
IG1faXNQcm92ZWQoZmFsc2UpCiB7Ci0gICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkp
CisgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkpIHsKKyAgICAgICAgbV9jb3VsZFRh
a2VTbG93UGF0aCA9IHRydWU7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgCi0gICAgaWYg
KCF2YWx1ZS5hc0NlbGwoKS0+aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkKLSAgICAgICAg
cmV0dXJuOwotICAgIAotICAgIG1fZXhlY3V0YWJsZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4odmFs
dWUuYXNDZWxsKCkpLT5leGVjdXRhYmxlKCk7Ci19Ci0KLUpTRnVuY3Rpb24qIENhbGxMaW5rU3Rh
dHVzOjpmdW5jdGlvbigpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2NhbGxUYXJnZXQgfHwgIW1fY2Fs
bFRhcmdldC5pc0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgaWYgKCFtX2Nh
bGxUYXJnZXQuYXNDZWxsKCktPmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpCi0gICAgICAg
IHJldHVybiAwOwotICAgIAotICAgIHJldHVybiBqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2FsbFRh
cmdldC5hc0NlbGwoKSk7Ci19Ci0KLUludGVybmFsRnVuY3Rpb24qIENhbGxMaW5rU3RhdHVzOjpp
bnRlcm5hbEZ1bmN0aW9uKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fY2FsbFRhcmdldCB8fCAhbV9j
YWxsVGFyZ2V0LmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBpZiAoIW1f
Y2FsbFRhcmdldC5hc0NlbGwoKS0+aW5oZXJpdHMoSW50ZXJuYWxGdW5jdGlvbjo6aW5mbygpKSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgcmV0dXJuIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0
aW9uKj4obV9jYWxsVGFyZ2V0LmFzQ2VsbCgpKTsKLX0KLQotSW50cmluc2ljIENhbGxMaW5rU3Rh
dHVzOjppbnRyaW5zaWNGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKSBjb25zdAotewot
ICAgIGlmICghbV9leGVjdXRhYmxlKQotICAgICAgICByZXR1cm4gTm9JbnRyaW5zaWM7Ci0gICAg
Ci0gICAgcmV0dXJuIG1fZXhlY3V0YWJsZS0+aW50cmluc2ljRm9yKGtpbmQpOworICAgIG1fZWRn
ZXMuYXBwZW5kKENhbGxFZGdlKENhbGxWYXJpYW50KHZhbHVlLmFzQ2VsbCgpKSwgMSkpOwogfQog
CiBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludChjb25zdCBD
b25jdXJyZW50SklUTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5z
aWduZWQgYnl0ZWNvZGVJbmRleCkKQEAgLTg3LDcgKzU1LDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2Fs
bExpbmtTdGF0dXM6OmNvbXB1dGVGcgogICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsK
ICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAjaWYgRU5BQkxFKERGR19KSVQpCi0g
ICAgaWYgKHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4
aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZEZ1bmN0aW9uKSkpIHsKKyAgICBpZiAocHJvZmlsZWRC
bG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJ
bmRleCwgQmFkQ2VsbCkpKSB7CiAgICAgICAgIC8vIFdlIGNvdWxkIGZvcmNlIHRoaXMgdG8gYmUg
YSBjbG9zdXJlIGNhbGwsIGJ1dCBpbnN0ZWFkIHdlJ2xsIGp1c3QgYXNzdW1lIHRoYXQgaXQKICAg
ICAgICAgLy8gdGFrZXMgc2xvdyBwYXRoLgogICAgICAgICByZXR1cm4gdGFrZXNTbG93UGF0aCgp
OwpAQCAtMTI1LDcgKzkzLDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVGbwogICAgIGlmICghY2FsbExpbmtJbmZvKQogICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21M
TEludChsb2NrZXIsIHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOwogICAgIAotICAgIHJl
dHVybiBjb21wdXRlRm9yKGxvY2tlciwgKmNhbGxMaW5rSW5mbywgZXhpdFNpdGVEYXRhKTsKKyAg
ICByZXR1cm4gY29tcHV0ZUZvcihsb2NrZXIsIHByb2ZpbGVkQmxvY2ssICpjYWxsTGlua0luZm8s
IGV4aXRTaXRlRGF0YSk7CiAjZWxzZQogICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygpOwogI2Vu
ZGlmCkBAIC0xMzksMTAgKzEwNywxMCBAQCBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRhIENh
bGxMaW5rU3RhCiAgICAgCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgZXhpdFNpdGVEYXRhLm1f
dGFrZXNTbG93UGF0aCA9Ci0gICAgICAgIHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tl
ciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENhY2hlLCBleGl0aW5n
SklUVHlwZSkpCisgICAgICAgIHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZH
OjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZFR5cGUsIGV4aXRpbmdKSVRUeXBl
KSkKICAgICAgICAgfHwgcHJvZmlsZWRCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZy
ZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkRXhlY3V0YWJsZSwgZXhpdGluZ0pJVFR5
cGUpKTsKICAgICBleGl0U2l0ZURhdGEubV9iYWRGdW5jdGlvbiA9Ci0gICAgICAgIHByb2ZpbGVk
QmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2Rl
SW5kZXgsIEJhZEZ1bmN0aW9uLCBleGl0aW5nSklUVHlwZSkpOworICAgICAgICBwcm9maWxlZEJs
b2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUlu
ZGV4LCBCYWRDZWxsLCBleGl0aW5nSklUVHlwZSkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
bG9ja2VyKTsKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CkBAIC0xNTQsNyArMTIy
LDM0IEBAIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgQ2FsbExpbmtTdGEKIH0KIAogI2lm
IEVOQUJMRShKSVQpCi1DYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcihj
b25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pCitD
YWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKKyAgICBjb25zdCBDb25j
dXJyZW50SklUTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQ2FsbExp
bmtJbmZvJiBjYWxsTGlua0luZm8pCit7CisgICAgLy8gV2UgZG9uJ3QgcmVhbGx5IG5lZWQgdGhp
cywgYnV0IGFueXRpbWUgd2UgaGF2ZSB0byBkZWJ1ZyB0aGlzIGNvZGUsIGl0IGJlY29tZXMgaW5k
aXNwZW5zYWJsZS4KKyAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CisgICAgCisgICAg
aWYgKE9wdGlvbnM6OmNhbGxTdGF0dXNTaG91bGRVc2VDYWxsRWRnZVByb2ZpbGUoKSkgeworICAg
ICAgICAvLyBBbHdheXMgdHJ1c3QgdGhlIGNhbGwgZWRnZSBwcm9maWxlIG92ZXIgYW55dGhpbmcg
ZWxzZSBzaW5jZSB0aGlzIGhhcyBwcmVjaXNlIGNvdW50cy4KKyAgICAgICAgLy8gSXQgY2FuIG1h
a2UgdGhlIGJlc3QgcG9zc2libGUgZGVjaXNpb24gYmVjYXVzZSBpdCBuZXZlciAiZm9yZ2V0cyIg
d2hhdCBoYXBwZW5lZCBmb3IgYW55CisgICAgICAgIC8vIGNhbGwsIHdpdGggdGhlIGV4Y2VwdGlv
biBvZiBmYWRpbmcgb3V0IHRoZSBjb3VudHMgb2Ygb2xkIGNhbGxzIChmb3IgZXhhbXBsZSBpZiB0
aGUKKyAgICAgICAgLy8gY291bnRlciB0eXBlIGlzIDE2LWJpdCB0aGVuIGNhbGxzIHRoYXQgaGFw
cGVuZWQgbW9yZSB0aGFuIDJeMTYgY2FsbHMgYWdvIGFyZSBnaXZlbiBoYWxmCisgICAgICAgIC8v
IHdlaWdodCwgYW5kIHRoaXMgY29tcG91bmRzIGZvciBldmVyeSAyXjE1IFtzaWNdIGNhbGxzIGFm
dGVyIHRoYXQpLiBUaGUgY29tYmluYXRpb24gb2YKKyAgICAgICAgLy8gaGlnaCBmaWRlbGl0eSBm
b3IgcmVjZW50IGNhbGxzIGFuZCBmYWRpbmcgZm9yIG9sZGVyIGNhbGxzIG1ha2VzIHRoaXMgdGhl
IG1vc3QgdXNlZnVsCisgICAgICAgIC8vIG1lY2hhbWlzbSBvZiBjaG9vc2luZyBob3cgdG8gb3B0
aW1pemUgZnV0dXJlIGNhbGxzLgorICAgICAgICBDYWxsRWRnZVByb2ZpbGUqIGVkZ2VQcm9maWxl
ID0gY2FsbExpbmtJbmZvLmNhbGxFZGdlUHJvZmlsZS5nZXQoKTsKKyAgICAgICAgV1RGOjpsb2Fk
TG9hZEZlbmNlKCk7CisgICAgICAgIGlmIChlZGdlUHJvZmlsZSkgeworICAgICAgICAgICAgQ2Fs
bExpbmtTdGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZyb21DYWxsRWRnZVByb2ZpbGUoZWRnZVByb2Zp
bGUpOworICAgICAgICAgICAgaWYgKCEhcmVzdWx0KQorICAgICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIGNvbXB1dGVGcm9tQ2Fs
bExpbmtJbmZvKGxvY2tlciwgY2FsbExpbmtJbmZvKTsKK30KKworQ2FsbExpbmtTdGF0dXMgQ2Fs
bExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tQ2FsbExpbmtJbmZvKAorICAgIGNvbnN0IENvbmN1cnJl
bnRKSVRMb2NrZXImLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykKIHsKICAgICAvLyBOb3Rl
IHRoYXQgZGVzcGl0ZSByZXF1aXJpbmcgdGhhdCB0aGUgbG9ja2VyIGlzIGhlbGQsIHRoaXMgY29k
ZSBpcyByYWN5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHRoZSBDYWxsTGlua0luZm86IGl0IG1h
eSBnZXQgY2xlYXJlZCB3aGlsZSB0aGlzIGNvZGUgcnVucyEgVGhpcyBpcyBiZWNhdXNlCkBAIC0x
NzcsNyArMTcyLDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGbwog
ICAgIAogICAgIEpTRnVuY3Rpb24qIHRhcmdldCA9IGNhbGxMaW5rSW5mby5sYXN0U2VlbkNhbGxl
ZS5nZXQoKTsKICAgICBpZiAoIXRhcmdldCkKLSAgICAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVz
KCk7CisgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7CiAgICAgCiAgICAgaWYgKGNhbGxM
aW5rSW5mby5oYXNTZWVuQ2xvc3VyZSkKICAgICAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKHRh
cmdldC0+ZXhlY3V0YWJsZSgpKTsKQEAgLTE4NSwxNSArMTgwLDQzIEBAIENhbGxMaW5rU3RhdHVz
IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXModGFy
Z2V0KTsKIH0KIAotQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCi0g
ICAgY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBDYWxsTGlua0luZm8mIGNhbGxM
aW5rSW5mbywgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSkKK0NhbGxMaW5rU3RhdHVzIENhbGxM
aW5rU3RhdHVzOjpjb21wdXRlRnJvbUNhbGxFZGdlUHJvZmlsZShDYWxsRWRnZVByb2ZpbGUqIGVk
Z2VQcm9maWxlKQogewotICAgIGlmIChleGl0U2l0ZURhdGEubV90YWtlc1Nsb3dQYXRoKQorICAg
IC8vIEluIGNhc2VzIHdoZXJlIHRoZSBjYWxsIGVkZ2UgcHJvZmlsZSBzYXcgbm90aGluZywgdXNl
IHRoZSBDYWxsTGlua0luZm8gaW5zdGVhZC4KKyAgICBpZiAoIWVkZ2VQcm9maWxlLT50b3RhbENh
bGxzKCkpCisgICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygpOworICAgIAorICAgIC8vIFRv
IGRvIGFueXRoaW5nIG1lYW5pbmdmdWwsIHdlIHJlcXVpcmUgdGhhdCB0aGUgbWFqb3JpdHkgb2Yg
Y2FsbHMgYXJlIHRvIHNvbWV0aGluZyB3ZQorICAgIC8vIGtub3cgaG93IHRvIGhhbmRsZS4KKyAg
ICB1bnNpZ25lZCBudW1DYWxsc1RvS25vd24gPSBlZGdlUHJvZmlsZS0+bnVtQ2FsbHNUb0tub3du
Q2VsbHMoKTsKKyAgICB1bnNpZ25lZCBudW1DYWxsc1RvVW5rbm93biA9IGVkZ2VQcm9maWxlLT5u
dW1DYWxsc1RvTm90Q2VsbCgpICsgZWRnZVByb2ZpbGUtPm51bUNhbGxzVG9Vbmtub3duQ2VsbCgp
OworICAgIAorICAgIC8vIFdlIHJlcXVpcmUgdGhhdCB0aGUgbWFqb3JpdHkgb2YgY2FsbHMgd2Vy
ZSB0byBzb21ldGhpbmcgdGhhdCB3ZSBjb3VsZCBwb3NzaWJseSBpbmxpbmUuCisgICAgaWYgKG51
bUNhbGxzVG9Lbm93biA8PSBudW1DYWxsc1RvVW5rbm93bikKKyAgICAgICAgcmV0dXJuIHRha2Vz
U2xvd1BhdGgoKTsKKyAgICAKKyAgICAvLyBXZSByZXF1aXJlIHRoYXQgdGhlIG51bWJlciBvZiBz
dWNoIGNhbGxzIGlzIGdyZWF0ZXIgdGhhbiBzb21lIG1pbmltYWwgdGhyZXNob2xkLCBzbyB0aGF0
IHdlCisgICAgLy8gYXZvaWQgaW5saW5pbmcgY29tcGxldGVseSBjb2xkIGNhbGxzLgorICAgIGlm
IChudW1DYWxsc1RvS25vd24gPCBPcHRpb25zOjpmcmVxdWVudENhbGxUaHJlc2hvbGQoKSkKICAg
ICAgICAgcmV0dXJuIHRha2VzU2xvd1BhdGgoKTsKICAgICAKLSAgICBDYWxsTGlua1N0YXR1cyBy
ZXN1bHQgPSBjb21wdXRlRm9yKGxvY2tlciwgY2FsbExpbmtJbmZvKTsKKyAgICBDYWxsTGlua1N0
YXR1cyByZXN1bHQ7CisgICAgcmVzdWx0Lm1fZWRnZXMgPSBlZGdlUHJvZmlsZS0+Y2FsbEVkZ2Vz
KCk7CisgICAgcmVzdWx0Lm1fY291bGRUYWtlU2xvd1BhdGggPSAhIW51bUNhbGxzVG9Vbmtub3du
OworICAgIHJlc3VsdC5tX2NhblRydXN0Q291bnRzID0gdHJ1ZTsKKyAgICAKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigK
KyAgICBjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayogcHJvZmls
ZWRCbG9jaywgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sCisgICAgRXhpdFNpdGVEYXRhIGV4
aXRTaXRlRGF0YSkKK3sKKyAgICBDYWxsTGlua1N0YXR1cyByZXN1bHQgPSBjb21wdXRlRm9yKGxv
Y2tlciwgcHJvZmlsZWRCbG9jaywgY2FsbExpbmtJbmZvKTsKICAgICBpZiAoZXhpdFNpdGVEYXRh
Lm1fYmFkRnVuY3Rpb24pCiAgICAgICAgIHJlc3VsdC5tYWtlQ2xvc3VyZUNhbGwoKTsKKyAgICBp
ZiAoZXhpdFNpdGVEYXRhLm1fdGFrZXNTbG93UGF0aCkKKyAgICAgICAgcmVzdWx0Lm1fY291bGRU
YWtlU2xvd1BhdGggPSB0cnVlOwogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0yMjcs
NyArMjUwLDcgQEAgdm9pZCBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZURGR1N0YXR1c2VzKAogICAg
ICAgICAKICAgICAgICAgewogICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIo
ZGZnQ29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgbWFwLmFkZChpbmZvLmNvZGVPcmln
aW4sIGNvbXB1dGVGb3IobG9ja2VyLCBpbmZvLCBleGl0U2l0ZURhdGEpKTsKKyAgICAgICAgICAg
IG1hcC5hZGQoaW5mby5jb2RlT3JpZ2luLCBjb21wdXRlRm9yKGxvY2tlciwgZGZnQ29kZUJsb2Nr
LCBpbmZvLCBleGl0U2l0ZURhdGEpKTsKICAgICAgICAgfQogICAgIH0KICNlbHNlCkBAIC0yNTYs
NiArMjc5LDMxIEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICAg
ICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5k
ZXgsIGJhc2VsaW5lTWFwKTsKIH0KIAorYm9vbCBDYWxsTGlua1N0YXR1czo6aXNDbG9zdXJlQ2Fs
bCgpIGNvbnN0Cit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9lZGdlcy5zaXplKCk7IGktLTsp
IHsKKyAgICAgICAgaWYgKG1fZWRnZXNbaV0uY2FsbGVlKCkuaXNDbG9zdXJlQ2FsbCgpKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9p
ZCBDYWxsTGlua1N0YXR1czo6bWFrZUNsb3N1cmVDYWxsKCkKK3sKKyAgICBBU1NFUlQoIW1faXNQ
cm92ZWQpOworICAgIGZvciAodW5zaWduZWQgaSA9IG1fZWRnZXMuc2l6ZSgpOyBpLS07KQorICAg
ICAgICBtX2VkZ2VzW2ldID0gbV9lZGdlc1tpXS5kZXNwZWNpZmllZENsb3N1cmUoKTsKKyAgICAK
KyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICAvLyBEb2luZyB0aGlzIHNob3Vs
ZCBub3QgaGF2ZSBjcmVhdGVkIGR1cGxpY2F0ZXMsIGJlY2F1c2UgdGhlIENhbGxFZGdlUHJvZmls
ZQorICAgICAgICAvLyBzaG91bGQgZGVzcGVjaWZ5IGNsb3N1cmVzIGlmIGRvaW5nIHNvIHdvdWxk
IHJlZHVjZSB0aGUgbnVtYmVyIG9mIGtub3duIGNhbGxlZXMuCisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX2VkZ2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGogPSBpICsgMTsgaiA8IG1fZWRnZXMuc2l6ZSgpOyArK2opCisgICAgICAgICAgICAg
ICAgQVNTRVJUKG1fZWRnZXNbaV0uY2FsbGVlKCkgIT0gbV9lZGdlc1tqXS5jYWxsZWUoKSk7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgQ2FsbExpbmtTdGF0dXM6OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKIHsKICAgICBpZiAoIWlzU2V0KCkpIHsKQEAgLTI3MSwxNCArMzE5LDcg
QEAgdm9pZCBDYWxsTGlua1N0YXR1czo6ZHVtcChQcmludFN0cmVhbSYgbwogICAgIGlmIChtX2Nv
dWxkVGFrZVNsb3dQYXRoKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsICJDb3VsZCBUYWtlIFNs
b3cgUGF0aCIpOwogICAgIAotICAgIGlmIChtX2NhbGxUYXJnZXQpCi0gICAgICAgIG91dC5wcmlu
dChjb21tYSwgIktub3duIHRhcmdldDogIiwgbV9jYWxsVGFyZ2V0KTsKLSAgICAKLSAgICBpZiAo
bV9leGVjdXRhYmxlKSB7Ci0gICAgICAgIG91dC5wcmludChjb21tYSwgIkV4ZWN1dGFibGUvQ2Fs
bEhhc2g6ICIsIFJhd1BvaW50ZXIobV9leGVjdXRhYmxlKSk7Ci0gICAgICAgIGlmICghaXNDb21w
aWxhdGlvblRocmVhZCgpKQotICAgICAgICAgICAgb3V0LnByaW50KCIvIiwgbV9leGVjdXRhYmxl
LT5oYXNoRm9yKENvZGVGb3JDYWxsKSk7Ci0gICAgfQorICAgIG91dC5wcmludChsaXN0RHVtcCht
X2VkZ2VzKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHJldmlzaW9uIDE3Mjg1OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Niw5ICs0Niw5IEBAIHN0cnVjdCBDYWxsTGlua0luZm87CiBjbGFzcyBD
YWxsTGlua1N0YXR1cyB7CiBwdWJsaWM6CiAgICAgQ2FsbExpbmtTdGF0dXMoKQotICAgICAgICA6
IG1fZXhlY3V0YWJsZSgwKQotICAgICAgICAsIG1fY291bGRUYWtlU2xvd1BhdGgoZmFsc2UpCisg
ICAgICAgIDogbV9jb3VsZFRha2VTbG93UGF0aChmYWxzZSkKICAgICAgICAgLCBtX2lzUHJvdmVk
KGZhbHNlKQorICAgICAgICAsIG1fY2FuVHJ1c3RDb3VudHMoZmFsc2UpCiAgICAgewogICAgIH0K
ICAgICAKQEAgLTYxLDEwICs2MSwxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgZXhwbGljaXQgQ2Fs
bExpbmtTdGF0dXMoSlNWYWx1ZSk7CiAgICAgCi0gICAgQ2FsbExpbmtTdGF0dXMoRXhlY3V0YWJs
ZUJhc2UqIGV4ZWN1dGFibGUpCi0gICAgICAgIDogbV9leGVjdXRhYmxlKGV4ZWN1dGFibGUpCisg
ICAgQ2FsbExpbmtTdGF0dXMoQ2FsbFZhcmlhbnQgdmFyaWFudCkKKyAgICAgICAgOiBtX2VkZ2Vz
KDEsIENhbGxFZGdlKHZhcmlhbnQsIDEpKQogICAgICAgICAsIG1fY291bGRUYWtlU2xvd1BhdGgo
ZmFsc2UpCiAgICAgICAgICwgbV9pc1Byb3ZlZChmYWxzZSkKKyAgICAgICAgLCBtX2NhblRydXN0
Q291bnRzKGZhbHNlKQogICAgIHsKICAgICB9CiAgICAgCkBAIC05Miw4ICs5Myw5IEBAIHB1Ymxp
YzoKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIENvbXB1dGVzIHRoZSBzdGF0dXMgYXNzdW1pbmcg
dGhhdCB3ZSBuZXZlciB0b29rIHNsb3cgcGF0aCBhbmQgbmV2ZXIgcHJldmlvdXNseQogICAgIC8v
IGV4aXRlZC4KLSAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcihjb25zdCBDb25j
dXJyZW50SklUTG9ja2VyJiwgQ2FsbExpbmtJbmZvJik7Ci0gICAgc3RhdGljIENhbGxMaW5rU3Rh
dHVzIGNvbXB1dGVGb3IoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENhbGxMaW5rSW5mbyYs
IEV4aXRTaXRlRGF0YSk7CisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoY29u
c3QgQ29uY3VycmVudEpJVExvY2tlciYsIENvZGVCbG9jayosIENhbGxMaW5rSW5mbyYpOworICAg
IHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKAorICAgICAgICBjb25zdCBDb25jdXJy
ZW50SklUTG9ja2VyJiwgQ29kZUJsb2NrKiwgQ2FsbExpbmtJbmZvJiwgRXhpdFNpdGVEYXRhKTsK
ICNlbmRpZgogICAgIAogICAgIHR5cGVkZWYgSGFzaE1hcDxDb2RlT3JpZ2luLCBDYWxsTGlua1N0
YXR1cywgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gQ29udGV4dE1hcDsKQEAgLTEwNywzNyAr
MTA5LDM4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcigK
ICAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiwg
Y29uc3QgQ29udGV4dE1hcCYpOwogICAgIAotICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVy
biBtX2NhbGxUYXJnZXQgfHwgbV9leGVjdXRhYmxlIHx8IG1fY291bGRUYWtlU2xvd1BhdGg7IH0K
KyAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gIW1fZWRnZXMuaXNFbXB0eSgpIHx8IG1f
Y291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsg
cmV0dXJuICFpc1NldCgpOyB9CiAgICAgCiAgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fY291bGRUYWtlU2xvd1BhdGg7IH0KLSAgICBib29sIGlzQ2xvc3VyZUNh
bGwoKSBjb25zdCB7IHJldHVybiBtX2V4ZWN1dGFibGUgJiYgIW1fY2FsbFRhcmdldDsgfQogICAg
IAotICAgIEpTVmFsdWUgY2FsbFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdldDsg
fQotICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uKCkgY29uc3Q7Ci0gICAgSW50ZXJuYWxGdW5jdGlv
biogaW50ZXJuYWxGdW5jdGlvbigpIGNvbnN0OwotICAgIEludHJpbnNpYyBpbnRyaW5zaWNGb3Io
Q29kZVNwZWNpYWxpemF0aW9uS2luZCkgY29uc3Q7Ci0gICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1
dGFibGUoKSBjb25zdCB7IHJldHVybiBtX2V4ZWN1dGFibGU7IH0KKyAgICBDYWxsRWRnZUxpc3Qg
ZWRnZXMoKSBjb25zdCB7IHJldHVybiBtX2VkZ2VzOyB9CisgICAgdW5zaWduZWQgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZWRnZXMuc2l6ZSgpOyB9CisgICAgQ2FsbEVkZ2UgYXQodW5zaWduZWQg
aSkgY29uc3QgeyByZXR1cm4gbV9lZGdlc1tpXTsgfQorICAgIENhbGxFZGdlIG9wZXJhdG9yW10o
dW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0KICAgICBib29sIGlzUHJvdmVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1Byb3ZlZDsgfQotICAgIGJvb2wgY2FuT3B0aW1pemUoKSBjb25z
dCB7IHJldHVybiAobV9jYWxsVGFyZ2V0IHx8IG1fZXhlY3V0YWJsZSkgJiYgIW1fY291bGRUYWtl
U2xvd1BhdGg7IH0KKyAgICBib29sIGNhbk9wdGltaXplKCkgY29uc3QgeyByZXR1cm4gIW1fZWRn
ZXMuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBjYW5UcnVzdENvdW50cygpIGNvbnN0IHsgcmV0dXJu
IG1fY2FuVHJ1c3RDb3VudHM7IH0KKyAgICAKKyAgICBib29sIGlzQ2xvc3VyZUNhbGwoKSBjb25z
dDsgLy8gUmV0dXJucyB0cnVlIGlmIGFueSBjYWxsZWUgaXMgYSBjbG9zdXJlIGNhbGwuCiAgICAg
CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgotICAg
IHZvaWQgbWFrZUNsb3N1cmVDYWxsKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9pc1Byb3Zl
ZCk7Ci0gICAgICAgIC8vIFR1cm4gdGhpcyBpbnRvIGEgY2xvc3VyZSBjYWxsLgotICAgICAgICBt
X2NhbGxUYXJnZXQgPSBKU1ZhbHVlKCk7Ci0gICAgfQorICAgIHZvaWQgbWFrZUNsb3N1cmVDYWxs
KCk7CiAgICAgCiAgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGcm9tTExJbnQoY29u
c3QgQ29uY3VycmVudEpJVExvY2tlciYsIENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgpOworI2lmIEVOQUJMRShKSVQpCisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVG
cm9tQ2FsbEVkZ2VQcm9maWxlKENhbGxFZGdlUHJvZmlsZSopOworICAgIHN0YXRpYyBDYWxsTGlu
a1N0YXR1cyBjb21wdXRlRnJvbUNhbGxMaW5rSW5mbygKKyAgICAgICAgY29uc3QgQ29uY3VycmVu
dEpJVExvY2tlciYsIENhbGxMaW5rSW5mbyYpOworI2VuZGlmCiAgICAgCi0gICAgSlNWYWx1ZSBt
X2NhbGxUYXJnZXQ7Ci0gICAgRXhlY3V0YWJsZUJhc2UqIG1fZXhlY3V0YWJsZTsKKyAgICBDYWxs
RWRnZUxpc3QgbV9lZGdlczsKICAgICBib29sIG1fY291bGRUYWtlU2xvd1BhdGg7CiAgICAgYm9v
bCBtX2lzUHJvdmVkOworICAgIGJvb2wgbV9jYW5UcnVzdENvdW50czsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJp
YW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bFZhcmlhbnQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxWYXJpYW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJDYWxsVmFyaWFudC5oIgorCisjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgorCituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBDYWxsVmFyaWFudDo6ZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAoreworICAgIGlmICghKnRoaXMpIHsKKyAgICAgICAgb3V0LnByaW50KCJu
dWxsIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKEludGVybmFsRnVu
Y3Rpb24qIGludGVybmFsRnVuY3Rpb24gPSB0aGlzLT5pbnRlcm5hbEZ1bmN0aW9uKCkpIHsKKyAg
ICAgICAgb3V0LnByaW50KCJJbnRlcm5hbEZ1bmN0aW9uOiAiLCBKU1ZhbHVlKGludGVybmFsRnVu
Y3Rpb24pKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoSlNGdW5jdGlv
biogZnVuY3Rpb24gPSB0aGlzLT5mdW5jdGlvbigpKSB7CisgICAgICAgIG91dC5wcmludCgiKEZ1
bmN0aW9uOiAiLCBKU1ZhbHVlKGZ1bmN0aW9uKSwgIjsgRXhlY3V0YWJsZTogIiwgKmV4ZWN1dGFi
bGUoKSwgIikiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBvdXQucHJpbnQo
IkV4ZWN1dGFibGU6ICIsICpleGVjdXRhYmxlKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlh
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENhbGxWYXJpYW50X2gKKyNkZWZp
bmUgQ2FsbFZhcmlhbnRfaAorCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkpT
Q2VsbC5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIENhbGxWYXJpYW50IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBDYWxsVmFyaWFudChKU0Nl
bGwqIGNhbGxlZSA9IG51bGxwdHIpCisgICAgICAgIDogbV9jYWxsZWUoY2FsbGVlKQorICAgIHsK
KyAgICB9CisgICAgCisgICAgQ2FsbFZhcmlhbnQoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVU
eXBlKQorICAgICAgICA6IG1fY2FsbGVlKGRlbGV0ZWRUb2tlbigpKQorICAgIHsKKyAgICB9Cisg
ICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7IH0KKyAg
ICAKKyAgICAvLyBJZiB0aGlzIHZhcmlhbnQgcmVmZXJzIHRvIGEgZnVuY3Rpb24sIGNoYW5nZSBp
dCB0byByZWZlciB0byBpdHMgZXhlY3V0YWJsZS4KKyAgICBBTFdBWVNfSU5MSU5FIENhbGxWYXJp
YW50IGRlc3BlY2lmaWVkQ2xvc3VyZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9jYWxs
ZWUtPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICAgICAgICAgIHJldHVybiBDYWxsVmFy
aWFudChqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2FsbGVlKS0+ZXhlY3V0YWJsZSgpKTsKKyAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAgICAKKyAgICBKU0NlbGwqIHJhd0NhbGxlZUNlbGwo
KSBjb25zdCB7IHJldHVybiBtX2NhbGxlZTsgfQorICAgIAorICAgIEludGVybmFsRnVuY3Rpb24q
IGludGVybmFsRnVuY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGpzRHluYW1p
Y0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KG1fY2FsbGVlKTsKKyAgICB9CisgICAgCisgICAgSlNG
dW5jdGlvbiogZnVuY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGpzRHluYW1p
Y0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2FsbGVlKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0Ns
b3N1cmVDYWxsKCkgY29uc3QgeyByZXR1cm4gISFqc0R5bmFtaWNDYXN0PEV4ZWN1dGFibGVCYXNl
Kj4obV9jYWxsZWUpOyB9CisgICAgCisgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUoKSBj
b25zdAorICAgIHsKKyAgICAgICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gdGhpcy0+ZnVu
Y3Rpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbi0+ZXhlY3V0YWJsZSgpOworICAg
ICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxFeGVjdXRhYmxlQmFzZSo+KG1fY2FsbGVlKTsKKyAg
ICB9CisgICAgCisgICAgSlNDZWxsKiBub25FeGVjdXRhYmxlQ2FsbGVlKCkgY29uc3QKKyAgICB7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpc0Nsb3N1cmVDYWxsKCkpOworICAgICAgICByZXR1
cm4gbV9jYWxsZWU7CisgICAgfQorICAgIAorICAgIEludHJpbnNpYyBpbnRyaW5zaWNGb3IoQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKEV4ZWN1
dGFibGVCYXNlKiBleGVjdXRhYmxlID0gdGhpcy0+ZXhlY3V0YWJsZSgpKQorICAgICAgICAgICAg
cmV0dXJuIGV4ZWN1dGFibGUtPmludHJpbnNpY0ZvcihraW5kKTsKKyAgICAgICAgcmV0dXJuIE5v
SW50cmluc2ljOworICAgIH0KKyAgICAKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9u
RXhlY3V0YWJsZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoRXhlY3V0YWJsZUJhc2UqIGV4
ZWN1dGFibGUgPSB0aGlzLT5leGVjdXRhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4ganNEeW5h
bWljQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorICAgIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBj
b25zdDsKKyAgICAKKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2NhbGxlZSA9PSBkZWxldGVkVG9rZW4oKTsKKyAgICB9Cisg
ICAgCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2NhbGxlZSA9PSBvdGhlci5tX2NhbGxlZTsKKyAgICB9
CisgICAgCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAgICB9CisgICAg
CisgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fY2FsbGVlIDwgb3RoZXIubV9jYWxsZWU7CisgICAgfQorICAg
IAorICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBvdGhlciA8ICp0aGlzOworICAgIH0KKyAgICAKKyAgICBib29s
IG9wZXJhdG9yPD0oY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuICEoKnRoaXMgPCBvdGhlcik7CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0
b3I+PShjb25zdCBDYWxsVmFyaWFudCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gb3RoZXIgPD0gKnRoaXM7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIGhhc2goKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6UHRySGFzaDxKU0NlbGwqPjo6aGFzaChtX2Nh
bGxlZSk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBzdGF0aWMgSlNDZWxsKiBkZWxldGVk
VG9rZW4oKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4oc3RhdGljX2Nhc3Q8dWludHB0
cl90PigxKSk7IH0KKyAgICAgICAgICAgICAgICAgICAKKyAgICBKU0NlbGwqIG1fY2FsbGVlOwor
fTsKKworc3RydWN0IENhbGxWYXJpYW50SGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2go
Y29uc3QgQ2FsbFZhcmlhbnQmIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQorICAgIHN0YXRp
YyBib29sIGVxdWFsKGNvbnN0IENhbGxWYXJpYW50JiBhLCBjb25zdCBDYWxsVmFyaWFudCYgYikg
eyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRv
RW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKKwordHlwZWRlZiBWZWN0b3I8Q2FsbFZhcmlhbnQs
IDE+IENhbGxWYXJpYW50TGlzdDsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBX
VEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7Cit0ZW1wbGF0
ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6OkNhbGxWYXJpYW50PiB7CisgICAgdHlwZWRlZiBK
U0M6OkNhbGxWYXJpYW50SGFzaCBIYXNoOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IEhhc2hUcmFpdHM7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6Q2FsbFZh
cmlhbnQ+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6Q2FsbFZhcmlhbnQ+IHsgfTsKKwor
fSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBDYWxsVmFyaWFudF9oCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAkocmV2aXNpb24gMTcy
ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAkod29y
a2luZyBjb3B5KQpAQCAtMTU0LDYgKzE1NCwxNyBAQCBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lIHsK
ICAgICAgICAgcmV0dXJuIENvZGVGb3JDYWxsOwogICAgIH0KICAgICAKKyAgICBzdGF0aWMgYm9v
bCBpc05vcm1hbENhbGwoS2luZCBraW5kKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChraW5kKSB7
CisgICAgICAgIGNhc2UgQ2FsbDoKKyAgICAgICAgY2FzZSBDb25zdHJ1Y3Q6CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKICAgICBWZWN0b3I8VmFsdWVSZWNvdmVyeT4gYXJn
dW1lbnRzOyAvLyBJbmNsdWRlcyAndGhpcycuCiAgICAgV3JpdGVCYXJyaWVyPFNjcmlwdEV4ZWN1
dGFibGU+IGV4ZWN1dGFibGU7CiAgICAgVmFsdWVSZWNvdmVyeSBjYWxsZWVSZWNvdmVyeTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmNwcAkocmV2aXNp
b24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzgsOCArMzgsOCBAQCBjb25zdCBjaGFyKiBleGl0S2luZFRv
U3RyaW5nKEV4aXRLaW5kIGtpCiAgICAgICAgIHJldHVybiAiVW5zZXQiOwogICAgIGNhc2UgQmFk
VHlwZToKICAgICAgICAgcmV0dXJuICJCYWRUeXBlIjsKLSAgICBjYXNlIEJhZEZ1bmN0aW9uOgot
ICAgICAgICByZXR1cm4gIkJhZEZ1bmN0aW9uIjsKKyAgICBjYXNlIEJhZENlbGw6CisgICAgICAg
IHJldHVybiAiQmFkQ2VsbCI7CiAgICAgY2FzZSBCYWRFeGVjdXRhYmxlOgogICAgICAgICByZXR1
cm4gIkJhZEV4ZWN1dGFibGUiOwogICAgIGNhc2UgQmFkQ2FjaGU6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAkocmV2aXNpb24gMTcyODU5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBlbnVtIEV4aXRLaW5kIDogdWludDhfdCB7
CiAgICAgRXhpdEtpbmRVbnNldCwKICAgICBCYWRUeXBlLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSBh
IHR5cGUgcHJlZGljdGlvbiB3YXMgd3JvbmcuCi0gICAgQmFkRnVuY3Rpb24sIC8vIFdlIGV4aXRl
ZCBiZWNhdXNlIHdlIG1hZGUgYW4gaW5jb3JyZWN0IGFzc3VtcHRpb24gYWJvdXQgd2hhdCBmdW5j
dGlvbiB3ZSB3b3VsZCBzZWUuCisgICAgQmFkQ2VsbCwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2Ug
bWFkZSBhbiBpbmNvcnJlY3QgYXNzdW1wdGlvbiBhYm91dCB3aGF0IGNlbGwgd2Ugd291bGQgc2Vl
LiBVc3VhbGx5IHVzZWQgZm9yIGZ1bmN0aW9uIGNoZWNrcy4KICAgICBCYWRFeGVjdXRhYmxlLCAv
LyBXZSBleGl0ZWQgYmVjYXVzZSB3ZSBtYWRlIGFuIGluY29ycmVjdCBhc3N1bXB0aW9uIGFib3V0
IHdoYXQgZXhlY3V0YWJsZSB3ZSB3b3VsZCBzZWUuCiAgICAgQmFkQ2FjaGUsIC8vIFdlIGV4aXRl
ZCBiZWNhdXNlIGFuIGlubGluZSBjYWNoZSB3YXMgd3JvbmcuCiAgICAgQmFkQ29uc3RhbnRDYWNo
ZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2UgYSBjYWNoZSBvbiBhIHdlYWsgY29uc3RhbnQgKHVzdWFs
bHkgYSBwcm90b3R5cGUpIHdhcyB3cm9uZy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTg3LDcgKzE4Nyw4IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29t
cHV0ZUZvclMKICAgICAgICAgICAgICAgICAgICAgQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUq
IHN0dWIgPSBzdGF0aWNfY2FzdDxBY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZSo+KAogICAgICAg
ICAgICAgICAgICAgICAgICAgbGlzdC0+YXQobGlzdEluZGV4KS5zdHViUm91dGluZSgpKTsKICAg
ICAgICAgICAgICAgICAgICAgY2FsbExpbmtTdGF0dXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxM
aW5rU3RhdHVzPigKLSAgICAgICAgICAgICAgICAgICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21w
dXRlRm9yKGxvY2tlciwgKnN0dWItPm1fY2FsbExpbmtJbmZvLCBjYWxsRXhpdFNpdGVEYXRhKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssICpzdHViLT5t
X2NhbGxMaW5rSW5mbywgY2FsbEV4aXRTaXRlRGF0YSkpOwogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRCeUlkQWNj
ZXNzOjpDdXN0b21HZXR0ZXI6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI0Nyw3ICsyNDcsNyBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JT
CiAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsTGlua1N0YXR1cz4gY2Fs
bExpbmtTdGF0dXMgPQogICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxD
YWxsTGlua1N0YXR1cz4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVGb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tlciwg
KnN0dWItPm1fY2FsbExpbmtJbmZvLCBjYWxsRXhpdFNpdGVEYXRhKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxvY2tlciwgcHJvZmlsZWRCbG9jaywgKnN0dWItPm1fY2FsbExp
bmtJbmZvLCBjYWxsRXhpdFNpdGVEYXRhKSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICB2YXJpYW50ID0gUHV0QnlJZFZhcmlhbnQ6OnNldHRlcigKICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdHVyZSwgY29tcGxleEdldFN0YXR1cy5vZmZzZXQoKSwgY29t
cGxleEdldFN0YXR1cy5jaGFpbigpLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24g
MTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDU5LDE0ICsxNDU5LDYgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldFR5cGUoU3BlY0ludDMyKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgIGNhc2Ug
Q2hlY2tFeGVjdXRhYmxlOiB7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBjb3VsZCB0cmFjayBleGVj
dXRhYmxlcyBpbiBBYnN0cmFjdFZhbHVlLCB3aGljaCB3b3VsZCBhbGxvdyB1cyB0byBnZXQgcmlk
IG9mIHRoZXNlIGNoZWNrcwotICAgICAgICAvLyBtb3JlIHRob3JvdWdobHkuIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYyMDAKLSAgICAgICAgLy8gRklYTUU6IFdl
IGNvdWxkIGVsaW1pbmF0ZSB0aGVzZSBlbnRpcmVseSBpZiB3ZSBrbm93IHRoZSBleGFjdCB2YWx1
ZSB0aGF0IGZsb3dzIGludG8gdGhpcy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwNjIwMQotICAgICAgICBicmVhazsKLSAgICB9Ci0KICAgICBj
YXNlIENoZWNrU3RydWN0dXJlOiB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJs
ZSB0byBwcm9wYWdhdGUgdGhlIHN0cnVjdHVyZSBzZXRzIG9mIGNvbnN0YW50cyAoaS5lLiBwcm90
b3R5cGVzKS4KICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNo
aWxkMSgpKTsKQEAgLTE3MjYsMTYgKzE3MTgsMjkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgICAgICAKKyAgICBjYXNlIEdldEV4ZWN1dGFibGU6
IHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVl
KCk7CisgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rp
b24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2YWx1ZSk7CisgICAgICAgICAgICBpZiAo
ZnVuY3Rpb24pIHsKKyAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCAqbV9ncmFwaC5m
cmVlemUoZnVuY3Rpb24tPmV4ZWN1dGFibGUoKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShT
cGVjQ2VsbE90aGVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIAotICAgIGNhc2UgQ2hl
Y2tGdW5jdGlvbjogeworICAgIGNhc2UgQ2hlY2tDZWxsOiB7CiAgICAgICAgIEpTVmFsdWUgdmFs
dWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwotICAgICAgICBpZiAodmFsdWUg
PT0gbm9kZS0+ZnVuY3Rpb24oKS0+dmFsdWUoKSkgeworICAgICAgICBpZiAodmFsdWUgPT0gbm9k
ZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKSkgewogICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3Vu
ZENvbnN0YW50cyh0cnVlKTsKICAgICAgICAgICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgZmlsdGVyQnlWYWx1ZShub2Rl
LT5jaGlsZDEoKSwgKm5vZGUtPmZ1bmN0aW9uKCkpOworICAgICAgICBmaWx0ZXJCeVZhbHVlKG5v
ZGUtPmNoaWxkMSgpLCAqbm9kZS0+Y2VsbE9wZXJhbmQoKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICAgICAgCkBAIC0xODU5LDggKzE4NjQsNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIAogICAgIGNhc2UgVmFyaWFibGVXYXRjaHBvaW50
OgogICAgIGNhc2UgVmFySW5qZWN0aW9uV2F0Y2hwb2ludDoKLSAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAKICAgICBjYXNlIFB1dEdsb2JhbFZhcjoKICAgICBjYXNlIE5vdGlmeVdyaXRlOgog
ICAgICAgICBicmVhazsKQEAgLTE5MDAsNyArMTkwMywxNiBAQCBib29sIEFic3RyYWN0SW50ZXJw
cmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3Ao
KTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFByb2ZpbGVkQ2FsbDoKKyAgICBjYXNlIFBy
b2ZpbGVkQ29uc3RydWN0OgorICAgICAgICBpZiAoZm9yTm9kZShtX2dyYXBoLnZhckFyZ0NoaWxk
KG5vZGUsIDApKS5tX3ZhbHVlKQorICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50
cyh0cnVlKTsKKyAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xv
YmJlckxpbWl0KTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOworICAgICAg
ICBicmVhazsKKwogICAgIGNhc2UgRm9yY2VPU1JFeGl0OgorICAgIGNhc2UgQ2hlY2tCYWRDZWxs
OgogICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwogICAgICAgICBicmVhazsKICAg
ICAgICAgCkBAIC0xOTU1LDcgKzE5NjcsOCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5CiAgICAgY2FzZSBMYXN0Tm9kZVR5cGU6CiAgICAgY2FzZSBBcml0aElNdWw6
CiAgICAgY2FzZSBGaWF0SW50NTI6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgY2FzZSBCb3R0b21WYWx1ZToKKyAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG5v
ZGUsICJVbmV4cGVjdGVkIG5vZGUgdHlwZSIpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9u
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFj
a3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM4OSw2ICszODksMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAv
LyB0aGVuIC0wIGFuZCAwIGFyZSB0cmVhdGVkIHRoZSBzYW1lLgogICAgICAgICAgICAgICAgIG5v
ZGUtPmNoaWxkMSgpLT5tZXJnZUZsYWdzKE5vZGVCeXRlY29kZVVzZXNBc051bWJlciB8IE5vZGVC
eXRlY29kZVVzZXNBc090aGVyKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgU3dpdGNoQ2VsbDoKKyAgICAgICAgICAgICAgICAvLyBUaGVyZSBpcyBjdXJyZW50bHkg
bm8gcG9pbnQgdG8gYmVpbmcgY2xldmVyIGhlcmUgc2luY2UgdGhpcyBpcyB1c2VkIGZvciBzd2l0
Y2hpbmcKKyAgICAgICAgICAgICAgICAvLyBvbiBvYmplY3RzLgorICAgICAgICAgICAgICAgIG1l
cmdlRGVmYXVsdEZsYWdzKG5vZGUpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTgsNyArNTgsOSBAQCBCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrKAogewogfQogCi1CYXNpY0Js
b2NrOjp+QmFzaWNCbG9jaygpIHsgfQorQmFzaWNCbG9jazo6fkJhc2ljQmxvY2soKQoreworfQog
CiB2b2lkIEJhc2ljQmxvY2s6OmVuc3VyZUxvY2Fscyh1bnNpZ25lZCBuZXdOdW1Mb2NhbHMpCiB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkocmV2aXNp
b24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZD
b3VudGVkPEJhc2ljQmxvYwogICAgIE5vZGUqJiBvcGVyYXRvcltdKHNpemVfdCBpKSB7IHJldHVy
biBhdChpKTsgfQogICAgIE5vZGUqIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJu
IGF0KGkpOyB9CiAgICAgTm9kZSogbGFzdCgpIGNvbnN0IHsgcmV0dXJuIGF0KHNpemUoKSAtIDEp
OyB9CisgICAgTm9kZSogdGFrZUxhc3QoKSB7IHJldHVybiBtX25vZGVzLnRha2VMYXN0KCk7IH0K
ICAgICB2b2lkIHJlc2l6ZShzaXplX3Qgc2l6ZSkgeyBtX25vZGVzLnJlc2l6ZShzaXplKTsgfQog
ICAgIHZvaWQgZ3JvdyhzaXplX3Qgc2l6ZSkgeyBtX25vZGVzLmdyb3coc2l6ZSk7IH0KICAgICAK
QEAgLTEwNiw2ICsxMDcsMTMgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2lj
QmxvYwogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKICAgICAK
KyAgICB2b2lkIGRpZExpbmsoKQorICAgIHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAg
IGlzTGlua2VkID0gdHJ1ZTsKKyNlbmRpZgorICAgIH0KKyAgICAKICAgICAvLyBUaGlzIHZhbHVl
IGlzIHVzZWQgaW50ZXJuYWxseSBmb3IgYmxvY2sgbGlua2luZyBhbmQgT1NSIGVudHJ5LiBJdCBp
cyBtb3N0bHkgbWVhbmluZ2xlc3MKICAgICAvLyBmb3Igb3RoZXIgcHVycG9zZXMgZHVlIHRvIGlu
bGluaW5nLgogICAgIHVuc2lnbmVkIGJ5dGVjb2RlQmVnaW47CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTcyODU5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewogCitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CisKIGNsYXNzIENv
bnN0YW50QnVmZmVyS2V5IHsKIHB1YmxpYzoKICAgICBDb25zdGFudEJ1ZmZlcktleSgpCkBAIC0x
NzgsMTQgKzE4MCwyMCBAQCBwcml2YXRlOgogICAgICAgICBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQg
YXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCwgQ2FsbExpbmtTdGF0dXMpOwogICAgIHZvaWQg
aGFuZGxlQ2FsbChpbnQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplLCBpbnQgY2FsbGVlLCBpbnQgYXJnQ291bnQsIGlu
dCByZWdpc3Rlck9mZnNldCk7CiAgICAgdm9pZCBoYW5kbGVDYWxsKEluc3RydWN0aW9uKiBwYywg
Tm9kZVR5cGUgb3AsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwotICAgIHZvaWQgZW1pdEZ1bmN0
aW9uQ2hlY2tzKGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgTm9kZSogY2FsbFRhcmdldCwgaW50IHJl
Z2lzdGVyT2Zmc2V0LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICB2b2lkIGVtaXRGdW5j
dGlvbkNoZWNrcyhDYWxsVmFyaWFudCwgTm9kZSogY2FsbFRhcmdldCwgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICB2b2lkIHVuZG9GdW5jdGlvbkNoZWNr
cyhDYWxsVmFyaWFudCk7CiAgICAgdm9pZCBlbWl0QXJndW1lbnRQaGFudG9tcyhpbnQgcmVnaXN0
ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCk7CisgICAgdW5zaWduZWQgaW5saW5pbmdDb3N0KENhbGxWYXJpYW50LCBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOyAvLyBSZXR1
cm4gVUlOVF9NQVggaWYgaXQncyBub3QgYW4gaW5saW5pbmcgY2FuZGlkYXRlLiBCeSBjb252ZW50
aW9uLCBpbnRyaW5zaWNzIGhhdmUgYSBjb3N0IG9mIDEuCiAgICAgLy8gSGFuZGxlIGlubGluaW5n
LiBSZXR1cm4gdHJ1ZSBpZiBpdCBzdWNjZWVkZWQsIGZhbHNlIGlmIHdlIG5lZWQgdG8gcGxhbnQg
YSBjYWxsLgotICAgIGJvb2wgaGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIGlu
dCByZXN1bHRPcGVyYW5kLCBjb25zdCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9mZnNl
dCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBJ
bmxpbmVDYWxsRnJhbWU6OktpbmQpOworICAgIGJvb2wgaGFuZGxlSW5saW5pbmcoTm9kZSogY2Fs
bFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBDYWxsTGlua1N0YXR1cyYsIGlu
dCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25l
ZCBuZXh0T2Zmc2V0LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCwgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CisgICAgZW51bSBDYWxsZXJMaW5rYWJpbGl0eSB7IENh
bGxlckRvZXNOb3JtYWxMaW5raW5nLCBDYWxsZXJMaW5rc01hbnVhbGx5IH07CisgICAgYm9vbCBh
dHRlbXB0VG9JbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFu
ZCwgQ2FsbFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIENh
bGxlckxpbmthYmlsaXR5LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCB1bnNpZ25lZCYgaW5s
aW5pbmdCYWxhbmNlKTsKKyAgICB2b2lkIGlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUs
IGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNh
bGxGcmFtZTo6S2luZCwgQ2FsbGVyTGlua2FiaWxpdHkpOworICAgIHZvaWQgY2FuY2VsTGlua2lu
Z0ZvckJsb2NrKElubGluZVN0YWNrRW50cnkqLCBCYXNpY0Jsb2NrKik7IC8vIE9ubHkgd29ya3Mg
d2hlbiB0aGUgZ2l2ZW4gYmxvY2sgaXMgdGhlIGxhc3Qgb25lIHRvIGhhdmUgYmVlbiBhZGRlZCBm
b3IgdGhhdCBpbmxpbmUgc3RhY2sgZW50cnkuCiAgICAgLy8gSGFuZGxlIGludHJpbnNpYyBmdW5j
dGlvbnMuIFJldHVybiB0cnVlIGlmIGl0IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBw
bGFudCBhIGNhbGwuCiAgICAgYm9vbCBoYW5kbGVJbnRyaW5zaWMoaW50IHJlc3VsdE9wZXJhbmQs
IEludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pOwogICAgIGJvb2wgaGFuZGxlVHlwZWRB
cnJheUNvbnN0cnVjdG9yKGludCByZXN1bHRPcGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50
IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFR5cGVkQXJy
YXlUeXBlKTsKLSAgICBib29sIGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihpbnQgcmVz
dWx0T3BlcmFuZCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICBib29sIGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5j
dGlvbihpbnQgcmVzdWx0T3BlcmFuZCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9m
ZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kKTsKICAgICBOb2RlKiBoYW5kbGVQdXRCeU9mZnNldChOb2RlKiBiYXNlLCB1bnNpZ25lZCBp
ZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgTm9kZSogdmFsdWUpOwogICAgIE5vZGUqIGhhbmRs
ZUdldEJ5T2Zmc2V0KFNwZWN1bGF0ZWRUeXBlLCBOb2RlKiBiYXNlLCBjb25zdCBTdHJ1Y3R1cmVT
ZXQmLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBQcm9wZXJ0eU9mZnNldCwgTm9kZVR5cGUg
b3AgPSBHZXRCeU9mZnNldCk7CiAgICAgdm9pZCBoYW5kbGVHZXRCeUlkKApAQCAtMjAwLDggKzIw
OCw5IEBAIHByaXZhdGU6CiAKICAgICBOb2RlKiBnZXRTY29wZSh1bnNpZ25lZCBza2lwQ291bnQp
OwogICAgIAotICAgIC8vIFByZXBhcmUgdG8gcGFyc2UgYSBibG9jay4KICAgICB2b2lkIHByZXBh
cmVUb1BhcnNlQmxvY2soKTsKKyAgICB2b2lkIGNsZWFyQ2FjaGVzKCk7CisKICAgICAvLyBQYXJz
ZSBhIHNpbmdsZSBiYXNpYyBibG9jayBvZiBieXRlY29kZSBpbnN0cnVjdGlvbnMuCiAgICAgYm9v
bCBwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KTsKICAgICAvLyBMaW5rIGJsb2NrIHN1Y2Nlc3Nv
cnMuCkBAIC0yOTYsNiArMzA1LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICByZXR1
cm4gZGVsYXllZC5leGVjdXRlKHRoaXMsIHNldE1vZGUpOwogICAgIH0KKyAgICAKKyAgICB2b2lk
IHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCkKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX3NldExvY2FsUXVldWUuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBtX3NldExv
Y2FsUXVldWVbaV0uZXhlY3V0ZSh0aGlzKTsKKyAgICAgICAgbV9zZXRMb2NhbFF1ZXVlLnJlc2l6
ZSgwKTsKKyAgICB9CiAKICAgICBOb2RlKiBzZXQoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQsIE5v
ZGUqIHZhbHVlLCBTZXRNb2RlIHNldE1vZGUgPSBOb3JtYWxTZXQpCiAgICAgewpAQCAtNjM3LDYg
KzY1MywxMyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CisgICAgCisgICAgdm9pZCByZW1vdmVMYXN0Tm9kZUZyb21HcmFwaChOb2RlVHlwZSBleHBl
Y3RlZE5vZGVUeXBlKQorICAgIHsKKyAgICAgICAgTm9kZSogbm9kZSA9IG1fY3VycmVudEJsb2Nr
LT50YWtlTGFzdCgpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5vcCgpID09IGV4cGVj
dGVkTm9kZVR5cGUpOworICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7Cisg
ICAgfQogCiAgICAgdm9pZCBhZGRWYXJBcmdDaGlsZChOb2RlKiBjaGlsZCkKICAgICB7CkBAIC02
NDUsNyArNjY4LDcgQEAgcHJpdmF0ZToKICAgICB9CiAgICAgCiAgICAgTm9kZSogYWRkQ2FsbFdp
dGhvdXRTZXR0aW5nUmVzdWx0KAotICAgICAgICBOb2RlVHlwZSBvcCwgTm9kZSogY2FsbGVlLCBp
bnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCwKKyAgICAgICAgTm9kZVR5cGUgb3AsIE9w
SW5mbyBvcEluZm8sIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZz
ZXQsCiAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiAgICAgewogICAgICAgICBh
ZGRWYXJBcmdDaGlsZChjYWxsZWUpOwpAQCAtNjUzLDE5ICs2NzYsMTkgQEAgcHJpdmF0ZToKICAg
ICAgICAgaWYgKHBhcmFtZXRlclNsb3RzID4gbV9wYXJhbWV0ZXJTbG90cykKICAgICAgICAgICAg
IG1fcGFyYW1ldGVyU2xvdHMgPSBwYXJhbWV0ZXJTbG90czsKIAotICAgICAgICBpbnQgZHVtbXlU
aGlzQXJndW1lbnQgPSBvcCA9PSBDYWxsIHx8IG9wID09IE5hdGl2ZUNhbGwgPyAwIDogMTsKKyAg
ICAgICAgaW50IGR1bW15VGhpc0FyZ3VtZW50ID0gb3AgPT0gQ2FsbCB8fCBvcCA9PSBOYXRpdmVD
YWxsIHx8IG9wID09IFByb2ZpbGVkQ2FsbCA/IDAgOiAxOwogICAgICAgICBmb3IgKGludCBpID0g
MCArIGR1bW15VGhpc0FyZ3VtZW50OyBpIDwgYXJnQ291bnQ7ICsraSkKICAgICAgICAgICAgIGFk
ZFZhckFyZ0NoaWxkKGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpLCByZWdpc3Rlck9m
ZnNldCkpKTsKIAotICAgICAgICByZXR1cm4gYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIG9wLCBP
cEluZm8oMCksIE9wSW5mbyhwcmVkaWN0aW9uKSk7CisgICAgICAgIHJldHVybiBhZGRUb0dyYXBo
KE5vZGU6OlZhckFyZywgb3AsIG9wSW5mbywgT3BJbmZvKHByZWRpY3Rpb24pKTsKICAgICB9CiAg
ICAgCiAgICAgTm9kZSogYWRkQ2FsbCgKLSAgICAgICAgaW50IHJlc3VsdCwgTm9kZVR5cGUgb3As
IE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgICAg
IGludCByZXN1bHQsIE5vZGVUeXBlIG9wLCBPcEluZm8gb3BJbmZvLCBOb2RlKiBjYWxsZWUsIGlu
dCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBw
cmVkaWN0aW9uKQogICAgIHsKICAgICAgICAgTm9kZSogY2FsbCA9IGFkZENhbGxXaXRob3V0U2V0
dGluZ1Jlc3VsdCgKLSAgICAgICAgICAgIG9wLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9m
ZnNldCwgcHJlZGljdGlvbik7CisgICAgICAgICAgICBvcCwgb3BJbmZvLCBjYWxsZWUsIGFyZ0Nv
dW50LCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CiAgICAgICAgIFZpcnR1YWxSZWdpc3Rl
ciByZXN1bHRSZWcocmVzdWx0KTsKICAgICAgICAgaWYgKHJlc3VsdFJlZy5pc1ZhbGlkKCkpCiAg
ICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdCksIGNhbGwpOwpAQCAtODcxLDgg
Kzg5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIFZlY3RvcjxVbmxpbmtlZEJsb2NrPiBtX3VubGlu
a2VkQmxvY2tzOwogICAgICAgICAKICAgICAgICAgLy8gUG90ZW50aWFsIGJsb2NrIGxpbmtpbmcg
dGFyZ2V0cy4gTXVzdCBiZSBzb3J0ZWQgYnkgYnl0ZWNvZGVCZWdpbiwgYW5kCi0gICAgICAgIC8v
IGNhbm5vdCBoYXZlIHR3byBibG9ja3MgdGhhdCBoYXZlIHRoZSBzYW1lIGJ5dGVjb2RlQmVnaW4u
IEZvciB0aGlzIHZlcnkKLSAgICAgICAgLy8gcmVhc29uLCB0aGlzIGlzIG5vdCBlcXVpdmFsZW50
IHRvIAorICAgICAgICAvLyBjYW5ub3QgaGF2ZSB0d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2Ft
ZSBieXRlY29kZUJlZ2luLgogICAgICAgICBWZWN0b3I8QmFzaWNCbG9jayo+IG1fYmxvY2tMaW5r
aW5nVGFyZ2V0czsKICAgICAgICAgCiAgICAgICAgIC8vIElmIHRoZSBjYWxsc2l0ZSdzIGJhc2lj
IGJsb2NrIHdhcyBzcGxpdCBpbnRvIHR3bywgdGhlbiB0aGlzIHdpbGwgYmUKQEAgLTEwMjQsNzIg
KzEwNDYsNTYgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCgKICAgICBpZiAoY2Fs
bFRhcmdldC0+aGFzQ29uc3RhbnQoKSkKICAgICAgICAgY2FsbExpbmtTdGF0dXMgPSBDYWxsTGlu
a1N0YXR1cyhjYWxsVGFyZ2V0LT5hc0pTVmFsdWUoKSkuc2V0SXNQcm92ZWQodHJ1ZSk7CiAgICAg
CisgICAgaWYgKCghY2FsbExpbmtTdGF0dXMuY2FuT3B0aW1pemUoKSB8fCBjYWxsTGlua1N0YXR1
cy5zaXplKCkgIT0gMSkKKyAgICAgICAgJiYgIWlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpICYm
IE9wdGlvbnM6OnVzZUZUTEpJVCgpCisgICAgICAgICYmIElubGluZUNhbGxGcmFtZTo6aXNOb3Jt
YWxDYWxsKGtpbmQpCisgICAgICAgICYmIENhbGxFZGdlTG9nOjppc0VuYWJsZWQoKQorICAgICAg
ICAmJiBPcHRpb25zOjpkZmdEb2VzQ2FsbEVkZ2VQcm9maWxpbmcoKSkgeworICAgICAgICBBU1NF
UlQob3AgPT0gQ2FsbCB8fCBvcCA9PSBDb25zdHJ1Y3QpOworICAgICAgICBpZiAob3AgPT0gQ2Fs
bCkKKyAgICAgICAgICAgIG9wID0gUHJvZmlsZWRDYWxsOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBvcCA9IFByb2ZpbGVkQ29uc3RydWN0OworICAgIH0KKyAgICAKICAgICBpZiAoIWNhbGxM
aW5rU3RhdHVzLmNhbk9wdGltaXplKCkpIHsKICAgICAgICAgLy8gT2RkbHksIHRoaXMgY29uZmxh
dGVzIGNhbGxzIHRoYXQgaGF2ZW4ndCBleGVjdXRlZCB3aXRoIGNhbGxzIHRoYXQgYmVoYXZlZCBz
dWZmaWNpZW50bHkgcG9seW1vcnBoaWNhbGx5CiAgICAgICAgIC8vIHRoYXQgd2UgY2Fubm90IG9w
dGltaXplIHRoZW0uCiAgICAgICAgIAotICAgICAgICBhZGRDYWxsKHJlc3VsdCwgb3AsIGNhbGxU
YXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGlj
dGlvbik7CisgICAgICAgIGFkZENhbGwocmVzdWx0LCBvcCwgT3BJbmZvKCksIGNhbGxUYXJnZXQs
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgbmV4dE9mZnNldCA9
IG1fY3VycmVudEluZGV4ICsgaW5zdHJ1Y3Rpb25TaXplOwotCi0gICAgaWYgKEludGVybmFsRnVu
Y3Rpb24qIGZ1bmN0aW9uID0gY2FsbExpbmtTdGF0dXMuaW50ZXJuYWxGdW5jdGlvbigpKSB7Ci0g
ICAgICAgIGlmIChoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24ocmVzdWx0LCBmdW5jdGlv
biwgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBwcmVkaWN0aW9u
LCBzcGVjaWFsaXphdGlvbktpbmQpKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIHBoYW50b21pbmcg
aGFzIHRvIGJlICphZnRlciogdGhlIGNvZGUgZm9yIHRoZSBpbnRyaW5zaWMsIHRvIHNpZ25pZnkg
dGhhdAotICAgICAgICAgICAgLy8gdGhlIGlucHV0cyBtdXN0IGJlIGtlcHQgYWxpdmUgd2hhdGV2
ZXIgZXhpdHMgdGhlIGludHJpbnNpYyBtYXkgZG8uCi0gICAgICAgICAgICBhZGRUb0dyYXBoKFBo
YW50b20sIGNhbGxUYXJnZXQpOwotICAgICAgICAgICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVn
aXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktp
bmQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAv
LyBDYW4gb25seSBoYW5kbGUgdGhpcyB1c2luZyB0aGUgZ2VuZXJpYyBjYWxsIGhhbmRsZXIuCi0g
ICAgICAgIGFkZENhbGwocmVzdWx0LCBvcCwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICAgICAgCi0gICAgSW50cmluc2ljIGludHJpbnNpYyA9IGNhbGxMaW5rU3RhdHVz
LmludHJpbnNpY0ZvcihzcGVjaWFsaXphdGlvbktpbmQpOwotCi0gICAgSlNGdW5jdGlvbioga25v
d25GdW5jdGlvbiA9IG51bGxwdHI7Ci0gICAgaWYgKGludHJpbnNpYyAhPSBOb0ludHJpbnNpYykg
ewotICAgICAgICBlbWl0RnVuY3Rpb25DaGVja3MoY2FsbExpbmtTdGF0dXMsIGNhbGxUYXJnZXQs
IHJlZ2lzdGVyT2Zmc2V0LCBzcGVjaWFsaXphdGlvbktpbmQpOwotICAgICAgICAgICAgCi0gICAg
ICAgIGlmIChoYW5kbGVJbnRyaW5zaWMocmVzdWx0LCBpbnRyaW5zaWMsIHJlZ2lzdGVyT2Zmc2V0
LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbikpIHsKLSAgICAgICAgICAg
IC8vIFRoaXMgcGhhbnRvbWluZyBoYXMgdG8gYmUgKmFmdGVyKiB0aGUgY29kZSBmb3IgdGhlIGlu
dHJpbnNpYywgdG8gc2lnbmlmeSB0aGF0Ci0gICAgICAgICAgICAvLyB0aGUgaW5wdXRzIG11c3Qg
YmUga2VwdCBhbGl2ZSB3aGF0ZXZlciBleGl0cyB0aGUgaW50cmluc2ljIG1heSBkby4KLSAgICAg
ICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldCk7Ci0gICAgICAgICAgICBlbWl0
QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIHNwZWNpYWxpemF0aW9uS2luZCk7Ci0gICAgICAgICAgICBpZiAobV9ncmFwaC5jb21waWxh
dGlvbigpKQotICAgICAgICAgICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5s
aW5lZENhbGwoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0gZWxzZSBp
ZiAoaGFuZGxlSW5saW5pbmcoY2FsbFRhcmdldCwgcmVzdWx0LCBjYWxsTGlua1N0YXR1cywgcmVn
aXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zmc2V0LCBraW5k
KSkgeworICAgIAorICAgIE9wSW5mbyBjYWxsT3BJbmZvOworICAgIAorICAgIGlmIChoYW5kbGVJ
bmxpbmluZyhjYWxsVGFyZ2V0LCByZXN1bHQsIGNhbGxMaW5rU3RhdHVzLCByZWdpc3Rlck9mZnNl
dCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQsIG9wLCBraW5kLCBwcmVk
aWN0aW9uKSkgewogICAgICAgICBpZiAobV9ncmFwaC5jb21waWxhdGlvbigpKQogICAgICAgICAg
ICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkQ2FsbCgpOwogICAgICAgICBy
ZXR1cm47CiAjaWYgRU5BQkxFKEZUTF9OQVRJVkVfQ0FMTF9JTkxJTklORykKLSAgICB9IGVsc2Ug
aWYgKGlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpICYmIE9wdGlvbnM6Om9wdGltaXplTmF0aXZl
Q2FsbHMoKSkgewotICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxMaW5rU3RhdHVz
LmZ1bmN0aW9uKCk7CisgICAgfSBlbHNlIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSAm
JiBPcHRpb25zOjpvcHRpbWl6ZU5hdGl2ZUNhbGxzKCkgJiYgY2FsbExpbmtTdGF0dXMuc2l6ZSgp
ID09IDEgJiYgIWNhbGxMaW5rU3RhdHVzLmNvdWxkVGFrZVNsb3dQYXRoKCkpIHsKKyAgICAgICAg
Q2FsbFZhcmlhbnQgY2FsbGVlID0gY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVlKCk7CisgICAgICAg
IEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLmZ1bmN0aW9uKCk7CiAgICAgICAgIGlmIChm
dW5jdGlvbiAmJiBmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSkgewotICAgICAgICAgICAgZW1p
dEZ1bmN0aW9uQ2hlY2tzKGNhbGxMaW5rU3RhdHVzLCBjYWxsVGFyZ2V0LCByZWdpc3Rlck9mZnNl
dCwgc3BlY2lhbGl6YXRpb25LaW5kKTsKLSAgICAgICAgICAgIGtub3duRnVuY3Rpb24gPSBmdW5j
dGlvbjsKKyAgICAgICAgICAgIGVtaXRGdW5jdGlvbkNoZWNrcyhjYWxsZWUsIGNhbGxUYXJnZXQs
IHJlZ2lzdGVyT2Zmc2V0LCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgICAgICAgICAgY2FsbE9w
SW5mbyA9IE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShmdW5jdGlvbikpOwogCi0gICAgICAgICAgICBp
ZiAob3AgPT0gQ2FsbCkgCisgICAgICAgICAgICBpZiAob3AgPT0gQ2FsbCB8fCBvcCA9PSBQcm9m
aWxlZENhbGwpCiAgICAgICAgICAgICAgICAgb3AgPSBOYXRpdmVDYWxsOwogICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG9wID09IENvbnN0cnVjdCk7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKG9wID09IENvbnN0cnVjdCB8fCBvcCA9PSBQcm9maWxlZENvbnN0cnVj
dCk7CiAgICAgICAgICAgICAgICAgb3AgPSBOYXRpdmVDb25zdHJ1Y3Q7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICNlbmRpZgogICAgIH0KLSAgICBOb2RlKiBjYWxsID0gYWRkQ2FsbChyZXN1
bHQsIG9wLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJP
ZmZzZXQsIHByZWRpY3Rpb24pOwotCi0gICAgaWYgKGtub3duRnVuY3Rpb24pIAotICAgICAgICBj
YWxsLT5naXZlS25vd25GdW5jdGlvbihrbm93bkZ1bmN0aW9uKTsKKyAgICAKKyAgICBhZGRDYWxs
KHJlc3VsdCwgb3AsIGNhbGxPcEluZm8sIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CiB9CiAKLXZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OmVtaXRGdW5jdGlvbkNoZWNrcyhjb25zdCBDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtT
dGF0dXMsIE5vZGUqIGNhbGxUYXJnZXQsIGludCByZWdpc3Rlck9mZnNldCwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKQordm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdEZ1bmN0aW9uQ2hlY2tz
KENhbGxWYXJpYW50IGNhbGxlZSwgTm9kZSogY2FsbFRhcmdldCwgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgTm9kZSogdGhpc0FyZ3VtZW50
OwogICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKQpAQCAtMTA5NywyMCArMTEwMywyNSBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0RnVuY3Rpb25DaGVja3MoCiAgICAgZWxzZQogICAgICAg
ICB0aGlzQXJndW1lbnQgPSAwOwogCi0gICAgaWYgKGNhbGxMaW5rU3RhdHVzLmlzUHJvdmVkKCkp
IHsKLSAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0LCB0aGlzQXJndW1lbnQp
OwotICAgICAgICByZXR1cm47CisgICAgSlNDZWxsKiBjYWxsZWVDZWxsOworICAgIE5vZGUqIGNh
bGxUYXJnZXRGb3JDaGVjazsKKyAgICBpZiAoY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSkgeworICAg
ICAgICBjYWxsZWVDZWxsID0gY2FsbGVlLmV4ZWN1dGFibGUoKTsKKyAgICAgICAgY2FsbFRhcmdl
dEZvckNoZWNrID0gYWRkVG9HcmFwaChHZXRFeGVjdXRhYmxlLCBjYWxsVGFyZ2V0KTsKKyAgICB9
IGVsc2UgeworICAgICAgICBjYWxsZWVDZWxsID0gY2FsbGVlLm5vbkV4ZWN1dGFibGVDYWxsZWUo
KTsKKyAgICAgICAgY2FsbFRhcmdldEZvckNoZWNrID0gY2FsbFRhcmdldDsKICAgICB9CiAgICAg
Ci0gICAgQVNTRVJUKGNhbGxMaW5rU3RhdHVzLmNhbk9wdGltaXplKCkpOwotICAgIAotICAgIGlm
IChKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxMaW5rU3RhdHVzLmZ1bmN0aW9uKCkpCi0gICAg
ICAgIGFkZFRvR3JhcGgoQ2hlY2tGdW5jdGlvbiwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKGZ1bmN0
aW9uKSksIGNhbGxUYXJnZXQsIHRoaXNBcmd1bWVudCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFT
U0VSVChjYWxsTGlua1N0YXR1cy5leGVjdXRhYmxlKCkpOwotICAgICAgICAKLSAgICAgICAgYWRk
VG9HcmFwaChDaGVja0V4ZWN1dGFibGUsIE9wSW5mbyhjYWxsTGlua1N0YXR1cy5leGVjdXRhYmxl
KCkpLCBjYWxsVGFyZ2V0LCB0aGlzQXJndW1lbnQpOwotICAgIH0KKyAgICBBU1NFUlQoY2FsbGVl
Q2VsbCk7CisgICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShj
YWxsZWVDZWxsKSksIGNhbGxUYXJnZXRGb3JDaGVjaywgdGhpc0FyZ3VtZW50KTsKK30KKwordm9p
ZCBCeXRlQ29kZVBhcnNlcjo6dW5kb0Z1bmN0aW9uQ2hlY2tzKENhbGxWYXJpYW50IGNhbGxlZSkK
K3sKKyAgICByZW1vdmVMYXN0Tm9kZUZyb21HcmFwaChDaGVja0NlbGwpOworICAgIGlmIChjYWxs
ZWUuaXNDbG9zdXJlQ2FsbCgpKQorICAgICAgICByZW1vdmVMYXN0Tm9kZUZyb21HcmFwaChHZXRF
eGVjdXRhYmxlKTsKIH0KIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdEFyZ3VtZW50UGhhbnRv
bXMoaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKQEAgLTExMTksMzYgKzExMzAsMjUgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6ZW1pdEFyZ3VtZW50UGhhbnRvbQogICAgICAgICBhZGRUb0dyYXBoKFBo
YW50b20sIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpLCByZWdpc3Rlck9mZnNldCkp
KTsKIH0KIAotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRh
cmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBDYWxsTGlua1N0YXR1cyYgY2FsbExp
bmtTdGF0dXMsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCkKK3Vu
c2lnbmVkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQgY2FsbGVlLCBp
bnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Ci0gICAgCi0gICAg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQgPSBJbmxpbmVDYWxsRnJh
bWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5kKTsKLSAgICAKICAgICBpZiAodmVyYm9zZSkK
LSAgICAgICAgZGF0YUxvZygiQ29uc2lkZXJpbmcgaW5saW5pbmcgIiwgY2FsbExpbmtTdGF0dXMs
ICIgaW50byAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKKyAgICAgICAgZGF0YUxvZygi
Q29uc2lkZXJpbmcgaW5saW5pbmcgIiwgY2FsbGVlLCAiIGludG8gIiwgY3VycmVudENvZGVPcmln
aW4oKSwgIlxuIik7CiAgICAgCi0gICAgLy8gRmlyc3QsIHRoZSByZWFsbHkgc2ltcGxlIGNoZWNr
czogZG8gd2UgaGF2ZSBhbiBhY3R1YWwgSlMgZnVuY3Rpb24/Ci0gICAgaWYgKCFjYWxsTGlua1N0
YXR1cy5leGVjdXRhYmxlKCkpIHsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUg
PSBjYWxsZWUuZnVuY3Rpb25FeGVjdXRhYmxlKCk7CisgICAgaWYgKCFleGVjdXRhYmxlKSB7CiAg
ICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVj
YXVzZSB0aGVyZSBpcyBubyBleGVjdXRhYmxlLlxuIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0gICAgaWYgKGNhbGxMaW5rU3RhdHVzLmV4ZWN1dGFibGUoKS0+aXNIb3N0RnVuY3Rp
b24oKSkgewotICAgICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICBG
YWlsaW5nIGJlY2F1c2UgaXQncyBhIGhvc3QgZnVuY3Rpb24uXG4iKTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSB0aGVyZSBp
cyBubyBmdW5jdGlvbiBleGVjdXRhYmxlLiIpOworICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAg
ICAgfQogICAgIAotICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxG
dW5jdGlvbkV4ZWN1dGFibGUqPihjYWxsTGlua1N0YXR1cy5leGVjdXRhYmxlKCkpOwotICAgIAog
ICAgIC8vIERvZXMgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgd2UncmUgcGFzc2luZyBtYXRjaCB0
aGUgYXJpdHkgb2YgdGhlIHRhcmdldD8gV2UgY3VycmVudGx5CiAgICAgLy8gaW5saW5lIG9ubHkg
aWYgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgcGFzc2VkIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVh
bCB0byB0aGUgbnVtYmVyCiAgICAgLy8gYXJndW1lbnRzIGV4cGVjdGVkLgogICAgIGlmIChzdGF0
aWNfY2FzdDxpbnQ+KGV4ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCkpICsgMSA+IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAg
ZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSBvZiBhcml0eSBtaXNtYXRjaC5cbiIpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CiAgICAg
CiAgICAgLy8gRG8gd2UgaGF2ZSBhIGNvZGUgYmxvY2ssIGFuZCBkb2VzIHRoZSBjb2RlIGJsb2Nr
J3Mgc2l6ZSBtYXRjaCB0aGUgaGV1cmlzdGljcy9yZXF1aXJlbWVudHMgZm9yCkBAIC0xMTU3LDE4
ICsxMTU3LDE4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAg
ICAvLyBpZiB3ZSBoYWQgYSBzdGF0aWMgcHJvb2Ygb2Ygd2hhdCB3YXMgYmVpbmcgY2FsbGVkOyB0
aGlzIG1pZ2h0IGhhcHBlbiBmb3IgZXhhbXBsZSBpZiB5b3UgY2FsbCBhCiAgICAgLy8gZ2xvYmFs
IGZ1bmN0aW9uLCB3aGVyZSB3YXRjaHBvaW50aW5nIGdpdmVzIHVzIHN0YXRpYyBpbmZvcm1hdGlv
bi4gT3ZlcmFsbCwgaXQncyBhIHJhcmUgY2FzZQogICAgIC8vIGJlY2F1c2Ugd2UgZXhwZWN0IHRo
YXQgYW55IGhvdCBjYWxsZWVzIHdvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNvbXBpbGVkLgotICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Io
c3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFi
bGUtPmJhc2VsaW5lQ29kZUJsb2NrRm9yKGtpbmQpOwogICAgIGlmICghY29kZUJsb2NrKSB7CiAg
ICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVj
YXVzZSBubyBjb2RlIGJsb2NrIGF2YWlsYWJsZS5cbiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CiAgICAgQ2FwYWJpbGl0eUxldmVsIGNh
cGFiaWxpdHlMZXZlbCA9IGlubGluZUZ1bmN0aW9uRm9yQ2FwYWJpbGl0eUxldmVsKAotICAgICAg
ICBjb2RlQmxvY2ssIHNwZWNpYWxpemF0aW9uS2luZCwgY2FsbExpbmtTdGF0dXMuaXNDbG9zdXJl
Q2FsbCgpKTsKKyAgICAgICAgY29kZUJsb2NrLCBraW5kLCBjYWxsZWUuaXNDbG9zdXJlQ2FsbCgp
KTsKICAgICBpZiAoIWNhbklubGluZShjYXBhYmlsaXR5TGV2ZWwpKSB7CiAgICAgICAgIGlmICh2
ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSB0aGUgZnVu
Y3Rpb24gaXMgbm90IGlubGluZWFibGUuXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQogICAgIAogICAgIC8vIENoZWNrIGlmIHRoZSBj
YWxsZXIgaXMgYWxyZWFkeSB0b28gbGFyZ2UuIFdlIGRvIHRoaXMgY2hlY2sgaGVyZSBiZWNhdXNl
IHRoYXQncyBqdXN0CkBAIC0xMTc4LDcgKzExNzgsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVJbmxpbmluZyhOb2RlCiAgICAgICAgIGNvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlu
bGluZWQgPSBmYWxzZTsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9n
KCIgICAgRmFpbGluZyBiZWNhdXNlIHRoZSBjYWxsZXIgaXMgdG9vIGxhcmdlLlxuIik7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgIH0KICAgICAK
ICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgYmV0dGVyIGF0IHByZWRpY3RpbmcgaG93IG11
Y2ggYmxvYXQgd2Ugd2lsbCBpbnRyb2R1Y2UgYnkgaW5saW5pbmcKQEAgLTExOTcsNyArMTE5Nyw3
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAgICAgaWYg
KGRlcHRoID49IE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ0RlcHRoKCkpIHsKICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1
c2UgZGVwdGggZXhjZWVkZWQuXG4iKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYg
KGVudHJ5LT5leGVjdXRhYmxlKCkgPT0gZXhlY3V0YWJsZSkgewpAQCAtMTIwNSwxOSArMTIwNSwy
NiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgICAgICAg
ICBpZiAocmVjdXJzaW9uID49IE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ1JlY3Vyc2lvbigpKSB7
CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2coIiAgICBGYWlsaW5nIGJlY2F1c2UgcmVjdXJzaW9uIGRldGVjdGVkLlxuIik7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiBVSU5UX01BWDsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICAKICAgICBpZiAodmVyYm9zZSkK
LSAgICAgICAgZGF0YUxvZygiICAgIENvbW1pdHRpbmcgdG8gaW5saW5pbmcuXG4iKTsKKyAgICAg
ICAgZGF0YUxvZygiICAgIElubGluaW5nIHNob3VsZCBiZSBwb3NzaWJsZS5cbiIpOwogICAgIAot
ICAgIC8vIE5vdyB3ZSBrbm93IHdpdGhvdXQgYSBkb3VidCB0aGF0IHdlIGFyZSBjb21taXR0ZWQg
dG8gaW5saW5pbmcuIFNvIGJlZ2luIHRoZSBwcm9jZXNzCi0gICAgLy8gYnkgY2hlY2tpbmcgdGhl
IGNhbGxlZSAoaWYgbmVjZXNzYXJ5KSBhbmQgbWFraW5nIHN1cmUgdGhhdCBhcmd1bWVudHMgYW5k
IHRoZSBjYWxsZWUKLSAgICAvLyBhcmUgZmx1c2hlZC4KLSAgICBlbWl0RnVuY3Rpb25DaGVja3Mo
Y2FsbExpbmtTdGF0dXMsIGNhbGxUYXJnZXROb2RlLCByZWdpc3Rlck9mZnNldCwgc3BlY2lhbGl6
YXRpb25LaW5kKTsKKyAgICAvLyBJdCBtaWdodCBiZSBwb3NzaWJsZSB0byBpbmxpbmUuCisgICAg
cmV0dXJuIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpOworfQorCit2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFu
ZCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpL
aW5kIGtpbmQsIENhbGxlckxpbmthYmlsaXR5IGNhbGxlckxpbmthYmlsaXR5KQoreworICAgIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1l
OjpzcGVjaWFsaXphdGlvbktpbmRGb3Ioa2luZCk7CisgICAgCisgICAgQVNTRVJUKGlubGluaW5n
Q29zdChjYWxsZWUsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktp
bmQpICE9IFVJTlRfTUFYKTsKICAgICAKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxl
ZS5mdW5jdGlvbkV4ZWN1dGFibGUoKS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Ioc3BlY2lhbGl6YXRp
b25LaW5kKTsKKwogICAgIC8vIEZJWE1FOiBEb24ndCBmbHVzaCBjb25zdGFudHMhCiAgICAgCiAg
ICAgaW50IGlubGluZUNhbGxGcmFtZVN0YXJ0ID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVy
YW5kKFZpcnR1YWxSZWdpc3RlcihyZWdpc3Rlck9mZnNldCkpLm9mZnNldCgpICsgSlNTdGFjazo6
Q2FsbEZyYW1lSGVhZGVyU2l6ZTsKQEAgLTEyMzMsNyArMTI0MCw3IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAgICAgcmVzdWx0UmVnID0gbV9pbmxpbmVT
dGFja1RvcC0+cmVtYXBPcGVyYW5kKHJlc3VsdFJlZyk7CiAgICAgCiAgICAgSW5saW5lU3RhY2tF
bnRyeSBpbmxpbmVTdGFja0VudHJ5KAotICAgICAgICB0aGlzLCBjb2RlQmxvY2ssIGNvZGVCbG9j
aywgbV9ncmFwaC5sYXN0QmxvY2soKSwgY2FsbExpbmtTdGF0dXMuZnVuY3Rpb24oKSwgcmVzdWx0
UmVnLAorICAgICAgICB0aGlzLCBjb2RlQmxvY2ssIGNvZGVCbG9jaywgbV9ncmFwaC5sYXN0Qmxv
Y2soKSwgY2FsbGVlLmZ1bmN0aW9uKCksIHJlc3VsdFJlZywKICAgICAgICAgKFZpcnR1YWxSZWdp
c3RlcilpbmxpbmVDYWxsRnJhbWVTdGFydCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGtp
bmQpOwogICAgIAogICAgIC8vIFRoaXMgaXMgd2hlcmUgdGhlIGFjdHVhbCBpbmxpbmluZyByZWFs
bHkgaGFwcGVucy4KQEAgLTEyNDcsOCArMTI1NCw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUlubGluaW5nKE5vZGUKICAgICAKICAgICBSRUxFQVNFX0FTU0VSVCgKICAgICAgICAgbV9p
bmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwKLSAgICAgICAg
PT0gY2FsbExpbmtTdGF0dXMuaXNDbG9zdXJlQ2FsbCgpKTsKLSAgICBpZiAoY2FsbExpbmtTdGF0
dXMuaXNDbG9zdXJlQ2FsbCgpKSB7CisgICAgICAgID09IGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkp
OworICAgIGlmIChjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKSB7CiAgICAgICAgIFZhcmlhYmxlQWNj
ZXNzRGF0YSogY2FsbGVlVmFyaWFibGUgPQogICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rl
cihKU1N0YWNrOjpDYWxsZWUpLCBjYWxsVGFyZ2V0Tm9kZSwgSW1tZWRpYXRlTmFrZWRTZXQpLT52
YXJpYWJsZUFjY2Vzc0RhdGEoKTsKICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBzY29wZVZh
cmlhYmxlID0KQEAgLTEyNjMsNyArMTI3MCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUlubGluaW5nKE5vZGUKICAgICBtX2dyYXBoLm1faW5saW5lVmFyaWFibGVEYXRhLmFwcGVuZChp
bmxpbmVWYXJpYWJsZURhdGEpOwogICAgIAogICAgIHBhcnNlQ29kZUJsb2NrKCk7Ci0gICAgcHJl
cGFyZVRvUGFyc2VCbG9jaygpOyAvLyBSZXNldCBvdXIgc3RhdGUgbm93IHRoYXQgd2UncmUgYmFj
ayB0byB0aGUgb3V0ZXIgY29kZS4KKyAgICBjbGVhckNhY2hlcygpOyAvLyBSZXNldCBvdXIgc3Rh
dGUgbm93IHRoYXQgd2UncmUgYmFjayB0byB0aGUgb3V0ZXIgY29kZS4KICAgICAKICAgICBtX2N1
cnJlbnRJbmRleCA9IG9sZEluZGV4OwogICAgIApAQCAtMTI3NiwyMCArMTI4Myw4IEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgQVNTRVJUKGlubGluZVN0YWNrRW50cnkubV9jYWxsc2l0ZUJsb2NrSGVhZC0+aXNMaW5r
ZWQpOwogICAgICAgICAKLSAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHRoZSBjYWxsc2l0
ZSBibG9jayBoZWFkIGlzIG5vdCBvd25lZCBieSB0aGUgY2FsbGVyLgotICAgICAgICBpZiAoIWlu
bGluZVN0YWNrRW50cnkubV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICAvLyBJdCdzIGRlZmluaXRlbHkgb3duZWQgYnkgdGhlIGNhbGxlciwgYmVjYXVz
ZSB0aGUgY2FsbGVyIGNyZWF0ZWQgbmV3IGJsb2Nrcy4KLSAgICAgICAgICAgIC8vIEFzc2VydCB0
aGF0IHRoaXMgYWxsIGFkZHMgdXAuCi0gICAgICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRy
eS5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9ibG9jayA9PSBpbmxpbmVTdGFj
a0VudHJ5Lm1fY2FsbHNpdGVCbG9ja0hlYWQpOwotICAgICAgICAgICAgQVNTRVJUKGlubGluZVN0
YWNrRW50cnkubV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MubGFzdCgpLm1fbmVlZHNOb3JtYWxM
aW5raW5nKTsKLSAgICAgICAgICAgIGlubGluZVN0YWNrRW50cnkubV9jYWxsZXItPm1fdW5saW5r
ZWRCbG9ja3MubGFzdCgpLm1fbmVlZHNOb3JtYWxMaW5raW5nID0gZmFsc2U7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAvLyBJdCdzIGRlZmluaXRlbHkgbm90IG93bmVkIGJ5IHRoZSBj
YWxsZXIuIFRlbGwgdGhlIGNhbGxlciB0aGF0IGhlIGRvZXMgbm90Ci0gICAgICAgICAgICAvLyBu
ZWVkIHRvIGxpbmsgaGlzIGNhbGxzaXRlIGJsb2NrIGhlYWQsIGJlY2F1c2Ugd2UgZGlkIGl0IGZv
ciBoaW0uCi0gICAgICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+bV9j
YWxsc2l0ZUJsb2NrSGVhZE5lZWRzTGlua2luZyk7Ci0gICAgICAgICAgICBBU1NFUlQoaW5saW5l
U3RhY2tFbnRyeS5tX2NhbGxlci0+bV9jYWxsc2l0ZUJsb2NrSGVhZCA9PSBpbmxpbmVTdGFja0Vu
dHJ5Lm1fY2FsbHNpdGVCbG9ja0hlYWQpOwotICAgICAgICAgICAgaW5saW5lU3RhY2tFbnRyeS5t
X2NhbGxlci0+bV9jYWxsc2l0ZUJsb2NrSGVhZE5lZWRzTGlua2luZyA9IGZhbHNlOwotICAgICAg
ICB9CisgICAgICAgIGlmIChjYWxsZXJMaW5rYWJpbGl0eSA9PSBDYWxsZXJEb2VzTm9ybWFsTGlu
a2luZykKKyAgICAgICAgICAgIGNhbmNlbExpbmtpbmdGb3JCbG9jayhpbmxpbmVTdGFja0VudHJ5
Lm1fY2FsbGVyLCBpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbHNpdGVCbG9ja0hlYWQpOwogICAgICAg
ICAKICAgICAgICAgbGlua0Jsb2NrcyhpbmxpbmVTdGFja0VudHJ5Lm1fdW5saW5rZWRCbG9ja3Ms
IGlubGluZVN0YWNrRW50cnkubV9ibG9ja0xpbmtpbmdUYXJnZXRzKTsKICAgICB9IGVsc2UKQEAg
LTEzMDgsMTYgKzEzMDMsMTkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmco
Tm9kZQogICAgICAgICAgICAgLy8gZm9yIHJlbGVhc2UgYnVpbGRzIGJlY2F1c2UgdGhpcyBibG9j
ayB3aWxsIG5ldmVyIHNlcnZlIGFzIGEgcG90ZW50aWFsIHRhcmdldAogICAgICAgICAgICAgLy8g
aW4gdGhlIGxpbmtlcidzIGJpbmFyeSBzZWFyY2guCiAgICAgICAgICAgICBsYXN0QmxvY2stPmJ5
dGVjb2RlQmVnaW4gPSBtX2N1cnJlbnRJbmRleDsKLSAgICAgICAgICAgIG1faW5saW5lU3RhY2tU
b3AtPm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKG1fZ3Jh
cGgubGFzdEJsb2NrKCkpKTsKKyAgICAgICAgICAgIGlmIChjYWxsZXJMaW5rYWJpbGl0eSA9PSBD
YWxsZXJEb2VzTm9ybWFsTGlua2luZykgeworICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJBZGRpbmcgdW5saW5rZWQgYmxvY2sgIiwgUmF3
UG9pbnRlcihtX2dyYXBoLmxhc3RCbG9jaygpKSwgIiAob25lIHJldHVybilcbiIpOworICAgICAg
ICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tzLmFw
cGVuZChVbmxpbmtlZEJsb2NrKG1fZ3JhcGgubGFzdEJsb2NrKCkpKTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBtX2dyYXBoLmxh
c3RCbG9jaygpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICAKICAgICAvLyBJZiB3ZSBnZXQgdG8gdGhpcyBwb2ludCB0aGVuIGFsbCBibG9ja3MgbXVz
dCBlbmQgaW4gc29tZSBzb3J0IG9mIHRlcm1pbmFscy4KICAgICBBU1NFUlQobGFzdEJsb2NrLT5s
YXN0KCktPmlzVGVybWluYWwoKSk7Ci0gICAgCiAKICAgICAvLyBOZWVkIHRvIGNyZWF0ZSBhIG5l
dyBiYXNpYyBibG9jayBmb3IgdGhlIGNvbnRpbnVhdGlvbiBhdCB0aGUgY2FsbGVyLgogICAgIFJl
ZlB0cjxCYXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKG5ldyBCYXNpY0Jsb2NrKG5leHRPZmZz
ZXQsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgUE5hTikpOwpAQCAtMTMzMywyMCArMTMz
MSwyOTMgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgICAg
ICBBU1NFUlQoIW5vZGUtPnRhcmdldEJsb2NrKCkpOwogICAgICAgICBub2RlLT50YXJnZXRCbG9j
aygpID0gYmxvY2suZ2V0KCk7CiAgICAgICAgIGlubGluZVN0YWNrRW50cnkubV91bmxpbmtlZEJs
b2Nrc1tpXS5tX25lZWRzRWFybHlSZXR1cm5MaW5raW5nID0gZmFsc2U7Ci0jaWYgIUFTU0VSVF9E
SVNBQkxFRAotICAgICAgICBibG9ja1RvTGluay0+aXNMaW5rZWQgPSB0cnVlOwotI2VuZGlmCisg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgZGF0YUxvZygiTWFya2luZyAiLCBSYXdQ
b2ludGVyKGJsb2NrVG9MaW5rKSwgIiBhcyBsaW5rZWQgKGp1bXBzIHRvIHJldHVybilcbiIpOwor
ICAgICAgICBibG9ja1RvTGluay0+ZGlkTGluaygpOwogICAgIH0KICAgICAKICAgICBtX2N1cnJl
bnRCbG9jayA9IGJsb2NrLmdldCgpOwogICAgIEFTU0VSVChtX2lubGluZVN0YWNrVG9wLT5tX2Nh
bGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmlzRW1wdHkoKSB8fCBtX2lubGluZVN0YWNrVG9w
LT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmxhc3QoKS0+Ynl0ZWNvZGVCZWdpbiA8
IG5leHRPZmZzZXQpOwotICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX3VubGlua2Vk
QmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLmdldCgpKSk7Ci0gICAgbV9pbmxpbmVT
dGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5hcHBlbmQoYmxvY2suZ2V0
KCkpOworICAgIGlmICh2ZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJBZGRpbmcgdW5saW5rZWQg
YmxvY2sgIiwgUmF3UG9pbnRlcihibG9jay5nZXQoKSksICIgKG1hbnkgcmV0dXJucylcbiIpOwor
ICAgIGlmIChjYWxsZXJMaW5rYWJpbGl0eSA9PSBDYWxsZXJEb2VzTm9ybWFsTGlua2luZykgewor
ICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5hcHBl
bmQoVW5saW5rZWRCbG9jayhibG9jay5nZXQoKSkpOworICAgICAgICBtX2lubGluZVN0YWNrVG9w
LT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9jay5nZXQoKSk7Cisg
ICAgfQogICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soYmxvY2spOwogICAgIHByZXBhcmVUb1BhcnNl
QmxvY2soKTsKK30KKwordm9pZCBCeXRlQ29kZVBhcnNlcjo6Y2FuY2VsTGlua2luZ0ZvckJsb2Nr
KElubGluZVN0YWNrRW50cnkqIGlubGluZVN0YWNrRW50cnksIEJhc2ljQmxvY2sqIGJsb2NrKQor
eworICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB0aGUgY2FsbHNpdGUgYmxvY2sgaGVhZCBpcyBu
b3Qgb3duZWQgYnkgdGhlIGNhbGxlci4KKyAgICBpZiAoIWlubGluZVN0YWNrRW50cnktPm1fdW5s
aW5rZWRCbG9ja3MuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIEl0J3MgZGVmaW5pdGVseSBvd25l
ZCBieSB0aGUgY2FsbGVyLCBiZWNhdXNlIHRoZSBjYWxsZXIgY3JlYXRlZCBuZXcgYmxvY2tzLgor
ICAgICAgICAvLyBBc3NlcnQgdGhhdCB0aGlzIGFsbCBhZGRzIHVwLgorICAgICAgICBBU1NFUlRf
VU5VU0VEKGJsb2NrLCBpbmxpbmVTdGFja0VudHJ5LT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5t
X2Jsb2NrID09IGJsb2NrKTsKKyAgICAgICAgQVNTRVJUKGlubGluZVN0YWNrRW50cnktPm1fdW5s
aW5rZWRCbG9ja3MubGFzdCgpLm1fbmVlZHNOb3JtYWxMaW5raW5nKTsKKyAgICAgICAgaW5saW5l
U3RhY2tFbnRyeS0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9uZWVkc05vcm1hbExpbmtpbmcg
PSBmYWxzZTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBJdCdzIGRlZmluaXRlbHkgbm90IG93
bmVkIGJ5IHRoZSBjYWxsZXIuIFRlbGwgdGhlIGNhbGxlciB0aGF0IGhlIGRvZXMgbm90CisgICAg
ICAgIC8vIG5lZWQgdG8gbGluayBoaXMgY2FsbHNpdGUgYmxvY2sgaGVhZCwgYmVjYXVzZSB3ZSBk
aWQgaXQgZm9yIGhpbS4KKyAgICAgICAgQVNTRVJUKGlubGluZVN0YWNrRW50cnktPm1fY2FsbHNp
dGVCbG9ja0hlYWROZWVkc0xpbmtpbmcpOworICAgICAgICBBU1NFUlRfVU5VU0VEKGJsb2NrLCBp
bmxpbmVTdGFja0VudHJ5LT5tX2NhbGxzaXRlQmxvY2tIZWFkID09IGJsb2NrKTsKKyAgICAgICAg
aW5saW5lU3RhY2tFbnRyeS0+bV9jYWxsc2l0ZUJsb2NrSGVhZE5lZWRzTGlua2luZyA9IGZhbHNl
OworICAgIH0KK30KKworYm9vbCBCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRvSW5saW5lQ2FsbChO
b2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENhbGxWYXJpYW50IGNhbGxl
ZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVu
c2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBDYWxsZXJMaW5r
YWJpbGl0eSBjYWxsZXJMaW5rYWJpbGl0eSwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgdW5z
aWduZWQmIGlubGluaW5nQmFsYW5jZSkKK3sKKyAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNw
ZWNpYWxpemF0aW9uS2luZCA9IElubGluZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9y
KGtpbmQpOworICAgIAorICAgIGlmICghaW5saW5pbmdCYWxhbmNlKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgCisgICAgaWYgKEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVl
LmludGVybmFsRnVuY3Rpb24oKSkgeworICAgICAgICBpZiAoaGFuZGxlQ29uc3RhbnRJbnRlcm5h
bEZ1bmN0aW9uKHJlc3VsdE9wZXJhbmQsIGZ1bmN0aW9uLCByZWdpc3Rlck9mZnNldCwgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCkpIHsKKyAgICAgICAgICAg
IGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldE5vZGUpOworICAgICAgICAgICAgZW1pdEFy
Z3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgICAgICAgICAgaW5saW5pbmdCYWxhbmNlLS07Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIAorICAgIEludHJpbnNpYyBpbnRyaW5zaWMgPSBjYWxsZWUuaW50cmluc2lj
Rm9yKHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgaWYgKGludHJpbnNpYyAhPSBOb0ludHJpbnNp
YykgeworICAgICAgICBpZiAoaGFuZGxlSW50cmluc2ljKHJlc3VsdE9wZXJhbmQsIGludHJpbnNp
YywgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBwcmVkaWN0aW9u
KSkgeworICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0Tm9kZSk7Cisg
ICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgICAgICAgICBpbmxp
bmluZ0JhbGFuY2UtLTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgbXlJbmxpbmluZ0Nv
c3QgPSBpbmxpbmluZ0Nvc3QoY2FsbGVlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3Bl
Y2lhbGl6YXRpb25LaW5kKTsKKyAgICBpZiAobXlJbmxpbmluZ0Nvc3QgPiBpbmxpbmluZ0JhbGFu
Y2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpbmxpbmVDYWxsKGNhbGxUYXJn
ZXROb2RlLCByZXN1bHRPcGVyYW5kLCBjYWxsZWUsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgbmV4dE9mZnNldCwga2luZCwgY2FsbGVyTGlua2FiaWxpdHkpOwor
ICAgIGlubGluaW5nQmFsYW5jZSAtPSBteUlubGluaW5nQ29zdDsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdl
dE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtT
dGF0dXMsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6
S2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQoreworICAgIGlmICh2ZXJib3Nl
KSB7CisgICAgICAgIGRhdGFMb2coIkhhbmRsaW5nIGlubGluaW5nLi4uXG4iKTsKKyAgICAgICAg
ZGF0YUxvZygiU3RhY2s6ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOworICAgIH0KKyAg
ICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCA9IElubGluZUNhbGxG
cmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOworICAgIAorICAgIGlmICghY2FsbExp
bmtTdGF0dXMuc2l6ZSgpKSB7CisgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgZGF0
YUxvZygiQmFpbGluZyBpbmxpbmluZy5cbiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIAorICAgIHVuc2lnbmVkIGlubGluaW5nQmFsYW5jZSA9IE9wdGlvbnM6Om1heGltdW1G
dW5jdGlvbkZvckNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCk7CisgICAgaWYg
KHNwZWNpYWxpemF0aW9uS2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KQorICAgICAgICBpbmxpbmlu
Z0JhbGFuY2UgPSBzdGQ6Om1pbihpbmxpbmluZ0JhbGFuY2UsIE9wdGlvbnM6Om1heGltdW1GdW5j
dGlvbkZvckNvbnN0cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKSk7CisgICAg
aWYgKGNhbGxMaW5rU3RhdHVzLmlzQ2xvc3VyZUNhbGwoKSkKKyAgICAgICAgaW5saW5pbmdCYWxh
bmNlID0gc3RkOjptaW4oaW5saW5pbmdCYWxhbmNlLCBPcHRpb25zOjptYXhpbXVtRnVuY3Rpb25G
b3JDbG9zdXJlQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKSk7CisgICAgCisg
ICAgLy8gRmlyc3QgY2hlY2sgaWYgd2UgY2FuIGF2b2lkIGNyZWF0aW5nIGNvbnRyb2wgZmxvdy4g
T3VyIGlubGluZXIgZG9lcyBzb21lIENGRworICAgIC8vIHNpbXBsaWZpY2F0aW9uIG9uIHRoZSBm
bHkgYW5kIHRoaXMgaGVscHMgcmVkdWNlIGNvbXBpbGUgdGltZXMsIGJ1dCB3ZSBjYW4gb25seSBs
ZXZlcmFnZQorICAgIC8vIHRoaXMgaW4gY2FzZXMgd2hlcmUgd2UgZG9uJ3QgbmVlZCBjb250cm9s
IGZsb3cgZGlhbW9uZHMgdG8gY2hlY2sgdGhlIGNhbGxlZS4KKyAgICBpZiAoIWNhbGxMaW5rU3Rh
dHVzLmNvdWxkVGFrZVNsb3dQYXRoKCkgJiYgY2FsbExpbmtTdGF0dXMuc2l6ZSgpID09IDEpIHsK
KyAgICAgICAgZW1pdEZ1bmN0aW9uQ2hlY2tzKAorICAgICAgICAgICAgY2FsbExpbmtTdGF0dXNb
MF0uY2FsbGVlKCksIGNhbGxUYXJnZXROb2RlLCByZWdpc3Rlck9mZnNldCwgc3BlY2lhbGl6YXRp
b25LaW5kKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBhdHRlbXB0VG9JbmxpbmVDYWxsKAorICAg
ICAgICAgICAgY2FsbFRhcmdldE5vZGUsIHJlc3VsdE9wZXJhbmQsIGNhbGxMaW5rU3RhdHVzWzBd
LmNhbGxlZSgpLCByZWdpc3Rlck9mZnNldCwKKyAgICAgICAgICAgIGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBuZXh0T2Zmc2V0LCBraW5kLCBDYWxsZXJEb2VzTm9ybWFsTGlua2luZywgcHJl
ZGljdGlvbiwKKyAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZSk7CisgICAgICAgIGlmICghcmVz
dWx0ICYmICFjYWxsTGlua1N0YXR1cy5pc1Byb3ZlZCgpKQorICAgICAgICAgICAgdW5kb0Z1bmN0
aW9uQ2hlY2tzKGNhbGxMaW5rU3RhdHVzWzBdLmNhbGxlZSgpKTsKKyAgICAgICAgaWYgKHZlcmJv
c2UpIHsKKyAgICAgICAgICAgIGRhdGFMb2coIkRvbmUgaW5saW5pbmcgKHNpbXBsZSkuXG4iKTsK
KyAgICAgICAgICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4i
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICAv
LyBXZSBuZWVkIHRvIGNyZWF0ZSBzb21lIGtpbmQgb2Ygc3dpdGNoIG92ZXIgY2FsbGVlLiBGb3Ig
bm93IHdlIG9ubHkgZG8gdGhpcyBpZiB3ZSBiZWxpZXZlIHRoYXQKKyAgICAvLyB3ZSdyZSBpbiB0
aGUgdG9wIHRpZXIuIFdlIGhhdmUgdHdvIHJlYXNvbnMgZm9yIHRoaXM6IGZpcnN0LCBpdCBwcm92
aWRlcyB1cyBhbiBvcHBvcnR1bml0eSB0bworICAgIC8vIGRvIG1vcmUgZGV0YWlsZWQgcG9seXZh
cmlhbnQvcG9seW1vcnBoaWMgcHJvZmlsaW5nOyBhbmQgc2Vjb25kLCBpdCByZWR1Y2VzIGNvbXBp
bGUgdGltZXMgaW4KKyAgICAvLyB0aGUgREZHLiBBbmQgYnkgcG9seXZhcmlhbnQgcHJvZmlsaW5n
IHdlIG1lYW4gcG9seXZhcmlhbnQgcHJvZmlsaW5nIG9mICp0aGlzKiBjYWxsLiBOb3RlIHRoYXQK
KyAgICAvLyB3ZSBjb3VsZCBpbXByb3ZlIHRoYXQgYXNwZWN0IG9mIHRoaXMgYnkgZG9pbmcgcG9s
eW1vcnBoaWMgaW5saW5pbmcgYnV0IGhhdmluZyB0aGUgcHJvZmlsaW5nCisgICAgLy8gYWxzby4g
Q3VycmVudGx5IHdlIG9wdCBhZ2FpbnN0IHRoaXMsIGJ1dCBpdCBjb3VsZCBiZSBpbnRlcmVzdGlu
Zy4gVGhhdCB3b3VsZCByZXF1aXJlIGhhdmluZyBhCisgICAgLy8gc2VwYXJhdGUgbm9kZSBmb3Ig
Y2FsbCBlZGdlIHByb2ZpbGluZy4KKyAgICAvLyBGSVhNRTogSW50cm9kdWNlIHRoZSBub3Rpb24g
b2YgYSBzZXBhcmF0ZSBjYWxsIGVkZ2UgcHJvZmlsaW5nIG5vZGUuCisgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjAzMworICAgIGlmICghaXNGVEwobV9n
cmFwaC5tX3BsYW4ubW9kZSkgfHwgIU9wdGlvbnM6OmVuYWJsZVBvbHltb3JwaGljQ2FsbElubGlu
aW5nKCkpIHsKKyAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgIGRhdGFMb2coIkJh
aWxpbmcgaW5saW5pbmcgKGhhcmQpLlxuIik7CisgICAgICAgICAgICBkYXRhTG9nKCJTdGFjazog
IiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBvbGRPZmZzZXQgPSBtX2N1cnJlbnRJ
bmRleDsKKyAgICAKKyAgICBib29sIGFsbEFyZUNsb3N1cmVDYWxscyA9IHRydWU7CisgICAgYm9v
bCBhbGxBcmVEaXJlY3RDYWxscyA9IHRydWU7CisgICAgZm9yICh1bnNpZ25lZCBpID0gY2FsbExp
bmtTdGF0dXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIGlmIChjYWxsTGlua1N0YXR1c1tpXS5j
YWxsZWUoKS5pc0Nsb3N1cmVDYWxsKCkpCisgICAgICAgICAgICBhbGxBcmVEaXJlY3RDYWxscyA9
IGZhbHNlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhbGxBcmVDbG9zdXJlQ2FsbHMgPSBm
YWxzZTsKKyAgICB9CisgICAgCisgICAgTm9kZSogdGhpbmdUb1N3aXRjaE9uOworICAgIGlmIChh
bGxBcmVEaXJlY3RDYWxscykKKyAgICAgICAgdGhpbmdUb1N3aXRjaE9uID0gY2FsbFRhcmdldE5v
ZGU7CisgICAgZWxzZSBpZiAoYWxsQXJlQ2xvc3VyZUNhbGxzKQorICAgICAgICB0aGluZ1RvU3dp
dGNoT24gPSBhZGRUb0dyYXBoKEdldEV4ZWN1dGFibGUsIGNhbGxUYXJnZXROb2RlKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGhhbmRsZSB0aGlz
IGNhc2UsIGJ1dCBpdCdzIHRyaWNreSBhbmQgd2UgZG9uJ3Qga25vdyBvZiBjYXNlcworICAgICAg
ICAvLyB3aGVyZSBpdCB3b3VsZCBiZSBiZW5lZmljaWFsLiBBbHNvLCBDYWxsTGlua1N0YXR1cyB3
b3VsZCBtYWtlIGFsbCBjYWxsZWVzIGFwcGVhciBsaWtlCisgICAgICAgIC8vIGNsb3N1cmUgY2Fs
bHMgaWYgYW55IGNhbGxzIHdlcmUgY2xvc3VyZSBjYWxscyAtIGV4Y2VwdCBmb3IgY2FsbHMgdG8g
aW50ZXJuYWwgZnVuY3Rpb25zLgorICAgICAgICAvLyBTbyB0aGlzIHdpbGwgb25seSBhcmlzZSBp
ZiBzb21lIGNhbGxlZXMgYXJlIGludGVybmFsIGZ1bmN0aW9ucyBhbmQgb3RoZXJzIGFyZSBjbG9z
dXJlcy4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzNjAyMAorICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgZGF0YUxvZygiQmFp
bGluZyBpbmxpbmluZyAobWl4KS5cbiIpOworICAgICAgICAgICAgZGF0YUxvZygiU3RhY2s6ICIs
IGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgCisgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgZGF0YUxvZygi
RG9pbmcgaGFyZCBpbmxpbmluZy4uLlxuIik7CisgICAgICAgIGRhdGFMb2coIlN0YWNrOiAiLCBj
dXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKKyAgICB9CisgICAgCisgICAgLy8gVGhpcyBtYWtl
cyBtZSB3aXNoIHRoYXQgd2Ugd2VyZSBpbiBTU0EgYWxsIHRoZSB0aW1lLiBXZSBuZWVkIHRvIHBp
Y2sgYSB2YXJpYWJsZSBpbnRvIHdoaWNoIHRvCisgICAgLy8gc3RvcmUgdGhlIGNhbGxlZSBzbyB0
aGF0IGl0IHdpbGwgYmUgYWNjZXNzaWJsZSB0byBhbGwgb2YgdGhlIGJsb2NrcyB3ZSdyZSBhYm91
dCB0byBjcmVhdGUuIFdlCisgICAgLy8gZ2V0IGF3YXkgd2l0aCBkb2luZyBhbiBpbW1lZGlhdGUt
c2V0IGhlcmUgYmVjYXVzZSB3ZSB3b3VsZG4ndCBoYXZlIHBlcmZvcm1lZCBhbnkgc2lkZSBlZmZl
Y3RzCisgICAgLy8geWV0LgorICAgIGlmICh2ZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJSZWdp
c3RlciBvZmZzZXQ6ICIsIHJlZ2lzdGVyT2Zmc2V0KTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgY2Fs
bGVlUmVnKHJlZ2lzdGVyT2Zmc2V0ICsgSlNTdGFjazo6Q2FsbGVlKTsKKyAgICBjYWxsZWVSZWcg
PSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQoY2FsbGVlUmVnKTsKKyAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgZGF0YUxvZygiQ2FsbGVlIGlzIGdvaW5nIHRvIGJlICIsIGNhbGxlZVJl
ZywgIlxuIik7CisgICAgc2V0RGlyZWN0KGNhbGxlZVJlZywgY2FsbFRhcmdldE5vZGUsIEltbWVk
aWF0ZVNldFdpdGhGbHVzaCk7CisgICAgCisgICAgU3dpdGNoRGF0YSYgZGF0YSA9ICptX2dyYXBo
Lm1fc3dpdGNoRGF0YS5hZGQoKTsKKyAgICBkYXRhLmtpbmQgPSBTd2l0Y2hDZWxsOworICAgIGFk
ZFRvR3JhcGgoU3dpdGNoLCBPcEluZm8oJmRhdGEpLCB0aGluZ1RvU3dpdGNoT24pOworICAgIAor
ICAgIEJhc2ljQmxvY2sqIG9yaWdpbkJsb2NrID0gbV9jdXJyZW50QmxvY2s7CisgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgIGRhdGFMb2coIk1hcmtpbmcgIiwgUmF3UG9pbnRlcihvcmlnaW5CbG9j
ayksICIgYXMgbGlua2VkIChvcmlnaW4gb2YgcG9seSBpbmxpbmUpXG4iKTsKKyAgICBvcmlnaW5C
bG9jay0+ZGlkTGluaygpOworICAgIGNhbmNlbExpbmtpbmdGb3JCbG9jayhtX2lubGluZVN0YWNr
VG9wLCBvcmlnaW5CbG9jayk7CisgICAgCisgICAgLy8gRWFjaCBpbmxpbmVkIGNhbGxlZSB3aWxs
IGhhdmUgYSBsYW5kaW5nIGJsb2NrIHRoYXQgaXQgcmV0dXJucyBhdC4gVGhleSBzaG91bGQgYWxs
IGhhdmUganVtcHMKKyAgICAvLyB0byB0aGUgY29udGludWF0aW9uIGJsb2NrLCB3aGljaCB3ZSBj
cmVhdGUgbGFzdC4KKyAgICBWZWN0b3I8QmFzaWNCbG9jayo+IGxhbmRpbmdCbG9ja3M7CisgICAg
CisgICAgLy8gV2UgbWFrZSBmb3JjZSB0aGlzIHRydWUgaWYgd2UgZ2l2ZSB1cCBvbiBpbmxpbmlu
ZyBhbnkgb2YgdGhlIGVkZ2VzLgorICAgIGJvb2wgY291bGRUYWtlU2xvd1BhdGggPSBjYWxsTGlu
a1N0YXR1cy5jb3VsZFRha2VTbG93UGF0aCgpOworICAgIAorICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICBkYXRhTG9nKCJBYm91dCB0byBsb29wIG92ZXIgZnVuY3Rpb25zIGF0ICIsIGN1cnJlbnRD
b2RlT3JpZ2luKCksICIuXG4iKTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
Y2FsbExpbmtTdGF0dXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgbV9jdXJyZW50SW5kZXggPSBv
bGRPZmZzZXQ7CisgICAgICAgIFJlZlB0cjxCYXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKG5l
dyBCYXNpY0Jsb2NrKFVJTlRfTUFYLCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIFBOYU4p
KTsKKyAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBibG9jay5nZXQoKTsKKyAgICAgICAgbV9ncmFw
aC5hcHBlbmRCbG9jayhibG9jayk7CisgICAgICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKKyAg
ICAgICAgCisgICAgICAgIE5vZGUqIG15Q2FsbFRhcmdldE5vZGUgPSBnZXREaXJlY3QoY2FsbGVl
UmVnKTsKKyAgICAgICAgCisgICAgICAgIGJvb2wgaW5saW5pbmdSZXN1bHQgPSBhdHRlbXB0VG9J
bmxpbmVDYWxsKAorICAgICAgICAgICAgbXlDYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0T3BlcmFuZCwg
Y2FsbExpbmtTdGF0dXNbaV0uY2FsbGVlKCksIHJlZ2lzdGVyT2Zmc2V0LAorICAgICAgICAgICAg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQsIGtpbmQsIENhbGxlckxpbmtz
TWFudWFsbHksIHByZWRpY3Rpb24sCisgICAgICAgICAgICBpbmxpbmluZ0JhbGFuY2UpOworICAg
ICAgICAKKyAgICAgICAgaWYgKCFpbmxpbmluZ1Jlc3VsdCkgeworICAgICAgICAgICAgLy8gVGhh
dCBmYWlsZWQgc28gd2UgbGV0IHRoZSBibG9jayBkaWUuIE5vdGhpbmcgaW50ZXJlc3Rpbmcgc2hv
dWxkIGhhdmUgYmVlbiBhZGRlZCB0bworICAgICAgICAgICAgLy8gdGhlIGJsb2NrLiBXZSBhbHNv
IGdpdmUgdXAgb24gaW5saW5pbmcgYW55IG9mIHRoZSAobGVzcyBmcmVxdWVudCkgY2FsbGVlcy4K
KyAgICAgICAgICAgIEFTU0VSVChtX2N1cnJlbnRCbG9jayA9PSBibG9jay5nZXQoKSk7CisgICAg
ICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2Jsb2Nrcy5sYXN0KCkgPT0gYmxvY2spOworICAgICAg
ICAgICAgbV9ncmFwaC5raWxsQmxvY2tBbmRJdHNDb250ZW50cyhibG9jay5nZXQoKSk7CisgICAg
ICAgICAgICBtX2dyYXBoLm1fYmxvY2tzLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgLy8gVGhlIGZhY3QgdGhhdCBpbmxpbmluZyBmYWlsZWQgbWVhbnMgd2UgbmVlZCBh
IHNsb3cgcGF0aC4KKyAgICAgICAgICAgIGNvdWxkVGFrZVNsb3dQYXRoID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBKU0NlbGwqIHRoaW5n
VG9DYXNlT247CisgICAgICAgIGlmIChhbGxBcmVEaXJlY3RDYWxscykKKyAgICAgICAgICAgIHRo
aW5nVG9DYXNlT24gPSBjYWxsTGlua1N0YXR1c1tpXS5jYWxsZWUoKS5ub25FeGVjdXRhYmxlQ2Fs
bGVlKCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKGFsbEFyZUNsb3N1cmVD
YWxscyk7CisgICAgICAgICAgICB0aGluZ1RvQ2FzZU9uID0gY2FsbExpbmtTdGF0dXNbaV0uY2Fs
bGVlKCkuZXhlY3V0YWJsZSgpOworICAgICAgICB9CisgICAgICAgIGRhdGEuY2FzZXMuYXBwZW5k
KFN3aXRjaENhc2UobV9ncmFwaC5mcmVlemUodGhpbmdUb0Nhc2VPbiksIGJsb2NrLmdldCgpKSk7
CisgICAgICAgIG1fY3VycmVudEluZGV4ID0gbmV4dE9mZnNldDsKKyAgICAgICAgcHJvY2Vzc1Nl
dExvY2FsUXVldWUoKTsgLy8gVGhpcyBvbmx5IGNvbWVzIGludG8gcGxheSBmb3IgaW50cmluc2lj
cywgc2luY2Ugbm9ybWFsIGlubGluZWQgY29kZSB3aWxsIGxlYXZlIGFuIGVtcHR5IHF1ZXVlLgor
ICAgICAgICBhZGRUb0dyYXBoKEp1bXApOworICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ICAgIGRhdGFMb2coIk1hcmtpbmcgIiwgUmF3UG9pbnRlcihtX2N1cnJlbnRCbG9jayksICIgYXMg
bGlua2VkICh0YWlsIG9mIHBvbHkgaW5saW5lZSlcbiIpOworICAgICAgICBtX2N1cnJlbnRCbG9j
ay0+ZGlkTGluaygpOworICAgICAgICBsYW5kaW5nQmxvY2tzLmFwcGVuZChtX2N1cnJlbnRCbG9j
ayk7CisKKyAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBkYXRhTG9nKCJGaW5pc2hl
ZCBpbmxpbmluZyAiLCBjYWxsTGlua1N0YXR1c1tpXS5jYWxsZWUoKSwgIiBhdCAiLCBjdXJyZW50
Q29kZU9yaWdpbigpLCAiLlxuIik7CisgICAgfQorICAgIAorICAgIFJlZlB0cjxCYXNpY0Jsb2Nr
PiBzbG93UGF0aEJsb2NrID0gYWRvcHRSZWYoCisgICAgICAgIG5ldyBCYXNpY0Jsb2NrKFVJTlRf
TUFYLCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIFBOYU4pKTsKKyAgICBtX2N1cnJlbnRJ
bmRleCA9IG9sZE9mZnNldDsKKyAgICBkYXRhLmZhbGxUaHJvdWdoID0gQnJhbmNoVGFyZ2V0KHNs
b3dQYXRoQmxvY2suZ2V0KCkpOworICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soc2xvd1BhdGhCbG9j
ayk7CisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGRhdGFMb2coIk1hcmtpbmcgIiwgUmF3UG9p
bnRlcihzbG93UGF0aEJsb2NrLmdldCgpKSwgIiBhcyBsaW5rZWQgKHNsb3cgcGF0aCBibG9jaylc
biIpOworICAgIHNsb3dQYXRoQmxvY2stPmRpZExpbmsoKTsKKyAgICBwcmVwYXJlVG9QYXJzZUJs
b2NrKCk7CisgICAgbV9jdXJyZW50QmxvY2sgPSBzbG93UGF0aEJsb2NrLmdldCgpOworICAgIE5v
ZGUqIG15Q2FsbFRhcmdldE5vZGUgPSBnZXREaXJlY3QoY2FsbGVlUmVnKTsKKyAgICBpZiAoY291
bGRUYWtlU2xvd1BhdGgpIHsKKyAgICAgICAgYWRkQ2FsbCgKKyAgICAgICAgICAgIHJlc3VsdE9w
ZXJhbmQsIGNhbGxPcCwgT3BJbmZvKCksIG15Q2FsbFRhcmdldE5vZGUsIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLAorICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tCYWRDZWxsKTsKKyAgICAgICAg
YWRkVG9HcmFwaChQaGFudG9tLCBteUNhbGxUYXJnZXROb2RlKTsKKyAgICAgICAgZW1pdEFyZ3Vt
ZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBz
cGVjaWFsaXphdGlvbktpbmQpOworICAgICAgICAKKyAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rl
cihyZXN1bHRPcGVyYW5kKSwgYWRkVG9HcmFwaChCb3R0b21WYWx1ZSkpOworICAgIH0KKworICAg
IG1fY3VycmVudEluZGV4ID0gbmV4dE9mZnNldDsKKyAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgp
OworICAgIGFkZFRvR3JhcGgoSnVtcCk7CisgICAgbGFuZGluZ0Jsb2Nrcy5hcHBlbmQobV9jdXJy
ZW50QmxvY2spOworICAgIAorICAgIFJlZlB0cjxCYXNpY0Jsb2NrPiBjb250aW51YXRpb25CbG9j
ayA9IGFkb3B0UmVmKAorICAgICAgICBuZXcgQmFzaWNCbG9jayhVSU5UX01BWCwgbV9udW1Bcmd1
bWVudHMsIG1fbnVtTG9jYWxzLCBQTmFOKSk7CisgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhjb250
aW51YXRpb25CbG9jayk7CisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGRhdGFMb2coIkFkZGlu
ZyB1bmxpbmtlZCBibG9jayAiLCBSYXdQb2ludGVyKGNvbnRpbnVhdGlvbkJsb2NrLmdldCgpKSwg
IiAoY29udGludWF0aW9uKVxuIik7CisgICAgbV9pbmxpbmVTdGFja1RvcC0+bV91bmxpbmtlZEJs
b2Nrcy5hcHBlbmQoVW5saW5rZWRCbG9jayhjb250aW51YXRpb25CbG9jay5nZXQoKSkpOworICAg
IHByZXBhcmVUb1BhcnNlQmxvY2soKTsKKyAgICBtX2N1cnJlbnRCbG9jayA9IGNvbnRpbnVhdGlv
bkJsb2NrLmdldCgpOworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IGxhbmRpbmdCbG9ja3Mu
c2l6ZSgpOyBpLS07KQorICAgICAgICBsYW5kaW5nQmxvY2tzW2ldLT5sYXN0KCktPnRhcmdldEJs
b2NrKCkgPSBjb250aW51YXRpb25CbG9jay5nZXQoKTsKICAgICAKLSAgICAvLyBBdCB0aGlzIHBv
aW50IHdlIHJldHVybiBhbmQgY29udGludWUgdG8gZ2VuZXJhdGUgY29kZSBmb3IgdGhlIGNhbGxl
ciwgYnV0Ci0gICAgLy8gaW4gdGhlIG5ldyBiYXNpYyBibG9jay4KKyAgICBtX2N1cnJlbnRJbmRl
eCA9IG9sZE9mZnNldDsKKyAgICAKKyAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBkYXRhTG9n
KCJEb25lIGlubGluaW5nIChoYXJkKS5cbiIpOworICAgICAgICBkYXRhTG9nKCJTdGFjazogIiwg
Y3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CisgICAgfQogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC0xNjQ1LDcgKzE5MTYsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFy
cmF5Q29uCiAKIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5j
dGlvbigKICAgICBpbnQgcmVzdWx0T3BlcmFuZCwgSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24s
IGludCByZWdpc3Rlck9mZnNldCwKLSAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkK
KyAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCkKIHsKICAgICAvLyBJZiB3ZSBldmVyIGZpbmQgdGhhdCB3ZSBoYXZlIGEgbG90IG9m
IGludGVybmFsIGZ1bmN0aW9ucyB0aGF0IHdlIHNwZWNpYWxpemUgZm9yLAogICAgIC8vIHRoZW4g
d2Ugc2hvdWxkIHByb2JhYmx5IGhhdmUgc29tZSBzb3J0IG9mIGhhc2h0YWJsZSBkaXNwYXRjaCwg
b3IgbWF5YmUgZXZlbgpAQCAtMTY1NCw4ICsxOTI1LDYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlQ29uc3RhbnRJbnRlcgogICAgIC8vIHdlIGtub3cgYWJvdXQgaXMgc21hbGwgZW5vdWdo
LCB0aGF0IGhhdmluZyBqdXN0IGEgbGluZWFyIGNhc2NhZGUgb2YgaWYgc3RhdGVtZW50cwogICAg
IC8vIGlzIGdvb2QgZW5vdWdoLgogICAgIAotICAgIFVOVVNFRF9QQVJBTShwcmVkaWN0aW9uKTsg
Ly8gUmVtb3ZlIHRoaXMgb25jZSB3ZSBkbyBtb3JlIHRoaW5ncy4KLSAgICAKICAgICBpZiAoZnVu
Y3Rpb24tPmNsYXNzSW5mbygpID09IEFycmF5Q29uc3RydWN0b3I6OmluZm8oKSkgewogICAgICAg
ICBpZiAoZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgpICE9IG1faW5saW5lU3RhY2tUb3AtPm1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIw
MjAsNiArMjI4OSwxMiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogCiB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpwcmVwYXJlVG9QYXJzZUJsb2NrKCkKIHsKKyAgICBjbGVhckNh
Y2hlcygpOworICAgIEFTU0VSVChtX3NldExvY2FsUXVldWUuaXNFbXB0eSgpKTsKK30KKwordm9p
ZCBCeXRlQ29kZVBhcnNlcjo6Y2xlYXJDYWNoZXMoKQorewogICAgIG1fY29uc3RhbnRzLnJlc2l6
ZSgwKTsKIH0KIApAQCAtMjA1OSw5ICsyMzM0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZAogICAgIH0KIAogICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NldExvY2FsUXVldWUuc2l6ZSgpOyArK2kpCi0gICAg
ICAgICAgICBtX3NldExvY2FsUXVldWVbaV0uZXhlY3V0ZSh0aGlzKTsKLSAgICAgICAgbV9zZXRM
b2NhbFF1ZXVlLnJlc2l6ZSgwKTsKKyAgICAgICAgcHJvY2Vzc1NldExvY2FsUXVldWUoKTsKICAg
ICAgICAgCiAgICAgICAgIC8vIERvbid0IGV4dGVuZCBvdmVyIGp1bXAgZGVzdGluYXRpb25zLgog
ICAgICAgICBpZiAobV9jdXJyZW50SW5kZXggPT0gbGltaXQpIHsKQEAgLTIyMDUsMTMgKzI0Nzgs
MTMgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAg
ICAgSlNDZWxsKiBjYWNoZWRGdW5jdGlvbiA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LmpzQ2Vs
bC5nZXQoKTsKICAgICAgICAgICAgIGlmICghY2FjaGVkRnVuY3Rpb24gCiAgICAgICAgICAgICAg
ICAgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5jb3VsZFRha2VTbG93Q2Fz
ZShtX2N1cnJlbnRJbmRleCkKLSAgICAgICAgICAgICAgICB8fCBtX2lubGluZVN0YWNrVG9wLT5t
X2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRGdW5jdGlvbikpIHsK
KyAgICAgICAgICAgICAgICB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4
aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDZWxsKSkgewogICAgICAgICAgICAgICAgIHNldChW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGdldChWaXJ0
dWFsUmVnaXN0ZXIoSlNTdGFjazo6Q2FsbGVlKSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemUoY2FjaGVk
RnVuY3Rpb24pOwogICAgICAgICAgICAgICAgIEFTU0VSVChjYWNoZWRGdW5jdGlvbi0+aW5oZXJp
dHMoSlNGdW5jdGlvbjo6aW5mbygpKSk7CiAgICAgICAgICAgICAgICAgTm9kZSogYWN0dWFsQ2Fs
bGVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihKU1N0YWNrOjpDYWxsZWUpKTsKLSAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKENoZWNrRnVuY3Rpb24sIE9wSW5mbyhmcm96ZW4pLCBhY3R1YWxDYWxs
ZWUpOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tDZWxsLCBPcEluZm8oZnJvemVu
KSwgYWN0dWFsQ2FsbGVlKTsKICAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9w
SW5mbyhmcm96ZW4pKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9nZXRfY2FsbGVlKTsKQEAgLTI4OTMsNyArMzE2Niw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIC8vIGFscmVhZHkgZ25hcmx5IGVub3Vn
aCBhcyBpdCBpcy4KICAgICAgICAgICAgIEFTU0VSVChwb2ludGVySXNGdW5jdGlvbihjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5zcGVjaWFsUG9pbnRlcikpOwogICAgICAgICAgICAgYWRkVG9HcmFw
aCgKLSAgICAgICAgICAgICAgICBDaGVja0Z1bmN0aW9uLAorICAgICAgICAgICAgICAgIENoZWNr
Q2VsbCwKICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5mcmVlemUoc3RhdGljX2Nhc3Q8
SlNDZWxsKj4oYWN0dWFsUG9pbnRlckZvcigKICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVT
dGFja1RvcC0+bV9jb2RlQmxvY2ssIGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnNwZWNpYWxQb2lu
dGVyKSkpKSwKICAgICAgICAgICAgICAgICBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQpKSk7CkBAIC0zMzE3LDE1ICszNTkwLDE5IEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OmxpbmtCbG9jayhCYXNpY0Jsb2MKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIAotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBibG9jay0+aXNMaW5rZWQgPSB0cnVlOwot
I2VuZGlmCisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGRhdGFMb2coIk1hcmtpbmcgIiwgUmF3
UG9pbnRlcihibG9jayksICIgYXMgbGlua2VkIChhY3R1YWxseSBkaWQgbGlua2luZylcbiIpOwor
ICAgIGJsb2NrLT5kaWRMaW5rKCk7CiB9CiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmxpbmtCbG9j
a3MoVmVjdG9yPFVubGlua2VkQmxvY2s+JiB1bmxpbmtlZEJsb2NrcywgVmVjdG9yPEJhc2ljQmxv
Y2sqPiYgcG9zc2libGVUYXJnZXRzKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdW5s
aW5rZWRCbG9ja3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICBkYXRhTG9nKCJBdHRlbXB0aW5nIHRvIGxpbmsgIiwgUmF3UG9pbnRlcih1bmxpbmtlZEJs
b2Nrc1tpXS5tX2Jsb2NrKSwgIlxuIik7CiAgICAgICAgIGlmICh1bmxpbmtlZEJsb2Nrc1tpXS5t
X25lZWRzTm9ybWFsTGlua2luZykgeworICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICAgICAgZGF0YUxvZygiICAgIERvZXMgbmVlZCBub3JtYWwgbGlua2luZy5cbiIpOwogICAg
ICAgICAgICAgbGlua0Jsb2NrKHVubGlua2VkQmxvY2tzW2ldLm1fYmxvY2ssIHBvc3NpYmxlVGFy
Z2V0cyk7CiAgICAgICAgICAgICB1bmxpbmtlZEJsb2Nrc1tpXS5tX25lZWRzTm9ybWFsTGlua2lu
ZyA9IGZhbHNlOwogICAgICAgICB9CkBAIC0zNDkyLDcgKzM3NjksNyBAQCBCeXRlQ29kZVBhcnNl
cjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lCiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
Q29kZUJsb2NrKCkKIHsKLSAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CisgICAgY2xlYXJDYWNo
ZXMoKTsKICAgICAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1faW5saW5lU3RhY2tUb3At
Pm1fY29kZUJsb2NrOwogICAgIApAQCAtMzU1OCw3ICszODM1LDEyIEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQ29kZUJsb2NrKCkKICAgICAgICAgICAgICAgICAgICAgLy8gMikgSWYgdGhl
IGJ5dGVjb2RlQmVnaW4gaXMgZXF1YWwgdG8gdGhlIGN1cnJlbnRJbmRleCwgdGhlbiB3ZSBmYWls
ZWQgdG8gZG8KICAgICAgICAgICAgICAgICAgICAgLy8gICAgYSBwZWVwaG9sZSBjb2FsZXNjaW5n
IG9mIHRoaXMgYmxvY2sgaW4gdGhlIGlmIHN0YXRlbWVudCBhYm92ZS4gU28sIHdlJ3JlCiAgICAg
ICAgICAgICAgICAgICAgIC8vICAgIGdlbmVyYXRpbmcgc3Vib3B0aW1hbCBjb2RlIGFuZCBsZWF2
aW5nIG1vcmUgd29yayBmb3IgdGhlIENGRyBzaW1wbGlmaWVyLgotICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQobV9pbmxpbmVTdGFja1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5pc0VtcHR5KCkgfHwg
bV9pbmxpbmVTdGFja1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9ibG9jay0+Ynl0ZWNv
ZGVCZWdpbiA8IG1fY3VycmVudEluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2lu
bGluZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgbGFzdEJlZ2luID0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX2Jsb2NrLT5i
eXRlY29kZUJlZ2luOworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCgKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0QmVnaW4sIGxhc3RCZWdpbiA9PSBVSU5UX01B
WCB8fCBsYXN0QmVnaW4gPCBtX2N1cnJlbnRJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5h
cHBlbmQoVW5saW5rZWRCbG9jayhibG9jay5nZXQoKSkpOwogICAgICAgICAgICAgICAgICAgICBt
X2lubGluZVN0YWNrVG9wLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuYXBwZW5kKGJsb2NrLmdldCgp
KTsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGZpcnN0IGJsb2NrIGlzIGRlZmluaXRlbHkg
YW4gT1NSIHRhcmdldC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0
aHJlYWRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTAsOCArOTAsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+Y2hpbGRyZW4uc2V0Q2hpbGQxKEVkZ2UoKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKLSAgICAgICAgICAgICAgICAgICAgaWYg
KCFub2RlLT5jaGlsZDEoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5jaGlsZDEo
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5v
ZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS0+b3AoKSkg
ewogICAgICAgICAgICAgICAgICAgICBjYXNlIFBoaToKICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBTZXRBcmd1bWVudDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDYgKzE0NCw4IEBAIHZvaWQgY2xv
YmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIEZpYXRJbnQ1MjoKICAg
ICBjYXNlIE1ha2VSb3BlOgogICAgIGNhc2UgVmFsdWVUb0ludDMyOgorICAgIGNhc2UgR2V0RXhl
Y3V0YWJsZToKKyAgICBjYXNlIEJvdHRvbVZhbHVlOgogICAgICAgICBkZWYoUHVyZVZhbHVlKG5v
ZGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKQEAgLTIzOSwxMiArMjQxLDggQEAgdm9p
ZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICBkZWYoUHVyZVZh
bHVlKG5vZGUsIG5vZGUtPmFyaXRoTW9kZSgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICAgICAg
Ci0gICAgY2FzZSBDaGVja0Z1bmN0aW9uOgotICAgICAgICBkZWYoUHVyZVZhbHVlKENoZWNrRnVu
Y3Rpb24sIEFkamFjZW5jeUxpc3QoQWRqYWNlbmN5TGlzdDo6Rml4ZWQsIG5vZGUtPmNoaWxkMSgp
KSwgbm9kZS0+ZnVuY3Rpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgIGNh
c2UgQ2hlY2tFeGVjdXRhYmxlOgotICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUsIG5vZGUtPmV4
ZWN1dGFibGUoKSkpOworICAgIGNhc2UgQ2hlY2tDZWxsOgorICAgICAgICBkZWYoUHVyZVZhbHVl
KENoZWNrQ2VsbCwgQWRqYWNlbmN5TGlzdChBZGphY2VuY3lMaXN0OjpGaXhlZCwgbm9kZS0+Y2hp
bGQxKCkpLCBub2RlLT5jZWxsT3BlcmFuZCgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICAgICAg
CiAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgpAQCAtMjYzLDYgKzI2MSw3IEBAIHZv
aWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFN3aXRjaDoK
ICAgICBjYXNlIFRocm93OgogICAgIGNhc2UgRm9yY2VPU1JFeGl0OgorICAgIGNhc2UgQ2hlY2tC
YWRDZWxsOgogICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgY2Fz
ZSBDaGVja1RpZXJVcEluTG9vcDoKQEAgLTM1OCw2ICszNTcsOCBAQCB2b2lkIGNsb2JiZXJpemUo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBBcnJheVBvcDoKICAgICBjYXNlIENh
bGw6CiAgICAgY2FzZSBDb25zdHJ1Y3Q6CisgICAgY2FzZSBQcm9maWxlZENhbGw6CisgICAgY2Fz
ZSBQcm9maWxlZENvbnN0cnVjdDoKICAgICBjYXNlIE5hdGl2ZUNhbGw6CiAgICAgY2FzZSBOYXRp
dmVDb25zdHJ1Y3Q6CiAgICAgY2FzZSBUb1ByaW1pdGl2ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb21tb24uaAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsMTMgQEAg
ZW51bSBSZWZOb2RlTW9kZSB7CiAgICAgRG9udFJlZk5vZGUKIH07CiAKK2VudW0gU3dpdGNoS2lu
ZCB7CisgICAgU3dpdGNoSW1tLAorICAgIFN3aXRjaENoYXIsCisgICAgU3dpdGNoU3RyaW5nLAor
ICAgIFN3aXRjaENlbGwKK307CisKIGlubGluZSBib29sIHZlcmJvc2VDb21waWxhdGlvbkVuYWJs
ZWQoQ29tcGlsYXRpb25Nb2RlIG1vZGUgPSBERkdNb2RlKQogewogICAgIHJldHVybiBPcHRpb25z
Ojp2ZXJib3NlQ29tcGlsYXRpb24oKSB8fCBPcHRpb25zOjpkdW1wR3JhcGhBdEVhY2hQaGFzZSgp
IHx8IChpc0ZUTChtb2RlKSAmJiBPcHRpb25zOjp2ZXJib3NlRlRMQ29tcGlsYXRpb24oKSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw4
ICsxNDIsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOiB7Ci0g
ICAgICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUo
KSAhPSBub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpKQorICAgICAgICAgICAgY2FzZSBDaGVja0Nl
bGw6IHsKKyAgICAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KS52YWx1ZSgpICE9IG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkpCiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsK
ICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsKQEAgLTM4NCw2ICszODQsMTkgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIFByb2ZpbGVkQ2Fs
bDoKKyAgICAgICAgICAgIGNhc2UgUHJvZmlsZWRDb25zdHJ1Y3Q6IHsKKyAgICAgICAgICAgICAg
ICBpZiAoIW1fc3RhdGUuZm9yTm9kZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKS5tX3Zh
bHVlKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICAvLyBJZiB3ZSB3ZXJlIGFibGUgdG8gcHJvdmUgdGhhdCB0aGUgY2FsbGVlIGlz
IGEgY29uc3RhbnQgdGhlbiB0aGUgbm9ybWFsIGNhbGwKKyAgICAgICAgICAgICAgICAvLyBpbmxp
bmUgY2FjaGUgd2lsbCByZWNvcmQgdGhpcyBjYWxsZWUuIFRoaXMgbWVhbnMgdGhhdCB0aGVyZSBp
cyBubyBuZWVkIHRvIGRvIGFueQorICAgICAgICAgICAgICAgIC8vIGFkZGl0aW9uYWwgcHJvZmls
aW5nLgorICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wKG5vZGUtPm9wKCkgPT0gUHJvZmlsZWRD
YWxsID8gQ2FsbCA6IENvbnN0cnVjdCk7CisgICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDcg
QEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0QnlJ
ZEZsdXNoOgogICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJl
OgotICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOgorICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAg
ICBjYXNlIEdldEJ1dHRlcmZseToKICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgY2FzZSBHZXRT
Y29wZToKQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBQdXRHbG9iYWxWYXI6CiAgICAgY2FzZSBWYXJpYWJsZVdhdGNocG9p
bnQ6CiAgICAgY2FzZSBWYXJJbmplY3Rpb25XYXRjaHBvaW50OgotICAgIGNhc2UgQ2hlY2tGdW5j
dGlvbjoKKyAgICBjYXNlIENoZWNrQ2VsbDoKICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0
Y2hwb2ludDoKICAgICBjYXNlIFJlZ0V4cEV4ZWM6CiAgICAgY2FzZSBSZWdFeHBUZXN0OgpAQCAt
MTE5LDYgKzExOSw4IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAg
ICBjYXNlIENvbnN0cnVjdDoKICAgICBjYXNlIE5hdGl2ZUNhbGw6CiAgICAgY2FzZSBOYXRpdmVD
b25zdHJ1Y3Q6CisgICAgY2FzZSBQcm9maWxlZENhbGw6CisgICAgY2FzZSBQcm9maWxlZENvbnN0
cnVjdDoKICAgICBjYXNlIEJyZWFrcG9pbnQ6CiAgICAgY2FzZSBQcm9maWxlV2lsbENhbGw6CiAg
ICAgY2FzZSBQcm9maWxlRGlkQ2FsbDoKQEAgLTE5NSw2ICsxOTcsOCBAQCBib29sIGRvZXNHQyhH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXREaXJlY3RQbmFtZToKICAgICBj
YXNlIEZpYXRJbnQ1MjoKICAgICBjYXNlIEJvb2xlYW5Ub051bWJlcjoKKyAgICBjYXNlIENoZWNr
QmFkQ2VsbDoKKyAgICBjYXNlIEJvdHRvbVZhbHVlOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RyaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEcml2ZXIuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RyaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDkgQEAgc3Rh
dGljIENvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGVJbXBsKAogICAgICAgICB2bS5nZXRDVElTdHVi
KHZpcnR1YWxDb25zdHJ1Y3RUaGF0UHJlc2VydmVzUmVnc1RodW5rR2VuZXJhdG9yKTsKICAgICB9
CiAgICAgCisgICAgaWYgKENhbGxFZGdlTG9nOjppc0VuYWJsZWQoKSkKKyAgICAgICAgdm0uZW5z
dXJlQ2FsbEVkZ2VMb2coKS5wcm9jZXNzTG9nKCk7CisgICAgCiAgICAgUmVmUHRyPFBsYW4+IHBs
YW4gPSBhZG9wdFJlZigKICAgICAgICAgbmV3IFBsYW4oY29kZUJsb2NrLCBwcm9maWxlZERGR0Nv
ZGVCbG9jaywgbW9kZSwgb3NyRW50cnlCeXRlY29kZUluZGV4LCBtdXN0SGFuZGxlVmFsdWVzKSk7
CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczNiw2ICs3MzYsMTIgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRl
U3RyaW5nKCkpCiAgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nVXNlPihub2RlLT5j
aGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFN3aXRj
aENlbGw6CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVDZWxsKCkpCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgICAgIC8vIGVsc2UgaXQncyBmaW5lIGZvciB0aGlzIHRvIGhh
dmUgVW50eXBlZFVzZTsgd2Ugd2lsbCBoYW5kbGUgdGhpcyBieSBqdXN0IG1ha2luZworICAgICAg
ICAgICAgICAgIC8vIG5vbi1jZWxscyB0YWtlIHRoZSBkZWZhdWx0IGNhc2UuCisgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQpAQCAtODk3LDEzICs5MDMsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAKLSAgICAgICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6IHsKKyAgICAgICAgY2FzZSBH
ZXRFeGVjdXRhYmxlOiB7CiAgICAgICAgICAgICBmaXhFZGdlPEZ1bmN0aW9uVXNlPihub2RlLT5j
aGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCiAg
ICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6Ci0gICAgICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoK
KyAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgICAgIGNhc2UgQ2hlY2tIYXNJbnN0YW5jZToK
ICAgICAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgICAgICBjYXNlIEdldEJ1dHRlcmZseTogewpA
QCAtMTEyMCw2ICsxMTI2LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBBbGxvY2F0aW9uUHJv
ZmlsZVdhdGNocG9pbnQ6CiAgICAgICAgIGNhc2UgQ2FsbDoKICAgICAgICAgY2FzZSBDb25zdHJ1
Y3Q6CisgICAgICAgIGNhc2UgUHJvZmlsZWRDYWxsOgorICAgICAgICBjYXNlIFByb2ZpbGVkQ29u
c3RydWN0OgogICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6CiAgICAgICAgIGNhc2UgTmF0aXZlQ29u
c3RydWN0OgogICAgICAgICBjYXNlIE5ld09iamVjdDoKQEAgLTExNDksNiArMTE1Nyw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgVGhyb3dSZWZlcmVuY2VFcnJvcjoKICAgICAgICAgY2FzZSBD
b3VudEV4ZWN1dGlvbjoKICAgICAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6CisgICAgICAgIGNhc2Ug
Q2hlY2tCYWRDZWxsOgogICAgICAgICBjYXNlIENoZWNrV2F0Y2hkb2dUaW1lcjoKICAgICAgICAg
Y2FzZSBVbnJlYWNoYWJsZToKICAgICAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKQEAg
LTExNTksNiArMTE2OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVHlwZWRBcnJheVdhdGNo
cG9pbnQ6CiAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAgICAgY2FzZSBab21iaWVIaW50Ogor
ICAgICAgICBjYXNlIEJvdHRvbVZhbHVlOgogICAgICAgICAgICAgYnJlYWs7CiAjZWxzZQogICAg
ICAgICBkZWZhdWx0OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJ
KHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjIsMjQgKzIyMiwyMyBAQCB2b2lkIEdyYXBoOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQsIGNvbnN0CiAgICAgICAgIG91dC5wcmludChjb21tYSwgaW5Db250
ZXh0KCpub2RlLT5zdHJ1Y3R1cmUoKSwgY29udGV4dCkpOwogICAgIGlmIChub2RlLT5oYXNUcmFu
c2l0aW9uKCkpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgcG9pbnRlckR1bXBJbkNvbnRleHQo
bm9kZS0+dHJhbnNpdGlvbigpLCBjb250ZXh0KSk7Ci0gICAgaWYgKG5vZGUtPmhhc0Z1bmN0aW9u
KCkpIHsKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiZnVuY3Rpb24oIiwgcG9pbnRlckR1bXAo
bm9kZS0+ZnVuY3Rpb24oKSksICIsICIpOwotICAgICAgICBpZiAobm9kZS0+ZnVuY3Rpb24oKS0+
dmFsdWUoKS5pc0NlbGwoKQotICAgICAgICAgICAgJiYgbm9kZS0+ZnVuY3Rpb24oKS0+dmFsdWUo
KS5hc0NlbGwoKS0+aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkgewotICAgICAgICAgICAg
SlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG5vZGUtPmZ1bmN0aW9u
KCktPnZhbHVlKCkuYXNDZWxsKCkpOwotICAgICAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RG
dW5jdGlvbigpKQotICAgICAgICAgICAgICAgIG91dC5wcmludCgiPGhvc3QgZnVuY3Rpb24+Iik7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgb3V0LnByaW50KEZ1bmN0aW9uRXhl
Y3V0YWJsZUR1bXAoZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpKSk7Ci0gICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgb3V0LnByaW50KCI8bm90IEpTRnVuY3Rpb24+Iik7Ci0gICAgICAgIG91dC5w
cmludCgiKSIpOwotICAgIH0KLSAgICBpZiAobm9kZS0+aGFzRXhlY3V0YWJsZSgpKSB7Ci0gICAg
ICAgIGlmIChub2RlLT5leGVjdXRhYmxlKCktPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6
aW5mbygpKSkKLSAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgImV4ZWN1dGFibGUoIiwgRnVu
Y3Rpb25FeGVjdXRhYmxlRHVtcChqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4obm9kZS0+ZXhl
Y3V0YWJsZSgpKSksICIpIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG91dC5wcmludChj
b21tYSwgImV4ZWN1dGFibGUobm90IGZ1bmN0aW9uOiAiLCBSYXdQb2ludGVyKG5vZGUtPmV4ZWN1
dGFibGUoKSksICIpIik7CisgICAgaWYgKG5vZGUtPmhhc0NlbGxPcGVyYW5kKCkpIHsKKyAgICAg
ICAgaWYgKCFub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpIHx8ICFub2RlLT5jZWxsT3BlcmFu
ZCgpLT52YWx1ZSgpLmlzQ2VsbCgpKQorICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiaW52
YWxpZCBjZWxsIG9wZXJhbmQ6ICIsIG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgcG9pbnRlckR1bXAobm9k
ZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5hc0NlbGwoKSkpOworICAgICAgICAgICAgaWYgKG5v
ZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuaXNDZWxsKCkpIHsKKyAgICAgICAgICAgICAgICBD
YWxsVmFyaWFudCB2YXJpYW50KG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuYXNDZWxsKCkp
OworICAgICAgICAgICAgICAgIGlmIChFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IHZhcmlh
bnQuZXhlY3V0YWJsZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChleGVjdXRhYmxlLT5p
c0hvc3RGdW5jdGlvbigpKQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KGNvbW1h
LCAiPGhvc3QgZnVuY3Rpb24+Iik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKEZ1bmN0
aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0ganNEeW5hbWljQ2FzdDxGdW5jdGlv
bkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dC5w
cmludChjb21tYSwgRnVuY3Rpb25FeGVjdXRhYmxlRHVtcChmdW5jdGlvbkV4ZWN1dGFibGUpKTsK
KyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnBy
aW50KGNvbW1hLCAiPG5vbi1mdW5jdGlvbiBleGVjdXRhYmxlPiIpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KICAgICBpZiAobm9kZS0+aGFzRnVu
Y3Rpb25EZWNsSW5kZXgoKSkgewogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUgPSBtX2NvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKG5vZGUtPmZ1bmN0aW9uRGVjbEluZGV4KCkp
OwpAQCAtOTg1LDEwICs5ODQsNiBAQCB2b2lkIEdyYXBoOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNp
dG9yJiB2CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAg
ICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6Ci0gICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRV
bmJhcnJpZXJlZFJlYWRPbmx5UG9pbnRlcihub2RlLT5leGVjdXRhYmxlKCkpOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBDaGVja1N0
cnVjdHVyZToKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBub2RlLT5zdHJ1Y3R1
cmVTZXQoKS5zaXplKCk7IGktLTspCiAgICAgICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5k
VW5iYXJyaWVyZWRSZWFkT25seVBvaW50ZXIobm9kZS0+c3RydWN0dXJlU2V0KClbaV0pOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlz
aW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6
bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgICAgICAgICAgdGFibGUuY3RpT2Zmc2V0c1tqXSA9
IHRhYmxlLmN0aURlZmF1bHQ7CiAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IGRhdGEuY2FzZXMu
c2l6ZSgpOyBqLS07KSB7CiAgICAgICAgICAgICBTd2l0Y2hDYXNlJiBteUNhc2UgPSBkYXRhLmNh
c2VzW2pdOwotICAgICAgICAgICAgdGFibGUuY3RpT2Zmc2V0c1tteUNhc2UudmFsdWUuc3dpdGNo
TG9va3VwVmFsdWUoKSAtIHRhYmxlLm1pbl0gPQorICAgICAgICAgICAgdGFibGUuY3RpT2Zmc2V0
c1tteUNhc2UudmFsdWUuc3dpdGNoTG9va3VwVmFsdWUoZGF0YS5raW5kKSAtIHRhYmxlLm1pbl0g
PQogICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX2Jsb2NrSGVhZHNbbXlD
YXNlLnRhcmdldC5ibG9jay0+aW5kZXhdKTsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCShyZXZpc2lvbiAxNzI4
NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMywzNiBAQCBUcmlTdGF0ZSBMYXp5SlNWYWx1ZTo6c3Ry
aWN0RXF1YWwoY29uc3QgCiAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CiB9CiAKK3VpbnRwdHJf
dCBMYXp5SlNWYWx1ZTo6c3dpdGNoTG9va3VwVmFsdWUoU3dpdGNoS2luZCBraW5kKSBjb25zdAor
eworICAgIC8vIE5CLiBOb3QgZXZlcnkga2luZCBvZiBKU1ZhbHVlIHdpbGwgYmUgYWJsZSB0byBn
aXZlIHlvdSBhIHN3aXRjaCBsb29rdXAKKyAgICAvLyB2YWx1ZSwgYW5kIHRoaXMgbWV0aG9kIHdp
bGwgYXNzZXJ0LCBvciBkbyBiYWQgdGhpbmdzLCBpZiB5b3UgdXNlIGl0CisgICAgLy8gZm9yIGEg
a2luZCBvZiB2YWx1ZSB0aGF0IGNhbid0LgorICAgIHN3aXRjaCAobV9raW5kKSB7CisgICAgY2Fz
ZSBLbm93blZhbHVlOgorICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgY2FzZSBTd2l0
Y2hJbW06CisgICAgICAgICAgICByZXR1cm4gdmFsdWUoKS0+dmFsdWUoKS5hc0ludDMyKCk7Cisg
ICAgICAgIGNhc2UgU3dpdGNoQ2VsbDoKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
dWludHB0cl90Pih2YWx1ZSgpLT52YWx1ZSgpLmFzQ2VsbCgpKTsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgfQorICAgIGNhc2UgU2luZ2xlQ2hhcmFjdGVyU3RyaW5nOgorICAg
ICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgY2FzZSBTd2l0Y2hDaGFyOgorICAgICAgICAg
ICAgcmV0dXJuIGNoYXJhY3RlcigpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAg
ICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCiB2b2lkIExhenlKU1ZhbHVlOjpkdW1wSW5D
b250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAogewog
ICAgIHN3aXRjaCAobV9raW5kKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0xhenlKU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdMYXp5SlNWYWx1ZS5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0xhenlKU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVk
ZSAiREZHRnJvemVuVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAK
QEAgLTk1LDIxICs5Niw3IEBAIHB1YmxpYzoKICAgICAKICAgICBUcmlTdGF0ZSBzdHJpY3RFcXVh
bChjb25zdCBMYXp5SlNWYWx1ZSYgb3RoZXIpIGNvbnN0OwogICAgIAotICAgIHVuc2lnbmVkIHN3
aXRjaExvb2t1cFZhbHVlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIC8vIE5CLiBOb3QgZXZlcnkg
a2luZCBvZiBKU1ZhbHVlIHdpbGwgYmUgYWJsZSB0byBnaXZlIHlvdSBhIHN3aXRjaCBsb29rdXAK
LSAgICAgICAgLy8gdmFsdWUsIGFuZCB0aGlzIG1ldGhvZCB3aWxsIGFzc2VydCwgb3IgZG8gYmFk
IHRoaW5ncywgaWYgeW91IHVzZSBpdAotICAgICAgICAvLyBmb3IgYSBraW5kIG9mIHZhbHVlIHRo
YXQgY2FuJ3QuCi0gICAgICAgIHN3aXRjaCAobV9raW5kKSB7Ci0gICAgICAgIGNhc2UgS25vd25W
YWx1ZToKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZSgpLT52YWx1ZSgpLmFzSW50MzIoKTsKLSAg
ICAgICAgY2FzZSBTaW5nbGVDaGFyYWN0ZXJTdHJpbmc6Ci0gICAgICAgICAgICByZXR1cm4gY2hh
cmFjdGVyKCk7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICB9Cisg
ICAgdWludHB0cl90IHN3aXRjaExvb2t1cFZhbHVlKFN3aXRjaEtpbmQga2luZCkgY29uc3Q7CiAg
ICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgdm9pZCBkdW1wSW5D
b250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzEx
Myw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBTd2kKICAgICBjYXNl
IFN3aXRjaFN0cmluZzoKICAgICAgICAgb3V0LnByaW50KCJTd2l0Y2hTdHJpbmciKTsKICAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgU3dpdGNoQ2VsbDoKKyAgICAgICAgb3V0LnByaW50KCJTd2l0
Y2hDZWxsIik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZp
c2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTU3LDEyICsxNTcsNiBAQCBzdHJ1Y3QgU3dpdGNoQ2FzZSB7CiAgICAg
QnJhbmNoVGFyZ2V0IHRhcmdldDsKIH07CiAKLWVudW0gU3dpdGNoS2luZCB7Ci0gICAgU3dpdGNo
SW1tLAotICAgIFN3aXRjaENoYXIsCi0gICAgU3dpdGNoU3RyaW5nCi19OwotCiBzdHJ1Y3QgU3dp
dGNoRGF0YSB7CiAgICAgLy8gSW5pdGlhbGl6ZXMgbW9zdCBmaWVsZHMgdG8gb2J2aW91c2x5IGlu
dmFsaWQgdmFsdWVzLiBBbnlvbmUKICAgICAvLyBjb25zdHJ1Y3RpbmcgdGhpcyBzaG91bGQgbWFr
ZSBzdXJlIHRvIGluaXRpYWxpemUgZXZlcnl0aGluZyB0aGV5CkBAIC0xODUsNiArMTc5LDcgQEAg
c3RydWN0IFN3aXRjaERhdGEgewogLy8gZGlzdGluZ3Vpc2hlcyBhbiBpbW1lZGlhdGUgdmFsdWUg
KHR5cGljYWxseSBhbiBpbmRleCBpbnRvIGEgQ29kZUJsb2NrIGRhdGEgc3RydWN0dXJlIC0gCiAv
LyBhIGNvbnN0YW50IGluZGV4LCBhcmd1bWVudCwgb3IgaWRlbnRpZmllcikgZnJvbSBhIE5vZGUq
Lgogc3RydWN0IE9wSW5mbyB7CisgICAgT3BJbmZvKCkgOiBtX3ZhbHVlKDApIHsgfQogICAgIGV4
cGxpY2l0IE9wSW5mbyhpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0
cl90Pih2YWx1ZSkpIHsgfQogICAgIGV4cGxpY2l0IE9wSW5mbyh1aW50MzJfdCB2YWx1ZSkgOiBt
X3ZhbHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KICNpZiBPUyhEQVJXSU4p
IHx8IFVTRShKU1ZBTFVFNjQpCkBAIC0xMDA5LDYgKzEwMDQsOCBAQCBzdHJ1Y3QgTm9kZSB7CiAg
ICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsU2FmZToKICAgICAgICAgY2FzZSBDYWxsOgog
ICAgICAgICBjYXNlIENvbnN0cnVjdDoKKyAgICAgICAgY2FzZSBQcm9maWxlZENhbGw6CisgICAg
ICAgIGNhc2UgUHJvZmlsZWRDb25zdHJ1Y3Q6CiAgICAgICAgIGNhc2UgTmF0aXZlQ2FsbDoKICAg
ICAgICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6CiAgICAgICAgIGNhc2UgR2V0QnlPZmZzZXQ6CkBA
IC0xMDQ0LDkgKzEwNDEsMTEgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBtX29wSW5mbzIgPSBw
cmVkaWN0aW9uOwogICAgIH0KICAgICAKLSAgICBib29sIGNhbkJlS25vd25GdW5jdGlvbigpCisg
ICAgYm9vbCBoYXNDZWxsT3BlcmFuZCgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsK
KyAgICAgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6CisgICAgICAgIGNhc2Ug
Q2hlY2tDZWxsOgogICAgICAgICBjYXNlIE5hdGl2ZUNvbnN0cnVjdDoKICAgICAgICAgY2FzZSBO
YXRpdmVDYWxsOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDU1LDU0ICsxMDU0LDE2
IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgaGFzS25vd25G
dW5jdGlvbigpCi0gICAgewotICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKLSAgICAgICAgY2FzZSBO
YXRpdmVDb25zdHJ1Y3Q6Ci0gICAgICAgIGNhc2UgTmF0aXZlQ2FsbDoKLSAgICAgICAgICAgIHJl
dHVybiAoYm9vbCltX29wSW5mbzsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBKU0Z1bmN0aW9uKiBrbm93bkZ1
bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjYW5CZUtub3duRnVuY3Rpb24oKSk7Ci0g
ICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNGdW5jdGlvbio+KG1fb3BJbmZvKTsKLSAgICB9
Ci0KLSAgICB2b2lkIGdpdmVLbm93bkZ1bmN0aW9uKEpTRnVuY3Rpb24qIGNhbGxEYXRhKSAKKyAg
ICBGcm96ZW5WYWx1ZSogY2VsbE9wZXJhbmQoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGNhbkJl
S25vd25GdW5jdGlvbigpKTsKLSAgICAgICAgbV9vcEluZm8gPSBiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihjYWxsRGF0YSk7Ci0gICAgfQotCi0gICAgYm9vbCBoYXNGdW5jdGlvbigpCi0gICAgewot
ICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKLSAgICAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOgotICAg
ICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDoKLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgRnJvemVuVmFsdWUqIGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChoYXNGdW5jdGlvbigpKTsKKyAgICAgICAgQVNTRVJUKGhhc0NlbGxPcGVyYW5k
KCkpOwogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxGcm96ZW5WYWx1ZSo+KG1fb3BJ
bmZvKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBoYXNFeGVjdXRhYmxlKCkKKyAgICB2b2lkIHNl
dENlbGxPcGVyYW5kKEZyb3plblZhbHVlKiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBv
cCgpID09IENoZWNrRXhlY3V0YWJsZTsKLSAgICB9Ci0gICAgCi0gICAgRXhlY3V0YWJsZUJhc2Uq
IGV4ZWN1dGFibGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGpzQ2FzdDxFeGVjdXRhYmxlQmFz
ZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4obV9vcEluZm8pKTsKKyAgICAgICAgQVNTRVJU
KGhhc0NlbGxPcGVyYW5kKCkpOworICAgICAgICBtX29wSW5mbyA9IGJpdHdpc2VfY2FzdDx1aW50
cHRyX3Q+KHZhbHVlKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNWYXJpYWJsZVdhdGNocG9p
bnRTZXQoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2
aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogICAgIG1hY3JvKFB1dEJ5SWRGbHVzaCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5v
ZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAogICAgIG1hY3JvKFB1dEJ5SWRE
aXJlY3QsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAogICAgIG1hY3Jv
KENoZWNrU3RydWN0dXJlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCi0gICAgbWFjcm8oQ2hlY2tFeGVj
dXRhYmxlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oR2V0RXhlY3V0YWJsZSwgTm9k
ZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUHV0U3RydWN0dXJlLCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgbWFjcm8oQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UsIE5vZGVNdXN0R2VuZXJhdGUgfCBO
b2RlUmVzdWx0U3RvcmFnZSkgXAogICAgIG1hY3JvKFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Us
IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0U3RvcmFnZSkgXApAQCAtMTg1LDcgKzE4NSw4
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhWYXJpYWJsZVdh
dGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhWYXJJbmplY3Rpb25XYXRj
aHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oRnVuY3Rpb25SZWVudHJ5V2F0
Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAotICAgIG1hY3JvKENoZWNrRnVuY3Rpb24sIE5v
ZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhDaGVja0NlbGwsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKKyAgICBtYWNybyhDaGVja0JhZENlbGwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBt
YWNybyhDaGVja0luQm91bmRzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgXApAQCAtMjE0LDYg
KzIxNSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBDYWxscy4g
Ki9cCiAgICAgbWFjcm8oQ2FsbCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5v
ZGVIYXNWYXJBcmdzIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKICAgICBtYWNybyhDb25zdHJ1Y3Qs
IE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncyB8IE5vZGVD
bG9iYmVyc1dvcmxkKSBcCisgICAgbWFjcm8oUHJvZmlsZWRDYWxsLCBOb2RlUmVzdWx0SlMgfCBO
b2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAor
ICAgIG1hY3JvKFByb2ZpbGVkQ29uc3RydWN0LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVy
YXRlIHwgTm9kZUhhc1ZhckFyZ3MgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAogICAgIG1hY3JvKE5h
dGl2ZUNhbGwsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJn
cyB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCiAgICAgbWFjcm8oTmF0aXZlQ29uc3RydWN0LCBOb2Rl
UmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MgfCBOb2RlQ2xvYmJl
cnNXb3JsZCkgXAogICAgIFwKQEAgLTI4Niw2ICsyODksMTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogICAgIC8qIGRpZmZlcmVudCBjb21waWxlci4gKi9cCiAgICAgbWFjcm8o
Rm9yY2VPU1JFeGl0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgXAorICAgIC8qIFZlbmRzIGEg
Ym90dG9tIEpTIHZhbHVlLiBJdCBpcyBpbnZhbGlkIHRvIGV2ZXIgZXhlY3V0ZSB0aGlzLiBVc2Vm
dWwgZm9yIGNhc2VzICovXAorICAgIC8qIHdoZXJlIHdlIGtub3cgdGhhdCB3ZSB3b3VsZCBoYXZl
IGV4aXRlZCBidXQgd2UnZCBsaWtlIHRvIHN0aWxsIHRyYWNrIHRoZSBjb250cm9sICovXAorICAg
IC8qIGZsb3cuICovXAorICAgIG1hY3JvKEJvdHRvbVZhbHVlLCBOb2RlUmVzdWx0SlMpIFwKKyAg
ICBcCiAgICAgLyogQ2hlY2tzIHRoZSB3YXRjaGRvZyB0aW1lci4gSWYgdGhlIHRpbWVyIGhhcyBm
aXJlZCwgd2UgT1NSIGV4aXQgdG8gdGhlICovIFwKICAgICAvKiBiYXNlbGluZSBKSVQgdG8gcmVk
byB0aGUgd2F0Y2hkb2cgdGltZXIgY2hlY2ssIGFuZCBzZXJ2aWNlIHRoZSB0aW1lci4gKi8gXAog
ICAgIG1hY3JvKENoZWNrV2F0Y2hkb2dUaW1lciwgTm9kZU11c3RHZW5lcmF0ZSkgXApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21D
YW5vbmljYWxpemF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05Miw4ICs5MiwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAg
ICAgICBub2RlLT5jaGlsZHJlbi5yZW1vdmVFZGdlKGktLSk7CiAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZHJlbi5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJl
bi5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0
b3IuZnJlZShub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg
ICBub2RlLT5jb252ZXJ0VG9DaGVjaygpOwogICAgICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNw
cAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFu
dG9tUmVtb3ZhbFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDYgKzEyNSw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTQyLDYgKzE0Myw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShu
b2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTE0OSw4
ICsxNTEsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgY2FzZSBIYXJkUGhhbnRvbTogewotICAgICAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBt
X2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODgsNiArMTg4LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXREaXJlY3RQbmFtZToK
ICAgICAgICAgY2FzZSBDYWxsOgogICAgICAgICBjYXNlIENvbnN0cnVjdDoKKyAgICAgICAgY2Fz
ZSBQcm9maWxlZENhbGw6CisgICAgICAgIGNhc2UgUHJvZmlsZWRDb25zdHJ1Y3Q6CiAgICAgICAg
IGNhc2UgTmF0aXZlQ2FsbDoKICAgICAgICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6CiAgICAgICAg
IGNhc2UgR2V0R2xvYmFsVmFyOgpAQCAtMTk2LDcgKzE5OCw4IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgR2V0R2V0
dGVyU2V0dGVyQnlPZmZzZXQ6IHsKKyAgICAgICAgY2FzZSBHZXRHZXR0ZXJTZXR0ZXJCeU9mZnNl
dDoKKyAgICAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9
IHNldFByZWRpY3Rpb24oU3BlY0NlbGxPdGhlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQpAQCAtNjQyLDggKzY0NSw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRm9yY2VPU1JF
eGl0OgogICAgICAgICBjYXNlIFNldEFyZ3VtZW50OgogICAgICAgICBjYXNlIENoZWNrU3RydWN0
dXJlOgotICAgICAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToKLSAgICAgICAgY2FzZSBDaGVja0Z1
bmN0aW9uOgorICAgICAgICBjYXNlIENoZWNrQ2VsbDoKKyAgICAgICAgY2FzZSBDaGVja0JhZENl
bGw6CiAgICAgICAgIGNhc2UgUHV0U3RydWN0dXJlOgogICAgICAgICBjYXNlIFRlYXJPZmZBY3Rp
dmF0aW9uOgogICAgICAgICBjYXNlIFRlYXJPZmZBcmd1bWVudHM6CkBAIC02NjUsNiArNjY4LDEw
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgWm9tYmllSGludDoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgCisgICAgICAgIC8vIFRoaXMgZ2V0cyBpZ25vcmVkIGJlY2F1c2UgaXQg
b25seSBwcmV0ZW5kcyB0byBwcm9kdWNlIGEgdmFsdWUuCisgICAgICAgIGNhc2UgQm90dG9tVmFs
dWU6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgICAgICAvLyBUaGlzIGdl
dHMgaWdub3JlZCBiZWNhdXNlIGl0IGFscmVhZHkgaGFzIGEgcHJlZGljdGlvbi4KICAgICAgICAg
Y2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDE3
Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3Ry
YWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgUHV0QnlJZEZsdXNoOgogICAgIGNhc2UgUHV0QnlJ
ZERpcmVjdDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgotICAgIGNhc2UgQ2hlY2tFeGVjdXRh
YmxlOgorICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNlIEdldEJ1dHRlcmZseToKICAg
ICBjYXNlIENoZWNrQXJyYXk6CiAgICAgY2FzZSBBcnJheWlmeToKQEAgLTE3NCw3ICsxNzQsOCBA
QCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBQdXRH
bG9iYWxWYXI6CiAgICAgY2FzZSBWYXJpYWJsZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBWYXJJbmpl
Y3Rpb25XYXRjaHBvaW50OgotICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKKyAgICBjYXNlIENoZWNr
Q2VsbDoKKyAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxl
V2F0Y2hwb2ludDoKICAgICBjYXNlIFJlZ0V4cEV4ZWM6CiAgICAgY2FzZSBSZWdFeHBUZXN0OgpA
QCAtMTg3LDYgKzE4OCw4IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYg
c3QKICAgICBjYXNlIENvbXBhcmVTdHJpY3RFcToKICAgICBjYXNlIENhbGw6CiAgICAgY2FzZSBD
b25zdHJ1Y3Q6CisgICAgY2FzZSBQcm9maWxlZENhbGw6CisgICAgY2FzZSBQcm9maWxlZENvbnN0
cnVjdDoKICAgICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5ld0FycmF5OgogICAgIGNhc2Ug
TmV3QXJyYXlXaXRoU2l6ZToKQEAgLTI3Myw2ICsyNzYsMTEgQEAgYm9vbCBzYWZlVG9FeGVjdXRl
KEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OgogICAgICAg
ICByZXR1cm4gZmFsc2U7IC8vIFRPRE86IGFkZCBhIGNoZWNrIGZvciBhbHJlYWR5IGNoZWNrZWQu
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNzY5CiAKKyAgICBj
YXNlIEJvdHRvbVZhbHVlOgorICAgICAgICAvLyBJZiBpbiBkb3VidCwgYXNzdW1lIHRoYXQgdGhp
cyBpc24ndCBzYWZlIHRvIGV4ZWN1dGUsIGp1c3QgYmVjYXVzZSB3ZSBoYXZlIG5vIHdheSBvZgor
ICAgICAgICAvLyBjb21waWxpbmcgdGhpcyBub2RlLgorICAgICAgICByZXR1cm4gZmFsc2U7CisK
ICAgICBjYXNlIEdldEJ5VmFsOgogICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToK
ICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxNzI4NTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02NDAsOSArNjQwLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZU1pc2NTdHJpY3RFcQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2Rl
KiBub2RlKQogewotICAgIGJvb2wgaXNDYWxsID0gbm9kZS0+b3AoKSA9PSBDYWxsOworICAgIGJv
b2wgaXNDYWxsID0gbm9kZS0+b3AoKSA9PSBDYWxsIHx8IG5vZGUtPm9wKCkgPT0gUHJvZmlsZWRD
YWxsOwogICAgIGlmICghaXNDYWxsKQotICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBDb25z
dHJ1Y3QpOworICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBDb25zdHJ1Y3QgfHwgbm9kZS0+
b3AoKSA9PSBQcm9maWxlZENvbnN0cnVjdCk7CiAKICAgICAvLyBGb3IgY29uc3RydWN0b3JzLCB0
aGUgdGhpcyBhcmd1bWVudCBpcyBub3QgcGFzc2VkIGJ1dCB3ZSBoYXZlIHRvIG1ha2Ugc3BhY2UK
ICAgICAvLyBmb3IgaXQuCkBAIC02ODksNiArNjg5LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRDYWxsKE5vZGUqIG5vZGUKIAogICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4obm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAKKyAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2pp
dC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7CisKKyAgICBpZiAobm9kZS0+b3AoKSA9
PSBQcm9maWxlZENhbGwgfHwgbm9kZS0+b3AoKSA9PSBQcm9maWxlZENvbnN0cnVjdCkgeworICAg
ICAgICBtX2ppdC52bSgpLmNhbGxFZGdlTG9nLT5lbWl0TG9nQ29kZSgKKyAgICAgICAgICAgIG1f
aml0LCBjYWxsTGlua0luZm8tPmNhbGxFZGdlUHJvZmlsZSwgY2FsbGVlLmpzVmFsdWVSZWdzKCkp
OworICAgIH0KKyAgICAKICAgICBzbG93UGF0aC5hcHBlbmQoYnJhbmNoTm90Q2VsbChjYWxsZWUu
anNWYWx1ZVJlZ3MoKSkpOwogICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hQdHJXaXRo
UGF0Y2goTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBjYWxsZWVQYXlsb2FkR1BSLCB0YXJnZXRU
b0NoZWNrKSk7CiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjYWxs
ZWVQYXlsb2FkR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9zY29wZSkpLCByZXN1
bHRQYXlsb2FkR1BSKTsKQEAgLTcxMyw3ICs3MjAsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpl
bWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgIG1faml0Lm1vdmUoY2FsbGVlUGF5bG9hZEdQUiwg
R1BSSW5mbzo6cmVnVDApOwogICAgICAgICBtX2ppdC5tb3ZlKGNhbGxlZVRhZ0dQUiwgR1BSSW5m
bzo6cmVnVDEpOwogICAgIH0KLSAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2ppdC5jb2RlQmxv
Y2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7CiAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihpbmZvKSwgR1BSSW5mbzo6cmVnVDIpOwogICAgIEpJVENvbXBpbGVyOjpD
YWxsIHNsb3dDYWxsID0gbV9qaXQubmVhckNhbGwoKTsKIApAQCAtNDE1Niw2ICs0MTYyLDggQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgY2FzZSBDYWxs
OgogICAgIGNhc2UgQ29uc3RydWN0OgorICAgIGNhc2UgUHJvZmlsZWRDYWxsOgorICAgIGNhc2Ug
UHJvZmlsZWRDb25zdHJ1Y3Q6CiAgICAgICAgIGVtaXRDYWxsKG5vZGUpOwogICAgICAgICBicmVh
azsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjYsMTAgKzYy
Niw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNaXNjU3RyaWN0RXEKIAogdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKIHsKLQotICAgIGJvb2wgaXNDYWxs
ID0gbm9kZS0+b3AoKSA9PSBDYWxsOworICAgIGJvb2wgaXNDYWxsID0gbm9kZS0+b3AoKSA9PSBD
YWxsIHx8IG5vZGUtPm9wKCkgPT0gUHJvZmlsZWRDYWxsOwogICAgIGlmICghaXNDYWxsKQotICAg
ICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPm9wKCkgPT0gQ29uc3Ry
dWN0KTsKKyAgICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5vcCgp
ID09IENvbnN0cnVjdCB8fCBub2RlLT5vcCgpID09IFByb2ZpbGVkQ29uc3RydWN0KTsKICAgICAK
ICAgICAvLyBGb3IgY29uc3RydWN0b3JzLCB0aGUgdGhpcyBhcmd1bWVudCBpcyBub3QgcGFzc2Vk
IGJ1dCB3ZSBoYXZlIHRvIG1ha2Ugc3BhY2UKICAgICAvLyBmb3IgaXQuCkBAIC02NzAsNiArNjY5
LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKIAogICAgIG1f
aml0LmVtaXRTdG9yZUNvZGVPcmlnaW4obm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAKKyAg
ICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRDYWxs
TGlua0luZm8oKTsKKyAgICAKKyAgICBpZiAobm9kZS0+b3AoKSA9PSBQcm9maWxlZENhbGwgfHwg
bm9kZS0+b3AoKSA9PSBQcm9maWxlZENvbnN0cnVjdCkgeworICAgICAgICBtX2ppdC52bSgpLT5j
YWxsRWRnZUxvZy0+ZW1pdExvZ0NvZGUoCisgICAgICAgICAgICBtX2ppdCwgY2FsbExpbmtJbmZv
LT5jYWxsRWRnZVByb2ZpbGUsIEpTVmFsdWVSZWdzKGNhbGxlZUdQUikpOworICAgIH0KKwogICAg
IHNsb3dQYXRoID0gbV9qaXQuYnJhbmNoUHRyV2l0aFBhdGNoKE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwgY2FsbGVlR1BSLCB0YXJnZXRUb0NoZWNrLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cigwKSk7CiAKICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNh
bGxlZUdQUiwgT0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rpb24sIG1fc2NvcGUpKSwgcmVzdWx0R1BS
KTsKQEAgLTY4Miw3ICs2ODgsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2Rl
KiBub2RlCiAgICAgc2xvd1BhdGgubGluaygmbV9qaXQpOwogICAgIAogICAgIG1faml0Lm1vdmUo
Y2FsbGVlR1BSLCBHUFJJbmZvOjpyZWdUMCk7IC8vIENhbGxlZSBuZWVkcyB0byBiZSBpbiByZWdU
MAotICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFk
ZENhbGxMaW5rSW5mbygpOwogICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIoY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6cmVnVDIpOyAvLyBMaW5rIGluZm8gbmVlZHMg
dG8gYmUgaW4gcmVnVDIKICAgICBKSVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9IG1faml0Lm5l
YXJDYWxsKCk7CiAgICAgCkBAIC0zNzY4LDE4ICszNzczLDIxIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUdldEFycmF5TGVuZ3RoKG5v
ZGUpOwogICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgY2FzZSBDaGVja0Z1bmN0aW9uOiB7
Ci0gICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZ1bmN0aW9uKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRGdW5jdGlvbiwgSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwoZnVuY3Rpb24uZ3ByKCkpLCBub2RlLT5jaGlsZDEoKSwgbV9qaXQuYnJh
bmNoV2Vha1B0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGZ1bmN0aW9uLmdwcigpLCBub2RlLT5m
dW5jdGlvbigpLT52YWx1ZSgpLmFzQ2VsbCgpKSk7CisgICAgY2FzZSBDaGVja0NlbGw6IHsKKyAg
ICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2VsbCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkQ2VsbCwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENl
bGwoY2VsbC5ncHIoKSksIG5vZGUtPmNoaWxkMSgpLCBtX2ppdC5icmFuY2hXZWFrUHRyKEpJVENv
bXBpbGVyOjpOb3RFcXVhbCwgY2VsbC5ncHIoKSwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUo
KS5hc0NlbGwoKSkpOwogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgICAgICAKLSAgICBjYXNlIENoZWNrRXhlY3V0YWJsZTogeworICAgIGNhc2UgR2V0
RXhlY3V0YWJsZTogewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmdW5jdGlvbih0aGlz
LCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIHNwZWN1bGF0ZUNlbGxUeXBlKG5vZGUtPmNoaWxk
MSgpLCBmdW5jdGlvbi5ncHIoKSwgU3BlY0Z1bmN0aW9uLCBKU0Z1bmN0aW9uVHlwZSk7Ci0gICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkRXhlY3V0YWJsZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwoZnVuY3Rpb24uZ3ByKCkpLCBub2RlLT5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoV2Vha1B0
cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdw
cigpLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIG5vZGUtPmV4ZWN1dGFibGUo
KSkpOwotICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzLCBSZXVzZSwgZnVuY3Rpb24pOworICAgICAgICBHUFJSZWcgZnVuY3Rpb25HUFIgPSBm
dW5jdGlvbi5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
KyAgICAgICAgc3BlY3VsYXRlQ2VsbFR5cGUobm9kZS0+Y2hpbGQxKCksIGZ1bmN0aW9uR1BSLCBT
cGVjRnVuY3Rpb24sIEpTRnVuY3Rpb25UeXBlKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRD
b21waWxlcjo6QWRkcmVzcyhmdW5jdGlvbkdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRh
YmxlKCkpLCByZXN1bHRHUFIpOworICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC00MjE5LDkgKzQyMjcsMTEgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgY2FzZSBDYWxs
OgogICAgIGNhc2UgQ29uc3RydWN0OgorICAgIGNhc2UgUHJvZmlsZWRDYWxsOgorICAgIGNhc2Ug
UHJvZmlsZWRDb25zdHJ1Y3Q6CiAgICAgICAgIGVtaXRDYWxsKG5vZGUpOwogICAgICAgICBicmVh
azsKLQorICAgICAgICAKICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246IHsKICAgICAgICAgREZH
X0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCAhbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGlu
ZUNhbGxGcmFtZSk7CiAgICAgICAgIApAQCAtNDk3MCw3ICs0OTgwLDkgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoK
ICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CiAgICAgY2FzZSBGaWF0SW50NTI6Ci0gICAgICAg
IERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiVW5leHBlY3RlZCBGVEwgbm9kZSIpOwor
ICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgorICAgIGNhc2UgQm90dG9tVmFsdWU6CisgICAgICAgIERG
R19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiVW5leHBlY3RlZCBub2RlIik7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzU0
LDYgKzUzNTQsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaChOb2RlKiBubwog
ICAgIGNhc2UgU3dpdGNoU3RyaW5nOiB7CiAgICAgICAgIGVtaXRTd2l0Y2hTdHJpbmcobm9kZSwg
ZGF0YSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FzZSBTd2l0Y2hDZWxsOiB7Cisg
ICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiQmFkIHN3aXRjaCBraW5kIik7
CisgICAgICAgIHJldHVybjsKICAgICB9IH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdp
c3RyYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MiwxMCArNjIsNiBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBDaGVja0V4ZWN1dGFibGU6Ci0gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJl
KG5vZGUtPmV4ZWN1dGFibGUoKS0+c3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNlIENoZWNrU3RydWN0
dXJlOgogICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZXMobm9kZS0+c3RydWN0
dXJlU2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBo
YXNlLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTMg
KzUwLDE3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VGVExKSVQoKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIGlmIChtX2dyYXBoLm1f
cHJvZmlsZWRCbG9jay0+bV9kaWRGYWlsRlRMQ29tcGlsYXRpb24pCisgICAgICAgIGlmIChtX2dy
YXBoLm1fcHJvZmlsZWRCbG9jay0+bV9kaWRGYWlsRlRMQ29tcGlsYXRpb24pIHsKKyAgICAgICAg
ICAgIHJlbW92ZUZUTFByb2ZpbGluZygpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CiAgICAgICAgIAogI2lmIEVOQUJMRShGVExfSklUKQogICAgICAgICBGVEw6OkNhcGFi
aWxpdHlMZXZlbCBsZXZlbCA9IEZUTDo6Y2FuQ29tcGlsZShtX2dyYXBoKTsKLSAgICAgICAgaWYg
KGxldmVsID09IEZUTDo6Q2Fubm90Q29tcGlsZSkKKyAgICAgICAgaWYgKGxldmVsID09IEZUTDo6
Q2Fubm90Q29tcGlsZSkgeworICAgICAgICAgICAgcmVtb3ZlRlRMUHJvZmlsaW5nKCk7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmICgh
T3B0aW9uczo6ZW5hYmxlT1NSRW50cnlUb0ZUTCgpKQogICAgICAgICAgICAgbGV2ZWwgPSBGVEw6
OkNhbkNvbXBpbGU7CkBAIC0xMTgsNiArMTIyLDMyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQogICAgIH0KKworcHJpdmF0ZToKKyAg
ICB2b2lkIHJlbW92ZUZUTFByb2ZpbGluZygpCisgICAgeworICAgICAgICBmb3IgKEJsb2NrSW5k
ZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKKyAg
ICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsK
KyAgICAgICAgICAgIGlmICghYmxvY2spCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4ID0gMDsgbm9kZUlu
ZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKKyAgICAgICAgICAgICAgICBOb2Rl
KiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7CisgICAgICAgICAgICAgICAgc3dpdGNoIChu
b2RlLT5vcCgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBQcm9maWxlZENhbGw6CisgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPnNldE9wKENhbGwpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBQcm9maWxlZENv
bnN0cnVjdDoKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3AoQ29uc3RydWN0KTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KIH07CiAKIGJvb2wgcGVyZm9y
bVRpZXJVcENoZWNrSW5qZWN0aW9uKEdyYXBoJiBncmFwaCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAw
LDcgKzIwMCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBW
QUxJREFURSgobm9kZSksICFtYXlFeGl0KG1fZ3JhcGgsIG5vZGUpIHx8IG5vZGUtPm9yaWdpbi5m
b3JFeGl0LmlzU2V0KCkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUt
Pmhhc1N0cnVjdHVyZSgpIHx8ICEhbm9kZS0+c3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAg
IFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhhc0Z1bmN0aW9uKCkgfHwgbm9kZS0+ZnVuY3Rpb24o
KS0+dmFsdWUoKS5pc0Z1bmN0aW9uKCkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2Rl
KSwgIW5vZGUtPmhhc0NlbGxPcGVyYW5kKCkgfHwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUo
KS5pc0NlbGwoKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+aGFz
Q2VsbE9wZXJhbmQoKSB8fCAhIW5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkpOwogICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoIShub2RlLT5mbGFncygpICYgTm9kZUhh
c1ZhckFyZ3MpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS0+Y2hpbGQyKCkpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hw
b2ludENvbGxlY3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTExNCw3ICsxMTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6Ci0gICAg
ICAgICAgICBhZGRMYXppbHkoanNDYXN0PEpTRnVuY3Rpb24qPihtX25vZGUtPmZ1bmN0aW9uKCkt
PnZhbHVlKCkpLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKSk7CisgICAgICAgICAg
ICBhZGRMYXppbHkoanNDYXN0PEpTRnVuY3Rpb24qPihtX25vZGUtPmNlbGxPcGVyYW5kKCktPnZh
bHVlKCkpLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFZhcmlhYmxlV2F0Y2hwb2ludDoKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJl
dmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw4IEBAIGlubGluZSBDYXBhYmls
aXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CiAgICAg
Y2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKICAgICBjYXNlIFN0cmluZ0NoYXJBdDoKLSAgICBjYXNl
IENoZWNrRnVuY3Rpb246CisgICAgY2FzZSBDaGVja0NlbGw6CisgICAgY2FzZSBDaGVja0JhZENl
bGw6CiAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgogICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0
eVN0b3JhZ2U6CiAgICAgY2FzZSBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgpAQCAtMTI2LDcg
KzEyNyw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBj
YXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6CiAgICAgY2FzZSBDaGVjazoKICAgICBjYXNlIENv
dW50RXhlY3V0aW9uOgotICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOgorICAgIGNhc2UgR2V0RXhl
Y3V0YWJsZToKICAgICBjYXNlIEdldFNjb3BlOgogICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVX
YXRjaHBvaW50OgogICAgIGNhc2UgQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkOgpAQCAtMTY2LDgg
KzE2NywxNCBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAg
Y2FzZSBHZXRHZW5lcmljUHJvcGVydHlFbnVtZXJhdG9yOgogICAgIGNhc2UgR2V0RW51bWVyYXRv
clBuYW1lOgogICAgIGNhc2UgVG9JbmRleFN0cmluZzoKKyAgICBjYXNlIEJvdHRvbVZhbHVlOgog
ICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHJvZmls
ZWRDYWxsOgorICAgIGNhc2UgUHJvZmlsZWRDb25zdHJ1Y3Q6CisgICAgICAgIC8vIFRoZXNlIGFy
ZSBPSyBub3QgYmVjYXVzZSB0aGUgRlRMIGNhbiBzdXBwb3J0IHRoZW0sIGJ1dCBiZWNhdXNlIGlm
IHRoZSBERkcgc2VlcyBvbmUgb2YKKyAgICAgICAgLy8gdGhlc2UgdGhlbiB0aGUgRlRMIHdpbGwg
c2VlIGEgbm9ybWFsIENhbGwvQ29uc3RydWN0LgorICAgICAgICBicmVhazsKICAgICBjYXNlIElk
ZW50aXR5OgogICAgICAgICAvLyBObyBiYWNrZW5kIGhhbmRsZXMgdGhpcyBiZWNhdXNlIGl0IHdp
bGwgYmUgb3B0aW1pemVkIG91dC4gQnV0IHdlIG1heSBjaGVjawogICAgICAgICAvLyBmb3IgY2Fw
YWJpbGl0aWVzIGJlZm9yZSBvcHRpbWl6YXRpb24uIEl0IHdvdWxkIGJlIGEgZGVlcCBlcnJvciB0
byByZW1vdmUgdGhpcwpAQCAtMzI2LDYgKzMzMyw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwg
Y2FuQ29tcGlsZShOb2RlKiAKICAgICAgICAgc3dpdGNoIChub2RlLT5zd2l0Y2hEYXRhKCktPmtp
bmQpIHsKICAgICAgICAgY2FzZSBTd2l0Y2hJbW06CiAgICAgICAgIGNhc2UgU3dpdGNoQ2hhcjoK
KyAgICAgICAgY2FzZSBTd2l0Y2hDZWxsOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAx
NzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNiBAQCBOT19SRVRVUk5fRFVFX1RPX0NSQVNI
IHN0YXRpYyB2b2lkIGZ0bFVuCiBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHN0YXRpYyB2b2lkIGZ0
bFVucmVhY2hhYmxlKAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBCbG9ja0luZGV4IGJsb2Nr
SW5kZXgsIHVuc2lnbmVkIG5vZGVJbmRleCkKIHsKLSAgICAKICAgICBkYXRhTG9nKCJDcmFzaGlu
ZyBpbiB0aG91Z2h0LXRvLWJlLXVucmVhY2hhYmxlIEZUTC1nZW5lcmF0ZWQgY29kZSBmb3IgIiwg
cG9pbnRlckR1bXAoY29kZUJsb2NrKSwgIiBhdCBiYXNpYyBibG9jayAjIiwgYmxvY2tJbmRleCk7
CiAgICAgaWYgKG5vZGVJbmRleCAhPSBVSU5UX01BWCkKICAgICAgICAgZGF0YUxvZygiLCBub2Rl
IEAiLCBub2RlSW5kZXgpOwpAQCAtMTUzLDExICsxNTIsMTcgQEAgcHVibGljOgogICAgICAgICBm
b3IgKHVuc2lnbmVkIGJsb2NrSW5kZXggPSBkZXB0aEZpcnN0LnNpemUoKTsgYmxvY2tJbmRleC0t
OyApIHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gZGVwdGhGaXJzdFtibG9ja0lu
ZGV4XTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4ID0gYmxvY2stPnNpemUo
KTsgbm9kZUluZGV4LS07ICkgewotICAgICAgICAgICAgICAgIE5vZGUqIG1fbm9kZSA9IGJsb2Nr
LT5hdChub2RlSW5kZXgpOwotICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmhhc0tub3duRnVu
Y3Rpb24oKSkgeworICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUlu
ZGV4KTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKKyAgICAgICAgICAg
ICAgICBjYXNlIE5hdGl2ZUNhbGw6CisgICAgICAgICAgICAgICAgY2FzZSBOYXRpdmVDb25zdHJ1
Y3Q6IHsKICAgICAgICAgICAgICAgICAgICAgaW50IG51bUFyZ3MgPSBtX25vZGUtPm51bUNoaWxk
cmVuKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChudW1BcmdzID4gbWF4TnVtYmVyT2ZBcmd1
bWVudHMpCiAgICAgICAgICAgICAgICAgICAgICAgICBtYXhOdW1iZXJPZkFyZ3VtZW50cyA9IG51
bUFyZ3M7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ2OCwxMSArNDczLDE0
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgICAgICAgICBj
b21waWxlQ2hlY2tTdHJ1Y3R1cmUoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IENoZWNrRnVuY3Rpb246Ci0gICAgICAgICAgICBjb21waWxlQ2hlY2tGdW5jdGlvbigpOworICAg
ICAgICBjYXNlIENoZWNrQ2VsbDoKKyAgICAgICAgICAgIGNvbXBpbGVDaGVja0NlbGwoKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKKyAgICAgICAgICAg
IGNvbXBpbGVDaGVja0JhZENlbGwoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IENoZWNrRXhlY3V0YWJsZToKLSAgICAgICAgICAgIGNvbXBpbGVDaGVja0V4ZWN1dGFibGUoKTsK
KyAgICAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgorICAgICAgICAgICAgY29tcGlsZUdldEV4ZWN1
dGFibGUoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1
Y3R1cmU6CiAgICAgICAgICAgICBjb21waWxlQXJyYXlpZnlUb1N0cnVjdHVyZSgpOwpAQCAtMTc0
MywyNiArMTc1MSwyNSBAQCBwcml2YXRlOgogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51
YXRpb24sIGxhc3ROZXh0KTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21waWxlQ2hlY2tGdW5j
dGlvbigpCisgICAgdm9pZCBjb21waWxlQ2hlY2tDZWxsKCkKICAgICB7CiAgICAgICAgIExWYWx1
ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgCiAgICAgICAgIHNw
ZWN1bGF0ZSgKLSAgICAgICAgICAgIEJhZEZ1bmN0aW9uLCBqc1ZhbHVlVmFsdWUoY2VsbCksIG1f
bm9kZS0+Y2hpbGQxKCkubm9kZSgpLAotICAgICAgICAgICAgbV9vdXQubm90RXF1YWwoY2VsbCwg
d2Vha1BvaW50ZXIobV9ub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpLmFzQ2VsbCgpKSkpOworICAg
ICAgICAgICAgQmFkQ2VsbCwganNWYWx1ZVZhbHVlKGNlbGwpLCBtX25vZGUtPmNoaWxkMSgpLm5v
ZGUoKSwKKyAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKGNlbGwsIHdlYWtQb2ludGVyKG1fbm9k
ZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5hc0NlbGwoKSkpKTsKICAgICB9CiAgICAgCi0gICAg
dm9pZCBjb21waWxlQ2hlY2tFeGVjdXRhYmxlKCkKKyAgICB2b2lkIGNvbXBpbGVDaGVja0JhZENl
bGwoKQorICAgIHsKKyAgICAgICAgdGVybWluYXRlKEJhZENlbGwpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGNvbXBpbGVHZXRFeGVjdXRhYmxlKCkKICAgICB7CiAgICAgICAgIExWYWx1ZSBjZWxs
ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgCiAgICAgICAgIHNwZWN1bGF0
ZUZ1bmN0aW9uKG1fbm9kZS0+Y2hpbGQxKCksIGNlbGwpOwotICAgICAgICAKLSAgICAgICAgc3Bl
Y3VsYXRlKAotICAgICAgICAgICAgQmFkRXhlY3V0YWJsZSwganNWYWx1ZVZhbHVlKGNlbGwpLCBt
X25vZGUtPmNoaWxkMSgpLm5vZGUoKSwKLSAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKAotICAg
ICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0Z1bmN0aW9uX2V4ZWN1
dGFibGUpLAotICAgICAgICAgICAgICAgIHdlYWtQb2ludGVyKG1fbm9kZS0+ZXhlY3V0YWJsZSgp
KSkpOworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0Z1
bmN0aW9uX2V4ZWN1dGFibGUpKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlQXJyYXlp
ZnlUb1N0cnVjdHVyZSgpCkBAIC0zNjczLDkgKzM2ODAsNyBAQCBwcml2YXRlOgogICAgICAgICBp
bnQgbnVtUGFzc2VkQXJncyA9IG1fbm9kZS0+bnVtQ2hpbGRyZW4oKSAtIDE7CiAgICAgICAgIGlu
dCBudW1BcmdzID0gbnVtUGFzc2VkQXJncyArIGR1bW15VGhpc0FyZ3VtZW50OwogCi0gICAgICAg
IEFTU0VSVChtX25vZGUtPmhhc0tub3duRnVuY3Rpb24oKSk7Ci0KLSAgICAgICAgSlNGdW5jdGlv
bioga25vd25GdW5jdGlvbiA9IG1fbm9kZS0+a25vd25GdW5jdGlvbigpOworICAgICAgICBKU0Z1
bmN0aW9uKiBrbm93bkZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihtX25vZGUtPmNlbGxP
cGVyYW5kKCktPnZhbHVlKCkuYXNDZWxsKCkpOwogICAgICAgICBOYXRpdmVGdW5jdGlvbiBmdW5j
dGlvbiA9IGtub3duRnVuY3Rpb24tPm5hdGl2ZUZ1bmN0aW9uKCk7CiAKICAgICAgICAgRGxfaW5m
byBpbmZvOwpAQCAtMzkxOCwxMCArMzkyMywzNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBjYXNlIFN3aXRjaFN0cmluZzoKKyAg
ICAgICAgY2FzZSBTd2l0Y2hTdHJpbmc6IHsKICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBo
LCBtX25vZGUsICJVbmltcGxlbWVudGVkIik7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgU3dpdGNo
Q2VsbDogeworICAgICAgICAgICAgTFZhbHVlIGNlbGw7CisgICAgICAgICAgICBzd2l0Y2ggKG1f
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgICAgICAgICBjYXNlIENlbGxVc2U6IHsK
KyAgICAgICAgICAgICAgICBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICAgICAgICAgIExWYWx1ZSB2YWx1ZSA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgY2VsbENhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIlN3aXRjaC9Td2l0Y2hDZWxsIGNl
bGwgY2FzZSIpKTsKKyAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICAg
ICAgICAgIGlzQ2VsbCh2YWx1ZSksIHVuc3VyZShjZWxsQ2FzZSksIHVuc3VyZShsb3dCbG9jayhk
YXRhLT5mYWxsVGhyb3VnaC5ibG9jaykpKTsKKyAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRU
byhjZWxsQ2FzZSk7CisgICAgICAgICAgICAgICAgY2VsbCA9IHZhbHVlOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiQmFk
IHVzZSBraW5kIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgICAgICBidWlsZFN3aXRjaChtX25vZGUtPnN3aXRjaERhdGEoKSwg
bV9vdXQuaW50UHRyLCBjZWxsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSB9CiAg
ICAgICAgIAogICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiQmFkIHN3aXRjaCBr
aW5kIik7CiAgICAgfQpAQCAtNTE4Niw3ICs1MjE4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgVmVj
dG9yPFN3aXRjaENhc2U+IGNhc2VzOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZGF0YS0+Y2FzZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGNhc2VzLmFwcGVuZChTd2l0
Y2hDYXNlKAotICAgICAgICAgICAgICAgIGNvbnN0SW50KHR5cGUsIGRhdGEtPmNhc2VzW2ldLnZh
bHVlLnN3aXRjaExvb2t1cFZhbHVlKCkpLAorICAgICAgICAgICAgICAgIGNvbnN0SW50KHR5cGUs
IGRhdGEtPmNhc2VzW2ldLnZhbHVlLnN3aXRjaExvb2t1cFZhbHVlKGRhdGEtPmtpbmQpKSwKICAg
ICAgICAgICAgICAgICBsb3dCbG9jayhkYXRhLT5jYXNlc1tpXS50YXJnZXQuYmxvY2spLCBXZWln
aHQoZGF0YS0+Y2FzZXNbaV0udGFyZ2V0LmNvdW50KSkpOwogICAgICAgICB9CiAgICAgICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
ODQsNiArOTg0LDExIEBAIHZvaWQgSGVhcDo6Y29sbGVjdChIZWFwT3BlcmF0aW9uIGNvbGxlY3QK
ICAgICAgICAgdm0oKS0+dHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKEFTQ0lJ
TGl0ZXJhbCgiR0MiKSk7CiAgICAgfQogICAgIAorICAgIGlmICh2bSgpLT5jYWxsRWRnZUxvZykg
eworICAgICAgICBEZWZlckdDRm9yQVdoaWxlIGF3aGlsZSgqdGhpcyk7CisgICAgICAgIHZtKCkt
PmNhbGxFZGdlTG9nLT5wcm9jZXNzTG9nKCk7CisgICAgfQorICAgIAogICAgIFJFTEVBU0VfQVNT
RVJUKCFtX2RlZmVycmFsRGVwdGgpOwogICAgIEFTU0VSVCh2bSgpLT5jdXJyZW50VGhyZWFkSXNI
b2xkaW5nQVBJTG9jaygpKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLT5hdG9taWNTdHJpbmdU
YWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMTcy
ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29y
a2luZyBjb3B5KQpAQCAtODgsNiArODgsMzEgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogICAg
IAorICAgIHZvaWQgc3RvcmVWYWx1ZShKU1ZhbHVlUmVncyByZWdzLCB2b2lkKiBhZGRyZXNzKQor
ICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBzdG9yZTY0KHJlZ3MuZ3ByKCksIGFk
ZHJlc3MpOworI2Vsc2UKKyAgICAgICAgc3RvcmUzMihyZWdzLnBheWxvYWRHUFIoKSwgYml0d2lz
ZV9jYXN0PHZvaWQqPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihhZGRyZXNzKSArIFBheWxvYWRP
ZmZzZXQpKTsKKyAgICAgICAgc3RvcmUzMihyZWdzLnRhZ0dQUigpLCBiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGFkZHJlc3MpICsgVGFnT2Zmc2V0KSk7CisjZW5k
aWYKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkVmFsdWUoQWRkcmVzcyBhZGRyZXNzLCBKU1Zh
bHVlUmVncyByZWdzKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBsb2FkNjQo
YWRkcmVzcywgcmVncy5ncHIoKSk7CisjZWxzZQorICAgICAgICBpZiAoYWRkcmVzcy5iYXNlID09
IHJlZ3MucGF5bG9hZEdQUigpKSB7CisgICAgICAgICAgICBsb2FkMzIoYWRkcmVzcy53aXRoT2Zm
c2V0KFRhZ09mZnNldCksIHJlZ3MudGFnR1BSKCkpOworICAgICAgICAgICAgbG9hZDMyKGFkZHJl
c3Mud2l0aE9mZnNldChQYXlsb2FkT2Zmc2V0KSwgcmVncy5wYXlsb2FkR1BSKCkpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldChQYXlsb2Fk
T2Zmc2V0KSwgcmVncy5wYXlsb2FkR1BSKCkpOworICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mu
d2l0aE9mZnNldChUYWdPZmZzZXQpLCByZWdzLnRhZ0dQUigpKTsKKyAgICAgICAgfQorI2VuZGlm
CisgICAgfQorICAgIAogICAgIHZvaWQgbW92ZVRydXN0ZWRWYWx1ZShKU1ZhbHVlIHZhbHVlLCBK
U1ZhbHVlUmVncyByZWdzKQogICAgIHsKICNpZiBVU0UoSlNWQUxVRTY0KQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjY2LDYgKzE2NjYsMTUgQEAgcHVibGljOgogICAgICAgICBtb3ZlKGFyZzQsIEdQUkluZm86
OmFyZ3VtZW50R1BSMyk7CiAgICAgfQogI2VuZGlmCisgICAgCisgICAgdm9pZCBzZXR1cEFyZ3Vt
ZW50cyhKU1ZhbHVlUmVncyBhcmcxKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAg
ICBzZXR1cEFyZ3VtZW50cyhhcmcxLmdwcigpKTsKKyNlbHNlCisgICAgICAgIHNldHVwQXJndW1l
bnRzKGFyZzEucGF5bG9hZEdQUigpLCBhcmcxLnRhZ0dQUigpKTsKKyNlbmRpZgorICAgIH0KIAog
ICAgIHZvaWQgc2V0dXBSZXN1bHRzKEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCKQogICAgIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCShyZXZpc2lvbiAxNzI4NTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAt
NjAsNiArNjAsOCBAQCBwdWJsaWM6CiAgICAgR1BSUmVnIHRhZ0dQUigpIGNvbnN0IHsgcmV0dXJu
IEludmFsaWRHUFJSZWc7IH0KICAgICBHUFJSZWcgcGF5bG9hZEdQUigpIGNvbnN0IHsgcmV0dXJu
IG1fZ3ByOyB9CiAgICAgCisgICAgYm9vbCB1c2VzKEdQUlJlZyBncHIpIGNvbnN0IHsgcmV0dXJu
IG1fZ3ByID09IGdwcjsgfQorICAgIAogcHJpdmF0ZToKICAgICBHUFJSZWcgbV9ncHI7CiB9OwpA
QCAtMTY5LDYgKzE3MSw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRhZ0dQUigpOwogICAg
IH0KIAorICAgIGJvb2wgdXNlcyhHUFJSZWcgZ3ByKSBjb25zdCB7IHJldHVybiBtX3RhZ0dQUiA9
PSBncHIgfHwgbV9wYXlsb2FkR1BSID09IGdwcjsgfQorICAgIAogcHJpdmF0ZToKICAgICBpbnQ4
X3QgbV90YWdHUFI7CiAgICAgaW50OF90IG1fcGF5bG9hZEdQUjsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzAwLDYgKzMwMCwxNCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNv
ZGVJCiAgICAgc3RvcmUzMihyZWdUMCwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgSlNT
dGFjazo6Q2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxv
YWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKICAgICBzdG9yZTMyKHJlZ1Qx
LCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBKU1N0YWNrOjpDYWxsZWUgKiBzdGF0aWNf
Y2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgVGFnT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZy
YW1lQW5kUEMpKSk7CiAKKyAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2NvZGVCbG9jay0+YWRk
Q2FsbExpbmtJbmZvKCk7CisKKyAgICBpZiAoQ2FsbEVkZ2VMb2c6OmlzRW5hYmxlZCgpICYmIHNo
b3VsZEVtaXRQcm9maWxpbmcoKQorICAgICAgICAmJiBPcHRpb25zOjpiYXNlbGluZURvZXNDYWxs
RWRnZVByb2ZpbGluZygpKSB7CisgICAgICAgIG1fdm0tPmVuc3VyZUNhbGxFZGdlTG9nKCkuZW1p
dExvZ0NvZGUoCisgICAgICAgICAgICAqdGhpcywgaW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBKU1Zh
bHVlUmVncyhyZWdUMSwgcmVnVDApKTsKKyAgICB9CisKICAgICBpZiAob3Bjb2RlSUQgPT0gb3Bf
Y2FsbF9ldmFsKSB7CiAgICAgICAgIGNvbXBpbGVDYWxsRXZhbChpbnN0cnVjdGlvbik7CiAgICAg
ICAgIHJldHVybjsKQEAgLTMxMyw3ICszMjEsNiBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChP
cGNvZGVJRCBvcGNvZGVJCiAgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2UpOwogCiAgICAgQVNTRVJU
KG1fY2FsbENvbXBpbGF0aW9uSW5mby5zaXplKCkgPT0gY2FsbExpbmtJbmZvSW5kZXgpOwotICAg
IENhbGxMaW5rSW5mbyogaW5mbyA9IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsKICAg
ICBpbmZvLT5jYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3Iob3Bjb2RlSUQpOwog
ICAgIGluZm8tPmNvZGVPcmlnaW4gPSBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpOwogICAg
IGluZm8tPmNhbGxlZUdQUiA9IHJlZ1QwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDYWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENhbGwuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENhbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsNiArMjEyLDEyIEBAIHZvaWQgSklU
Ojpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGNhbGxlZSwgcmVnVDApOyAvLyByZWdUMCBob2xkcyBjYWxsZWUuCiAKICAgICBzdG9yZTY0
KHJlZ1QwLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBKU1N0YWNrOjpDYWxsZWUgKiBz
dGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5k
UEMpKSk7CisgICAgCisgICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENh
bGxMaW5rSW5mbygpOworCisgICAgaWYgKENhbGxFZGdlTG9nOjppc0VuYWJsZWQoKSAmJiBzaG91
bGRFbWl0UHJvZmlsaW5nKCkKKyAgICAgICAgJiYgT3B0aW9uczo6YmFzZWxpbmVEb2VzQ2FsbEVk
Z2VQcm9maWxpbmcoKSkKKyAgICAgICAgbV92bS0+ZW5zdXJlQ2FsbEVkZ2VMb2coKS5lbWl0TG9n
Q29kZSgqdGhpcywgaW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBKU1ZhbHVlUmVncyhyZWdUMCkpOwog
CiAgICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCkgewogICAgICAgICBjb21waWxlQ2Fs
bEV2YWwoaW5zdHJ1Y3Rpb24pOwpAQCAtMjIzLDcgKzIyOSw2IEBAIHZvaWQgSklUOjpjb21waWxl
T3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZSk7CiAKICAg
ICBBU1NFUlQobV9jYWxsQ29tcGlsYXRpb25JbmZvLnNpemUoKSA9PSBjYWxsTGlua0luZm9JbmRl
eCk7Ci0gICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5m
bygpOwogICAgIGluZm8tPmNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihvcGNv
ZGVJRCk7CiAgICAgaW5mby0+Y29kZU9yaWdpbiA9IENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNl
dCk7CiAgICAgaW5mby0+Y2FsbGVlR1BSID0gcmVnVDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Nyw2ICsxNjcs
MTMgQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAgdihib29sLCBlbmFi
bGVBY2Nlc3NJbmxpbmluZywgdHJ1ZSkgXAogICAgIHYoYm9vbCwgZW5hYmxlUG9seXZhcmlhbnRE
ZXZpcnR1YWxpemF0aW9uLCB0cnVlKSBcCiAgICAgdihib29sLCBlbmFibGVQb2x5bW9ycGhpY0Fj
Y2Vzc0lubGluaW5nLCB0cnVlKSBcCisgICAgdihib29sLCBlbmFibGVQb2x5bW9ycGhpY0NhbGxJ
bmxpbmluZywgdHJ1ZSkgXAorICAgIHYoYm9vbCwgY2FsbFN0YXR1c1Nob3VsZFVzZUNhbGxFZGdl
UHJvZmlsZSwgdHJ1ZSkgXAorICAgIHYoYm9vbCwgY2FsbEVkZ2VQcm9maWxlUmVhbGx5UHJvY2Vz
c2VzTG9nLCB0cnVlKSBcCisgICAgdihib29sLCBiYXNlbGluZURvZXNDYWxsRWRnZVByb2ZpbGlu
ZywgZmFsc2UpIFwKKyAgICB2KGJvb2wsIGRmZ0RvZXNDYWxsRWRnZVByb2ZpbGluZywgdHJ1ZSkg
XAorICAgIHYoYm9vbCwgZW5hYmxlQ2FsbEVkZ2VQcm9maWxpbmcsIHRydWUpIFwKKyAgICB2KHVu
c2lnbmVkLCBmcmVxdWVudENhbGxUaHJlc2hvbGQsIDIpIFwKICAgICB2KGJvb2wsIG9wdGltaXpl
TmF0aXZlQ2FsbHMsIGZhbHNlKSBcCiAgICAgXAogICAgIHYoYm9vbCwgZW5hYmxlQ29uY3VycmVu
dEpJVCwgdHJ1ZSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2
aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNzMsNiArMzczLDEzIEBAIFZNKiYgVk06OnNoYXJlZEluc3RhbmNl
SW50ZXJuYWwoKQogICAgIHJldHVybiBzaGFyZWRJbnN0YW5jZTsKIH0KIAorQ2FsbEVkZ2VMb2cm
IFZNOjplbnN1cmVDYWxsRWRnZUxvZygpCit7CisgICAgaWYgKCFjYWxsRWRnZUxvZykKKyAgICAg
ICAgY2FsbEVkZ2VMb2cgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxFZGdlTG9nPigpOworICAgIHJl
dHVybiAqY2FsbEVkZ2VMb2c7Cit9CisKICNpZiBFTkFCTEUoSklUKQogc3RhdGljIFRodW5rR2Vu
ZXJhdG9yIHRodW5rR2VuZXJhdG9yRm9ySW50cmluc2ljKEludHJpbnNpYyBpbnRyaW5zaWMpCiB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE3Mjg1OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTcy
LDYgKzcyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcml0eUNoZWNrRmFpbFJl
dHVyblRodW5rczsKICAgICBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7CisgICAgY2xhc3MgQ2Fs
bEVkZ2VMb2c7CiAgICAgY2xhc3MgQ29kZUJsb2NrOwogICAgIGNsYXNzIENvZGVDYWNoZTsKICAg
ICBjbGFzcyBDb21tb25JZGVudGlmaWVyczsKQEAgLTIzMyw2ICsyMzQsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgT3duUHRyPERGRzo6TG9uZ0xpdmVk
U3RhdGU+IGRmZ1N0YXRlOwogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorICAgICAgICAKKyAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxFZGdlTG9nPiBjYWxsRWRnZUxvZzsKKyAgICAgICAg
Q2FsbEVkZ2VMb2cmIGVuc3VyZUNhbGxFZGdlTG9nKCk7CiAKICAgICAgICAgVk1UeXBlIHZtVHlw
ZTsKICAgICAgICAgQ2xpZW50RGF0YSogY2xpZW50RGF0YTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvbmV3LWFycmF5LXRoZW4tZXhpdC5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL25ldy1hcnJheS10aGVuLWV4aXQu
anMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL25l
dy1hcnJheS10aGVuLWV4aXQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorZnVu
Y3Rpb24gZm9vKGYpIHsKKyAgICByZXR1cm4gbmV3IGYoKTsKK30KKworbm9JbmxpbmUoZm9vKTsK
KworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKQorICAgIGZvbyhBcnJheSk7CisKK3Zh
ciBkaWRDYWxsID0gZmFsc2U7Citmb28oZnVuY3Rpb24oKSB7IGRpZENhbGwgPSB0cnVlOyB9KTsK
KworaWYgKCFkaWRDYWxsKQorICAgIHRocm93ICJFcnJvcjogZGlkbid0IGNhbGwgbXkgZnVuY3Rp
b24uIjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcG9seS1jYWxs
LWV4aXQtdGhpcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL3BvbHktY2FsbC1leGl0LXRoaXMuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3BvbHktY2FsbC1leGl0LXRoaXMuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwyOSBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIGZvbyh4
KSB7IHJldHVybiAxICsgdGhpcy5mOyB9CisgICAgZnVuY3Rpb24gYmFyKHgpIHsgcmV0dXJuIHgg
KyB0aGlzLmY7IH0KKyAgICBmdW5jdGlvbiBiYXooeCkgeyByZXR1cm4geCArIDEgKyB0aGlzLmY7
IH0KKyAgICAKKyAgICB2YXIgbiA9IDEwMDAwMDA7CisgICAgCisgICAgdmFyIHJlc3VsdCA9IChm
dW5jdGlvbihvKSB7CisgICAgICAgIHZhciBmID0ge2Z1bjpmb28sIGY6MX07CisgICAgICAgIHZh
ciBnID0ge2Z1bjpiYXIsIGY6Mn07CisgICAgICAgIHZhciBoID0ge2Z1bjpiYXosIGY6M307Cisg
ICAgICAgIAorICAgICAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBuOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChpID09IG4gLSAxKQorICAgICAgICAgICAg
ICAgIGYgPSBoOworICAgICAgICAgICAgcmVzdWx0ICs9IGYuZnVuKG8uZik7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIHZhciB0bXAgPSBmOworICAgICAgICAgICAgZiA9IGc7CisgICAgICAg
ICAgICBnID0gdG1wOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgIH0pKHtmOjQyfSk7CisgICAgCisgICAgaWYgKHJlc3VsdCAhPSAoKG4gLyAyIC0gMSkg
KiAoNDIgKyAyKSkgKyAobiAvIDIgKiAoMSArIDEpICsgKDQyICsgMSArIDMpKSkKKyAgICAgICAg
dGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfSkoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wb2x5LWNhbGwtZXhpdC5q
cwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcG9s
eS1jYWxsLWV4aXQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOSBAQAorKGZ1bmN0aW9u
KCkgeworICAgIGZ1bmN0aW9uIGZvbyh4KSB7IHJldHVybiAxOyB9CisgICAgZnVuY3Rpb24gYmFy
KHgpIHsgcmV0dXJuIHg7IH0KKyAgICBmdW5jdGlvbiBiYXooeCkgeyByZXR1cm4geCArIDE7IH0K
KyAgICAKKyAgICB2YXIgbiA9IDEwMDAwMDA7CisgICAgCisgICAgdmFyIHJlc3VsdCA9IChmdW5j
dGlvbihvKSB7CisgICAgICAgIHZhciBmID0gZm9vOworICAgICAgICB2YXIgZyA9IGJhcjsKKyAg
ICAgICAgdmFyIGggPSBiYXo7CisgICAgICAgIAorICAgICAgICB2YXIgcmVzdWx0ID0gMDsKKyAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChpID09
IG4gLSAxKQorICAgICAgICAgICAgICAgIGYgPSBoOworICAgICAgICAgICAgcmVzdWx0ICs9IGYo
by5mKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIHRtcCA9IGY7CisgICAgICAgICAg
ICBmID0gZzsKKyAgICAgICAgICAgIGcgPSB0bXA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfSkoe2Y6NDJ9KTsKKyAgICAKKyAgICBpZiAocmVzdWx0
ICE9ICgobiAvIDIgLSAxKSAqIDQyKSArIChuIC8gMiAqIDEpICsgKDQyICsgMSkpCisgICAgICAg
IHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30pKCk7CkluZGV4OiBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2
aXNpb24gMTcyODU5KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyMyBAQAorMjAxNC0wOC0yMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29t
PgorCisgICAgICAgIEZUTCBzaG91bGQgYmUgYWJsZSB0byBkbyBwb2x5bW9ycGhpYyBjYWxsIGlu
bGluaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzUxNDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisg
ICAgICAgIEFkZCBzb21lIHBvd2VyIHRoYXQgSSBuZWVkIGZvciBjYWxsIGVkZ2UgcHJvZmlsaW5n
LgorCisgICAgICAgICogd3RmL093blB0ci5oOgorICAgICAgICAoV1RGOjpPd25QdHI8VD46OmNy
ZWF0ZVRyYW5zYWN0aW9uYWxseSk6CisgICAgICAgICogd3RmL1NwZWN0cnVtLmg6CisgICAgICAg
IChXVEY6OlNwZWN0cnVtOjphZGQpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6YWRkQWxsKToK
KyAgICAgICAgKFdURjo6U3BlY3RydW06OmdldCk6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpz
aXplKToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OktleUFuZENvdW50OjpLZXlBbmRDb3VudCk6
CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpjbGVhcik6CisgICAgICAgIChXVEY6OlNwZWN0cnVt
OjpyZW1vdmVJZik6CisKIDIwMTQtMDgtMjEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0IHIxNzI4MzEsIGl0IGJyb2tlIHRoZSBXaW5kb3dz
IGJ1aWxkLgpJbmRleDogU291cmNlL1dURi93dGYvT3duUHRyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvT3duUHRyLmgJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9XVEYvd3Rm
L093blB0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmln
aHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBXVEZfT3duUHRyX2gKIAogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyQ29tbW9uLmg+CiAjaW5jbHVk
ZSA8YWxnb3JpdGhtPgpAQCAtNzIsNiArNzMsMTQgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+IE93blB0ciYgb3BlcmF0b3I9KE93blB0cjxVPiYmKTsKIAog
ICAgICAgICB2b2lkIHN3YXAoT3duUHRyJiBvKSB7IHN0ZDo6c3dhcChtX3B0ciwgby5tX3B0cik7
IH0KKyAgICAgICAgCisgICAgICAgIC8vIENvbnN0cnVjdCBhbiBvYmplY3QgdG8gc3RvcmUgaW50
byB0aGlzIE93blB0ciwgYnV0IG9ubHkgc28gbG9uZyBhcyB0aGlzIE93blB0cgorICAgICAgICAv
LyBkb2Vzbid0IGFscmVhZHkgcG9pbnQgdG8gYW4gb2JqZWN0LiBUaGlzIHdpbGwgZW5zdXJlIHRo
YXQgYWZ0ZXIgeW91IGNhbGwgdGhpcywKKyAgICAgICAgLy8gdGhlIE93blB0ciB3aWxsIHBvaW50
IHRvIGFuIGluc3RhbmNlIG9mIFQuIFRoaXMgaW5zdGFuY2UgbWF5IG9yIG1heSBub3QgaGF2ZSBi
ZWVuCisgICAgICAgIC8vIGNyZWF0ZWQgYnkgdGhpcyBjYWxsLiBNb3Jlb3ZlciwgdGhpcyBjYWxs
IHVzZXMgYW4gb3Bwb3J0dW5pc3RpYyB0cmFuc2FjdGlvbiwgaW4KKyAgICAgICAgLy8gdGhhdCB3
ZSBtYXkgY3JlYXRlIGFuIGluc3RhbmNlIG9mIFQgYW5kIHRoZW4gaW1tZWRpYXRlbHkgdGhyb3cg
aXQgYXdheS4KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KKyAgICAgICAgdm9p
ZCBjcmVhdGVUcmFuc2FjdGlvbmFsbHkoQXJncy4uLiBhcmdzKTsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIGV4cGxpY2l0IE93blB0cihQdHJUeXBlIHB0cikgOiBtX3B0cihwdHIpIHsgfQpAQCAt
MTg2LDYgKzE5NSwyOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuIHAuZ2V0KCk7
CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdGVtcGxhdGU8dHlwZW5hbWUuLi4g
QXJncz4gaW5saW5lIHZvaWQgT3duUHRyPFQ+OjpjcmVhdGVUcmFuc2FjdGlvbmFsbHkoQXJncy4u
LiBhcmdzKQorICAgIHsKKyAgICAgICAgaWYgKG1fcHRyKSB7CisgICAgICAgICAgICBXVEY6Omxv
YWRMb2FkRmVuY2UoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgVCogbmV3T2JqZWN0ID0gbmV3IFQoYXJncy4uLik7CisgICAgICAgIFdURjo6c3Rv
cmVTdG9yZUZlbmNlKCk7CisjaWYgRU5BQkxFKENPTVBBUkVfQU5EX1NXQVApCisgICAgICAgIGRv
IHsKKyAgICAgICAgICAgIGlmIChtX3B0cikgeworICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdP
YmplY3Q7CisgICAgICAgICAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9IHdoaWxlICghV1RGOjp3ZWFr
Q29tcGFyZUFuZFN3YXAoYml0d2lzZV9jYXN0PHZvaWQqdm9sYXRpbGUqPigmbV9wdHIpLCBudWxs
cHRyLCBuZXdPYmplY3QpKTsKKyNlbHNlCisgICAgICAgIG1fcHRyID0gbmV3T2JqZWN0OworI2Vu
ZGlmCisgICAgfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpPd25QdHI7Cklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL1NwZWN0cnVtLmgJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9XVEYvd3RmL1NwZWN0
cnVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDIyICszMiwzMSBAQAogCiBuYW1lc3BhY2UgV1RGIHsK
IAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIENv
dW50ZXJUeXBlID0gdW5zaWduZWQ+CiBjbGFzcyBTcGVjdHJ1bSB7CiBwdWJsaWM6Ci0gICAgdHlw
ZWRlZiB0eXBlbmFtZSBIYXNoTWFwPFQsIHVuc2lnbmVkIGxvbmc+OjppdGVyYXRvciBpdGVyYXRv
cjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz46OmNvbnN0
X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOworICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxU
LCBDb3VudGVyVHlwZT46Oml0ZXJhdG9yIGl0ZXJhdG9yOworICAgIHR5cGVkZWYgdHlwZW5hbWUg
SGFzaE1hcDxULCBDb3VudGVyVHlwZT46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwog
ICAgIAogICAgIFNwZWN0cnVtKCkgeyB9CiAgICAgCi0gICAgdm9pZCBhZGQoY29uc3QgVCYga2V5
LCB1bnNpZ25lZCBsb25nIGNvdW50ID0gMSkKKyAgICB2b2lkIGFkZChjb25zdCBUJiBrZXksIENv
dW50ZXJUeXBlIGNvdW50ID0gMSkKICAgICB7Ci0gICAgICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwg
dW5zaWduZWQgbG9uZz46OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBjb3VudCk7
CisgICAgICAgIGlmICghY291bnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHR5cGVu
YW1lIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRk
KGtleSwgY291bnQpOwogICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAg
ICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSArPSBjb3VudDsKICAgICB9CiAgICAgCi0gICAgdW5z
aWduZWQgbG9uZyBnZXQoY29uc3QgVCYga2V5KSBjb25zdAorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+CisgICAgdm9pZCBhZGRBbGwoY29uc3QgU3BlY3RydW08VCwgVT4mIG90aGVyU3BlY3RydW0p
CisgICAgeworICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBvdGhlclNwZWN0cnVtKQorICAgICAg
ICAgICAgYWRkKGVudHJ5LmtleSwgZW50cnkuY291bnQpOworICAgIH0KKyAgICAKKyAgICBDb3Vu
dGVyVHlwZSBnZXQoY29uc3QgVCYga2V5KSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3RfaXRl
cmF0b3IgaXRlciA9IG1fbWFwLmZpbmQoa2V5KTsKICAgICAgICAgaWYgKGl0ZXIgPT0gbV9tYXAu
ZW5kKCkpCkBAIC01NSw2ICs2NCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGl0ZXItPnZh
bHVlOwogICAgIH0KICAgICAKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFw
LnNpemUoKTsgfQorICAgIAogICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVn
aW4oKTsgfQogICAgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9CiAgICAg
Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX21hcC5iZWdpbigpOyB9CkBA
IC02Myw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgS2V5QW5kQ291bnQgewogICAgICAg
ICBLZXlBbmRDb3VudCgpIHsgfQogICAgICAgICAKLSAgICAgICAgS2V5QW5kQ291bnQoY29uc3Qg
VCYga2V5LCB1bnNpZ25lZCBsb25nIGNvdW50KQorICAgICAgICBLZXlBbmRDb3VudChjb25zdCBU
JiBrZXksIENvdW50ZXJUeXBlIGNvdW50KQogICAgICAgICAgICAgOiBrZXkoa2V5KQogICAgICAg
ICAgICAgLCBjb3VudChjb3VudCkKICAgICAgICAgewpAQCAtODAsNyArOTEsNyBAQCBwdWJsaWM6
CiAgICAgICAgIH0KIAogICAgICAgICBUIGtleTsKLSAgICAgICAgdW5zaWduZWQgbG9uZyBjb3Vu
dDsKKyAgICAgICAgQ291bnRlclR5cGUgY291bnQ7CiAgICAgfTsKICAgICAKICAgICAvLyBSZXR1
cm5zIGEgbGlzdCBvcmRlcmVkIGZyb20gbG93ZXN0LWNvdW50IHRvIGhpZ2hlc3QtY291bnQuCkBA
IC05NCw4ICsxMDUsMTggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbGlzdDsKICAgICB9CiAg
ICAgCisgICAgdm9pZCBjbGVhcigpIHsgbV9tYXAuY2xlYXIoKTsgfQorICAgIAorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgdm9pZCByZW1vdmVJZihjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKQorICAgIHsKKyAgICAgICAgbV9tYXAucmVtb3ZlSWYoW2Z1bmN0b3JdICh0eXBlbmFt
ZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6S2V5VmFsdWVQYWlyVHlwZSYgcGFpcikgeworICAg
ICAgICAgICAgICAgIHJldHVybiBmdW5jdG9yKEtleUFuZENvdW50KHBhaXIua2V5LCBwYWlyLnZh
bHVlKSk7CisgICAgICAgICAgICB9KTsKKyAgICB9CisgICAgCiBwcml2YXRlOgotICAgIEhhc2hN
YXA8VCwgdW5zaWduZWQgbG9uZz4gbV9tYXA7CisgICAgSGFzaE1hcDxULCBDb3VudGVyVHlwZT4g
bV9tYXA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3Mjg1
OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3
IEBACisyMDE0LTA4LTIzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAg
ICAgRlRMIHNob3VsZCBiZSBhYmxlIHRvIGRvIHBvbHltb3JwaGljIGNhbGwgaW5saW5pbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTE0NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMvcmVncmVz
cy9zY3JpcHQtdGVzdHMvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQuanM6IEFkZGVkLgorICAgICAg
ICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwuanM6IEFkZGVkLgor
ICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVk
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC5odG1s
OiBBZGRlZC4KKwogMjAxNC0wOC0yMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CiAKICAgICAgICAgQW5pbWF0ZWQgR0lGcyBzY3JvbGxlZCBvdXQgb2YgdmlldyBzdGlsbCBjYXVz
ZSB0aXRsZWJhciBibHVyIHRvIHVwZGF0ZSwgb24gdHVtYmxyLmNvbSBwYWdlCkluZGV4OiBMYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNh
bGwtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVz
cy9zaW1wbGUtcG9seS1jYWxsCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5
LWNhbGwtbmVzdGVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zaW1wbGUt
cG9seS1jYWxsLW5lc3RlZAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBu
byBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcG9seS1j
YWxsLW5lc3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2lt
cGxlLXBvbHktY2FsbC1uZXN0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9F
TiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10
ZXN0cy9zaW1wbGUtcG9seS1jYWxsLW5lc3RlZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2Fs
bC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3Jp
cHQtdGVzdHMvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQuanMJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1w
bGUtcG9seS1jYWxsLW5lc3RlZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI1IEBACiso
ZnVuY3Rpb24oKSB7CisgICAgZnVuY3Rpb24gZm9vKHgpIHsgcmV0dXJuIDE7IH0KKyAgICBmdW5j
dGlvbiBiYXIoeCkgeyByZXR1cm4geDsgfQorICAgIAorICAgIHZhciBuID0gMTAwMDAwMDsKKyAg
ICAKKyAgICB2YXIgcmVzdWx0ID0gKGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgZiA9IGZvbzsK
KyAgICAgICAgdmFyIGcgPSBiYXI7CisgICAgICAgIAorICAgICAgICB2YXIgcmVzdWx0ID0gMDsK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgICAgIHJlc3Vs
dCArPSBmKDQyKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIHRtcCA9IGY7CisgICAg
ICAgICAgICBmID0gZzsKKyAgICAgICAgICAgIGcgPSB0bXA7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSkoKTsKKyAgICAKKyAgICBpZiAocmVzdWx0
ICE9IG4gLyAyICogNDIgKyBuIC8gMiAqIDEpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJl
c3VsdDogIiArIHJlc3VsdDsKK30pKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9zaW1wbGUtcG9seS1jYWxsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwuanMJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcG9seS1jYWxs
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjAgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBm
dW5jdGlvbiBmb28oeCkgeyByZXR1cm4gMTsgfQorICAgIGZ1bmN0aW9uIGJhcih4KSB7IHJldHVy
biB4OyB9CisgICAgCisgICAgdmFyIGYgPSBmb287CisgICAgdmFyIGcgPSBiYXI7CisgICAgCisg
ICAgdmFyIHJlc3VsdCA9IDA7CisgICAgdmFyIG4gPSAxMDAwMDA7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgcmVzdWx0ICs9IGYoNDIpOworICAgICAgICAKKyAg
ICAgICAgdmFyIHRtcCA9IGY7CisgICAgICAgIGYgPSBnOworICAgICAgICBnID0gdG1wOworICAg
IH0KKyAgICAKKyAgICBpZiAocmVzdWx0ICE9IG4gLyAyICogNDIgKyBuIC8gMiAqIDEpCisgICAg
ICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30pKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237056</attachid>
            <date>2014-08-24 21:37:58 -0700</date>
            <delta_ts>2014-08-25 08:39:16 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>190867</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyODk3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2NiBA
QAorMjAxNC0wOC0yNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEZUTCBzaG91bGQgYmUgYWJsZSB0byBkbyBwb2x5bW9ycGhpYyBjYWxsIGlubGluaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUxNDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFkZGVk
IGEgbG9nLWJhc2VkIGhpZ2gtZmlkZWxpdHkgY2FsbCBlZGdlIHByb2ZpbGVyIHRoYXQgcnVucyBp
biBERkcgSklUIChhbmQgb3B0aW9uYWxseQorICAgICAgICBiYXNlbGluZSBKSVQpIGNvZGUuIFVz
ZWQgaXQgdG8gZG8gcHJlY2lzZSBwb2x5bW9ycGhpYyBpbmxpbmluZyBpbiB0aGUgRlRMLiBQb3Rl
bnRpYWwKKyAgICAgICAgaW5saW5pbmcgc2l0ZXMgdXNlIHRoZSBjYWxsIGVkZ2UgcHJvZmlsZSBp
ZiBpdCBpcyBhdmFpbGFibGUsIGJ1dCB0aGV5IHdpbGwgc3RpbGwgZmFsbCBiYWNrCisgICAgICAg
IG9uIHRoZSBjYWxsIGlubGluZSBjYWNoZSBhbmQgcmFyZSBjYXNlIGNvdW50cyBpZiBpdCdzIG5v
dC4gVGhpcyBhbHNvIGVuYWJsZXMgZmFpcmx5CisgICAgICAgIGFnZ3Jlc3NpdmUgZWxpbWluYXRp
b24gb2YgY2FsbCBlZGdlIHByb2ZpbGluZyBzaXRlcyAtIGZvciBleGFtcGxlIHRoZSBERkcgd29u
J3QgZG8gY2FsbCBlZGdlCisgICAgICAgIHByb2ZpbGluZyBpZiBpdCBhbHJlYWR5IGtub3dzIHRo
YXQgdGhlIGNhbGwgaXMgbW9ub21vcnBoaWMuCisgICAgICAgIAorICAgICAgICBUaGUgY2FsbCBl
ZGdlIHByb2ZpbGluZyBhZGRlZCBpbiB0aGlzIHBhdGNoIGlzIHZlcnkgcHJlY2lzZSAtIGl0IHdp
bGwgdGVsbCB5b3UgYWJvdXQgZXZlcnkKKyAgICAgICAgY2FsbCB0aGF0IGhhcyBldmVyIGhhcHBl
bmVkLiBJdCB0b29rIHNvbWUgZWZmb3J0IHRvIHJlZHVjZSB0aGUgb3ZlcmhlYWQgb2YgdGhpcyBw
cm9maWxpbmcuCisgICAgICAgIFRoaXMgbW9zdGx5IGludm9sdmVkIGVuc3VyaW5nIHRoYXQgd2Ug
ZG9uJ3QgZG8gaXQgdW5uZWNlc3NhcmlseS4gRm9yIGV4YW1wbGUsIHdlIGF2b2lkIGl0CisgICAg
ICAgIGluIHRoZSBiYXNlbGluZSBKSVQgKHlvdSBjYW4gY29uZGl0aW9uYWxseSBlbmFibGUgaXQg
YnV0IGl0J3Mgb2ZmIGJ5IGRlZmF1bHQpIGFuZCB3ZSBvbmx5IGRvCisgICAgICAgIGl0IGluIHRo
ZSBERkcgSklUIGlmIHdlIGtub3cgdGhhdCB0aGUgcmVndWxhciBpbmxpbmUgY2FjaGUgcHJvZmls
aW5nIHdhc24ndCBwcmVjaXNlIGVub3VnaC4KKyAgICAgICAgSSBhbHNvIGV4cGVyaW1lbnRlZCB3
aXRoIHJlZHVjaW5nIHRoZSBwcmVjaXNpb24gb2YgdGhlIHByb2ZpbGluZy4gVGhpcyBsZWQgdG8g
YSBzaWduaWZpY2FudAorICAgICAgICByZWR1Y3Rpb24gaW4gdGhlIHNwZWVkLXVwLCBzbyBJIGF2
b2lkZWQgdGhpcyBhcHByb2FjaC4gSSBhbHNvIGV4cGxvcmVkIG1ha2luZyBsb2cgcHJvY2Vzc2lu
ZworICAgICAgICBjb25jdXJyZW50LCBidXQgdGhhdCBkaWRuJ3QgaGVscC4gQWxzbywgSSB0ZXN0
ZWQgdGhlIG92ZXJoZWFkIG9mIHRoZSBsb2cgcHJvY2Vzc2luZyBhbmQKKyAgICAgICAgZm91bmQg
dGhhdCBtb3N0IG9mIHRoZSBvdmVyaGVhZCBvZiB0aGlzIHByb2ZpbGluZyBpcyBhY3R1YWxseSBp
biBwdXR0aW5nIHRoaW5ncyBpbnRvIHRoZSBsb2cKKyAgICAgICAgcmF0aGVyIHRoYW4gaW4gcHJv
Y2Vzc2luZyB0aGUgbG9nIC0gdGhhdCBwYXJ0IGFwcGVhcnMgdG8gYmUgc3VycHJpc2luZ2x5IGNo
ZWFwLgorICAgICAgICAKKyAgICAgICAgUG9seW1vcnBoaWMgaW5saW5pbmcgY291bGQgYmUgZW5h
YmxlZCBpbiB0aGUgREZHIGlmIHdlIGVuYWJsZWQgYmFzZWxpbmUgY2FsbCBlZGdlIHByb2ZpbGlu
ZywKKyAgICAgICAgYW5kIGlmIHdlIGd1YXJkZWQgc3VjaCBpbmxpbmluZyBzaXRlcyB3aXRoIHNv
bWUgcHJvZmlsaW5nIG1lY2hhbmlzbSB0byBkZXRlY3QKKyAgICAgICAgcG9seXZhcmlhbnQgbW9u
b21vcnBoaXNhdGlvbiBvcHBvcnR1bml0aWVzICh3aGVyZSB0aGUgY2FsbHNpdGUgYmVpbmcgaW5s
aW5lZCByZXZlYWxzIHRoYXQKKyAgICAgICAgaXQncyBhY3R1YWxseSBtb25vbW9ycGhpYykuCisg
ICAgICAgIAorICAgICAgICBUaGlzIGlzIGEgfjI4JSBzcGVlZC11cCBvbiBkZWx0YWJsdWUgYW5k
IGEgfjclIHNwZWVkLXVwIG9uIHJpY2hhcmRzLCB3aXRoIHNtYWxsIHNwZWVkLXVwcyBvbgorICAg
ICAgICBvdGhlciBwcm9ncmFtcyBhcyB3ZWxsLiBJdCdzIGFib3V0IGEgMiUgc3BlZWQtdXAgb24g
T2N0YW5lIHZlcnNpb24gMiwgYW5kIG5ldmVyIGEgcmVncmVzc2lvbgorICAgICAgICBvbiBhbnl0
aGluZyB3ZSBjYXJlIGFib3V0LiBTb21lIGFnZ3JlZ2F0ZXMsIGxpa2UgVjhTcGlkZXIsIHNlZSBh
IHJlZ3Jlc3Npb24uIFRoaXMgaXMKKyAgICAgICAgaGlnaGxpZ2h0aW5nIHRoZSBpbmNyZWFzZSBp
biBwcm9maWxpbmcgb3ZlcmhlYWQuIEJ1dCBzaW5jZSB0aGlzIGRvZXNuJ3Qgc2hvdyB1cCBvbiBh
bnkgbWFqb3IKKyAgICAgICAgc2NvcmUgKGNvZGUtbG9hZCBvciBTdW5TcGlkZXIpLCBpdCdzIHBy
b2JhYmx5IG5vdCByZWxldmFudC4KKyAgICAgICAgCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q2Fs
bEVkZ2U6OmR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxFZGdlLmg6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpDYWxsRWRnZTo6b3BlcmF0b3IhKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2U6
OmNhbGxlZSk6CisgICAgICAgIChKU0M6OkNhbGxFZGdlOjpjb3VudCk6CisgICAgICAgIChKU0M6
OkNhbGxFZGdlOjpkZXNwZWNpZmllZENsb3N1cmUpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZTo6
Q2FsbEVkZ2UpOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5jcHA6IEFkZGVk
LgorICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6OmNhbGxFZGdlcyk6CisgICAgICAgIChK
U0M6OkNhbGxFZGdlUHJvZmlsZTo6bnVtQ2FsbHNUb0tub3duQ2VsbHMpOgorICAgICAgICAoSlND
Ojp3b3J0aERlc3BlY2lmeWluZyk6CisgICAgICAgIChKU0M6OkNhbGxFZGdlUHJvZmlsZTo6d29y
dGhEZXNwZWNpZnlpbmcpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6OnZpc2l0V2Vh
ayk6CisgICAgICAgIChKU0M6OkNhbGxFZGdlUHJvZmlsZTo6YWRkU2xvdyk6CisgICAgICAgIChK
U0M6OkNhbGxFZGdlUHJvZmlsZTo6bWVyZ2VCYWNrKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VQ
cm9maWxlOjpmYWRlQnlIYWxmKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VMb2c6OkNhbGxFZGdl
TG9nKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VMb2c6On5DYWxsRWRnZUxvZyk6CisgICAgICAg
IChKU0M6OkNhbGxFZGdlTG9nOjppc0VuYWJsZWQpOgorICAgICAgICAoSlNDOjpvcGVyYXRpb25Q
cm9jZXNzQ2FsbEVkZ2VMb2cpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZUxvZzo6ZW1pdExvZ0Nv
ZGUpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZUxvZzo6cHJvY2Vzc0xvZyk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpDYWxsRWRn
ZVByb2ZpbGU6Om51bUNhbGxzVG9Ob3RDZWxsKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VQcm9m
aWxlOjpudW1DYWxsc1RvVW5rbm93bkNlbGwpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2Zp
bGU6OnRvdGFsQ2FsbHMpOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZUlubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkNhbGxFZGdlUHJvZmlsZTo6Q2FsbEVkZ2VQcm9m
aWxlKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VQcm9maWxlOjphZGQpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6dmlz
aXRXZWFrKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uaDoKKyAgICAgICAgKiBi
eXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVz
OjpDYWxsTGlua1N0YXR1cyk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb21wdXRl
RnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IpOgor
ICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YSk6CisgICAg
ICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUNhbGxMaW5rSW5mbyk6CisgICAg
ICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUNhbGxFZGdlUHJvZmlsZSk6Cisg
ICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb21wdXRlREZHU3RhdHVzZXMpOgorICAgICAg
ICAoSlNDOjpDYWxsTGlua1N0YXR1czo6aXNDbG9zdXJlQ2FsbCk6CisgICAgICAgIChKU0M6OkNh
bGxMaW5rU3RhdHVzOjptYWtlQ2xvc3VyZUNhbGwpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0
YXR1czo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpmdW5jdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjppbnRlcm5hbEZ1bmN0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmludHJpbnNpY0Zvcik6IERl
bGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpT
Qzo6Q2FsbExpbmtTdGF0dXM6OkNhbGxMaW5rU3RhdHVzKToKKyAgICAgICAgKEpTQzo6Q2FsbExp
bmtTdGF0dXM6OmlzU2V0KToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvdWxkVGFr
ZVNsb3dQYXRoKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmVkZ2VzKToKKyAgICAg
ICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OnNpemUpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0
YXR1czo6YXQpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6b3BlcmF0b3JbXSk6Cisg
ICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjYW5PcHRpbWl6ZSk6CisgICAgICAgIChKU0M6
OkNhbGxMaW5rU3RhdHVzOjpjYW5UcnVzdENvdW50cyk6CisgICAgICAgIChKU0M6OkNhbGxMaW5r
U3RhdHVzOjppc0Nsb3N1cmVDYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbExpbmtT
dGF0dXM6OmNhbGxUYXJnZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1
czo6ZXhlY3V0YWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpt
YWtlQ2xvc3VyZUNhbGwpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxWYXJpYW50
LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpkdW1wKToKKyAgICAgICAg
KiBieXRlY29kZS9DYWxsVmFyaWFudC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlh
bnQ6OkNhbGxWYXJpYW50KToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om9wZXJhdG9yISk6
CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpkZXNwZWNpZmllZENsb3N1cmUpOgorICAgICAg
ICAoSlNDOjpDYWxsVmFyaWFudDo6cmF3Q2FsbGVlQ2VsbCk6CisgICAgICAgIChKU0M6OkNhbGxW
YXJpYW50OjppbnRlcm5hbEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OmZ1
bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OmlzQ2xvc3VyZUNhbGwpOgorICAg
ICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkNhbGxW
YXJpYW50Ojpub25FeGVjdXRhYmxlQ2FsbGVlKToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6
OmludHJpbnNpY0Zvcik6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpmdW5jdGlvbkV4ZWN1
dGFibGUpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6aXNIYXNoVGFibGVEZWxldGVkVmFs
dWUpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChK
U0M6OkNhbGxWYXJpYW50OjpvcGVyYXRvciE9KToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6
Om9wZXJhdG9yPCk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpvcGVyYXRvcj4pOgorICAg
ICAgICAoSlNDOjpDYWxsVmFyaWFudDo6b3BlcmF0b3I8PSk6CisgICAgICAgIChKU0M6OkNhbGxW
YXJpYW50OjpvcGVyYXRvcj49KToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Omhhc2gpOgor
ICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZGVsZXRlZFRva2VuKToKKyAgICAgICAgKEpTQzo6
Q2FsbFZhcmlhbnRIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnRIYXNoOjpl
cXVhbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZU9yaWdpbi5oOgorICAgICAgICAoSlNDOjpJ
bmxpbmVDYWxsRnJhbWU6OmlzTm9ybWFsQ2FsbCk6CisgICAgICAgICogYnl0ZWNvZGUvRXhpdEtp
bmQuY3BwOgorICAgICAgICAoSlNDOjpleGl0S2luZFRvU3RyaW5nKToKKyAgICAgICAgKiBieXRl
Y29kZS9FeGl0S2luZC5oOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgor
ICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8pOgorICAgICAg
ICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3Rh
dHVzOjpjb21wdXRlRm9yU3R1YkluZm8pOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0Jh
Y2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJhY2t3YXJk
c1Byb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR0Jhc2ljQmxv
Y2suY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJhc2ljQmxvY2s6On5CYXNpY0Jsb2NrKToKKyAg
ICAgICAgKiBkZmcvREZHQmFzaWNCbG9jay5oOgorICAgICAgICAoSlNDOjpERkc6OkJhc2ljQmxv
Y2s6OnRha2VMYXN0KToKKyAgICAgICAgKEpTQzo6REZHOjpCYXNpY0Jsb2NrOjpkaWRMaW5rKToK
KyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpwcm9jZXNzU2V0TG9jYWxRdWV1ZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OnJlbW92ZUxhc3ROb2RlRnJvbUdyYXBoKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2FsbFdpdGhvdXRTZXR0aW5nUmVzdWx0KToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2FsbCk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjplbWl0RnVuY3Rpb25DaGVja3MpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjp1bmRvRnVuY3Rpb25DaGVja3MpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjppbmxpbmVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
Y2FuY2VsTGlua2luZ0ZvckJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6YXR0ZW1wdFRvSW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6cHJlcGFyZVRvUGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmNsZWFyQ2FjaGVzKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Omxp
bmtCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmxpbmtCbG9ja3Mp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jayk6Cisg
ICAgICAgICogZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkNQU1JldGhyZWFkaW5nUGhhc2U6OmZyZWVVbm5lY2Vzc2FyeU5vZGVzKToKKyAgICAgICAg
KiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgor
ICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpm
b2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdEcml2ZXIuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OmNvbXBpbGVJbXBsKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBk
ZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToKKyAgICAg
ICAgKEpTQzo6REZHOjpHcmFwaDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6Cisg
ICAgICAgICogZGZnL0RGR0xhenlKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpMYXp5
SlNWYWx1ZTo6c3dpdGNoTG9va3VwVmFsdWUpOgorICAgICAgICAqIGRmZy9ERkdMYXp5SlNWYWx1
ZS5oOgorICAgICAgICAoSlNDOjpERkc6OkxhenlKU1ZhbHVlOjpzd2l0Y2hMb29rdXBWYWx1ZSk6
IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR05vZGUuY3BwOgorICAgICAgICAoV1RGOjpwcmlu
dEludGVybmFsKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6
Ok9wSW5mbzo6T3BJbmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNIZWFwUHJlZGlj
dGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2VsbE9wZXJhbmQpOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OmNlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjpzZXRDZWxsT3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y2FuQmVLbm93bkZ1
bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNLbm93bkZ1bmN0
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjprbm93bkZ1bmN0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpnaXZlS25vd25GdW5jdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzRnVuY3Rpb24pOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpoYXNFeGVjdXRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpleGVjdXRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUu
aDoKKyAgICAgICAgKiBkZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6UGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZTo6cnVuKToKKyAg
ICAgICAgKiBkZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6UGhhbnRvbVJlbW92YWxQaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRl
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
ZW1pdFN3aXRjaCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgKiBkZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlN0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRm
Zy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpU
aWVyVXBDaGVja0luamVjdGlvblBoYXNlOjpydW4pOgorICAgICAgICAoSlNDOjpERkc6OlRpZXJV
cENoZWNrSW5qZWN0aW9uUGhhc2U6OnJlbW92ZUZUTFByb2ZpbGluZyk6CisgICAgICAgICogZGZn
L0RGR1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpWYWxpZGF0ZTo6dmFsaWRhdGUp
OgorICAgICAgICAqIGRmZy9ERkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlOjpoYW5kbGUpOgorICAgICAg
ICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBp
bGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6ZnRsVW5yZWFjaGFibGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZN
Ojpsb3dlcik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVOb2Rl
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNoZWNrQ2VsbCk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVDaGVja0JhZENlbGwp
OgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlR2V0RXhlY3V0YWJs
ZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVOYXRpdmVDYWxs
T3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxl
U3dpdGNoKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6YnVpbGRTd2l0Y2gp
OgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ2hlY2tGdW5jdGlv
bik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVD
aGVja0V4ZWN1dGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAg
ICAgIChKU0M6OkhlYXA6OmNvbGxlY3QpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMu
aDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVZhbHVlKToKKyAgICAgICAg
KEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpsb2FkVmFsdWUpOgorICAgICAgICAqIGppdC9DQ2FsbEhl
bHBlcnMuaDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50cyk6Cisg
ICAgICAgICogaml0L0dQUkluZm8uaDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZVJlZ3M6OnVzZXMp
OgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxl
T3BDYWxsKToKKyAgICAgICAgKiBqaXQvSklUQ2FsbDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OmVuc3VyZUNhbGxFZGdlTG9n
KToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICogdGVzdHMvc3RyZXNzL25ldy1h
cnJheS10aGVuLWV4aXQuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKyAgICAgICAgKiB0ZXN0
cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQtdGhpcy5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMv
c3RyZXNzL3BvbHktY2FsbC1leGl0LmpzOiBBZGRlZC4KKwogMjAxNC0wOC0yNCAgQnJpYW4gSi4g
QnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
UmVuYW1lIERPTS5SR0JBIGFuZCByZW1vdmUgd29ya2Fyb3VuZHMgaW4gdGhlIGJpbmRpbmdzIGdl
bmVyYXRvcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24g
MTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC02NSw4ICs2NSwxMSBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAg
IGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxv
Y2suY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAorICAgIGJ5
dGVjb2RlL0NhbGxFZGdlLmNwcAorICAgIGJ5dGVjb2RlL0NhbExFZGdlUHJvZmlsZS5jcHAKICAg
ICBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCiAgICAgYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMu
Y3BwCisgICAgYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCiAgICAgYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAogICAgIGJ5dGVjb2RlL0NvZGVCbG9ja0hhc2guY3BwCiAgICAgYnl0ZWNvZGUvQ29kZUJs
b2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0zMTQsOCArMzE0LDExIEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxi
eXRlY29kZVxBcnJheVByb2ZpbGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
Ynl0ZWNvZGVcQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGJ5dGVjb2RlXEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAiIC8+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDYWxsRWRnZS5jcHAiIC8+CisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDYWxsRWRnZVByb2ZpbGUuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ2FsbExpbmtJbmZvLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENhbGxMaW5rU3RhdHVzLmNwcCIgLz4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENhbGxWYXJpYW50LmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENvZGVCbG9jay5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDb2RlQmxvY2tIYXNoLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENvZGVCbG9ja0pldHRpc29uaW5nV2F0
Y2hwb2ludC5jcHAiIC8+CkBAIC05MDUsOSArOTA4LDEzIEBACiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxieXRlY29kZVxCeXRlY29kZUJhc2ljQmxvY2suaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQnl0ZWNvZGVVc2VEZWYuaCIgLz4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENhbGxFZGdlLmgiIC8+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDYWxsRWRnZVByb2ZpbGUuaCIgLz4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENhbGxFZGdlUHJvZmlsZUlubGluZXMuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENhbGxMaW5rSW5mby5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ2FsbExpbmtTdGF0dXMuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENhbGxSZXR1cm5PZmZzZXRU
b0J5dGVjb2RlT2Zmc2V0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29k
ZVxDYWxsVmFyaWFudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVc
Q29kZUJsb2NrLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDb2Rl
QmxvY2tIYXNoLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDb2Rl
QmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuaCIgLz4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MjYzLDYgKzI2MywxMyBAQAogCQkwRjNCM0EyODE1NDRDOTk3MDAzRUQwRkYgLyogREZHQ0ZHU2lt
cGxpZmljYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYzQjNBMjUxNTQ0Qzk5MTAwM0VEMEZGIC8qIERGR0NGR1NpbXBsaWZpY2F0aW9u
UGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjNCM0EyQjE1NDc1MDAwMDAzRUQwRkYgLyogREZHVmFsaWRhdGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjNBMjkxNTQ3NEZGNDAwM0VE
MEZGIC8qIERGR1ZhbGlkYXRlLmNwcCAqLzsgfTsKIAkJMEYzQjNBMkMxNTQ3NTAwMjAwM0VEMEZG
IC8qIERGR1ZhbGlkYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjNCM0EyQTE1NDc0RkY0MDAzRUQwRkYgLyogREZHVmFsaWRhdGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjNCN0UyNjE5QTEx
QjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGM0I3RTIwMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGM0I3RTI3
MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMjExOUExMUI4MDAwRDlCQzU2IC8q
IENhbGxFZGdlUHJvZmlsZS5jcHAgKi87IH07CisJCTBGM0I3RTI4MTlBMTFCODAwMEQ5QkM1NiAv
KiBDYWxsRWRnZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGM0I3RTIyMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjNCN0Uy
OTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMjMxOUExMUI4MDAwRDlC
QzU2IC8qIENhbGxFZGdlUHJvZmlsZUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjNCN0UyQTE5QTExQjgwMDBEOUJDNTYgLyogQ2Fs
bFZhcmlhbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYzQjdFMjQxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmNwcCAqLzsgfTsKKwkJ
MEYzQjdFMkIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCN0UyNTE5QTExQjgwMDBEOUJDNTYg
LyogQ2FsbFZhcmlhbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRjNCN0UyRDE5QTEyQUFFMDBEOUJDNTYgLyogQ2FsbEVkZ2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMkMxOUExMkFB
RTAwRDlCQzU2IC8qIENhbGxFZGdlLmNwcCAqLzsgfTsKIAkJMEYzRDBCQkMxOTRBNDE0MzAwRkM5
Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRDBCQkExOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0
YW50U3RydWN0dXJlQ2hlY2suY3BwICovOyB9OwogCQkwRjNEMEJCRDE5NEE0MTQzMDBGQzlDRjkg
LyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYzRDBCQkIxOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3Ry
dWN0dXJlQ2hlY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjQyNkE0ODE0NjBDQkIzMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MjZBNDUxNDYwQ0JB
QjAwMTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjE2Nyw2ICsyMTc0LDEzIEBACiAJCTBGM0IzQTI1MTU0
NEM5OTEwMDNFRDBGRiAvKiBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuaDsgcGF0aCA9
IGRmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGM0IzQTI5MTU0NzRGRjQwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdWYWxpZGF0ZS5jcHA7IHBhdGggPSBk
ZmcvREZHVmFsaWRhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNCM0Ey
QTE1NDc0RkY0MDAzRUQwRkYgLyogREZHVmFsaWRhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHVmFsaWRhdGUuaDsgcGF0aCA9IGRmZy9ERkdWYWxpZGF0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyMDE5QTExQjgwMDBEOUJDNTYgLyogQ2Fs
bEVkZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbEVkZ2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzQjdFMjExOUExMUI4MDAwRDlCQzU2IC8qIENh
bGxFZGdlUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
YWxsRWRnZVByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0Uy
MjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENhbGxFZGdlUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjNCN0UyMzE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlSW5saW5l
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsRWRnZVByb2ZpbGVJbmxp
bmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGM0I3RTI0MTlBMTFCODAwMEQ5
QkM1NiAvKiBDYWxsVmFyaWFudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDYWxsVmFyaWFudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGM0I3
RTI1MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDYWxsVmFyaWFudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjNCN0UyQzE5QTEyQUFFMDBEOUJDNTYgLyogQ2FsbEVkZ2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbEVkZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjNEMEJCQTE5NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVD
aGVjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb25zdGFudFN0
cnVjdHVyZUNoZWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzRDBCQkIx
OTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNv
dmVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MTQ0LDExICs1MTU4LDE4IEBACiAJCQkJ
MEY2NjZFQkUxODM1NjZGOTAwRDAxN0YxIC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGlu
ZXMuaCAqLywKIAkJCQkwRjg4NUUxMDE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VEZWYu
aCAqLywKIAkJCQkwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8sCisJ
CQkJMEYzQjdFMkMxOUExMkFBRTAwRDlCQzU2IC8qIENhbGxFZGdlLmNwcCAqLywKKwkJCQkwRjNC
N0UyMDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2UuaCAqLywKKwkJCQkwRjNCN0UyMTE5QTEx
QjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmNwcCAqLywKKwkJCQkwRjNCN0UyMjE5QTEx
QjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmggKi8sCisJCQkJMEYzQjdFMjMxOUExMUI4
MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZUlubGluZXMuaCAqLywKIAkJCQkwRjBCODNBRTE0
QkNGNzE0MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmNwcCAqLywKIAkJCQkwRjBCODNBRjE0QkNG
NzE0MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmggKi8sCiAJCQkJMEY5MzMyOTMxNENBN0RDMTAw
ODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmNwcCAqLywKIAkJCQkwRjkzMzI5NDE0Q0E3REMxMDA4
NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuaCAqLywKIAkJCQkwRjBCODNCODE0QkNGOTVCMDA4ODVC
NEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAqLywKKwkJCQkwRjNCN0Uy
NDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuY3BwICovLAorCQkJCTBGM0I3RTI1MTlB
MTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5oICovLAogCQkJCTk2OUEwNzkwMEVEMUQzQUUw
MEYxRjY4MSAvKiBDb2RlQmxvY2suY3BwICovLAogCQkJCTk2OUEwNzkxMEVEMUQzQUUwMEYxRjY4
MSAvKiBDb2RlQmxvY2suaCAqLywKIAkJCQkwRjhGOTQzRDE2Njc2MzJEMDBENjE5NzEgLyogQ29k
ZUJsb2NrSGFzaC5jcHAgKi8sCkBAIC01ODc3LDYgKzU4OTgsNyBAQAogCQkJCTBGRkZDOTVBMTRF
RjkwQTkwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyRkM3
NzMxNkUxMkY3NDAwMzhEOTc2IC8qIERGR0RDRVBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjhGMkI5QTE3MkYwNTAxMDA3REJEQTUgLyogREZHRGVzaXJlZElkZW50aWZpZXJzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjNCN0UyODE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkMwRjdDRTE3QkJGQzVCMDA0NjRGRTQgLyogREZHRGVz
aXJlZFRyYW5zaXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU4NTM0QzE3MjNDREE1MDBC
NjE4RjUgLyogREZHRGVzaXJlZFdhdGNocG9pbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjk4
MUZEOTE3QkFFRTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmggaW4gSGVh
ZGVycyAqLywKQEAgLTYxNDUsNiArNjE2Nyw3IEBACiAJCQkJMEY3NjZEMzExNUFBODExMjAwOEYz
NjNFIC8qIEpJVFN0dWJSb3V0aW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc2NkQyQzE1QThD
QzNBMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0
QzUyNDJCMEY1MzU1RTkwMEJBM0QwNCAvKiBKSVRTdHVicy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEYzQjdFMkIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRUY2ODM1RTE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1YnNBUk0uaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZFRjY4MzVGMTc0MzQzQ0MwMEEzMkUyNSAvKiBKSVRTdHVic0FSTXY3LmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRUY2ODM2MTE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1YnNYODYu
aCBpbiBIZWFkZXJzICovLApAQCAtNjE1Niw2ICs2MTc5LDcgQEAKIAkJCQlBNzZGNTRBMzEzQjI4
QUFCMDBFRjJCQ0UgLyogSklUV3JpdGVCYXJyaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4
QzQxNjBFMTZGNUNEMDBCMzQ0NjAgLyogSlNBY3RpdmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NDA0ODAxMzEwMjFBMUQ5MDA4RTdGMDEgLyogSlNBUElWYWx1ZVdyYXBwZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGM0I3RTI5MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGVJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkNGMzlDMjE2RTE1QTgxMDBERDY5QkUgLyog
SlNBUElXcmFwcGVyT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzYxNDBEMjE4Mjk4MkNC
MDA3NTA2MjQgLyogSlNBcmd1bWVudHNJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMx
OEM0MTcwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQXJyYXkuaCBpbiBIZWFkZXJzICovLApAQCAtNjQ3
MSw2ICs2NDk1LDcgQEAKIAkJCQlFNDlEQzE2QzEyRUYyOTRFMDAxODRBMUYgLyogU291cmNlUHJv
dmlkZXJDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ5REMxNkQxMkVGMjk1MzAwMTg0QTFG
IC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5
RTE1RUQ4RTQ2MDBGMTY3QjIgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEYzQjdFMjYxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNzM4NjU1NDExODY5N0I0MDA1NDAyNzkgLyogU3BlY2lhbGl6ZWRUaHVua0pJVC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NTQxQjIxNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQ
b2ludGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4MkU1NDE0MURBRUVFMDAxNzlDOTQgLyog
U3BlY3VsYXRlZFR5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtNzMyMyw2ICs3MzQ4LDcgQEAKIAkJ
CQkwRjIzNUJENTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50Rm9yT3BlcmFuZC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJEODE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhp
dFRodW5rR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkRBMTcxNzhFMUMw
MDY5MEM3RiAvKiBGVExFeGl0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYzQjdFMjcx
OUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBN0YyOTk2QjE3QTBCQjY3MDAxMDQxN0EgLyogRlRMRmFpbC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkQ4QTMxOTE3RDUxRjIyMDBDQTJDNDAgLyogRlRMRm9yT1NSRW50cnlKSVRDb2RlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjVGMUFGMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExJbmxp
bmVDYWNoZVNpemUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03NTA5LDYgKzc1MzUsNyBAQAogCQkJ
CTBGNDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEYzOEIwMTExN0NGMDc4MDAwQjE0NEQzIC8qIExMSW50RW50cnlwb2ludC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNlcHRp
b25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGM0I3RTJEMTlBMTJBQUUwMEQ5QkM1NiAvKiBD
YWxsRWRnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIg
LyogTExJbnRTbG93UGF0aHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzOUMxNEJDRjQ2
MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0VGQUNE
MTgwNUU3NTUwMDQ3MkNFNCAvKiBMTFZNQVBJLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzY3MCw2
ICs3Njk3LDcgQEAKIAkJCQkxNEU4NEZBMDE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha1NldC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkyQTRFQzkwQjE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJy
aWVyQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzgxNTBCMTQwNDNDMEUwMENGQTYw
MyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGM0I3RTJB
MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
N0U1QUIzQTE3OTlFNEIyMDBEMjgzM0QgLyogWDg2RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTg2M0M2RDlDMTUyMTExMUEwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXplVUNT
Mi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI4NDEyREJBMzM3MDBBOUZFN0IgLyogWWFy
ckludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxFZGdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDYWxsRWRnZS5oIgorCituYW1lc3BhY2UgSlND
IHsKKwordm9pZCBDYWxsRWRnZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAg
IG91dC5wcmludCgiPCIsIG1fY2FsbGVlLCAiLCBjb3VudDogIiwgbV9jb3VudCwgIj4iKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DYWxsRWRnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DYWxsRWRnZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxFZGdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENhbGxFZGdl
X2gKKyNkZWZpbmUgQ2FsbEVkZ2VfaAorCisjaW5jbHVkZSAiQ2FsbFZhcmlhbnQuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK3R5cGVkZWYgdWludDE2X3QgQ2FsbEVkZ2VDb3VudFR5cGU7CisKK2Ns
YXNzIENhbGxFZGdlIHsKK3B1YmxpYzoKKyAgICBDYWxsRWRnZSgpOworICAgIENhbGxFZGdlKENh
bGxWYXJpYW50LCBDYWxsRWRnZUNvdW50VHlwZSk7CisgICAgCisgICAgYm9vbCBvcGVyYXRvciEo
KSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7IH0KKyAgICAKKyAgICBDYWxsVmFyaWFudCBjYWxs
ZWUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlZTsgfQorICAgIENhbGxFZGdlQ291bnRUeXBlIGNv
dW50KCkgY29uc3QgeyByZXR1cm4gbV9jb3VudDsgfQorICAgIAorICAgIENhbGxFZGdlIGRlc3Bl
Y2lmaWVkQ2xvc3VyZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gQ2FsbEVkZ2UobV9j
YWxsZWUuZGVzcGVjaWZpZWRDbG9zdXJlKCksIG1fY291bnQpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICAKK3B1YmxpYzoKKyAgICBDYWxsVmFy
aWFudCBtX2NhbGxlZTsKKyAgICBDYWxsRWRnZUNvdW50VHlwZSBtX2NvdW50OworfTsKKworaW5s
aW5lIENhbGxFZGdlOjpDYWxsRWRnZShDYWxsVmFyaWFudCBjYWxsZWUsIENhbGxFZGdlQ291bnRU
eXBlIGNvdW50KQorICAgIDogbV9jYWxsZWUoY2FsbGVlKQorICAgICwgbV9jb3VudChjb3VudCkK
K3sKK30KKworaW5saW5lIENhbGxFZGdlOjpDYWxsRWRnZSgpCisgICAgOiBDYWxsRWRnZShDYWxs
VmFyaWFudCgpLCAwKQoreworfQorCit0eXBlZGVmIFZlY3RvcjxDYWxsRWRnZSwgMT4gQ2FsbEVk
Z2VMaXN0OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIENhbGxFZGdlX2gKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJv
ZmlsZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbEVkZ2VQcm9maWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQ2FsbEVkZ2VQcm9maWxlLmgiCisKKyNpbmNsdWRlICJDQ2FsbEhl
bHBlcnMuaCIKKyNpbmNsdWRlICJDYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmgiCisjaW5jbHVkZSAi
SklUT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK0NhbGxFZGdlTGlzdCBDYWxsRWRnZVByb2ZpbGU6OmNhbGxFZGdlcygpIGNvbnN0Cit7
CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAKKyAgICBDYWxs
RWRnZUxpc3QgcmVzdWx0OworICAgIAorICAgIENhbGxWYXJpYW50IHByaW1hcnlDYWxsZWUgPSBt
X3ByaW1hcnlDYWxsZWU7CisgICAgZmxvYXQgbnVtQ2FsbHNUb1ByaW1hcnkgPSBtX251bUNhbGxz
VG9QcmltYXJ5OworICAgIC8vIERlZmVuZCBhZ2FpbnN0IHJhY2VzLiBUaGVzZSBmaWVsZHMgYXJl
IG1vZGlmaWVkIGJ5IHRoZSBsb2cgcHJvY2Vzc29yIHdpdGhvdXQgbG9ja2luZy4KKyAgICBpZiAo
ISFwcmltYXJ5Q2FsbGVlICYmIG51bUNhbGxzVG9QcmltYXJ5KQorICAgICAgICByZXN1bHQuYXBw
ZW5kKENhbGxFZGdlKHByaW1hcnlDYWxsZWUsIG51bUNhbGxzVG9QcmltYXJ5KSk7CisgICAgCisg
ICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGlmIHRo
ZSBwcmltYXJ5IHRocmVhZCBoYWQganVzdCBjcmVhdGVkIGEgbV9vdGhlckNhbGxlcyB3aGlsZSBs
b2cKKyAgICAgICAgLy8gcHJvY2Vzc2luZywgd2Ugc2VlIGEgY29uc2lzdGVudGx5IGNyZWF0ZWQg
b25lLiBUaGUgbG9jayBiZWluZyBoZWxkIGlzIGluc3VmZmljaWVudCBmb3IKKyAgICAgICAgLy8g
dGhpcywgc2luY2UgdGhlIGxvZyBwcm9jZXNzb3Igd2lsbCBvbmx5IGdyYWIgdGhlIGxvY2sgd2hl
biBtZXJnaW5nIHRoZSBzZWNvbmRhcnkKKyAgICAgICAgLy8gc3BlY3RydW0gaW50byB0aGUgcHJp
bWFyeSBvbmUgYnV0IG1heSBzdGlsbCBjcmVhdGUgdGhlIGRhdGEgc3RydWN0dXJlIHdpdGhvdXQg
aG9sZGluZworICAgICAgICAvLyBsb2Nrcy4KKyAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7
CisgICAgICAgIGZvciAoQ2FsbEVkZ2UgZW50cnkgOiBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNz
ZWQpIHsKKyAgICAgICAgICAgIC8vIERlZmVuZCBhZ2FpbnN0IHRoZSBwb3NzaWJpbGl0eSB0aGF0
IHRoZSBwcmltYXJ5IGR1cGxpY2F0ZXMgYW4gZW50cnkgaW4gdGhlIHNlY29uZGFyeQorICAgICAg
ICAgICAgLy8gc3BlY3RydW0uIFRoYXQgY2FuIGhhcHBlbiB3aGVuIHRoZSBHQyByZW1vdmVzIHRo
ZSBwcmltYXJ5LiBXZSBjb3VsZCBoYXZlIHRoZSBHQyBmaXgKKyAgICAgICAgICAgIC8vIHRoZSBz
aXR1YXRpb24gYnkgY2hhbmdpbmcgdGhlIHByaW1hcnkgdG8gYmUgc29tZXRoaW5nIGZyb20gdGhl
IHNlY29uZGFyeSBzcGVjdHJ1bSwKKyAgICAgICAgICAgIC8vIGJ1dCB0aGlzIGZpeCBzZWVtcyBz
aW1wbGVyIHRvIGltcGxlbWVudCBhbmQgYWxzbyBjaGVhcGVyLgorICAgICAgICAgICAgaWYgKGVu
dHJ5LmNhbGxlZSgpID09IHJlc3VsdFswXS5jYWxsZWUoKSkgeworICAgICAgICAgICAgICAgIHJl
c3VsdFswXSA9IENhbGxFZGdlKHJlc3VsdFswXS5jYWxsZWUoKSwgZW50cnkuY291bnQoKSArIHJl
c3VsdFswXS5jb3VudCgpKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChlbnRyeSk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgCisgICAgc3RkOjpzb3J0KHJlc3VsdC5iZWdpbigpLCByZXN1bHQu
ZW5kKCksIFtdIChjb25zdCBDYWxsRWRnZSYgYSwgY29uc3QgQ2FsbEVkZ2UmIGIpIC0+IGJvb2wg
eworICAgICAgICAgICAgcmV0dXJuIGEuY291bnQoKSA+IGIuY291bnQoKTsKKyAgICAgICAgfSk7
CisgICAgCisgICAgaWYgKHJlc3VsdC5zaXplKCkgPj0gMikKKyAgICAgICAgQVNTRVJUKHJlc3Vs
dFswXS5jb3VudCgpID49IHJlc3VsdC5sYXN0KCkuY291bnQoKSk7CisgICAgCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworQ2FsbEVkZ2VDb3VudFR5cGUgQ2FsbEVkZ2VQcm9maWxlOjpudW1DYWxs
c1RvS25vd25DZWxscygpIGNvbnN0Cit7CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgcmVzdWx0ID0g
MDsKKyAgICBmb3IgKENhbGxFZGdlIGVkZ2UgOiBjYWxsRWRnZXMoKSkKKyAgICAgICAgcmVzdWx0
ICs9IGVkZ2UuY291bnQoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgYm9vbCB3
b3J0aERlc3BlY2lmeWluZyhjb25zdCBDYWxsVmFyaWFudCYgdmFyaWFudCkKK3sKKyAgICByZXR1
cm4gIUhlYXA6OmlzTWFya2VkKHZhcmlhbnQucmF3Q2FsbGVlQ2VsbCgpKQorICAgICAgICAmJiBI
ZWFwOjppc01hcmtlZCh2YXJpYW50LmRlc3BlY2lmaWVkQ2xvc3VyZSgpLnJhd0NhbGxlZUNlbGwo
KSk7Cit9CisKK2Jvb2wgQ2FsbEVkZ2VQcm9maWxlOjp3b3J0aERlc3BlY2lmeWluZygpCit7Cisg
ICAgaWYgKG1fY2xvc3VyZXNBcmVEZXNwZWNpZmllZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIAorICAgIGlmICghIW1fcHJpbWFyeUNhbGxlZSAmJiAhSlNDOjp3b3J0aERlc3BlY2lmeWlu
ZyhtX3ByaW1hcnlDYWxsZWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYg
KG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fb3RoZXJDYWxs
ZWVzLT5tX3Byb2Nlc3NlZC5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIGlmICghSlNDOjp3
b3J0aERlc3BlY2lmeWluZyhtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCkp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDYWxsRWRnZVByb2ZpbGU6OnZpc2l0V2Vhaygp
Cit7CisgICAgaWYgKCFtX3ByaW1hcnlDYWxsZWUgJiYgIW1fb3RoZXJDYWxsZWVzKQorICAgICAg
ICByZXR1cm47CisgICAgCisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsK
KyAgICAKKyAgICAvLyBTZWUgaWYgYW55dGhpbmcgaXMgZGVhZCBhbmQgaWYgdGhhdCBjYW4gYmUg
cmVjdGlmaWVkIGJ5IGRlc3BlY2lmeWluZy4KKyAgICBpZiAod29ydGhEZXNwZWNpZnlpbmcoKSkg
eworICAgICAgICBDYWxsU3BlY3RydW0gbmV3U3BlY3RydW07CisgICAgICAgIAorICAgICAgICBp
ZiAoISFtX3ByaW1hcnlDYWxsZWUpCisgICAgICAgICAgICBuZXdTcGVjdHJ1bS5hZGQobV9wcmlt
YXJ5Q2FsbGVlLmRlc3BlY2lmaWVkQ2xvc3VyZSgpLCBtX251bUNhbGxzVG9QcmltYXJ5KTsKKyAg
ICAgICAgCisgICAgICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLnNpemUoKTsgaS0tOykgewor
ICAgICAgICAgICAgICAgIG5ld1NwZWN0cnVtLmFkZCgKKyAgICAgICAgICAgICAgICAgICAgbV9v
dGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNhbGxlZSgpLmRlc3BlY2lmaWVkQ2xvc3VyZSgp
LAorICAgICAgICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291
bnQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFZlY3Rv
cjxDYWxsU3BlY3RydW06OktleUFuZENvdW50PiBsaXN0ID0gbmV3U3BlY3RydW0uYnVpbGRMaXN0
KCk7CisgICAgICAgIEFTU0VSVChsaXN0LnNpemUoKSk7CisgICAgICAgIG1fcHJpbWFyeUNhbGxl
ZSA9IGxpc3QubGFzdCgpLmtleTsKKyAgICAgICAgbV9udW1DYWxsc1RvUHJpbWFyeSA9IGxpc3Qu
bGFzdCgpLmNvdW50OworICAgICAgICAKKyAgICAgICAgQVNTRVJUKCEhbV9vdGhlckNhbGxlZXMg
PT0gKGxpc3Quc2l6ZSgpID49IDIpKTsKKyAgICAgICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7Cisg
ICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuY2xlYXIoKTsKKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IGxpc3Quc2l6ZSgpIC0gMTsgaS0tOykKKyAgICAgICAgICAg
ICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuYXBwZW5kKENhbGxFZGdlKGxpc3RbaV0u
a2V5LCBsaXN0W2ldLmNvdW50KSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG1fY2xv
c3VyZXNBcmVEZXNwZWNpZmllZCA9IHRydWU7CisgICAgICAgIAorICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIAorICAgIGlmICghIW1fcHJpbWFyeUNhbGxlZSAmJiAhSGVhcDo6aXNNYXJrZWQo
bV9wcmltYXJ5Q2FsbGVlLnJhd0NhbGxlZUNlbGwoKSkpIHsKKyAgICAgICAgbV9udW1DYWxsc1Rv
VW5rbm93bkNlbGwgKz0gbV9udW1DYWxsc1RvUHJpbWFyeTsKKyAgICAgICAgCisgICAgICAgIG1f
cHJpbWFyeUNhbGxlZSA9IENhbGxWYXJpYW50KCk7CisgICAgICAgIG1fbnVtQ2FsbHNUb1ByaW1h
cnkgPSAwOworICAgIH0KKyAgICAKKyAgICBpZiAobV9vdGhlckNhbGxlZXMpIHsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5zaXpl
KCk7IGkrKykgeworICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKG1fb3RoZXJDYWxsZWVz
LT5tX3Byb2Nlc3NlZFtpXS5jYWxsZWUoKS5yYXdDYWxsZWVDZWxsKCkpKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBtX251bUNhbGxzVG9Vbmtu
b3duQ2VsbCArPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQoKTsKKyAgICAg
ICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpLS1dID0gbV9vdGhlckNhbGxlZXMt
Pm1fcHJvY2Vzc2VkLmxhc3QoKTsKKyAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nl
c3NlZC5yZW1vdmVMYXN0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIE9ubHkg
ZXhpc3RzIHdoaWxlIHdlIGFyZSBwcm9jZXNzaW5nIHRoZSBsb2cuCisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCFtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSk7CisgICAgfQorfQor
Cit2b2lkIENhbGxFZGdlUHJvZmlsZTo6YWRkU2xvdyhDYWxsVmFyaWFudCBjYWxsZWUsIENhbGxF
ZGdlUHJvZmlsZVZlY3RvciYgbWVyZ2VCYWNrTG9nKQoreworICAgIC8vIFRoaXMgZXhpc3RzIHRv
IGhhbmRsZSBjYXNlcyB3aGVyZSB0aGUgc3BlY3RydW0gd2Fzbid0IGNyZWF0ZWQgeWV0LCBvciB3
ZSdyZSBzdG9yaW5nIHRvIGEKKyAgICAvLyBwYXJ0aWN1bGFyIHNwZWN0cnVtIGZvciB0aGUgZmly
c3QgdGltZSBkdXJpbmcgYSBsb2cgcHJvY2Vzc2luZyBpdGVyYXRpb24uCisgICAgCisgICAgaWYg
KCFtX290aGVyQ2FsbGVlcykgeworICAgICAgICBtX290aGVyQ2FsbGVlcyA9IHN0ZDo6bWFrZV91
bmlxdWU8U2Vjb25kYXJ5PigpOworICAgICAgICAvLyBJZiBhIGNvbXBpbGVyIHRocmVhZCBub3Rp
Y2VzIHRoZSBtX290aGVyQ2FsbGVlcyBiZWluZyBub24tbnVsbCwgd2Ugd2FudCB0byBtYWtlIHN1
cmUKKyAgICAgICAgLy8gdGhhdCBpdCBzZWVzIGEgZnVsbHkgY3JlYXRlZCBvbmUuCisgICAgICAg
IFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CisgICAgfQorICAgIAorICAgIGlmICghbV9vdGhlckNh
bGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0pIHsKKyAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1f
dGVtcG9yYXJ5U3BlY3RydW0gPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxTcGVjdHJ1bT4oKTsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLnNpemUo
KTsgaS0tOykgeworICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3Ry
dW0tPmFkZCgKKyAgICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0u
Y2FsbGVlKCksCisgICAgICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ld
LmNvdW50KCkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBUaGlzIG1lYW5zIHRo
YXQgdGhpcyBpcyB0aGUgZmlyc3QgdGltZSB3ZSdyZSBzZWVpbmcgdGhpcyBwcm9maWxlIGR1cmlu
ZyB0aGlzIGxvZworICAgICAgICAvLyBwcm9jZXNzaW5nIGl0ZXJhdGlvbi4KKyAgICAgICAgbWVy
Z2VCYWNrTG9nLmFwcGVuZCh0aGlzKTsKKyAgICB9CisgICAgCisgICAgbV9vdGhlckNhbGxlZXMt
Pm1fdGVtcG9yYXJ5U3BlY3RydW0tPmFkZChjYWxsZWUpOworfQorCit2b2lkIENhbGxFZGdlUHJv
ZmlsZTo6bWVyZ2VCYWNrKCkKK3sKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xv
Y2spOworICAgIAorICAgIEFTU0VSVChtX290aGVyQ2FsbGVlcyk7CisgICAgQVNTRVJUKG1fb3Ro
ZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtKTsKKyAgICAKKyAgICBpZiAoISFtX3ByaW1h
cnlDYWxsZWUpCisgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5h
ZGQobV9wcmltYXJ5Q2FsbGVlLCBtX251bUNhbGxzVG9QcmltYXJ5KTsKKyAgICAKKyAgICBpZiAo
IW1fY2xvc3VyZXNBcmVEZXNwZWNpZmllZCkgeworICAgICAgICBDYWxsU3BlY3RydW0gbmV3U3Bl
Y3RydW07CisgICAgICAgIGZvciAoYXV0byBlbnRyeSA6ICptX290aGVyQ2FsbGVlcy0+bV90ZW1w
b3JhcnlTcGVjdHJ1bSkKKyAgICAgICAgICAgIG5ld1NwZWN0cnVtLmFkZChlbnRyeS5rZXkuZGVz
cGVjaWZpZWRDbG9zdXJlKCksIGVudHJ5LnZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChu
ZXdTcGVjdHJ1bS5zaXplKCkgPCBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+
c2l6ZSgpKSB7CisgICAgICAgICAgICAqbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3Ry
dW0gPSBuZXdTcGVjdHJ1bTsKKyAgICAgICAgICAgIG1fY2xvc3VyZXNBcmVEZXNwZWNpZmllZCA9
IHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgVmVjdG9yPENhbGxTcGVjdHJ1bTo6
S2V5QW5kQ291bnQ+IGxpc3QgPSBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+
YnVpbGRMaXN0KCk7CisgICAgbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0gPSBu
dWxscHRyOworICAgIAorICAgIG1fcHJpbWFyeUNhbGxlZSA9IGxpc3QubGFzdCgpLmtleTsKKyAg
ICBtX251bUNhbGxzVG9QcmltYXJ5ID0gbGlzdC5sYXN0KCkuY291bnQ7CisgICAgbGlzdC5yZW1v
dmVMYXN0KCk7CisgICAgCisgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLmNsZWFyKCk7
CisgICAgZm9yICh1bnNpZ25lZCBjb3VudCA9IG1heEtub3duQ2FsbGVlczsgY291bnQtLSAmJiAh
bGlzdC5pc0VtcHR5KCk7KSB7CisgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5h
cHBlbmQoQ2FsbEVkZ2UobGlzdC5sYXN0KCkua2V5LCBsaXN0Lmxhc3QoKS5jb3VudCkpOworICAg
ICAgICBsaXN0LnJlbW92ZUxhc3QoKTsKKyAgICB9CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBp
ID0gbGlzdC5zaXplKCk7IGktLTspCisgICAgICAgIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxsICs9
IGxpc3RbaV0uY291bnQ7Cit9CisKK3ZvaWQgQ2FsbEVkZ2VQcm9maWxlOjpmYWRlQnlIYWxmKCkK
K3sKKyAgICBtX251bUNhbGxzVG9QcmltYXJ5ID4+PSAxOworICAgIG1fbnVtQ2FsbHNUb05vdENl
bGwgPj49IDE7CisgICAgbV9udW1DYWxsc1RvVW5rbm93bkNlbGwgPj49IDE7CisgICAgbV90b3Rh
bENvdW50ID4+PSAxOworICAgIAorICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpLS07
KSB7CisgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0gPSBDYWxsRWRn
ZSgKKyAgICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVl
KCksCisgICAgICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNvdW50
KCkgPj4gMSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChtX290aGVyQ2FsbGVl
cy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGVudHJ5IDog
Km1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtKQorICAgICAgICAgICAgICAgIGVu
dHJ5LnZhbHVlID4+PSAxOworICAgICAgICB9CisgICAgfQorfQorCitDYWxsRWRnZUxvZzo6Q2Fs
bEVkZ2VMb2coKQorICAgIDogbV9zY2FsZWRMb2dJbmRleChsb2dTaXplICogc2l6ZW9mKEVudHJ5
KSkKK3sKKyAgICBBU1NFUlQoIShtX3NjYWxlZExvZ0luZGV4ICUgc2l6ZW9mKEVudHJ5KSkpOwor
fQorCitDYWxsRWRnZUxvZzo6fkNhbGxFZGdlTG9nKCkgeyB9CisKK2Jvb2wgQ2FsbEVkZ2VMb2c6
OmlzRW5hYmxlZCgpCit7CisgICAgcmV0dXJuIE9wdGlvbnM6OmVuYWJsZUNhbGxFZGdlUHJvZmls
aW5nKCkgJiYgT3B0aW9uczo6dXNlRlRMSklUKCk7Cit9CisKKyNpZiBFTkFCTEUoSklUKQorCitl
eHRlcm4gIkMiIEpJVF9PUEVSQVRJT04gdm9pZCBvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2co
Q2FsbEVkZ2VMb2cqKSBXVEZfSU5URVJOQUw7CitleHRlcm4gIkMiIEpJVF9PUEVSQVRJT04gdm9p
ZCBvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2coQ2FsbEVkZ2VMb2cqIGxvZykKK3sKKyAgICBs
b2ctPnByb2Nlc3NMb2coKTsKK30KKwordm9pZCBDYWxsRWRnZUxvZzo6ZW1pdExvZ0NvZGUoQ0Nh
bGxIZWxwZXJzJiBqaXQsIENhbGxFZGdlUHJvZmlsZSYgcHJvZmlsZSwgSlNWYWx1ZVJlZ3MgY2Fs
bGVlUmVncykKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50cyA9IDE7Cisg
ICAgCisgICAgR1BSUmVnIHNjcmF0Y2hHUFI7CisgICAgaWYgKCFjYWxsZWVSZWdzLnVzZXMoR1BS
SW5mbzo6cmVnVDApKQorICAgICAgICBzY3JhdGNoR1BSID0gR1BSSW5mbzo6cmVnVDA7CisgICAg
ZWxzZSBpZiAoIWNhbGxlZVJlZ3MudXNlcyhHUFJJbmZvOjpyZWdUMSkpCisgICAgICAgIHNjcmF0
Y2hHUFIgPSBHUFJJbmZvOjpyZWdUMTsKKyAgICBlbHNlCisgICAgICAgIHNjcmF0Y2hHUFIgPSBH
UFJJbmZvOjpyZWdUMjsKKyAgICAKKyAgICBqaXQubG9hZDMyKCZtX3NjYWxlZExvZ0luZGV4LCBz
Y3JhdGNoR1BSKTsKKyAgICAKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgb2sgPSBqaXQuYnJhbmNo
VGVzdDMyKENDYWxsSGVscGVyczo6Tm9uWmVybywgc2NyYXRjaEdQUik7CisgICAgCisgICAgQVNT
RVJUX1VOVVNFRChudW1iZXJPZkFyZ3VtZW50cywgc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSA+
PSAxICsgbnVtYmVyT2ZBcmd1bWVudHMpOworICAgIAorICAgIGppdC5zdWJQdHIoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoc3RhY2tBbGlnbm1lbnRCeXRlcygpKSwgQ0NhbGxIZWxwZXJzOjpz
dGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgCisgICAgaml0LnN0b3JlVmFsdWUoY2FsbGVlUmVn
cywgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIsIHNpemVvZihKU1ZhbHVlKSkpOworICAgIGppdC5zZXR1cEFyZ3VtZW50cyhDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIodGhpcykpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlvblByb2Nlc3NDYWxsRWRnZUxv
ZykpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICBqaXQuY2FsbChHUFJJbmZvOjpub25BcmdH
UFIwKTsKKyAgICBqaXQubG9hZFZhbHVlKENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBl
cnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzaXplb2YoSlNWYWx1ZSkpLCBjYWxsZWVSZWdzKTsK
KyAgICAKKyAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHN0YWNrQWxp
Z25tZW50Qnl0ZXMoKSksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAg
IAorICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGxvZ1NpemUgKiBzaXpl
b2YoRW50cnkpKSwgc2NyYXRjaEdQUik7CisgICAgb2subGluaygmaml0KTsKKworICAgIGppdC5z
dWIzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzaXplb2YoRW50cnkpKSwgc2NyYXRjaEdQ
Uik7CisgICAgaml0LnN0b3JlMzIoc2NyYXRjaEdQUiwgJm1fc2NhbGVkTG9nSW5kZXgpOworICAg
IGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fbG9nKSwgc2NyYXRjaEdQ
Uik7CisgICAgaml0LnN0b3JlVmFsdWUoY2FsbGVlUmVncywgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHNjcmF0Y2hHUFIsIE9CSkVDVF9PRkZTRVRPRihFbnRyeSwgbV92YWx1ZSkpKTsKKyAgICBqaXQu
c3RvcmVQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZwcm9maWxlKSwgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIE9CSkVDVF9PRkZTRVRPRihFbnRyeSwgbV9wcm9maWxl
KSkpOworfQorCit2b2lkIENhbGxFZGdlTG9nOjplbWl0TG9nQ29kZSgKKyAgICBDQ2FsbEhlbHBl
cnMmIGppdCwgT3duUHRyPENhbGxFZGdlUHJvZmlsZT4mIHByb2ZpbGVQb2ludGVyLCBKU1ZhbHVl
UmVncyBjYWxsZWVSZWdzKQoreworICAgIGlmICghaXNFbmFibGVkKCkpCisgICAgICAgIHJldHVy
bjsKKyAgICAKKyAgICBwcm9maWxlUG9pbnRlci5jcmVhdGVUcmFuc2FjdGlvbmFsbHkoKTsKKyAg
ICBlbWl0TG9nQ29kZShqaXQsICpwcm9maWxlUG9pbnRlciwgY2FsbGVlUmVncyk7Cit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoSklUKQorCit2b2lkIENhbGxFZGdlTG9nOjpwcm9jZXNzTG9nKCkKK3sK
KyAgICBBU1NFUlQoIShtX3NjYWxlZExvZ0luZGV4ICUgc2l6ZW9mKEVudHJ5KSkpOworICAgIAor
ICAgIGlmIChPcHRpb25zOjpjYWxsRWRnZVByb2ZpbGVSZWFsbHlQcm9jZXNzZXNMb2coKSkgewor
ICAgICAgICBDYWxsRWRnZVByb2ZpbGVWZWN0b3IgbWVyZ2VCYWNrTG9nOworICAgICAgICAKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9zY2FsZWRMb2dJbmRleCAvIHNpemVvZihFbnRyeSk7
IGkgPCBsb2dTaXplOyArK2kpCisgICAgICAgICAgICBtX2xvZ1tpXS5tX3Byb2ZpbGUtPmFkZCht
X2xvZ1tpXS5tX3ZhbHVlLCBtZXJnZUJhY2tMb2cpOworICAgICAgICAKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbWVyZ2VCYWNrTG9nLnNpemUoKTsgaS0tOykKKyAgICAgICAgICAgIG1lcmdl
QmFja0xvZ1tpXS0+bWVyZ2VCYWNrKCk7CisgICAgfQorICAgIAorICAgIG1fc2NhbGVkTG9nSW5k
ZXggPSBsb2dTaXplICogc2l6ZW9mKEVudHJ5KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9m
aWxlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bEVkZ2VQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDYWxsRWRnZVBy
b2ZpbGVfaAorI2RlZmluZSBDYWxsRWRnZVByb2ZpbGVfaAorCisjaW5jbHVkZSAiQ2FsbEVkZ2Uu
aCIKKyNpbmNsdWRlICJDYWxsVmFyaWFudC5oIgorI2luY2x1ZGUgIkNvbmN1cnJlbnRKSVRMb2Nr
LmgiCisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgQ0NhbGxIZWxwZXJzOworY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworCitjbGFzcyBDYWxsRWRnZUxvZzsKK2NsYXNzIENhbGxFZGdlUHJvZmlsZTsKK3R5
cGVkZWYgVmVjdG9yPENhbGxFZGdlUHJvZmlsZSosIDEwPiBDYWxsRWRnZVByb2ZpbGVWZWN0b3I7
CisKK2NsYXNzIENhbGxFZGdlUHJvZmlsZSB7CitwdWJsaWM6CisgICAgQ2FsbEVkZ2VQcm9maWxl
KCk7CisgICAgCisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbnVtQ2FsbHNUb05vdENlbGwoKSBjb25z
dCB7IHJldHVybiBtX251bUNhbGxzVG9Ob3RDZWxsOyB9CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUg
bnVtQ2FsbHNUb1Vua25vd25DZWxsKCkgY29uc3QgeyByZXR1cm4gbV9udW1DYWxsc1RvVW5rbm93
bkNlbGw7IH0KKyAgICBDYWxsRWRnZUNvdW50VHlwZSBudW1DYWxsc1RvS25vd25DZWxscygpIGNv
bnN0OworICAgIAorICAgIENhbGxFZGdlQ291bnRUeXBlIHRvdGFsQ2FsbHMoKSBjb25zdCB7IHJl
dHVybiBtX3RvdGFsQ291bnQ7IH0KKyAgICAKKyAgICAvLyBDYWxsIHdoaWxlIGhvbGRpbmcgdGhl
IG93bmluZyBDb2RlQmxvY2sncyBsb2NrLgorICAgIENhbGxFZGdlTGlzdCBjYWxsRWRnZXMoKSBj
b25zdDsKKyAgICAKKyAgICB2b2lkIHZpc2l0V2VhaygpOworICAgIAorcHJpdmF0ZToKKyAgICBm
cmllbmQgY2xhc3MgQ2FsbEVkZ2VMb2c7CisgICAgCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IG1heEtub3duQ2FsbGVlcyA9IDU7CisgICAgCisgICAgdm9pZCBhZGQoSlNWYWx1ZSwgQ2FsbEVk
Z2VQcm9maWxlVmVjdG9yJiBtZXJnZUJhY2tMb2cpOworICAgIAorICAgIGJvb2wgd29ydGhEZXNw
ZWNpZnlpbmcoKTsKKyAgICB2b2lkIGFkZFNsb3coQ2FsbFZhcmlhbnQsIENhbGxFZGdlUHJvZmls
ZVZlY3RvciYgbWVyZ2VCYWNrTG9nKTsKKyAgICB2b2lkIG1lcmdlQmFjaygpOworICAgIHZvaWQg
ZmFkZUJ5SGFsZigpOworICAgIAorICAgIC8vIEl0J3MgY2hlYXBlciB0byBsZXQgdGhpcyBoYXZl
IGl0cyBvd24gbG9jay4gSXQgbmVlZHMgdG8gYmUgYWJsZSB0byBmaW5kIHdoaWNoIGxvY2sgdG8K
KyAgICAvLyBsb2NrLiBOb3JtYWxseSBpdCB3b3VsZCBsb2NrIHRoZSBvd25pbmcgQ29kZUJsb2Nr
J3MgbG9jaywgYnV0IHRoYXQgd291bGQgcmVxdWlyZSBhCisgICAgLy8gcG9pbnRlci13aWR0aCB3
b3JkIHRvIHBvaW50IGF0IHRoZSBDb2RlQmxvY2suIEhhdmluZyB0aGUgYnl0ZS1zaXplZCBsb2Nr
IGhlcmUgaXMKKyAgICAvLyBjaGVhcGVyLiBIb3dldmVyLCB0aGlzIG1lYW5zIHRoYXQgdGhlIHJl
bGF0aW9uc2hpcCB3aXRoIHRoZSBDb2RlQmxvY2sgbG9jayBpczoKKyAgICAvLyBhY3F1aXJlIHRo
ZSBDb2RlQmxvY2sgbG9jayBiZWZvcmUgdGhpcyBvbmUuCisgICAgbXV0YWJsZSBDb25jdXJyZW50
SklUTG9jayBtX2xvY2s7CisgICAgCisgICAgYm9vbCBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQ7
CisgICAgCisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbV9udW1DYWxsc1RvUHJpbWFyeTsKKyAgICBD
YWxsRWRnZUNvdW50VHlwZSBtX251bUNhbGxzVG9Ob3RDZWxsOworICAgIENhbGxFZGdlQ291bnRU
eXBlIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxsOworICAgIENhbGxFZGdlQ291bnRUeXBlIG1fdG90
YWxDb3VudDsKKyAgICBDYWxsVmFyaWFudCBtX3ByaW1hcnlDYWxsZWU7CisgICAgCisgICAgdHlw
ZWRlZiBTcGVjdHJ1bTxDYWxsVmFyaWFudCwgQ2FsbEVkZ2VDb3VudFR5cGU+IENhbGxTcGVjdHJ1
bTsKKyAgICAKKyAgICBzdHJ1Y3QgU2Vjb25kYXJ5IHsKKyAgICAgICAgVmVjdG9yPENhbGxFZGdl
PiBtX3Byb2Nlc3NlZDsgLy8gUHJvY2Vzc2VkIGJ1dCBub3QgbmVjZXNzYXJpbHkgc29ydGVkLgor
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbFNwZWN0cnVtPiBtX3RlbXBvcmFyeVNwZWN0cnVt
OworICAgIH07CisgICAgCisgICAgc3RkOjp1bmlxdWVfcHRyPFNlY29uZGFyeT4gbV9vdGhlckNh
bGxlZXM7Cit9OworCitjbGFzcyBDYWxsRWRnZUxvZyB7CitwdWJsaWM6CisgICAgQ2FsbEVkZ2VM
b2coKTsKKyAgICB+Q2FsbEVkZ2VMb2coKTsKKworICAgIHN0YXRpYyBib29sIGlzRW5hYmxlZCgp
OworICAgIAorI2lmIEVOQUJMRShKSVQpCisgICAgdm9pZCBlbWl0TG9nQ29kZShDQ2FsbEhlbHBl
cnMmLCBDYWxsRWRnZVByb2ZpbGUmLCBKU1ZhbHVlUmVncyBjYWxsZWVSZWdzKTsgLy8gQXNzdW1l
cyB0aGF0IHN0YWNrIGlzIGFsaWduZWQsIGFsbCB2b2xhdGlsZSByZWdpc3RlcnMgLSBvdGhlciB0
aGFuIGNhbGxlZUdQUiAtIGFyZSBjbG9iYmVyYWJsZSwgYW5kIHRoZSBwYXJhbWV0ZXIgc3BhY2Ug
aXMgaW4gdXNlLgorICAgIAorICAgIC8vIFNhbWUgYXMgYWJvdmUgYnV0IGNyZWF0ZXMgYSBDYWxs
RWRnZVByb2ZpbGUgaW5zdGFuY2UgaWYgb25lIGRpZCBub3QgYWxyZWFkeSBleGlzdC4gRG9lcwor
ICAgIC8vIHRoaXMgaW4gYSB0aHJlYWQtc2FmZSBtYW5uZXIgYnkgY2FsbGluZyBPd25QdHI6OmNy
ZWF0ZVRyYW5zYWN0aW9uYWxseS4KKyAgICB2b2lkIGVtaXRMb2dDb2RlKENDYWxsSGVscGVycyYs
IE93blB0cjxDYWxsRWRnZVByb2ZpbGU+JiwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncyk7CisjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKKyAgICAKKyAgICB2b2lkIHByb2Nlc3NMb2coKTsKKyAgICAKK3By
aXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBsb2dTaXplID0gMTAwMDA7CisgICAgCisgICAgc3RydWN0IEVu
dHJ5IHsKKyAgICAgICAgSlNWYWx1ZSBtX3ZhbHVlOworICAgICAgICBDYWxsRWRnZVByb2ZpbGUq
IG1fcHJvZmlsZTsKKyAgICB9OworICAgIAorICAgIHVuc2lnbmVkIG1fc2NhbGVkTG9nSW5kZXg7
CisgICAgRW50cnkgbV9sb2dbbG9nU2l6ZV07Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIENhbGxFZGdlUHJvZmlsZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZUlubGluZXMuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGVJ
bmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENhbGxFZGdlUHJvZmlsZUlu
bGluZXNfaAorI2RlZmluZSBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzX2gKKworI2luY2x1ZGUgIkNh
bGxFZGdlUHJvZmlsZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworaW5saW5lIENhbGxFZGdlUHJv
ZmlsZTo6Q2FsbEVkZ2VQcm9maWxlKCkKKyAgICA6IG1fY2xvc3VyZXNBcmVEZXNwZWNpZmllZChm
YWxzZSkKKyAgICAsIG1fbnVtQ2FsbHNUb1ByaW1hcnkoMCkKKyAgICAsIG1fbnVtQ2FsbHNUb05v
dENlbGwoMCkKKyAgICAsIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxsKDApCisgICAgLCBtX3RvdGFs
Q291bnQoMCkKKyAgICAsIG1fcHJpbWFyeUNhbGxlZShudWxscHRyKQoreworfQorCitBTFdBWVNf
SU5MSU5FIHZvaWQgQ2FsbEVkZ2VQcm9maWxlOjphZGQoSlNWYWx1ZSB2YWx1ZSwgQ2FsbEVkZ2VQ
cm9maWxlVmVjdG9yJiBtZXJnZUJhY2tMb2cpCit7CisgICAgdW5zaWduZWQgbmV3VG90YWxDb3Vu
dCA9IG1fdG90YWxDb3VudCArIDE7CisgICAgaWYgKFVOTElLRUxZKCFuZXdUb3RhbENvdW50KSkg
eworICAgICAgICBmYWRlQnlIYWxmKCk7IC8vIFRhY2tsZSBvdmVyZmxvd3MgYnkgZGl2aWRpbmcg
YWxsIGNvdW50cyBieSB0d28uCisgICAgICAgIG5ld1RvdGFsQ291bnQgPSBtX3RvdGFsQ291bnQg
KyAxOworICAgIH0KKyAgICBBU1NFUlQobmV3VG90YWxDb3VudCk7CisgICAgbV90b3RhbENvdW50
ID0gbmV3VG90YWxDb3VudDsKKyAgICAKKyAgICBpZiAoVU5MSUtFTFkoIXZhbHVlLmlzQ2VsbCgp
KSkgeworICAgICAgICBtX251bUNhbGxzVG9Ob3RDZWxsKys7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBDYWxsVmFyaWFudCBjYWxsZWUgPSBDYWxsVmFyaWFudCh2YWx1ZS5hc0NlbGwo
KSk7CisgICAgCisgICAgaWYgKG1fY2xvc3VyZXNBcmVEZXNwZWNpZmllZCkKKyAgICAgICAgY2Fs
bGVlID0gY2FsbGVlLmRlc3BlY2lmaWVkQ2xvc3VyZSgpOworICAgIAorICAgIGlmIChVTkxJS0VM
WSghbV9wcmltYXJ5Q2FsbGVlKSkgeworICAgICAgICBtX3ByaW1hcnlDYWxsZWUgPSBjYWxsZWU7
CisgICAgICAgIG1fbnVtQ2FsbHNUb1ByaW1hcnkgPSAxOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgICAgICAKKyAgICBpZiAoTElLRUxZKG1fcHJpbWFyeUNhbGxlZSA9PSBjYWxsZWUpKSB7
CisgICAgICAgIG1fbnVtQ2FsbHNUb1ByaW1hcnkrKzsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAgICAgCisgICAgaWYgKFVOTElLRUxZKCFtX290aGVyQ2FsbGVlcykpIHsKKyAgICAgICAg
YWRkU2xvdyhjYWxsZWUsIG1lcmdlQmFja0xvZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgICAgIAorICAgIENhbGxTcGVjdHJ1bSogc2Vjb25kYXJ5ID0gbV9vdGhlckNhbGxlZXMtPm1f
dGVtcG9yYXJ5U3BlY3RydW0uZ2V0KCk7CisgICAgaWYgKCFzZWNvbmRhcnkpIHsKKyAgICAgICAg
YWRkU2xvdyhjYWxsZWUsIG1lcmdlQmFja0xvZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgICAgIAorICAgIHNlY29uZGFyeS0+YWRkKGNhbGxlZSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYgLy8gQ2FsbEVkZ2VQcm9maWxlSW5saW5lc19oCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCShyZXZpc2lv
biAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZv
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsMTEgQEAgdm9pZCBDYWxsTGlua0luZm86
OnZpc2l0V2VhayhSZXBhdGNoQnVmZgogICAgIH0KICAgICBpZiAoISFsYXN0U2VlbkNhbGxlZSAm
JiAhSGVhcDo6aXNNYXJrZWQobGFzdFNlZW5DYWxsZWUuZ2V0KCkpKQogICAgICAgICBsYXN0U2Vl
bkNhbGxlZS5jbGVhcigpOworICAgIAorICAgIGlmIChjYWxsRWRnZVByb2ZpbGUpIHsKKyAgICAg
ICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CisgICAgICAgIGNhbGxFZGdlUHJvZmlsZS0+dmlzaXRX
ZWFrKCk7CisgICAgfQogfQogCiBDYWxsTGlua0luZm8mIENhbGxMaW5rSW5mbzo6ZHVtbXkoKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAko
cmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxM
aW5rSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIENhbGxM
aW5rSW5mb19oCiAjZGVmaW5lIENhbGxMaW5rSW5mb19oCiAKKyNpbmNsdWRlICJDYWxsRWRnZVBy
b2ZpbGUuaCIKICNpbmNsdWRlICJDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmgiCiAjaW5jbHVkZSAi
Q29kZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgpAQCAt
MzMsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJPcGNvZGUu
aCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAg
LTg4LDYgKzkwLDcgQEAgc3RydWN0IENhbGxMaW5rSW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1Nlbgog
ICAgIHVuc2lnbmVkIGNhbGxlZUdQUiA6IDg7CiAgICAgdW5zaWduZWQgc2xvd1BhdGhDb3VudDsK
ICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW47CisgICAgT3duUHRyPENhbGxFZGdlUHJvZmlsZT4g
Y2FsbEVkZ2VQcm9maWxlOwogCiAgICAgYm9vbCBpc0xpbmtlZCgpIHsgcmV0dXJuIHN0dWIgfHwg
Y2FsbGVlOyB9CiAgICAgdm9pZCB1bmxpbmsoUmVwYXRjaEJ1ZmZlciYpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZp
c2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtT
dGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw1NCArMzIsMjIgQEAKICNpbmNsdWRlICJM
TEludENhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlIDx3
dGYvQ29tbWFQcmludGVyLmg+CisjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewogCiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKIENhbGxMaW5r
U3RhdHVzOjpDYWxsTGlua1N0YXR1cyhKU1ZhbHVlIHZhbHVlKQotICAgIDogbV9jYWxsVGFyZ2V0
KHZhbHVlKQotICAgICwgbV9leGVjdXRhYmxlKDApCi0gICAgLCBtX2NvdWxkVGFrZVNsb3dQYXRo
KGZhbHNlKQorICAgIDogbV9jb3VsZFRha2VTbG93UGF0aChmYWxzZSkKICAgICAsIG1faXNQcm92
ZWQoZmFsc2UpCiB7Ci0gICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkpCisgICAgaWYg
KCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkpIHsKKyAgICAgICAgbV9jb3VsZFRha2VTbG93UGF0
aCA9IHRydWU7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgCi0gICAgaWYgKCF2YWx1ZS5h
c0NlbGwoKS0+aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIAotICAgIG1fZXhlY3V0YWJsZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4odmFsdWUuYXNDZWxs
KCkpLT5leGVjdXRhYmxlKCk7Ci19Ci0KLUpTRnVuY3Rpb24qIENhbGxMaW5rU3RhdHVzOjpmdW5j
dGlvbigpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2NhbGxUYXJnZXQgfHwgIW1fY2FsbFRhcmdldC5p
c0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgaWYgKCFtX2NhbGxUYXJnZXQu
YXNDZWxsKCktPmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpCi0gICAgICAgIHJldHVybiAw
OwotICAgIAotICAgIHJldHVybiBqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2FsbFRhcmdldC5hc0Nl
bGwoKSk7Ci19Ci0KLUludGVybmFsRnVuY3Rpb24qIENhbGxMaW5rU3RhdHVzOjppbnRlcm5hbEZ1
bmN0aW9uKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fY2FsbFRhcmdldCB8fCAhbV9jYWxsVGFyZ2V0
LmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBpZiAoIW1fY2FsbFRhcmdl
dC5hc0NlbGwoKS0+aW5oZXJpdHMoSW50ZXJuYWxGdW5jdGlvbjo6aW5mbygpKSkKLSAgICAgICAg
cmV0dXJuIDA7Ci0gICAgCi0gICAgcmV0dXJuIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4obV9j
YWxsVGFyZ2V0LmFzQ2VsbCgpKTsKLX0KLQotSW50cmluc2ljIENhbGxMaW5rU3RhdHVzOjppbnRy
aW5zaWNGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKSBjb25zdAotewotICAgIGlmICgh
bV9leGVjdXRhYmxlKQotICAgICAgICByZXR1cm4gTm9JbnRyaW5zaWM7Ci0gICAgCi0gICAgcmV0
dXJuIG1fZXhlY3V0YWJsZS0+aW50cmluc2ljRm9yKGtpbmQpOworICAgIG1fZWRnZXMuYXBwZW5k
KENhbGxFZGdlKENhbGxWYXJpYW50KHZhbHVlLmFzQ2VsbCgpKSwgMSkpOwogfQogCiBDYWxsTGlu
a1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludChjb25zdCBDb25jdXJyZW50
SklUTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0
ZWNvZGVJbmRleCkKQEAgLTg3LDcgKzU1LDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVGcgogICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVT
RURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAjaWYgRU5BQkxFKERGR19KSVQpCi0gICAgaWYgKHBy
b2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5
dGVjb2RlSW5kZXgsIEJhZEZ1bmN0aW9uKSkpIHsKKyAgICBpZiAocHJvZmlsZWRCbG9jay0+aGFz
RXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFk
Q2VsbCkpKSB7CiAgICAgICAgIC8vIFdlIGNvdWxkIGZvcmNlIHRoaXMgdG8gYmUgYSBjbG9zdXJl
IGNhbGwsIGJ1dCBpbnN0ZWFkIHdlJ2xsIGp1c3QgYXNzdW1lIHRoYXQgaXQKICAgICAgICAgLy8g
dGFrZXMgc2xvdyBwYXRoLgogICAgICAgICByZXR1cm4gdGFrZXNTbG93UGF0aCgpOwpAQCAtMTI1
LDcgKzkzLDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGbwogICAg
IGlmICghY2FsbExpbmtJbmZvKQogICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChsb2Nr
ZXIsIHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOwogICAgIAotICAgIHJldHVybiBjb21w
dXRlRm9yKGxvY2tlciwgKmNhbGxMaW5rSW5mbywgZXhpdFNpdGVEYXRhKTsKKyAgICByZXR1cm4g
Y29tcHV0ZUZvcihsb2NrZXIsIHByb2ZpbGVkQmxvY2ssICpjYWxsTGlua0luZm8sIGV4aXRTaXRl
RGF0YSk7CiAjZWxzZQogICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygpOwogI2VuZGlmCkBAIC0x
MzksMTAgKzEwNywxMCBAQCBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRhIENhbGxMaW5rU3Rh
CiAgICAgCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgZXhpdFNpdGVEYXRhLm1fdGFrZXNTbG93
UGF0aCA9Ci0gICAgICAgIHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpG
cmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENhY2hlLCBleGl0aW5nSklUVHlwZSkp
CisgICAgICAgIHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVu
dEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZFR5cGUsIGV4aXRpbmdKSVRUeXBlKSkKICAgICAg
ICAgfHwgcHJvZmlsZWRCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhp
dFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkRXhlY3V0YWJsZSwgZXhpdGluZ0pJVFR5cGUpKTsKICAg
ICBleGl0U2l0ZURhdGEubV9iYWRGdW5jdGlvbiA9Ci0gICAgICAgIHByb2ZpbGVkQmxvY2stPmhh
c0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJh
ZEZ1bmN0aW9uLCBleGl0aW5nSklUVHlwZSkpOworICAgICAgICBwcm9maWxlZEJsb2NrLT5oYXNF
eGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRD
ZWxsLCBleGl0aW5nSklUVHlwZSkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obG9ja2VyKTsK
ICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CkBAIC0xNTQsNyArMTIyLDM0IEBAIENh
bGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgQ2FsbExpbmtTdGEKIH0KIAogI2lmIEVOQUJMRShK
SVQpCi1DYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcihjb25zdCBDb25j
dXJyZW50SklUTG9ja2VyJiwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pCitDYWxsTGlua1N0
YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKKyAgICBjb25zdCBDb25jdXJyZW50SklU
TG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQ2FsbExpbmtJbmZvJiBj
YWxsTGlua0luZm8pCit7CisgICAgLy8gV2UgZG9uJ3QgcmVhbGx5IG5lZWQgdGhpcywgYnV0IGFu
eXRpbWUgd2UgaGF2ZSB0byBkZWJ1ZyB0aGlzIGNvZGUsIGl0IGJlY29tZXMgaW5kaXNwZW5zYWJs
ZS4KKyAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CisgICAgCisgICAgaWYgKE9wdGlv
bnM6OmNhbGxTdGF0dXNTaG91bGRVc2VDYWxsRWRnZVByb2ZpbGUoKSkgeworICAgICAgICAvLyBB
bHdheXMgdHJ1c3QgdGhlIGNhbGwgZWRnZSBwcm9maWxlIG92ZXIgYW55dGhpbmcgZWxzZSBzaW5j
ZSB0aGlzIGhhcyBwcmVjaXNlIGNvdW50cy4KKyAgICAgICAgLy8gSXQgY2FuIG1ha2UgdGhlIGJl
c3QgcG9zc2libGUgZGVjaXNpb24gYmVjYXVzZSBpdCBuZXZlciAiZm9yZ2V0cyIgd2hhdCBoYXBw
ZW5lZCBmb3IgYW55CisgICAgICAgIC8vIGNhbGwsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBmYWRp
bmcgb3V0IHRoZSBjb3VudHMgb2Ygb2xkIGNhbGxzIChmb3IgZXhhbXBsZSBpZiB0aGUKKyAgICAg
ICAgLy8gY291bnRlciB0eXBlIGlzIDE2LWJpdCB0aGVuIGNhbGxzIHRoYXQgaGFwcGVuZWQgbW9y
ZSB0aGFuIDJeMTYgY2FsbHMgYWdvIGFyZSBnaXZlbiBoYWxmCisgICAgICAgIC8vIHdlaWdodCwg
YW5kIHRoaXMgY29tcG91bmRzIGZvciBldmVyeSAyXjE1IFtzaWNdIGNhbGxzIGFmdGVyIHRoYXQp
LiBUaGUgY29tYmluYXRpb24gb2YKKyAgICAgICAgLy8gaGlnaCBmaWRlbGl0eSBmb3IgcmVjZW50
IGNhbGxzIGFuZCBmYWRpbmcgZm9yIG9sZGVyIGNhbGxzIG1ha2VzIHRoaXMgdGhlIG1vc3QgdXNl
ZnVsCisgICAgICAgIC8vIG1lY2hhbWlzbSBvZiBjaG9vc2luZyBob3cgdG8gb3B0aW1pemUgZnV0
dXJlIGNhbGxzLgorICAgICAgICBDYWxsRWRnZVByb2ZpbGUqIGVkZ2VQcm9maWxlID0gY2FsbExp
bmtJbmZvLmNhbGxFZGdlUHJvZmlsZS5nZXQoKTsKKyAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNl
KCk7CisgICAgICAgIGlmIChlZGdlUHJvZmlsZSkgeworICAgICAgICAgICAgQ2FsbExpbmtTdGF0
dXMgcmVzdWx0ID0gY29tcHV0ZUZyb21DYWxsRWRnZVByb2ZpbGUoZWRnZVByb2ZpbGUpOworICAg
ICAgICAgICAgaWYgKCEhcmVzdWx0KQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIGNvbXB1dGVGcm9tQ2FsbExpbmtJbmZv
KGxvY2tlciwgY2FsbExpbmtJbmZvKTsKK30KKworQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVGcm9tQ2FsbExpbmtJbmZvKAorICAgIGNvbnN0IENvbmN1cnJlbnRKSVRMb2Nr
ZXImLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykKIHsKICAgICAvLyBOb3RlIHRoYXQgZGVz
cGl0ZSByZXF1aXJpbmcgdGhhdCB0aGUgbG9ja2VyIGlzIGhlbGQsIHRoaXMgY29kZSBpcyByYWN5
IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHRoZSBDYWxsTGlua0luZm86IGl0IG1heSBnZXQgY2xl
YXJlZCB3aGlsZSB0aGlzIGNvZGUgcnVucyEgVGhpcyBpcyBiZWNhdXNlCkBAIC0xNzcsNyArMTcy
LDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGbwogICAgIAogICAg
IEpTRnVuY3Rpb24qIHRhcmdldCA9IGNhbGxMaW5rSW5mby5sYXN0U2VlbkNhbGxlZS5nZXQoKTsK
ICAgICBpZiAoIXRhcmdldCkKLSAgICAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKCk7CisgICAg
ICAgIHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7CiAgICAgCiAgICAgaWYgKGNhbGxMaW5rSW5mby5o
YXNTZWVuQ2xvc3VyZSkKICAgICAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKHRhcmdldC0+ZXhl
Y3V0YWJsZSgpKTsKQEAgLTE4NSwxNSArMTgwLDQzIEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5r
U3RhdHVzOjpjb21wdXRlRm8KICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXModGFyZ2V0KTsKIH0K
IAotQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgY29uc3Qg
Q29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywg
RXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSkKK0NhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVz
Ojpjb21wdXRlRnJvbUNhbGxFZGdlUHJvZmlsZShDYWxsRWRnZVByb2ZpbGUqIGVkZ2VQcm9maWxl
KQogewotICAgIGlmIChleGl0U2l0ZURhdGEubV90YWtlc1Nsb3dQYXRoKQorICAgIC8vIEluIGNh
c2VzIHdoZXJlIHRoZSBjYWxsIGVkZ2UgcHJvZmlsZSBzYXcgbm90aGluZywgdXNlIHRoZSBDYWxs
TGlua0luZm8gaW5zdGVhZC4KKyAgICBpZiAoIWVkZ2VQcm9maWxlLT50b3RhbENhbGxzKCkpCisg
ICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygpOworICAgIAorICAgIC8vIFRvIGRvIGFueXRo
aW5nIG1lYW5pbmdmdWwsIHdlIHJlcXVpcmUgdGhhdCB0aGUgbWFqb3JpdHkgb2YgY2FsbHMgYXJl
IHRvIHNvbWV0aGluZyB3ZQorICAgIC8vIGtub3cgaG93IHRvIGhhbmRsZS4KKyAgICB1bnNpZ25l
ZCBudW1DYWxsc1RvS25vd24gPSBlZGdlUHJvZmlsZS0+bnVtQ2FsbHNUb0tub3duQ2VsbHMoKTsK
KyAgICB1bnNpZ25lZCBudW1DYWxsc1RvVW5rbm93biA9IGVkZ2VQcm9maWxlLT5udW1DYWxsc1Rv
Tm90Q2VsbCgpICsgZWRnZVByb2ZpbGUtPm51bUNhbGxzVG9Vbmtub3duQ2VsbCgpOworICAgIAor
ICAgIC8vIFdlIHJlcXVpcmUgdGhhdCB0aGUgbWFqb3JpdHkgb2YgY2FsbHMgd2VyZSB0byBzb21l
dGhpbmcgdGhhdCB3ZSBjb3VsZCBwb3NzaWJseSBpbmxpbmUuCisgICAgaWYgKG51bUNhbGxzVG9L
bm93biA8PSBudW1DYWxsc1RvVW5rbm93bikKKyAgICAgICAgcmV0dXJuIHRha2VzU2xvd1BhdGgo
KTsKKyAgICAKKyAgICAvLyBXZSByZXF1aXJlIHRoYXQgdGhlIG51bWJlciBvZiBzdWNoIGNhbGxz
IGlzIGdyZWF0ZXIgdGhhbiBzb21lIG1pbmltYWwgdGhyZXNob2xkLCBzbyB0aGF0IHdlCisgICAg
Ly8gYXZvaWQgaW5saW5pbmcgY29tcGxldGVseSBjb2xkIGNhbGxzLgorICAgIGlmIChudW1DYWxs
c1RvS25vd24gPCBPcHRpb25zOjpmcmVxdWVudENhbGxUaHJlc2hvbGQoKSkKICAgICAgICAgcmV0
dXJuIHRha2VzU2xvd1BhdGgoKTsKICAgICAKLSAgICBDYWxsTGlua1N0YXR1cyByZXN1bHQgPSBj
b21wdXRlRm9yKGxvY2tlciwgY2FsbExpbmtJbmZvKTsKKyAgICBDYWxsTGlua1N0YXR1cyByZXN1
bHQ7CisgICAgcmVzdWx0Lm1fZWRnZXMgPSBlZGdlUHJvZmlsZS0+Y2FsbEVkZ2VzKCk7CisgICAg
cmVzdWx0Lm1fY291bGRUYWtlU2xvd1BhdGggPSAhIW51bUNhbGxzVG9Vbmtub3duOworICAgIHJl
c3VsdC5tX2NhblRydXN0Q291bnRzID0gdHJ1ZTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKKyAgICBjb25z
dCBDb25jdXJyZW50SklUTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywg
Q2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sCisgICAgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0
YSkKK3sKKyAgICBDYWxsTGlua1N0YXR1cyByZXN1bHQgPSBjb21wdXRlRm9yKGxvY2tlciwgcHJv
ZmlsZWRCbG9jaywgY2FsbExpbmtJbmZvKTsKICAgICBpZiAoZXhpdFNpdGVEYXRhLm1fYmFkRnVu
Y3Rpb24pCiAgICAgICAgIHJlc3VsdC5tYWtlQ2xvc3VyZUNhbGwoKTsKKyAgICBpZiAoZXhpdFNp
dGVEYXRhLm1fdGFrZXNTbG93UGF0aCkKKyAgICAgICAgcmVzdWx0Lm1fY291bGRUYWtlU2xvd1Bh
dGggPSB0cnVlOwogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0yMjcsNyArMjUwLDcg
QEAgdm9pZCBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZURGR1N0YXR1c2VzKAogICAgICAgICAKICAg
ICAgICAgewogICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoZGZnQ29kZUJs
b2NrLT5tX2xvY2spOwotICAgICAgICAgICAgbWFwLmFkZChpbmZvLmNvZGVPcmlnaW4sIGNvbXB1
dGVGb3IobG9ja2VyLCBpbmZvLCBleGl0U2l0ZURhdGEpKTsKKyAgICAgICAgICAgIG1hcC5hZGQo
aW5mby5jb2RlT3JpZ2luLCBjb21wdXRlRm9yKGxvY2tlciwgZGZnQ29kZUJsb2NrLCBpbmZvLCBl
eGl0U2l0ZURhdGEpKTsKICAgICAgICAgfQogICAgIH0KICNlbHNlCkBAIC0yNTYsNiArMjc5LDMx
IEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICAgICByZXR1cm4g
Y29tcHV0ZUZvcihwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIGJhc2Vs
aW5lTWFwKTsKIH0KIAorYm9vbCBDYWxsTGlua1N0YXR1czo6aXNDbG9zdXJlQ2FsbCgpIGNvbnN0
Cit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9lZGdlcy5zaXplKCk7IGktLTspIHsKKyAgICAg
ICAgaWYgKG1fZWRnZXNbaV0uY2FsbGVlKCkuaXNDbG9zdXJlQ2FsbCgpKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDYWxsTGlu
a1N0YXR1czo6bWFrZUNsb3N1cmVDYWxsKCkKK3sKKyAgICBBU1NFUlQoIW1faXNQcm92ZWQpOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IG1fZWRnZXMuc2l6ZSgpOyBpLS07KQorICAgICAgICBtX2Vk
Z2VzW2ldID0gbV9lZGdlc1tpXS5kZXNwZWNpZmllZENsb3N1cmUoKTsKKyAgICAKKyAgICBpZiAo
IUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICAvLyBEb2luZyB0aGlzIHNob3VsZCBub3QgaGF2
ZSBjcmVhdGVkIGR1cGxpY2F0ZXMsIGJlY2F1c2UgdGhlIENhbGxFZGdlUHJvZmlsZQorICAgICAg
ICAvLyBzaG91bGQgZGVzcGVjaWZ5IGNsb3N1cmVzIGlmIGRvaW5nIHNvIHdvdWxkIHJlZHVjZSB0
aGUgbnVtYmVyIG9mIGtub3duIGNhbGxlZXMuCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX2VkZ2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGog
PSBpICsgMTsgaiA8IG1fZWRnZXMuc2l6ZSgpOyArK2opCisgICAgICAgICAgICAgICAgQVNTRVJU
KG1fZWRnZXNbaV0uY2FsbGVlKCkgIT0gbV9lZGdlc1tqXS5jYWxsZWUoKSk7CisgICAgICAgIH0K
KyAgICB9Cit9CisKIHZvaWQgQ2FsbExpbmtTdGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKIHsKICAgICBpZiAoIWlzU2V0KCkpIHsKQEAgLTI3MSwxNCArMzE5LDcgQEAgdm9pZCBD
YWxsTGlua1N0YXR1czo6ZHVtcChQcmludFN0cmVhbSYgbwogICAgIGlmIChtX2NvdWxkVGFrZVNs
b3dQYXRoKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsICJDb3VsZCBUYWtlIFNsb3cgUGF0aCIp
OwogICAgIAotICAgIGlmIChtX2NhbGxUYXJnZXQpCi0gICAgICAgIG91dC5wcmludChjb21tYSwg
Iktub3duIHRhcmdldDogIiwgbV9jYWxsVGFyZ2V0KTsKLSAgICAKLSAgICBpZiAobV9leGVjdXRh
YmxlKSB7Ci0gICAgICAgIG91dC5wcmludChjb21tYSwgIkV4ZWN1dGFibGUvQ2FsbEhhc2g6ICIs
IFJhd1BvaW50ZXIobV9leGVjdXRhYmxlKSk7Ci0gICAgICAgIGlmICghaXNDb21waWxhdGlvblRo
cmVhZCgpKQotICAgICAgICAgICAgb3V0LnByaW50KCIvIiwgbV9leGVjdXRhYmxlLT5oYXNoRm9y
KENvZGVGb3JDYWxsKSk7Ci0gICAgfQorICAgIG91dC5wcmludChsaXN0RHVtcChtX2VkZ2VzKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Niw5ICs0Niw5IEBAIHN0cnVjdCBDYWxsTGlua0luZm87CiBjbGFzcyBDYWxsTGlua1N0
YXR1cyB7CiBwdWJsaWM6CiAgICAgQ2FsbExpbmtTdGF0dXMoKQotICAgICAgICA6IG1fZXhlY3V0
YWJsZSgwKQotICAgICAgICAsIG1fY291bGRUYWtlU2xvd1BhdGgoZmFsc2UpCisgICAgICAgIDog
bV9jb3VsZFRha2VTbG93UGF0aChmYWxzZSkKICAgICAgICAgLCBtX2lzUHJvdmVkKGZhbHNlKQor
ICAgICAgICAsIG1fY2FuVHJ1c3RDb3VudHMoZmFsc2UpCiAgICAgewogICAgIH0KICAgICAKQEAg
LTYxLDEwICs2MSwxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgZXhwbGljaXQgQ2FsbExpbmtTdGF0
dXMoSlNWYWx1ZSk7CiAgICAgCi0gICAgQ2FsbExpbmtTdGF0dXMoRXhlY3V0YWJsZUJhc2UqIGV4
ZWN1dGFibGUpCi0gICAgICAgIDogbV9leGVjdXRhYmxlKGV4ZWN1dGFibGUpCisgICAgQ2FsbExp
bmtTdGF0dXMoQ2FsbFZhcmlhbnQgdmFyaWFudCkKKyAgICAgICAgOiBtX2VkZ2VzKDEsIENhbGxF
ZGdlKHZhcmlhbnQsIDEpKQogICAgICAgICAsIG1fY291bGRUYWtlU2xvd1BhdGgoZmFsc2UpCiAg
ICAgICAgICwgbV9pc1Byb3ZlZChmYWxzZSkKKyAgICAgICAgLCBtX2NhblRydXN0Q291bnRzKGZh
bHNlKQogICAgIHsKICAgICB9CiAgICAgCkBAIC05Miw4ICs5Myw5IEBAIHB1YmxpYzoKICNpZiBF
TkFCTEUoSklUKQogICAgIC8vIENvbXB1dGVzIHRoZSBzdGF0dXMgYXNzdW1pbmcgdGhhdCB3ZSBu
ZXZlciB0b29rIHNsb3cgcGF0aCBhbmQgbmV2ZXIgcHJldmlvdXNseQogICAgIC8vIGV4aXRlZC4K
LSAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcihjb25zdCBDb25jdXJyZW50SklU
TG9ja2VyJiwgQ2FsbExpbmtJbmZvJik7Ci0gICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1
dGVGb3IoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENhbGxMaW5rSW5mbyYsIEV4aXRTaXRl
RGF0YSk7CisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoY29uc3QgQ29uY3Vy
cmVudEpJVExvY2tlciYsIENvZGVCbG9jayosIENhbGxMaW5rSW5mbyYpOworICAgIHN0YXRpYyBD
YWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKAorICAgICAgICBjb25zdCBDb25jdXJyZW50SklUTG9j
a2VyJiwgQ29kZUJsb2NrKiwgQ2FsbExpbmtJbmZvJiwgRXhpdFNpdGVEYXRhKTsKICNlbmRpZgog
ICAgIAogICAgIHR5cGVkZWYgSGFzaE1hcDxDb2RlT3JpZ2luLCBDYWxsTGlua1N0YXR1cywgQ29k
ZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gQ29udGV4dE1hcDsKQEAgLTEwNywzNyArMTA5LDM4IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcigKICAgICAgICAg
Q29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiwgY29uc3QgQ29u
dGV4dE1hcCYpOwogICAgIAotICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxU
YXJnZXQgfHwgbV9leGVjdXRhYmxlIHx8IG1fY291bGRUYWtlU2xvd1BhdGg7IH0KKyAgICBib29s
IGlzU2V0KCkgY29uc3QgeyByZXR1cm4gIW1fZWRnZXMuaXNFbXB0eSgpIHx8IG1fY291bGRUYWtl
U2xvd1BhdGg7IH0KICAgICAKICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFp
c1NldCgpOyB9CiAgICAgCiAgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fY291bGRUYWtlU2xvd1BhdGg7IH0KLSAgICBib29sIGlzQ2xvc3VyZUNhbGwoKSBjb25z
dCB7IHJldHVybiBtX2V4ZWN1dGFibGUgJiYgIW1fY2FsbFRhcmdldDsgfQogICAgIAotICAgIEpT
VmFsdWUgY2FsbFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdldDsgfQotICAgIEpT
RnVuY3Rpb24qIGZ1bmN0aW9uKCkgY29uc3Q7Ci0gICAgSW50ZXJuYWxGdW5jdGlvbiogaW50ZXJu
YWxGdW5jdGlvbigpIGNvbnN0OwotICAgIEludHJpbnNpYyBpbnRyaW5zaWNGb3IoQ29kZVNwZWNp
YWxpemF0aW9uS2luZCkgY29uc3Q7Ci0gICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUoKSBj
b25zdCB7IHJldHVybiBtX2V4ZWN1dGFibGU7IH0KKyAgICBDYWxsRWRnZUxpc3QgZWRnZXMoKSBj
b25zdCB7IHJldHVybiBtX2VkZ2VzOyB9CisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZWRnZXMuc2l6ZSgpOyB9CisgICAgQ2FsbEVkZ2UgYXQodW5zaWduZWQgaSkgY29uc3Qg
eyByZXR1cm4gbV9lZGdlc1tpXTsgfQorICAgIENhbGxFZGdlIG9wZXJhdG9yW10odW5zaWduZWQg
aSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0KICAgICBib29sIGlzUHJvdmVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc1Byb3ZlZDsgfQotICAgIGJvb2wgY2FuT3B0aW1pemUoKSBjb25zdCB7IHJldHVy
biAobV9jYWxsVGFyZ2V0IHx8IG1fZXhlY3V0YWJsZSkgJiYgIW1fY291bGRUYWtlU2xvd1BhdGg7
IH0KKyAgICBib29sIGNhbk9wdGltaXplKCkgY29uc3QgeyByZXR1cm4gIW1fZWRnZXMuaXNFbXB0
eSgpOyB9CisgICAgYm9vbCBjYW5UcnVzdENvdW50cygpIGNvbnN0IHsgcmV0dXJuIG1fY2FuVHJ1
c3RDb3VudHM7IH0KKyAgICAKKyAgICBib29sIGlzQ2xvc3VyZUNhbGwoKSBjb25zdDsgLy8gUmV0
dXJucyB0cnVlIGlmIGFueSBjYWxsZWUgaXMgYSBjbG9zdXJlIGNhbGwuCiAgICAgCiAgICAgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgotICAgIHZvaWQgbWFr
ZUNsb3N1cmVDYWxsKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9pc1Byb3ZlZCk7Ci0gICAg
ICAgIC8vIFR1cm4gdGhpcyBpbnRvIGEgY2xvc3VyZSBjYWxsLgotICAgICAgICBtX2NhbGxUYXJn
ZXQgPSBKU1ZhbHVlKCk7Ci0gICAgfQorICAgIHZvaWQgbWFrZUNsb3N1cmVDYWxsKCk7CiAgICAg
CiAgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGcm9tTExJbnQoY29uc3QgQ29uY3Vy
cmVudEpJVExvY2tlciYsIENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworI2lm
IEVOQUJMRShKSVQpCisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGcm9tQ2FsbEVk
Z2VQcm9maWxlKENhbGxFZGdlUHJvZmlsZSopOworICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBj
b21wdXRlRnJvbUNhbGxMaW5rSW5mbygKKyAgICAgICAgY29uc3QgQ29uY3VycmVudEpJVExvY2tl
ciYsIENhbGxMaW5rSW5mbyYpOworI2VuZGlmCiAgICAgCi0gICAgSlNWYWx1ZSBtX2NhbGxUYXJn
ZXQ7Ci0gICAgRXhlY3V0YWJsZUJhc2UqIG1fZXhlY3V0YWJsZTsKKyAgICBDYWxsRWRnZUxpc3Qg
bV9lZGdlczsKICAgICBib29sIG1fY291bGRUYWtlU2xvd1BhdGg7CiAgICAgYm9vbCBtX2lzUHJv
dmVkOworICAgIGJvb2wgbV9jYW5UcnVzdENvdW50czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQu
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxW
YXJpYW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJDYWxsVmFyaWFudC5oIgorCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCituYW1l
c3BhY2UgSlNDIHsKKwordm9pZCBDYWxsVmFyaWFudDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBj
b25zdAoreworICAgIGlmICghKnRoaXMpIHsKKyAgICAgICAgb3V0LnByaW50KCJudWxsIik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKEludGVybmFsRnVuY3Rpb24qIGlu
dGVybmFsRnVuY3Rpb24gPSB0aGlzLT5pbnRlcm5hbEZ1bmN0aW9uKCkpIHsKKyAgICAgICAgb3V0
LnByaW50KCJJbnRlcm5hbEZ1bmN0aW9uOiAiLCBKU1ZhbHVlKGludGVybmFsRnVuY3Rpb24pKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoSlNGdW5jdGlvbiogZnVuY3Rp
b24gPSB0aGlzLT5mdW5jdGlvbigpKSB7CisgICAgICAgIG91dC5wcmludCgiKEZ1bmN0aW9uOiAi
LCBKU1ZhbHVlKGZ1bmN0aW9uKSwgIjsgRXhlY3V0YWJsZTogIiwgKmV4ZWN1dGFibGUoKSwgIiki
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBvdXQucHJpbnQoIkV4ZWN1dGFi
bGU6ICIsICpleGVjdXRhYmxlKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDE2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENhbGxWYXJpYW50X2gKKyNkZWZpbmUgQ2FsbFZh
cmlhbnRfaAorCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbC5oIgor
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIENhbGxW
YXJpYW50IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBDYWxsVmFyaWFudChKU0NlbGwqIGNhbGxl
ZSA9IG51bGxwdHIpCisgICAgICAgIDogbV9jYWxsZWUoY2FsbGVlKQorICAgIHsKKyAgICB9Cisg
ICAgCisgICAgQ2FsbFZhcmlhbnQoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQorICAg
ICAgICA6IG1fY2FsbGVlKGRlbGV0ZWRUb2tlbigpKQorICAgIHsKKyAgICB9CisgICAgCisgICAg
Ym9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7IH0KKyAgICAKKyAgICAv
LyBJZiB0aGlzIHZhcmlhbnQgcmVmZXJzIHRvIGEgZnVuY3Rpb24sIGNoYW5nZSBpdCB0byByZWZl
ciB0byBpdHMgZXhlY3V0YWJsZS4KKyAgICBBTFdBWVNfSU5MSU5FIENhbGxWYXJpYW50IGRlc3Bl
Y2lmaWVkQ2xvc3VyZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9jYWxsZWUtPnR5cGUo
KSA9PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICAgICAgICAgIHJldHVybiBDYWxsVmFyaWFudChqc0Nh
c3Q8SlNGdW5jdGlvbio+KG1fY2FsbGVlKS0+ZXhlY3V0YWJsZSgpKTsKKyAgICAgICAgcmV0dXJu
ICp0aGlzOworICAgIH0KKyAgICAKKyAgICBKU0NlbGwqIHJhd0NhbGxlZUNlbGwoKSBjb25zdCB7
IHJldHVybiBtX2NhbGxlZTsgfQorICAgIAorICAgIEludGVybmFsRnVuY3Rpb24qIGludGVybmFs
RnVuY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SW50
ZXJuYWxGdW5jdGlvbio+KG1fY2FsbGVlKTsKKyAgICB9CisgICAgCisgICAgSlNGdW5jdGlvbiog
ZnVuY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNG
dW5jdGlvbio+KG1fY2FsbGVlKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0Nsb3N1cmVDYWxs
KCkgY29uc3QgeyByZXR1cm4gISFqc0R5bmFtaWNDYXN0PEV4ZWN1dGFibGVCYXNlKj4obV9jYWxs
ZWUpOyB9CisgICAgCisgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUoKSBjb25zdAorICAg
IHsKKyAgICAgICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gdGhpcy0+ZnVuY3Rpb24oKSkK
KyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbi0+ZXhlY3V0YWJsZSgpOworICAgICAgICByZXR1
cm4ganNEeW5hbWljQ2FzdDxFeGVjdXRhYmxlQmFzZSo+KG1fY2FsbGVlKTsKKyAgICB9CisgICAg
CisgICAgSlNDZWxsKiBub25FeGVjdXRhYmxlQ2FsbGVlKCkgY29uc3QKKyAgICB7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKCFpc0Nsb3N1cmVDYWxsKCkpOworICAgICAgICByZXR1cm4gbV9jYWxs
ZWU7CisgICAgfQorICAgIAorICAgIEludHJpbnNpYyBpbnRyaW5zaWNGb3IoQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKEV4ZWN1dGFibGVCYXNl
KiBleGVjdXRhYmxlID0gdGhpcy0+ZXhlY3V0YWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIGV4
ZWN1dGFibGUtPmludHJpbnNpY0ZvcihraW5kKTsKKyAgICAgICAgcmV0dXJuIE5vSW50cmluc2lj
OworICAgIH0KKyAgICAKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUg
PSB0aGlzLT5leGVjdXRhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxG
dW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorICAgIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKKyAg
ICAKKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2NhbGxlZSA9PSBkZWxldGVkVG9rZW4oKTsKKyAgICB9CisgICAgCisgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2NhbGxlZSA9PSBvdGhlci5tX2NhbGxlZTsKKyAgICB9CisgICAgCisg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAgICB9CisgICAgCisgICAgYm9v
bCBvcGVyYXRvcjwoY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fY2FsbGVlIDwgb3RoZXIubV9jYWxsZWU7CisgICAgfQorICAgIAorICAgIGJv
b2wgb3BlcmF0b3I+KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBvdGhlciA8ICp0aGlzOworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9y
PD0oY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
ICEoKnRoaXMgPCBvdGhlcik7CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3I+PShjb25z
dCBDYWxsVmFyaWFudCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gb3RoZXIg
PD0gKnRoaXM7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIFdURjo6UHRySGFzaDxKU0NlbGwqPjo6aGFzaChtX2NhbGxlZSk7Cisg
ICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBzdGF0aWMgSlNDZWxsKiBkZWxldGVkVG9rZW4oKSB7
IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSk7
IH0KKyAgICAKKyAgICBKU0NlbGwqIG1fY2FsbGVlOworfTsKKworc3RydWN0IENhbGxWYXJpYW50
SGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgQ2FsbFZhcmlhbnQmIGtleSkg
eyByZXR1cm4ga2V5Lmhhc2goKTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENhbGxW
YXJpYW50JiBhLCBjb25zdCBDYWxsVmFyaWFudCYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAg
c3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOwor
fTsKKwordHlwZWRlZiBWZWN0b3I8Q2FsbFZhcmlhbnQsIDE+IENhbGxWYXJpYW50TGlzdDsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxK
U0M6OkNhbGxWYXJpYW50PiB7CisgICAgdHlwZWRlZiBKU0M6OkNhbGxWYXJpYW50SGFzaCBIYXNo
OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM7Cit0ZW1wbGF0
ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6Q2FsbFZhcmlhbnQ+IDogU2ltcGxlQ2xhc3NIYXNo
VHJhaXRzPEpTQzo6Q2FsbFZhcmlhbnQ+IHsgfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNl
bmRpZiAvLyBDYWxsVmFyaWFudF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlT3JpZ2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVPcmlnaW4uaAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDYgKzE1
NCwxNyBAQCBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lIHsKICAgICAgICAgcmV0dXJuIENvZGVGb3JD
YWxsOwogICAgIH0KICAgICAKKyAgICBzdGF0aWMgYm9vbCBpc05vcm1hbENhbGwoS2luZCBraW5k
KQorICAgIHsKKyAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIGNhc2UgQ2FsbDoKKyAg
ICAgICAgY2FzZSBDb25zdHJ1Y3Q6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKICAgICBWZWN0b3I8VmFsdWVSZWNvdmVyeT4gYXJndW1lbnRzOyAvLyBJbmNsdWRlcyAndGhp
cycuCiAgICAgV3JpdGVCYXJyaWVyPFNjcmlwdEV4ZWN1dGFibGU+IGV4ZWN1dGFibGU7CiAgICAg
VmFsdWVSZWNvdmVyeSBjYWxsZWVSZWNvdmVyeTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGl0S2luZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V4aXRLaW5kLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgs
OCArMzgsOCBAQCBjb25zdCBjaGFyKiBleGl0S2luZFRvU3RyaW5nKEV4aXRLaW5kIGtpCiAgICAg
ICAgIHJldHVybiAiVW5zZXQiOwogICAgIGNhc2UgQmFkVHlwZToKICAgICAgICAgcmV0dXJuICJC
YWRUeXBlIjsKLSAgICBjYXNlIEJhZEZ1bmN0aW9uOgotICAgICAgICByZXR1cm4gIkJhZEZ1bmN0
aW9uIjsKKyAgICBjYXNlIEJhZENlbGw6CisgICAgICAgIHJldHVybiAiQmFkQ2VsbCI7CiAgICAg
Y2FzZSBCYWRFeGVjdXRhYmxlOgogICAgICAgICByZXR1cm4gIkJhZEV4ZWN1dGFibGUiOwogICAg
IGNhc2UgQmFkQ2FjaGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhp
dEtpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhp
dEtpbmQuaAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0V4aXRLaW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiBlbnVtIEV4aXRLaW5kIDogdWludDhfdCB7CiAgICAgRXhpdEtpbmRVbnNldCwKICAg
ICBCYWRUeXBlLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSBhIHR5cGUgcHJlZGljdGlvbiB3YXMgd3Jv
bmcuCi0gICAgQmFkRnVuY3Rpb24sIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIG1hZGUgYW4gaW5j
b3JyZWN0IGFzc3VtcHRpb24gYWJvdXQgd2hhdCBmdW5jdGlvbiB3ZSB3b3VsZCBzZWUuCisgICAg
QmFkQ2VsbCwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2UgbWFkZSBhbiBpbmNvcnJlY3QgYXNzdW1w
dGlvbiBhYm91dCB3aGF0IGNlbGwgd2Ugd291bGQgc2VlLiBVc3VhbGx5IHVzZWQgZm9yIGZ1bmN0
aW9uIGNoZWNrcy4KICAgICBCYWRFeGVjdXRhYmxlLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSB3ZSBt
YWRlIGFuIGluY29ycmVjdCBhc3N1bXB0aW9uIGFib3V0IHdoYXQgZXhlY3V0YWJsZSB3ZSB3b3Vs
ZCBzZWUuCiAgICAgQmFkQ2FjaGUsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIGFuIGlubGluZSBjYWNo
ZSB3YXMgd3JvbmcuCiAgICAgQmFkQ29uc3RhbnRDYWNoZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ug
YSBjYWNoZSBvbiBhIHdlYWsgY29uc3RhbnQgKHVzdWFsbHkgYSBwcm90b3R5cGUpIHdhcyB3cm9u
Zy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0
YXR1cy5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg3LDcgKzE4Nyw4IEBA
IEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclMKICAgICAgICAgICAgICAg
ICAgICAgQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUqIHN0dWIgPSBzdGF0aWNfY2FzdDxBY2Nl
c3NvckNhbGxKSVRTdHViUm91dGluZSo+KAogICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC0+
YXQobGlzdEluZGV4KS5zdHViUm91dGluZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbExp
bmtTdGF0dXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5rU3RhdHVzPigKLSAgICAgICAgICAg
ICAgICAgICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKGxvY2tlciwgKnN0dWItPm1f
Y2FsbExpbmtJbmZvLCBjYWxsRXhpdFNpdGVEYXRhKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssICpzdHViLT5tX2NhbGxMaW5rSW5mbywgY2FsbEV4aXRT
aXRlRGF0YSkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRCeUlkQWNjZXNzOjpDdXN0b21HZXR0ZXI6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3Bw
CShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Nyw3ICsyNDcsNyBAQCBQdXRCeUlk
U3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTCiAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxDYWxsTGlua1N0YXR1cz4gY2FsbExpbmtTdGF0dXMgPQogICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4oCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tlciwgKnN0dWItPm1fY2FsbExpbmtJbmZvLCBj
YWxsRXhpdFNpdGVEYXRhKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tl
ciwgcHJvZmlsZWRCbG9jaywgKnN0dWItPm1fY2FsbExpbmtJbmZvLCBjYWxsRXhpdFNpdGVEYXRh
KSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICB2YXJpYW50ID0g
UHV0QnlJZFZhcmlhbnQ6OnNldHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVy
ZSwgY29tcGxleEdldFN0YXR1cy5vZmZzZXQoKSwgY29tcGxleEdldFN0YXR1cy5jaGFpbigpLApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDU5LDE0ICsxNDU5LDYgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeQogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOiB7Ci0gICAg
ICAgIC8vIEZJWE1FOiBXZSBjb3VsZCB0cmFjayBleGVjdXRhYmxlcyBpbiBBYnN0cmFjdFZhbHVl
LCB3aGljaCB3b3VsZCBhbGxvdyB1cyB0byBnZXQgcmlkIG9mIHRoZXNlIGNoZWNrcwotICAgICAg
ICAvLyBtb3JlIHRob3JvdWdobHkuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDYyMDAKLSAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIGVsaW1pbmF0ZSB0aGVzZSBl
bnRpcmVseSBpZiB3ZSBrbm93IHRoZSBleGFjdCB2YWx1ZSB0aGF0IGZsb3dzIGludG8gdGhpcy4K
LSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjIw
MQotICAgICAgICBicmVhazsKLSAgICB9Ci0KICAgICBjYXNlIENoZWNrU3RydWN0dXJlOiB7CiAg
ICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBwcm9wYWdhdGUgdGhlIHN0cnVj
dHVyZSBzZXRzIG9mIGNvbnN0YW50cyAoaS5lLiBwcm90b3R5cGVzKS4KICAgICAgICAgQWJzdHJh
Y3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKQEAgLTE3MjYsMTYgKzE3
MTgsMjkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAg
ICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQor
ICAgICAgICAKKyAgICBjYXNlIEdldEV4ZWN1dGFibGU6IHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1
ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlmICh2YWx1ZSkg
eworICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVu
Y3Rpb24qPih2YWx1ZSk7CisgICAgICAgICAgICBpZiAoZnVuY3Rpb24pIHsKKyAgICAgICAgICAg
ICAgICBzZXRDb25zdGFudChub2RlLCAqbV9ncmFwaC5mcmVlemUoZnVuY3Rpb24tPmV4ZWN1dGFi
bGUoKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjQ2VsbE90aGVyKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQogICAgIAotICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjogeworICAgIGNhc2Ug
Q2hlY2tDZWxsOiB7CiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS52YWx1ZSgpOwotICAgICAgICBpZiAodmFsdWUgPT0gbm9kZS0+ZnVuY3Rpb24oKS0+dmFs
dWUoKSkgeworICAgICAgICBpZiAodmFsdWUgPT0gbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUo
KSkgewogICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKICAgICAg
ICAgICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICAKLSAgICAgICAgZmlsdGVyQnlWYWx1ZShub2RlLT5jaGlsZDEoKSwgKm5vZGUtPmZ1bmN0
aW9uKCkpOworICAgICAgICBmaWx0ZXJCeVZhbHVlKG5vZGUtPmNoaWxkMSgpLCAqbm9kZS0+Y2Vs
bE9wZXJhbmQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC0xODU5LDgg
KzE4NjQsNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAg
ICAgIAogICAgIGNhc2UgVmFyaWFibGVXYXRjaHBvaW50OgogICAgIGNhc2UgVmFySW5qZWN0aW9u
V2F0Y2hwb2ludDoKLSAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKICAgICBjYXNlIFB1dEds
b2JhbFZhcjoKICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAgICAgICBicmVhazsKQEAgLTE5MDAs
NyArMTkwMywxNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAg
ICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAgYnJlYWs7CiAKKyAg
ICBjYXNlIFByb2ZpbGVkQ2FsbDoKKyAgICBjYXNlIFByb2ZpbGVkQ29uc3RydWN0OgorICAgICAg
ICBpZiAoZm9yTm9kZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKS5tX3ZhbHVlKQorICAg
ICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKKyAgICAgICAgY2xvYmJl
cldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKKyAgICAgICAgZm9y
Tm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgRm9y
Y2VPU1JFeGl0OgorICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgICAgICBtX3N0YXRlLnNldElz
VmFsaWQoZmFsc2UpOwogICAgICAgICBicmVhazsKICAgICAgICAgCkBAIC0xOTU1LDcgKzE5Njcs
OCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgY2FzZSBM
YXN0Tm9kZVR5cGU6CiAgICAgY2FzZSBBcml0aElNdWw6CiAgICAgY2FzZSBGaWF0SW50NTI6Ci0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgY2FzZSBCb3R0b21WYWx1
ZToKKyAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG5vZGUsICJVbmV4cGVjdGVkIG5vZGUgdHlw
ZSIpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5j
cHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFj
a3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4OSw2ICszODks
MTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAvLyB0aGVuIC0wIGFuZCAwIGFyZSB0cmVh
dGVkIHRoZSBzYW1lLgogICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgpLT5tZXJnZUZsYWdz
KE5vZGVCeXRlY29kZVVzZXNBc051bWJlciB8IE5vZGVCeXRlY29kZVVzZXNBc090aGVyKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU3dpdGNoQ2VsbDoKKyAgICAg
ICAgICAgICAgICAvLyBUaGVyZSBpcyBjdXJyZW50bHkgbm8gcG9pbnQgdG8gYmVpbmcgY2xldmVy
IGhlcmUgc2luY2UgdGhpcyBpcyB1c2VkIGZvciBzd2l0Y2hpbmcKKyAgICAgICAgICAgICAgICAv
LyBvbiBvYmplY3RzLgorICAgICAgICAgICAgICAgIG1lcmdlRGVmYXVsdEZsYWdzKG5vZGUpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9j
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsOSBAQCBCYXNpY0Js
b2NrOjpCYXNpY0Jsb2NrKAogewogfQogCi1CYXNpY0Jsb2NrOjp+QmFzaWNCbG9jaygpIHsgfQor
QmFzaWNCbG9jazo6fkJhc2ljQmxvY2soKQoreworfQogCiB2b2lkIEJhc2ljQmxvY2s6OmVuc3Vy
ZUxvY2Fscyh1bnNpZ25lZCBuZXdOdW1Mb2NhbHMpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYg
KzYyLDcgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIE5v
ZGUqJiBvcGVyYXRvcltdKHNpemVfdCBpKSB7IHJldHVybiBhdChpKTsgfQogICAgIE5vZGUqIG9w
ZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIGF0KGkpOyB9CiAgICAgTm9kZSogbGFz
dCgpIGNvbnN0IHsgcmV0dXJuIGF0KHNpemUoKSAtIDEpOyB9CisgICAgTm9kZSogdGFrZUxhc3Qo
KSB7IHJldHVybiBtX25vZGVzLnRha2VMYXN0KCk7IH0KICAgICB2b2lkIHJlc2l6ZShzaXplX3Qg
c2l6ZSkgeyBtX25vZGVzLnJlc2l6ZShzaXplKTsgfQogICAgIHZvaWQgZ3JvdyhzaXplX3Qgc2l6
ZSkgeyBtX25vZGVzLmdyb3coc2l6ZSk7IH0KICAgICAKQEAgLTEwNiw2ICsxMDcsMTMgQEAgc3Ry
dWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIAogICAgIHZvaWQgZHVt
cChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKICAgICAKKyAgICB2b2lkIGRpZExpbmsoKQorICAg
IHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIGlzTGlua2VkID0gdHJ1ZTsKKyNlbmRp
ZgorICAgIH0KKyAgICAKICAgICAvLyBUaGlzIHZhbHVlIGlzIHVzZWQgaW50ZXJuYWxseSBmb3Ig
YmxvY2sgbGlua2luZyBhbmQgT1NSIGVudHJ5LiBJdCBpcyBtb3N0bHkgbWVhbmluZ2xlc3MKICAg
ICAvLyBmb3Igb3RoZXIgcHVycG9zZXMgZHVlIHRvIGlubGluaW5nLgogICAgIHVuc2lnbmVkIGJ5
dGVjb2RlQmVnaW47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUw
LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCitzdGF0aWMgY29uc3Qg
Ym9vbCB2ZXJib3NlID0gZmFsc2U7CisKIGNsYXNzIENvbnN0YW50QnVmZmVyS2V5IHsKIHB1Ymxp
YzoKICAgICBDb25zdGFudEJ1ZmZlcktleSgpCkBAIC0xNzgsMTQgKzE4MCwyMCBAQCBwcml2YXRl
OgogICAgICAgICBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9m
ZnNldCwgQ2FsbExpbmtTdGF0dXMpOwogICAgIHZvaWQgaGFuZGxlQ2FsbChpbnQgcmVzdWx0LCBO
b2RlVHlwZSBvcCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25T
aXplLCBpbnQgY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCk7CiAgICAg
dm9pZCBoYW5kbGVDYWxsKEluc3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3AsIENvZGVTcGVjaWFs
aXphdGlvbktpbmQpOwotICAgIHZvaWQgZW1pdEZ1bmN0aW9uQ2hlY2tzKGNvbnN0IENhbGxMaW5r
U3RhdHVzJiwgTm9kZSogY2FsbFRhcmdldCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kKTsKKyAgICB2b2lkIGVtaXRGdW5jdGlvbkNoZWNrcyhDYWxsVmFyaWFudCwg
Tm9kZSogY2FsbFRhcmdldCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kKTsKKyAgICB2b2lkIHVuZG9GdW5jdGlvbkNoZWNrcyhDYWxsVmFyaWFudCk7CiAgICAgdm9p
ZCBlbWl0QXJndW1lbnRQaGFudG9tcyhpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgdW5zaWduZWQg
aW5saW5pbmdDb3N0KENhbGxWYXJpYW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IENvZGVTcGVjaWFsaXphdGlvbktpbmQpOyAvLyBSZXR1cm4gVUlOVF9NQVggaWYgaXQncyBub3Qg
YW4gaW5saW5pbmcgY2FuZGlkYXRlLiBCeSBjb252ZW50aW9uLCBpbnRyaW5zaWNzIGhhdmUgYSBj
b3N0IG9mIDEuCiAgICAgLy8gSGFuZGxlIGlubGluaW5nLiBSZXR1cm4gdHJ1ZSBpZiBpdCBzdWNj
ZWVkZWQsIGZhbHNlIGlmIHdlIG5lZWQgdG8gcGxhbnQgYSBjYWxsLgotICAgIGJvb2wgaGFuZGxl
SW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBD
YWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQpOwor
ICAgIGJvb2wgaGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRP
cGVyYW5kLCBjb25zdCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBOb2RlVHlwZSBj
YWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7
CisgICAgZW51bSBDYWxsZXJMaW5rYWJpbGl0eSB7IENhbGxlckRvZXNOb3JtYWxMaW5raW5nLCBD
YWxsZXJMaW5rc01hbnVhbGx5IH07CisgICAgYm9vbCBhdHRlbXB0VG9JbmxpbmVDYWxsKE5vZGUq
IGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcmlhbnQsIGludCByZWdp
c3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0
T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIENhbGxlckxpbmthYmlsaXR5LCBTcGVjdWxh
dGVkVHlwZSBwcmVkaWN0aW9uLCB1bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlKTsKKyAgICB2b2lk
IGlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxs
VmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2luZCwgQ2FsbGVyTGlu
a2FiaWxpdHkpOworICAgIHZvaWQgY2FuY2VsTGlua2luZ0ZvckJsb2NrKElubGluZVN0YWNrRW50
cnkqLCBCYXNpY0Jsb2NrKik7IC8vIE9ubHkgd29ya3Mgd2hlbiB0aGUgZ2l2ZW4gYmxvY2sgaXMg
dGhlIGxhc3Qgb25lIHRvIGhhdmUgYmVlbiBhZGRlZCBmb3IgdGhhdCBpbmxpbmUgc3RhY2sgZW50
cnkuCiAgICAgLy8gSGFuZGxlIGludHJpbnNpYyBmdW5jdGlvbnMuIFJldHVybiB0cnVlIGlmIGl0
IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCiAgICAgYm9vbCBo
YW5kbGVJbnRyaW5zaWMoaW50IHJlc3VsdE9wZXJhbmQsIEludHJpbnNpYywgaW50IHJlZ2lzdGVy
T2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24pOwogICAgIGJvb2wgaGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKGludCByZXN1
bHRPcGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlKTsKLSAgICBib29sIGhhbmRs
ZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihpbnQgcmVzdWx0T3BlcmFuZCwgSW50ZXJuYWxGdW5j
dGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKKyAg
ICBib29sIGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihpbnQgcmVzdWx0T3BlcmFuZCwg
SW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICBOb2RlKiBoYW5kbGVQ
dXRCeU9mZnNldChOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNl
dCwgTm9kZSogdmFsdWUpOwogICAgIE5vZGUqIGhhbmRsZUdldEJ5T2Zmc2V0KFNwZWN1bGF0ZWRU
eXBlLCBOb2RlKiBiYXNlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmLCB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyLCBQcm9wZXJ0eU9mZnNldCwgTm9kZVR5cGUgb3AgPSBHZXRCeU9mZnNldCk7CiAgICAg
dm9pZCBoYW5kbGVHZXRCeUlkKApAQCAtMjAwLDggKzIwOCw5IEBAIHByaXZhdGU6CiAKICAgICBO
b2RlKiBnZXRTY29wZSh1bnNpZ25lZCBza2lwQ291bnQpOwogICAgIAotICAgIC8vIFByZXBhcmUg
dG8gcGFyc2UgYSBibG9jay4KICAgICB2b2lkIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKKyAgICB2
b2lkIGNsZWFyQ2FjaGVzKCk7CisKICAgICAvLyBQYXJzZSBhIHNpbmdsZSBiYXNpYyBibG9jayBv
ZiBieXRlY29kZSBpbnN0cnVjdGlvbnMuCiAgICAgYm9vbCBwYXJzZUJsb2NrKHVuc2lnbmVkIGxp
bWl0KTsKICAgICAvLyBMaW5rIGJsb2NrIHN1Y2Nlc3NvcnMuCkBAIC0yOTYsNiArMzA1LDEzIEBA
IHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICByZXR1cm4gZGVsYXllZC5leGVjdXRlKHRoaXMs
IHNldE1vZGUpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCkK
KyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NldExvY2FsUXVldWUu
c2l6ZSgpOyArK2kpCisgICAgICAgICAgICBtX3NldExvY2FsUXVldWVbaV0uZXhlY3V0ZSh0aGlz
KTsKKyAgICAgICAgbV9zZXRMb2NhbFF1ZXVlLnJlc2l6ZSgwKTsKKyAgICB9CiAKICAgICBOb2Rl
KiBzZXQoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQsIE5vZGUqIHZhbHVlLCBTZXRNb2RlIHNldE1v
ZGUgPSBOb3JtYWxTZXQpCiAgICAgewpAQCAtNjM3LDYgKzY1MywxMyBAQCBwcml2YXRlOgogICAg
ICAgICAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CisgICAgCisgICAgdm9pZCByZW1v
dmVMYXN0Tm9kZUZyb21HcmFwaChOb2RlVHlwZSBleHBlY3RlZE5vZGVUeXBlKQorICAgIHsKKyAg
ICAgICAgTm9kZSogbm9kZSA9IG1fY3VycmVudEJsb2NrLT50YWtlTGFzdCgpOworICAgICAgICBS
RUxFQVNFX0FTU0VSVChub2RlLT5vcCgpID09IGV4cGVjdGVkTm9kZVR5cGUpOworICAgICAgICBt
X2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CisgICAgfQogCiAgICAgdm9pZCBhZGRWYXJB
cmdDaGlsZChOb2RlKiBjaGlsZCkKICAgICB7CkBAIC02NDUsNyArNjY4LDcgQEAgcHJpdmF0ZToK
ICAgICB9CiAgICAgCiAgICAgTm9kZSogYWRkQ2FsbFdpdGhvdXRTZXR0aW5nUmVzdWx0KAotICAg
ICAgICBOb2RlVHlwZSBvcCwgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rl
ck9mZnNldCwKKyAgICAgICAgTm9kZVR5cGUgb3AsIE9wSW5mbyBvcEluZm8sIE5vZGUqIGNhbGxl
ZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAgICAgIFNwZWN1bGF0ZWRU
eXBlIHByZWRpY3Rpb24pCiAgICAgewogICAgICAgICBhZGRWYXJBcmdDaGlsZChjYWxsZWUpOwpA
QCAtNjUzLDE5ICs2NzYsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKHBhcmFtZXRlclNsb3Rz
ID4gbV9wYXJhbWV0ZXJTbG90cykKICAgICAgICAgICAgIG1fcGFyYW1ldGVyU2xvdHMgPSBwYXJh
bWV0ZXJTbG90czsKIAotICAgICAgICBpbnQgZHVtbXlUaGlzQXJndW1lbnQgPSBvcCA9PSBDYWxs
IHx8IG9wID09IE5hdGl2ZUNhbGwgPyAwIDogMTsKKyAgICAgICAgaW50IGR1bW15VGhpc0FyZ3Vt
ZW50ID0gb3AgPT0gQ2FsbCB8fCBvcCA9PSBOYXRpdmVDYWxsIHx8IG9wID09IFByb2ZpbGVkQ2Fs
bCA/IDAgOiAxOwogICAgICAgICBmb3IgKGludCBpID0gMCArIGR1bW15VGhpc0FyZ3VtZW50OyBp
IDwgYXJnQ291bnQ7ICsraSkKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldCh2aXJ0dWFs
UmVnaXN0ZXJGb3JBcmd1bWVudChpLCByZWdpc3Rlck9mZnNldCkpKTsKIAotICAgICAgICByZXR1
cm4gYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIG9wLCBPcEluZm8oMCksIE9wSW5mbyhwcmVkaWN0
aW9uKSk7CisgICAgICAgIHJldHVybiBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgb3AsIG9wSW5m
bywgT3BJbmZvKHByZWRpY3Rpb24pKTsKICAgICB9CiAgICAgCiAgICAgTm9kZSogYWRkQ2FsbCgK
LSAgICAgICAgaW50IHJlc3VsdCwgTm9kZVR5cGUgb3AsIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0Nv
dW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgICAgIGludCByZXN1bHQsIE5vZGVUeXBlIG9w
LCBPcEluZm8gb3BJbmZvLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVy
T2Zmc2V0LAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogICAgIHsKICAgICAg
ICAgTm9kZSogY2FsbCA9IGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdCgKLSAgICAgICAgICAg
IG9wLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CisgICAg
ICAgICAgICBvcCwgb3BJbmZvLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCwgcHJl
ZGljdGlvbik7CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHRSZWcocmVzdWx0KTsKICAg
ICAgICAgaWYgKHJlc3VsdFJlZy5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBzZXQoVmlydHVhbFJl
Z2lzdGVyKHJlc3VsdCksIGNhbGwpOwpAQCAtODcxLDggKzg5NCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIFZlY3RvcjxVbmxpbmtlZEJsb2NrPiBtX3VubGlua2VkQmxvY2tzOwogICAgICAgICAKICAg
ICAgICAgLy8gUG90ZW50aWFsIGJsb2NrIGxpbmtpbmcgdGFyZ2V0cy4gTXVzdCBiZSBzb3J0ZWQg
YnkgYnl0ZWNvZGVCZWdpbiwgYW5kCi0gICAgICAgIC8vIGNhbm5vdCBoYXZlIHR3byBibG9ja3Mg
dGhhdCBoYXZlIHRoZSBzYW1lIGJ5dGVjb2RlQmVnaW4uIEZvciB0aGlzIHZlcnkKLSAgICAgICAg
Ly8gcmVhc29uLCB0aGlzIGlzIG5vdCBlcXVpdmFsZW50IHRvIAorICAgICAgICAvLyBjYW5ub3Qg
aGF2ZSB0d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRlY29kZUJlZ2luLgogICAgICAg
ICBWZWN0b3I8QmFzaWNCbG9jayo+IG1fYmxvY2tMaW5raW5nVGFyZ2V0czsKICAgICAgICAgCiAg
ICAgICAgIC8vIElmIHRoZSBjYWxsc2l0ZSdzIGJhc2ljIGJsb2NrIHdhcyBzcGxpdCBpbnRvIHR3
bywgdGhlbiB0aGlzIHdpbGwgYmUKQEAgLTEwMjQsNzIgKzEwNDYsNTggQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlQ2FsbCgKICAgICBpZiAoY2FsbFRhcmdldC0+aGFzQ29uc3RhbnQoKSkK
ICAgICAgICAgY2FsbExpbmtTdGF0dXMgPSBDYWxsTGlua1N0YXR1cyhjYWxsVGFyZ2V0LT5hc0pT
VmFsdWUoKSkuc2V0SXNQcm92ZWQodHJ1ZSk7CiAgICAgCisgICAgaWYgKCghY2FsbExpbmtTdGF0
dXMuY2FuT3B0aW1pemUoKSB8fCBjYWxsTGlua1N0YXR1cy5zaXplKCkgIT0gMSkKKyAgICAgICAg
JiYgIWlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpICYmIE9wdGlvbnM6OnVzZUZUTEpJVCgpCisg
ICAgICAgICYmIElubGluZUNhbGxGcmFtZTo6aXNOb3JtYWxDYWxsKGtpbmQpCisgICAgICAgICYm
IENhbGxFZGdlTG9nOjppc0VuYWJsZWQoKQorICAgICAgICAmJiBPcHRpb25zOjpkZmdEb2VzQ2Fs
bEVkZ2VQcm9maWxpbmcoKSkgeworICAgICAgICBBU1NFUlQob3AgPT0gQ2FsbCB8fCBvcCA9PSBD
b25zdHJ1Y3QpOworICAgICAgICBpZiAob3AgPT0gQ2FsbCkKKyAgICAgICAgICAgIG9wID0gUHJv
ZmlsZWRDYWxsOworICAgICAgICBlbHNlCisgICAgICAgICAgICBvcCA9IFByb2ZpbGVkQ29uc3Ry
dWN0OworICAgIH0KKyAgICAKICAgICBpZiAoIWNhbGxMaW5rU3RhdHVzLmNhbk9wdGltaXplKCkp
IHsKICAgICAgICAgLy8gT2RkbHksIHRoaXMgY29uZmxhdGVzIGNhbGxzIHRoYXQgaGF2ZW4ndCBl
eGVjdXRlZCB3aXRoIGNhbGxzIHRoYXQgYmVoYXZlZCBzdWZmaWNpZW50bHkgcG9seW1vcnBoaWNh
bGx5CiAgICAgICAgIC8vIHRoYXQgd2UgY2Fubm90IG9wdGltaXplIHRoZW0uCiAgICAgICAgIAot
ICAgICAgICBhZGRDYWxsKHJlc3VsdCwgb3AsIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CisgICAgICAgIGFkZENhbGwo
cmVzdWx0LCBvcCwgT3BJbmZvKCksIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgCiAgICAgdW5zaWduZWQgbmV4dE9mZnNldCA9IG1fY3VycmVudEluZGV4ICsgaW5zdHJ1
Y3Rpb25TaXplOwotCi0gICAgaWYgKEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbExp
bmtTdGF0dXMuaW50ZXJuYWxGdW5jdGlvbigpKSB7Ci0gICAgICAgIGlmIChoYW5kbGVDb25zdGFu
dEludGVybmFsRnVuY3Rpb24ocmVzdWx0LCBmdW5jdGlvbiwgcmVnaXN0ZXJPZmZzZXQsIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBwcmVkaWN0aW9uLCBzcGVjaWFsaXphdGlvbktpbmQpKSB7
Ci0gICAgICAgICAgICAvLyBUaGlzIHBoYW50b21pbmcgaGFzIHRvIGJlICphZnRlciogdGhlIGNv
ZGUgZm9yIHRoZSBpbnRyaW5zaWMsIHRvIHNpZ25pZnkgdGhhdAotICAgICAgICAgICAgLy8gdGhl
IGlucHV0cyBtdXN0IGJlIGtlcHQgYWxpdmUgd2hhdGV2ZXIgZXhpdHMgdGhlIGludHJpbnNpYyBt
YXkgZG8uCi0gICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXQpOwotICAg
ICAgICAgICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBDYW4gb25seSBoYW5kbGUgdGhpcyB1
c2luZyB0aGUgZ2VuZXJpYyBjYWxsIGhhbmRsZXIuCi0gICAgICAgIGFkZENhbGwocmVzdWx0LCBv
cCwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0
LCBwcmVkaWN0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAgICAgCi0gICAgSW50
cmluc2ljIGludHJpbnNpYyA9IGNhbGxMaW5rU3RhdHVzLmludHJpbnNpY0ZvcihzcGVjaWFsaXph
dGlvbktpbmQpOwotCi0gICAgSlNGdW5jdGlvbioga25vd25GdW5jdGlvbiA9IG51bGxwdHI7Ci0g
ICAgaWYgKGludHJpbnNpYyAhPSBOb0ludHJpbnNpYykgewotICAgICAgICBlbWl0RnVuY3Rpb25D
aGVja3MoY2FsbExpbmtTdGF0dXMsIGNhbGxUYXJnZXQsIHJlZ2lzdGVyT2Zmc2V0LCBzcGVjaWFs
aXphdGlvbktpbmQpOwotICAgICAgICAgICAgCi0gICAgICAgIGlmIChoYW5kbGVJbnRyaW5zaWMo
cmVzdWx0LCBpbnRyaW5zaWMsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgcHJlZGljdGlvbikpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgcGhhbnRvbWluZyBoYXMg
dG8gYmUgKmFmdGVyKiB0aGUgY29kZSBmb3IgdGhlIGludHJpbnNpYywgdG8gc2lnbmlmeSB0aGF0
Ci0gICAgICAgICAgICAvLyB0aGUgaW5wdXRzIG11c3QgYmUga2VwdCBhbGl2ZSB3aGF0ZXZlciBl
eGl0cyB0aGUgaW50cmluc2ljIG1heSBkby4KLSAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRv
bSwgY2FsbFRhcmdldCk7Ci0gICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rl
ck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7
Ci0gICAgICAgICAgICBpZiAobV9ncmFwaC5jb21waWxhdGlvbigpKQotICAgICAgICAgICAgICAg
IG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZENhbGwoKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoaGFuZGxlSW5saW5pbmcoY2FsbFRh
cmdldCwgcmVzdWx0LCBjYWxsTGlua1N0YXR1cywgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zmc2V0LCBraW5kKSkgeworICAgIAorICAgIE9wSW5mbyBj
YWxsT3BJbmZvOworICAgIAorICAgIGlmIChoYW5kbGVJbmxpbmluZyhjYWxsVGFyZ2V0LCByZXN1
bHQsIGNhbGxMaW5rU3RhdHVzLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIG5leHRPZmZzZXQsIG9wLCBraW5kLCBwcmVkaWN0aW9uKSkgewogICAgICAgICBpZiAo
bV9ncmFwaC5jb21waWxhdGlvbigpKQogICAgICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigp
LT5ub3RpY2VJbmxpbmVkQ2FsbCgpOwogICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogI2lm
IEVOQUJMRShGVExfTkFUSVZFX0NBTExfSU5MSU5JTkcpCi0gICAgfSBlbHNlIGlmIChpc0ZUTCht
X2dyYXBoLm1fcGxhbi5tb2RlKSAmJiBPcHRpb25zOjpvcHRpbWl6ZU5hdGl2ZUNhbGxzKCkpIHsK
LSAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsTGlua1N0YXR1cy5mdW5jdGlvbigp
OworICAgIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSAmJiBPcHRpb25zOjpvcHRpbWl6
ZU5hdGl2ZUNhbGxzKCkgJiYgY2FsbExpbmtTdGF0dXMuc2l6ZSgpID09IDEgJiYgIWNhbGxMaW5r
U3RhdHVzLmNvdWxkVGFrZVNsb3dQYXRoKCkpIHsKKyAgICAgICAgQ2FsbFZhcmlhbnQgY2FsbGVl
ID0gY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVlKCk7CisgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0
aW9uID0gY2FsbGVlLmZ1bmN0aW9uKCk7CiAgICAgICAgIGlmIChmdW5jdGlvbiAmJiBmdW5jdGlv
bi0+aXNIb3N0RnVuY3Rpb24oKSkgewotICAgICAgICAgICAgZW1pdEZ1bmN0aW9uQ2hlY2tzKGNh
bGxMaW5rU3RhdHVzLCBjYWxsVGFyZ2V0LCByZWdpc3Rlck9mZnNldCwgc3BlY2lhbGl6YXRpb25L
aW5kKTsKLSAgICAgICAgICAgIGtub3duRnVuY3Rpb24gPSBmdW5jdGlvbjsKKyAgICAgICAgICAg
IGVtaXRGdW5jdGlvbkNoZWNrcyhjYWxsZWUsIGNhbGxUYXJnZXQsIHJlZ2lzdGVyT2Zmc2V0LCBz
cGVjaWFsaXphdGlvbktpbmQpOworICAgICAgICAgICAgY2FsbE9wSW5mbyA9IE9wSW5mbyhtX2dy
YXBoLmZyZWV6ZShmdW5jdGlvbikpOwogCi0gICAgICAgICAgICBpZiAob3AgPT0gQ2FsbCkgCisg
ICAgICAgICAgICBpZiAob3AgPT0gQ2FsbCB8fCBvcCA9PSBQcm9maWxlZENhbGwpCiAgICAgICAg
ICAgICAgICAgb3AgPSBOYXRpdmVDYWxsOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgQVNTRVJUKG9wID09IENvbnN0cnVjdCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG9w
ID09IENvbnN0cnVjdCB8fCBvcCA9PSBQcm9maWxlZENvbnN0cnVjdCk7CiAgICAgICAgICAgICAg
ICAgb3AgPSBOYXRpdmVDb25zdHJ1Y3Q7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSNlbmRp
ZgogICAgIH0KLSAgICBOb2RlKiBjYWxsID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBjYWxsVGFyZ2V0
LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24p
OwotCi0gICAgaWYgKGtub3duRnVuY3Rpb24pIAotICAgICAgICBjYWxsLT5naXZlS25vd25GdW5j
dGlvbihrbm93bkZ1bmN0aW9uKTsKKyNlbmRpZgorICAgIAorICAgIGFkZENhbGwocmVzdWx0LCBv
cCwgY2FsbE9wSW5mbywgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJl
Z2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKIH0KIAotdm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1p
dEZ1bmN0aW9uQ2hlY2tzKGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgTm9k
ZSogY2FsbFRhcmdldCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IGtpbmQpCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0RnVuY3Rpb25DaGVja3MoQ2FsbFZhcmlh
bnQgY2FsbGVlLCBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICBOb2RlKiB0aGlzQXJndW1lbnQ7CiAgICAgaWYg
KGtpbmQgPT0gQ29kZUZvckNhbGwpCkBAIC0xMDk3LDIwICsxMTA1LDI1IEBAIHZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OmVtaXRGdW5jdGlvbkNoZWNrcygKICAgICBlbHNlCiAgICAgICAgIHRoaXNBcmd1
bWVudCA9IDA7CiAKLSAgICBpZiAoY2FsbExpbmtTdGF0dXMuaXNQcm92ZWQoKSkgewotICAgICAg
ICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXQsIHRoaXNBcmd1bWVudCk7Ci0gICAgICAg
IHJldHVybjsKKyAgICBKU0NlbGwqIGNhbGxlZUNlbGw7CisgICAgTm9kZSogY2FsbFRhcmdldEZv
ckNoZWNrOworICAgIGlmIChjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKSB7CisgICAgICAgIGNhbGxl
ZUNlbGwgPSBjYWxsZWUuZXhlY3V0YWJsZSgpOworICAgICAgICBjYWxsVGFyZ2V0Rm9yQ2hlY2sg
PSBhZGRUb0dyYXBoKEdldEV4ZWN1dGFibGUsIGNhbGxUYXJnZXQpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGNhbGxlZUNlbGwgPSBjYWxsZWUubm9uRXhlY3V0YWJsZUNhbGxlZSgpOworICAgICAg
ICBjYWxsVGFyZ2V0Rm9yQ2hlY2sgPSBjYWxsVGFyZ2V0OwogICAgIH0KICAgICAKLSAgICBBU1NF
UlQoY2FsbExpbmtTdGF0dXMuY2FuT3B0aW1pemUoKSk7Ci0gICAgCi0gICAgaWYgKEpTRnVuY3Rp
b24qIGZ1bmN0aW9uID0gY2FsbExpbmtTdGF0dXMuZnVuY3Rpb24oKSkKLSAgICAgICAgYWRkVG9H
cmFwaChDaGVja0Z1bmN0aW9uLCBPcEluZm8obV9ncmFwaC5mcmVlemUoZnVuY3Rpb24pKSwgY2Fs
bFRhcmdldCwgdGhpc0FyZ3VtZW50KTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKGNhbGxM
aW5rU3RhdHVzLmV4ZWN1dGFibGUoKSk7Ci0gICAgICAgIAotICAgICAgICBhZGRUb0dyYXBoKENo
ZWNrRXhlY3V0YWJsZSwgT3BJbmZvKGNhbGxMaW5rU3RhdHVzLmV4ZWN1dGFibGUoKSksIGNhbGxU
YXJnZXQsIHRoaXNBcmd1bWVudCk7Ci0gICAgfQorICAgIEFTU0VSVChjYWxsZWVDZWxsKTsKKyAg
ICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKGNhbGxlZUNlbGwp
KSwgY2FsbFRhcmdldEZvckNoZWNrLCB0aGlzQXJndW1lbnQpOworfQorCit2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjp1bmRvRnVuY3Rpb25DaGVja3MoQ2FsbFZhcmlhbnQgY2FsbGVlKQoreworICAgIHJl
bW92ZUxhc3ROb2RlRnJvbUdyYXBoKENoZWNrQ2VsbCk7CisgICAgaWYgKGNhbGxlZS5pc0Nsb3N1
cmVDYWxsKCkpCisgICAgICAgIHJlbW92ZUxhc3ROb2RlRnJvbUdyYXBoKEdldEV4ZWN1dGFibGUp
OwogfQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0QXJndW1lbnRQaGFudG9tcyhpbnQgcmVn
aXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKQpAQCAtMTExOSwyOCArMTEzMiwxNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjplbWl0QXJndW1lbnRQaGFudG9tCiAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgZ2V0
KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGksIHJlZ2lzdGVyT2Zmc2V0KSkpOwogfQogCi1i
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwg
aW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywg
aW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2ln
bmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kKQordW5zaWduZWQgQnl0
ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewotICAg
IHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKLSAgICAKLSAgICBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCA9IElubGluZUNhbGxGcmFtZTo6c3BlY2lh
bGl6YXRpb25LaW5kRm9yKGtpbmQpOwotICAgIAogICAgIGlmICh2ZXJib3NlKQotICAgICAgICBk
YXRhTG9nKCJDb25zaWRlcmluZyBpbmxpbmluZyAiLCBjYWxsTGlua1N0YXR1cywgIiBpbnRvICIs
IGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOworICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmlu
ZyBpbmxpbmluZyAiLCBjYWxsZWUsICIgaW50byAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4i
KTsKICAgICAKLSAgICAvLyBGaXJzdCwgdGhlIHJlYWxseSBzaW1wbGUgY2hlY2tzOiBkbyB3ZSBo
YXZlIGFuIGFjdHVhbCBKUyBmdW5jdGlvbj8KLSAgICBpZiAoIWNhbGxMaW5rU3RhdHVzLmV4ZWN1
dGFibGUoKSkgeworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS5m
dW5jdGlvbkV4ZWN1dGFibGUoKTsKKyAgICBpZiAoIWV4ZWN1dGFibGUpIHsKICAgICAgICAgaWYg
KHZlcmJvc2UpCi0gICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIHRoZXJl
IGlzIG5vIGV4ZWN1dGFibGUuXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSB0aGVyZSBpcyBubyBmdW5jdGlvbiBleGVj
dXRhYmxlLiIpOworICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQotICAgIGlmIChjYWxs
TGlua1N0YXR1cy5leGVjdXRhYmxlKCktPmlzSG9zdEZ1bmN0aW9uKCkpIHsKLSAgICAgICAgaWYg
KHZlcmJvc2UpCi0gICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIGl0J3Mg
YSBob3N0IGZ1bmN0aW9uLlxuIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAg
Ci0gICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhl
Y3V0YWJsZSo+KGNhbGxMaW5rU3RhdHVzLmV4ZWN1dGFibGUoKSk7CiAgICAgCiAgICAgLy8gRG9l
cyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyB3ZSdyZSBwYXNzaW5nIG1hdGNoIHRoZSBhcml0eSBv
ZiB0aGUgdGFyZ2V0PyBXZSBjdXJyZW50bHkKICAgICAvLyBpbmxpbmUgb25seSBpZiB0aGUgbnVt
YmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBu
dW1iZXIKQEAgLTExNDgsNyArMTE1MCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
bGluaW5nKE5vZGUKICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihleGVjdXRhYmxlLT5wYXJhbWV0
ZXJDb3VudCgpKSArIDEgPiBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykgewogICAgICAgICBp
ZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2Ugb2Yg
YXJpdHkgbWlzbWF0Y2guXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm4gVUlOVF9NQVg7CiAgICAgfQogICAgIAogICAgIC8vIERvIHdlIGhhdmUgYSBjb2RlIGJsb2Nr
LCBhbmQgZG9lcyB0aGUgY29kZSBibG9jaydzIHNpemUgbWF0Y2ggdGhlIGhldXJpc3RpY3MvcmVx
dWlyZW1lbnRzIGZvcgpAQCAtMTE1NywxOCArMTE1OSwxOCBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgLy8gaWYgd2UgaGFkIGEgc3RhdGljIHByb29mIG9m
IHdoYXQgd2FzIGJlaW5nIGNhbGxlZDsgdGhpcyBtaWdodCBoYXBwZW4gZm9yIGV4YW1wbGUgaWYg
eW91IGNhbGwgYQogICAgIC8vIGdsb2JhbCBmdW5jdGlvbiwgd2hlcmUgd2F0Y2hwb2ludGluZyBn
aXZlcyB1cyBzdGF0aWMgaW5mb3JtYXRpb24uIE92ZXJhbGwsIGl0J3MgYSByYXJlIGNhc2UKICAg
ICAvLyBiZWNhdXNlIHdlIGV4cGVjdCB0aGF0IGFueSBob3QgY2FsbGVlcyB3b3VsZCBoYXZlIGFs
cmVhZHkgYmVlbiBjb21waWxlZC4KLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFi
bGUtPmJhc2VsaW5lQ29kZUJsb2NrRm9yKHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5iYXNlbGluZUNvZGVCbG9ja0ZvcihraW5kKTsK
ICAgICBpZiAoIWNvZGVCbG9jaykgewogICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAg
IGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2Ugbm8gY29kZSBibG9jayBhdmFpbGFibGUuXG4i
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAg
fQogICAgIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwgPSBpbmxpbmVGdW5jdGlvbkZv
ckNhcGFiaWxpdHlMZXZlbCgKLSAgICAgICAgY29kZUJsb2NrLCBzcGVjaWFsaXphdGlvbktpbmQs
IGNhbGxMaW5rU3RhdHVzLmlzQ2xvc3VyZUNhbGwoKSk7CisgICAgICAgIGNvZGVCbG9jaywga2lu
ZCwgY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSk7CiAgICAgaWYgKCFjYW5JbmxpbmUoY2FwYWJpbGl0
eUxldmVsKSkgewogICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAg
ICBGYWlsaW5nIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGlzIG5vdCBpbmxpbmVhYmxlLlxuIik7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgIH0KICAg
ICAKICAgICAvLyBDaGVjayBpZiB0aGUgY2FsbGVyIGlzIGFscmVhZHkgdG9vIGxhcmdlLiBXZSBk
byB0aGlzIGNoZWNrIGhlcmUgYmVjYXVzZSB0aGF0J3MganVzdApAQCAtMTE3OCw3ICsxMTgwLDcg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgICAgICBjb2Rl
QmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID0gZmFsc2U7CiAgICAgICAgIGlmICh2ZXJi
b3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSB0aGUgY2FsbGVy
IGlzIHRvbyBsYXJnZS5cbiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVy
biBVSU5UX01BWDsKICAgICB9CiAgICAgCiAgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIGJl
dHRlciBhdCBwcmVkaWN0aW5nIGhvdyBtdWNoIGJsb2F0IHdlIHdpbGwgaW50cm9kdWNlIGJ5IGlu
bGluaW5nCkBAIC0xMTk3LDcgKzExOTksNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJ
bmxpbmluZyhOb2RlCiAgICAgICAgIGlmIChkZXB0aCA+PSBPcHRpb25zOjptYXhpbXVtSW5saW5p
bmdEZXB0aCgpKSB7CiAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIGRlcHRoIGV4Y2VlZGVkLlxuIik7Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIGlmIChlbnRyeS0+ZXhlY3V0YWJsZSgpID09IGV4ZWN1dGFi
bGUpIHsKQEAgLTEyMDUsMTkgKzEyMDcsMjYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW5saW5pbmcoTm9kZQogICAgICAgICAgICAgaWYgKHJlY3Vyc2lvbiA+PSBPcHRpb25zOjptYXhp
bXVtSW5saW5pbmdSZWN1cnNpb24oKSkgewogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQog
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIHJlY3Vyc2lv
biBkZXRlY3RlZC5cbiIpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
CiAgICAgCiAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2coIiAgICBDb21taXR0aW5n
IHRvIGlubGluaW5nLlxuIik7CisgICAgICAgIGRhdGFMb2coIiAgICBJbmxpbmluZyBzaG91bGQg
YmUgcG9zc2libGUuXG4iKTsKICAgICAKLSAgICAvLyBOb3cgd2Uga25vdyB3aXRob3V0IGEgZG91
YnQgdGhhdCB3ZSBhcmUgY29tbWl0dGVkIHRvIGlubGluaW5nLiBTbyBiZWdpbiB0aGUgcHJvY2Vz
cwotICAgIC8vIGJ5IGNoZWNraW5nIHRoZSBjYWxsZWUgKGlmIG5lY2Vzc2FyeSkgYW5kIG1ha2lu
ZyBzdXJlIHRoYXQgYXJndW1lbnRzIGFuZCB0aGUgY2FsbGVlCi0gICAgLy8gYXJlIGZsdXNoZWQu
Ci0gICAgZW1pdEZ1bmN0aW9uQ2hlY2tzKGNhbGxMaW5rU3RhdHVzLCBjYWxsVGFyZ2V0Tm9kZSwg
cmVnaXN0ZXJPZmZzZXQsIHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgLy8gSXQgbWlnaHQgYmUg
cG9zc2libGUgdG8gaW5saW5lLgorICAgIHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291
bnQoKTsKK30KKwordm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFy
Z2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENhbGxWYXJpYW50IGNhbGxlZSwgaW50IHJlZ2lz
dGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRP
ZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBDYWxsZXJMaW5rYWJpbGl0eSBjYWxs
ZXJMaW5rYWJpbGl0eSkKK3sKKyAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0
aW9uS2luZCA9IElubGluZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOwor
ICAgIAorICAgIEFTU0VSVChpbmxpbmluZ0Nvc3QoY2FsbGVlLCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kKSAhPSBVSU5UX01BWCk7CiAgICAgCisgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsZWUuZnVuY3Rpb25FeGVjdXRhYmxlKCktPmJhc2VsaW5l
Q29kZUJsb2NrRm9yKHNwZWNpYWxpemF0aW9uS2luZCk7CisKICAgICAvLyBGSVhNRTogRG9uJ3Qg
Zmx1c2ggY29uc3RhbnRzIQogICAgIAogICAgIGludCBpbmxpbmVDYWxsRnJhbWVTdGFydCA9IG1f
aW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZz
ZXQpKS5vZmZzZXQoKSArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7CkBAIC0xMjMzLDcg
KzEyNDIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAg
ICAgIHJlc3VsdFJlZyA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChyZXN1bHRSZWcp
OwogICAgIAogICAgIElubGluZVN0YWNrRW50cnkgaW5saW5lU3RhY2tFbnRyeSgKLSAgICAgICAg
dGhpcywgY29kZUJsb2NrLCBjb2RlQmxvY2ssIG1fZ3JhcGgubGFzdEJsb2NrKCksIGNhbGxMaW5r
U3RhdHVzLmZ1bmN0aW9uKCksIHJlc3VsdFJlZywKKyAgICAgICAgdGhpcywgY29kZUJsb2NrLCBj
b2RlQmxvY2ssIG1fZ3JhcGgubGFzdEJsb2NrKCksIGNhbGxlZS5mdW5jdGlvbigpLCByZXN1bHRS
ZWcsCiAgICAgICAgIChWaXJ0dWFsUmVnaXN0ZXIpaW5saW5lQ2FsbEZyYW1lU3RhcnQsIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBraW5kKTsKICAgICAKICAgICAvLyBUaGlzIGlzIHdoZXJl
IHRoZSBhY3R1YWwgaW5saW5pbmcgcmVhbGx5IGhhcHBlbnMuCkBAIC0xMjQ3LDggKzEyNTYsOCBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgCiAgICAgUkVM
RUFTRV9BU1NFUlQoCiAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1l
LT5pc0Nsb3N1cmVDYWxsCi0gICAgICAgID09IGNhbGxMaW5rU3RhdHVzLmlzQ2xvc3VyZUNhbGwo
KSk7Ci0gICAgaWYgKGNhbGxMaW5rU3RhdHVzLmlzQ2xvc3VyZUNhbGwoKSkgeworICAgICAgICA9
PSBjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKTsKKyAgICBpZiAoY2FsbGVlLmlzQ2xvc3VyZUNhbGwo
KSkgewogICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGNhbGxlZVZhcmlhYmxlID0KICAgICAg
ICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6Q2FsbGVlKSwgY2FsbFRhcmdldE5v
ZGUsIEltbWVkaWF0ZU5ha2VkU2V0KS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CiAgICAgICAgIFZh
cmlhYmxlQWNjZXNzRGF0YSogc2NvcGVWYXJpYWJsZSA9CkBAIC0xMjYzLDcgKzEyNzIsNyBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgbV9ncmFwaC5tX2lu
bGluZVZhcmlhYmxlRGF0YS5hcHBlbmQoaW5saW5lVmFyaWFibGVEYXRhKTsKICAgICAKICAgICBw
YXJzZUNvZGVCbG9jaygpOwotICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsgLy8gUmVzZXQgb3Vy
IHN0YXRlIG5vdyB0aGF0IHdlJ3JlIGJhY2sgdG8gdGhlIG91dGVyIGNvZGUuCisgICAgY2xlYXJD
YWNoZXMoKTsgLy8gUmVzZXQgb3VyIHN0YXRlIG5vdyB0aGF0IHdlJ3JlIGJhY2sgdG8gdGhlIG91
dGVyIGNvZGUuCiAgICAgCiAgICAgbV9jdXJyZW50SW5kZXggPSBvbGRJbmRleDsKICAgICAKQEAg
LTEyNzYsMjAgKzEyODUsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhO
b2RlCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5Lm1f
Y2FsbHNpdGVCbG9ja0hlYWQtPmlzTGlua2VkKTsKICAgICAgICAgCi0gICAgICAgIC8vIEl0J3Mg
cG9zc2libGUgdGhhdCB0aGUgY2FsbHNpdGUgYmxvY2sgaGVhZCBpcyBub3Qgb3duZWQgYnkgdGhl
IGNhbGxlci4KLSAgICAgICAgaWYgKCFpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLT5tX3VubGlu
a2VkQmxvY2tzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgLy8gSXQncyBkZWZpbml0ZWx5IG93
bmVkIGJ5IHRoZSBjYWxsZXIsIGJlY2F1c2UgdGhlIGNhbGxlciBjcmVhdGVkIG5ldyBibG9ja3Mu
Ci0gICAgICAgICAgICAvLyBBc3NlcnQgdGhhdCB0aGlzIGFsbCBhZGRzIHVwLgotICAgICAgICAg
ICAgQVNTRVJUKGlubGluZVN0YWNrRW50cnkubV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MubGFz
dCgpLm1fYmxvY2sgPT0gaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxzaXRlQmxvY2tIZWFkKTsKLSAg
ICAgICAgICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLT5tX3VubGlua2VkQmxv
Y2tzLmxhc3QoKS5tX25lZWRzTm9ybWFsTGlua2luZyk7Ci0gICAgICAgICAgICBpbmxpbmVTdGFj
a0VudHJ5Lm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX25lZWRzTm9ybWFsTGlu
a2luZyA9IGZhbHNlOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gSXQncyBkZWZp
bml0ZWx5IG5vdCBvd25lZCBieSB0aGUgY2FsbGVyLiBUZWxsIHRoZSBjYWxsZXIgdGhhdCBoZSBk
b2VzIG5vdAotICAgICAgICAgICAgLy8gbmVlZCB0byBsaW5rIGhpcyBjYWxsc2l0ZSBibG9jayBo
ZWFkLCBiZWNhdXNlIHdlIGRpZCBpdCBmb3IgaGltLgotICAgICAgICAgICAgQVNTRVJUKGlubGlu
ZVN0YWNrRW50cnkubV9jYWxsZXItPm1fY2FsbHNpdGVCbG9ja0hlYWROZWVkc0xpbmtpbmcpOwot
ICAgICAgICAgICAgQVNTRVJUKGlubGluZVN0YWNrRW50cnkubV9jYWxsZXItPm1fY2FsbHNpdGVC
bG9ja0hlYWQgPT0gaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxzaXRlQmxvY2tIZWFkKTsKLSAgICAg
ICAgICAgIGlubGluZVN0YWNrRW50cnkubV9jYWxsZXItPm1fY2FsbHNpdGVCbG9ja0hlYWROZWVk
c0xpbmtpbmcgPSBmYWxzZTsKLSAgICAgICAgfQorICAgICAgICBpZiAoY2FsbGVyTGlua2FiaWxp
dHkgPT0gQ2FsbGVyRG9lc05vcm1hbExpbmtpbmcpCisgICAgICAgICAgICBjYW5jZWxMaW5raW5n
Rm9yQmxvY2soaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlciwgaW5saW5lU3RhY2tFbnRyeS5tX2Nh
bGxzaXRlQmxvY2tIZWFkKTsKICAgICAgICAgCiAgICAgICAgIGxpbmtCbG9ja3MoaW5saW5lU3Rh
Y2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLCBpbmxpbmVTdGFja0VudHJ5Lm1fYmxvY2tMaW5raW5n
VGFyZ2V0cyk7CiAgICAgfSBlbHNlCkBAIC0xMzA4LDE2ICsxMzA1LDE5IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAgICAgICAgIC8vIGZvciByZWxlYXNl
IGJ1aWxkcyBiZWNhdXNlIHRoaXMgYmxvY2sgd2lsbCBuZXZlciBzZXJ2ZSBhcyBhIHBvdGVudGlh
bCB0YXJnZXQKICAgICAgICAgICAgIC8vIGluIHRoZSBsaW5rZXIncyBiaW5hcnkgc2VhcmNoLgog
ICAgICAgICAgICAgbGFzdEJsb2NrLT5ieXRlY29kZUJlZ2luID0gbV9jdXJyZW50SW5kZXg7Ci0g
ICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5h
cHBlbmQoVW5saW5rZWRCbG9jayhtX2dyYXBoLmxhc3RCbG9jaygpKSk7CisgICAgICAgICAgICBp
ZiAoY2FsbGVyTGlua2FiaWxpdHkgPT0gQ2FsbGVyRG9lc05vcm1hbExpbmtpbmcpIHsKKyAgICAg
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQWRk
aW5nIHVubGlua2VkIGJsb2NrICIsIFJhd1BvaW50ZXIobV9ncmFwaC5sYXN0QmxvY2soKSksICIg
KG9uZSByZXR1cm4pXG4iKTsKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Nh
bGxlci0+bV91bmxpbmtlZEJsb2Nrcy5hcHBlbmQoVW5saW5rZWRCbG9jayhtX2dyYXBoLmxhc3RC
bG9jaygpKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1f
Y3VycmVudEJsb2NrID0gbV9ncmFwaC5sYXN0QmxvY2soKTsKLSAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgLy8gSWYgd2UgZ2V0IHRvIHRoaXMg
cG9pbnQgdGhlbiBhbGwgYmxvY2tzIG11c3QgZW5kIGluIHNvbWUgc29ydCBvZiB0ZXJtaW5hbHMu
CiAgICAgQVNTRVJUKGxhc3RCbG9jay0+bGFzdCgpLT5pc1Rlcm1pbmFsKCkpOwotICAgIAogCiAg
ICAgLy8gTmVlZCB0byBjcmVhdGUgYSBuZXcgYmFzaWMgYmxvY2sgZm9yIHRoZSBjb250aW51YXRp
b24gYXQgdGhlIGNhbGxlci4KICAgICBSZWZQdHI8QmFzaWNCbG9jaz4gYmxvY2sgPSBhZG9wdFJl
ZihuZXcgQmFzaWNCbG9jayhuZXh0T2Zmc2V0LCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMs
IFBOYU4pKTsKQEAgLTEzMzMsMjAgKzEzMzMsMjkzIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUlubGluaW5nKE5vZGUKICAgICAgICAgQVNTRVJUKCFub2RlLT50YXJnZXRCbG9jaygpKTsK
ICAgICAgICAgbm9kZS0+dGFyZ2V0QmxvY2soKSA9IGJsb2NrLmdldCgpOwogICAgICAgICBpbmxp
bmVTdGFja0VudHJ5Lm1fdW5saW5rZWRCbG9ja3NbaV0ubV9uZWVkc0Vhcmx5UmV0dXJuTGlua2lu
ZyA9IGZhbHNlOwotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICAgICAgYmxvY2tUb0xpbmstPmlz
TGlua2VkID0gdHJ1ZTsKLSNlbmRpZgorICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAg
IGRhdGFMb2coIk1hcmtpbmcgIiwgUmF3UG9pbnRlcihibG9ja1RvTGluayksICIgYXMgbGlua2Vk
IChqdW1wcyB0byByZXR1cm4pXG4iKTsKKyAgICAgICAgYmxvY2tUb0xpbmstPmRpZExpbmsoKTsK
ICAgICB9CiAgICAgCiAgICAgbV9jdXJyZW50QmxvY2sgPSBibG9jay5nZXQoKTsKICAgICBBU1NF
UlQobV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5pc0Vt
cHR5KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5nVGFyZ2V0
cy5sYXN0KCktPmJ5dGVjb2RlQmVnaW4gPCBuZXh0T2Zmc2V0KTsKLSAgICBtX2lubGluZVN0YWNr
VG9wLT5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5hcHBlbmQoVW5saW5rZWRCbG9jayhibG9j
ay5nZXQoKSkpOwotICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2lu
Z1RhcmdldHMuYXBwZW5kKGJsb2NrLmdldCgpKTsKKyAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ZGF0YUxvZygiQWRkaW5nIHVubGlua2VkIGJsb2NrICIsIFJhd1BvaW50ZXIoYmxvY2suZ2V0KCkp
LCAiIChtYW55IHJldHVybnMpXG4iKTsKKyAgICBpZiAoY2FsbGVyTGlua2FiaWxpdHkgPT0gQ2Fs
bGVyRG9lc05vcm1hbExpbmtpbmcpIHsKKyAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxs
ZXItPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2suZ2V0KCkpKTsK
KyAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5nVGFyZ2V0
cy5hcHBlbmQoYmxvY2suZ2V0KCkpOworICAgIH0KICAgICBtX2dyYXBoLmFwcGVuZEJsb2NrKGJs
b2NrKTsKICAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7Cit9CisKK3ZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmNhbmNlbExpbmtpbmdGb3JCbG9jayhJbmxpbmVTdGFja0VudHJ5KiBpbmxpbmVTdGFja0Vu
dHJ5LCBCYXNpY0Jsb2NrKiBibG9jaykKK3sKKyAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgdGhl
IGNhbGxzaXRlIGJsb2NrIGhlYWQgaXMgbm90IG93bmVkIGJ5IHRoZSBjYWxsZXIuCisgICAgaWYg
KCFpbmxpbmVTdGFja0VudHJ5LT5tX3VubGlua2VkQmxvY2tzLmlzRW1wdHkoKSkgeworICAgICAg
ICAvLyBJdCdzIGRlZmluaXRlbHkgb3duZWQgYnkgdGhlIGNhbGxlciwgYmVjYXVzZSB0aGUgY2Fs
bGVyIGNyZWF0ZWQgbmV3IGJsb2Nrcy4KKyAgICAgICAgLy8gQXNzZXJ0IHRoYXQgdGhpcyBhbGwg
YWRkcyB1cC4KKyAgICAgICAgQVNTRVJUX1VOVVNFRChibG9jaywgaW5saW5lU3RhY2tFbnRyeS0+
bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9ibG9jayA9PSBibG9jayk7CisgICAgICAgIEFTU0VS
VChpbmxpbmVTdGFja0VudHJ5LT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX25lZWRzTm9ybWFs
TGlua2luZyk7CisgICAgICAgIGlubGluZVN0YWNrRW50cnktPm1fdW5saW5rZWRCbG9ja3MubGFz
dCgpLm1fbmVlZHNOb3JtYWxMaW5raW5nID0gZmFsc2U7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
Ly8gSXQncyBkZWZpbml0ZWx5IG5vdCBvd25lZCBieSB0aGUgY2FsbGVyLiBUZWxsIHRoZSBjYWxs
ZXIgdGhhdCBoZSBkb2VzIG5vdAorICAgICAgICAvLyBuZWVkIHRvIGxpbmsgaGlzIGNhbGxzaXRl
IGJsb2NrIGhlYWQsIGJlY2F1c2Ugd2UgZGlkIGl0IGZvciBoaW0uCisgICAgICAgIEFTU0VSVChp
bmxpbmVTdGFja0VudHJ5LT5tX2NhbGxzaXRlQmxvY2tIZWFkTmVlZHNMaW5raW5nKTsKKyAgICAg
ICAgQVNTRVJUX1VOVVNFRChibG9jaywgaW5saW5lU3RhY2tFbnRyeS0+bV9jYWxsc2l0ZUJsb2Nr
SGVhZCA9PSBibG9jayk7CisgICAgICAgIGlubGluZVN0YWNrRW50cnktPm1fY2FsbHNpdGVCbG9j
a0hlYWROZWVkc0xpbmtpbmcgPSBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmF0dGVtcHRUb0lubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRP
cGVyYW5kLCBDYWxsVmFyaWFudCBjYWxsZWUsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJh
bWU6OktpbmQga2luZCwgQ2FsbGVyTGlua2FiaWxpdHkgY2FsbGVyTGlua2FiaWxpdHksIFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxpbmluZ0JhbGFuY2UpCit7CisgICAg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQgPSBJbmxpbmVDYWxsRnJh
bWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5kKTsKKyAgICAKKyAgICBpZiAoIWlubGluaW5n
QmFsYW5jZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmIChJbnRlcm5hbEZ1
bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS5pbnRlcm5hbEZ1bmN0aW9uKCkpIHsKKyAgICAgICAg
aWYgKGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihyZXN1bHRPcGVyYW5kLCBmdW5jdGlv
biwgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXph
dGlvbktpbmQpKSB7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXRO
b2RlKTsKKyAgICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICAgICAg
ICAgIGlubGluaW5nQmFsYW5jZS0tOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBJbnRyaW5zaWMgaW50
cmluc2ljID0gY2FsbGVlLmludHJpbnNpY0ZvcihzcGVjaWFsaXphdGlvbktpbmQpOworICAgIGlm
IChpbnRyaW5zaWMgIT0gTm9JbnRyaW5zaWMpIHsKKyAgICAgICAgaWYgKGhhbmRsZUludHJpbnNp
YyhyZXN1bHRPcGVyYW5kLCBpbnRyaW5zaWMsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbikpIHsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhh
bnRvbSwgY2FsbFRhcmdldE5vZGUpOworICAgICAgICAgICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMo
cmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlv
bktpbmQpOworICAgICAgICAgICAgaW5saW5pbmdCYWxhbmNlLS07CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAor
ICAgIHVuc2lnbmVkIG15SW5saW5pbmdDb3N0ID0gaW5saW5pbmdDb3N0KGNhbGxlZSwgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgaWYgKG15SW5s
aW5pbmdDb3N0ID4gaW5saW5pbmdCYWxhbmNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
CisgICAgaW5saW5lQ2FsbChjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0T3BlcmFuZCwgY2FsbGVlLCBy
ZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQsIGtp
bmQsIGNhbGxlckxpbmthYmlsaXR5KTsKKyAgICBpbmxpbmluZ0JhbGFuY2UgLT0gbXlJbmxpbmlu
Z0Nvc3Q7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3Qg
Q2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgTm9kZVR5cGUg
Y2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
dGlvbikKK3sKKyAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBkYXRhTG9nKCJIYW5kbGluZyBp
bmxpbmluZy4uLlxuIik7CisgICAgICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9y
aWdpbigpLCAiXG4iKTsKKyAgICB9CisgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFs
aXphdGlvbktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5k
KTsKKyAgICAKKyAgICBpZiAoIWNhbGxMaW5rU3RhdHVzLnNpemUoKSkgeworICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgICAgIGRhdGFMb2coIkJhaWxpbmcgaW5saW5pbmcuXG4iKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBpbmxpbmluZ0Jh
bGFuY2UgPSBPcHRpb25zOjptYXhpbXVtRnVuY3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5z
dHJ1Y3Rpb25Db3VudCgpOworICAgIGlmIChzcGVjaWFsaXphdGlvbktpbmQgPT0gQ29kZUZvckNv
bnN0cnVjdCkKKyAgICAgICAgaW5saW5pbmdCYWxhbmNlID0gc3RkOjptaW4oaW5saW5pbmdCYWxh
bmNlLCBPcHRpb25zOjptYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJ
bnN0cnVjdGlvbkNvdW50KCkpOworICAgIGlmIChjYWxsTGlua1N0YXR1cy5pc0Nsb3N1cmVDYWxs
KCkpCisgICAgICAgIGlubGluaW5nQmFsYW5jZSA9IHN0ZDo6bWluKGlubGluaW5nQmFsYW5jZSwg
T3B0aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9yQ2xvc3VyZUNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0
cnVjdGlvbkNvdW50KCkpOworICAgIAorICAgIC8vIEZpcnN0IGNoZWNrIGlmIHdlIGNhbiBhdm9p
ZCBjcmVhdGluZyBjb250cm9sIGZsb3cuIE91ciBpbmxpbmVyIGRvZXMgc29tZSBDRkcKKyAgICAv
LyBzaW1wbGlmaWNhdGlvbiBvbiB0aGUgZmx5IGFuZCB0aGlzIGhlbHBzIHJlZHVjZSBjb21waWxl
IHRpbWVzLCBidXQgd2UgY2FuIG9ubHkgbGV2ZXJhZ2UKKyAgICAvLyB0aGlzIGluIGNhc2VzIHdo
ZXJlIHdlIGRvbid0IG5lZWQgY29udHJvbCBmbG93IGRpYW1vbmRzIHRvIGNoZWNrIHRoZSBjYWxs
ZWUuCisgICAgaWYgKCFjYWxsTGlua1N0YXR1cy5jb3VsZFRha2VTbG93UGF0aCgpICYmIGNhbGxM
aW5rU3RhdHVzLnNpemUoKSA9PSAxKSB7CisgICAgICAgIGVtaXRGdW5jdGlvbkNoZWNrcygKKyAg
ICAgICAgICAgIGNhbGxMaW5rU3RhdHVzWzBdLmNhbGxlZSgpLCBjYWxsVGFyZ2V0Tm9kZSwgcmVn
aXN0ZXJPZmZzZXQsIHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgICAgIGJvb2wgcmVzdWx0ID0g
YXR0ZW1wdFRvSW5saW5lQ2FsbCgKKyAgICAgICAgICAgIGNhbGxUYXJnZXROb2RlLCByZXN1bHRP
cGVyYW5kLCBjYWxsTGlua1N0YXR1c1swXS5jYWxsZWUoKSwgcmVnaXN0ZXJPZmZzZXQsCisgICAg
ICAgICAgICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbmV4dE9mZnNldCwga2luZCwgQ2Fs
bGVyRG9lc05vcm1hbExpbmtpbmcsIHByZWRpY3Rpb24sCisgICAgICAgICAgICBpbmxpbmluZ0Jh
bGFuY2UpOworICAgICAgICBpZiAoIXJlc3VsdCAmJiAhY2FsbExpbmtTdGF0dXMuaXNQcm92ZWQo
KSkKKyAgICAgICAgICAgIHVuZG9GdW5jdGlvbkNoZWNrcyhjYWxsTGlua1N0YXR1c1swXS5jYWxs
ZWUoKSk7CisgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICBkYXRhTG9nKCJEb25l
IGlubGluaW5nIChzaW1wbGUpLlxuIik7CisgICAgICAgICAgICBkYXRhTG9nKCJTdGFjazogIiwg
Y3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisgICAgCisgICAgLy8gV2UgbmVlZCB0byBjcmVhdGUgc29tZSBraW5kIG9m
IHN3aXRjaCBvdmVyIGNhbGxlZS4gRm9yIG5vdyB3ZSBvbmx5IGRvIHRoaXMgaWYgd2UgYmVsaWV2
ZSB0aGF0CisgICAgLy8gd2UncmUgaW4gdGhlIHRvcCB0aWVyLiBXZSBoYXZlIHR3byByZWFzb25z
IGZvciB0aGlzOiBmaXJzdCwgaXQgcHJvdmlkZXMgdXMgYW4gb3Bwb3J0dW5pdHkgdG8KKyAgICAv
LyBkbyBtb3JlIGRldGFpbGVkIHBvbHl2YXJpYW50L3BvbHltb3JwaGljIHByb2ZpbGluZzsgYW5k
IHNlY29uZCwgaXQgcmVkdWNlcyBjb21waWxlIHRpbWVzIGluCisgICAgLy8gdGhlIERGRy4gQW5k
IGJ5IHBvbHl2YXJpYW50IHByb2ZpbGluZyB3ZSBtZWFuIHBvbHl2YXJpYW50IHByb2ZpbGluZyBv
ZiAqdGhpcyogY2FsbC4gTm90ZSB0aGF0CisgICAgLy8gd2UgY291bGQgaW1wcm92ZSB0aGF0IGFz
cGVjdCBvZiB0aGlzIGJ5IGRvaW5nIHBvbHltb3JwaGljIGlubGluaW5nIGJ1dCBoYXZpbmcgdGhl
IHByb2ZpbGluZworICAgIC8vIGFsc28uIEN1cnJlbnRseSB3ZSBvcHQgYWdhaW5zdCB0aGlzLCBi
dXQgaXQgY291bGQgYmUgaW50ZXJlc3RpbmcuIFRoYXQgd291bGQgcmVxdWlyZSBoYXZpbmcgYQor
ICAgIC8vIHNlcGFyYXRlIG5vZGUgZm9yIGNhbGwgZWRnZSBwcm9maWxpbmcuCisgICAgLy8gRklY
TUU6IEludHJvZHVjZSB0aGUgbm90aW9uIG9mIGEgc2VwYXJhdGUgY2FsbCBlZGdlIHByb2ZpbGlu
ZyBub2RlLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzYwMzMKKyAgICBpZiAoIWlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpIHx8ICFPcHRpb25zOjpl
bmFibGVQb2x5bW9ycGhpY0NhbGxJbmxpbmluZygpKSB7CisgICAgICAgIGlmICh2ZXJib3NlKSB7
CisgICAgICAgICAgICBkYXRhTG9nKCJCYWlsaW5nIGlubGluaW5nIChoYXJkKS5cbiIpOworICAg
ICAgICAgICAgZGF0YUxvZygiU3RhY2s6ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgdW5zaWdu
ZWQgb2xkT2Zmc2V0ID0gbV9jdXJyZW50SW5kZXg7CisgICAgCisgICAgYm9vbCBhbGxBcmVDbG9z
dXJlQ2FsbHMgPSB0cnVlOworICAgIGJvb2wgYWxsQXJlRGlyZWN0Q2FsbHMgPSB0cnVlOworICAg
IGZvciAodW5zaWduZWQgaSA9IGNhbGxMaW5rU3RhdHVzLnNpemUoKTsgaS0tOykgeworICAgICAg
ICBpZiAoY2FsbExpbmtTdGF0dXNbaV0uY2FsbGVlKCkuaXNDbG9zdXJlQ2FsbCgpKQorICAgICAg
ICAgICAgYWxsQXJlRGlyZWN0Q2FsbHMgPSBmYWxzZTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgYWxsQXJlQ2xvc3VyZUNhbGxzID0gZmFsc2U7CisgICAgfQorICAgIAorICAgIE5vZGUqIHRo
aW5nVG9Td2l0Y2hPbjsKKyAgICBpZiAoYWxsQXJlRGlyZWN0Q2FsbHMpCisgICAgICAgIHRoaW5n
VG9Td2l0Y2hPbiA9IGNhbGxUYXJnZXROb2RlOworICAgIGVsc2UgaWYgKGFsbEFyZUNsb3N1cmVD
YWxscykKKyAgICAgICAgdGhpbmdUb1N3aXRjaE9uID0gYWRkVG9HcmFwaChHZXRFeGVjdXRhYmxl
LCBjYWxsVGFyZ2V0Tm9kZSk7CisgICAgZWxzZSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgYmUgYWJsZSB0byBoYW5kbGUgdGhpcyBjYXNlLCBidXQgaXQncyB0cmlja3kgYW5kIHdlIGRv
bid0IGtub3cgb2YgY2FzZXMKKyAgICAgICAgLy8gd2hlcmUgaXQgd291bGQgYmUgYmVuZWZpY2lh
bC4gQWxzbywgQ2FsbExpbmtTdGF0dXMgd291bGQgbWFrZSBhbGwgY2FsbGVlcyBhcHBlYXIgbGlr
ZQorICAgICAgICAvLyBjbG9zdXJlIGNhbGxzIGlmIGFueSBjYWxscyB3ZXJlIGNsb3N1cmUgY2Fs
bHMgLSBleGNlcHQgZm9yIGNhbGxzIHRvIGludGVybmFsIGZ1bmN0aW9ucy4KKyAgICAgICAgLy8g
U28gdGhpcyB3aWxsIG9ubHkgYXJpc2UgaWYgc29tZSBjYWxsZWVzIGFyZSBpbnRlcm5hbCBmdW5j
dGlvbnMgYW5kIG90aGVycyBhcmUgY2xvc3VyZXMuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYwMjAKKyAgICAgICAgaWYgKHZlcmJvc2UpIHsK
KyAgICAgICAgICAgIGRhdGFMb2coIkJhaWxpbmcgaW5saW5pbmcgKG1peCkuXG4iKTsKKyAgICAg
ICAgICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIGlmICh2ZXJi
b3NlKSB7CisgICAgICAgIGRhdGFMb2coIkRvaW5nIGhhcmQgaW5saW5pbmcuLi5cbiIpOworICAg
ICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CisgICAg
fQorICAgIAorICAgIC8vIFRoaXMgbWFrZXMgbWUgd2lzaCB0aGF0IHdlIHdlcmUgaW4gU1NBIGFs
bCB0aGUgdGltZS4gV2UgbmVlZCB0byBwaWNrIGEgdmFyaWFibGUgaW50byB3aGljaCB0bworICAg
IC8vIHN0b3JlIHRoZSBjYWxsZWUgc28gdGhhdCBpdCB3aWxsIGJlIGFjY2Vzc2libGUgdG8gYWxs
IG9mIHRoZSBibG9ja3Mgd2UncmUgYWJvdXQgdG8gY3JlYXRlLiBXZQorICAgIC8vIGdldCBhd2F5
IHdpdGggZG9pbmcgYW4gaW1tZWRpYXRlLXNldCBoZXJlIGJlY2F1c2Ugd2Ugd291bGRuJ3QgaGF2
ZSBwZXJmb3JtZWQgYW55IHNpZGUgZWZmZWN0cworICAgIC8vIHlldC4KKyAgICBpZiAodmVyYm9z
ZSkKKyAgICAgICAgZGF0YUxvZygiUmVnaXN0ZXIgb2Zmc2V0OiAiLCByZWdpc3Rlck9mZnNldCk7
CisgICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZVJlZyhyZWdpc3Rlck9mZnNldCArIEpTU3RhY2s6
OkNhbGxlZSk7CisgICAgY2FsbGVlUmVnID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5k
KGNhbGxlZVJlZyk7CisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGRhdGFMb2coIkNhbGxlZSBp
cyBnb2luZyB0byBiZSAiLCBjYWxsZWVSZWcsICJcbiIpOworICAgIHNldERpcmVjdChjYWxsZWVS
ZWcsIGNhbGxUYXJnZXROb2RlLCBJbW1lZGlhdGVTZXRXaXRoRmx1c2gpOworICAgIAorICAgIFN3
aXRjaERhdGEmIGRhdGEgPSAqbV9ncmFwaC5tX3N3aXRjaERhdGEuYWRkKCk7CisgICAgZGF0YS5r
aW5kID0gU3dpdGNoQ2VsbDsKKyAgICBhZGRUb0dyYXBoKFN3aXRjaCwgT3BJbmZvKCZkYXRhKSwg
dGhpbmdUb1N3aXRjaE9uKTsKKyAgICAKKyAgICBCYXNpY0Jsb2NrKiBvcmlnaW5CbG9jayA9IG1f
Y3VycmVudEJsb2NrOworICAgIGlmICh2ZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJNYXJraW5n
ICIsIFJhd1BvaW50ZXIob3JpZ2luQmxvY2spLCAiIGFzIGxpbmtlZCAob3JpZ2luIG9mIHBvbHkg
aW5saW5lKVxuIik7CisgICAgb3JpZ2luQmxvY2stPmRpZExpbmsoKTsKKyAgICBjYW5jZWxMaW5r
aW5nRm9yQmxvY2sobV9pbmxpbmVTdGFja1RvcCwgb3JpZ2luQmxvY2spOworICAgIAorICAgIC8v
IEVhY2ggaW5saW5lZCBjYWxsZWUgd2lsbCBoYXZlIGEgbGFuZGluZyBibG9jayB0aGF0IGl0IHJl
dHVybnMgYXQuIFRoZXkgc2hvdWxkIGFsbCBoYXZlIGp1bXBzCisgICAgLy8gdG8gdGhlIGNvbnRp
bnVhdGlvbiBibG9jaywgd2hpY2ggd2UgY3JlYXRlIGxhc3QuCisgICAgVmVjdG9yPEJhc2ljQmxv
Y2sqPiBsYW5kaW5nQmxvY2tzOworICAgIAorICAgIC8vIFdlIG1ha2UgZm9yY2UgdGhpcyB0cnVl
IGlmIHdlIGdpdmUgdXAgb24gaW5saW5pbmcgYW55IG9mIHRoZSBlZGdlcy4KKyAgICBib29sIGNv
dWxkVGFrZVNsb3dQYXRoID0gY2FsbExpbmtTdGF0dXMuY291bGRUYWtlU2xvd1BhdGgoKTsKKyAg
ICAKKyAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygiQWJvdXQgdG8gbG9vcCBvdmVy
IGZ1bmN0aW9ucyBhdCAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiLlxuIik7CisgICAgCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxMaW5rU3RhdHVzLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIG1fY3VycmVudEluZGV4ID0gb2xkT2Zmc2V0OworICAgICAgICBSZWZQdHI8QmFzaWNC
bG9jaz4gYmxvY2sgPSBhZG9wdFJlZihuZXcgQmFzaWNCbG9jayhVSU5UX01BWCwgbV9udW1Bcmd1
bWVudHMsIG1fbnVtTG9jYWxzLCBQTmFOKSk7CisgICAgICAgIG1fY3VycmVudEJsb2NrID0gYmxv
Y2suZ2V0KCk7CisgICAgICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soYmxvY2spOworICAgICAgICBw
cmVwYXJlVG9QYXJzZUJsb2NrKCk7CisgICAgICAgIAorICAgICAgICBOb2RlKiBteUNhbGxUYXJn
ZXROb2RlID0gZ2V0RGlyZWN0KGNhbGxlZVJlZyk7CisgICAgICAgIAorICAgICAgICBib29sIGlu
bGluaW5nUmVzdWx0ID0gYXR0ZW1wdFRvSW5saW5lQ2FsbCgKKyAgICAgICAgICAgIG15Q2FsbFRh
cmdldE5vZGUsIHJlc3VsdE9wZXJhbmQsIGNhbGxMaW5rU3RhdHVzW2ldLmNhbGxlZSgpLCByZWdp
c3Rlck9mZnNldCwKKyAgICAgICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBuZXh0
T2Zmc2V0LCBraW5kLCBDYWxsZXJMaW5rc01hbnVhbGx5LCBwcmVkaWN0aW9uLAorICAgICAgICAg
ICAgaW5saW5pbmdCYWxhbmNlKTsKKyAgICAgICAgCisgICAgICAgIGlmICghaW5saW5pbmdSZXN1
bHQpIHsKKyAgICAgICAgICAgIC8vIFRoYXQgZmFpbGVkIHNvIHdlIGxldCB0aGUgYmxvY2sgZGll
LiBOb3RoaW5nIGludGVyZXN0aW5nIHNob3VsZCBoYXZlIGJlZW4gYWRkZWQgdG8KKyAgICAgICAg
ICAgIC8vIHRoZSBibG9jay4gV2UgYWxzbyBnaXZlIHVwIG9uIGlubGluaW5nIGFueSBvZiB0aGUg
KGxlc3MgZnJlcXVlbnQpIGNhbGxlZXMuCisgICAgICAgICAgICBBU1NFUlQobV9jdXJyZW50Qmxv
Y2sgPT0gYmxvY2suZ2V0KCkpOworICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9ibG9ja3Mu
bGFzdCgpID09IGJsb2NrKTsKKyAgICAgICAgICAgIG1fZ3JhcGgua2lsbEJsb2NrQW5kSXRzQ29u
dGVudHMoYmxvY2suZ2V0KCkpOworICAgICAgICAgICAgbV9ncmFwaC5tX2Jsb2Nrcy5yZW1vdmVM
YXN0KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFRoZSBmYWN0IHRoYXQgaW5saW5p
bmcgZmFpbGVkIG1lYW5zIHdlIG5lZWQgYSBzbG93IHBhdGguCisgICAgICAgICAgICBjb3VsZFRh
a2VTbG93UGF0aCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgSlNDZWxsKiB0aGluZ1RvQ2FzZU9uOworICAgICAgICBpZiAoYWxsQXJlRGly
ZWN0Q2FsbHMpCisgICAgICAgICAgICB0aGluZ1RvQ2FzZU9uID0gY2FsbExpbmtTdGF0dXNbaV0u
Y2FsbGVlKCkubm9uRXhlY3V0YWJsZUNhbGxlZSgpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIEFTU0VSVChhbGxBcmVDbG9zdXJlQ2FsbHMpOworICAgICAgICAgICAgdGhpbmdUb0Nhc2VP
biA9IGNhbGxMaW5rU3RhdHVzW2ldLmNhbGxlZSgpLmV4ZWN1dGFibGUoKTsKKyAgICAgICAgfQor
ICAgICAgICBkYXRhLmNhc2VzLmFwcGVuZChTd2l0Y2hDYXNlKG1fZ3JhcGguZnJlZXplKHRoaW5n
VG9DYXNlT24pLCBibG9jay5nZXQoKSkpOworICAgICAgICBtX2N1cnJlbnRJbmRleCA9IG5leHRP
ZmZzZXQ7CisgICAgICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7IC8vIFRoaXMgb25seSBjb21l
cyBpbnRvIHBsYXkgZm9yIGludHJpbnNpY3MsIHNpbmNlIG5vcm1hbCBpbmxpbmVkIGNvZGUgd2ls
bCBsZWF2ZSBhbiBlbXB0eSBxdWV1ZS4KKyAgICAgICAgYWRkVG9HcmFwaChKdW1wKTsKKyAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBkYXRhTG9nKCJNYXJraW5nICIsIFJhd1BvaW50
ZXIobV9jdXJyZW50QmxvY2spLCAiIGFzIGxpbmtlZCAodGFpbCBvZiBwb2x5IGlubGluZWUpXG4i
KTsKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmRpZExpbmsoKTsKKyAgICAgICAgbGFuZGluZ0Js
b2Nrcy5hcHBlbmQobV9jdXJyZW50QmxvY2spOworCisgICAgICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICAgICAgZGF0YUxvZygiRmluaXNoZWQgaW5saW5pbmcgIiwgY2FsbExpbmtTdGF0dXNbaV0u
Y2FsbGVlKCksICIgYXQgIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIi5cbiIpOworICAgIH0KKyAg
ICAKKyAgICBSZWZQdHI8QmFzaWNCbG9jaz4gc2xvd1BhdGhCbG9jayA9IGFkb3B0UmVmKAorICAg
ICAgICBuZXcgQmFzaWNCbG9jayhVSU5UX01BWCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxz
LCBQTmFOKSk7CisgICAgbV9jdXJyZW50SW5kZXggPSBvbGRPZmZzZXQ7CisgICAgZGF0YS5mYWxs
VGhyb3VnaCA9IEJyYW5jaFRhcmdldChzbG93UGF0aEJsb2NrLmdldCgpKTsKKyAgICBtX2dyYXBo
LmFwcGVuZEJsb2NrKHNsb3dQYXRoQmxvY2spOworICAgIGlmICh2ZXJib3NlKQorICAgICAgICBk
YXRhTG9nKCJNYXJraW5nICIsIFJhd1BvaW50ZXIoc2xvd1BhdGhCbG9jay5nZXQoKSksICIgYXMg
bGlua2VkIChzbG93IHBhdGggYmxvY2spXG4iKTsKKyAgICBzbG93UGF0aEJsb2NrLT5kaWRMaW5r
KCk7CisgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOworICAgIG1fY3VycmVudEJsb2NrID0gc2xv
d1BhdGhCbG9jay5nZXQoKTsKKyAgICBOb2RlKiBteUNhbGxUYXJnZXROb2RlID0gZ2V0RGlyZWN0
KGNhbGxlZVJlZyk7CisgICAgaWYgKGNvdWxkVGFrZVNsb3dQYXRoKSB7CisgICAgICAgIGFkZENh
bGwoCisgICAgICAgICAgICByZXN1bHRPcGVyYW5kLCBjYWxsT3AsIE9wSW5mbygpLCBteUNhbGxU
YXJnZXROb2RlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywKKyAgICAgICAgICAgIHJlZ2lz
dGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKKyAgICB9IGVsc2UgeworICAgICAgICBhZGRUb0dyYXBo
KENoZWNrQmFkQ2VsbCk7CisgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgbXlDYWxsVGFyZ2V0
Tm9kZSk7CisgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICAgICAgCisg
ICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGFkZFRvR3JhcGgoQm90
dG9tVmFsdWUpKTsKKyAgICB9CisKKyAgICBtX2N1cnJlbnRJbmRleCA9IG5leHRPZmZzZXQ7Cisg
ICAgcHJvY2Vzc1NldExvY2FsUXVldWUoKTsKKyAgICBhZGRUb0dyYXBoKEp1bXApOworICAgIGxh
bmRpbmdCbG9ja3MuYXBwZW5kKG1fY3VycmVudEJsb2NrKTsKKyAgICAKKyAgICBSZWZQdHI8QmFz
aWNCbG9jaz4gY29udGludWF0aW9uQmxvY2sgPSBhZG9wdFJlZigKKyAgICAgICAgbmV3IEJhc2lj
QmxvY2soVUlOVF9NQVgsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgUE5hTikpOworICAg
IG1fZ3JhcGguYXBwZW5kQmxvY2soY29udGludWF0aW9uQmxvY2spOworICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICBkYXRhTG9nKCJBZGRpbmcgdW5saW5rZWQgYmxvY2sgIiwgUmF3UG9pbnRlcihj
b250aW51YXRpb25CbG9jay5nZXQoKSksICIgKGNvbnRpbnVhdGlvbilcbiIpOworICAgIG1faW5s
aW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soY29udGlu
dWF0aW9uQmxvY2suZ2V0KCkpKTsKKyAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CisgICAgbV9j
dXJyZW50QmxvY2sgPSBjb250aW51YXRpb25CbG9jay5nZXQoKTsKICAgICAKLSAgICAvLyBBdCB0
aGlzIHBvaW50IHdlIHJldHVybiBhbmQgY29udGludWUgdG8gZ2VuZXJhdGUgY29kZSBmb3IgdGhl
IGNhbGxlciwgYnV0Ci0gICAgLy8gaW4gdGhlIG5ldyBiYXNpYyBibG9jay4KKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSBsYW5kaW5nQmxvY2tzLnNpemUoKTsgaS0tOykKKyAgICAgICAgbGFuZGluZ0Js
b2Nrc1tpXS0+bGFzdCgpLT50YXJnZXRCbG9jaygpID0gY29udGludWF0aW9uQmxvY2suZ2V0KCk7
CisgICAgCisgICAgbV9jdXJyZW50SW5kZXggPSBvbGRPZmZzZXQ7CisgICAgCisgICAgaWYgKHZl
cmJvc2UpIHsKKyAgICAgICAgZGF0YUxvZygiRG9uZSBpbmxpbmluZyAoaGFyZCkuXG4iKTsKKyAg
ICAgICAgZGF0YUxvZygiU3RhY2s6ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOworICAg
IH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTY0NSw3ICsxOTE4LDcgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlVHlwZWRBcnJheUNvbgogCiBib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oCiAgICAgaW50IHJlc3VsdE9wZXJhbmQsIElu
dGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgcmVnaXN0ZXJPZmZzZXQsCi0gICAgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgLy8gSWYgd2UgZXZlciBm
aW5kIHRoYXQgd2UgaGF2ZSBhIGxvdCBvZiBpbnRlcm5hbCBmdW5jdGlvbnMgdGhhdCB3ZSBzcGVj
aWFsaXplIGZvciwKICAgICAvLyB0aGVuIHdlIHNob3VsZCBwcm9iYWJseSBoYXZlIHNvbWUgc29y
dCBvZiBoYXNodGFibGUgZGlzcGF0Y2gsIG9yIG1heWJlIGV2ZW4KQEAgLTE2NTQsOCArMTkyNyw2
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50SW50ZXIKICAgICAvLyB3ZSBr
bm93IGFib3V0IGlzIHNtYWxsIGVub3VnaCwgdGhhdCBoYXZpbmcganVzdCBhIGxpbmVhciBjYXNj
YWRlIG9mIGlmIHN0YXRlbWVudHMKICAgICAvLyBpcyBnb29kIGVub3VnaC4KICAgICAKLSAgICBV
TlVTRURfUEFSQU0ocHJlZGljdGlvbik7IC8vIFJlbW92ZSB0aGlzIG9uY2Ugd2UgZG8gbW9yZSB0
aGluZ3MuCi0gICAgCiAgICAgaWYgKGZ1bmN0aW9uLT5jbGFzc0luZm8oKSA9PSBBcnJheUNvbnN0
cnVjdG9yOjppbmZvKCkpIHsKICAgICAgICAgaWYgKGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKSAh
PSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMDIwLDYgKzIyOTEsMTIgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlUHV0QnlJZCgKIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6cHJlcGFyZVRvUGFy
c2VCbG9jaygpCiB7CisgICAgY2xlYXJDYWNoZXMoKTsKKyAgICBBU1NFUlQobV9zZXRMb2NhbFF1
ZXVlLmlzRW1wdHkoKSk7Cit9CisKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OmNsZWFyQ2FjaGVzKCkK
K3sKICAgICBtX2NvbnN0YW50cy5yZXNpemUoMCk7CiB9CiAKQEAgLTIwNTksOSArMjMzNiw3IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICB9CiAKICAgICB3
aGlsZSAodHJ1ZSkgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zZXRMb2Nh
bFF1ZXVlLnNpemUoKTsgKytpKQotICAgICAgICAgICAgbV9zZXRMb2NhbFF1ZXVlW2ldLmV4ZWN1
dGUodGhpcyk7Ci0gICAgICAgIG1fc2V0TG9jYWxRdWV1ZS5yZXNpemUoMCk7CisgICAgICAgIHBy
b2Nlc3NTZXRMb2NhbFF1ZXVlKCk7CiAgICAgICAgIAogICAgICAgICAvLyBEb24ndCBleHRlbmQg
b3ZlciBqdW1wIGRlc3RpbmF0aW9ucy4KICAgICAgICAgaWYgKG1fY3VycmVudEluZGV4ID09IGxp
bWl0KSB7CkBAIC0yMjA1LDEzICsyNDgwLDEzIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIEpTQ2VsbCogY2FjaGVkRnVuY3Rpb24gPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5qc0NlbGwuZ2V0KCk7CiAgICAgICAgICAgICBpZiAoIWNhY2hl
ZEZ1bmN0aW9uIAogICAgICAgICAgICAgICAgIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmls
ZWRCbG9jay0+Y291bGRUYWtlU2xvd0Nhc2UobV9jdXJyZW50SW5kZXgpCi0gICAgICAgICAgICAg
ICAgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgQmFkRnVuY3Rpb24pKSB7CisgICAgICAgICAgICAgICAgfHwgbV9pbmxpbmVTdGFj
a1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2VsbCkp
IHsKICAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpLCBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkNhbGxlZSkpKTsK
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3pl
biA9IG1fZ3JhcGguZnJlZXplKGNhY2hlZEZ1bmN0aW9uKTsKICAgICAgICAgICAgICAgICBBU1NF
UlQoY2FjaGVkRnVuY3Rpb24tPmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpOwogICAgICAg
ICAgICAgICAgIE5vZGUqIGFjdHVhbENhbGxlZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoSlNTdGFj
azo6Q2FsbGVlKSk7Ci0gICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0Z1bmN0aW9uLCBP
cEluZm8oZnJvemVuKSwgYWN0dWFsQ2FsbGVlKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KENoZWNrQ2VsbCwgT3BJbmZvKGZyb3plbiksIGFjdHVhbENhbGxlZSk7CiAgICAgICAgICAgICAg
ICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwg
YWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8oZnJvemVuKSkpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2NhbGxlZSk7CkBAIC0yODkzLDcgKzMxNjgs
NyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAg
ICAvLyBhbHJlYWR5IGduYXJseSBlbm91Z2ggYXMgaXQgaXMuCiAgICAgICAgICAgICBBU1NFUlQo
cG9pbnRlcklzRnVuY3Rpb24oY3VycmVudEluc3RydWN0aW9uWzJdLnUuc3BlY2lhbFBvaW50ZXIp
KTsKICAgICAgICAgICAgIGFkZFRvR3JhcGgoCi0gICAgICAgICAgICAgICAgQ2hlY2tGdW5jdGlv
biwKKyAgICAgICAgICAgICAgICBDaGVja0NlbGwsCiAgICAgICAgICAgICAgICAgT3BJbmZvKG1f
Z3JhcGguZnJlZXplKHN0YXRpY19jYXN0PEpTQ2VsbCo+KGFjdHVhbFBvaW50ZXJGb3IoCiAgICAg
ICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLCBjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5zcGVjaWFsUG9pbnRlcikpKSksCiAgICAgICAgICAgICAgICAgZ2V0KFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSkpOwpAQCAtMzMx
NywxNSArMzU5MiwxOSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2soQmFzaWNCbG9j
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAg
YmxvY2stPmlzTGlua2VkID0gdHJ1ZTsKLSNlbmRpZgorICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICBkYXRhTG9nKCJNYXJraW5nICIsIFJhd1BvaW50ZXIoYmxvY2spLCAiIGFzIGxpbmtlZCAoYWN0
dWFsbHkgZGlkIGxpbmtpbmcpXG4iKTsKKyAgICBibG9jay0+ZGlkTGluaygpOwogfQogCiB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2tzKFZlY3RvcjxVbmxpbmtlZEJsb2NrPiYgdW5saW5r
ZWRCbG9ja3MsIFZlY3RvcjxCYXNpY0Jsb2NrKj4mIHBvc3NpYmxlVGFyZ2V0cykKIHsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHVubGlua2VkQmxvY2tzLnNpemUoKTsgKytpKSB7CisgICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgZGF0YUxvZygiQXR0ZW1wdGluZyB0byBsaW5r
ICIsIFJhd1BvaW50ZXIodW5saW5rZWRCbG9ja3NbaV0ubV9ibG9jayksICJcbiIpOwogICAgICAg
ICBpZiAodW5saW5rZWRCbG9ja3NbaV0ubV9uZWVkc05vcm1hbExpbmtpbmcpIHsKKyAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBEb2VzIG5lZWQg
bm9ybWFsIGxpbmtpbmcuXG4iKTsKICAgICAgICAgICAgIGxpbmtCbG9jayh1bmxpbmtlZEJsb2Nr
c1tpXS5tX2Jsb2NrLCBwb3NzaWJsZVRhcmdldHMpOwogICAgICAgICAgICAgdW5saW5rZWRCbG9j
a3NbaV0ubV9uZWVkc05vcm1hbExpbmtpbmcgPSBmYWxzZTsKICAgICAgICAgfQpAQCAtMzQ5Miw3
ICszNzcxLDcgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZQogCiB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiB7Ci0gICAgcHJlcGFyZVRvUGFy
c2VCbG9jaygpOworICAgIGNsZWFyQ2FjaGVzKCk7CiAgICAgCiAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jazsKICAgICAKQEAgLTM1NTgsNyAr
MzgzNywxMiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAg
ICAgICAgICAgICAgIC8vIDIpIElmIHRoZSBieXRlY29kZUJlZ2luIGlzIGVxdWFsIHRvIHRoZSBj
dXJyZW50SW5kZXgsIHRoZW4gd2UgZmFpbGVkIHRvIGRvCiAgICAgICAgICAgICAgICAgICAgIC8v
ICAgIGEgcGVlcGhvbGUgY29hbGVzY2luZyBvZiB0aGlzIGJsb2NrIGluIHRoZSBpZiBzdGF0ZW1l
bnQgYWJvdmUuIFNvLCB3ZSdyZQogICAgICAgICAgICAgICAgICAgICAvLyAgICBnZW5lcmF0aW5n
IHN1Ym9wdGltYWwgY29kZSBhbmQgbGVhdmluZyBtb3JlIHdvcmsgZm9yIHRoZSBDRkcgc2ltcGxp
Zmllci4KLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1faW5saW5lU3RhY2tUb3AtPm1fdW5s
aW5rZWRCbG9ja3MuaXNFbXB0eSgpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9j
a3MubGFzdCgpLm1fYmxvY2stPmJ5dGVjb2RlQmVnaW4gPCBtX2N1cnJlbnRJbmRleCk7CisgICAg
ICAgICAgICAgICAgICAgIGlmICghbV9pbmxpbmVTdGFja1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxhc3RCZWdpbiA9
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV91bmxpbmtl
ZEJsb2Nrcy5sYXN0KCkubV9ibG9jay0+Ynl0ZWNvZGVCZWdpbjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVF9VTlVTRUQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEJl
Z2luLCBsYXN0QmVnaW4gPT0gVUlOVF9NQVggfHwgbGFzdEJlZ2luIDwgbV9jdXJyZW50SW5kZXgp
OworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3Rh
Y2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2suZ2V0KCkp
KTsKICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9ibG9ja0xpbmtpbmdU
YXJnZXRzLmFwcGVuZChibG9jay5nZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBm
aXJzdCBibG9jayBpcyBkZWZpbml0ZWx5IGFuIE9TUiB0YXJnZXQuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHJl
dmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJl
YWRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDggKzkwLDEwIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnNldENoaWxkMShFZGdlKCkpOwog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b206
Ci0gICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS0+Y2hpbGQxKCkpCisgICAgICAgICAgICAg
ICAgICAgIGlmICghbm9kZS0+Y2hpbGQxKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHN3aXRj
aCAobm9kZS0+Y2hpbGQxKCktPm9wKCkpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBQaGk6
CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgU2V0QXJndW1lbnQ6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMTcyODU5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0NCw2ICsxNDQsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
CiAgICAgY2FzZSBGaWF0SW50NTI6CiAgICAgY2FzZSBNYWtlUm9wZToKICAgICBjYXNlIFZhbHVl
VG9JbnQzMjoKKyAgICBjYXNlIEdldEV4ZWN1dGFibGU6CisgICAgY2FzZSBCb3R0b21WYWx1ZToK
ICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlKSk7CiAgICAgICAgIHJldHVybjsKICAgICAgICAg
CkBAIC0yMzksMTIgKzI0MSw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUKICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlLCBub2RlLT5hcml0aE1vZGUoKSkpOwog
ICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKLSAgICAg
ICAgZGVmKFB1cmVWYWx1ZShDaGVja0Z1bmN0aW9uLCBBZGphY2VuY3lMaXN0KEFkamFjZW5jeUxp
c3Q6OkZpeGVkLCBub2RlLT5jaGlsZDEoKSksIG5vZGUtPmZ1bmN0aW9uKCkpKTsKLSAgICAgICAg
cmV0dXJuOwotICAgICAgICAKLSAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToKLSAgICAgICAgZGVm
KFB1cmVWYWx1ZShub2RlLCBub2RlLT5leGVjdXRhYmxlKCkpKTsKKyAgICBjYXNlIENoZWNrQ2Vs
bDoKKyAgICAgICAgZGVmKFB1cmVWYWx1ZShDaGVja0NlbGwsIEFkamFjZW5jeUxpc3QoQWRqYWNl
bmN5TGlzdDo6Rml4ZWQsIG5vZGUtPmNoaWxkMSgpKSwgbm9kZS0+Y2VsbE9wZXJhbmQoKSkpOwog
ICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRl
cjoKQEAgLTI2Myw2ICsyNjEsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlCiAgICAgY2FzZSBTd2l0Y2g6CiAgICAgY2FzZSBUaHJvdzoKICAgICBjYXNlIEZvcmNl
T1NSRXhpdDoKKyAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICBjYXNlIFJldHVybjoKICAgICBj
YXNlIFVucmVhY2hhYmxlOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CkBAIC0zNTgsNiAr
MzU3LDggQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNh
c2UgQXJyYXlQb3A6CiAgICAgY2FzZSBDYWxsOgogICAgIGNhc2UgQ29uc3RydWN0OgorICAgIGNh
c2UgUHJvZmlsZWRDYWxsOgorICAgIGNhc2UgUHJvZmlsZWRDb25zdHJ1Y3Q6CiAgICAgY2FzZSBO
YXRpdmVDYWxsOgogICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OgogICAgIGNhc2UgVG9QcmltaXRp
dmU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJKHJldmlzaW9uIDE3
Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYzLDYgKzYzLDEzIEBAIGVudW0gUmVmTm9kZU1vZGUgewogICAgIERvbnRSZWZO
b2RlCiB9OwogCitlbnVtIFN3aXRjaEtpbmQgeworICAgIFN3aXRjaEltbSwKKyAgICBTd2l0Y2hD
aGFyLAorICAgIFN3aXRjaFN0cmluZywKKyAgICBTd2l0Y2hDZWxsCit9OworCiBpbmxpbmUgYm9v
bCB2ZXJib3NlQ29tcGlsYXRpb25FbmFibGVkKENvbXBpbGF0aW9uTW9kZSBtb2RlID0gREZHTW9k
ZSkKIHsKICAgICByZXR1cm4gT3B0aW9uczo6dmVyYm9zZUNvbXBpbGF0aW9uKCkgfHwgT3B0aW9u
czo6ZHVtcEdyYXBoQXRFYWNoUGhhc2UoKSB8fCAoaXNGVEwobW9kZSkgJiYgT3B0aW9uczo6dmVy
Ym9zZUZUTENvbXBpbGF0aW9uKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE3Mjg1OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsOCArMTQyLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
IGNhc2UgQ2hlY2tGdW5jdGlvbjogewotICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCkgIT0gbm9kZS0+ZnVuY3Rpb24oKS0+dmFsdWUoKSkK
KyAgICAgICAgICAgIGNhc2UgQ2hlY2tDZWxsOiB7CisgICAgICAgICAgICAgICAgaWYgKG1fc3Rh
dGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKSAhPSBub2RlLT5jZWxsT3BlcmFuZCgp
LT52YWx1ZSgpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBu
b2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CiAgICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRy
dWU7CkBAIC0zODQsNiArMzg0LDE5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgY2FzZSBQcm9maWxlZENhbGw6CisgICAgICAgICAgICBjYXNlIFByb2ZpbGVkQ29u
c3RydWN0OiB7CisgICAgICAgICAgICAgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUobV9ncmFwaC52
YXJBcmdDaGlsZChub2RlLCAwKSkubV92YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gSWYgd2Ugd2VyZSBhYmxlIHRv
IHByb3ZlIHRoYXQgdGhlIGNhbGxlZSBpcyBhIGNvbnN0YW50IHRoZW4gdGhlIG5vcm1hbCBjYWxs
CisgICAgICAgICAgICAgICAgLy8gaW5saW5lIGNhY2hlIHdpbGwgcmVjb3JkIHRoaXMgY2FsbGVl
LiBUaGlzIG1lYW5zIHRoYXQgdGhlcmUgaXMgbm8gbmVlZCB0byBkbyBhbnkKKyAgICAgICAgICAg
ICAgICAvLyBhZGRpdGlvbmFsIHByb2ZpbGluZy4KKyAgICAgICAgICAgICAgICBub2RlLT5zZXRP
cChub2RlLT5vcCgpID09IFByb2ZpbGVkQ2FsbCA/IENhbGwgOiBDb25zdHJ1Y3QpOworICAgICAg
ICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFr
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24g
MTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSkKICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6
CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKLSAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToKKyAg
ICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6CiAgICAgY2FzZSBD
aGVja0FycmF5OgogICAgIGNhc2UgR2V0U2NvcGU6CkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBk
b2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0R2xvYmFsVmFyOgog
ICAgIGNhc2UgVmFyaWFibGVXYXRjaHBvaW50OgogICAgIGNhc2UgVmFySW5qZWN0aW9uV2F0Y2hw
b2ludDoKLSAgICBjYXNlIENoZWNrRnVuY3Rpb246CisgICAgY2FzZSBDaGVja0NlbGw6CiAgICAg
Y2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBSZWdFeHBFeGVjOgog
ICAgIGNhc2UgUmVnRXhwVGVzdDoKQEAgLTExOSw2ICsxMTksOCBAQCBib29sIGRvZXNHQyhHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb25zdHJ1Y3Q6CiAgICAgY2FzZSBOYXRp
dmVDYWxsOgogICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OgorICAgIGNhc2UgUHJvZmlsZWRDYWxs
OgorICAgIGNhc2UgUHJvZmlsZWRDb25zdHJ1Y3Q6CiAgICAgY2FzZSBCcmVha3BvaW50OgogICAg
IGNhc2UgUHJvZmlsZVdpbGxDYWxsOgogICAgIGNhc2UgUHJvZmlsZURpZENhbGw6CkBAIC0xOTUs
NiArMTk3LDggQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNh
c2UgR2V0RGlyZWN0UG5hbWU6CiAgICAgY2FzZSBGaWF0SW50NTI6CiAgICAgY2FzZSBCb29sZWFu
VG9OdW1iZXI6CisgICAgY2FzZSBDaGVja0JhZENlbGw6CisgICAgY2FzZSBCb3R0b21WYWx1ZToK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkocmV2aXNpb24gMTcyODU5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04OSw2ICs4OSw5IEBAIHN0YXRpYyBDb21waWxhdGlvblJlc3VsdCBjb21waWxlSW1w
bCgKICAgICAgICAgdm0uZ2V0Q1RJU3R1Yih2aXJ0dWFsQ29uc3RydWN0VGhhdFByZXNlcnZlc1Jl
Z3NUaHVua0dlbmVyYXRvcik7CiAgICAgfQogICAgIAorICAgIGlmIChDYWxsRWRnZUxvZzo6aXNF
bmFibGVkKCkpCisgICAgICAgIHZtLmVuc3VyZUNhbGxFZGdlTG9nKCkucHJvY2Vzc0xvZygpOwor
ICAgIAogICAgIFJlZlB0cjxQbGFuPiBwbGFuID0gYWRvcHRSZWYoCiAgICAgICAgIG5ldyBQbGFu
KGNvZGVCbG9jaywgcHJvZmlsZWRERkdDb2RlQmxvY2ssIG1vZGUsIG9zckVudHJ5Qnl0ZWNvZGVJ
bmRleCwgbXVzdEhhbmRsZVZhbHVlcykpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
MzYsNiArNzM2LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+
Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKQogICAgICAgICAgICAgICAgICAgICBm
aXhFZGdlPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBTd2l0Y2hDZWxsOgorICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKQorICAgICAgICAgICAgICAgICAgICBm
aXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAvLyBlbHNl
IGl0J3MgZmluZSBmb3IgdGhpcyB0byBoYXZlIFVudHlwZWRVc2U7IHdlIHdpbGwgaGFuZGxlIHRo
aXMgYnkganVzdCBtYWtpbmcKKyAgICAgICAgICAgICAgICAvLyBub24tY2VsbHMgdGFrZSB0aGUg
ZGVmYXVsdCBjYXNlLgorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTg5NywxMyArOTAzLDEzIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgQ2hlY2tFeGVj
dXRhYmxlOiB7CisgICAgICAgIGNhc2UgR2V0RXhlY3V0YWJsZTogewogICAgICAgICAgICAgZml4
RWRnZTxGdW5jdGlvblVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgotICAg
ICAgICBjYXNlIENoZWNrRnVuY3Rpb246CisgICAgICAgIGNhc2UgQ2hlY2tDZWxsOgogICAgICAg
ICBjYXNlIENoZWNrSGFzSW5zdGFuY2U6CiAgICAgICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICAg
ICAgY2FzZSBHZXRCdXR0ZXJmbHk6IHsKQEAgLTExMjAsNiArMTEyNiw4IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OgogICAgICAgICBjYXNlIENh
bGw6CiAgICAgICAgIGNhc2UgQ29uc3RydWN0OgorICAgICAgICBjYXNlIFByb2ZpbGVkQ2FsbDoK
KyAgICAgICAgY2FzZSBQcm9maWxlZENvbnN0cnVjdDoKICAgICAgICAgY2FzZSBOYXRpdmVDYWxs
OgogICAgICAgICBjYXNlIE5hdGl2ZUNvbnN0cnVjdDoKICAgICAgICAgY2FzZSBOZXdPYmplY3Q6
CkBAIC0xMTQ5LDYgKzExNTcsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFRocm93UmVmZXJl
bmNlRXJyb3I6CiAgICAgICAgIGNhc2UgQ291bnRFeGVjdXRpb246CiAgICAgICAgIGNhc2UgRm9y
Y2VPU1JFeGl0OgorICAgICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICAgICAgY2FzZSBDaGVj
a1dhdGNoZG9nVGltZXI6CiAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgICAgIGNhc2Ug
RXh0cmFjdE9TUkVudHJ5TG9jYWw6CkBAIC0xMTU5LDYgKzExNjgsNyBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIFR5cGVkQXJyYXlXYXRjaHBvaW50OgogICAgICAgICBjYXNlIE1vdkhpbnQ6CiAg
ICAgICAgIGNhc2UgWm9tYmllSGludDoKKyAgICAgICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICAg
ICAgICAgIGJyZWFrOwogI2Vsc2UKICAgICAgICAgZGVmYXVsdDoKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIyLDI0ICsy
MjIsMjMgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAogICAgICAg
ICBvdXQucHJpbnQoY29tbWEsIGluQ29udGV4dCgqbm9kZS0+c3RydWN0dXJlKCksIGNvbnRleHQp
KTsKICAgICBpZiAobm9kZS0+aGFzVHJhbnNpdGlvbigpKQogICAgICAgICBvdXQucHJpbnQoY29t
bWEsIHBvaW50ZXJEdW1wSW5Db250ZXh0KG5vZGUtPnRyYW5zaXRpb24oKSwgY29udGV4dCkpOwot
ICAgIGlmIChub2RlLT5oYXNGdW5jdGlvbigpKSB7Ci0gICAgICAgIG91dC5wcmludChjb21tYSwg
ImZ1bmN0aW9uKCIsIHBvaW50ZXJEdW1wKG5vZGUtPmZ1bmN0aW9uKCkpLCAiLCAiKTsKLSAgICAg
ICAgaWYgKG5vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkuaXNDZWxsKCkKLSAgICAgICAgICAgICYm
IG5vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkuYXNDZWxsKCktPmluaGVyaXRzKEpTRnVuY3Rpb246
OmluZm8oKSkpIHsKLSAgICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpT
RnVuY3Rpb24qPihub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpLmFzQ2VsbCgpKTsKLSAgICAgICAg
ICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSkKLSAgICAgICAgICAgICAgICBvdXQu
cHJpbnQoIjxob3N0IGZ1bmN0aW9uPiIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIG91dC5wcmludChGdW5jdGlvbkV4ZWN1dGFibGVEdW1wKGZ1bmN0aW9uLT5qc0V4ZWN1dGFi
bGUoKSkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG91dC5wcmludCgiPG5vdCBKU0Z1
bmN0aW9uPiIpOwotICAgICAgICBvdXQucHJpbnQoIikiKTsKLSAgICB9Ci0gICAgaWYgKG5vZGUt
Pmhhc0V4ZWN1dGFibGUoKSkgewotICAgICAgICBpZiAobm9kZS0+ZXhlY3V0YWJsZSgpLT5pbmhl
cml0cyhGdW5jdGlvbkV4ZWN1dGFibGU6OmluZm8oKSkpCi0gICAgICAgICAgICBvdXQucHJpbnQo
Y29tbWEsICJleGVjdXRhYmxlKCIsIEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAoanNDYXN0PEZ1bmN0
aW9uRXhlY3V0YWJsZSo+KG5vZGUtPmV4ZWN1dGFibGUoKSkpLCAiKSIpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJleGVjdXRhYmxlKG5vdCBmdW5jdGlvbjog
IiwgUmF3UG9pbnRlcihub2RlLT5leGVjdXRhYmxlKCkpLCAiKSIpOworICAgIGlmIChub2RlLT5o
YXNDZWxsT3BlcmFuZCgpKSB7CisgICAgICAgIGlmICghbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFs
dWUoKSB8fCAhbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5pc0NlbGwoKSkKKyAgICAgICAg
ICAgIG91dC5wcmludChjb21tYSwgImludmFsaWQgY2VsbCBvcGVyYW5kOiAiLCBub2RlLT5jZWxs
T3BlcmFuZCgpLT52YWx1ZSgpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBvdXQucHJp
bnQoY29tbWEsIHBvaW50ZXJEdW1wKG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuYXNDZWxs
KCkpKTsKKyAgICAgICAgICAgIGlmIChub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpLmlzQ2Vs
bCgpKSB7CisgICAgICAgICAgICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFudChub2RlLT5jZWxsT3Bl
cmFuZCgpLT52YWx1ZSgpLmFzQ2VsbCgpKTsKKyAgICAgICAgICAgICAgICBpZiAoRXhlY3V0YWJs
ZUJhc2UqIGV4ZWN1dGFibGUgPSB2YXJpYW50LmV4ZWN1dGFibGUoKSkgeworICAgICAgICAgICAg
ICAgICAgICBpZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG91dC5wcmludChjb21tYSwgIjxob3N0IGZ1bmN0aW9uPiIpOworICAgICAgICAg
ICAgICAgICAgICBlbHNlIGlmIChGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSA9IGpzRHluYW1pY0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSkpCisgICAg
ICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIEZ1bmN0aW9uRXhlY3V0YWJsZUR1
bXAoZnVuY3Rpb25FeGVjdXRhYmxlKSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgIjxub24tZnVuY3Rpb24gZXhlY3V0
YWJsZT4iKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAg
ICB9CiAgICAgaWYgKG5vZGUtPmhhc0Z1bmN0aW9uRGVjbEluZGV4KCkpIHsKICAgICAgICAgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbV9jb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChu
b2RlLT5mdW5jdGlvbkRlY2xJbmRleCgpKTsKQEAgLTk4NSwxMCArOTg0LDYgQEAgdm9pZCBHcmFw
aDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdgogICAgICAgICAgICAgTm9kZSogbm9kZSA9
IGJsb2NrLT5hdChub2RlSW5kZXgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBzd2l0Y2gg
KG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOgotICAgICAg
ICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRSZWFkT25seVBvaW50ZXIobm9kZS0+
ZXhlY3V0YWJsZSgpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbm9kZS0+c3RydWN0dXJlU2V0KCkuc2l6ZSgpOyBpLS07KQogICAgICAgICAg
ICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlQb2ludGVyKG5vZGUt
PnN0cnVjdHVyZVNldCgpW2ldKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg0LDcgKzE4
NCw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0IKICAgICAgICAg
ICAgIHRhYmxlLmN0aU9mZnNldHNbal0gPSB0YWJsZS5jdGlEZWZhdWx0OwogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGogPSBkYXRhLmNhc2VzLnNpemUoKTsgai0tOykgewogICAgICAgICAgICAgU3dp
dGNoQ2FzZSYgbXlDYXNlID0gZGF0YS5jYXNlc1tqXTsKLSAgICAgICAgICAgIHRhYmxlLmN0aU9m
ZnNldHNbbXlDYXNlLnZhbHVlLnN3aXRjaExvb2t1cFZhbHVlKCkgLSB0YWJsZS5taW5dID0KKyAg
ICAgICAgICAgIHRhYmxlLmN0aU9mZnNldHNbbXlDYXNlLnZhbHVlLnN3aXRjaExvb2t1cFZhbHVl
KGRhdGEua2luZCkgLSB0YWJsZS5taW5dID0KICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxv
Y2F0aW9uT2YobV9ibG9ja0hlYWRzW215Q2FzZS50YXJnZXQuYmxvY2stPmluZGV4XSk7CiAgICAg
ICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1Zh
bHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlK
U1ZhbHVlLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdMYXp5SlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsMzYgQEAg
VHJpU3RhdGUgTGF6eUpTVmFsdWU6OnN0cmljdEVxdWFsKGNvbnN0IAogICAgIHJldHVybiBGYWxz
ZVRyaVN0YXRlOwogfQogCit1aW50cHRyX3QgTGF6eUpTVmFsdWU6OnN3aXRjaExvb2t1cFZhbHVl
KFN3aXRjaEtpbmQga2luZCkgY29uc3QKK3sKKyAgICAvLyBOQi4gTm90IGV2ZXJ5IGtpbmQgb2Yg
SlNWYWx1ZSB3aWxsIGJlIGFibGUgdG8gZ2l2ZSB5b3UgYSBzd2l0Y2ggbG9va3VwCisgICAgLy8g
dmFsdWUsIGFuZCB0aGlzIG1ldGhvZCB3aWxsIGFzc2VydCwgb3IgZG8gYmFkIHRoaW5ncywgaWYg
eW91IHVzZSBpdAorICAgIC8vIGZvciBhIGtpbmQgb2YgdmFsdWUgdGhhdCBjYW4ndC4KKyAgICBz
d2l0Y2ggKG1fa2luZCkgeworICAgIGNhc2UgS25vd25WYWx1ZToKKyAgICAgICAgc3dpdGNoIChr
aW5kKSB7CisgICAgICAgIGNhc2UgU3dpdGNoSW1tOgorICAgICAgICAgICAgcmV0dXJuIHZhbHVl
KCktPnZhbHVlKCkuYXNJbnQzMigpOworICAgICAgICBjYXNlIFN3aXRjaENlbGw6CisgICAgICAg
ICAgICByZXR1cm4gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4odmFsdWUoKS0+dmFsdWUoKS5hc0Nl
bGwoKSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICBjYXNlIFNp
bmdsZUNoYXJhY3RlclN0cmluZzoKKyAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIGNh
c2UgU3dpdGNoQ2hhcjoKKyAgICAgICAgICAgIHJldHVybiBjaGFyYWN0ZXIoKTsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKwog
dm9pZCBMYXp5SlNWYWx1ZTo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29u
dGV4dCogY29udGV4dCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fa2luZCkgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuaAkocmV2aXNpb24gMTcyODU5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAorI2luY2x1
ZGUgIkRGR0NvbW1vbi5oIgogI2luY2x1ZGUgIkRGR0Zyb3plblZhbHVlLmgiCiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCkBAIC05NSwyMSArOTYsNyBAQCBwdWJsaWM6CiAgICAg
CiAgICAgVHJpU3RhdGUgc3RyaWN0RXF1YWwoY29uc3QgTGF6eUpTVmFsdWUmIG90aGVyKSBjb25z
dDsKICAgICAKLSAgICB1bnNpZ25lZCBzd2l0Y2hMb29rdXBWYWx1ZSgpIGNvbnN0Ci0gICAgewot
ICAgICAgICAvLyBOQi4gTm90IGV2ZXJ5IGtpbmQgb2YgSlNWYWx1ZSB3aWxsIGJlIGFibGUgdG8g
Z2l2ZSB5b3UgYSBzd2l0Y2ggbG9va3VwCi0gICAgICAgIC8vIHZhbHVlLCBhbmQgdGhpcyBtZXRo
b2Qgd2lsbCBhc3NlcnQsIG9yIGRvIGJhZCB0aGluZ3MsIGlmIHlvdSB1c2UgaXQKLSAgICAgICAg
Ly8gZm9yIGEga2luZCBvZiB2YWx1ZSB0aGF0IGNhbid0LgotICAgICAgICBzd2l0Y2ggKG1fa2lu
ZCkgewotICAgICAgICBjYXNlIEtub3duVmFsdWU6Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWUo
KS0+dmFsdWUoKS5hc0ludDMyKCk7Ci0gICAgICAgIGNhc2UgU2luZ2xlQ2hhcmFjdGVyU3RyaW5n
OgotICAgICAgICAgICAgcmV0dXJuIGNoYXJhY3RlcigpOwotICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVy
biAwOwotICAgICAgICB9Ci0gICAgfQorICAgIHVpbnRwdHJfdCBzd2l0Y2hMb29rdXBWYWx1ZShT
d2l0Y2hLaW5kKSBjb25zdDsKICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25z
dDsKICAgICB2b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29udGV4dCopIGNv
bnN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCShyZXZpc2lvbiAx
NzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTMsNiArMTEzLDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFt
JiBvdXQsIFN3aQogICAgIGNhc2UgU3dpdGNoU3RyaW5nOgogICAgICAgICBvdXQucHJpbnQoIlN3
aXRjaFN0cmluZyIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBTd2l0Y2hDZWxsOgorICAg
ICAgICBvdXQucHJpbnQoIlN3aXRjaENlbGwiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsMTIgKzE1Nyw2IEBAIHN0cnVj
dCBTd2l0Y2hDYXNlIHsKICAgICBCcmFuY2hUYXJnZXQgdGFyZ2V0OwogfTsKIAotZW51bSBTd2l0
Y2hLaW5kIHsKLSAgICBTd2l0Y2hJbW0sCi0gICAgU3dpdGNoQ2hhciwKLSAgICBTd2l0Y2hTdHJp
bmcKLX07Ci0KIHN0cnVjdCBTd2l0Y2hEYXRhIHsKICAgICAvLyBJbml0aWFsaXplcyBtb3N0IGZp
ZWxkcyB0byBvYnZpb3VzbHkgaW52YWxpZCB2YWx1ZXMuIEFueW9uZQogICAgIC8vIGNvbnN0cnVj
dGluZyB0aGlzIHNob3VsZCBtYWtlIHN1cmUgdG8gaW5pdGlhbGl6ZSBldmVyeXRoaW5nIHRoZXkK
QEAgLTE4NSw2ICsxNzksNyBAQCBzdHJ1Y3QgU3dpdGNoRGF0YSB7CiAvLyBkaXN0aW5ndWlzaGVz
IGFuIGltbWVkaWF0ZSB2YWx1ZSAodHlwaWNhbGx5IGFuIGluZGV4IGludG8gYSBDb2RlQmxvY2sg
ZGF0YSBzdHJ1Y3R1cmUgLSAKIC8vIGEgY29uc3RhbnQgaW5kZXgsIGFyZ3VtZW50LCBvciBpZGVu
dGlmaWVyKSBmcm9tIGEgTm9kZSouCiBzdHJ1Y3QgT3BJbmZvIHsKKyAgICBPcEluZm8oKSA6IG1f
dmFsdWUoMCkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKGludDMyX3QgdmFsdWUpIDogbV92YWx1
ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZv
KHVpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkp
IHsgfQogI2lmIE9TKERBUldJTikgfHwgVVNFKEpTVkFMVUU2NCkKQEAgLTEwMDksNiArMTAwNCw4
IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWxTYWZlOgog
ICAgICAgICBjYXNlIENhbGw6CiAgICAgICAgIGNhc2UgQ29uc3RydWN0OgorICAgICAgICBjYXNl
IFByb2ZpbGVkQ2FsbDoKKyAgICAgICAgY2FzZSBQcm9maWxlZENvbnN0cnVjdDoKICAgICAgICAg
Y2FzZSBOYXRpdmVDYWxsOgogICAgICAgICBjYXNlIE5hdGl2ZUNvbnN0cnVjdDoKICAgICAgICAg
Y2FzZSBHZXRCeU9mZnNldDoKQEAgLTEwNDQsOSArMTA0MSwxMSBAQCBzdHJ1Y3QgTm9kZSB7CiAg
ICAgICAgIG1fb3BJbmZvMiA9IHByZWRpY3Rpb247CiAgICAgfQogICAgIAotICAgIGJvb2wgY2Fu
QmVLbm93bkZ1bmN0aW9uKCkKKyAgICBib29sIGhhc0NlbGxPcGVyYW5kKCkKICAgICB7CiAgICAg
ICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hw
b2ludDoKKyAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgICAgIGNhc2UgTmF0aXZlQ29uc3Ry
dWN0OgogICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTEwNTUsNTQgKzEwNTQsMTYgQEAgc3RydWN0IE5vZGUgewogICAgICAgICB9CiAgICAgfQog
Ci0gICAgYm9vbCBoYXNLbm93bkZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAob3Ao
KSkgewotICAgICAgICBjYXNlIE5hdGl2ZUNvbnN0cnVjdDoKLSAgICAgICAgY2FzZSBOYXRpdmVD
YWxsOgotICAgICAgICAgICAgcmV0dXJuIChib29sKW1fb3BJbmZvOwotICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAg
IEpTRnVuY3Rpb24qIGtub3duRnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNhbkJl
S25vd25GdW5jdGlvbigpKTsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU0Z1bmN0aW9u
Kj4obV9vcEluZm8pOwotICAgIH0KLQotICAgIHZvaWQgZ2l2ZUtub3duRnVuY3Rpb24oSlNGdW5j
dGlvbiogY2FsbERhdGEpIAorICAgIEZyb3plblZhbHVlKiBjZWxsT3BlcmFuZCgpCiAgICAgewot
ICAgICAgICBBU1NFUlQoY2FuQmVLbm93bkZ1bmN0aW9uKCkpOwotICAgICAgICBtX29wSW5mbyA9
IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGNhbGxEYXRhKTsKLSAgICB9Ci0KLSAgICBib29sIGhh
c0Z1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAob3AoKSkgewotICAgICAgICBjYXNl
IENoZWNrRnVuY3Rpb246Ci0gICAgICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50
OgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBGcm96ZW5WYWx1ZSogZnVu
Y3Rpb24oKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGhhc0Z1bmN0aW9uKCkpOworICAgICAgICBB
U1NFUlQoaGFzQ2VsbE9wZXJhbmQoKSk7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PEZyb3plblZhbHVlKj4obV9vcEluZm8pOwogICAgIH0KICAgICAKLSAgICBib29sIGhhc0V4ZWN1
dGFibGUoKQorICAgIHZvaWQgc2V0Q2VsbE9wZXJhbmQoRnJvemVuVmFsdWUqIHZhbHVlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ2hlY2tFeGVjdXRhYmxlOwotICAgIH0KLSAgICAK
LSAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSgpCi0gICAgewotICAgICAgICByZXR1cm4g
anNDYXN0PEV4ZWN1dGFibGVCYXNlKj4ocmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPihtX29wSW5m
bykpOworICAgICAgICBBU1NFUlQoaGFzQ2VsbE9wZXJhbmQoKSk7CisgICAgICAgIG1fb3BJbmZv
ID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4odmFsdWUpOwogICAgIH0KICAgICAKICAgICBib29s
IGhhc1ZhcmlhYmxlV2F0Y2hwb2ludFNldCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oUHV0QnlJZEZsdXNoLCBO
b2RlTXVzdEdlbmVyYXRlIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKSBc
CiAgICAgbWFjcm8oUHV0QnlJZERpcmVjdCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVy
c1dvcmxkKSBcCiAgICAgbWFjcm8oQ2hlY2tTdHJ1Y3R1cmUsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
LSAgICBtYWNybyhDaGVja0V4ZWN1dGFibGUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNy
byhHZXRFeGVjdXRhYmxlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhQdXRTdHJ1Y3R1cmUs
IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSwg
Tm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRTdG9yYWdlKSBcCiAgICAgbWFjcm8oUmVhbGxv
Y2F0ZVByb3BlcnR5U3RvcmFnZSwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRTdG9yYWdl
KSBcCkBAIC0xODUsNyArMTg1LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
ICAgIG1hY3JvKFZhcmlhYmxlV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1h
Y3JvKFZhckluamVjdGlvbldhdGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhGdW5jdGlvblJlZW50cnlXYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCi0gICAgbWFj
cm8oQ2hlY2tGdW5jdGlvbiwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKENoZWNrQ2Vs
bCwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKENoZWNrQmFkQ2VsbCwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAogICAgIG1hY3JvKEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludCwgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrSW5Cb3VuZHMsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBcCkBAIC0yMTQsNiArMjE1LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogICAgIC8qIENhbGxzLiAqL1wKICAgICBtYWNybyhDYWxsLCBOb2RlUmVzdWx0SlMgfCBO
b2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAog
ICAgIG1hY3JvKENvbnN0cnVjdCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5v
ZGVIYXNWYXJBcmdzIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKKyAgICBtYWNybyhQcm9maWxlZENh
bGwsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncyB8IE5v
ZGVDbG9iYmVyc1dvcmxkKSBcCisgICAgbWFjcm8oUHJvZmlsZWRDb25zdHJ1Y3QsIE5vZGVSZXN1
bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncyB8IE5vZGVDbG9iYmVyc1dv
cmxkKSBcCiAgICAgbWFjcm8oTmF0aXZlQ2FsbCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5l
cmF0ZSB8IE5vZGVIYXNWYXJBcmdzIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKICAgICBtYWNybyhO
YXRpdmVDb25zdHJ1Y3QsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFz
VmFyQXJncyB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCiAgICAgXApAQCAtMjg2LDYgKzI4OSwxMSBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyogZGlmZmVyZW50IGNvbXBp
bGVyLiAqL1wKICAgICBtYWNybyhGb3JjZU9TUkV4aXQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICBcCisgICAgLyogVmVuZHMgYSBib3R0b20gSlMgdmFsdWUuIEl0IGlzIGludmFsaWQgdG8gZXZl
ciBleGVjdXRlIHRoaXMuIFVzZWZ1bCBmb3IgY2FzZXMgKi9cCisgICAgLyogd2hlcmUgd2Uga25v
dyB0aGF0IHdlIHdvdWxkIGhhdmUgZXhpdGVkIGJ1dCB3ZSdkIGxpa2UgdG8gc3RpbGwgdHJhY2sg
dGhlIGNvbnRyb2wgKi9cCisgICAgLyogZmxvdy4gKi9cCisgICAgbWFjcm8oQm90dG9tVmFsdWUs
IE5vZGVSZXN1bHRKUykgXAorICAgIFwKICAgICAvKiBDaGVja3MgdGhlIHdhdGNoZG9nIHRpbWVy
LiBJZiB0aGUgdGltZXIgaGFzIGZpcmVkLCB3ZSBPU1IgZXhpdCB0byB0aGUgKi8gXAogICAgIC8q
IGJhc2VsaW5lIEpJVCB0byByZWRvIHRoZSB3YXRjaGRvZyB0aW1lciBjaGVjaywgYW5kIHNlcnZp
Y2UgdGhlIHRpbWVyLiAqLyBcCiAgICAgbWFjcm8oQ2hlY2tXYXRjaGRvZ1RpbWVyLCBOb2RlTXVz
dEdlbmVyYXRlKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21D
YW5vbmljYWxpemF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE3
Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6
YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDggKzkyLDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnJlbW92ZUVkZ2UoaS0tKTsK
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0NoZWNrKCk7CiAgICAgICAgICAg
ICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3Zh
bFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Bo
YW50b21SZW1vdmFsUGhhc2UuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1BoYW50b21SZW1vdmFsUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjUsNiArMTI1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNF
bXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZy
ZWUobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0x
NDIsNiArMTQzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9
IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFw
aC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdl
ZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
ICAgICAgICAgfQpAQCAtMTQ5LDggKzE1MSwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNlIEhhcmRQaGFudG9t
OiB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpCisg
ICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OCw2ICsxODgsOCBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIEdldERpcmVjdFBuYW1lOgogICAgICAgICBjYXNlIENhbGw6CiAgICAgICAgIGNhc2UgQ29u
c3RydWN0OgorICAgICAgICBjYXNlIFByb2ZpbGVkQ2FsbDoKKyAgICAgICAgY2FzZSBQcm9maWxl
ZENvbnN0cnVjdDoKICAgICAgICAgY2FzZSBOYXRpdmVDYWxsOgogICAgICAgICBjYXNlIE5hdGl2
ZUNvbnN0cnVjdDoKICAgICAgICAgY2FzZSBHZXRHbG9iYWxWYXI6CkBAIC0xOTYsNyArMTk4LDgg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAK
LSAgICAgICAgY2FzZSBHZXRHZXR0ZXJTZXR0ZXJCeU9mZnNldDogeworICAgICAgICBjYXNlIEdl
dEdldHRlclNldHRlckJ5T2Zmc2V0OgorICAgICAgICBjYXNlIEdldEV4ZWN1dGFibGU6IHsKICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihTcGVjQ2VsbE90aGVyKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC02NDIsOCArNjQ1LDggQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6CiAgICAgICAgIGNhc2UgU2V0QXJndW1lbnQ6CiAgICAg
ICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6Ci0gICAgICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOgot
ICAgICAgICBjYXNlIENoZWNrRnVuY3Rpb246CisgICAgICAgIGNhc2UgQ2hlY2tDZWxsOgorICAg
ICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAg
ICAgIGNhc2UgVGVhck9mZkFjdGl2YXRpb246CiAgICAgICAgIGNhc2UgVGVhck9mZkFyZ3VtZW50
czoKQEAgLTY2NSw2ICs2NjgsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBab21iaWVIaW50
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKKyAgICAgICAgLy8gVGhpcyBnZXRz
IGlnbm9yZWQgYmVjYXVzZSBpdCBvbmx5IHByZXRlbmRzIHRvIHByb2R1Y2UgYSB2YWx1ZS4KKyAg
ICAgICAgY2FzZSBCb3R0b21WYWx1ZToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
CiAgICAgICAgIC8vIFRoaXMgZ2V0cyBpZ25vcmVkIGJlY2F1c2UgaXQgYWxyZWFkeSBoYXMgYSBw
cmVkaWN0aW9uLgogICAgICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgogICAgICAgICAg
ICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw3ICsxNTksNyBAQCBib29s
IHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBQdXRCeUlkRmx1
c2g6CiAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6Ci0g
ICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6CisgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgogICAgIGNh
c2UgR2V0QnV0dGVyZmx5OgogICAgIGNhc2UgQ2hlY2tBcnJheToKICAgICBjYXNlIEFycmF5aWZ5
OgpAQCAtMTc0LDcgKzE3NCw4IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlw
ZSYgc3QKICAgICBjYXNlIFB1dEdsb2JhbFZhcjoKICAgICBjYXNlIFZhcmlhYmxlV2F0Y2hwb2lu
dDoKICAgICBjYXNlIFZhckluamVjdGlvbldhdGNocG9pbnQ6Ci0gICAgY2FzZSBDaGVja0Z1bmN0
aW9uOgorICAgIGNhc2UgQ2hlY2tDZWxsOgorICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgIGNh
c2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OgogICAgIGNhc2UgUmVnRXhwRXhlYzoKICAg
ICBjYXNlIFJlZ0V4cFRlc3Q6CkBAIC0xODcsNiArMTg4LDggQEAgYm9vbCBzYWZlVG9FeGVjdXRl
KEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOgogICAgIGNh
c2UgQ2FsbDoKICAgICBjYXNlIENvbnN0cnVjdDoKKyAgICBjYXNlIFByb2ZpbGVkQ2FsbDoKKyAg
ICBjYXNlIFByb2ZpbGVkQ29uc3RydWN0OgogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2Ug
TmV3QXJyYXk6CiAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgpAQCAtMjczLDYgKzI3NiwxMSBA
QCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBOYXRp
dmVDb25zdHJ1Y3Q6CiAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gVE9ETzogYWRkIGEgY2hlY2sg
Zm9yIGFscmVhZHkgY2hlY2tlZC4gIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMzM3NjkKIAorICAgIGNhc2UgQm90dG9tVmFsdWU6CisgICAgICAgIC8vIElmIGluIGRv
dWJ0LCBhc3N1bWUgdGhhdCB0aGlzIGlzbid0IHNhZmUgdG8gZXhlY3V0ZSwganVzdCBiZWNhdXNl
IHdlIGhhdmUgbm8gd2F5IG9mCisgICAgICAgIC8vIGNvbXBpbGluZyB0aGlzIG5vZGUuCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKwogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRJbmRl
eGVkUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0MCw5ICs2NDAsOSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWlzY1N0cmljdEVxCiAKIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiB7Ci0gICAgYm9vbCBpc0NhbGwgPSBub2RlLT5v
cCgpID09IENhbGw7CisgICAgYm9vbCBpc0NhbGwgPSBub2RlLT5vcCgpID09IENhbGwgfHwgbm9k
ZS0+b3AoKSA9PSBQcm9maWxlZENhbGw7CiAgICAgaWYgKCFpc0NhbGwpCi0gICAgICAgIEFTU0VS
VChub2RlLT5vcCgpID09IENvbnN0cnVjdCk7CisgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09
IENvbnN0cnVjdCB8fCBub2RlLT5vcCgpID09IFByb2ZpbGVkQ29uc3RydWN0KTsKIAogICAgIC8v
IEZvciBjb25zdHJ1Y3RvcnMsIHRoZSB0aGlzIGFyZ3VtZW50IGlzIG5vdCBwYXNzZWQgYnV0IHdl
IGhhdmUgdG8gbWFrZSBzcGFjZQogICAgIC8vIGZvciBpdC4KQEAgLTY4OSw2ICs2ODksMTMgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogCiAgICAgbV9qaXQuZW1p
dFN0b3JlQ29kZU9yaWdpbihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgIAorICAgIENhbGxM
aW5rSW5mbyogaW5mbyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKKwor
ICAgIGlmIChub2RlLT5vcCgpID09IFByb2ZpbGVkQ2FsbCB8fCBub2RlLT5vcCgpID09IFByb2Zp
bGVkQ29uc3RydWN0KSB7CisgICAgICAgIG1faml0LnZtKCktPmNhbGxFZGdlTG9nLT5lbWl0TG9n
Q29kZSgKKyAgICAgICAgICAgIG1faml0LCBpbmZvLT5jYWxsRWRnZVByb2ZpbGUsIGNhbGxlZS5q
c1ZhbHVlUmVncygpKTsKKyAgICB9CisgICAgCiAgICAgc2xvd1BhdGguYXBwZW5kKGJyYW5jaE5v
dENlbGwoY2FsbGVlLmpzVmFsdWVSZWdzKCkpKTsKICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQu
YnJhbmNoUHRyV2l0aFBhdGNoKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgY2FsbGVlUGF5bG9h
ZEdQUiwgdGFyZ2V0VG9DaGVjaykpOwogICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoY2FsbGVlUGF5bG9hZEdQUiwgT0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rpb24sIG1f
c2NvcGUpKSwgcmVzdWx0UGF5bG9hZEdQUik7CkBAIC03MTMsNyArNzIwLDYgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAgICBtX2ppdC5tb3ZlKGNhbGxl
ZVBheWxvYWRHUFIsIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgbV9qaXQubW92ZShjYWxsZWVU
YWdHUFIsIEdQUkluZm86OnJlZ1QxKTsKICAgICB9Ci0gICAgQ2FsbExpbmtJbmZvKiBpbmZvID0g
bV9qaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbygpOwogICAgIG1faml0Lm1vdmUoTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoaW5mbyksIEdQUkluZm86OnJlZ1QyKTsKICAgICBK
SVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7CiAKQEAgLTM2NzUs
MTggKzM2ODEsMjEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAg
ICAgICAKLSAgICBjYXNlIENoZWNrRnVuY3Rpb246IHsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZEZ1bmN0aW9uLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChmdW5jdGlvbi5n
cHIoKSksIG5vZGUtPmNoaWxkMSgpLCBtX2ppdC5icmFuY2hXZWFrUHRyKEpJVENvbXBpbGVyOjpO
b3RFcXVhbCwgZnVuY3Rpb24uZ3ByKCksIG5vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkuYXNDZWxs
KCkpKTsKKyAgICBjYXNlIENoZWNrQ2VsbDogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBjZWxsKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhC
YWRDZWxsLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsLmdwcigpKSwgbm9kZS0+Y2hp
bGQxKCksIG1faml0LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBjZWxsLmdw
cigpLCBub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpLmFzQ2VsbCgpKSk7CiAgICAgICAgIG5v
UmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIENoZWNrRXhl
Y3V0YWJsZTogeworICAgIGNhc2UgR2V0RXhlY3V0YWJsZTogewogICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBmdW5jdGlvbih0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIHNwZWN1
bGF0ZUNlbGxUeXBlKG5vZGUtPmNoaWxkMSgpLCBmdW5jdGlvbi5ncHIoKSwgU3BlY0Z1bmN0aW9u
LCBKU0Z1bmN0aW9uVHlwZSk7Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkRXhlY3V0YWJs
ZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoZnVuY3Rpb24uZ3ByKCkpLCBub2RlLT5jaGls
ZDEoKSwgbV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBp
bGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFi
bGUoKSksIG5vZGUtPmV4ZWN1dGFibGUoKSkpOwotICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAg
ICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgZnVuY3Rpb24pOworICAgICAg
ICBHUFJSZWcgZnVuY3Rpb25HUFIgPSBmdW5jdGlvbi5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgc3BlY3VsYXRlQ2VsbFR5cGUobm9kZS0+
Y2hpbGQxKCksIGZ1bmN0aW9uR1BSLCBTcGVjRnVuY3Rpb24sIEpTRnVuY3Rpb25UeXBlKTsKKyAg
ICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhmdW5jdGlvbkdQUiwgSlNG
dW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCByZXN1bHRHUFIpOworICAgICAgICBjZWxs
UmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAg
CkBAIC00MTU2LDYgKzQxNjUsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAKICAgICBjYXNlIENhbGw6CiAgICAgY2FzZSBDb25zdHJ1Y3Q6CisgICAgY2FzZSBQ
cm9maWxlZENhbGw6CisgICAgY2FzZSBQcm9maWxlZENvbnN0cnVjdDoKICAgICAgICAgZW1pdENh
bGwobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCkBAIC00ODkyLDYgKzQ5MDMsOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zm
c2V0OgogICAgIGNhc2UgTmF0aXZlQ2FsbDoKICAgICBjYXNlIE5hdGl2ZUNvbnN0cnVjdDoKKyAg
ICBjYXNlIENoZWNrQmFkQ2VsbDoKKyAgICBjYXNlIEJvdHRvbVZhbHVlOgogICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJ
KHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyNiwxMCArNjI2LDkgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1pc2NTdHJpY3RFcQogCiB2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0Q2FsbChOb2RlKiBub2RlKQogewotCi0gICAgYm9vbCBpc0NhbGwgPSBub2RlLT5vcCgp
ID09IENhbGw7CisgICAgYm9vbCBpc0NhbGwgPSBub2RlLT5vcCgpID09IENhbGwgfHwgbm9kZS0+
b3AoKSA9PSBQcm9maWxlZENhbGw7CiAgICAgaWYgKCFpc0NhbGwpCi0gICAgICAgIERGR19BU1NF
UlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+b3AoKSA9PSBDb25zdHJ1Y3QpOworICAgICAg
ICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPm9wKCkgPT0gQ29uc3RydWN0
IHx8IG5vZGUtPm9wKCkgPT0gUHJvZmlsZWRDb25zdHJ1Y3QpOwogICAgIAogICAgIC8vIEZvciBj
b25zdHJ1Y3RvcnMsIHRoZSB0aGlzIGFyZ3VtZW50IGlzIG5vdCBwYXNzZWQgYnV0IHdlIGhhdmUg
dG8gbWFrZSBzcGFjZQogICAgIC8vIGZvciBpdC4KQEAgLTY3MCw2ICs2NjksMTMgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogCiAgICAgbV9qaXQuZW1pdFN0b3Jl
Q29kZU9yaWdpbihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgIAorICAgIENhbGxMaW5rSW5m
byogY2FsbExpbmtJbmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbygpOwor
ICAgIAorICAgIGlmIChub2RlLT5vcCgpID09IFByb2ZpbGVkQ2FsbCB8fCBub2RlLT5vcCgpID09
IFByb2ZpbGVkQ29uc3RydWN0KSB7CisgICAgICAgIG1faml0LnZtKCktPmNhbGxFZGdlTG9nLT5l
bWl0TG9nQ29kZSgKKyAgICAgICAgICAgIG1faml0LCBjYWxsTGlua0luZm8tPmNhbGxFZGdlUHJv
ZmlsZSwgSlNWYWx1ZVJlZ3MoY2FsbGVlR1BSKSk7CisgICAgfQorCiAgICAgc2xvd1BhdGggPSBt
X2ppdC5icmFuY2hQdHJXaXRoUGF0Y2goTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBjYWxsZWVH
UFIsIHRhcmdldFRvQ2hlY2ssIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKDApKTsKIAog
ICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2FsbGVlR1BSLCBPQkpF
Q1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9zY29wZSkpLCByZXN1bHRHUFIpOwpAQCAtNjgyLDcg
KzY4OCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICBz
bG93UGF0aC5saW5rKCZtX2ppdCk7CiAgICAgCiAgICAgbV9qaXQubW92ZShjYWxsZWVHUFIsIEdQ
UkluZm86OnJlZ1QwKTsgLy8gQ2FsbGVlIG5lZWRzIHRvIGJlIGluIHJlZ1QwCi0gICAgQ2FsbExp
bmtJbmZvKiBjYWxsTGlua0luZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZv
KCk7CiAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihjYWxsTGlu
a0luZm8pLCBHUFJJbmZvOjpyZWdUMik7IC8vIExpbmsgaW5mbyBuZWVkcyB0byBiZSBpbiByZWdU
MgogICAgIEpJVENvbXBpbGVyOjpDYWxsIHNsb3dDYWxsID0gbV9qaXQubmVhckNhbGwoKTsKICAg
ICAKQEAgLTM3NjgsMTggKzM3NzMsMjEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgobm9kZSk7CiAgICAgICAg
IGJyZWFrOwogICAgICAgICAKLSAgICBjYXNlIENoZWNrRnVuY3Rpb246IHsKLSAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZEZ1bmN0aW9uLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2Vs
bChmdW5jdGlvbi5ncHIoKSksIG5vZGUtPmNoaWxkMSgpLCBtX2ppdC5icmFuY2hXZWFrUHRyKEpJ
VENvbXBpbGVyOjpOb3RFcXVhbCwgZnVuY3Rpb24uZ3ByKCksIG5vZGUtPmZ1bmN0aW9uKCktPnZh
bHVlKCkuYXNDZWxsKCkpKTsKKyAgICBjYXNlIENoZWNrQ2VsbDogeworICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBjZWxsKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhCYWRDZWxsLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsLmdwcigp
KSwgbm9kZS0+Y2hpbGQxKCksIG1faml0LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6Ok5vdEVx
dWFsLCBjZWxsLmdwcigpLCBub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpLmFzQ2VsbCgpKSk7
CiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAg
IAotICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOiB7CisgICAgY2FzZSBHZXRFeGVjdXRhYmxlOiB7
CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZ1bmN0aW9uKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKLSAgICAgICAgc3BlY3VsYXRlQ2VsbFR5cGUobm9kZS0+Y2hpbGQxKCksIGZ1bmN0aW9u
LmdwcigpLCBTcGVjRnVuY3Rpb24sIEpTRnVuY3Rpb25UeXBlKTsKLSAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRFeGVjdXRhYmxlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChmdW5jdGlv
bi5ncHIoKSksIG5vZGUtPmNoaWxkMSgpLCBtX2ppdC5icmFuY2hXZWFrUHRyKEpJVENvbXBpbGVy
OjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZnVuY3Rpb24uZ3ByKCksIEpTRnVuY3Rp
b246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwgbm9kZS0+ZXhlY3V0YWJsZSgpKSk7Ci0gICAgICAg
IG5vUmVzdWx0KG5vZGUpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNl
LCBmdW5jdGlvbik7CisgICAgICAgIEdQUlJlZyBmdW5jdGlvbkdQUiA9IGZ1bmN0aW9uLmdwcigp
OworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICBzcGVj
dWxhdGVDZWxsVHlwZShub2RlLT5jaGlsZDEoKSwgZnVuY3Rpb25HUFIsIFNwZWNGdW5jdGlvbiwg
SlNGdW5jdGlvblR5cGUpOworICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRy
ZXNzKGZ1bmN0aW9uR1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIHJlc3Vs
dEdQUik7CisgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgICAgICAKQEAgLTQyMTksOSArNDIyNywxMSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICBjYXNlIENhbGw6CiAgICAgY2FzZSBD
b25zdHJ1Y3Q6CisgICAgY2FzZSBQcm9maWxlZENhbGw6CisgICAgY2FzZSBQcm9maWxlZENvbnN0
cnVjdDoKICAgICAgICAgZW1pdENhbGwobm9kZSk7CiAgICAgICAgIGJyZWFrOwotCisgICAgICAg
IAogICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjogewogICAgICAgICBERkdfQVNTRVJUKG1faml0
LmdyYXBoKCksIG5vZGUsICFub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKTsK
ICAgICAgICAgCkBAIC00OTcwLDcgKzQ5ODAsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgIGNhc2UgTXVs
dGlQdXRCeU9mZnNldDoKICAgICBjYXNlIEZpYXRJbnQ1MjoKLSAgICAgICAgREZHX0NSQVNIKG1f
aml0LmdyYXBoKCksIG5vZGUsICJVbmV4cGVjdGVkIEZUTCBub2RlIik7CisgICAgY2FzZSBDaGVj
a0JhZENlbGw6CisgICAgY2FzZSBCb3R0b21WYWx1ZToKKyAgICAgICAgREZHX0NSQVNIKG1faml0
LmdyYXBoKCksIG5vZGUsICJVbmV4cGVjdGVkIG5vZGUiKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzNTQsNiArNTM1NCwxMCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoKE5vZGUqIG5vCiAgICAgY2FzZSBTd2l0
Y2hTdHJpbmc6IHsKICAgICAgICAgZW1pdFN3aXRjaFN0cmluZyhub2RlLCBkYXRhKTsKICAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNlIFN3aXRjaENlbGw6IHsKKyAgICAgICAgREZHX0NS
QVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJCYWQgc3dpdGNoIGtpbmQiKTsKKyAgICAgICAgcmV0
dXJuOwogICAgIH0gfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVy
ZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYyLDEwICs2Miw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBOb2RlKiBu
b2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENoZWNrRXhlY3V0
YWJsZToKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobm9kZS0+ZXhlY3V0
YWJsZSgpLT5zdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgICAg
ICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlcyhub2RlLT5zdHJ1Y3R1cmVTZXQoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCShyZXZp
c2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNr
SW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxMyArNTAsMTcgQEAgcHVi
bGljOgogICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZUZUTEpJVCgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAKLSAgICAgICAgaWYgKG1fZ3JhcGgubV9wcm9maWxlZEJsb2Nr
LT5tX2RpZEZhaWxGVExDb21waWxhdGlvbikKKyAgICAgICAgaWYgKG1fZ3JhcGgubV9wcm9maWxl
ZEJsb2NrLT5tX2RpZEZhaWxGVExDb21waWxhdGlvbikgeworICAgICAgICAgICAgcmVtb3ZlRlRM
UHJvZmlsaW5nKCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KICAgICAg
ICAgCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAgICAgICAgIEZUTDo6Q2FwYWJpbGl0eUxldmVsIGxl
dmVsID0gRlRMOjpjYW5Db21waWxlKG1fZ3JhcGgpOwotICAgICAgICBpZiAobGV2ZWwgPT0gRlRM
OjpDYW5ub3RDb21waWxlKQorICAgICAgICBpZiAobGV2ZWwgPT0gRlRMOjpDYW5ub3RDb21waWxl
KSB7CisgICAgICAgICAgICByZW1vdmVGVExQcm9maWxpbmcoKTsKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKCFPcHRpb25zOjplbmFi
bGVPU1JFbnRyeVRvRlRMKCkpCiAgICAgICAgICAgICBsZXZlbCA9IEZUTDo6Q2FuQ29tcGlsZTsK
QEAgLTExOCw2ICsxMjIsMzIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5k
aWYgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgcmVtb3Zl
RlRMUHJvZmlsaW5nKCkKKyAgICB7CisgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4
ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgeworICAgICAgICAgICAgQmFz
aWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOworICAgICAgICAgICAg
aWYgKCFibG9jaykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBub2RlSW5kZXggPSAwOyBub2RlSW5kZXggPCBibG9jay0+
c2l6ZSgpOyArK25vZGVJbmRleCkgeworICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9j
ay0+YXQobm9kZUluZGV4KTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsK
KyAgICAgICAgICAgICAgICBjYXNlIFByb2ZpbGVkQ2FsbDoKKyAgICAgICAgICAgICAgICAgICAg
bm9kZS0+c2V0T3AoQ2FsbCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjYXNlIFByb2ZpbGVkQ29uc3RydWN0OgorICAg
ICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcChDb25zdHJ1Y3QpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQogfTsKIAogYm9vbCBwZXJmb3JtVGllclVwQ2hlY2tJ
bmplY3Rpb24oR3JhcGgmIGdyYXBoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdWYWxpZGF0ZS5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVmFsaWRhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsNyArMjAwLDggQEAg
cHVibGljOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2Rl
KSwgIW1heUV4aXQobV9ncmFwaCwgbm9kZSkgfHwgbm9kZS0+b3JpZ2luLmZvckV4aXQuaXNTZXQo
KSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+aGFzU3RydWN0dXJl
KCkgfHwgISFub2RlLT5zdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAgVkFMSURBVEUoKG5v
ZGUpLCAhbm9kZS0+aGFzRnVuY3Rpb24oKSB8fCBub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpLmlz
RnVuY3Rpb24oKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+aGFz
Q2VsbE9wZXJhbmQoKSB8fCBub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpLmlzQ2VsbCgpKTsK
KyAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFub2RlLT5oYXNDZWxsT3BlcmFuZCgp
IHx8ICEhbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIGlmICghKG5vZGUtPmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncykpIHsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5jaGlsZDIoKSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXYXRjaHBvaW50Q29sbGVjdGlv
blBoYXNlLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTE0LDcg
KzExNCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAg
ICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDoKLSAgICAgICAgICAgIGFkZExh
emlseShqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fbm9kZS0+ZnVuY3Rpb24oKS0+dmFsdWUoKSktPmFs
bG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpKTsKKyAgICAgICAgICAgIGFkZExhemlseShq
c0Nhc3Q8SlNGdW5jdGlvbio+KG1fbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKSktPmFsbG9j
YXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgCiAgICAgICAgIGNhc2UgVmFyaWFibGVXYXRjaHBvaW50OgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMTcyODU5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5D
b21waWxlKE5vZGUqIAogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKICAgICBjYXNlIEludmFsaWRh
dGlvblBvaW50OgogICAgIGNhc2UgU3RyaW5nQ2hhckF0OgotICAgIGNhc2UgQ2hlY2tGdW5jdGlv
bjoKKyAgICBjYXNlIENoZWNrQ2VsbDoKKyAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICBjYXNl
IFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAgY2FzZSBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAg
ICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CkBAIC0xMjYsNyArMTI3LDcgQEAgaW5s
aW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgQ29uc3RhbnRT
dG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQ291bnRFeGVjdXRpb246
Ci0gICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6CisgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgogICAg
IGNhc2UgR2V0U2NvcGU6CiAgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6CiAg
ICAgY2FzZSBDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQ6CkBAIC0xNjYsOCArMTY3LDE0IEBAIGlu
bGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIEdldEdlbmVy
aWNQcm9wZXJ0eUVudW1lcmF0b3I6CiAgICAgY2FzZSBHZXRFbnVtZXJhdG9yUG5hbWU6CiAgICAg
Y2FzZSBUb0luZGV4U3RyaW5nOgorICAgIGNhc2UgQm90dG9tVmFsdWU6CiAgICAgICAgIC8vIFRo
ZXNlIGFyZSBPSy4KICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQcm9maWxlZENhbGw6CisgICAg
Y2FzZSBQcm9maWxlZENvbnN0cnVjdDoKKyAgICAgICAgLy8gVGhlc2UgYXJlIE9LIG5vdCBiZWNh
dXNlIHRoZSBGVEwgY2FuIHN1cHBvcnQgdGhlbSwgYnV0IGJlY2F1c2UgaWYgdGhlIERGRyBzZWVz
IG9uZSBvZgorICAgICAgICAvLyB0aGVzZSB0aGVuIHRoZSBGVEwgd2lsbCBzZWUgYSBub3JtYWwg
Q2FsbC9Db25zdHJ1Y3QuCisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSWRlbnRpdHk6CiAgICAg
ICAgIC8vIE5vIGJhY2tlbmQgaGFuZGxlcyB0aGlzIGJlY2F1c2UgaXQgd2lsbCBiZSBvcHRpbWl6
ZWQgb3V0LiBCdXQgd2UgbWF5IGNoZWNrCiAgICAgICAgIC8vIGZvciBjYXBhYmlsaXRpZXMgYmVm
b3JlIG9wdGltaXphdGlvbi4gSXQgd291bGQgYmUgYSBkZWVwIGVycm9yIHRvIHJlbW92ZSB0aGlz
CkBAIC0zMjYsNiArMzMzLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5v
ZGUqIAogICAgICAgICBzd2l0Y2ggKG5vZGUtPnN3aXRjaERhdGEoKS0+a2luZCkgewogICAgICAg
ICBjYXNlIFN3aXRjaEltbToKICAgICAgICAgY2FzZSBTd2l0Y2hDaGFyOgorICAgICAgICBjYXNl
IFN3aXRjaENlbGw6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIHJldHVybiBDYW5ub3RDb21waWxlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02Nyw3ICs2Nyw2IEBAIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggc3RhdGljIHZvaWQg
ZnRsVW4KIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggc3RhdGljIHZvaWQgZnRsVW5yZWFjaGFibGUo
CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJsb2NrSW5kZXggYmxvY2tJbmRleCwgdW5zaWdu
ZWQgbm9kZUluZGV4KQogewotICAgIAogICAgIGRhdGFMb2coIkNyYXNoaW5nIGluIHRob3VnaHQt
dG8tYmUtdW5yZWFjaGFibGUgRlRMLWdlbmVyYXRlZCBjb2RlIGZvciAiLCBwb2ludGVyRHVtcChj
b2RlQmxvY2spLCAiIGF0IGJhc2ljIGJsb2NrICMiLCBibG9ja0luZGV4KTsKICAgICBpZiAobm9k
ZUluZGV4ICE9IFVJTlRfTUFYKQogICAgICAgICBkYXRhTG9nKCIsIG5vZGUgQCIsIG5vZGVJbmRl
eCk7CkBAIC0xNTMsMTEgKzE1MiwxNyBAQCBwdWJsaWM6CiAgICAgICAgIGZvciAodW5zaWduZWQg
YmxvY2tJbmRleCA9IGRlcHRoRmlyc3Quc2l6ZSgpOyBibG9ja0luZGV4LS07ICkgewogICAgICAg
ICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBkZXB0aEZpcnN0W2Jsb2NrSW5kZXhdOwogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBub2RlSW5kZXggPSBibG9jay0+c2l6ZSgpOyBub2RlSW5kZXgt
LTsgKSB7Ci0gICAgICAgICAgICAgICAgTm9kZSogbV9ub2RlID0gYmxvY2stPmF0KG5vZGVJbmRl
eCk7Ci0gICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+aGFzS25vd25GdW5jdGlvbigpKSB7Cisg
ICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOworICAgICAg
ICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgTmF0
aXZlQ2FsbDoKKyAgICAgICAgICAgICAgICBjYXNlIE5hdGl2ZUNvbnN0cnVjdDogewogICAgICAg
ICAgICAgICAgICAgICBpbnQgbnVtQXJncyA9IG1fbm9kZS0+bnVtQ2hpbGRyZW4oKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKG51bUFyZ3MgPiBtYXhOdW1iZXJPZkFyZ3VtZW50cykKICAgICAg
ICAgICAgICAgICAgICAgICAgIG1heE51bWJlck9mQXJndW1lbnRzID0gbnVtQXJnczsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDY4LDExICs0NzMsMTQgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICAgICAgICAgIGNvbXBpbGVDaGVja1N0
cnVjdHVyZSgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2hlY2tGdW5jdGlv
bjoKLSAgICAgICAgICAgIGNvbXBpbGVDaGVja0Z1bmN0aW9uKCk7CisgICAgICAgIGNhc2UgQ2hl
Y2tDZWxsOgorICAgICAgICAgICAgY29tcGlsZUNoZWNrQ2VsbCgpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgorICAgICAgICAgICAgY29tcGlsZUNoZWNr
QmFkQ2VsbCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2hlY2tFeGVjdXRh
YmxlOgotICAgICAgICAgICAgY29tcGlsZUNoZWNrRXhlY3V0YWJsZSgpOworICAgICAgICBjYXNl
IEdldEV4ZWN1dGFibGU6CisgICAgICAgICAgICBjb21waWxlR2V0RXhlY3V0YWJsZSgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKICAgICAg
ICAgICAgIGNvbXBpbGVBcnJheWlmeVRvU3RydWN0dXJlKCk7CkBAIC0xNzQzLDI2ICsxNzUxLDI1
IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5l
eHQpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGNvbXBpbGVDaGVja0Z1bmN0aW9uKCkKKyAgICB2
b2lkIGNvbXBpbGVDaGVja0NlbGwoKQogICAgIHsKICAgICAgICAgTFZhbHVlIGNlbGwgPSBsb3dD
ZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAKICAgICAgICAgc3BlY3VsYXRlKAotICAg
ICAgICAgICAgQmFkRnVuY3Rpb24sIGpzVmFsdWVWYWx1ZShjZWxsKSwgbV9ub2RlLT5jaGlsZDEo
KS5ub2RlKCksCi0gICAgICAgICAgICBtX291dC5ub3RFcXVhbChjZWxsLCB3ZWFrUG9pbnRlciht
X25vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkuYXNDZWxsKCkpKSk7CisgICAgICAgICAgICBCYWRD
ZWxsLCBqc1ZhbHVlVmFsdWUoY2VsbCksIG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpLAorICAgICAg
ICAgICAgbV9vdXQubm90RXF1YWwoY2VsbCwgd2Vha1BvaW50ZXIobV9ub2RlLT5jZWxsT3BlcmFu
ZCgpLT52YWx1ZSgpLmFzQ2VsbCgpKSkpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGNvbXBpbGVD
aGVja0V4ZWN1dGFibGUoKQorICAgIHZvaWQgY29tcGlsZUNoZWNrQmFkQ2VsbCgpCisgICAgewor
ICAgICAgICB0ZXJtaW5hdGUoQmFkQ2VsbCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY29tcGls
ZUdldEV4ZWN1dGFibGUoKQogICAgIHsKICAgICAgICAgTFZhbHVlIGNlbGwgPSBsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAKICAgICAgICAgc3BlY3VsYXRlRnVuY3Rpb24obV9u
b2RlLT5jaGlsZDEoKSwgY2VsbCk7Ci0gICAgICAgIAotICAgICAgICBzcGVjdWxhdGUoCi0gICAg
ICAgICAgICBCYWRFeGVjdXRhYmxlLCBqc1ZhbHVlVmFsdWUoY2VsbCksIG1fbm9kZS0+Y2hpbGQx
KCkubm9kZSgpLAotICAgICAgICAgICAgbV9vdXQubm90RXF1YWwoCi0gICAgICAgICAgICAgICAg
bV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTRnVuY3Rpb25fZXhlY3V0YWJsZSksCi0gICAg
ICAgICAgICAgICAgd2Vha1BvaW50ZXIobV9ub2RlLT5leGVjdXRhYmxlKCkpKSk7CisgICAgICAg
IHNldEpTVmFsdWUobV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTRnVuY3Rpb25fZXhlY3V0
YWJsZSkpOwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVBcnJheWlmeVRvU3RydWN0dXJl
KCkKQEAgLTM2NzMsOSArMzY4MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGludCBudW1QYXNzZWRB
cmdzID0gbV9ub2RlLT5udW1DaGlsZHJlbigpIC0gMTsKICAgICAgICAgaW50IG51bUFyZ3MgPSBu
dW1QYXNzZWRBcmdzICsgZHVtbXlUaGlzQXJndW1lbnQ7CiAKLSAgICAgICAgQVNTRVJUKG1fbm9k
ZS0+aGFzS25vd25GdW5jdGlvbigpKTsKLQotICAgICAgICBKU0Z1bmN0aW9uKiBrbm93bkZ1bmN0
aW9uID0gbV9ub2RlLT5rbm93bkZ1bmN0aW9uKCk7CisgICAgICAgIEpTRnVuY3Rpb24qIGtub3du
RnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFs
dWUoKS5hc0NlbGwoKSk7CiAgICAgICAgIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uID0ga25vd25G
dW5jdGlvbi0+bmF0aXZlRnVuY3Rpb24oKTsKIAogICAgICAgICBEbF9pbmZvIGluZm87CkBAIC0z
OTE4LDEwICszOTIzLDM3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIGNhc2UgU3dpdGNoU3RyaW5nOgorICAgICAgICBjYXNlIFN3
aXRjaFN0cmluZzogewogICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIlVu
aW1wbGVtZW50ZWQiKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBTd2l0Y2hDZWxsOiB7CisgICAg
ICAgICAgICBMVmFsdWUgY2VsbDsKKyAgICAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQ2VsbFVzZTogeworICAgICAgICAgICAg
ICAgIGNlbGwgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBV
bnR5cGVkVXNlOiB7CisgICAgICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZSht
X25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBjZWxsQ2FzZSA9
IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiU3dpdGNoL1N3aXRjaENlbGwgY2VsbCBjYXNlIikpOwor
ICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgICAgICAgICAgaXNDZWxs
KHZhbHVlKSwgdW5zdXJlKGNlbGxDYXNlKSwgdW5zdXJlKGxvd0Jsb2NrKGRhdGEtPmZhbGxUaHJv
dWdoLmJsb2NrKSkpOworICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNlbGxDYXNlKTsK
KyAgICAgICAgICAgICAgICBjZWxsID0gdmFsdWU7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJCYWQgdXNlIGtpbmQiKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGJ1aWxkU3dpdGNoKG1fbm9kZS0+c3dpdGNoRGF0YSgpLCBtX291dC5pbnRQdHIs
IGNlbGwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IH0KICAgICAgICAgCiAgICAg
ICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJCYWQgc3dpdGNoIGtpbmQiKTsKICAgICB9
CkBAIC01MTg2LDcgKzUyMTgsNyBAQCBwcml2YXRlOgogICAgICAgICBWZWN0b3I8U3dpdGNoQ2Fz
ZT4gY2FzZXM7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLT5jYXNlcy5z
aXplKCk7ICsraSkgewogICAgICAgICAgICAgY2FzZXMuYXBwZW5kKFN3aXRjaENhc2UoCi0gICAg
ICAgICAgICAgICAgY29uc3RJbnQodHlwZSwgZGF0YS0+Y2FzZXNbaV0udmFsdWUuc3dpdGNoTG9v
a3VwVmFsdWUoKSksCisgICAgICAgICAgICAgICAgY29uc3RJbnQodHlwZSwgZGF0YS0+Y2FzZXNb
aV0udmFsdWUuc3dpdGNoTG9va3VwVmFsdWUoZGF0YS0+a2luZCkpLAogICAgICAgICAgICAgICAg
IGxvd0Jsb2NrKGRhdGEtPmNhc2VzW2ldLnRhcmdldC5ibG9jayksIFdlaWdodChkYXRhLT5jYXNl
c1tpXS50YXJnZXQuY291bnQpKSk7CiAgICAgICAgIH0KICAgICAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4NCw2ICs5ODQsMTEg
QEAgdm9pZCBIZWFwOjpjb2xsZWN0KEhlYXBPcGVyYXRpb24gY29sbGVjdAogICAgICAgICB2bSgp
LT50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMoQVNDSUlMaXRlcmFsKCJHQyIp
KTsKICAgICB9CiAgICAgCisgICAgaWYgKHZtKCktPmNhbGxFZGdlTG9nKSB7CisgICAgICAgIERl
ZmVyR0NGb3JBV2hpbGUgYXdoaWxlKCp0aGlzKTsKKyAgICAgICAgdm0oKS0+Y2FsbEVkZ2VMb2ct
PnByb2Nlc3NMb2coKTsKKyAgICB9CisgICAgCiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fZGVmZXJy
YWxEZXB0aCk7CiAgICAgQVNTRVJUKHZtKCktPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2Nr
KCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtKCktPmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3Rm
VGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC04OCw2ICs4OCwzMSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAgICAgCisgICAgdm9pZCBz
dG9yZVZhbHVlKEpTVmFsdWVSZWdzIHJlZ3MsIHZvaWQqIGFkZHJlc3MpCisgICAgeworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgICAgIHN0b3JlNjQocmVncy5ncHIoKSwgYWRkcmVzcyk7CisjZWxz
ZQorICAgICAgICBzdG9yZTMyKHJlZ3MucGF5bG9hZEdQUigpLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+
KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGFkZHJlc3MpICsgUGF5bG9hZE9mZnNldCkpOworICAg
ICAgICBzdG9yZTMyKHJlZ3MudGFnR1BSKCksIGJpdHdpc2VfY2FzdDx2b2lkKj4oYml0d2lzZV9j
YXN0PHVpbnRwdHJfdD4oYWRkcmVzcykgKyBUYWdPZmZzZXQpKTsKKyNlbmRpZgorICAgIH0KKyAg
ICAKKyAgICB2b2lkIGxvYWRWYWx1ZShBZGRyZXNzIGFkZHJlc3MsIEpTVmFsdWVSZWdzIHJlZ3Mp
CisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGxvYWQ2NChhZGRyZXNzLCByZWdz
LmdwcigpKTsKKyNlbHNlCisgICAgICAgIGlmIChhZGRyZXNzLmJhc2UgPT0gcmVncy5wYXlsb2Fk
R1BSKCkpIHsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoVGFnT2Zmc2V0
KSwgcmVncy50YWdHUFIoKSk7CisgICAgICAgICAgICBsb2FkMzIoYWRkcmVzcy53aXRoT2Zmc2V0
KFBheWxvYWRPZmZzZXQpLCByZWdzLnBheWxvYWRHUFIoKSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBsb2FkMzIoYWRkcmVzcy53aXRoT2Zmc2V0KFBheWxvYWRPZmZzZXQpLCByZWdz
LnBheWxvYWRHUFIoKSk7CisgICAgICAgICAgICBsb2FkMzIoYWRkcmVzcy53aXRoT2Zmc2V0KFRh
Z09mZnNldCksIHJlZ3MudGFnR1BSKCkpOworICAgICAgICB9CisjZW5kaWYKKyAgICB9CisgICAg
CiAgICAgdm9pZCBtb3ZlVHJ1c3RlZFZhbHVlKEpTVmFsdWUgdmFsdWUsIEpTVmFsdWVSZWdzIHJl
Z3MpCiAgICAgewogI2lmIFVTRShKU1ZBTFVFNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0NDYWxsSGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQ0NhbGxIZWxwZXJzLmgJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2NjYsNiArMTY2
NiwxNSBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoYXJnNCwgR1BSSW5mbzo6YXJndW1lbnRHUFIz
KTsKICAgICB9CiAjZW5kaWYKKyAgICAKKyAgICB2b2lkIHNldHVwQXJndW1lbnRzKEpTVmFsdWVS
ZWdzIGFyZzEpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIHNldHVwQXJndW1l
bnRzKGFyZzEuZ3ByKCkpOworI2Vsc2UKKyAgICAgICAgc2V0dXBBcmd1bWVudHMoYXJnMS5wYXls
b2FkR1BSKCksIGFyZzEudGFnR1BSKCkpOworI2VuZGlmCisgICAgfQogCiAgICAgdm9pZCBzZXR1
cFJlc3VsdHMoR1BSUmVnIGRlc3RBLCBHUFJSZWcgZGVzdEIpCiAgICAgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw4IEBA
IHB1YmxpYzoKICAgICBHUFJSZWcgdGFnR1BSKCkgY29uc3QgeyByZXR1cm4gSW52YWxpZEdQUlJl
ZzsgfQogICAgIEdQUlJlZyBwYXlsb2FkR1BSKCkgY29uc3QgeyByZXR1cm4gbV9ncHI7IH0KICAg
ICAKKyAgICBib29sIHVzZXMoR1BSUmVnIGdwcikgY29uc3QgeyByZXR1cm4gbV9ncHIgPT0gZ3By
OyB9CisgICAgCiBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwcjsKIH07CkBAIC0xNjksNiArMTcx
LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdGFnR1BSKCk7CiAgICAgfQogCisgICAgYm9v
bCB1c2VzKEdQUlJlZyBncHIpIGNvbnN0IHsgcmV0dXJuIG1fdGFnR1BSID09IGdwciB8fCBtX3Bh
eWxvYWRHUFIgPT0gZ3ByOyB9CisgICAgCiBwcml2YXRlOgogICAgIGludDhfdCBtX3RhZ0dQUjsK
ICAgICBpbnQ4X3QgbV9wYXlsb2FkR1BSOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDYWxsMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ2FsbDMyXzY0LmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDAsNiArMzAw
LDE0IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICBzdG9y
ZTMyKHJlZ1QwLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBKU1N0YWNrOjpDYWxsZWUg
KiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNp
emVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogICAgIHN0b3JlMzIocmVnVDEsIEFkZHJlc3Moc3Rh
Y2tQb2ludGVyUmVnaXN0ZXIsIEpTU3RhY2s6OkNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6
ZW9mKFJlZ2lzdGVyKSkgKyBUYWdPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsK
IAorICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8o
KTsKKworICAgIGlmIChDYWxsRWRnZUxvZzo6aXNFbmFibGVkKCkgJiYgc2hvdWxkRW1pdFByb2Zp
bGluZygpCisgICAgICAgICYmIE9wdGlvbnM6OmJhc2VsaW5lRG9lc0NhbGxFZGdlUHJvZmlsaW5n
KCkpIHsKKyAgICAgICAgbV92bS0+ZW5zdXJlQ2FsbEVkZ2VMb2coKS5lbWl0TG9nQ29kZSgKKyAg
ICAgICAgICAgICp0aGlzLCBpbmZvLT5jYWxsRWRnZVByb2ZpbGUsIEpTVmFsdWVSZWdzKHJlZ1Qx
LCByZWdUMCkpOworICAgIH0KKwogICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsX2V2YWwpIHsK
ICAgICAgICAgY29tcGlsZUNhbGxFdmFsKGluc3RydWN0aW9uKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMzEzLDcgKzMyMSw2IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29k
ZUkKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZSk7CiAKICAgICBBU1NFUlQobV9jYWxsQ29tcGls
YXRpb25JbmZvLnNpemUoKSA9PSBjYWxsTGlua0luZm9JbmRleCk7Ci0gICAgQ2FsbExpbmtJbmZv
KiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5mbygpOwogICAgIGluZm8tPmNhbGxU
eXBlID0gQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJRCk7CiAgICAgaW5mby0+Y29k
ZU9yaWdpbiA9IENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCk7CiAgICAgaW5mby0+Y2FsbGVl
R1BSID0gcmVnVDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHJl
dmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIxMiw2ICsyMTIsMTIgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENh
bGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVlLCBy
ZWdUMCk7IC8vIHJlZ1QwIGhvbGRzIGNhbGxlZS4KIAogICAgIHN0b3JlNjQocmVnVDAsIEFkZHJl
c3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpTU3RhY2s6OkNhbGxlZSAqIHN0YXRpY19jYXN0PGlu
dD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKyAgICAK
KyAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2NvZGVCbG9jay0+YWRkQ2FsbExpbmtJbmZvKCk7
CisKKyAgICBpZiAoQ2FsbEVkZ2VMb2c6OmlzRW5hYmxlZCgpICYmIHNob3VsZEVtaXRQcm9maWxp
bmcoKQorICAgICAgICAmJiBPcHRpb25zOjpiYXNlbGluZURvZXNDYWxsRWRnZVByb2ZpbGluZygp
KQorICAgICAgICBtX3ZtLT5lbnN1cmVDYWxsRWRnZUxvZygpLmVtaXRMb2dDb2RlKCp0aGlzLCBp
bmZvLT5jYWxsRWRnZVByb2ZpbGUsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CiAKICAgICBpZiAob3Bj
b2RlSUQgPT0gb3BfY2FsbF9ldmFsKSB7CiAgICAgICAgIGNvbXBpbGVDYWxsRXZhbChpbnN0cnVj
dGlvbik7CkBAIC0yMjMsNyArMjI5LDYgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2Rl
SUQgb3Bjb2RlSQogICAgIGFkZFNsb3dDYXNlKHNsb3dDYXNlKTsKIAogICAgIEFTU0VSVChtX2Nh
bGxDb21waWxhdGlvbkluZm8uc2l6ZSgpID09IGNhbGxMaW5rSW5mb0luZGV4KTsKLSAgICBDYWxs
TGlua0luZm8qIGluZm8gPSBtX2NvZGVCbG9jay0+YWRkQ2FsbExpbmtJbmZvKCk7CiAgICAgaW5m
by0+Y2FsbFR5cGUgPSBDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKG9wY29kZUlEKTsKICAgICBp
bmZvLT5jb2RlT3JpZ2luID0gQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KTsKICAgICBpbmZv
LT5jYWxsZWVHUFIgPSByZWdUMDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmgJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2NywxMyBAQCB0eXBlZGVm
IGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICB2KGJvb2wsIGVuYWJsZUFjY2Vzc0lubGlu
aW5nLCB0cnVlKSBcCiAgICAgdihib29sLCBlbmFibGVQb2x5dmFyaWFudERldmlydHVhbGl6YXRp
b24sIHRydWUpIFwKICAgICB2KGJvb2wsIGVuYWJsZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcs
IHRydWUpIFwKKyAgICB2KGJvb2wsIGVuYWJsZVBvbHltb3JwaGljQ2FsbElubGluaW5nLCB0cnVl
KSBcCisgICAgdihib29sLCBjYWxsU3RhdHVzU2hvdWxkVXNlQ2FsbEVkZ2VQcm9maWxlLCB0cnVl
KSBcCisgICAgdihib29sLCBjYWxsRWRnZVByb2ZpbGVSZWFsbHlQcm9jZXNzZXNMb2csIHRydWUp
IFwKKyAgICB2KGJvb2wsIGJhc2VsaW5lRG9lc0NhbGxFZGdlUHJvZmlsaW5nLCBmYWxzZSkgXAor
ICAgIHYoYm9vbCwgZGZnRG9lc0NhbGxFZGdlUHJvZmlsaW5nLCB0cnVlKSBcCisgICAgdihib29s
LCBlbmFibGVDYWxsRWRnZVByb2ZpbGluZywgdHJ1ZSkgXAorICAgIHYodW5zaWduZWQsIGZyZXF1
ZW50Q2FsbFRocmVzaG9sZCwgMikgXAogICAgIHYoYm9vbCwgb3B0aW1pemVOYXRpdmVDYWxscywg
ZmFsc2UpIFwKICAgICBcCiAgICAgdihib29sLCBlbmFibGVDb25jdXJyZW50SklULCB0cnVlKSBc
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAxNzI4NTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM3Myw2ICszNzMsMTMgQEAgVk0qJiBWTTo6c2hhcmVkSW5zdGFuY2VJbnRlcm5hbCgpCiAg
ICAgcmV0dXJuIHNoYXJlZEluc3RhbmNlOwogfQogCitDYWxsRWRnZUxvZyYgVk06OmVuc3VyZUNh
bGxFZGdlTG9nKCkKK3sKKyAgICBpZiAoIWNhbGxFZGdlTG9nKQorICAgICAgICBjYWxsRWRnZUxv
ZyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbEVkZ2VMb2c+KCk7CisgICAgcmV0dXJuICpjYWxsRWRn
ZUxvZzsKK30KKwogI2lmIEVOQUJMRShKSVQpCiBzdGF0aWMgVGh1bmtHZW5lcmF0b3IgdGh1bmtH
ZW5lcmF0b3JGb3JJbnRyaW5zaWMoSW50cmluc2ljIGludHJpbnNpYykKIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzOwog
ICAgIGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlczsKKyAgICBjbGFzcyBDYWxsRWRnZUxvZzsKICAg
ICBjbGFzcyBDb2RlQmxvY2s7CiAgICAgY2xhc3MgQ29kZUNhY2hlOwogICAgIGNsYXNzIENvbW1v
bklkZW50aWZpZXJzOwpAQCAtMjMzLDYgKzIzNCw5IEBAIG5hbWVzcGFjZSBKU0MgewogI2lmIEVO
QUJMRShERkdfSklUKQogICAgICAgICBPd25QdHI8REZHOjpMb25nTGl2ZWRTdGF0ZT4gZGZnU3Rh
dGU7CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisgICAgICAgIAorICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q2FsbEVkZ2VMb2c+IGNhbGxFZGdlTG9nOworICAgICAgICBDYWxsRWRnZUxvZyYg
ZW5zdXJlQ2FsbEVkZ2VMb2coKTsKIAogICAgICAgICBWTVR5cGUgdm1UeXBlOwogICAgICAgICBD
bGllbnREYXRhKiBjbGllbnREYXRhOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9uZXctYXJyYXktdGhlbi1leGl0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbmV3LWFycmF5LXRoZW4tZXhpdC5qcwkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbmV3LWFycmF5LXRoZW4t
ZXhpdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACitmdW5jdGlvbiBmb28oZikg
eworICAgIHJldHVybiBuZXcgZigpOworfQorCitub0lubGluZShmb28pOworCitmb3IgKHZhciBp
ID0gMDsgaSA8IDEwMDAwOyArK2kpCisgICAgZm9vKEFycmF5KTsKKwordmFyIGRpZENhbGwgPSBm
YWxzZTsKK2ZvbyhmdW5jdGlvbigpIHsgZGlkQ2FsbCA9IHRydWU7IH0pOworCitpZiAoIWRpZENh
bGwpCisgICAgdGhyb3cgIkVycm9yOiBkaWRuJ3QgY2FsbCBteSBmdW5jdGlvbi4iOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wb2x5LWNhbGwtZXhpdC10aGlzLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcG9seS1j
YWxsLWV4aXQtdGhpcy5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQtdGhpcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDI5IEBACisoZnVuY3Rpb24oKSB7CisgICAgZnVuY3Rpb24gZm9vKHgpIHsgcmV0dXJuIDEg
KyB0aGlzLmY7IH0KKyAgICBmdW5jdGlvbiBiYXIoeCkgeyByZXR1cm4geCArIHRoaXMuZjsgfQor
ICAgIGZ1bmN0aW9uIGJheih4KSB7IHJldHVybiB4ICsgMSArIHRoaXMuZjsgfQorICAgIAorICAg
IHZhciBuID0gMTAwMDAwMDsKKyAgICAKKyAgICB2YXIgcmVzdWx0ID0gKGZ1bmN0aW9uKG8pIHsK
KyAgICAgICAgdmFyIGYgPSB7ZnVuOmZvbywgZjoxfTsKKyAgICAgICAgdmFyIGcgPSB7ZnVuOmJh
ciwgZjoyfTsKKyAgICAgICAgdmFyIGggPSB7ZnVuOmJheiwgZjozfTsKKyAgICAgICAgCisgICAg
ICAgIHZhciByZXN1bHQgPSAwOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkg
eworICAgICAgICAgICAgaWYgKGkgPT0gbiAtIDEpCisgICAgICAgICAgICAgICAgZiA9IGg7Cisg
ICAgICAgICAgICByZXN1bHQgKz0gZi5mdW4oby5mKTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgdmFyIHRtcCA9IGY7CisgICAgICAgICAgICBmID0gZzsKKyAgICAgICAgICAgIGcgPSB0bXA7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSkoe2Y6
NDJ9KTsKKyAgICAKKyAgICBpZiAocmVzdWx0ICE9ICgobiAvIDIgLSAxKSAqICg0MiArIDIpKSAr
IChuIC8gMiAqICgxICsgMSkgKyAoNDIgKyAxICsgMykpKQorICAgICAgICB0aHJvdyAiRXJyb3I6
IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9KSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9wb2x5LWNhbGwtZXhpdC5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3BvbHktY2FsbC1leGl0LmpzCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wb2x5LWNhbGwtZXhpdC5q
cwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5IEBACisoZnVuY3Rpb24oKSB7CisgICAgZnVu
Y3Rpb24gZm9vKHgpIHsgcmV0dXJuIDE7IH0KKyAgICBmdW5jdGlvbiBiYXIoeCkgeyByZXR1cm4g
eDsgfQorICAgIGZ1bmN0aW9uIGJheih4KSB7IHJldHVybiB4ICsgMTsgfQorICAgIAorICAgIHZh
ciBuID0gMTAwMDAwMDsKKyAgICAKKyAgICB2YXIgcmVzdWx0ID0gKGZ1bmN0aW9uKG8pIHsKKyAg
ICAgICAgdmFyIGYgPSBmb287CisgICAgICAgIHZhciBnID0gYmFyOworICAgICAgICB2YXIgaCA9
IGJhejsKKyAgICAgICAgCisgICAgICAgIHZhciByZXN1bHQgPSAwOworICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IG47ICsraSkgeworICAgICAgICAgICAgaWYgKGkgPT0gbiAtIDEpCisgICAg
ICAgICAgICAgICAgZiA9IGg7CisgICAgICAgICAgICByZXN1bHQgKz0gZihvLmYpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICB2YXIgdG1wID0gZjsKKyAgICAgICAgICAgIGYgPSBnOworICAg
ICAgICAgICAgZyA9IHRtcDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9KSh7Zjo0Mn0pOworICAgIAorICAgIGlmIChyZXN1bHQgIT0gKChuIC8gMiAt
IDEpICogNDIpICsgKG4gLyAyICogMSkgKyAoNDIgKyAxKSkKKyAgICAgICAgdGhyb3cgIkVycm9y
OiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfSkoKTsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzI4NTkp
CisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDE0LTA4LTIzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIHNob3VsZCBiZSBhYmxlIHRvIGRvIHBvbHltb3JwaGljIGNhbGwgaW5saW5pbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTE0NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkIHNv
bWUgcG93ZXIgdGhhdCBJIG5lZWQgZm9yIGNhbGwgZWRnZSBwcm9maWxpbmcuCisKKyAgICAgICAg
KiB3dGYvT3duUHRyLmg6CisgICAgICAgIChXVEY6Ok93blB0cjxUPjo6Y3JlYXRlVHJhbnNhY3Rp
b25hbGx5KToKKyAgICAgICAgKiB3dGYvU3BlY3RydW0uaDoKKyAgICAgICAgKFdURjo6U3BlY3Ry
dW06OmFkZCk6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjphZGRBbGwpOgorICAgICAgICAoV1RG
OjpTcGVjdHJ1bTo6Z2V0KToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OnNpemUpOgorICAgICAg
ICAoV1RGOjpTcGVjdHJ1bTo6S2V5QW5kQ291bnQ6OktleUFuZENvdW50KToKKyAgICAgICAgKFdU
Rjo6U3BlY3RydW06OmNsZWFyKToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OnJlbW92ZUlmKToK
KwogMjAxNC0wOC0yMSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZlcnQgcjE3MjgzMSwgaXQgYnJva2UgdGhlIFdpbmRvd3MgYnVpbGQuCkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9Pd25QdHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9P
d25QdHIuaAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL1dURi93dGYvT3duUHRyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogIENvcHlyaWdodCAoQykgMjAwNiwg
MjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMiw2
ICsyMiw3IEBACiAjZGVmaW5lIFdURl9Pd25QdHJfaAogCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHJDb21tb24uaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+
CkBAIC03Miw2ICs3MywxNCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVT4gT3duUHRyJiBvcGVyYXRvcj0oT3duUHRyPFU+JiYpOwogCiAgICAgICAgIHZvaWQg
c3dhcChPd25QdHImIG8pIHsgc3RkOjpzd2FwKG1fcHRyLCBvLm1fcHRyKTsgfQorICAgICAgICAK
KyAgICAgICAgLy8gQ29uc3RydWN0IGFuIG9iamVjdCB0byBzdG9yZSBpbnRvIHRoaXMgT3duUHRy
LCBidXQgb25seSBzbyBsb25nIGFzIHRoaXMgT3duUHRyCisgICAgICAgIC8vIGRvZXNuJ3QgYWxy
ZWFkeSBwb2ludCB0byBhbiBvYmplY3QuIFRoaXMgd2lsbCBlbnN1cmUgdGhhdCBhZnRlciB5b3Ug
Y2FsbCB0aGlzLAorICAgICAgICAvLyB0aGUgT3duUHRyIHdpbGwgcG9pbnQgdG8gYW4gaW5zdGFu
Y2Ugb2YgVC4gVGhpcyBpbnN0YW5jZSBtYXkgb3IgbWF5IG5vdCBoYXZlIGJlZW4KKyAgICAgICAg
Ly8gY3JlYXRlZCBieSB0aGlzIGNhbGwuIE1vcmVvdmVyLCB0aGlzIGNhbGwgdXNlcyBhbiBvcHBv
cnR1bmlzdGljIHRyYW5zYWN0aW9uLCBpbgorICAgICAgICAvLyB0aGF0IHdlIG1heSBjcmVhdGUg
YW4gaW5zdGFuY2Ugb2YgVCBhbmQgdGhlbiBpbW1lZGlhdGVseSB0aHJvdyBpdCBhd2F5LgorICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgorICAgICAgICB2b2lkIGNyZWF0ZVRyYW5z
YWN0aW9uYWxseShBcmdzLi4uKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IE93
blB0cihQdHJUeXBlIHB0cikgOiBtX3B0cihwdHIpIHsgfQpAQCAtMTg2LDYgKzE5NSwyOCBAQCBu
YW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuIHAuZ2V0KCk7CiAgICAgfQogCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gaW5saW5lIHZvaWQg
T3duUHRyPFQ+OjpjcmVhdGVUcmFuc2FjdGlvbmFsbHkoQXJncy4uLiBhcmdzKQorICAgIHsKKyAg
ICAgICAgaWYgKG1fcHRyKSB7CisgICAgICAgICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgVCogbmV3T2Jq
ZWN0ID0gbmV3IFQoYXJncy4uLik7CisgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7Cisj
aWYgRU5BQkxFKENPTVBBUkVfQU5EX1NXQVApCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGlm
IChtX3B0cikgeworICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdPYmplY3Q7CisgICAgICAgICAg
ICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorICAgICAgICB9IHdoaWxlICghV1RGOjp3ZWFrQ29tcGFyZUFuZFN3YXAoYml0
d2lzZV9jYXN0PHZvaWQqdm9sYXRpbGUqPigmbV9wdHIpLCBudWxscHRyLCBuZXdPYmplY3QpKTsK
KyNlbHNlCisgICAgICAgIG1fcHRyID0gbmV3T2JqZWN0OworI2VuZGlmCisgICAgfQorCiB9IC8v
IG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpPd25QdHI7CkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9TcGVjdHJ1bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgJKHJl
dmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTMyLDIyICszMiwzMSBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdGVtcGxhdGU8dHlwZW5h
bWUgVD4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIENvdW50ZXJUeXBlID0gdW5zaWdu
ZWQ+CiBjbGFzcyBTcGVjdHJ1bSB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNo
TWFwPFQsIHVuc2lnbmVkIGxvbmc+OjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIHR5
cGVuYW1lIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0
ZXJhdG9yOworICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46Oml0
ZXJhdG9yIGl0ZXJhdG9yOworICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVy
VHlwZT46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwogICAgIAogICAgIFNwZWN0cnVt
KCkgeyB9CiAgICAgCi0gICAgdm9pZCBhZGQoY29uc3QgVCYga2V5LCB1bnNpZ25lZCBsb25nIGNv
dW50ID0gMSkKKyAgICB2b2lkIGFkZChjb25zdCBUJiBrZXksIENvdW50ZXJUeXBlIGNvdW50ID0g
MSkKICAgICB7Ci0gICAgICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz46OkFk
ZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBjb3VudCk7CisgICAgICAgIGlmICghY291
bnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwgQ291
bnRlclR5cGU+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgY291bnQpOwogICAg
ICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSArPSBjb3VudDsKICAgICB9CiAgICAgCi0gICAgdW5zaWduZWQgbG9uZyBnZXQoY29u
c3QgVCYga2V5KSBjb25zdAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAgdm9pZCBhZGRB
bGwoY29uc3QgU3BlY3RydW08VCwgVT4mIG90aGVyU3BlY3RydW0pCisgICAgeworICAgICAgICBm
b3IgKGF1dG8gZW50cnkgOiBvdGhlclNwZWN0cnVtKQorICAgICAgICAgICAgYWRkKGVudHJ5Lmtl
eSwgZW50cnkuY291bnQpOworICAgIH0KKyAgICAKKyAgICBDb3VudGVyVHlwZSBnZXQoY29uc3Qg
VCYga2V5KSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3RfaXRlcmF0b3IgaXRlciA9IG1fbWFw
LmZpbmQoa2V5KTsKICAgICAgICAgaWYgKGl0ZXIgPT0gbV9tYXAuZW5kKCkpCkBAIC01NSw2ICs2
NCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOwogICAgIH0KICAgICAK
KyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsgfQorICAgIAog
ICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQogICAgIGl0ZXJh
dG9yIGVuZCgpIHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgYmVn
aW4oKSBjb25zdCB7IHJldHVybiBtX21hcC5iZWdpbigpOyB9CkBAIC02Myw3ICs3NCw3IEBAIHB1
YmxpYzoKICAgICBzdHJ1Y3QgS2V5QW5kQ291bnQgewogICAgICAgICBLZXlBbmRDb3VudCgpIHsg
fQogICAgICAgICAKLSAgICAgICAgS2V5QW5kQ291bnQoY29uc3QgVCYga2V5LCB1bnNpZ25lZCBs
b25nIGNvdW50KQorICAgICAgICBLZXlBbmRDb3VudChjb25zdCBUJiBrZXksIENvdW50ZXJUeXBl
IGNvdW50KQogICAgICAgICAgICAgOiBrZXkoa2V5KQogICAgICAgICAgICAgLCBjb3VudChjb3Vu
dCkKICAgICAgICAgewpAQCAtODAsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAg
ICAgICBUIGtleTsKLSAgICAgICAgdW5zaWduZWQgbG9uZyBjb3VudDsKKyAgICAgICAgQ291bnRl
clR5cGUgY291bnQ7CiAgICAgfTsKICAgICAKICAgICAvLyBSZXR1cm5zIGEgbGlzdCBvcmRlcmVk
IGZyb20gbG93ZXN0LWNvdW50IHRvIGhpZ2hlc3QtY291bnQuCkBAIC05NCw4ICsxMDUsMTggQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gbGlzdDsKICAgICB9CiAgICAgCisgICAgdm9pZCBjbGVh
cigpIHsgbV9tYXAuY2xlYXIoKTsgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+CisgICAgdm9pZCByZW1vdmVJZihjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAg
ICAgICAgbV9tYXAucmVtb3ZlSWYoW2Z1bmN0b3JdICh0eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50
ZXJUeXBlPjo6S2V5VmFsdWVQYWlyVHlwZSYgcGFpcikgeworICAgICAgICAgICAgICAgIHJldHVy
biBmdW5jdG9yKEtleUFuZENvdW50KHBhaXIua2V5LCBwYWlyLnZhbHVlKSk7CisgICAgICAgICAg
ICB9KTsKKyAgICB9CisgICAgCiBwcml2YXRlOgotICAgIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9u
Zz4gbV9tYXA7CisgICAgSGFzaE1hcDxULCBDb3VudGVyVHlwZT4gbV9tYXA7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXVEYKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3Mjg1OSkKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE0LTA4LTIzICBG
aWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgRlRMIHNob3VsZCBiZSBh
YmxlIHRvIGRvIHBvbHltb3JwaGljIGNhbGwgaW5saW5pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTE0NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2lt
cGxlLXBvbHktY2FsbC1uZXN0ZWQuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jl
c3Mvc2ltcGxlLXBvbHktY2FsbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3Jl
Z3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC5odG1sOiBBZGRlZC4KKwogMjAxNC0w
OC0yMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQW5pbWF0
ZWQgR0lGcyBzY3JvbGxlZCBvdXQgb2YgdmlldyBzdGlsbCBjYXVzZSB0aXRsZWJhciBibHVyIHRv
IHVwZGF0ZSwgb24gdHVtYmxyLmNvbSBwYWdlCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3NpbXBsZS1wb2x5LWNhbGwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zaW1wbGUtcG9seS1jYWxs
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJv
d24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCklu
ZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVkLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5
LWNhbGwtbmVzdGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zaW1wbGUtcG9seS1jYWxsLW5lc3RlZAor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3du
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcG9seS1jYWxsLW5lc3RlZC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0
ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBv
bHktY2FsbC1uZXN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zaW1wbGUtcG9seS1j
YWxsLW5lc3RlZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Jl
Z3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
c2NyaXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXBv
bHktY2FsbC1uZXN0ZWQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQuanMJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcG9seS1jYWxsLW5lc3Rl
ZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI1IEBACisoZnVuY3Rpb24oKSB7CisgICAg
ZnVuY3Rpb24gZm9vKHgpIHsgcmV0dXJuIDE7IH0KKyAgICBmdW5jdGlvbiBiYXIoeCkgeyByZXR1
cm4geDsgfQorICAgIAorICAgIHZhciBuID0gMTAwMDAwMDsKKyAgICAKKyAgICB2YXIgcmVzdWx0
ID0gKGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgZiA9IGZvbzsKKyAgICAgICAgdmFyIGcgPSBi
YXI7CisgICAgICAgIAorICAgICAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgICAgIHJlc3VsdCArPSBmKDQyKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgdmFyIHRtcCA9IGY7CisgICAgICAgICAgICBmID0gZzsKKyAg
ICAgICAgICAgIGcgPSB0bXA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfSkoKTsKKyAgICAKKyAgICBpZiAocmVzdWx0ICE9IG4gLyAyICogNDIgKyBu
IC8gMiAqIDEpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsK
K30pKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUt
cG9seS1jYWxsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0
LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcG9seS1jYWxsLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMjAgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBmdW5jdGlvbiBmb28oeCkgeyBy
ZXR1cm4gMTsgfQorICAgIGZ1bmN0aW9uIGJhcih4KSB7IHJldHVybiB4OyB9CisgICAgCisgICAg
dmFyIGYgPSBmb287CisgICAgdmFyIGcgPSBiYXI7CisgICAgCisgICAgdmFyIHJlc3VsdCA9IDA7
CisgICAgdmFyIG4gPSAxMDAwMDA7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsK
KyAgICAgICAgcmVzdWx0ICs9IGYoNDIpOworICAgICAgICAKKyAgICAgICAgdmFyIHRtcCA9IGY7
CisgICAgICAgIGYgPSBnOworICAgICAgICBnID0gdG1wOworICAgIH0KKyAgICAKKyAgICBpZiAo
cmVzdWx0ICE9IG4gLyAyICogNDIgKyBuIC8gMiAqIDEpCisgICAgICAgIHRocm93ICJFcnJvcjog
YmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30pKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237087</attachid>
            <date>2014-08-25 08:39:16 -0700</date>
            <delta_ts>2014-08-25 11:37:15 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>190850</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyODk3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2NiBA
QAorMjAxNC0wOC0yNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEZUTCBzaG91bGQgYmUgYWJsZSB0byBkbyBwb2x5bW9ycGhpYyBjYWxsIGlubGluaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUxNDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFkZGVk
IGEgbG9nLWJhc2VkIGhpZ2gtZmlkZWxpdHkgY2FsbCBlZGdlIHByb2ZpbGVyIHRoYXQgcnVucyBp
biBERkcgSklUIChhbmQgb3B0aW9uYWxseQorICAgICAgICBiYXNlbGluZSBKSVQpIGNvZGUuIFVz
ZWQgaXQgdG8gZG8gcHJlY2lzZSBwb2x5bW9ycGhpYyBpbmxpbmluZyBpbiB0aGUgRlRMLiBQb3Rl
bnRpYWwKKyAgICAgICAgaW5saW5pbmcgc2l0ZXMgdXNlIHRoZSBjYWxsIGVkZ2UgcHJvZmlsZSBp
ZiBpdCBpcyBhdmFpbGFibGUsIGJ1dCB0aGV5IHdpbGwgc3RpbGwgZmFsbCBiYWNrCisgICAgICAg
IG9uIHRoZSBjYWxsIGlubGluZSBjYWNoZSBhbmQgcmFyZSBjYXNlIGNvdW50cyBpZiBpdCdzIG5v
dC4gUG9seW1vcnBoaWMgaW5saW5pbmcgbWVhbnMgdGhhdAorICAgICAgICBtdWx0aXBsZSBwb3Nz
aWJsZSBjYWxsZWVzIGNhbiBiZSBpbmxpbmVkIHdpdGggYSBzd2l0Y2ggdG8gZ3VhcmQgdGhlbS4g
VGhlIHNsb3cgcGF0aCBtYXkKKyAgICAgICAgZWl0aGVyIGJlIGFuIE9TUiBleGl0IG9yIGEgdmly
dHVhbCBjYWxsLgorICAgICAgICAKKyAgICAgICAgVGhlIGNhbGwgZWRnZSBwcm9maWxpbmcgYWRk
ZWQgaW4gdGhpcyBwYXRjaCBpcyB2ZXJ5IHByZWNpc2UgLSBpdCB3aWxsIHRlbGwgeW91IGFib3V0
IGV2ZXJ5CisgICAgICAgIGNhbGwgdGhhdCBoYXMgZXZlciBoYXBwZW5lZC4gSXQgdG9vayBzb21l
IGVmZm9ydCB0byByZWR1Y2UgdGhlIG92ZXJoZWFkIG9mIHRoaXMgcHJvZmlsaW5nLgorICAgICAg
ICBUaGlzIG1vc3RseSBpbnZvbHZlZCBlbnN1cmluZyB0aGF0IHdlIGRvbid0IGRvIGl0IHVubmVj
ZXNzYXJpbHkuIEZvciBleGFtcGxlLCB3ZSBhdm9pZCBpdAorICAgICAgICBpbiB0aGUgYmFzZWxp
bmUgSklUICh5b3UgY2FuIGNvbmRpdGlvbmFsbHkgZW5hYmxlIGl0IGJ1dCBpdCdzIG9mZiBieSBk
ZWZhdWx0KSBhbmQgd2Ugb25seSBkbworICAgICAgICBpdCBpbiB0aGUgREZHIEpJVCBpZiB3ZSBr
bm93IHRoYXQgdGhlIHJlZ3VsYXIgaW5saW5lIGNhY2hlIHByb2ZpbGluZyB3YXNuJ3QgcHJlY2lz
ZSBlbm91Z2guCisgICAgICAgIEkgYWxzbyBleHBlcmltZW50ZWQgd2l0aCByZWR1Y2luZyB0aGUg
cHJlY2lzaW9uIG9mIHRoZSBwcm9maWxpbmcuIFRoaXMgbGVkIHRvIGEgc2lnbmlmaWNhbnQKKyAg
ICAgICAgcmVkdWN0aW9uIGluIHRoZSBzcGVlZC11cCwgc28gSSBhdm9pZGVkIHRoaXMgYXBwcm9h
Y2guIEkgYWxzbyBleHBsb3JlZCBtYWtpbmcgbG9nIHByb2Nlc3NpbmcKKyAgICAgICAgY29uY3Vy
cmVudCwgYnV0IHRoYXQgZGlkbid0IGhlbHAuIEFsc28sIEkgdGVzdGVkIHRoZSBvdmVyaGVhZCBv
ZiB0aGUgbG9nIHByb2Nlc3NpbmcgYW5kCisgICAgICAgIGZvdW5kIHRoYXQgbW9zdCBvZiB0aGUg
b3ZlcmhlYWQgb2YgdGhpcyBwcm9maWxpbmcgaXMgYWN0dWFsbHkgaW4gcHV0dGluZyB0aGluZ3Mg
aW50byB0aGUgbG9nCisgICAgICAgIHJhdGhlciB0aGFuIGluIHByb2Nlc3NpbmcgdGhlIGxvZyAt
IHRoYXQgcGFydCBhcHBlYXJzIHRvIGJlIHN1cnByaXNpbmdseSBjaGVhcC4KKyAgICAgICAgCisg
ICAgICAgIFBvbHltb3JwaGljIGlubGluaW5nIGNvdWxkIGJlIGVuYWJsZWQgaW4gdGhlIERGRyBp
ZiB3ZSBlbmFibGVkIGJhc2VsaW5lIGNhbGwgZWRnZSBwcm9maWxpbmcsCisgICAgICAgIGFuZCBp
ZiB3ZSBndWFyZGVkIHN1Y2ggaW5saW5pbmcgc2l0ZXMgd2l0aCBzb21lIHByb2ZpbGluZyBtZWNo
YW5pc20gdG8gZGV0ZWN0CisgICAgICAgIHBvbHl2YXJpYW50IG1vbm9tb3JwaGlzYXRpb24gb3Bw
b3J0dW5pdGllcyAod2hlcmUgdGhlIGNhbGxzaXRlIGJlaW5nIGlubGluZWQgcmV2ZWFscyB0aGF0
CisgICAgICAgIGl0J3MgYWN0dWFsbHkgbW9ub21vcnBoaWMpLgorICAgICAgICAKKyAgICAgICAg
VGhpcyBpcyBhIH4yOCUgc3BlZWQtdXAgb24gZGVsdGFibHVlIGFuZCBhIH43JSBzcGVlZC11cCBv
biByaWNoYXJkcywgd2l0aCBzbWFsbCBzcGVlZC11cHMgb24KKyAgICAgICAgb3RoZXIgcHJvZ3Jh
bXMgYXMgd2VsbC4gSXQncyBhYm91dCBhIDIlIHNwZWVkLXVwIG9uIE9jdGFuZSB2ZXJzaW9uIDIs
IGFuZCBuZXZlciBhIHJlZ3Jlc3Npb24KKyAgICAgICAgb24gYW55dGhpbmcgd2UgY2FyZSBhYm91
dC4gU29tZSBhZ2dyZWdhdGVzLCBsaWtlIFY4U3BpZGVyLCBzZWUgYSByZWdyZXNzaW9uLiBUaGlz
IGlzCisgICAgICAgIGhpZ2hsaWdodGluZyB0aGUgaW5jcmVhc2UgaW4gcHJvZmlsaW5nIG92ZXJo
ZWFkLiBCdXQgc2luY2UgdGhpcyBkb2Vzbid0IHNob3cgdXAgb24gYW55IG1ham9yCisgICAgICAg
IHNjb3JlIChjb2RlLWxvYWQgb3IgU3VuU3BpZGVyKSwgaXQncyBwcm9iYWJseSBub3QgcmVsZXZh
bnQuCisgICAgICAgIAorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NhbGxFZGdlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkNhbGxFZGdlOjpkdW1wKToKKyAg
ICAgICAgKiBieXRlY29kZS9DYWxsRWRnZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbEVk
Z2U6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6OkNhbGxFZGdlOjpjYWxsZWUpOgorICAgICAg
ICAoSlNDOjpDYWxsRWRnZTo6Y291bnQpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZTo6ZGVzcGVj
aWZpZWRDbG9zdXJlKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2U6OkNhbGxFZGdlKToKKyAgICAg
ICAgKiBieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
Q2FsbEVkZ2VQcm9maWxlOjpjYWxsRWRnZXMpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2Zp
bGU6Om51bUNhbGxzVG9Lbm93bkNlbGxzKToKKyAgICAgICAgKEpTQzo6d29ydGhEZXNwZWNpZnlp
bmcpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6OndvcnRoRGVzcGVjaWZ5aW5nKToK
KyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VQcm9maWxlOjp2aXNpdFdlYWspOgorICAgICAgICAoSlND
OjpDYWxsRWRnZVByb2ZpbGU6OmFkZFNsb3cpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2Zp
bGU6Om1lcmdlQmFjayk6CisgICAgICAgIChKU0M6OkNhbGxFZGdlUHJvZmlsZTo6ZmFkZUJ5SGFs
Zik6CisgICAgICAgIChKU0M6OkNhbGxFZGdlTG9nOjpDYWxsRWRnZUxvZyk6CisgICAgICAgIChK
U0M6OkNhbGxFZGdlTG9nOjp+Q2FsbEVkZ2VMb2cpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZUxv
Zzo6aXNFbmFibGVkKToKKyAgICAgICAgKEpTQzo6b3BlcmF0aW9uUHJvY2Vzc0NhbGxFZGdlTG9n
KToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VMb2c6OmVtaXRMb2dDb2RlKToKKyAgICAgICAgKEpT
Qzo6Q2FsbEVkZ2VMb2c6OnByb2Nlc3NMb2cpOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxFZGdl
UHJvZmlsZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VQcm9maWxlOjpudW1DYWxs
c1RvTm90Q2VsbCk6CisgICAgICAgIChKU0M6OkNhbGxFZGdlUHJvZmlsZTo6bnVtQ2FsbHNUb1Vu
a25vd25DZWxsKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VQcm9maWxlOjp0b3RhbENhbGxzKToK
KyAgICAgICAgKiBieXRlY29kZS9DYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmg6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6OkNhbGxFZGdlUHJvZmlsZSk6CisgICAgICAgIChK
U0M6OkNhbGxFZGdlUHJvZmlsZTo6YWRkKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0lu
Zm8uY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OnZpc2l0V2Vhayk6CisgICAgICAg
ICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmg6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtT
dGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Q2FsbExpbmtTdGF0dXMp
OgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAg
ICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKEpTQzo6Q2Fs
bExpbmtTdGF0dXM6OmNvbXB1dGVFeGl0U2l0ZURhdGEpOgorICAgICAgICAoSlNDOjpDYWxsTGlu
a1N0YXR1czo6Y29tcHV0ZUZyb21DYWxsTGlua0luZm8pOgorICAgICAgICAoSlNDOjpDYWxsTGlu
a1N0YXR1czo6Y29tcHV0ZUZyb21DYWxsRWRnZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpDYWxs
TGlua1N0YXR1czo6Y29tcHV0ZURGR1N0YXR1c2VzKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtT
dGF0dXM6OmlzQ2xvc3VyZUNhbGwpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6bWFr
ZUNsb3N1cmVDYWxsKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmR1bXApOgorICAg
ICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6ZnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpDYWxsTGlua1N0YXR1czo6aW50ZXJuYWxGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkNhbGxMaW5rU3RhdHVzOjppbnRyaW5zaWNGb3IpOiBEZWxldGVkLgorICAgICAgICAq
IGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmg6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVz
OjpDYWxsTGlua1N0YXR1cyk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjppc1NldCk6
CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb3VsZFRha2VTbG93UGF0aCk6CisgICAg
ICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjplZGdlcyk6CisgICAgICAgIChKU0M6OkNhbGxMaW5r
U3RhdHVzOjpzaXplKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmF0KToKKyAgICAg
ICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9wZXJhdG9yW10pOgorICAgICAgICAoSlNDOjpDYWxs
TGlua1N0YXR1czo6Y2FuT3B0aW1pemUpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6
Y2FuVHJ1c3RDb3VudHMpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6aXNDbG9zdXJl
Q2FsbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjYWxsVGFyZ2V0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmV4ZWN1dGFibGUpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6bWFrZUNsb3N1cmVDYWxsKTog
RGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9DYWxsVmFyaWFudC5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZHVtcCk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbFZh
cmlhbnQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpDYWxsVmFyaWFudCk6
CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpvcGVyYXRvciEpOgorICAgICAgICAoSlNDOjpD
YWxsVmFyaWFudDo6ZGVzcGVjaWZpZWRDbG9zdXJlKToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlh
bnQ6OnJhd0NhbGxlZUNlbGwpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6aW50ZXJuYWxG
dW5jdGlvbik6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpmdW5jdGlvbik6CisgICAgICAg
IChKU0M6OkNhbGxWYXJpYW50Ojppc0Nsb3N1cmVDYWxsKToKKyAgICAgICAgKEpTQzo6Q2FsbFZh
cmlhbnQ6OmV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6bm9uRXhlY3V0
YWJsZUNhbGxlZSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjppbnRyaW5zaWNGb3IpOgor
ICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAg
KEpTQzo6Q2FsbFZhcmlhbnQ6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKEpT
Qzo6Q2FsbFZhcmlhbnQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6
b3BlcmF0b3IhPSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpvcGVyYXRvcjwpOgorICAg
ICAgICAoSlNDOjpDYWxsVmFyaWFudDo6b3BlcmF0b3I+KToKKyAgICAgICAgKEpTQzo6Q2FsbFZh
cmlhbnQ6Om9wZXJhdG9yPD0pOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6b3BlcmF0b3I+
PSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpoYXNoKToKKyAgICAgICAgKEpTQzo6Q2Fs
bFZhcmlhbnQ6OmRlbGV0ZWRUb2tlbik6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50SGFzaDo6
aGFzaCk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50SGFzaDo6ZXF1YWwpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVPcmlnaW4uaDoKKyAgICAgICAgKEpTQzo6SW5saW5lQ2FsbEZyYW1lOjpp
c05vcm1hbENhbGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4aXRLaW5kLmNwcDoKKyAgICAgICAg
KEpTQzo6ZXhpdEtpbmRUb1N0cmluZyk6CisgICAgICAgICogYnl0ZWNvZGUvRXhpdEtpbmQuaDoK
KyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRC
eUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0
dWJJbmZvKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNl
Ojpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdCYXNpY0Jsb2NrLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpCYXNpY0Jsb2NrOjp+QmFzaWNCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Jh
c2ljQmxvY2suaDoKKyAgICAgICAgKEpTQzo6REZHOjpCYXNpY0Jsb2NrOjp0YWtlTGFzdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6QmFzaWNCbG9jazo6ZGlkTGluayk6CisgICAgICAgICogZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
cHJvY2Vzc1NldExvY2FsUXVldWUpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpyZW1vdmVMYXN0Tm9kZUZyb21HcmFwaCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OmFkZENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6ZW1p
dEZ1bmN0aW9uQ2hlY2tzKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6dW5k
b0Z1bmN0aW9uQ2hlY2tzKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5s
aW5pbmdDb3N0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmNhbmNlbExpbmtpbmdGb3JC
bG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmF0dGVtcHRUb0lubGlu
ZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmlu
Zyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50SW50
ZXJuYWxGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnByZXBh
cmVUb1BhcnNlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpjbGVh
ckNhY2hlcyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2spOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2tzKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdD
UFNSZXRocmVhZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDUFNSZXRocmVhZGlu
Z1BoYXNlOjpmcmVlVW5uZWNlc3NhcnlOb2Rlcyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJp
emUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZH
Q29tbW9uLmg6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6Cisg
ICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToK
KyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxl
SW1wbCk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZHVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdM
YXp5SlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6TGF6eUpTVmFsdWU6OnN3aXRjaExv
b2t1cFZhbHVlKToKKyAgICAgICAgKiBkZmcvREZHTGF6eUpTVmFsdWUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpMYXp5SlNWYWx1ZTo6c3dpdGNoTG9va3VwVmFsdWUpOiBEZWxldGVkLgorICAgICAg
ICAqIGRmZy9ERkdOb2RlLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAg
ICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpPcEluZm86Ok9wSW5mbyk6
CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzSGVhcFByZWRpY3Rpb24pOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6Omhhc0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjpjZWxsT3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2V0Q2VsbE9wZXJhbmQp
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNhbkJlS25vd25GdW5jdGlvbik6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzS25vd25GdW5jdGlvbik6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6a25vd25GdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6Z2l2ZUtub3duRnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6Omhhc0Z1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpmdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFz
RXhlY3V0YWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6ZXhlY3V0YWJs
ZSk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZn
L0RGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlBoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR1Bo
YW50b21SZW1vdmFsUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlBoYW50b21SZW1vdmFs
UGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJv
cGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlND
OjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2gpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0
cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1
cmVSZWdpc3RyYXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHVGllclVwQ2hlY2tJ
bmplY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VGllclVwQ2hlY2tJbmplY3Rp
b25QaGFzZTo6cnVuKToKKyAgICAgICAgKEpTQzo6REZHOjpUaWVyVXBDaGVja0luamVjdGlvblBo
YXNlOjpyZW1vdmVGVExQcm9maWxpbmcpOgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6VmFsaWRhdGU6OnZhbGlkYXRlKToKKyAgICAgICAgKiBkZmcv
REZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6V2F0
Y2hwb2ludENvbGxlY3Rpb25QaGFzZTo6aGFuZGxlKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBm
dGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmZ0bFVucmVhY2hh
YmxlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6bG93ZXIpOgorICAgICAg
ICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6
OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVDaGVja0NlbGwpOgorICAgICAgICAoSlNDOjpG
VEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ2hlY2tCYWRDZWxsKToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUdldEV4ZWN1dGFibGUpOgorICAgICAgICAoSlND
OjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTmF0aXZlQ2FsbE9yQ29uc3RydWN0KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVN3aXRjaCk6CisgICAgICAg
IChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmJ1aWxkU3dpdGNoKToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNoZWNrRnVuY3Rpb24pOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ2hlY2tFeGVjdXRhYmxlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpj
b2xsZWN0KToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6
OkFzc2VtYmx5SGVscGVyczo6c3RvcmVWYWx1ZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVs
cGVyczo6bG9hZFZhbHVlKToKKyAgICAgICAgKiBqaXQvQ0NhbGxIZWxwZXJzLmg6CisgICAgICAg
IChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHMpOgorICAgICAgICAqIGppdC9HUFJJ
bmZvLmg6CisgICAgICAgIChKU0M6OkpTVmFsdWVSZWdzOjp1c2VzKToKKyAgICAgICAgKiBqaXQv
SklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAg
ICogaml0L0pJVENhbGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2Fs
bCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6CisgICAgICAgICogcnVudGltZS9WTS5j
cHA6CisgICAgICAgIChKU0M6OlZNOjplbnN1cmVDYWxsRWRnZUxvZyk6CisgICAgICAgICogcnVu
dGltZS9WTS5oOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9uZXctYXJyYXktdGhlbi1leGl0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3BvbHktY2Fs
bC1leGl0LXRoaXMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9wb2x5LWNhbGwt
ZXhpdC5qczogQWRkZWQuCisKIDIwMTQtMDgtMjQgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndh
c2hpbmd0b24uZWR1PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlbmFtZSBET00uUkdCQSBh
bmQgcmVtb3ZlIHdvcmthcm91bmRzIGluIHRoZSBiaW5kaW5ncyBnZW5lcmF0b3IKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNjUsOCAr
NjUsMTEgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBieXRlY29kZS9BcnJheVBy
b2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAogICAgIGJ5dGVj
b2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKKyAgICBieXRlY29kZS9DYWxsRWRnZS5j
cHAKKyAgICBieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmNwcAogICAgIGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAorICAgIGJ5dGVjb2Rl
L0NhbGxWYXJpYW50LmNwcAogICAgIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHAKICAgICBieXRlY29k
ZS9Db2RlQmxvY2tIYXNoLmNwcAogICAgIGJ5dGVjb2RlL0NvZGVCbG9ja0pldHRpc29uaW5nV2F0
Y2hwb2ludC5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagko
cmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzE0LDgg
KzMxNCwxMSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlQcm9m
aWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEJ5dGVjb2Rl
QmFzaWNCbG9jay5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cYnl0ZWNvZGVcQ2FsbEVkZ2UuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
Ynl0ZWNvZGVcQ2FsbEVkZ2VQcm9maWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXGJ5dGVjb2RlXENhbGxMaW5rSW5mby5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxieXRlY29kZVxDYWxsTGlua1N0YXR1cy5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxieXRlY29kZVxDYWxsVmFyaWFudC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxieXRlY29kZVxDb2RlQmxvY2suY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cYnl0ZWNvZGVcQ29kZUJsb2NrSGFzaC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxieXRlY29kZVxDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwIiAvPgpA
QCAtOTA1LDkgKzkwOCwxMyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVc
Qnl0ZWNvZGVCYXNpY0Jsb2NrLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRl
Y29kZVxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGJ5dGVjb2RlXEJ5dGVjb2RlVXNlRGVmLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxieXRlY29kZVxDYWxsRWRnZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cYnl0ZWNvZGVcQ2FsbEVkZ2VQcm9maWxlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxieXRlY29kZVxDYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDYWxsTGlua0luZm8uaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENhbGxMaW5rU3RhdHVzLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5o
IiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ2FsbFZhcmlhbnQuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENvZGVCbG9jay5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ29kZUJsb2NrSGFzaC5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ29kZUJsb2NrSmV0dGlzb25pbmdX
YXRjaHBvaW50LmgiIC8+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI2Myw2ICsyNjMsMTMgQEAK
IAkJMEYzQjNBMjgxNTQ0Qzk5NzAwM0VEMEZGIC8qIERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0IzQTI1
MTU0NEM5OTEwMDNFRDBGRiAvKiBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYzQjNBMkIxNTQ3NTAw
MDAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0IzQTI5MTU0NzRGRjQwMDNFRDBGRiAvKiBERkdWYWxpZGF0
ZS5jcHAgKi87IH07CiAJCTBGM0IzQTJDMTU0NzUwMDIwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjNBMkEx
NTQ3NEZGNDAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYzQjdFMjYxOUExMUI4MDAwRDlCQzU2IC8qIENh
bGxFZGdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjNCN0UyMDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjNCN0UyNzE5QTExQjgwMDBEOUJDNTYg
LyogQ2FsbEVkZ2VQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGM0I3RTIxMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUu
Y3BwICovOyB9OworCQkwRjNCN0UyODE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCN0Uy
MjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYzQjdFMjkxOUExMUI4MDAwRDlCQzU2
IC8qIENhbGxFZGdlUHJvZmlsZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTIzMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVBy
b2ZpbGVJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEYzQjdFMkExOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTI0MTlBMTFC
ODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5jcHAgKi87IH07CisJCTBGM0I3RTJCMTlBMTFCODAw
MEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYzQjdFMjUxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYzQjdF
MkQxOUExMkFBRTAwRDlCQzU2IC8qIENhbGxFZGdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTJDMTlBMTJBQUUwMEQ5QkM1NiAvKiBDYWxs
RWRnZS5jcHAgKi87IH07CiAJCTBGM0QwQkJDMTk0QTQxNDMwMEZDOUNGOSAvKiBDb25zdGFudFN0
cnVjdHVyZUNoZWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGM0QwQkJBMTk0QTQxNDMwMEZDOUNGOSAvKiBDb25zdGFudFN0cnVjdHVyZUNoZWNr
LmNwcCAqLzsgfTsKIAkJMEYzRDBCQkQxOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0
dXJlQ2hlY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGM0QwQkJCMTk0QTQxNDMwMEZDOUNGOSAvKiBDb25zdGFudFN0cnVjdHVyZUNoZWNrLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0MjZBNDgx
NDYwQ0JCMzAwMTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDI2QTQ1MTQ2MENCQUIwMDEzMUY4RiAvKiBWYWx1
ZVJlY292ZXJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTIxNjcsNiArMjE3NCwxMyBAQAogCQkwRjNCM0EyNTE1NDRDOTkxMDAzRUQwRkYgLyog
REZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmg7IHBhdGggPSBkZmcvREZHQ0ZHU2ltcGxp
ZmljYXRpb25QaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNCM0EyOTE1
NDc0RkY0MDAzRUQwRkYgLyogREZHVmFsaWRhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gREZHVmFsaWRhdGUuY3BwOyBwYXRoID0gZGZnL0RGR1ZhbGlkYXRlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQjNBMkExNTQ3NEZGNDAwM0VEMEZG
IC8qIERGR1ZhbGlkYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1Zh
bGlkYXRlLmg7IHBhdGggPSBkZmcvREZHVmFsaWRhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYzQjdFMjAxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxFZGdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGM0I3RTIxMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbEVkZ2VQcm9maWxlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzQjdFMjIxOUExMUI4MDAwRDlCQzU2
IC8qIENhbGxFZGdlUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YWxsRWRnZVByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzQjdFMjMx
OUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyNDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlh
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbFZhcmlhbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyNTE5QTExQjgwMDBEOUJD
NTYgLyogQ2FsbFZhcmlhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2Fs
bFZhcmlhbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzQjdFMkMxOUExMkFB
RTAwRDlCQzU2IC8qIENhbGxFZGdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENhbGxFZGdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzRDBC
QkExOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0QwQkJCMTk0QTQxNDMwMEZDOUNGOSAv
KiBDb25zdGFudFN0cnVjdHVyZUNoZWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENvbnN0YW50U3RydWN0dXJlQ2hlY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY0MjZBNDUxNDYwQ0JBQjAwMTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFsdWVSZWNvdmVyeS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNTE0NCwxMSArNTE1OCwxOCBAQAogCQkJCTBGNjY2RUJFMTgzNTY2Rjkw
MEQwMTdGMSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggKi8sCiAJCQkJMEY4
ODVFMTAxODQ5QTNCRTAwRjFFM0ZBIC8qIEJ5dGVjb2RlVXNlRGVmLmggKi8sCiAJCQkJMEY4MDIz
RTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oICovLAorCQkJCTBGM0I3RTJDMTlBMTJB
QUUwMEQ5QkM1NiAvKiBDYWxsRWRnZS5jcHAgKi8sCisJCQkJMEYzQjdFMjAxOUExMUI4MDAwRDlC
QzU2IC8qIENhbGxFZGdlLmggKi8sCisJCQkJMEYzQjdFMjExOUExMUI4MDAwRDlCQzU2IC8qIENh
bGxFZGdlUHJvZmlsZS5jcHAgKi8sCisJCQkJMEYzQjdFMjIxOUExMUI4MDAwRDlCQzU2IC8qIENh
bGxFZGdlUHJvZmlsZS5oICovLAorCQkJCTBGM0I3RTIzMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxs
RWRnZVByb2ZpbGVJbmxpbmVzLmggKi8sCiAJCQkJMEYwQjgzQUUxNEJDRjcxNDAwODg1QjRGIC8q
IENhbGxMaW5rSW5mby5jcHAgKi8sCiAJCQkJMEYwQjgzQUYxNEJDRjcxNDAwODg1QjRGIC8qIENh
bGxMaW5rSW5mby5oICovLAogCQkJCTBGOTMzMjkzMTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlu
a1N0YXR1cy5jcHAgKi8sCiAJCQkJMEY5MzMyOTQxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5r
U3RhdHVzLmggKi8sCiAJCQkJMEYwQjgzQjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5P
ZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi8sCisJCQkJMEYzQjdFMjQxOUExMUI4MDAwRDlCQzU2
IC8qIENhbGxWYXJpYW50LmNwcCAqLywKKwkJCQkwRjNCN0UyNTE5QTExQjgwMDBEOUJDNTYgLyog
Q2FsbFZhcmlhbnQuaCAqLywKIAkJCQk5NjlBMDc5MDBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJs
b2NrLmNwcCAqLywKIAkJCQk5NjlBMDc5MTBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmgg
Ki8sCiAJCQkJMEY4Rjk0M0QxNjY3NjMyRDAwRDYxOTcxIC8qIENvZGVCbG9ja0hhc2guY3BwICov
LApAQCAtNTg3Nyw2ICs1ODk4LDcgQEAKIAkJCQkwRkZGQzk1QTE0RUY5MEE5MDBDNzI1MzIgLyog
REZHQ1NFUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkZDNzczMTZFMTJGNzQwMDM4RDk3
NiAvKiBERkdEQ0VQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4RjJCOUExNzJGMDUwMTAw
N0RCREE1IC8qIERGR0Rlc2lyZWRJZGVudGlmaWVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYz
QjdFMjgxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzJDMEY3Q0UxN0JCRkM1QjAwNDY0RkU0IC8qIERGR0Rlc2lyZWRUcmFuc2l0aW9ucy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFODUzNEMxNzIzQ0RBNTAwQjYxOEY1IC8qIERGR0Rlc2ly
ZWRXYXRjaHBvaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzI5ODFGRDkxN0JBRUU0QjAwQTNC
Qzk4IC8qIERGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC02MTQ1
LDYgKzYxNjcsNyBAQAogCQkJCTBGNzY2RDMxMTVBQTgxMTIwMDhGMzYzRSAvKiBKSVRTdHViUm91
dGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NjZEMkMxNUE4Q0MzQTAwOEYzNjNFIC8qIEpJ
VFN0dWJSb3V0aW5lU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEM1MjQyQjBGNTM1NUU5MDBC
QTNEMDQgLyogSklUU3R1YnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGM0I3RTJCMTlBMTFCODAw
MEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVGNjgzNUUxNzQz
NDNDQzAwQTMyRTI1IC8qIEpJVFN0dWJzQVJNLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUY2ODM1
RjE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1YnNBUk12Ny5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RkVGNjgzNjExNzQzNDNDQzAwQTMyRTI1IC8qIEpJVFN0dWJzWDg2LmggaW4gSGVhZGVycyAqLywK
QEAgLTYxNTYsNiArNjE3OSw3IEBACiAJCQkJQTc2RjU0QTMxM0IyOEFBQjAwRUYyQkNFIC8qIEpJ
VFdyaXRlQmFycmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTYwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTQWN0aXZhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQwNDgwMTMxMDIxQTFE
OTAwOEU3RjAxIC8qIEpTQVBJVmFsdWVXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjNC
N0UyOTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQzJDRjM5QzIxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVj
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc2MTQwRDIxODI5ODJDQjAwNzUwNjI0IC8qIEpTQXJn
dW1lbnRzSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE3MEUxNkY1Q0QwMEIz
NDQ2MCAvKiBKU0FycmF5LmggaW4gSGVhZGVycyAqLywKQEAgLTY0NzEsNiArNjQ5NSw3IEBACiAJ
CQkJRTQ5REMxNkMxMkVGMjk0RTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUU0OURDMTZEMTJFRjI5NTMwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRl
ckNhY2hlSXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUUxNUVEOEU0NjAwRjE2N0Iy
IC8qIFNwYXJzZUFycmF5VmFsdWVNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGM0I3RTI2MTlB
MTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTczODY1NTQx
MTg2OTdCNDAwNTQwMjc5IC8qIFNwZWNpYWxpemVkVGh1bmtKSVQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNTU0MUIyMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZEODJFNTQxNDFEQUVFRTAwMTc5Qzk0IC8qIFNwZWN1bGF0ZWRUeXBlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTczMjMsNiArNzM0OCw3IEBACiAJCQkJMEYyMzVCRDUxNzE3OEUx
QzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudEZvck9wZXJhbmQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEYyMzVCRDgxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRUaHVua0dlbmVyYXRvci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJEQTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhp
dFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGM0I3RTI3MTlBMTFCODAwMEQ5QkM1NiAv
KiBDYWxsRWRnZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdGMjk5NkIxN0EwQkI2
NzAwMTA0MTdBIC8qIEZUTEZhaWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEOEEzMTkxN0Q1
MUYyMjAwQ0EyQzQwIC8qIEZUTEZvck9TUkVudHJ5SklUQ29kZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjI1RjFBRjE4MTYzNUYzMDA1MjJGMzkgLyogRlRMSW5saW5lQ2FjaGVTaXplLmNwcCBp
biBTb3VyY2VzICovLApAQCAtNzUwOSw2ICs3NTM1LDcgQEAKIAkJCQkwRjQ2ODBEMjE0QkJEMTY1
MDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzhCMDExMTdD
RjA3ODAwMEIxNDREMyAvKiBMTEludEVudHJ5cG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEY0NjgwQTgxNEJBN0ZBQjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRjNCN0UyRDE5QTEyQUFFMDBEOUJDNTYgLyogQ2FsbEVkZ2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50U2xvd1BhdGhz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMEI4MzlDMTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTElu
dFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkNFRkFDRDE4MDVFNzU1MDA0NzJDRTQg
LyogTExWTUFQSS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc2NzAsNiArNzY5Nyw3IEBACiAJCQkJ
MTRFODRGQTAxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkE0RUM5MEIxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkM4MTUwQjE0MDQzQzBFMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVy
U3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjNCN0UyQTE5QTExQjgwMDBEOUJDNTYg
LyogQ2FsbFZhcmlhbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdFNUFCM0ExNzk5RTRCMjAw
RDI4MzNEIC8qIFg4NkRpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjNDNkQ5
QzE1MjExMTFBMDA1ODVFNEUgLyogWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODY3MDRCODQxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJJbnRlcnByZXRlci5jcHAg
aW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
RWRnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxFZGdlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsRWRnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQ2FsbEVkZ2UuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgQ2FsbEVk
Z2U6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoIjwiLCBt
X2NhbGxlZSwgIiwgY291bnQ6ICIsIG1fY291bnQsICI+Iik7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDYWxsRWRnZV9oCisjZGVmaW5lIENhbGxF
ZGdlX2gKKworI2luY2x1ZGUgIkNhbGxWYXJpYW50LmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0
eXBlZGVmIHVpbnQxNl90IENhbGxFZGdlQ291bnRUeXBlOworCitjbGFzcyBDYWxsRWRnZSB7Citw
dWJsaWM6CisgICAgQ2FsbEVkZ2UoKTsKKyAgICBDYWxsRWRnZShDYWxsVmFyaWFudCwgQ2FsbEVk
Z2VDb3VudFR5cGUpOworICAgIAorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4g
IW1fY2FsbGVlOyB9CisgICAgCisgICAgQ2FsbFZhcmlhbnQgY2FsbGVlKCkgY29uc3QgeyByZXR1
cm4gbV9jYWxsZWU7IH0KKyAgICBDYWxsRWRnZUNvdW50VHlwZSBjb3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fY291bnQ7IH0KKyAgICAKKyAgICBDYWxsRWRnZSBkZXNwZWNpZmllZENsb3N1cmUoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIENhbGxFZGdlKG1fY2FsbGVlLmRlc3BlY2lmaWVk
Q2xvc3VyZSgpLCBtX2NvdW50KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJikgY29uc3Q7CisgICAgCitwdWJsaWM6CisgICAgQ2FsbFZhcmlhbnQgbV9jYWxsZWU7Cisg
ICAgQ2FsbEVkZ2VDb3VudFR5cGUgbV9jb3VudDsKK307CisKK2lubGluZSBDYWxsRWRnZTo6Q2Fs
bEVkZ2UoQ2FsbFZhcmlhbnQgY2FsbGVlLCBDYWxsRWRnZUNvdW50VHlwZSBjb3VudCkKKyAgICA6
IG1fY2FsbGVlKGNhbGxlZSkKKyAgICAsIG1fY291bnQoY291bnQpCit7Cit9CisKK2lubGluZSBD
YWxsRWRnZTo6Q2FsbEVkZ2UoKQorICAgIDogQ2FsbEVkZ2UoQ2FsbFZhcmlhbnQoKSwgMCkKK3sK
K30KKwordHlwZWRlZiBWZWN0b3I8Q2FsbEVkZ2UsIDE+IENhbGxFZGdlTGlzdDsKKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDYWxsRWRnZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkNhbGxFZGdlUHJvZmlsZS5oIgorCisjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCisjaW5jbHVk
ZSAiQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIK
KyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitDYWxsRWRnZUxp
c3QgQ2FsbEVkZ2VQcm9maWxlOjpjYWxsRWRnZXMoKSBjb25zdAoreworICAgIENvbmN1cnJlbnRK
SVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCisgICAgQ2FsbEVkZ2VMaXN0IHJlc3VsdDsK
KyAgICAKKyAgICBDYWxsVmFyaWFudCBwcmltYXJ5Q2FsbGVlID0gbV9wcmltYXJ5Q2FsbGVlOwor
ICAgIGZsb2F0IG51bUNhbGxzVG9QcmltYXJ5ID0gbV9udW1DYWxsc1RvUHJpbWFyeTsKKyAgICAv
LyBEZWZlbmQgYWdhaW5zdCByYWNlcy4gVGhlc2UgZmllbGRzIGFyZSBtb2RpZmllZCBieSB0aGUg
bG9nIHByb2Nlc3NvciB3aXRob3V0IGxvY2tpbmcuCisgICAgaWYgKCEhcHJpbWFyeUNhbGxlZSAm
JiBudW1DYWxsc1RvUHJpbWFyeSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZChDYWxsRWRnZShwcmlt
YXJ5Q2FsbGVlLCBudW1DYWxsc1RvUHJpbWFyeSkpOworICAgIAorICAgIGlmIChtX290aGVyQ2Fs
bGVlcykgeworICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBpZiB0aGUgcHJpbWFyeSB0aHJlYWQg
aGFkIGp1c3QgY3JlYXRlZCBhIG1fb3RoZXJDYWxsZXMgd2hpbGUgbG9nCisgICAgICAgIC8vIHBy
b2Nlc3NpbmcsIHdlIHNlZSBhIGNvbnNpc3RlbnRseSBjcmVhdGVkIG9uZS4gVGhlIGxvY2sgYmVp
bmcgaGVsZCBpcyBpbnN1ZmZpY2llbnQgZm9yCisgICAgICAgIC8vIHRoaXMsIHNpbmNlIHRoZSBs
b2cgcHJvY2Vzc29yIHdpbGwgb25seSBncmFiIHRoZSBsb2NrIHdoZW4gbWVyZ2luZyB0aGUgc2Vj
b25kYXJ5CisgICAgICAgIC8vIHNwZWN0cnVtIGludG8gdGhlIHByaW1hcnkgb25lIGJ1dCBtYXkg
c3RpbGwgY3JlYXRlIHRoZSBkYXRhIHN0cnVjdHVyZSB3aXRob3V0IGhvbGRpbmcKKyAgICAgICAg
Ly8gbG9ja3MuCisgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOworICAgICAgICBmb3IgKENh
bGxFZGdlIGVudHJ5IDogbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkKSB7CisgICAgICAgICAg
ICAvLyBEZWZlbmQgYWdhaW5zdCB0aGUgcG9zc2liaWxpdHkgdGhhdCB0aGUgcHJpbWFyeSBkdXBs
aWNhdGVzIGFuIGVudHJ5IGluIHRoZSBzZWNvbmRhcnkKKyAgICAgICAgICAgIC8vIHNwZWN0cnVt
LiBUaGF0IGNhbiBoYXBwZW4gd2hlbiB0aGUgR0MgcmVtb3ZlcyB0aGUgcHJpbWFyeS4gV2UgY291
bGQgaGF2ZSB0aGUgR0MgZml4CisgICAgICAgICAgICAvLyB0aGUgc2l0dWF0aW9uIGJ5IGNoYW5n
aW5nIHRoZSBwcmltYXJ5IHRvIGJlIHNvbWV0aGluZyBmcm9tIHRoZSBzZWNvbmRhcnkgc3BlY3Ry
dW0sCisgICAgICAgICAgICAvLyBidXQgdGhpcyBmaXggc2VlbXMgc2ltcGxlciB0byBpbXBsZW1l
bnQgYW5kIGFsc28gY2hlYXBlci4KKyAgICAgICAgICAgIGlmIChlbnRyeS5jYWxsZWUoKSA9PSBy
ZXN1bHRbMF0uY2FsbGVlKCkpIHsKKyAgICAgICAgICAgICAgICByZXN1bHRbMF0gPSBDYWxsRWRn
ZShyZXN1bHRbMF0uY2FsbGVlKCksIGVudHJ5LmNvdW50KCkgKyByZXN1bHRbMF0uY291bnQoKSk7
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZW50cnkpOworICAgICAgICB9CisgICAgfQorICAg
IAorICAgIHN0ZDo6c29ydChyZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpLCBbXSAoY29uc3Qg
Q2FsbEVkZ2UmIGEsIGNvbnN0IENhbGxFZGdlJiBiKSAtPiBib29sIHsKKyAgICAgICAgICAgIHJl
dHVybiBhLmNvdW50KCkgPiBiLmNvdW50KCk7CisgICAgICAgIH0pOworICAgIAorICAgIGlmIChy
ZXN1bHQuc2l6ZSgpID49IDIpCisgICAgICAgIEFTU0VSVChyZXN1bHRbMF0uY291bnQoKSA+PSBy
ZXN1bHQubGFzdCgpLmNvdW50KCkpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0Nh
bGxFZGdlQ291bnRUeXBlIENhbGxFZGdlUHJvZmlsZTo6bnVtQ2FsbHNUb0tub3duQ2VsbHMoKSBj
b25zdAoreworICAgIENhbGxFZGdlQ291bnRUeXBlIHJlc3VsdCA9IDA7CisgICAgZm9yIChDYWxs
RWRnZSBlZGdlIDogY2FsbEVkZ2VzKCkpCisgICAgICAgIHJlc3VsdCArPSBlZGdlLmNvdW50KCk7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGJvb2wgd29ydGhEZXNwZWNpZnlpbmco
Y29uc3QgQ2FsbFZhcmlhbnQmIHZhcmlhbnQpCit7CisgICAgcmV0dXJuICFIZWFwOjppc01hcmtl
ZCh2YXJpYW50LnJhd0NhbGxlZUNlbGwoKSkKKyAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQodmFy
aWFudC5kZXNwZWNpZmllZENsb3N1cmUoKS5yYXdDYWxsZWVDZWxsKCkpOworfQorCitib29sIENh
bGxFZGdlUHJvZmlsZTo6d29ydGhEZXNwZWNpZnlpbmcoKQoreworICAgIGlmIChtX2Nsb3N1cmVz
QXJlRGVzcGVjaWZpZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoISFt
X3ByaW1hcnlDYWxsZWUgJiYgIUpTQzo6d29ydGhEZXNwZWNpZnlpbmcobV9wcmltYXJ5Q2FsbGVl
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmIChtX290aGVyQ2FsbGVlcykg
eworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQu
c2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBpZiAoIUpTQzo6d29ydGhEZXNwZWNpZnlpbmco
bV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNhbGxlZSgpKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgQ2FsbEVkZ2VQcm9maWxlOjp2aXNpdFdlYWsoKQoreworICAgIGlmICghbV9w
cmltYXJ5Q2FsbGVlICYmICFtX290aGVyQ2FsbGVlcykKKyAgICAgICAgcmV0dXJuOworICAgIAor
ICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCisgICAgLy8gU2Vl
IGlmIGFueXRoaW5nIGlzIGRlYWQgYW5kIGlmIHRoYXQgY2FuIGJlIHJlY3RpZmllZCBieSBkZXNw
ZWNpZnlpbmcuCisgICAgaWYgKHdvcnRoRGVzcGVjaWZ5aW5nKCkpIHsKKyAgICAgICAgQ2FsbFNw
ZWN0cnVtIG5ld1NwZWN0cnVtOworICAgICAgICAKKyAgICAgICAgaWYgKCEhbV9wcmltYXJ5Q2Fs
bGVlKQorICAgICAgICAgICAgbmV3U3BlY3RydW0uYWRkKG1fcHJpbWFyeUNhbGxlZS5kZXNwZWNp
ZmllZENsb3N1cmUoKSwgbV9udW1DYWxsc1RvUHJpbWFyeSk7CisgICAgICAgIAorICAgICAgICBp
ZiAobV9vdGhlckNhbGxlZXMpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fb3Ro
ZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICBu
ZXdTcGVjdHJ1bS5hZGQoCisgICAgICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3By
b2Nlc3NlZFtpXS5jYWxsZWUoKS5kZXNwZWNpZmllZENsb3N1cmUoKSwKKyAgICAgICAgICAgICAg
ICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNvdW50KCkpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBWZWN0b3I8Q2FsbFNwZWN0cnVtOjpL
ZXlBbmRDb3VudD4gbGlzdCA9IG5ld1NwZWN0cnVtLmJ1aWxkTGlzdCgpOworICAgICAgICBBU1NF
UlQobGlzdC5zaXplKCkpOworICAgICAgICBtX3ByaW1hcnlDYWxsZWUgPSBsaXN0Lmxhc3QoKS5r
ZXk7CisgICAgICAgIG1fbnVtQ2FsbHNUb1ByaW1hcnkgPSBsaXN0Lmxhc3QoKS5jb3VudDsKKyAg
ICAgICAgCisgICAgICAgIEFTU0VSVCghIW1fb3RoZXJDYWxsZWVzID09IChsaXN0LnNpemUoKSA+
PSAyKSk7CisgICAgICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICAgICAgbV9vdGhl
ckNhbGxlZXMtPm1fcHJvY2Vzc2VkLmNsZWFyKCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBsaXN0LnNpemUoKSAtIDE7IGktLTspCisgICAgICAgICAgICAgICAgbV9vdGhlckNhbGxl
ZXMtPm1fcHJvY2Vzc2VkLmFwcGVuZChDYWxsRWRnZShsaXN0W2ldLmtleSwgbGlzdFtpXS5jb3Vu
dCkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZp
ZWQgPSB0cnVlOworICAgICAgICAKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBp
ZiAoISFtX3ByaW1hcnlDYWxsZWUgJiYgIUhlYXA6OmlzTWFya2VkKG1fcHJpbWFyeUNhbGxlZS5y
YXdDYWxsZWVDZWxsKCkpKSB7CisgICAgICAgIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxsICs9IG1f
bnVtQ2FsbHNUb1ByaW1hcnk7CisgICAgICAgIAorICAgICAgICBtX3ByaW1hcnlDYWxsZWUgPSBD
YWxsVmFyaWFudCgpOworICAgICAgICBtX251bUNhbGxzVG9QcmltYXJ5ID0gMDsKKyAgICB9Cisg
ICAgCisgICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpKyspIHsKKyAgICAg
ICAgICAgIGlmIChIZWFwOjppc01hcmtlZChtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0u
Y2FsbGVlKCkucmF3Q2FsbGVlQ2VsbCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgbV9udW1DYWxsc1RvVW5rbm93bkNlbGwgKz0gbV9vdGhl
ckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNvdW50KCk7CisgICAgICAgICAgICBtX290aGVyQ2Fs
bGVlcy0+bV9wcm9jZXNzZWRbaS0tXSA9IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5sYXN0
KCk7CisgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQucmVtb3ZlTGFzdCgp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBPbmx5IGV4aXN0cyB3aGlsZSB3ZSBh
cmUgcHJvY2Vzc2luZyB0aGUgbG9nLgorICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9vdGhlckNh
bGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0pOworICAgIH0KK30KKwordm9pZCBDYWxsRWRnZVBy
b2ZpbGU6OmFkZFNsb3coQ2FsbFZhcmlhbnQgY2FsbGVlLCBDYWxsRWRnZVByb2ZpbGVWZWN0b3Im
IG1lcmdlQmFja0xvZykKK3sKKyAgICAvLyBUaGlzIGV4aXN0cyB0byBoYW5kbGUgY2FzZXMgd2hl
cmUgdGhlIHNwZWN0cnVtIHdhc24ndCBjcmVhdGVkIHlldCwgb3Igd2UncmUgc3RvcmluZyB0byBh
CisgICAgLy8gcGFydGljdWxhciBzcGVjdHJ1bSBmb3IgdGhlIGZpcnN0IHRpbWUgZHVyaW5nIGEg
bG9nIHByb2Nlc3NpbmcgaXRlcmF0aW9uLgorICAgIAorICAgIGlmICghbV9vdGhlckNhbGxlZXMp
IHsKKyAgICAgICAgbV9vdGhlckNhbGxlZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlY29uZGFyeT4o
KTsKKyAgICAgICAgLy8gSWYgYSBjb21waWxlciB0aHJlYWQgbm90aWNlcyB0aGUgbV9vdGhlckNh
bGxlZXMgYmVpbmcgbm9uLW51bGwsIHdlIHdhbnQgdG8gbWFrZSBzdXJlCisgICAgICAgIC8vIHRo
YXQgaXQgc2VlcyBhIGZ1bGx5IGNyZWF0ZWQgb25lLgorICAgICAgICBXVEY6OnN0b3JlU3RvcmVG
ZW5jZSgpOworICAgIH0KKyAgICAKKyAgICBpZiAoIW1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFy
eVNwZWN0cnVtKSB7CisgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVt
ID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsU3BlY3RydW0+KCk7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5zaXplKCk7IGktLTspIHsKKyAgICAg
ICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5hZGQoCisgICAgICAg
ICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNhbGxlZSgpLAorICAgICAg
ICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jb3VudCgpKTsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoaXMgaXMgdGhlIGZp
cnN0IHRpbWUgd2UncmUgc2VlaW5nIHRoaXMgcHJvZmlsZSBkdXJpbmcgdGhpcyBsb2cKKyAgICAg
ICAgLy8gcHJvY2Vzc2luZyBpdGVyYXRpb24uCisgICAgICAgIG1lcmdlQmFja0xvZy5hcHBlbmQo
dGhpcyk7CisgICAgfQorICAgIAorICAgIG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0
cnVtLT5hZGQoY2FsbGVlKTsKK30KKwordm9pZCBDYWxsRWRnZVByb2ZpbGU6Om1lcmdlQmFjaygp
Cit7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAKKyAgICBB
U1NFUlQobV9vdGhlckNhbGxlZXMpOworICAgIEFTU0VSVChtX290aGVyQ2FsbGVlcy0+bV90ZW1w
b3JhcnlTcGVjdHJ1bSk7CisgICAgCisgICAgaWYgKCEhbV9wcmltYXJ5Q2FsbGVlKQorICAgICAg
ICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+YWRkKG1fcHJpbWFyeUNhbGxl
ZSwgbV9udW1DYWxsc1RvUHJpbWFyeSk7CisgICAgCisgICAgaWYgKCFtX2Nsb3N1cmVzQXJlRGVz
cGVjaWZpZWQpIHsKKyAgICAgICAgQ2FsbFNwZWN0cnVtIG5ld1NwZWN0cnVtOworICAgICAgICBm
b3IgKGF1dG8gZW50cnkgOiAqbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0pCisg
ICAgICAgICAgICBuZXdTcGVjdHJ1bS5hZGQoZW50cnkua2V5LmRlc3BlY2lmaWVkQ2xvc3VyZSgp
LCBlbnRyeS52YWx1ZSk7CisgICAgICAgIAorICAgICAgICBpZiAobmV3U3BlY3RydW0uc2l6ZSgp
IDwgbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0tPnNpemUoKSkgeworICAgICAg
ICAgICAgKm1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtID0gbmV3U3BlY3RydW07
CisgICAgICAgICAgICBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQgPSB0cnVlOworICAgICAgICB9
CisgICAgfQorICAgIAorICAgIFZlY3RvcjxDYWxsU3BlY3RydW06OktleUFuZENvdW50PiBsaXN0
ID0gbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0tPmJ1aWxkTGlzdCgpOworICAg
IG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtID0gbnVsbHB0cjsKKyAgICAKKyAg
ICBtX3ByaW1hcnlDYWxsZWUgPSBsaXN0Lmxhc3QoKS5rZXk7CisgICAgbV9udW1DYWxsc1RvUHJp
bWFyeSA9IGxpc3QubGFzdCgpLmNvdW50OworICAgIGxpc3QucmVtb3ZlTGFzdCgpOworICAgIAor
ICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5jbGVhcigpOworICAgIGZvciAodW5zaWdu
ZWQgY291bnQgPSBtYXhLbm93bkNhbGxlZXM7IGNvdW50LS0gJiYgIWxpc3QuaXNFbXB0eSgpOykg
eworICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuYXBwZW5kKENhbGxFZGdlKGxp
c3QubGFzdCgpLmtleSwgbGlzdC5sYXN0KCkuY291bnQpKTsKKyAgICAgICAgbGlzdC5yZW1vdmVM
YXN0KCk7CisgICAgfQorICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IGxpc3Quc2l6ZSgpOyBp
LS07KQorICAgICAgICBtX251bUNhbGxzVG9Vbmtub3duQ2VsbCArPSBsaXN0W2ldLmNvdW50Owor
fQorCit2b2lkIENhbGxFZGdlUHJvZmlsZTo6ZmFkZUJ5SGFsZigpCit7CisgICAgbV9udW1DYWxs
c1RvUHJpbWFyeSA+Pj0gMTsKKyAgICBtX251bUNhbGxzVG9Ob3RDZWxsID4+PSAxOworICAgIG1f
bnVtQ2FsbHNUb1Vua25vd25DZWxsID4+PSAxOworICAgIG1fdG90YWxDb3VudCA+Pj0gMTsKKyAg
ICAKKyAgICBpZiAobV9vdGhlckNhbGxlZXMpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
bV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAg
bV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldID0gQ2FsbEVkZ2UoCisgICAgICAgICAgICAg
ICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNhbGxlZSgpLAorICAgICAgICAgICAg
ICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jb3VudCgpID4+IDEpOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBpZiAobV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3Bl
Y3RydW0pIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBlbnRyeSA6ICptX290aGVyQ2FsbGVlcy0+
bV90ZW1wb3JhcnlTcGVjdHJ1bSkKKyAgICAgICAgICAgICAgICBlbnRyeS52YWx1ZSA+Pj0gMTsK
KyAgICAgICAgfQorICAgIH0KK30KKworQ2FsbEVkZ2VMb2c6OkNhbGxFZGdlTG9nKCkKKyAgICA6
IG1fc2NhbGVkTG9nSW5kZXgobG9nU2l6ZSAqIHNpemVvZihFbnRyeSkpCit7CisgICAgQVNTRVJU
KCEobV9zY2FsZWRMb2dJbmRleCAlIHNpemVvZihFbnRyeSkpKTsKK30KKworQ2FsbEVkZ2VMb2c6
On5DYWxsRWRnZUxvZygpIHsgfQorCitib29sIENhbGxFZGdlTG9nOjppc0VuYWJsZWQoKQorewor
ICAgIHJldHVybiBPcHRpb25zOjplbmFibGVDYWxsRWRnZVByb2ZpbGluZygpICYmIE9wdGlvbnM6
OnVzZUZUTEpJVCgpOworfQorCisjaWYgRU5BQkxFKEpJVCkKKworZXh0ZXJuICJDIiBKSVRfT1BF
UkFUSU9OIHZvaWQgb3BlcmF0aW9uUHJvY2Vzc0NhbGxFZGdlTG9nKENhbGxFZGdlTG9nKikgV1RG
X0lOVEVSTkFMOworZXh0ZXJuICJDIiBKSVRfT1BFUkFUSU9OIHZvaWQgb3BlcmF0aW9uUHJvY2Vz
c0NhbGxFZGdlTG9nKENhbGxFZGdlTG9nKiBsb2cpCit7CisgICAgbG9nLT5wcm9jZXNzTG9nKCk7
Cit9CisKK3ZvaWQgQ2FsbEVkZ2VMb2c6OmVtaXRMb2dDb2RlKENDYWxsSGVscGVycyYgaml0LCBD
YWxsRWRnZVByb2ZpbGUmIHByb2ZpbGUsIEpTVmFsdWVSZWdzIGNhbGxlZVJlZ3MpCit7CisgICAg
Y29uc3QgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHMgPSAxOworICAgIAorICAgIEdQUlJlZyBz
Y3JhdGNoR1BSOworICAgIGlmICghY2FsbGVlUmVncy51c2VzKEdQUkluZm86OnJlZ1QwKSkKKyAg
ICAgICAgc2NyYXRjaEdQUiA9IEdQUkluZm86OnJlZ1QwOworICAgIGVsc2UgaWYgKCFjYWxsZWVS
ZWdzLnVzZXMoR1BSSW5mbzo6cmVnVDEpKQorICAgICAgICBzY3JhdGNoR1BSID0gR1BSSW5mbzo6
cmVnVDE7CisgICAgZWxzZQorICAgICAgICBzY3JhdGNoR1BSID0gR1BSSW5mbzo6cmVnVDI7Cisg
ICAgCisgICAgaml0LmxvYWQzMigmbV9zY2FsZWRMb2dJbmRleCwgc2NyYXRjaEdQUik7CisgICAg
CisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG9rID0gaml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBl
cnM6Ok5vblplcm8sIHNjcmF0Y2hHUFIpOworICAgIAorICAgIEFTU0VSVF9VTlVTRUQobnVtYmVy
T2ZBcmd1bWVudHMsIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkgPj0gMSArIG51bWJlck9mQXJn
dW1lbnRzKTsKKyAgICAKKyAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIpOworICAgIAorICAgIGppdC5zdG9yZVZhbHVlKGNhbGxlZVJlZ3MsIENDYWxsSGVscGVyczo6
QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzaXplb2YoSlNWYWx1
ZSkpKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHMoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KHRoaXMpKTsKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYml0d2lz
ZV9jYXN0PHZvaWQqPihvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2cpKSwgR1BSSW5mbzo6bm9u
QXJnR1BSMCk7CisgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgaml0Lmxv
YWRWYWx1ZShDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJS
ZWdpc3Rlciwgc2l6ZW9mKEpTVmFsdWUpKSwgY2FsbGVlUmVncyk7CisgICAgCisgICAgaml0LmFk
ZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzdGFja0FsaWdubWVudEJ5dGVzKCkpLCBD
Q2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAKKyAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihsb2dTaXplICogc2l6ZW9mKEVudHJ5KSksIHNjcmF0
Y2hHUFIpOworICAgIG9rLmxpbmsoJmppdCk7CisKKyAgICBqaXQuc3ViMzIoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoc2l6ZW9mKEVudHJ5KSksIHNjcmF0Y2hHUFIpOworICAgIGppdC5zdG9y
ZTMyKHNjcmF0Y2hHUFIsICZtX3NjYWxlZExvZ0luZGV4KTsKKyAgICBqaXQuYWRkUHRyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihtX2xvZyksIHNjcmF0Y2hHUFIpOworICAgIGppdC5zdG9y
ZVZhbHVlKGNhbGxlZVJlZ3MsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpF
Q1RfT0ZGU0VUT0YoRW50cnksIG1fdmFsdWUpKSk7CisgICAgaml0LnN0b3JlUHRyKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cigmcHJvZmlsZSksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3Jh
dGNoR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW50cnksIG1fcHJvZmlsZSkpKTsKK30KKwordm9pZCBD
YWxsRWRnZUxvZzo6ZW1pdExvZ0NvZGUoCisgICAgQ0NhbGxIZWxwZXJzJiBqaXQsIE93blB0cjxD
YWxsRWRnZVByb2ZpbGU+JiBwcm9maWxlUG9pbnRlciwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncykK
K3sKKyAgICBpZiAoIWlzRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgcHJv
ZmlsZVBvaW50ZXIuY3JlYXRlVHJhbnNhY3Rpb25hbGx5KCk7CisgICAgZW1pdExvZ0NvZGUoaml0
LCAqcHJvZmlsZVBvaW50ZXIsIGNhbGxlZVJlZ3MpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKEpJ
VCkKKwordm9pZCBDYWxsRWRnZUxvZzo6cHJvY2Vzc0xvZygpCit7CisgICAgQVNTRVJUKCEobV9z
Y2FsZWRMb2dJbmRleCAlIHNpemVvZihFbnRyeSkpKTsKKyAgICAKKyAgICBpZiAoT3B0aW9uczo6
Y2FsbEVkZ2VQcm9maWxlUmVhbGx5UHJvY2Vzc2VzTG9nKCkpIHsKKyAgICAgICAgQ2FsbEVkZ2VQ
cm9maWxlVmVjdG9yIG1lcmdlQmFja0xvZzsKKyAgICAgICAgCisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IG1fc2NhbGVkTG9nSW5kZXggLyBzaXplb2YoRW50cnkpOyBpIDwgbG9nU2l6ZTsgKytp
KQorICAgICAgICAgICAgbV9sb2dbaV0ubV9wcm9maWxlLT5hZGQobV9sb2dbaV0ubV92YWx1ZSwg
bWVyZ2VCYWNrTG9nKTsKKyAgICAgICAgCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1lcmdl
QmFja0xvZy5zaXplKCk7IGktLTspCisgICAgICAgICAgICBtZXJnZUJhY2tMb2dbaV0tPm1lcmdl
QmFjaygpOworICAgIH0KKyAgICAKKyAgICBtX3NjYWxlZExvZ0luZGV4ID0gbG9nU2l6ZSAqIHNp
emVvZihFbnRyeSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ2FsbEVkZ2VQcm9maWxlX2gKKyNkZWZpbmUg
Q2FsbEVkZ2VQcm9maWxlX2gKKworI2luY2x1ZGUgIkNhbGxFZGdlLmgiCisjaW5jbHVkZSAiQ2Fs
bFZhcmlhbnQuaCIKKyNpbmNsdWRlICJDb25jdXJyZW50SklUTG9jay5oIgorI2luY2x1ZGUgIkpT
Q2VsbC5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIENDYWxsSGVscGVyczsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKworY2xhc3Mg
Q2FsbEVkZ2VMb2c7CitjbGFzcyBDYWxsRWRnZVByb2ZpbGU7Cit0eXBlZGVmIFZlY3RvcjxDYWxs
RWRnZVByb2ZpbGUqLCAxMD4gQ2FsbEVkZ2VQcm9maWxlVmVjdG9yOworCitjbGFzcyBDYWxsRWRn
ZVByb2ZpbGUgeworcHVibGljOgorICAgIENhbGxFZGdlUHJvZmlsZSgpOworICAgIAorICAgIENh
bGxFZGdlQ291bnRUeXBlIG51bUNhbGxzVG9Ob3RDZWxsKCkgY29uc3QgeyByZXR1cm4gbV9udW1D
YWxsc1RvTm90Q2VsbDsgfQorICAgIENhbGxFZGdlQ291bnRUeXBlIG51bUNhbGxzVG9Vbmtub3du
Q2VsbCgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxsOyB9CisgICAgQ2Fs
bEVkZ2VDb3VudFR5cGUgbnVtQ2FsbHNUb0tub3duQ2VsbHMoKSBjb25zdDsKKyAgICAKKyAgICBD
YWxsRWRnZUNvdW50VHlwZSB0b3RhbENhbGxzKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbENvdW50
OyB9CisgICAgCisgICAgLy8gQ2FsbCB3aGlsZSBob2xkaW5nIHRoZSBvd25pbmcgQ29kZUJsb2Nr
J3MgbG9jay4KKyAgICBDYWxsRWRnZUxpc3QgY2FsbEVkZ2VzKCkgY29uc3Q7CisgICAgCisgICAg
dm9pZCB2aXNpdFdlYWsoKTsKKyAgICAKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIENhbGxF
ZGdlTG9nOworICAgIAorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhLbm93bkNhbGxlZXMg
PSA1OworICAgIAorICAgIHZvaWQgYWRkKEpTVmFsdWUsIENhbGxFZGdlUHJvZmlsZVZlY3RvciYg
bWVyZ2VCYWNrTG9nKTsKKyAgICAKKyAgICBib29sIHdvcnRoRGVzcGVjaWZ5aW5nKCk7CisgICAg
dm9pZCBhZGRTbG93KENhbGxWYXJpYW50LCBDYWxsRWRnZVByb2ZpbGVWZWN0b3ImIG1lcmdlQmFj
a0xvZyk7CisgICAgdm9pZCBtZXJnZUJhY2soKTsKKyAgICB2b2lkIGZhZGVCeUhhbGYoKTsKKyAg
ICAKKyAgICAvLyBJdCdzIGNoZWFwZXIgdG8gbGV0IHRoaXMgaGF2ZSBpdHMgb3duIGxvY2suIEl0
IG5lZWRzIHRvIGJlIGFibGUgdG8gZmluZCB3aGljaCBsb2NrIHRvCisgICAgLy8gbG9jay4gTm9y
bWFsbHkgaXQgd291bGQgbG9jayB0aGUgb3duaW5nIENvZGVCbG9jaydzIGxvY2ssIGJ1dCB0aGF0
IHdvdWxkIHJlcXVpcmUgYQorICAgIC8vIHBvaW50ZXItd2lkdGggd29yZCB0byBwb2ludCBhdCB0
aGUgQ29kZUJsb2NrLiBIYXZpbmcgdGhlIGJ5dGUtc2l6ZWQgbG9jayBoZXJlIGlzCisgICAgLy8g
Y2hlYXBlci4gSG93ZXZlciwgdGhpcyBtZWFucyB0aGF0IHRoZSByZWxhdGlvbnNoaXAgd2l0aCB0
aGUgQ29kZUJsb2NrIGxvY2sgaXM6CisgICAgLy8gYWNxdWlyZSB0aGUgQ29kZUJsb2NrIGxvY2sg
YmVmb3JlIHRoaXMgb25lLgorICAgIG11dGFibGUgQ29uY3VycmVudEpJVExvY2sgbV9sb2NrOwor
ICAgIAorICAgIGJvb2wgbV9jbG9zdXJlc0FyZURlc3BlY2lmaWVkOworICAgIAorICAgIENhbGxF
ZGdlQ291bnRUeXBlIG1fbnVtQ2FsbHNUb1ByaW1hcnk7CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUg
bV9udW1DYWxsc1RvTm90Q2VsbDsKKyAgICBDYWxsRWRnZUNvdW50VHlwZSBtX251bUNhbGxzVG9V
bmtub3duQ2VsbDsKKyAgICBDYWxsRWRnZUNvdW50VHlwZSBtX3RvdGFsQ291bnQ7CisgICAgQ2Fs
bFZhcmlhbnQgbV9wcmltYXJ5Q2FsbGVlOworICAgIAorICAgIHR5cGVkZWYgU3BlY3RydW08Q2Fs
bFZhcmlhbnQsIENhbGxFZGdlQ291bnRUeXBlPiBDYWxsU3BlY3RydW07CisgICAgCisgICAgc3Ry
dWN0IFNlY29uZGFyeSB7CisgICAgICAgIFZlY3RvcjxDYWxsRWRnZT4gbV9wcm9jZXNzZWQ7IC8v
IFByb2Nlc3NlZCBidXQgbm90IG5lY2Vzc2FyaWx5IHNvcnRlZC4KKyAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPENhbGxTcGVjdHJ1bT4gbV90ZW1wb3JhcnlTcGVjdHJ1bTsKKyAgICB9OworICAgIAor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTZWNvbmRhcnk+IG1fb3RoZXJDYWxsZWVzOworfTsKKworY2xh
c3MgQ2FsbEVkZ2VMb2cgeworcHVibGljOgorICAgIENhbGxFZGdlTG9nKCk7CisgICAgfkNhbGxF
ZGdlTG9nKCk7CisKKyAgICBzdGF0aWMgYm9vbCBpc0VuYWJsZWQoKTsKKyAgICAKKyNpZiBFTkFC
TEUoSklUKQorICAgIHZvaWQgZW1pdExvZ0NvZGUoQ0NhbGxIZWxwZXJzJiwgQ2FsbEVkZ2VQcm9m
aWxlJiwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncyk7IC8vIEFzc3VtZXMgdGhhdCBzdGFjayBpcyBh
bGlnbmVkLCBhbGwgdm9sYXRpbGUgcmVnaXN0ZXJzIC0gb3RoZXIgdGhhbiBjYWxsZWVHUFIgLSBh
cmUgY2xvYmJlcmFibGUsIGFuZCB0aGUgcGFyYW1ldGVyIHNwYWNlIGlzIGluIHVzZS4KKyAgICAK
KyAgICAvLyBTYW1lIGFzIGFib3ZlIGJ1dCBjcmVhdGVzIGEgQ2FsbEVkZ2VQcm9maWxlIGluc3Rh
bmNlIGlmIG9uZSBkaWQgbm90IGFscmVhZHkgZXhpc3QuIERvZXMKKyAgICAvLyB0aGlzIGluIGEg
dGhyZWFkLXNhZmUgbWFubmVyIGJ5IGNhbGxpbmcgT3duUHRyOjpjcmVhdGVUcmFuc2FjdGlvbmFs
bHkuCisgICAgdm9pZCBlbWl0TG9nQ29kZShDQ2FsbEhlbHBlcnMmLCBPd25QdHI8Q2FsbEVkZ2VQ
cm9maWxlPiYsIEpTVmFsdWVSZWdzIGNhbGxlZVJlZ3MpOworI2VuZGlmIC8vIEVOQUJMRShKSVQp
CisgICAgCisgICAgdm9pZCBwcm9jZXNzTG9nKCk7CisgICAgCitwcml2YXRlOgorICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgbG9nU2l6ZSA9IDEwMDAwOworICAgIAorICAgIHN0cnVjdCBFbnRyeSB7CisgICAgICAgIEpT
VmFsdWUgbV92YWx1ZTsKKyAgICAgICAgQ2FsbEVkZ2VQcm9maWxlKiBtX3Byb2ZpbGU7CisgICAg
fTsKKyAgICAKKyAgICB1bnNpZ25lZCBtX3NjYWxlZExvZ0luZGV4OworICAgIEVudHJ5IG1fbG9n
W2xvZ1NpemVdOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDYWxsRWRn
ZVByb2ZpbGVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVk
Z2VQcm9maWxlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzX2gKKyNkZWZpbmUg
Q2FsbEVkZ2VQcm9maWxlSW5saW5lc19oCisKKyNpbmNsdWRlICJDYWxsRWRnZVByb2ZpbGUuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2lubGluZSBDYWxsRWRnZVByb2ZpbGU6OkNhbGxFZGdlUHJv
ZmlsZSgpCisgICAgOiBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQoZmFsc2UpCisgICAgLCBtX251
bUNhbGxzVG9QcmltYXJ5KDApCisgICAgLCBtX251bUNhbGxzVG9Ob3RDZWxsKDApCisgICAgLCBt
X251bUNhbGxzVG9Vbmtub3duQ2VsbCgwKQorICAgICwgbV90b3RhbENvdW50KDApCisgICAgLCBt
X3ByaW1hcnlDYWxsZWUobnVsbHB0cikKK3sKK30KKworQUxXQVlTX0lOTElORSB2b2lkIENhbGxF
ZGdlUHJvZmlsZTo6YWRkKEpTVmFsdWUgdmFsdWUsIENhbGxFZGdlUHJvZmlsZVZlY3RvciYgbWVy
Z2VCYWNrTG9nKQoreworICAgIHVuc2lnbmVkIG5ld1RvdGFsQ291bnQgPSBtX3RvdGFsQ291bnQg
KyAxOworICAgIGlmIChVTkxJS0VMWSghbmV3VG90YWxDb3VudCkpIHsKKyAgICAgICAgZmFkZUJ5
SGFsZigpOyAvLyBUYWNrbGUgb3ZlcmZsb3dzIGJ5IGRpdmlkaW5nIGFsbCBjb3VudHMgYnkgdHdv
LgorICAgICAgICBuZXdUb3RhbENvdW50ID0gbV90b3RhbENvdW50ICsgMTsKKyAgICB9CisgICAg
QVNTRVJUKG5ld1RvdGFsQ291bnQpOworICAgIG1fdG90YWxDb3VudCA9IG5ld1RvdGFsQ291bnQ7
CisgICAgCisgICAgaWYgKFVOTElLRUxZKCF2YWx1ZS5pc0NlbGwoKSkpIHsKKyAgICAgICAgbV9u
dW1DYWxsc1RvTm90Q2VsbCsrOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ2FsbFZh
cmlhbnQgY2FsbGVlID0gQ2FsbFZhcmlhbnQodmFsdWUuYXNDZWxsKCkpOworICAgIAorICAgIGlm
IChtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQpCisgICAgICAgIGNhbGxlZSA9IGNhbGxlZS5kZXNw
ZWNpZmllZENsb3N1cmUoKTsKKyAgICAKKyAgICBpZiAoVU5MSUtFTFkoIW1fcHJpbWFyeUNhbGxl
ZSkpIHsKKyAgICAgICAgbV9wcmltYXJ5Q2FsbGVlID0gY2FsbGVlOworICAgICAgICBtX251bUNh
bGxzVG9QcmltYXJ5ID0gMTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAg
aWYgKExJS0VMWShtX3ByaW1hcnlDYWxsZWUgPT0gY2FsbGVlKSkgeworICAgICAgICBtX251bUNh
bGxzVG9QcmltYXJ5Kys7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAorICAgIGlm
IChVTkxJS0VMWSghbV9vdGhlckNhbGxlZXMpKSB7CisgICAgICAgIGFkZFNsb3coY2FsbGVlLCBt
ZXJnZUJhY2tMb2cpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBDYWxs
U3BlY3RydW0qIHNlY29uZGFyeSA9IG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVt
LmdldCgpOworICAgIGlmICghc2Vjb25kYXJ5KSB7CisgICAgICAgIGFkZFNsb3coY2FsbGVlLCBt
ZXJnZUJhY2tMb2cpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBzZWNv
bmRhcnktPmFkZChjYWxsZWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8v
IENhbGxFZGdlUHJvZmlsZUlubGluZXNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgzLDYgKzgzLDExIEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWsoUmVwYXRj
aEJ1ZmYKICAgICB9CiAgICAgaWYgKCEhbGFzdFNlZW5DYWxsZWUgJiYgIUhlYXA6OmlzTWFya2Vk
KGxhc3RTZWVuQ2FsbGVlLmdldCgpKSkKICAgICAgICAgbGFzdFNlZW5DYWxsZWUuY2xlYXIoKTsK
KyAgICAKKyAgICBpZiAoY2FsbEVkZ2VQcm9maWxlKSB7CisgICAgICAgIFdURjo6bG9hZExvYWRG
ZW5jZSgpOworICAgICAgICBjYWxsRWRnZVByb2ZpbGUtPnZpc2l0V2VhaygpOworICAgIH0KIH0K
IAogQ2FsbExpbmtJbmZvJiBDYWxsTGlua0luZm86OmR1bW15KCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDE3Mjg1OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBDYWxsTGlua0luZm9faAogI2RlZmlu
ZSBDYWxsTGlua0luZm9faAogCisjaW5jbHVkZSAiQ2FsbEVkZ2VQcm9maWxlLmgiCiAjaW5jbHVk
ZSAiQ2xvc3VyZUNhbGxTdHViUm91dGluZS5oIgogI2luY2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgog
I2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKQEAgLTMzLDYgKzM0LDcgQEAKICNp
bmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiV3Jp
dGVCYXJyaWVyLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TZW50
aW5lbExpbmtlZExpc3QuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC04OCw2ICs5MCw3IEBAIHN0
cnVjdCBDYWxsTGlua0luZm8gOiBwdWJsaWMgQmFzaWNSYXdTZW4KICAgICB1bnNpZ25lZCBjYWxs
ZWVHUFIgOiA4OwogICAgIHVuc2lnbmVkIHNsb3dQYXRoQ291bnQ7CiAgICAgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luOworICAgIE93blB0cjxDYWxsRWRnZVByb2ZpbGU+IGNhbGxFZGdlUHJvZmlsZTsK
IAogICAgIGJvb2wgaXNMaW5rZWQoKSB7IHJldHVybiBzdHViIHx8IGNhbGxlZTsgfQogICAgIHZv
aWQgdW5saW5rKFJlcGF0Y2hCdWZmZXImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsNTQgKzMyLDIyIEBACiAjaW5jbHVkZSAiTExJbnRDYWxsTGlua0luZm8u
aCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5o
PgorI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogc3RhdGlj
IGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCiBDYWxsTGlua1N0YXR1czo6Q2FsbExpbmtT
dGF0dXMoSlNWYWx1ZSB2YWx1ZSkKLSAgICA6IG1fY2FsbFRhcmdldCh2YWx1ZSkKLSAgICAsIG1f
ZXhlY3V0YWJsZSgwKQotICAgICwgbV9jb3VsZFRha2VTbG93UGF0aChmYWxzZSkKKyAgICA6IG1f
Y291bGRUYWtlU2xvd1BhdGgoZmFsc2UpCiAgICAgLCBtX2lzUHJvdmVkKGZhbHNlKQogewotICAg
IGlmICghdmFsdWUgfHwgIXZhbHVlLmlzQ2VsbCgpKQorICAgIGlmICghdmFsdWUgfHwgIXZhbHVl
LmlzQ2VsbCgpKSB7CisgICAgICAgIG1fY291bGRUYWtlU2xvd1BhdGggPSB0cnVlOwogICAgICAg
ICByZXR1cm47CisgICAgfQogICAgIAotICAgIGlmICghdmFsdWUuYXNDZWxsKCktPmluaGVyaXRz
KEpTRnVuY3Rpb246OmluZm8oKSkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBtX2V4ZWN1
dGFibGUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KHZhbHVlLmFzQ2VsbCgpKS0+ZXhlY3V0YWJsZSgp
OwotfQotCi1KU0Z1bmN0aW9uKiBDYWxsTGlua1N0YXR1czo6ZnVuY3Rpb24oKSBjb25zdAotewot
ICAgIGlmICghbV9jYWxsVGFyZ2V0IHx8ICFtX2NhbGxUYXJnZXQuaXNDZWxsKCkpCi0gICAgICAg
IHJldHVybiAwOwotICAgIAotICAgIGlmICghbV9jYWxsVGFyZ2V0LmFzQ2VsbCgpLT5pbmhlcml0
cyhKU0Z1bmN0aW9uOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICByZXR1
cm4ganNDYXN0PEpTRnVuY3Rpb24qPihtX2NhbGxUYXJnZXQuYXNDZWxsKCkpOwotfQotCi1JbnRl
cm5hbEZ1bmN0aW9uKiBDYWxsTGlua1N0YXR1czo6aW50ZXJuYWxGdW5jdGlvbigpIGNvbnN0Ci17
Ci0gICAgaWYgKCFtX2NhbGxUYXJnZXQgfHwgIW1fY2FsbFRhcmdldC5pc0NlbGwoKSkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgaWYgKCFtX2NhbGxUYXJnZXQuYXNDZWxsKCktPmluaGVy
aXRzKEludGVybmFsRnVuY3Rpb246OmluZm8oKSkpCi0gICAgICAgIHJldHVybiAwOwotICAgIAot
ICAgIHJldHVybiBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KG1fY2FsbFRhcmdldC5hc0NlbGwo
KSk7Ci19Ci0KLUludHJpbnNpYyBDYWxsTGlua1N0YXR1czo6aW50cmluc2ljRm9yKENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCkgY29uc3QKLXsKLSAgICBpZiAoIW1fZXhlY3V0YWJsZSkKLSAg
ICAgICAgcmV0dXJuIE5vSW50cmluc2ljOwotICAgIAotICAgIHJldHVybiBtX2V4ZWN1dGFibGUt
PmludHJpbnNpY0ZvcihraW5kKTsKKyAgICBtX2VkZ2VzLmFwcGVuZChDYWxsRWRnZShDYWxsVmFy
aWFudCh2YWx1ZS5hc0NlbGwoKSksIDEpKTsKIH0KIAogQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtT
dGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2Vy
LCBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCkBAIC04
Nyw3ICs1NSw3IEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnIKICAg
ICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2Rl
SW5kZXgpOwogI2lmIEVOQUJMRShERkdfSklUKQotICAgIGlmIChwcm9maWxlZEJsb2NrLT5oYXNF
eGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRG
dW5jdGlvbikpKSB7CisgICAgaWYgKHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwg
REZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENlbGwpKSkgewogICAgICAg
ICAvLyBXZSBjb3VsZCBmb3JjZSB0aGlzIHRvIGJlIGEgY2xvc3VyZSBjYWxsLCBidXQgaW5zdGVh
ZCB3ZSdsbCBqdXN0IGFzc3VtZSB0aGF0IGl0CiAgICAgICAgIC8vIHRha2VzIHNsb3cgcGF0aC4K
ICAgICAgICAgcmV0dXJuIHRha2VzU2xvd1BhdGgoKTsKQEAgLTEyNSw3ICs5Myw3IEBAIENhbGxM
aW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICAgICBpZiAoIWNhbGxMaW5rSW5m
bykKICAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQobG9ja2VyLCBwcm9maWxlZEJsb2Nr
LCBieXRlY29kZUluZGV4KTsKICAgICAKLSAgICByZXR1cm4gY29tcHV0ZUZvcihsb2NrZXIsICpj
YWxsTGlua0luZm8sIGV4aXRTaXRlRGF0YSk7CisgICAgcmV0dXJuIGNvbXB1dGVGb3IobG9ja2Vy
LCBwcm9maWxlZEJsb2NrLCAqY2FsbExpbmtJbmZvLCBleGl0U2l0ZURhdGEpOwogI2Vsc2UKICAg
ICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoKTsKICNlbmRpZgpAQCAtMTM5LDEwICsxMDcsMTAgQEAg
Q2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBDYWxsTGlua1N0YQogICAgIAogI2lmIEVOQUJM
RShERkdfSklUKQogICAgIGV4aXRTaXRlRGF0YS5tX3Rha2VzU2xvd1BhdGggPQotICAgICAgICBw
cm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShi
eXRlY29kZUluZGV4LCBCYWRDYWNoZSwgZXhpdGluZ0pJVFR5cGUpKQorICAgICAgICBwcm9maWxl
ZEJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29k
ZUluZGV4LCBCYWRUeXBlLCBleGl0aW5nSklUVHlwZSkpCiAgICAgICAgIHx8IHByb2ZpbGVkQmxv
Y2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5k
ZXgsIEJhZEV4ZWN1dGFibGUsIGV4aXRpbmdKSVRUeXBlKSk7CiAgICAgZXhpdFNpdGVEYXRhLm1f
YmFkRnVuY3Rpb24gPQotICAgICAgICBwcm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIs
IERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRGdW5jdGlvbiwgZXhpdGlu
Z0pJVFR5cGUpKTsKKyAgICAgICAgcHJvZmlsZWRCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBE
Rkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkQ2VsbCwgZXhpdGluZ0pJVFR5
cGUpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGxvY2tlcik7CiAgICAgVU5VU0VEX1BBUkFN
KHByb2ZpbGVkQmxvY2spOwpAQCAtMTU0LDcgKzEyMiwzNCBAQCBDYWxsTGlua1N0YXR1czo6RXhp
dFNpdGVEYXRhIENhbGxMaW5rU3RhCiB9CiAKICNpZiBFTkFCTEUoSklUKQotQ2FsbExpbmtTdGF0
dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYs
IENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQorQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVGb3IoCisgICAgY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBD
b2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQorewor
ICAgIC8vIFdlIGRvbid0IHJlYWxseSBuZWVkIHRoaXMsIGJ1dCBhbnl0aW1lIHdlIGhhdmUgdG8g
ZGVidWcgdGhpcyBjb2RlLCBpdCBiZWNvbWVzIGluZGlzcGVuc2FibGUuCisgICAgVU5VU0VEX1BB
UkFNKHByb2ZpbGVkQmxvY2spOworICAgIAorICAgIGlmIChPcHRpb25zOjpjYWxsU3RhdHVzU2hv
dWxkVXNlQ2FsbEVkZ2VQcm9maWxlKCkpIHsKKyAgICAgICAgLy8gQWx3YXlzIHRydXN0IHRoZSBj
YWxsIGVkZ2UgcHJvZmlsZSBvdmVyIGFueXRoaW5nIGVsc2Ugc2luY2UgdGhpcyBoYXMgcHJlY2lz
ZSBjb3VudHMuCisgICAgICAgIC8vIEl0IGNhbiBtYWtlIHRoZSBiZXN0IHBvc3NpYmxlIGRlY2lz
aW9uIGJlY2F1c2UgaXQgbmV2ZXIgImZvcmdldHMiIHdoYXQgaGFwcGVuZWQgZm9yIGFueQorICAg
ICAgICAvLyBjYWxsLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgZmFkaW5nIG91dCB0aGUgY291bnRz
IG9mIG9sZCBjYWxscyAoZm9yIGV4YW1wbGUgaWYgdGhlCisgICAgICAgIC8vIGNvdW50ZXIgdHlw
ZSBpcyAxNi1iaXQgdGhlbiBjYWxscyB0aGF0IGhhcHBlbmVkIG1vcmUgdGhhbiAyXjE2IGNhbGxz
IGFnbyBhcmUgZ2l2ZW4gaGFsZgorICAgICAgICAvLyB3ZWlnaHQsIGFuZCB0aGlzIGNvbXBvdW5k
cyBmb3IgZXZlcnkgMl4xNSBbc2ljXSBjYWxscyBhZnRlciB0aGF0KS4gVGhlIGNvbWJpbmF0aW9u
IG9mCisgICAgICAgIC8vIGhpZ2ggZmlkZWxpdHkgZm9yIHJlY2VudCBjYWxscyBhbmQgZmFkaW5n
IGZvciBvbGRlciBjYWxscyBtYWtlcyB0aGlzIHRoZSBtb3N0IHVzZWZ1bAorICAgICAgICAvLyBt
ZWNoYW1pc20gb2YgY2hvb3NpbmcgaG93IHRvIG9wdGltaXplIGZ1dHVyZSBjYWxscy4KKyAgICAg
ICAgQ2FsbEVkZ2VQcm9maWxlKiBlZGdlUHJvZmlsZSA9IGNhbGxMaW5rSW5mby5jYWxsRWRnZVBy
b2ZpbGUuZ2V0KCk7CisgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOworICAgICAgICBpZiAo
ZWRnZVByb2ZpbGUpIHsKKyAgICAgICAgICAgIENhbGxMaW5rU3RhdHVzIHJlc3VsdCA9IGNvbXB1
dGVGcm9tQ2FsbEVkZ2VQcm9maWxlKGVkZ2VQcm9maWxlKTsKKyAgICAgICAgICAgIGlmICghIXJl
c3VsdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgfQor
ICAgIAorICAgIHJldHVybiBjb21wdXRlRnJvbUNhbGxMaW5rSW5mbyhsb2NrZXIsIGNhbGxMaW5r
SW5mbyk7Cit9CisKK0NhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUNh
bGxMaW5rSW5mbygKKyAgICBjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgQ2FsbExpbmtJbmZv
JiBjYWxsTGlua0luZm8pCiB7CiAgICAgLy8gTm90ZSB0aGF0IGRlc3BpdGUgcmVxdWlyaW5nIHRo
YXQgdGhlIGxvY2tlciBpcyBoZWxkLCB0aGlzIGNvZGUgaXMgcmFjeSB3aXRoIHJlc3BlY3QKICAg
ICAvLyB0byB0aGUgQ2FsbExpbmtJbmZvOiBpdCBtYXkgZ2V0IGNsZWFyZWQgd2hpbGUgdGhpcyBj
b2RlIHJ1bnMhIFRoaXMgaXMgYmVjYXVzZQpAQCAtMTc3LDcgKzE3Miw3IEBAIENhbGxMaW5rU3Rh
dHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICAgICAKICAgICBKU0Z1bmN0aW9uKiB0YXJn
ZXQgPSBjYWxsTGlua0luZm8ubGFzdFNlZW5DYWxsZWUuZ2V0KCk7CiAgICAgaWYgKCF0YXJnZXQp
Ci0gICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygpOworICAgICAgICByZXR1cm4gdGFrZXNT
bG93UGF0aCgpOwogICAgIAogICAgIGlmIChjYWxsTGlua0luZm8uaGFzU2VlbkNsb3N1cmUpCiAg
ICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyh0YXJnZXQtPmV4ZWN1dGFibGUoKSk7CkBAIC0x
ODUsMTUgKzE4MCw0MyBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZv
CiAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKHRhcmdldCk7CiB9CiAKLUNhbGxMaW5rU3RhdHVz
IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAotICAgIGNvbnN0IENvbmN1cnJlbnRKSVRMb2Nr
ZXImIGxvY2tlciwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIEV4aXRTaXRlRGF0YSBleGl0
U2l0ZURhdGEpCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21DYWxs
RWRnZVByb2ZpbGUoQ2FsbEVkZ2VQcm9maWxlKiBlZGdlUHJvZmlsZSkKIHsKLSAgICBpZiAoZXhp
dFNpdGVEYXRhLm1fdGFrZXNTbG93UGF0aCkKKyAgICAvLyBJbiBjYXNlcyB3aGVyZSB0aGUgY2Fs
bCBlZGdlIHByb2ZpbGUgc2F3IG5vdGhpbmcsIHVzZSB0aGUgQ2FsbExpbmtJbmZvIGluc3RlYWQu
CisgICAgaWYgKCFlZGdlUHJvZmlsZS0+dG90YWxDYWxscygpKQorICAgICAgICByZXR1cm4gQ2Fs
bExpbmtTdGF0dXMoKTsKKyAgICAKKyAgICAvLyBUbyBkbyBhbnl0aGluZyBtZWFuaW5nZnVsLCB3
ZSByZXF1aXJlIHRoYXQgdGhlIG1ham9yaXR5IG9mIGNhbGxzIGFyZSB0byBzb21ldGhpbmcgd2UK
KyAgICAvLyBrbm93IGhvdyB0byBoYW5kbGUuCisgICAgdW5zaWduZWQgbnVtQ2FsbHNUb0tub3du
ID0gZWRnZVByb2ZpbGUtPm51bUNhbGxzVG9Lbm93bkNlbGxzKCk7CisgICAgdW5zaWduZWQgbnVt
Q2FsbHNUb1Vua25vd24gPSBlZGdlUHJvZmlsZS0+bnVtQ2FsbHNUb05vdENlbGwoKSArIGVkZ2VQ
cm9maWxlLT5udW1DYWxsc1RvVW5rbm93bkNlbGwoKTsKKyAgICAKKyAgICAvLyBXZSByZXF1aXJl
IHRoYXQgdGhlIG1ham9yaXR5IG9mIGNhbGxzIHdlcmUgdG8gc29tZXRoaW5nIHRoYXQgd2UgY291
bGQgcG9zc2libHkgaW5saW5lLgorICAgIGlmIChudW1DYWxsc1RvS25vd24gPD0gbnVtQ2FsbHNU
b1Vua25vd24pCisgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7CisgICAgCisgICAgLy8g
V2UgcmVxdWlyZSB0aGF0IHRoZSBudW1iZXIgb2Ygc3VjaCBjYWxscyBpcyBncmVhdGVyIHRoYW4g
c29tZSBtaW5pbWFsIHRocmVzaG9sZCwgc28gdGhhdCB3ZQorICAgIC8vIGF2b2lkIGlubGluaW5n
IGNvbXBsZXRlbHkgY29sZCBjYWxscy4KKyAgICBpZiAobnVtQ2FsbHNUb0tub3duIDwgT3B0aW9u
czo6ZnJlcXVlbnRDYWxsVGhyZXNob2xkKCkpCiAgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRo
KCk7CiAgICAgCi0gICAgQ2FsbExpbmtTdGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZvcihsb2NrZXIs
IGNhbGxMaW5rSW5mbyk7CisgICAgQ2FsbExpbmtTdGF0dXMgcmVzdWx0OworICAgIHJlc3VsdC5t
X2VkZ2VzID0gZWRnZVByb2ZpbGUtPmNhbGxFZGdlcygpOworICAgIHJlc3VsdC5tX2NvdWxkVGFr
ZVNsb3dQYXRoID0gISFudW1DYWxsc1RvVW5rbm93bjsKKyAgICByZXN1bHQubV9jYW5UcnVzdENv
dW50cyA9IHRydWU7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQ2FsbExpbmtTdGF0
dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgY29uc3QgQ29uY3VycmVudEpJVExv
Y2tlciYgbG9ja2VyLCBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIENhbGxMaW5rSW5mbyYgY2Fs
bExpbmtJbmZvLAorICAgIEV4aXRTaXRlRGF0YSBleGl0U2l0ZURhdGEpCit7CisgICAgQ2FsbExp
bmtTdGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZvcihsb2NrZXIsIHByb2ZpbGVkQmxvY2ssIGNhbGxM
aW5rSW5mbyk7CiAgICAgaWYgKGV4aXRTaXRlRGF0YS5tX2JhZEZ1bmN0aW9uKQogICAgICAgICBy
ZXN1bHQubWFrZUNsb3N1cmVDYWxsKCk7CisgICAgaWYgKGV4aXRTaXRlRGF0YS5tX3Rha2VzU2xv
d1BhdGgpCisgICAgICAgIHJlc3VsdC5tX2NvdWxkVGFrZVNsb3dQYXRoID0gdHJ1ZTsKICAgICAK
ICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjI3LDcgKzI1MCw3IEBAIHZvaWQgQ2FsbExpbmtT
dGF0dXM6OmNvbXB1dGVERkdTdGF0dXNlcygKICAgICAgICAgCiAgICAgICAgIHsKICAgICAgICAg
ICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKGRmZ0NvZGVCbG9jay0+bV9sb2NrKTsKLSAg
ICAgICAgICAgIG1hcC5hZGQoaW5mby5jb2RlT3JpZ2luLCBjb21wdXRlRm9yKGxvY2tlciwgaW5m
bywgZXhpdFNpdGVEYXRhKSk7CisgICAgICAgICAgICBtYXAuYWRkKGluZm8uY29kZU9yaWdpbiwg
Y29tcHV0ZUZvcihsb2NrZXIsIGRmZ0NvZGVCbG9jaywgaW5mbywgZXhpdFNpdGVEYXRhKSk7CiAg
ICAgICAgIH0KICAgICB9CiAjZWxzZQpAQCAtMjU2LDYgKzI3OSwzMSBAQCBDYWxsTGlua1N0YXR1
cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvCiAgICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmls
ZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBiYXNlbGluZU1hcCk7CiB9CiAKK2Jv
b2wgQ2FsbExpbmtTdGF0dXM6OmlzQ2xvc3VyZUNhbGwoKSBjb25zdAoreworICAgIGZvciAodW5z
aWduZWQgaSA9IG1fZWRnZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIGlmIChtX2VkZ2VzW2ld
LmNhbGxlZSgpLmlzQ2xvc3VyZUNhbGwoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQ2FsbExpbmtTdGF0dXM6Om1ha2VDbG9z
dXJlQ2FsbCgpCit7CisgICAgQVNTRVJUKCFtX2lzUHJvdmVkKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSBtX2VkZ2VzLnNpemUoKTsgaS0tOykKKyAgICAgICAgbV9lZGdlc1tpXSA9IG1fZWRnZXNb
aV0uZGVzcGVjaWZpZWRDbG9zdXJlKCk7CisgICAgCisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQp
IHsKKyAgICAgICAgLy8gRG9pbmcgdGhpcyBzaG91bGQgbm90IGhhdmUgY3JlYXRlZCBkdXBsaWNh
dGVzLCBiZWNhdXNlIHRoZSBDYWxsRWRnZVByb2ZpbGUKKyAgICAgICAgLy8gc2hvdWxkIGRlc3Bl
Y2lmeSBjbG9zdXJlcyBpZiBkb2luZyBzbyB3b3VsZCByZWR1Y2UgdGhlIG51bWJlciBvZiBrbm93
biBjYWxsZWVzLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9lZGdlcy5zaXpl
KCk7ICsraSkgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gaSArIDE7IGogPCBtX2Vk
Z2VzLnNpemUoKTsgKytqKQorICAgICAgICAgICAgICAgIEFTU0VSVChtX2VkZ2VzW2ldLmNhbGxl
ZSgpICE9IG1fZWRnZXNbal0uY2FsbGVlKCkpOworICAgICAgICB9CisgICAgfQorfQorCiB2b2lk
IENhbGxMaW5rU3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgaWYg
KCFpc1NldCgpKSB7CkBAIC0yNzEsMTQgKzMxOSw3IEBAIHZvaWQgQ2FsbExpbmtTdGF0dXM6OmR1
bXAoUHJpbnRTdHJlYW0mIG8KICAgICBpZiAobV9jb3VsZFRha2VTbG93UGF0aCkKICAgICAgICAg
b3V0LnByaW50KGNvbW1hLCAiQ291bGQgVGFrZSBTbG93IFBhdGgiKTsKICAgICAKLSAgICBpZiAo
bV9jYWxsVGFyZ2V0KQotICAgICAgICBvdXQucHJpbnQoY29tbWEsICJLbm93biB0YXJnZXQ6ICIs
IG1fY2FsbFRhcmdldCk7Ci0gICAgCi0gICAgaWYgKG1fZXhlY3V0YWJsZSkgewotICAgICAgICBv
dXQucHJpbnQoY29tbWEsICJFeGVjdXRhYmxlL0NhbGxIYXNoOiAiLCBSYXdQb2ludGVyKG1fZXhl
Y3V0YWJsZSkpOwotICAgICAgICBpZiAoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSkKLSAgICAgICAg
ICAgIG91dC5wcmludCgiLyIsIG1fZXhlY3V0YWJsZS0+aGFzaEZvcihDb2RlRm9yQ2FsbCkpOwot
ICAgIH0KKyAgICBvdXQucHJpbnQobGlzdER1bXAobV9lZGdlcykpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0
YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TGlua1N0YXR1cy5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsOSArNDYsOSBA
QCBzdHJ1Y3QgQ2FsbExpbmtJbmZvOwogY2xhc3MgQ2FsbExpbmtTdGF0dXMgewogcHVibGljOgog
ICAgIENhbGxMaW5rU3RhdHVzKCkKLSAgICAgICAgOiBtX2V4ZWN1dGFibGUoMCkKLSAgICAgICAg
LCBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQorICAgICAgICA6IG1fY291bGRUYWtlU2xvd1Bh
dGgoZmFsc2UpCiAgICAgICAgICwgbV9pc1Byb3ZlZChmYWxzZSkKKyAgICAgICAgLCBtX2NhblRy
dXN0Q291bnRzKGZhbHNlKQogICAgIHsKICAgICB9CiAgICAgCkBAIC02MSwxMCArNjEsMTEgQEAg
cHVibGljOgogICAgIAogICAgIGV4cGxpY2l0IENhbGxMaW5rU3RhdHVzKEpTVmFsdWUpOwogICAg
IAotICAgIENhbGxMaW5rU3RhdHVzKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKQotICAgICAg
ICA6IG1fZXhlY3V0YWJsZShleGVjdXRhYmxlKQorICAgIENhbGxMaW5rU3RhdHVzKENhbGxWYXJp
YW50IHZhcmlhbnQpCisgICAgICAgIDogbV9lZGdlcygxLCBDYWxsRWRnZSh2YXJpYW50LCAxKSkK
ICAgICAgICAgLCBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQogICAgICAgICAsIG1faXNQcm92
ZWQoZmFsc2UpCisgICAgICAgICwgbV9jYW5UcnVzdENvdW50cyhmYWxzZSkKICAgICB7CiAgICAg
fQogICAgIApAQCAtOTIsOCArOTMsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEpJVCkKICAgICAv
LyBDb21wdXRlcyB0aGUgc3RhdHVzIGFzc3VtaW5nIHRoYXQgd2UgbmV2ZXIgdG9vayBzbG93IHBh
dGggYW5kIG5ldmVyIHByZXZpb3VzbHkKICAgICAvLyBleGl0ZWQuCi0gICAgc3RhdGljIENhbGxM
aW5rU3RhdHVzIGNvbXB1dGVGb3IoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENhbGxMaW5r
SW5mbyYpOwotICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKGNvbnN0IENvbmN1
cnJlbnRKSVRMb2NrZXImLCBDYWxsTGlua0luZm8mLCBFeGl0U2l0ZURhdGEpOworICAgIHN0YXRp
YyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBD
b2RlQmxvY2sqLCBDYWxsTGlua0luZm8mKTsKKyAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29t
cHV0ZUZvcigKKyAgICAgICAgY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENvZGVCbG9jayos
IENhbGxMaW5rSW5mbyYsIEV4aXRTaXRlRGF0YSk7CiAjZW5kaWYKICAgICAKICAgICB0eXBlZGVm
IEhhc2hNYXA8Q29kZU9yaWdpbiwgQ2FsbExpbmtTdGF0dXMsIENvZGVPcmlnaW5BcHByb3hpbWF0
ZUhhc2g+IENvbnRleHRNYXA7CkBAIC0xMDcsMzcgKzEwOSwzOCBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoCiAgICAgICAgIENvZGVCbG9jayosIENvZGVP
cmlnaW4sIGNvbnN0IENhbGxMaW5rSW5mb01hcCYsIGNvbnN0IENvbnRleHRNYXAmKTsKICAgICAK
LSAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0IHx8IG1fZXhlY3V0
YWJsZSB8fCBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CisgICAgYm9vbCBpc1NldCgpIGNvbnN0IHsg
cmV0dXJuICFtX2VkZ2VzLmlzRW1wdHkoKSB8fCBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CiAgICAg
CiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsgfQogICAgIAog
ICAgIGJvb2wgY291bGRUYWtlU2xvd1BhdGgoKSBjb25zdCB7IHJldHVybiBtX2NvdWxkVGFrZVNs
b3dQYXRoOyB9Ci0gICAgYm9vbCBpc0Nsb3N1cmVDYWxsKCkgY29uc3QgeyByZXR1cm4gbV9leGVj
dXRhYmxlICYmICFtX2NhbGxUYXJnZXQ7IH0KICAgICAKLSAgICBKU1ZhbHVlIGNhbGxUYXJnZXQo
KSBjb25zdCB7IHJldHVybiBtX2NhbGxUYXJnZXQ7IH0KLSAgICBKU0Z1bmN0aW9uKiBmdW5jdGlv
bigpIGNvbnN0OwotICAgIEludGVybmFsRnVuY3Rpb24qIGludGVybmFsRnVuY3Rpb24oKSBjb25z
dDsKLSAgICBJbnRyaW5zaWMgaW50cmluc2ljRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQpIGNv
bnN0OwotICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9l
eGVjdXRhYmxlOyB9CisgICAgQ2FsbEVkZ2VMaXN0IGVkZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9l
ZGdlczsgfQorICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2VkZ2VzLnNpemUo
KTsgfQorICAgIENhbGxFZGdlIGF0KHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIG1fZWRnZXNb
aV07IH0KKyAgICBDYWxsRWRnZSBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJu
IGF0KGkpOyB9CiAgICAgYm9vbCBpc1Byb3ZlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNQcm92ZWQ7
IH0KLSAgICBib29sIGNhbk9wdGltaXplKCkgY29uc3QgeyByZXR1cm4gKG1fY2FsbFRhcmdldCB8
fCBtX2V4ZWN1dGFibGUpICYmICFtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CisgICAgYm9vbCBjYW5P
cHRpbWl6ZSgpIGNvbnN0IHsgcmV0dXJuICFtX2VkZ2VzLmlzRW1wdHkoKTsgfQorICAgIGJvb2wg
Y2FuVHJ1c3RDb3VudHMoKSBjb25zdCB7IHJldHVybiBtX2NhblRydXN0Q291bnRzOyB9CisgICAg
CisgICAgYm9vbCBpc0Nsb3N1cmVDYWxsKCkgY29uc3Q7IC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkg
Y2FsbGVlIGlzIGEgY2xvc3VyZSBjYWxsLgogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKLSAgICB2b2lkIG1ha2VDbG9zdXJlQ2FsbCgpCi0g
ICAgewotICAgICAgICBBU1NFUlQoIW1faXNQcm92ZWQpOwotICAgICAgICAvLyBUdXJuIHRoaXMg
aW50byBhIGNsb3N1cmUgY2FsbC4KLSAgICAgICAgbV9jYWxsVGFyZ2V0ID0gSlNWYWx1ZSgpOwot
ICAgIH0KKyAgICB2b2lkIG1ha2VDbG9zdXJlQ2FsbCgpOwogICAgIAogICAgIHN0YXRpYyBDYWxs
TGlua1N0YXR1cyBjb21wdXRlRnJvbUxMSW50KGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBD
b2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKyNpZiBFTkFCTEUoSklUKQorICAg
IHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRnJvbUNhbGxFZGdlUHJvZmlsZShDYWxsRWRn
ZVByb2ZpbGUqKTsKKyAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZyb21DYWxsTGlu
a0luZm8oCisgICAgICAgIGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBDYWxsTGlua0luZm8m
KTsKKyNlbmRpZgogICAgIAotICAgIEpTVmFsdWUgbV9jYWxsVGFyZ2V0OwotICAgIEV4ZWN1dGFi
bGVCYXNlKiBtX2V4ZWN1dGFibGU7CisgICAgQ2FsbEVkZ2VMaXN0IG1fZWRnZXM7CiAgICAgYm9v
bCBtX2NvdWxkVGFrZVNsb3dQYXRoOwogICAgIGJvb2wgbV9pc1Byb3ZlZDsKKyAgICBib29sIG1f
Y2FuVHJ1c3RDb3VudHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2FsbFZhcmlh
bnQuaCIKKworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3Zv
aWQgQ2FsbFZhcmlhbnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBpZiAo
ISp0aGlzKSB7CisgICAgICAgIG91dC5wcmludCgibnVsbCIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIAorICAgIGlmIChJbnRlcm5hbEZ1bmN0aW9uKiBpbnRlcm5hbEZ1bmN0aW9uID0g
dGhpcy0+aW50ZXJuYWxGdW5jdGlvbigpKSB7CisgICAgICAgIG91dC5wcmludCgiSW50ZXJuYWxG
dW5jdGlvbjogIiwgSlNWYWx1ZShpbnRlcm5hbEZ1bmN0aW9uKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gdGhpcy0+ZnVuY3Rp
b24oKSkgeworICAgICAgICBvdXQucHJpbnQoIihGdW5jdGlvbjogIiwgSlNWYWx1ZShmdW5jdGlv
biksICI7IEV4ZWN1dGFibGU6ICIsICpleGVjdXRhYmxlKCksICIpIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgb3V0LnByaW50KCJFeGVjdXRhYmxlOiAiLCAqZXhlY3V0YWJs
ZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBDYWxsVmFyaWFudF9oCisjZGVmaW5lIENhbGxWYXJpYW50X2gKKworI2luY2x1
ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBDYWxsVmFyaWFudCB7CitwdWJsaWM6
CisgICAgZXhwbGljaXQgQ2FsbFZhcmlhbnQoSlNDZWxsKiBjYWxsZWUgPSBudWxscHRyKQorICAg
ICAgICA6IG1fY2FsbGVlKGNhbGxlZSkKKyAgICB7CisgICAgfQorICAgIAorICAgIENhbGxWYXJp
YW50KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgOiBtX2NhbGxlZShk
ZWxldGVkVG9rZW4oKSkKKyAgICB7CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3IhKCkg
Y29uc3QgeyByZXR1cm4gIW1fY2FsbGVlOyB9CisgICAgCisgICAgLy8gSWYgdGhpcyB2YXJpYW50
IHJlZmVycyB0byBhIGZ1bmN0aW9uLCBjaGFuZ2UgaXQgdG8gcmVmZXIgdG8gaXRzIGV4ZWN1dGFi
bGUuCisgICAgQUxXQVlTX0lOTElORSBDYWxsVmFyaWFudCBkZXNwZWNpZmllZENsb3N1cmUoKSBj
b25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fY2FsbGVlLT50eXBlKCkgPT0gSlNGdW5jdGlvblR5
cGUpCisgICAgICAgICAgICByZXR1cm4gQ2FsbFZhcmlhbnQoanNDYXN0PEpTRnVuY3Rpb24qPiht
X2NhbGxlZSktPmV4ZWN1dGFibGUoKSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9Cisg
ICAgCisgICAgSlNDZWxsKiByYXdDYWxsZWVDZWxsKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsZWU7
IH0KKyAgICAKKyAgICBJbnRlcm5hbEZ1bmN0aW9uKiBpbnRlcm5hbEZ1bmN0aW9uKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEludGVybmFsRnVuY3Rpb24qPiht
X2NhbGxlZSk7CisgICAgfQorICAgIAorICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPihtX2NhbGxl
ZSk7CisgICAgfQorICAgIAorICAgIGJvb2wgaXNDbG9zdXJlQ2FsbCgpIGNvbnN0IHsgcmV0dXJu
ICEhanNEeW5hbWljQ2FzdDxFeGVjdXRhYmxlQmFzZSo+KG1fY2FsbGVlKTsgfQorICAgIAorICAg
IEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChK
U0Z1bmN0aW9uKiBmdW5jdGlvbiA9IHRoaXMtPmZ1bmN0aW9uKCkpCisgICAgICAgICAgICByZXR1
cm4gZnVuY3Rpb24tPmV4ZWN1dGFibGUoKTsKKyAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8
RXhlY3V0YWJsZUJhc2UqPihtX2NhbGxlZSk7CisgICAgfQorICAgIAorICAgIEpTQ2VsbCogbm9u
RXhlY3V0YWJsZUNhbGxlZSgpIGNvbnN0CisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
aXNDbG9zdXJlQ2FsbCgpKTsKKyAgICAgICAgcmV0dXJuIG1fY2FsbGVlOworICAgIH0KKyAgICAK
KyAgICBJbnRyaW5zaWMgaW50cmluc2ljRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmIChFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IHRo
aXMtPmV4ZWN1dGFibGUoKSkKKyAgICAgICAgICAgIHJldHVybiBleGVjdXRhYmxlLT5pbnRyaW5z
aWNGb3Ioa2luZCk7CisgICAgICAgIHJldHVybiBOb0ludHJpbnNpYzsKKyAgICB9CisgICAgCisg
ICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgaWYgKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gdGhpcy0+ZXhlY3V0YWJs
ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxl
Kj4oZXhlY3V0YWJsZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CisgICAgCisgICAgYm9vbCBpc0hh
c2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9jYWxs
ZWUgPT0gZGVsZXRlZFRva2VuKCk7CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBDYWxsVmFyaWFudCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9j
YWxsZWUgPT0gb3RoZXIubV9jYWxsZWU7CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBDYWxsVmFyaWFudCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
ISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0
IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NhbGxl
ZSA8IG90aGVyLm1fY2FsbGVlOworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yPihjb25z
dCBDYWxsVmFyaWFudCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gb3RoZXIg
PCAqdGhpczsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IENhbGxWYXJp
YW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzIDwgb3RoZXIp
OworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yPj0oY29uc3QgQ2FsbFZhcmlhbnQmIG90
aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG90aGVyIDw9ICp0aGlzOworICAgIH0K
KyAgICAKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBX
VEY6OlB0ckhhc2g8SlNDZWxsKj46Omhhc2gobV9jYWxsZWUpOworICAgIH0KKyAgICAKK3ByaXZh
dGU6CisgICAgc3RhdGljIEpTQ2VsbCogZGVsZXRlZFRva2VuKCkgeyByZXR1cm4gYml0d2lzZV9j
YXN0PEpTQ2VsbCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpOyB9CisgICAgCisgICAgSlND
ZWxsKiBtX2NhbGxlZTsKK307CisKK3N0cnVjdCBDYWxsVmFyaWFudEhhc2ggeworICAgIHN0YXRp
YyB1bnNpZ25lZCBoYXNoKGNvbnN0IENhbGxWYXJpYW50JiBrZXkpIHsgcmV0dXJuIGtleS5oYXNo
KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBDYWxsVmFyaWFudCYgYSwgY29uc3Qg
Q2FsbFZhcmlhbnQmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBjb25zdCBib29s
IHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKK307CisKK3R5cGVkZWYgVmVj
dG9yPENhbGxWYXJpYW50LCAxPiBDYWxsVmFyaWFudExpc3Q7CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1
bHRIYXNoOwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpDYWxsVmFyaWFudD4g
eworICAgIHR5cGVkZWYgSlNDOjpDYWxsVmFyaWFudEhhc2ggSGFzaDsKK307CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRzOwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRy
YWl0czxKU0M6OkNhbGxWYXJpYW50PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OkNhbGxW
YXJpYW50PiB7IH07CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gQ2FsbFZhcmlh
bnRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2lu
LmgJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlT3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1NCw2ICsxNTQsMTcgQEAgc3RydWN0IElu
bGluZUNhbGxGcmFtZSB7CiAgICAgICAgIHJldHVybiBDb2RlRm9yQ2FsbDsKICAgICB9CiAgICAg
CisgICAgc3RhdGljIGJvb2wgaXNOb3JtYWxDYWxsKEtpbmQga2luZCkKKyAgICB7CisgICAgICAg
IHN3aXRjaCAoa2luZCkgeworICAgICAgICBjYXNlIENhbGw6CisgICAgICAgIGNhc2UgQ29uc3Ry
dWN0OgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgCiAgICAgVmVjdG9yPFZh
bHVlUmVjb3Zlcnk+IGFyZ3VtZW50czsgLy8gSW5jbHVkZXMgJ3RoaXMnLgogICAgIFdyaXRlQmFy
cmllcjxTY3JpcHRFeGVjdXRhYmxlPiBleGVjdXRhYmxlOwogICAgIFZhbHVlUmVjb3ZlcnkgY2Fs
bGVlUmVjb3Zlcnk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtp
bmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0
S2luZC5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9FeGl0S2luZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDggKzM4LDggQEAgY29uc3Qg
Y2hhciogZXhpdEtpbmRUb1N0cmluZyhFeGl0S2luZCBraQogICAgICAgICByZXR1cm4gIlVuc2V0
IjsKICAgICBjYXNlIEJhZFR5cGU6CiAgICAgICAgIHJldHVybiAiQmFkVHlwZSI7Ci0gICAgY2Fz
ZSBCYWRGdW5jdGlvbjoKLSAgICAgICAgcmV0dXJuICJCYWRGdW5jdGlvbiI7CisgICAgY2FzZSBC
YWRDZWxsOgorICAgICAgICByZXR1cm4gIkJhZENlbGwiOwogICAgIGNhc2UgQmFkRXhlY3V0YWJs
ZToKICAgICAgICAgcmV0dXJuICJCYWRFeGVjdXRhYmxlIjsKICAgICBjYXNlIEJhZENhY2hlOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmgJKHJldmlzaW9u
IDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogZW51bSBFeGl0
S2luZCA6IHVpbnQ4X3QgewogICAgIEV4aXRLaW5kVW5zZXQsCiAgICAgQmFkVHlwZSwgLy8gV2Ug
ZXhpdGVkIGJlY2F1c2UgYSB0eXBlIHByZWRpY3Rpb24gd2FzIHdyb25nLgotICAgIEJhZEZ1bmN0
aW9uLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSB3ZSBtYWRlIGFuIGluY29ycmVjdCBhc3N1bXB0aW9u
IGFib3V0IHdoYXQgZnVuY3Rpb24gd2Ugd291bGQgc2VlLgorICAgIEJhZENlbGwsIC8vIFdlIGV4
aXRlZCBiZWNhdXNlIHdlIG1hZGUgYW4gaW5jb3JyZWN0IGFzc3VtcHRpb24gYWJvdXQgd2hhdCBj
ZWxsIHdlIHdvdWxkIHNlZS4gVXN1YWxseSB1c2VkIGZvciBmdW5jdGlvbiBjaGVja3MuCiAgICAg
QmFkRXhlY3V0YWJsZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2UgbWFkZSBhbiBpbmNvcnJlY3Qg
YXNzdW1wdGlvbiBhYm91dCB3aGF0IGV4ZWN1dGFibGUgd2Ugd291bGQgc2VlLgogICAgIEJhZENh
Y2hlLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSBhbiBpbmxpbmUgY2FjaGUgd2FzIHdyb25nLgogICAg
IEJhZENvbnN0YW50Q2FjaGUsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIGEgY2FjaGUgb24gYSB3ZWFr
IGNvbnN0YW50ICh1c3VhbGx5IGEgcHJvdG90eXBlKSB3YXMgd3JvbmcuCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lv
biAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw3ICsxODcsOCBAQCBHZXRCeUlkU3RhdHVzIEdl
dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTCiAgICAgICAgICAgICAgICAgICAgIEFjY2Vzc29yQ2Fs
bEpJVFN0dWJSb3V0aW5lKiBzdHViID0gc3RhdGljX2Nhc3Q8QWNjZXNzb3JDYWxsSklUU3R1YlJv
dXRpbmUqPigKICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmF0KGxpc3RJbmRleCkuc3R1
YlJvdXRpbmUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rU3RhdHVzID0gc3RkOjpt
YWtlX3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4oCi0gICAgICAgICAgICAgICAgICAgICAgICBDYWxs
TGlua1N0YXR1czo6Y29tcHV0ZUZvcihsb2NrZXIsICpzdHViLT5tX2NhbGxMaW5rSW5mbywgY2Fs
bEV4aXRTaXRlRGF0YSkpOworICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbExpbmtTdGF0dXM6
OmNvbXB1dGVGb3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9ja2VyLCBwcm9maWxl
ZEJsb2NrLCAqc3R1Yi0+bV9jYWxsTGlua0luZm8sIGNhbGxFeGl0U2l0ZURhdGEpKTsKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGNhc2UgR2V0QnlJZEFjY2Vzczo6Q3VzdG9tR2V0dGVyOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTcyODU5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDcsNyArMjQ3LDcgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3Rh
dHVzOjpjb21wdXRlRm9yUwogICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2Fs
bExpbmtTdGF0dXM+IGNhbGxMaW5rU3RhdHVzID0KICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtTdGF0dXM+KAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsb2NrZXIsICpzdHViLT5tX2NhbGxMaW5rSW5mbywgY2FsbEV4aXRTaXRlRGF0YSkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ss
ICpzdHViLT5tX2NhbGxMaW5rSW5mbywgY2FsbEV4aXRTaXRlRGF0YSkpOwogICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgdmFyaWFudCA9IFB1dEJ5SWRWYXJpYW50Ojpz
ZXR0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUsIGNvbXBsZXhHZXRTdGF0
dXMub2Zmc2V0KCksIGNvbXBsZXhHZXRTdGF0dXMuY2hhaW4oKSwKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmgJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ1OSwxNCAr
MTQ1OSw2IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAg
ICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CiAgICAgICAgIGJyZWFrOwogICAg
ICAgICAKLSAgICBjYXNlIENoZWNrRXhlY3V0YWJsZTogewotICAgICAgICAvLyBGSVhNRTogV2Ug
Y291bGQgdHJhY2sgZXhlY3V0YWJsZXMgaW4gQWJzdHJhY3RWYWx1ZSwgd2hpY2ggd291bGQgYWxs
b3cgdXMgdG8gZ2V0IHJpZCBvZiB0aGVzZSBjaGVja3MKLSAgICAgICAgLy8gbW9yZSB0aG9yb3Vn
aGx5LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MjAwCi0gICAg
ICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBlbGltaW5hdGUgdGhlc2UgZW50aXJlbHkgaWYgd2Uga25v
dyB0aGUgZXhhY3QgdmFsdWUgdGhhdCBmbG93cyBpbnRvIHRoaXMuCi0gICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYyMDEKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotCiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZTogewogICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGJlIGFibGUgdG8gcHJvcGFnYXRlIHRoZSBzdHJ1Y3R1cmUgc2V0cyBvZiBjb25z
dGFudHMgKGkuZS4gcHJvdG90eXBlcykuCiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0g
Zm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CkBAIC0xNzI2LDE2ICsxNzE4LDI5IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIG1fc3RhdGUuc2V0
SXNWYWxpZChmYWxzZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICAgICAgCisgICAgY2Fz
ZSBHZXRFeGVjdXRhYmxlOiB7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBmb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgICAgIEpT
RnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odmFsdWUpOwor
ICAgICAgICAgICAgaWYgKGZ1bmN0aW9uKSB7CisgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQo
bm9kZSwgKm1fZ3JhcGguZnJlZXplKGZ1bmN0aW9uLT5leGVjdXRhYmxlKCkpKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldFR5cGUoU3BlY0NlbGxPdGhlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KICAg
ICAKLSAgICBjYXNlIENoZWNrRnVuY3Rpb246IHsKKyAgICBjYXNlIENoZWNrQ2VsbDogewogICAg
ICAgICBKU1ZhbHVlIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKLSAg
ICAgICAgaWYgKHZhbHVlID09IG5vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkpIHsKKyAgICAgICAg
aWYgKHZhbHVlID09IG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkpIHsKICAgICAgICAgICAg
IG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CiAgICAgICAgICAgICBBU1NFUlQodmFs
dWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGZp
bHRlckJ5VmFsdWUobm9kZS0+Y2hpbGQxKCksICpub2RlLT5mdW5jdGlvbigpKTsKKyAgICAgICAg
ZmlsdGVyQnlWYWx1ZShub2RlLT5jaGlsZDEoKSwgKm5vZGUtPmNlbGxPcGVyYW5kKCkpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAtMTg1OSw4ICsxODY0LDYgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAKICAgICBjYXNlIFZh
cmlhYmxlV2F0Y2hwb2ludDoKICAgICBjYXNlIFZhckluamVjdGlvbldhdGNocG9pbnQ6Ci0gICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgCiAgICAgY2FzZSBQdXRHbG9iYWxWYXI6CiAgICAgY2Fz
ZSBOb3RpZnlXcml0ZToKICAgICAgICAgYnJlYWs7CkBAIC0xOTAwLDcgKzE5MDMsMTYgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBmb3JOb2RlKG5v
ZGUpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBQcm9maWxlZENh
bGw6CisgICAgY2FzZSBQcm9maWxlZENvbnN0cnVjdDoKKyAgICAgICAgaWYgKGZvck5vZGUobV9n
cmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSkubV92YWx1ZSkKKyAgICAgICAgICAgIG1fc3RhdGUu
c2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CisgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmln
aW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CisgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhl
YXBUb3AoKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIEZvcmNlT1NSRXhpdDoKKyAgICBj
YXNlIENoZWNrQmFkQ2VsbDoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIApAQCAtMTk1NSw3ICsxOTY3LDggQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIGNhc2UgTGFzdE5vZGVUeXBlOgogICAg
IGNhc2UgQXJpdGhJTXVsOgogICAgIGNhc2UgRmlhdEludDUyOgotICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNhc2UgQm90dG9tVmFsdWU6CisgICAgICAgIERGR19D
UkFTSChtX2dyYXBoLCBub2RlLCAiVW5leHBlY3RlZCBub2RlIHR5cGUiKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNr
d2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNzI4
NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9u
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODksNiArMzg5LDExIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgLy8gdGhlbiAtMCBhbmQgMCBhcmUgdHJlYXRlZCB0aGUgc2FtZS4KICAg
ICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKS0+bWVyZ2VGbGFncyhOb2RlQnl0ZWNvZGVVc2Vz
QXNOdW1iZXIgfCBOb2RlQnl0ZWNvZGVVc2VzQXNPdGhlcik7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIFN3aXRjaENlbGw6CisgICAgICAgICAgICAgICAgLy8gVGhl
cmUgaXMgY3VycmVudGx5IG5vIHBvaW50IHRvIGJlaW5nIGNsZXZlciBoZXJlIHNpbmNlIHRoaXMg
aXMgdXNlZCBmb3Igc3dpdGNoaW5nCisgICAgICAgICAgICAgICAgLy8gb24gb2JqZWN0cy4KKyAg
ICAgICAgICAgICAgICBtZXJnZURlZmF1bHRGbGFncyhub2RlKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAJKHJldmlzaW9u
IDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDkgQEAgQmFzaWNCbG9jazo6QmFzaWNCbG9jaygK
IHsKIH0KIAotQmFzaWNCbG9jazo6fkJhc2ljQmxvY2soKSB7IH0KK0Jhc2ljQmxvY2s6On5CYXNp
Y0Jsb2NrKCkKK3sKK30KIAogdm9pZCBCYXNpY0Jsb2NrOjplbnN1cmVMb2NhbHModW5zaWduZWQg
bmV3TnVtTG9jYWxzKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNp
Y0Jsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNp
Y0Jsb2NrLmgJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBAIHN0cnVjdCBC
YXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICBOb2RlKiYgb3BlcmF0b3JbXShz
aXplX3QgaSkgeyByZXR1cm4gYXQoaSk7IH0KICAgICBOb2RlKiBvcGVyYXRvcltdKHNpemVfdCBp
KSBjb25zdCB7IHJldHVybiBhdChpKTsgfQogICAgIE5vZGUqIGxhc3QoKSBjb25zdCB7IHJldHVy
biBhdChzaXplKCkgLSAxKTsgfQorICAgIE5vZGUqIHRha2VMYXN0KCkgeyByZXR1cm4gbV9ub2Rl
cy50YWtlTGFzdCgpOyB9CiAgICAgdm9pZCByZXNpemUoc2l6ZV90IHNpemUpIHsgbV9ub2Rlcy5y
ZXNpemUoc2l6ZSk7IH0KICAgICB2b2lkIGdyb3coc2l6ZV90IHNpemUpIHsgbV9ub2Rlcy5ncm93
KHNpemUpOyB9CiAgICAgCkBAIC0xMDYsNiArMTA3LDEzIEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDog
UmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3Q7CiAgICAgCisgICAgdm9pZCBkaWRMaW5rKCkKKyAgICB7CisjaWYgIUFTU0VSVF9E
SVNBQkxFRAorICAgICAgICBpc0xpbmtlZCA9IHRydWU7CisjZW5kaWYKKyAgICB9CisgICAgCiAg
ICAgLy8gVGhpcyB2YWx1ZSBpcyB1c2VkIGludGVybmFsbHkgZm9yIGJsb2NrIGxpbmtpbmcgYW5k
IE9TUiBlbnRyeS4gSXQgaXMgbW9zdGx5IG1lYW5pbmdsZXNzCiAgICAgLy8gZm9yIG90aGVyIHB1
cnBvc2VzIGR1ZSB0byBpbmxpbmluZy4KICAgICB1bnNpZ25lZCBieXRlY29kZUJlZ2luOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJ
KHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw4IEBACiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAorc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZh
bHNlOworCiBjbGFzcyBDb25zdGFudEJ1ZmZlcktleSB7CiBwdWJsaWM6CiAgICAgQ29uc3RhbnRC
dWZmZXJLZXkoKQpAQCAtMTc4LDE0ICsxODAsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgTm9kZSog
Y2FsbFRhcmdldCwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENhbGxMaW5rU3Rh
dHVzKTsKICAgICB2b2lkIGhhbmRsZUNhbGwoaW50IHJlc3VsdCwgTm9kZVR5cGUgb3AsIENvZGVT
cGVjaWFsaXphdGlvbktpbmQsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwgaW50IGNhbGxlZSwg
aW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQpOwogICAgIHZvaWQgaGFuZGxlQ2FsbChJ
bnN0cnVjdGlvbiogcGMsIE5vZGVUeXBlIG9wLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKLSAg
ICB2b2lkIGVtaXRGdW5jdGlvbkNoZWNrcyhjb25zdCBDYWxsTGlua1N0YXR1cyYsIE5vZGUqIGNh
bGxUYXJnZXQsIGludCByZWdpc3Rlck9mZnNldCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7Cisg
ICAgdm9pZCBlbWl0RnVuY3Rpb25DaGVja3MoQ2FsbFZhcmlhbnQsIE5vZGUqIGNhbGxUYXJnZXQs
IGludCByZWdpc3Rlck9mZnNldCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgdm9pZCB1
bmRvRnVuY3Rpb25DaGVja3MoQ2FsbFZhcmlhbnQpOwogICAgIHZvaWQgZW1pdEFyZ3VtZW50UGhh
bnRvbXMoaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IENvZGVTcGVjaWFsaXphdGlvbktpbmQpOworICAgIHVuc2lnbmVkIGlubGluaW5nQ29zdChDYWxs
VmFyaWFudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kKTsgLy8gUmV0dXJuIFVJTlRfTUFYIGlmIGl0J3Mgbm90IGFuIGlubGluaW5nIGNhbmRp
ZGF0ZS4gQnkgY29udmVudGlvbiwgaW50cmluc2ljcyBoYXZlIGEgY29zdCBvZiAxLgogICAgIC8v
IEhhbmRsZSBpbmxpbmluZy4gUmV0dXJuIHRydWUgaWYgaXQgc3VjY2VlZGVkLCBmYWxzZSBpZiB3
ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4KLSAgICBib29sIGhhbmRsZUlubGluaW5nKE5vZGUqIGNh
bGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBp
bnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWdu
ZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kKTsKKyAgICBib29sIGhhbmRsZUlu
bGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgQ2Fs
bExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxs
RnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pOworICAgIGVudW0gQ2FsbGVy
TGlua2FiaWxpdHkgeyBDYWxsZXJEb2VzTm9ybWFsTGlua2luZywgQ2FsbGVyTGlua3NNYW51YWxs
eSB9OworICAgIGJvb2wgYXR0ZW1wdFRvSW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwg
aW50IHJlc3VsdE9wZXJhbmQsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgSW5saW5lQ2Fs
bEZyYW1lOjpLaW5kLCBDYWxsZXJMaW5rYWJpbGl0eSwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSk7CisgICAgdm9pZCBpbmxpbmVDYWxsKE5vZGUq
IGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcmlhbnQsIGludCByZWdp
c3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0
T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIENhbGxlckxpbmthYmlsaXR5KTsKKyAgICB2
b2lkIGNhbmNlbExpbmtpbmdGb3JCbG9jayhJbmxpbmVTdGFja0VudHJ5KiwgQmFzaWNCbG9jayop
OyAvLyBPbmx5IHdvcmtzIHdoZW4gdGhlIGdpdmVuIGJsb2NrIGlzIHRoZSBsYXN0IG9uZSB0byBo
YXZlIGJlZW4gYWRkZWQgZm9yIHRoYXQgaW5saW5lIHN0YWNrIGVudHJ5LgogICAgIC8vIEhhbmRs
ZSBpbnRyaW5zaWMgZnVuY3Rpb25zLiBSZXR1cm4gdHJ1ZSBpZiBpdCBzdWNjZWVkZWQsIGZhbHNl
IGlmIHdlIG5lZWQgdG8gcGxhbnQgYSBjYWxsLgogICAgIGJvb2wgaGFuZGxlSW50cmluc2ljKGlu
dCByZXN1bHRPcGVyYW5kLCBJbnRyaW5zaWMsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKICAgICBi
b29sIGhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihpbnQgcmVzdWx0T3BlcmFuZCwgSW50ZXJu
YWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBUeXBlZEFycmF5VHlwZSk7Ci0gICAgYm9vbCBoYW5kbGVDb25zdGFudEludGVybmFs
RnVuY3Rpb24oaW50IHJlc3VsdE9wZXJhbmQsIEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0
ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgYm9vbCBoYW5kbGVDb25z
dGFudEludGVybmFsRnVuY3Rpb24oaW50IHJlc3VsdE9wZXJhbmQsIEludGVybmFsRnVuY3Rpb24q
LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCk7CiAgICAgTm9kZSogaGFuZGxlUHV0QnlPZmZzZXQoTm9kZSog
YmFzZSwgdW5zaWduZWQgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIE5vZGUqIHZhbHVlKTsK
ICAgICBOb2RlKiBoYW5kbGVHZXRCeU9mZnNldChTcGVjdWxhdGVkVHlwZSwgTm9kZSogYmFzZSwg
Y29uc3QgU3RydWN0dXJlU2V0JiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgUHJvcGVydHlP
ZmZzZXQsIE5vZGVUeXBlIG9wID0gR2V0QnlPZmZzZXQpOwogICAgIHZvaWQgaGFuZGxlR2V0QnlJ
ZCgKQEAgLTIwMCw4ICsyMDgsOSBAQCBwcml2YXRlOgogCiAgICAgTm9kZSogZ2V0U2NvcGUodW5z
aWduZWQgc2tpcENvdW50KTsKICAgICAKLSAgICAvLyBQcmVwYXJlIHRvIHBhcnNlIGEgYmxvY2su
CiAgICAgdm9pZCBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CisgICAgdm9pZCBjbGVhckNhY2hlcygp
OworCiAgICAgLy8gUGFyc2UgYSBzaW5nbGUgYmFzaWMgYmxvY2sgb2YgYnl0ZWNvZGUgaW5zdHJ1
Y3Rpb25zLgogICAgIGJvb2wgcGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCk7CiAgICAgLy8gTGlu
ayBibG9jayBzdWNjZXNzb3JzLgpAQCAtMjk2LDYgKzMwNSwxMyBAQCBwcml2YXRlOgogICAgICAg
ICAKICAgICAgICAgcmV0dXJuIGRlbGF5ZWQuZXhlY3V0ZSh0aGlzLCBzZXRNb2RlKTsKICAgICB9
CisgICAgCisgICAgdm9pZCBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpCisgICAgeworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zZXRMb2NhbFF1ZXVlLnNpemUoKTsgKytpKQorICAg
ICAgICAgICAgbV9zZXRMb2NhbFF1ZXVlW2ldLmV4ZWN1dGUodGhpcyk7CisgICAgICAgIG1fc2V0
TG9jYWxRdWV1ZS5yZXNpemUoMCk7CisgICAgfQogCiAgICAgTm9kZSogc2V0KFZpcnR1YWxSZWdp
c3RlciBvcGVyYW5kLCBOb2RlKiB2YWx1ZSwgU2V0TW9kZSBzZXRNb2RlID0gTm9ybWFsU2V0KQog
ICAgIHsKQEAgLTYzNyw2ICs2NTMsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQorICAgIAorICAgIHZvaWQgcmVtb3ZlTGFzdE5vZGVGcm9tR3Jh
cGgoTm9kZVR5cGUgZXhwZWN0ZWROb2RlVHlwZSkKKyAgICB7CisgICAgICAgIE5vZGUqIG5vZGUg
PSBtX2N1cnJlbnRCbG9jay0+dGFrZUxhc3QoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobm9k
ZS0+b3AoKSA9PSBleHBlY3RlZE5vZGVUeXBlKTsKKyAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRv
ci5mcmVlKG5vZGUpOworICAgIH0KIAogICAgIHZvaWQgYWRkVmFyQXJnQ2hpbGQoTm9kZSogY2hp
bGQpCiAgICAgewpAQCAtNjQ1LDcgKzY2OCw3IEBAIHByaXZhdGU6CiAgICAgfQogICAgIAogICAg
IE5vZGUqIGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdCgKLSAgICAgICAgTm9kZVR5cGUgb3As
IE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgICAg
IE5vZGVUeXBlIG9wLCBPcEluZm8gb3BJbmZvLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwg
aW50IHJlZ2lzdGVyT2Zmc2V0LAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQog
ICAgIHsKICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoY2FsbGVlKTsKQEAgLTY1MywxOSArNjc2LDE5
IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChwYXJhbWV0ZXJTbG90cyA+IG1fcGFyYW1ldGVyU2xv
dHMpCiAgICAgICAgICAgICBtX3BhcmFtZXRlclNsb3RzID0gcGFyYW1ldGVyU2xvdHM7CiAKLSAg
ICAgICAgaW50IGR1bW15VGhpc0FyZ3VtZW50ID0gb3AgPT0gQ2FsbCB8fCBvcCA9PSBOYXRpdmVD
YWxsID8gMCA6IDE7CisgICAgICAgIGludCBkdW1teVRoaXNBcmd1bWVudCA9IG9wID09IENhbGwg
fHwgb3AgPT0gTmF0aXZlQ2FsbCB8fCBvcCA9PSBQcm9maWxlZENhbGwgPyAwIDogMTsKICAgICAg
ICAgZm9yIChpbnQgaSA9IDAgKyBkdW1teVRoaXNBcmd1bWVudDsgaSA8IGFyZ0NvdW50OyArK2kp
CiAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoaSwgcmVnaXN0ZXJPZmZzZXQpKSk7CiAKLSAgICAgICAgcmV0dXJuIGFkZFRvR3JhcGgoTm9k
ZTo6VmFyQXJnLCBvcCwgT3BJbmZvKDApLCBPcEluZm8ocHJlZGljdGlvbikpOworICAgICAgICBy
ZXR1cm4gYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIG9wLCBvcEluZm8sIE9wSW5mbyhwcmVkaWN0
aW9uKSk7CiAgICAgfQogICAgIAogICAgIE5vZGUqIGFkZENhbGwoCi0gICAgICAgIGludCByZXN1
bHQsIE5vZGVUeXBlIG9wLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVy
T2Zmc2V0LAorICAgICAgICBpbnQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgT3BJbmZvIG9wSW5mbywg
Tm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCwKICAgICAgICAg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKICAgICB7CiAgICAgICAgIE5vZGUqIGNhbGwgPSBh
ZGRDYWxsV2l0aG91dFNldHRpbmdSZXN1bHQoCi0gICAgICAgICAgICBvcCwgY2FsbGVlLCBhcmdD
b3VudCwgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOworICAgICAgICAgICAgb3AsIG9wSW5m
bywgY2FsbGVlLCBhcmdDb3VudCwgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwogICAgICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0UmVnKHJlc3VsdCk7CiAgICAgICAgIGlmIChyZXN1bHRS
ZWcuaXNWYWxpZCgpKQogICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHQpLCBj
YWxsKTsKQEAgLTg3MSw4ICs4OTQsNyBAQCBwcml2YXRlOgogICAgICAgICBWZWN0b3I8VW5saW5r
ZWRCbG9jaz4gbV91bmxpbmtlZEJsb2NrczsKICAgICAgICAgCiAgICAgICAgIC8vIFBvdGVudGlh
bCBibG9jayBsaW5raW5nIHRhcmdldHMuIE11c3QgYmUgc29ydGVkIGJ5IGJ5dGVjb2RlQmVnaW4s
IGFuZAotICAgICAgICAvLyBjYW5ub3QgaGF2ZSB0d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2Ft
ZSBieXRlY29kZUJlZ2luLiBGb3IgdGhpcyB2ZXJ5Ci0gICAgICAgIC8vIHJlYXNvbiwgdGhpcyBp
cyBub3QgZXF1aXZhbGVudCB0byAKKyAgICAgICAgLy8gY2Fubm90IGhhdmUgdHdvIGJsb2NrcyB0
aGF0IGhhdmUgdGhlIHNhbWUgYnl0ZWNvZGVCZWdpbi4KICAgICAgICAgVmVjdG9yPEJhc2ljQmxv
Y2sqPiBtX2Jsb2NrTGlua2luZ1RhcmdldHM7CiAgICAgICAgIAogICAgICAgICAvLyBJZiB0aGUg
Y2FsbHNpdGUncyBiYXNpYyBibG9jayB3YXMgc3BsaXQgaW50byB0d28sIHRoZW4gdGhpcyB3aWxs
IGJlCkBAIC0xMDI0LDcyICsxMDQ2LDU4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNh
bGwoCiAgICAgaWYgKGNhbGxUYXJnZXQtPmhhc0NvbnN0YW50KCkpCiAgICAgICAgIGNhbGxMaW5r
U3RhdHVzID0gQ2FsbExpbmtTdGF0dXMoY2FsbFRhcmdldC0+YXNKU1ZhbHVlKCkpLnNldElzUHJv
dmVkKHRydWUpOwogICAgIAorICAgIGlmICgoIWNhbGxMaW5rU3RhdHVzLmNhbk9wdGltaXplKCkg
fHwgY2FsbExpbmtTdGF0dXMuc2l6ZSgpICE9IDEpCisgICAgICAgICYmICFpc0ZUTChtX2dyYXBo
Lm1fcGxhbi5tb2RlKSAmJiBPcHRpb25zOjp1c2VGVExKSVQoKQorICAgICAgICAmJiBJbmxpbmVD
YWxsRnJhbWU6OmlzTm9ybWFsQ2FsbChraW5kKQorICAgICAgICAmJiBDYWxsRWRnZUxvZzo6aXNF
bmFibGVkKCkKKyAgICAgICAgJiYgT3B0aW9uczo6ZGZnRG9lc0NhbGxFZGdlUHJvZmlsaW5nKCkp
IHsKKyAgICAgICAgQVNTRVJUKG9wID09IENhbGwgfHwgb3AgPT0gQ29uc3RydWN0KTsKKyAgICAg
ICAgaWYgKG9wID09IENhbGwpCisgICAgICAgICAgICBvcCA9IFByb2ZpbGVkQ2FsbDsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgb3AgPSBQcm9maWxlZENvbnN0cnVjdDsKKyAgICB9CisgICAg
CiAgICAgaWYgKCFjYWxsTGlua1N0YXR1cy5jYW5PcHRpbWl6ZSgpKSB7CiAgICAgICAgIC8vIE9k
ZGx5LCB0aGlzIGNvbmZsYXRlcyBjYWxscyB0aGF0IGhhdmVuJ3QgZXhlY3V0ZWQgd2l0aCBjYWxs
cyB0aGF0IGJlaGF2ZWQgc3VmZmljaWVudGx5IHBvbHltb3JwaGljYWxseQogICAgICAgICAvLyB0
aGF0IHdlIGNhbm5vdCBvcHRpbWl6ZSB0aGVtLgogICAgICAgICAKLSAgICAgICAgYWRkQ2FsbChy
ZXN1bHQsIG9wLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0
ZXJPZmZzZXQsIHByZWRpY3Rpb24pOworICAgICAgICBhZGRDYWxsKHJlc3VsdCwgb3AsIE9wSW5m
bygpLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZz
ZXQsIHByZWRpY3Rpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIHVuc2ln
bmVkIG5leHRPZmZzZXQgPSBtX2N1cnJlbnRJbmRleCArIGluc3RydWN0aW9uU2l6ZTsKLQotICAg
IGlmIChJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxMaW5rU3RhdHVzLmludGVybmFs
RnVuY3Rpb24oKSkgewotICAgICAgICBpZiAoaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9u
KHJlc3VsdCwgZnVuY3Rpb24sIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgcHJlZGljdGlvbiwgc3BlY2lhbGl6YXRpb25LaW5kKSkgewotICAgICAgICAgICAgLy8g
VGhpcyBwaGFudG9taW5nIGhhcyB0byBiZSAqYWZ0ZXIqIHRoZSBjb2RlIGZvciB0aGUgaW50cmlu
c2ljLCB0byBzaWduaWZ5IHRoYXQKLSAgICAgICAgICAgIC8vIHRoZSBpbnB1dHMgbXVzdCBiZSBr
ZXB0IGFsaXZlIHdoYXRldmVyIGV4aXRzIHRoZSBpbnRyaW5zaWMgbWF5IGRvLgotICAgICAgICAg
ICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0KTsKLSAgICAgICAgICAgIGVtaXRBcmd1
bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
c3BlY2lhbGl6YXRpb25LaW5kKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgLy8gQ2FuIG9ubHkgaGFuZGxlIHRoaXMgdXNpbmcgdGhlIGdlbmVyaWMg
Y2FsbCBoYW5kbGVyLgotICAgICAgICBhZGRDYWxsKHJlc3VsdCwgb3AsIGNhbGxUYXJnZXQsIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgICAgIAotICAgIEludHJpbnNpYyBpbnRyaW5zaWMg
PSBjYWxsTGlua1N0YXR1cy5pbnRyaW5zaWNGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKLQotICAg
IEpTRnVuY3Rpb24qIGtub3duRnVuY3Rpb24gPSBudWxscHRyOwotICAgIGlmIChpbnRyaW5zaWMg
IT0gTm9JbnRyaW5zaWMpIHsKLSAgICAgICAgZW1pdEZ1bmN0aW9uQ2hlY2tzKGNhbGxMaW5rU3Rh
dHVzLCBjYWxsVGFyZ2V0LCByZWdpc3Rlck9mZnNldCwgc3BlY2lhbGl6YXRpb25LaW5kKTsKLSAg
ICAgICAgICAgIAotICAgICAgICBpZiAoaGFuZGxlSW50cmluc2ljKHJlc3VsdCwgaW50cmluc2lj
LCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHByZWRpY3Rpb24p
KSB7Ci0gICAgICAgICAgICAvLyBUaGlzIHBoYW50b21pbmcgaGFzIHRvIGJlICphZnRlciogdGhl
IGNvZGUgZm9yIHRoZSBpbnRyaW5zaWMsIHRvIHNpZ25pZnkgdGhhdAotICAgICAgICAgICAgLy8g
dGhlIGlucHV0cyBtdXN0IGJlIGtlcHQgYWxpdmUgd2hhdGV2ZXIgZXhpdHMgdGhlIGludHJpbnNp
YyBtYXkgZG8uCi0gICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXQpOwot
ICAgICAgICAgICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQpOwotICAgICAgICAgICAgaWYg
KG1fZ3JhcGguY29tcGlsYXRpb24oKSkKLSAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0
aW9uKCktPm5vdGljZUlubGluZWRDYWxsKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICB9IGVsc2UgaWYgKGhhbmRsZUlubGluaW5nKGNhbGxUYXJnZXQsIHJlc3VsdCwgY2Fs
bExpbmtTdGF0dXMsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
bmV4dE9mZnNldCwga2luZCkpIHsKKyAgICAKKyAgICBPcEluZm8gY2FsbE9wSW5mbzsKKyAgICAK
KyAgICBpZiAoaGFuZGxlSW5saW5pbmcoY2FsbFRhcmdldCwgcmVzdWx0LCBjYWxsTGlua1N0YXR1
cywgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zmc2V0
LCBvcCwga2luZCwgcHJlZGljdGlvbikpIHsKICAgICAgICAgaWYgKG1fZ3JhcGguY29tcGlsYXRp
b24oKSkKICAgICAgICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZENh
bGwoKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICNpZiBFTkFCTEUoRlRMX05BVElW
RV9DQUxMX0lOTElOSU5HKQotICAgIH0gZWxzZSBpZiAoaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9k
ZSkgJiYgT3B0aW9uczo6b3B0aW1pemVOYXRpdmVDYWxscygpKSB7Ci0gICAgICAgIEpTRnVuY3Rp
b24qIGZ1bmN0aW9uID0gY2FsbExpbmtTdGF0dXMuZnVuY3Rpb24oKTsKKyAgICBpZiAoaXNGVEwo
bV9ncmFwaC5tX3BsYW4ubW9kZSkgJiYgT3B0aW9uczo6b3B0aW1pemVOYXRpdmVDYWxscygpICYm
IGNhbGxMaW5rU3RhdHVzLnNpemUoKSA9PSAxICYmICFjYWxsTGlua1N0YXR1cy5jb3VsZFRha2VT
bG93UGF0aCgpKSB7CisgICAgICAgIENhbGxWYXJpYW50IGNhbGxlZSA9IGNhbGxMaW5rU3RhdHVz
WzBdLmNhbGxlZSgpOworICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS5mdW5j
dGlvbigpOwogICAgICAgICBpZiAoZnVuY3Rpb24gJiYgZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9u
KCkpIHsKLSAgICAgICAgICAgIGVtaXRGdW5jdGlvbkNoZWNrcyhjYWxsTGlua1N0YXR1cywgY2Fs
bFRhcmdldCwgcmVnaXN0ZXJPZmZzZXQsIHNwZWNpYWxpemF0aW9uS2luZCk7Ci0gICAgICAgICAg
ICBrbm93bkZ1bmN0aW9uID0gZnVuY3Rpb247CisgICAgICAgICAgICBlbWl0RnVuY3Rpb25DaGVj
a3MoY2FsbGVlLCBjYWxsVGFyZ2V0LCByZWdpc3Rlck9mZnNldCwgc3BlY2lhbGl6YXRpb25LaW5k
KTsKKyAgICAgICAgICAgIGNhbGxPcEluZm8gPSBPcEluZm8obV9ncmFwaC5mcmVlemUoZnVuY3Rp
b24pKTsKIAotICAgICAgICAgICAgaWYgKG9wID09IENhbGwpIAorICAgICAgICAgICAgaWYgKG9w
ID09IENhbGwgfHwgb3AgPT0gUHJvZmlsZWRDYWxsKQogICAgICAgICAgICAgICAgIG9wID0gTmF0
aXZlQ2FsbDsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIEFTU0VSVChvcCA9
PSBDb25zdHJ1Y3QpOworICAgICAgICAgICAgICAgIEFTU0VSVChvcCA9PSBDb25zdHJ1Y3QgfHwg
b3AgPT0gUHJvZmlsZWRDb25zdHJ1Y3QpOwogICAgICAgICAgICAgICAgIG9wID0gTmF0aXZlQ29u
c3RydWN0OwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0jZW5kaWYKICAgICB9Ci0gICAgTm9k
ZSogY2FsbCA9IGFkZENhbGwocmVzdWx0LCBvcCwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKLQotICAgIGlmIChrbm93
bkZ1bmN0aW9uKSAKLSAgICAgICAgY2FsbC0+Z2l2ZUtub3duRnVuY3Rpb24oa25vd25GdW5jdGlv
bik7CisjZW5kaWYKKyAgICAKKyAgICBhZGRDYWxsKHJlc3VsdCwgb3AsIGNhbGxPcEluZm8sIGNh
bGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJl
ZGljdGlvbik7CiB9CiAKLXZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRGdW5jdGlvbkNoZWNrcyhj
b25zdCBDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsIE5vZGUqIGNhbGxUYXJnZXQsIGlu
dCByZWdpc3Rlck9mZnNldCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQordm9pZCBCeXRl
Q29kZVBhcnNlcjo6ZW1pdEZ1bmN0aW9uQ2hlY2tzKENhbGxWYXJpYW50IGNhbGxlZSwgTm9kZSog
Y2FsbFRhcmdldCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtp
bmQpCiB7CiAgICAgTm9kZSogdGhpc0FyZ3VtZW50OwogICAgIGlmIChraW5kID09IENvZGVGb3JD
YWxsKQpAQCAtMTA5NywyMCArMTEwNSwyNSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0RnVu
Y3Rpb25DaGVja3MoCiAgICAgZWxzZQogICAgICAgICB0aGlzQXJndW1lbnQgPSAwOwogCi0gICAg
aWYgKGNhbGxMaW5rU3RhdHVzLmlzUHJvdmVkKCkpIHsKLSAgICAgICAgYWRkVG9HcmFwaChQaGFu
dG9tLCBjYWxsVGFyZ2V0LCB0aGlzQXJndW1lbnQpOwotICAgICAgICByZXR1cm47CisgICAgSlND
ZWxsKiBjYWxsZWVDZWxsOworICAgIE5vZGUqIGNhbGxUYXJnZXRGb3JDaGVjazsKKyAgICBpZiAo
Y2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSkgeworICAgICAgICBjYWxsZWVDZWxsID0gY2FsbGVlLmV4
ZWN1dGFibGUoKTsKKyAgICAgICAgY2FsbFRhcmdldEZvckNoZWNrID0gYWRkVG9HcmFwaChHZXRF
eGVjdXRhYmxlLCBjYWxsVGFyZ2V0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBjYWxsZWVDZWxs
ID0gY2FsbGVlLm5vbkV4ZWN1dGFibGVDYWxsZWUoKTsKKyAgICAgICAgY2FsbFRhcmdldEZvckNo
ZWNrID0gY2FsbFRhcmdldDsKICAgICB9CiAgICAgCi0gICAgQVNTRVJUKGNhbGxMaW5rU3RhdHVz
LmNhbk9wdGltaXplKCkpOwotICAgIAotICAgIGlmIChKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNh
bGxMaW5rU3RhdHVzLmZ1bmN0aW9uKCkpCi0gICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tGdW5jdGlv
biwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKGZ1bmN0aW9uKSksIGNhbGxUYXJnZXQsIHRoaXNBcmd1
bWVudCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChjYWxsTGlua1N0YXR1cy5leGVjdXRh
YmxlKCkpOwotICAgICAgICAKLSAgICAgICAgYWRkVG9HcmFwaChDaGVja0V4ZWN1dGFibGUsIE9w
SW5mbyhjYWxsTGlua1N0YXR1cy5leGVjdXRhYmxlKCkpLCBjYWxsVGFyZ2V0LCB0aGlzQXJndW1l
bnQpOwotICAgIH0KKyAgICBBU1NFUlQoY2FsbGVlQ2VsbCk7CisgICAgYWRkVG9HcmFwaChDaGVj
a0NlbGwsIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShjYWxsZWVDZWxsKSksIGNhbGxUYXJnZXRGb3JD
aGVjaywgdGhpc0FyZ3VtZW50KTsKK30KKwordm9pZCBCeXRlQ29kZVBhcnNlcjo6dW5kb0Z1bmN0
aW9uQ2hlY2tzKENhbGxWYXJpYW50IGNhbGxlZSkKK3sKKyAgICByZW1vdmVMYXN0Tm9kZUZyb21H
cmFwaChDaGVja0NlbGwpOworICAgIGlmIChjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKQorICAgICAg
ICByZW1vdmVMYXN0Tm9kZUZyb21HcmFwaChHZXRFeGVjdXRhYmxlKTsKIH0KIAogdm9pZCBCeXRl
Q29kZVBhcnNlcjo6ZW1pdEFyZ3VtZW50UGhhbnRvbXMoaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkK
QEAgLTExMTksMjggKzExMzIsMTcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdEFyZ3VtZW50
UGhhbnRvbQogICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGdldCh2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChpLCByZWdpc3Rlck9mZnNldCkpKTsKIH0KIAotYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5k
LCBjb25zdCBDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsIGludCByZWdpc3Rlck9mZnNl
dCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBJ
bmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCkKK3Vuc2lnbmVkIEJ5dGVDb2RlUGFyc2VyOjppbmxp
bmluZ0Nvc3QoQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYm9v
bCB2ZXJib3NlID0gZmFsc2U7Ci0gICAgCi0gICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVj
aWFsaXphdGlvbktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihr
aW5kKTsKLSAgICAKICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZygiQ29uc2lkZXJp
bmcgaW5saW5pbmcgIiwgY2FsbExpbmtTdGF0dXMsICIgaW50byAiLCBjdXJyZW50Q29kZU9yaWdp
bigpLCAiXG4iKTsKKyAgICAgICAgZGF0YUxvZygiQ29uc2lkZXJpbmcgaW5saW5pbmcgIiwgY2Fs
bGVlLCAiIGludG8gIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAgICAgCi0gICAgLy8g
Rmlyc3QsIHRoZSByZWFsbHkgc2ltcGxlIGNoZWNrczogZG8gd2UgaGF2ZSBhbiBhY3R1YWwgSlMg
ZnVuY3Rpb24/Ci0gICAgaWYgKCFjYWxsTGlua1N0YXR1cy5leGVjdXRhYmxlKCkpIHsKKyAgICBG
dW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjYWxsZWUuZnVuY3Rpb25FeGVjdXRhYmxl
KCk7CisgICAgaWYgKCFleGVjdXRhYmxlKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAg
ICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSB0aGVyZSBpcyBubyBleGVjdXRhYmxl
LlxuIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICBG
YWlsaW5nIGJlY2F1c2UgdGhlcmUgaXMgbm8gZnVuY3Rpb24gZXhlY3V0YWJsZS4iKTsKKyAgICAg
ICAgcmV0dXJuIFVJTlRfTUFYOwogICAgIH0KLSAgICBpZiAoY2FsbExpbmtTdGF0dXMuZXhlY3V0
YWJsZSgpLT5pc0hvc3RGdW5jdGlvbigpKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQotICAgICAg
ICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSBpdCdzIGEgaG9zdCBmdW5jdGlvbi5c
biIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAotICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihjYWxsTGlu
a1N0YXR1cy5leGVjdXRhYmxlKCkpOwogICAgIAogICAgIC8vIERvZXMgdGhlIG51bWJlciBvZiBh
cmd1bWVudHMgd2UncmUgcGFzc2luZyBtYXRjaCB0aGUgYXJpdHkgb2YgdGhlIHRhcmdldD8gV2Ug
Y3VycmVudGx5CiAgICAgLy8gaW5saW5lIG9ubHkgaWYgdGhlIG51bWJlciBvZiBhcmd1bWVudHMg
cGFzc2VkIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbnVtYmVyCkBAIC0xMTQ4LDcg
KzExNTAsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAg
aWYgKHN0YXRpY19jYXN0PGludD4oZXhlY3V0YWJsZS0+cGFyYW1ldGVyQ291bnQoKSkgKyAxID4g
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIG9mIGFyaXR5IG1pc21hdGNoLlxu
Iik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAg
IH0KICAgICAKICAgICAvLyBEbyB3ZSBoYXZlIGEgY29kZSBibG9jaywgYW5kIGRvZXMgdGhlIGNv
ZGUgYmxvY2sncyBzaXplIG1hdGNoIHRoZSBoZXVyaXN0aWNzL3JlcXVpcmVtZW50cyBmb3IKQEAg
LTExNTcsMTggKzExNTksMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmco
Tm9kZQogICAgIC8vIGlmIHdlIGhhZCBhIHN0YXRpYyBwcm9vZiBvZiB3aGF0IHdhcyBiZWluZyBj
YWxsZWQ7IHRoaXMgbWlnaHQgaGFwcGVuIGZvciBleGFtcGxlIGlmIHlvdSBjYWxsIGEKICAgICAv
LyBnbG9iYWwgZnVuY3Rpb24sIHdoZXJlIHdhdGNocG9pbnRpbmcgZ2l2ZXMgdXMgc3RhdGljIGlu
Zm9ybWF0aW9uLiBPdmVyYWxsLCBpdCdzIGEgcmFyZSBjYXNlCiAgICAgLy8gYmVjYXVzZSB3ZSBl
eHBlY3QgdGhhdCBhbnkgaG90IGNhbGxlZXMgd291bGQgaGF2ZSBhbHJlYWR5IGJlZW4gY29tcGls
ZWQuCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5iYXNlbGluZUNvZGVC
bG9ja0ZvcihzcGVjaWFsaXphdGlvbktpbmQpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
ZXhlY3V0YWJsZS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Ioa2luZCk7CiAgICAgaWYgKCFjb2RlQmxv
Y2spIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFp
bGluZyBiZWNhdXNlIG5vIGNvZGUgYmxvY2sgYXZhaWxhYmxlLlxuIik7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgIH0KICAgICBDYXBhYmlsaXR5
TGV2ZWwgY2FwYWJpbGl0eUxldmVsID0gaW5saW5lRnVuY3Rpb25Gb3JDYXBhYmlsaXR5TGV2ZWwo
Ci0gICAgICAgIGNvZGVCbG9jaywgc3BlY2lhbGl6YXRpb25LaW5kLCBjYWxsTGlua1N0YXR1cy5p
c0Nsb3N1cmVDYWxsKCkpOworICAgICAgICBjb2RlQmxvY2ssIGtpbmQsIGNhbGxlZS5pc0Nsb3N1
cmVDYWxsKCkpOwogICAgIGlmICghY2FuSW5saW5lKGNhcGFiaWxpdHlMZXZlbCkpIHsKICAgICAg
ICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNl
IHRoZSBmdW5jdGlvbiBpcyBub3QgaW5saW5lYWJsZS5cbiIpOwotICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CiAgICAgCiAgICAgLy8gQ2hlY2sg
aWYgdGhlIGNhbGxlciBpcyBhbHJlYWR5IHRvbyBsYXJnZS4gV2UgZG8gdGhpcyBjaGVjayBoZXJl
IGJlY2F1c2UgdGhhdCdzIGp1c3QKQEAgLTExNzgsNyArMTE4MCw3IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAgICAgY29kZUJsb2NrLT5tX3Nob3VsZEFs
d2F5c0JlSW5saW5lZCA9IGZhbHNlOwogICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAg
IGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgdGhlIGNhbGxlciBpcyB0b28gbGFyZ2UuXG4i
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAg
fQogICAgIAogICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBiZXR0ZXIgYXQgcHJlZGljdGlu
ZyBob3cgbXVjaCBibG9hdCB3ZSB3aWxsIGludHJvZHVjZSBieSBpbmxpbmluZwpAQCAtMTE5Nyw3
ICsxMTk5LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAg
ICAgICBpZiAoZGVwdGggPj0gT3B0aW9uczo6bWF4aW11bUlubGluaW5nRGVwdGgoKSkgewogICAg
ICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxp
bmcgYmVjYXVzZSBkZXB0aCBleGNlZWRlZC5cbiIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICBpZiAoZW50cnktPmV4ZWN1dGFibGUoKSA9PSBleGVjdXRhYmxlKSB7CkBAIC0xMjA1LDE5
ICsxMjA3LDI2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAg
ICAgICAgICAgIGlmIChyZWN1cnNpb24gPj0gT3B0aW9uczo6bWF4aW11bUlubGluaW5nUmVjdXJz
aW9uKCkpIHsKICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSByZWN1cnNpb24gZGV0ZWN0ZWQuXG4iKTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIFVJ
TlRfTUFYOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIAogICAgIGlmICh2
ZXJib3NlKQotICAgICAgICBkYXRhTG9nKCIgICAgQ29tbWl0dGluZyB0byBpbmxpbmluZy5cbiIp
OworICAgICAgICBkYXRhTG9nKCIgICAgSW5saW5pbmcgc2hvdWxkIGJlIHBvc3NpYmxlLlxuIik7
CiAgICAgCi0gICAgLy8gTm93IHdlIGtub3cgd2l0aG91dCBhIGRvdWJ0IHRoYXQgd2UgYXJlIGNv
bW1pdHRlZCB0byBpbmxpbmluZy4gU28gYmVnaW4gdGhlIHByb2Nlc3MKLSAgICAvLyBieSBjaGVj
a2luZyB0aGUgY2FsbGVlIChpZiBuZWNlc3NhcnkpIGFuZCBtYWtpbmcgc3VyZSB0aGF0IGFyZ3Vt
ZW50cyBhbmQgdGhlIGNhbGxlZQotICAgIC8vIGFyZSBmbHVzaGVkLgotICAgIGVtaXRGdW5jdGlv
bkNoZWNrcyhjYWxsTGlua1N0YXR1cywgY2FsbFRhcmdldE5vZGUsIHJlZ2lzdGVyT2Zmc2V0LCBz
cGVjaWFsaXphdGlvbktpbmQpOworICAgIC8vIEl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRvIGlubGlu
ZS4KKyAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCk7Cit9CisKK3ZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1
bHRPcGVyYW5kLCBDYWxsVmFyaWFudCBjYWxsZWUsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxs
RnJhbWU6OktpbmQga2luZCwgQ2FsbGVyTGlua2FiaWxpdHkgY2FsbGVyTGlua2FiaWxpdHkpCit7
CisgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQgPSBJbmxpbmVD
YWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5kKTsKKyAgICAKKyAgICBBU1NFUlQo
aW5saW5pbmdDb3N0KGNhbGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxp
emF0aW9uS2luZCkgIT0gVUlOVF9NQVgpOwogICAgIAorICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gY2FsbGVlLmZ1bmN0aW9uRXhlY3V0YWJsZSgpLT5iYXNlbGluZUNvZGVCbG9ja0ZvcihzcGVj
aWFsaXphdGlvbktpbmQpOworCiAgICAgLy8gRklYTUU6IERvbid0IGZsdXNoIGNvbnN0YW50cyEK
ICAgICAKICAgICBpbnQgaW5saW5lQ2FsbEZyYW1lU3RhcnQgPSBtX2lubGluZVN0YWNrVG9wLT5y
ZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0KSkub2Zmc2V0KCkgKyBK
U1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOwpAQCAtMTIzMyw3ICsxMjQyLDcgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgICAgICByZXN1bHRSZWcgPSBt
X2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQocmVzdWx0UmVnKTsKICAgICAKICAgICBJbmxp
bmVTdGFja0VudHJ5IGlubGluZVN0YWNrRW50cnkoCi0gICAgICAgIHRoaXMsIGNvZGVCbG9jaywg
Y29kZUJsb2NrLCBtX2dyYXBoLmxhc3RCbG9jaygpLCBjYWxsTGlua1N0YXR1cy5mdW5jdGlvbigp
LCByZXN1bHRSZWcsCisgICAgICAgIHRoaXMsIGNvZGVCbG9jaywgY29kZUJsb2NrLCBtX2dyYXBo
Lmxhc3RCbG9jaygpLCBjYWxsZWUuZnVuY3Rpb24oKSwgcmVzdWx0UmVnLAogICAgICAgICAoVmly
dHVhbFJlZ2lzdGVyKWlubGluZUNhbGxGcmFtZVN0YXJ0LCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywga2luZCk7CiAgICAgCiAgICAgLy8gVGhpcyBpcyB3aGVyZSB0aGUgYWN0dWFsIGlubGlu
aW5nIHJlYWxseSBoYXBwZW5zLgpAQCAtMTI0Nyw4ICsxMjU2LDggQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgIAogICAgIFJFTEVBU0VfQVNTRVJUKAogICAg
ICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbAot
ICAgICAgICA9PSBjYWxsTGlua1N0YXR1cy5pc0Nsb3N1cmVDYWxsKCkpOwotICAgIGlmIChjYWxs
TGlua1N0YXR1cy5pc0Nsb3N1cmVDYWxsKCkpIHsKKyAgICAgICAgPT0gY2FsbGVlLmlzQ2xvc3Vy
ZUNhbGwoKSk7CisgICAgaWYgKGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpIHsKICAgICAgICAgVmFy
aWFibGVBY2Nlc3NEYXRhKiBjYWxsZWVWYXJpYWJsZSA9CiAgICAgICAgICAgICBzZXQoVmlydHVh
bFJlZ2lzdGVyKEpTU3RhY2s6OkNhbGxlZSksIGNhbGxUYXJnZXROb2RlLCBJbW1lZGlhdGVOYWtl
ZFNldCktPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwogICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEq
IHNjb3BlVmFyaWFibGUgPQpAQCAtMTI2Myw3ICsxMjcyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgIG1fZ3JhcGgubV9pbmxpbmVWYXJpYWJsZURhdGEu
YXBwZW5kKGlubGluZVZhcmlhYmxlRGF0YSk7CiAgICAgCiAgICAgcGFyc2VDb2RlQmxvY2soKTsK
LSAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7IC8vIFJlc2V0IG91ciBzdGF0ZSBub3cgdGhhdCB3
ZSdyZSBiYWNrIHRvIHRoZSBvdXRlciBjb2RlLgorICAgIGNsZWFyQ2FjaGVzKCk7IC8vIFJlc2V0
IG91ciBzdGF0ZSBub3cgdGhhdCB3ZSdyZSBiYWNrIHRvIHRoZSBvdXRlciBjb2RlLgogICAgIAog
ICAgIG1fY3VycmVudEluZGV4ID0gb2xkSW5kZXg7CiAgICAgCkBAIC0xMjc2LDIwICsxMjg1LDgg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxzaXRlQmxvY2tIZWFk
LT5pc0xpbmtlZCk7CiAgICAgICAgIAotICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgdGhl
IGNhbGxzaXRlIGJsb2NrIGhlYWQgaXMgbm90IG93bmVkIGJ5IHRoZSBjYWxsZXIuCi0gICAgICAg
IGlmICghaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5pc0VtcHR5
KCkpIHsKLSAgICAgICAgICAgIC8vIEl0J3MgZGVmaW5pdGVseSBvd25lZCBieSB0aGUgY2FsbGVy
LCBiZWNhdXNlIHRoZSBjYWxsZXIgY3JlYXRlZCBuZXcgYmxvY2tzLgotICAgICAgICAgICAgLy8g
QXNzZXJ0IHRoYXQgdGhpcyBhbGwgYWRkcyB1cC4KLSAgICAgICAgICAgIEFTU0VSVChpbmxpbmVT
dGFja0VudHJ5Lm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX2Jsb2NrID09IGlu
bGluZVN0YWNrRW50cnkubV9jYWxsc2l0ZUJsb2NrSGVhZCk7Ci0gICAgICAgICAgICBBU1NFUlQo
aW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9uZWVk
c05vcm1hbExpbmtpbmcpOwotICAgICAgICAgICAgaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+
bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9uZWVkc05vcm1hbExpbmtpbmcgPSBmYWxzZTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIEl0J3MgZGVmaW5pdGVseSBub3Qgb3duZWQg
YnkgdGhlIGNhbGxlci4gVGVsbCB0aGUgY2FsbGVyIHRoYXQgaGUgZG9lcyBub3QKLSAgICAgICAg
ICAgIC8vIG5lZWQgdG8gbGluayBoaXMgY2FsbHNpdGUgYmxvY2sgaGVhZCwgYmVjYXVzZSB3ZSBk
aWQgaXQgZm9yIGhpbS4KLSAgICAgICAgICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5Lm1fY2Fs
bGVyLT5tX2NhbGxzaXRlQmxvY2tIZWFkTmVlZHNMaW5raW5nKTsKLSAgICAgICAgICAgIEFTU0VS
VChpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLT5tX2NhbGxzaXRlQmxvY2tIZWFkID09IGlubGlu
ZVN0YWNrRW50cnkubV9jYWxsc2l0ZUJsb2NrSGVhZCk7Ci0gICAgICAgICAgICBpbmxpbmVTdGFj
a0VudHJ5Lm1fY2FsbGVyLT5tX2NhbGxzaXRlQmxvY2tIZWFkTmVlZHNMaW5raW5nID0gZmFsc2U7
Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGNhbGxlckxpbmthYmlsaXR5ID09IENhbGxlckRvZXNO
b3JtYWxMaW5raW5nKQorICAgICAgICAgICAgY2FuY2VsTGlua2luZ0ZvckJsb2NrKGlubGluZVN0
YWNrRW50cnkubV9jYWxsZXIsIGlubGluZVN0YWNrRW50cnkubV9jYWxsc2l0ZUJsb2NrSGVhZCk7
CiAgICAgICAgIAogICAgICAgICBsaW5rQmxvY2tzKGlubGluZVN0YWNrRW50cnkubV91bmxpbmtl
ZEJsb2NrcywgaW5saW5lU3RhY2tFbnRyeS5tX2Jsb2NrTGlua2luZ1RhcmdldHMpOwogICAgIH0g
ZWxzZQpAQCAtMTMwOCwxNiArMTMwNSwxOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJ
bmxpbmluZyhOb2RlCiAgICAgICAgICAgICAvLyBmb3IgcmVsZWFzZSBidWlsZHMgYmVjYXVzZSB0
aGlzIGJsb2NrIHdpbGwgbmV2ZXIgc2VydmUgYXMgYSBwb3RlbnRpYWwgdGFyZ2V0CiAgICAgICAg
ICAgICAvLyBpbiB0aGUgbGlua2VyJ3MgYmluYXJ5IHNlYXJjaC4KICAgICAgICAgICAgIGxhc3RC
bG9jay0+Ynl0ZWNvZGVCZWdpbiA9IG1fY3VycmVudEluZGV4OwotICAgICAgICAgICAgbV9pbmxp
bmVTdGFja1RvcC0+bV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxv
Y2sobV9ncmFwaC5sYXN0QmxvY2soKSkpOworICAgICAgICAgICAgaWYgKGNhbGxlckxpbmthYmls
aXR5ID09IENhbGxlckRvZXNOb3JtYWxMaW5raW5nKSB7CisgICAgICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkFkZGluZyB1bmxpbmtlZCBibG9j
ayAiLCBSYXdQb2ludGVyKG1fZ3JhcGgubGFzdEJsb2NrKCkpLCAiIChvbmUgcmV0dXJuKVxuIik7
CisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fdW5saW5rZWRC
bG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2sobV9ncmFwaC5sYXN0QmxvY2soKSkpOworICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBtX2N1cnJlbnRCbG9jayA9IG1f
Z3JhcGgubGFzdEJsb2NrKCk7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIAogICAgIC8vIElmIHdlIGdldCB0byB0aGlzIHBvaW50IHRoZW4gYWxsIGJs
b2NrcyBtdXN0IGVuZCBpbiBzb21lIHNvcnQgb2YgdGVybWluYWxzLgogICAgIEFTU0VSVChsYXN0
QmxvY2stPmxhc3QoKS0+aXNUZXJtaW5hbCgpKTsKLSAgICAKIAogICAgIC8vIE5lZWQgdG8gY3Jl
YXRlIGEgbmV3IGJhc2ljIGJsb2NrIGZvciB0aGUgY29udGludWF0aW9uIGF0IHRoZSBjYWxsZXIu
CiAgICAgUmVmUHRyPEJhc2ljQmxvY2s+IGJsb2NrID0gYWRvcHRSZWYobmV3IEJhc2ljQmxvY2so
bmV4dE9mZnNldCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCBQTmFOKSk7CkBAIC0xMzMz
LDIwICsxMzMzLDI5MyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2Rl
CiAgICAgICAgIEFTU0VSVCghbm9kZS0+dGFyZ2V0QmxvY2soKSk7CiAgICAgICAgIG5vZGUtPnRh
cmdldEJsb2NrKCkgPSBibG9jay5nZXQoKTsKICAgICAgICAgaW5saW5lU3RhY2tFbnRyeS5tX3Vu
bGlua2VkQmxvY2tzW2ldLm1fbmVlZHNFYXJseVJldHVybkxpbmtpbmcgPSBmYWxzZTsKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECi0gICAgICAgIGJsb2NrVG9MaW5rLT5pc0xpbmtlZCA9IHRydWU7Ci0j
ZW5kaWYKKyAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBkYXRhTG9nKCJNYXJraW5n
ICIsIFJhd1BvaW50ZXIoYmxvY2tUb0xpbmspLCAiIGFzIGxpbmtlZCAoanVtcHMgdG8gcmV0dXJu
KVxuIik7CisgICAgICAgIGJsb2NrVG9MaW5rLT5kaWRMaW5rKCk7CiAgICAgfQogICAgIAogICAg
IG1fY3VycmVudEJsb2NrID0gYmxvY2suZ2V0KCk7CiAgICAgQVNTRVJUKG1faW5saW5lU3RhY2tU
b3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuaXNFbXB0eSgpIHx8IG1faW5saW5l
U3RhY2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMubGFzdCgpLT5ieXRlY29k
ZUJlZ2luIDwgbmV4dE9mZnNldCk7Ci0gICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1f
dW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2suZ2V0KCkpKTsKLSAgICBt
X2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChi
bG9jay5nZXQoKSk7CisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGRhdGFMb2coIkFkZGluZyB1
bmxpbmtlZCBibG9jayAiLCBSYXdQb2ludGVyKGJsb2NrLmdldCgpKSwgIiAobWFueSByZXR1cm5z
KVxuIik7CisgICAgaWYgKGNhbGxlckxpbmthYmlsaXR5ID09IENhbGxlckRvZXNOb3JtYWxMaW5r
aW5nKSB7CisgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX3VubGlua2VkQmxv
Y2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLmdldCgpKSk7CisgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuYXBwZW5kKGJsb2NrLmdl
dCgpKTsKKyAgICB9CiAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhibG9jayk7CiAgICAgcHJlcGFy
ZVRvUGFyc2VCbG9jaygpOworfQorCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpjYW5jZWxMaW5raW5n
Rm9yQmxvY2soSW5saW5lU3RhY2tFbnRyeSogaW5saW5lU3RhY2tFbnRyeSwgQmFzaWNCbG9jayog
YmxvY2spCit7CisgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHRoZSBjYWxsc2l0ZSBibG9jayBo
ZWFkIGlzIG5vdCBvd25lZCBieSB0aGUgY2FsbGVyLgorICAgIGlmICghaW5saW5lU3RhY2tFbnRy
eS0+bV91bmxpbmtlZEJsb2Nrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gSXQncyBkZWZpbml0
ZWx5IG93bmVkIGJ5IHRoZSBjYWxsZXIsIGJlY2F1c2UgdGhlIGNhbGxlciBjcmVhdGVkIG5ldyBi
bG9ja3MuCisgICAgICAgIC8vIEFzc2VydCB0aGF0IHRoaXMgYWxsIGFkZHMgdXAuCisgICAgICAg
IEFTU0VSVF9VTlVTRUQoYmxvY2ssIGlubGluZVN0YWNrRW50cnktPm1fdW5saW5rZWRCbG9ja3Mu
bGFzdCgpLm1fYmxvY2sgPT0gYmxvY2spOworICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRy
eS0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9uZWVkc05vcm1hbExpbmtpbmcpOworICAgICAg
ICBpbmxpbmVTdGFja0VudHJ5LT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX25lZWRzTm9ybWFs
TGlua2luZyA9IGZhbHNlOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEl0J3MgZGVmaW5pdGVs
eSBub3Qgb3duZWQgYnkgdGhlIGNhbGxlci4gVGVsbCB0aGUgY2FsbGVyIHRoYXQgaGUgZG9lcyBu
b3QKKyAgICAgICAgLy8gbmVlZCB0byBsaW5rIGhpcyBjYWxsc2l0ZSBibG9jayBoZWFkLCBiZWNh
dXNlIHdlIGRpZCBpdCBmb3IgaGltLgorICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS0+
bV9jYWxsc2l0ZUJsb2NrSGVhZE5lZWRzTGlua2luZyk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQo
YmxvY2ssIGlubGluZVN0YWNrRW50cnktPm1fY2FsbHNpdGVCbG9ja0hlYWQgPT0gYmxvY2spOwor
ICAgICAgICBpbmxpbmVTdGFja0VudHJ5LT5tX2NhbGxzaXRlQmxvY2tIZWFkTmVlZHNMaW5raW5n
ID0gZmFsc2U7CisgICAgfQorfQorCitib29sIEJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9Jbmxp
bmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcmlh
bnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIENh
bGxlckxpbmthYmlsaXR5IGNhbGxlckxpbmthYmlsaXR5LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uLCB1bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlKQoreworICAgIENvZGVTcGVjaWFsaXphdGlv
bktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXphdGlv
bktpbmRGb3Ioa2luZCk7CisgICAgCisgICAgaWYgKCFpbmxpbmluZ0JhbGFuY2UpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24g
PSBjYWxsZWUuaW50ZXJuYWxGdW5jdGlvbigpKSB7CisgICAgICAgIGlmIChoYW5kbGVDb25zdGFu
dEludGVybmFsRnVuY3Rpb24ocmVzdWx0T3BlcmFuZCwgZnVuY3Rpb24sIHJlZ2lzdGVyT2Zmc2V0
LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kKSkgeworICAg
ICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0Tm9kZSk7CisgICAgICAgICAg
ICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgICAgICAgICBpbmxpbmluZ0JhbGFu
Y2UtLTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgCisgICAgSW50cmluc2ljIGludHJpbnNpYyA9IGNhbGxlZS5p
bnRyaW5zaWNGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICBpZiAoaW50cmluc2ljICE9IE5v
SW50cmluc2ljKSB7CisgICAgICAgIGlmIChoYW5kbGVJbnRyaW5zaWMocmVzdWx0T3BlcmFuZCwg
aW50cmluc2ljLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHBy
ZWRpY3Rpb24pKSB7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXRO
b2RlKTsKKyAgICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICAgICAg
ICAgIGlubGluaW5nQmFsYW5jZS0tOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBteUlu
bGluaW5nQ29zdCA9IGlubGluaW5nQ29zdChjYWxsZWUsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgIGlmIChteUlubGluaW5nQ29zdCA+IGlubGlu
aW5nQmFsYW5jZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlubGluZUNhbGwo
Y2FsbFRhcmdldE5vZGUsIHJlc3VsdE9wZXJhbmQsIGNhbGxlZSwgcmVnaXN0ZXJPZmZzZXQsIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zmc2V0LCBraW5kLCBjYWxsZXJMaW5rYWJp
bGl0eSk7CisgICAgaW5saW5pbmdCYWxhbmNlIC09IG15SW5saW5pbmdDb3N0OworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlKiBj
YWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBj
YWxsTGlua1N0YXR1cywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2Fs
bEZyYW1lOjpLaW5kIGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCit7CisgICAgaWYg
KHZlcmJvc2UpIHsKKyAgICAgICAgZGF0YUxvZygiSGFuZGxpbmcgaW5saW5pbmcuLi5cbiIpOwor
ICAgICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7Cisg
ICAgfQorICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5s
aW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXphdGlvbktpbmRGb3Ioa2luZCk7CisgICAgCisgICAgaWYg
KCFjYWxsTGlua1N0YXR1cy5zaXplKCkpIHsKKyAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICBkYXRhTG9nKCJCYWlsaW5nIGlubGluaW5nLlxuIik7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgaW5saW5pbmdCYWxhbmNlID0gT3B0aW9uczo6
bWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKTsK
KyAgICBpZiAoc3BlY2lhbGl6YXRpb25LaW5kID09IENvZGVGb3JDb25zdHJ1Y3QpCisgICAgICAg
IGlubGluaW5nQmFsYW5jZSA9IHN0ZDo6bWluKGlubGluaW5nQmFsYW5jZSwgT3B0aW9uczo6bWF4
aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgp
KTsKKyAgICBpZiAoY2FsbExpbmtTdGF0dXMuaXNDbG9zdXJlQ2FsbCgpKQorICAgICAgICBpbmxp
bmluZ0JhbGFuY2UgPSBzdGQ6Om1pbihpbmxpbmluZ0JhbGFuY2UsIE9wdGlvbnM6Om1heGltdW1G
dW5jdGlvbkZvckNsb3N1cmVDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgpKTsK
KyAgICAKKyAgICAvLyBGaXJzdCBjaGVjayBpZiB3ZSBjYW4gYXZvaWQgY3JlYXRpbmcgY29udHJv
bCBmbG93LiBPdXIgaW5saW5lciBkb2VzIHNvbWUgQ0ZHCisgICAgLy8gc2ltcGxpZmljYXRpb24g
b24gdGhlIGZseSBhbmQgdGhpcyBoZWxwcyByZWR1Y2UgY29tcGlsZSB0aW1lcywgYnV0IHdlIGNh
biBvbmx5IGxldmVyYWdlCisgICAgLy8gdGhpcyBpbiBjYXNlcyB3aGVyZSB3ZSBkb24ndCBuZWVk
IGNvbnRyb2wgZmxvdyBkaWFtb25kcyB0byBjaGVjayB0aGUgY2FsbGVlLgorICAgIGlmICghY2Fs
bExpbmtTdGF0dXMuY291bGRUYWtlU2xvd1BhdGgoKSAmJiBjYWxsTGlua1N0YXR1cy5zaXplKCkg
PT0gMSkgeworICAgICAgICBlbWl0RnVuY3Rpb25DaGVja3MoCisgICAgICAgICAgICBjYWxsTGlu
a1N0YXR1c1swXS5jYWxsZWUoKSwgY2FsbFRhcmdldE5vZGUsIHJlZ2lzdGVyT2Zmc2V0LCBzcGVj
aWFsaXphdGlvbktpbmQpOworICAgICAgICBib29sIHJlc3VsdCA9IGF0dGVtcHRUb0lubGluZUNh
bGwoCisgICAgICAgICAgICBjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0T3BlcmFuZCwgY2FsbExpbmtT
dGF0dXNbMF0uY2FsbGVlKCksIHJlZ2lzdGVyT2Zmc2V0LAorICAgICAgICAgICAgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQsIGtpbmQsIENhbGxlckRvZXNOb3JtYWxMaW5r
aW5nLCBwcmVkaWN0aW9uLAorICAgICAgICAgICAgaW5saW5pbmdCYWxhbmNlKTsKKyAgICAgICAg
aWYgKCFyZXN1bHQgJiYgIWNhbGxMaW5rU3RhdHVzLmlzUHJvdmVkKCkpCisgICAgICAgICAgICB1
bmRvRnVuY3Rpb25DaGVja3MoY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVlKCkpOworICAgICAgICBp
ZiAodmVyYm9zZSkgeworICAgICAgICAgICAgZGF0YUxvZygiRG9uZSBpbmxpbmluZyAoc2ltcGxl
KS5cbiIpOworICAgICAgICAgICAgZGF0YUxvZygiU3RhY2s6ICIsIGN1cnJlbnRDb2RlT3JpZ2lu
KCksICJcbiIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAg
IAorICAgIC8vIFdlIG5lZWQgdG8gY3JlYXRlIHNvbWUga2luZCBvZiBzd2l0Y2ggb3ZlciBjYWxs
ZWUuIEZvciBub3cgd2Ugb25seSBkbyB0aGlzIGlmIHdlIGJlbGlldmUgdGhhdAorICAgIC8vIHdl
J3JlIGluIHRoZSB0b3AgdGllci4gV2UgaGF2ZSB0d28gcmVhc29ucyBmb3IgdGhpczogZmlyc3Qs
IGl0IHByb3ZpZGVzIHVzIGFuIG9wcG9ydHVuaXR5IHRvCisgICAgLy8gZG8gbW9yZSBkZXRhaWxl
ZCBwb2x5dmFyaWFudC9wb2x5bW9ycGhpYyBwcm9maWxpbmc7IGFuZCBzZWNvbmQsIGl0IHJlZHVj
ZXMgY29tcGlsZSB0aW1lcyBpbgorICAgIC8vIHRoZSBERkcuIEFuZCBieSBwb2x5dmFyaWFudCBw
cm9maWxpbmcgd2UgbWVhbiBwb2x5dmFyaWFudCBwcm9maWxpbmcgb2YgKnRoaXMqIGNhbGwuIE5v
dGUgdGhhdAorICAgIC8vIHdlIGNvdWxkIGltcHJvdmUgdGhhdCBhc3BlY3Qgb2YgdGhpcyBieSBk
b2luZyBwb2x5bW9ycGhpYyBpbmxpbmluZyBidXQgaGF2aW5nIHRoZSBwcm9maWxpbmcKKyAgICAv
LyBhbHNvLiBDdXJyZW50bHkgd2Ugb3B0IGFnYWluc3QgdGhpcywgYnV0IGl0IGNvdWxkIGJlIGlu
dGVyZXN0aW5nLiBUaGF0IHdvdWxkIHJlcXVpcmUgaGF2aW5nIGEKKyAgICAvLyBzZXBhcmF0ZSBu
b2RlIGZvciBjYWxsIGVkZ2UgcHJvZmlsaW5nLgorICAgIC8vIEZJWE1FOiBJbnRyb2R1Y2UgdGhl
IG5vdGlvbiBvZiBhIHNlcGFyYXRlIGNhbGwgZWRnZSBwcm9maWxpbmcgbm9kZS4KKyAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MDMzCisgICAgaWYgKCFp
c0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSB8fCAhT3B0aW9uczo6ZW5hYmxlUG9seW1vcnBoaWND
YWxsSW5saW5pbmcoKSkgeworICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgZGF0
YUxvZygiQmFpbGluZyBpbmxpbmluZyAoaGFyZCkuXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2co
IlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIG9sZE9mZnNldCA9IG1f
Y3VycmVudEluZGV4OworICAgIAorICAgIGJvb2wgYWxsQXJlQ2xvc3VyZUNhbGxzID0gdHJ1ZTsK
KyAgICBib29sIGFsbEFyZURpcmVjdENhbGxzID0gdHJ1ZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSBjYWxsTGlua1N0YXR1cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgaWYgKGNhbGxMaW5rU3Rh
dHVzW2ldLmNhbGxlZSgpLmlzQ2xvc3VyZUNhbGwoKSkKKyAgICAgICAgICAgIGFsbEFyZURpcmVj
dENhbGxzID0gZmFsc2U7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFsbEFyZUNsb3N1cmVD
YWxscyA9IGZhbHNlOworICAgIH0KKyAgICAKKyAgICBOb2RlKiB0aGluZ1RvU3dpdGNoT247Cisg
ICAgaWYgKGFsbEFyZURpcmVjdENhbGxzKQorICAgICAgICB0aGluZ1RvU3dpdGNoT24gPSBjYWxs
VGFyZ2V0Tm9kZTsKKyAgICBlbHNlIGlmIChhbGxBcmVDbG9zdXJlQ2FsbHMpCisgICAgICAgIHRo
aW5nVG9Td2l0Y2hPbiA9IGFkZFRvR3JhcGgoR2V0RXhlY3V0YWJsZSwgY2FsbFRhcmdldE5vZGUp
OworICAgIGVsc2UgeworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gaGFu
ZGxlIHRoaXMgY2FzZSwgYnV0IGl0J3MgdHJpY2t5IGFuZCB3ZSBkb24ndCBrbm93IG9mIGNhc2Vz
CisgICAgICAgIC8vIHdoZXJlIGl0IHdvdWxkIGJlIGJlbmVmaWNpYWwuIEFsc28sIENhbGxMaW5r
U3RhdHVzIHdvdWxkIG1ha2UgYWxsIGNhbGxlZXMgYXBwZWFyIGxpa2UKKyAgICAgICAgLy8gY2xv
c3VyZSBjYWxscyBpZiBhbnkgY2FsbHMgd2VyZSBjbG9zdXJlIGNhbGxzIC0gZXhjZXB0IGZvciBj
YWxscyB0byBpbnRlcm5hbCBmdW5jdGlvbnMuCisgICAgICAgIC8vIFNvIHRoaXMgd2lsbCBvbmx5
IGFyaXNlIGlmIHNvbWUgY2FsbGVlcyBhcmUgaW50ZXJuYWwgZnVuY3Rpb25zIGFuZCBvdGhlcnMg
YXJlIGNsb3N1cmVzLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM2MDIwCisgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICBkYXRh
TG9nKCJCYWlsaW5nIGlubGluaW5nIChtaXgpLlxuIik7CisgICAgICAgICAgICBkYXRhTG9nKCJT
dGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBk
YXRhTG9nKCJEb2luZyBoYXJkIGlubGluaW5nLi4uXG4iKTsKKyAgICAgICAgZGF0YUxvZygiU3Rh
Y2s6ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOworICAgIH0KKyAgICAKKyAgICAvLyBU
aGlzIG1ha2VzIG1lIHdpc2ggdGhhdCB3ZSB3ZXJlIGluIFNTQSBhbGwgdGhlIHRpbWUuIFdlIG5l
ZWQgdG8gcGljayBhIHZhcmlhYmxlIGludG8gd2hpY2ggdG8KKyAgICAvLyBzdG9yZSB0aGUgY2Fs
bGVlIHNvIHRoYXQgaXQgd2lsbCBiZSBhY2Nlc3NpYmxlIHRvIGFsbCBvZiB0aGUgYmxvY2tzIHdl
J3JlIGFib3V0IHRvIGNyZWF0ZS4gV2UKKyAgICAvLyBnZXQgYXdheSB3aXRoIGRvaW5nIGFuIGlt
bWVkaWF0ZS1zZXQgaGVyZSBiZWNhdXNlIHdlIHdvdWxkbid0IGhhdmUgcGVyZm9ybWVkIGFueSBz
aWRlIGVmZmVjdHMKKyAgICAvLyB5ZXQuCisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGRhdGFM
b2coIlJlZ2lzdGVyIG9mZnNldDogIiwgcmVnaXN0ZXJPZmZzZXQpOworICAgIFZpcnR1YWxSZWdp
c3RlciBjYWxsZWVSZWcocmVnaXN0ZXJPZmZzZXQgKyBKU1N0YWNrOjpDYWxsZWUpOworICAgIGNh
bGxlZVJlZyA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChjYWxsZWVSZWcpOworICAg
IGlmICh2ZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJDYWxsZWUgaXMgZ29pbmcgdG8gYmUgIiwg
Y2FsbGVlUmVnLCAiXG4iKTsKKyAgICBzZXREaXJlY3QoY2FsbGVlUmVnLCBjYWxsVGFyZ2V0Tm9k
ZSwgSW1tZWRpYXRlU2V0V2l0aEZsdXNoKTsKKyAgICAKKyAgICBTd2l0Y2hEYXRhJiBkYXRhID0g
Km1fZ3JhcGgubV9zd2l0Y2hEYXRhLmFkZCgpOworICAgIGRhdGEua2luZCA9IFN3aXRjaENlbGw7
CisgICAgYWRkVG9HcmFwaChTd2l0Y2gsIE9wSW5mbygmZGF0YSksIHRoaW5nVG9Td2l0Y2hPbik7
CisgICAgCisgICAgQmFzaWNCbG9jayogb3JpZ2luQmxvY2sgPSBtX2N1cnJlbnRCbG9jazsKKyAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygiTWFya2luZyAiLCBSYXdQb2ludGVyKG9y
aWdpbkJsb2NrKSwgIiBhcyBsaW5rZWQgKG9yaWdpbiBvZiBwb2x5IGlubGluZSlcbiIpOworICAg
IG9yaWdpbkJsb2NrLT5kaWRMaW5rKCk7CisgICAgY2FuY2VsTGlua2luZ0ZvckJsb2NrKG1faW5s
aW5lU3RhY2tUb3AsIG9yaWdpbkJsb2NrKTsKKyAgICAKKyAgICAvLyBFYWNoIGlubGluZWQgY2Fs
bGVlIHdpbGwgaGF2ZSBhIGxhbmRpbmcgYmxvY2sgdGhhdCBpdCByZXR1cm5zIGF0LiBUaGV5IHNo
b3VsZCBhbGwgaGF2ZSBqdW1wcworICAgIC8vIHRvIHRoZSBjb250aW51YXRpb24gYmxvY2ssIHdo
aWNoIHdlIGNyZWF0ZSBsYXN0LgorICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gbGFuZGluZ0Jsb2Nr
czsKKyAgICAKKyAgICAvLyBXZSBtYWtlIGZvcmNlIHRoaXMgdHJ1ZSBpZiB3ZSBnaXZlIHVwIG9u
IGlubGluaW5nIGFueSBvZiB0aGUgZWRnZXMuCisgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCA9
IGNhbGxMaW5rU3RhdHVzLmNvdWxkVGFrZVNsb3dQYXRoKCk7CisgICAgCisgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgIGRhdGFMb2coIkFib3V0IHRvIGxvb3Agb3ZlciBmdW5jdGlvbnMgYXQgIiwg
Y3VycmVudENvZGVPcmlnaW4oKSwgIi5cbiIpOworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBjYWxsTGlua1N0YXR1cy5zaXplKCk7ICsraSkgeworICAgICAgICBtX2N1cnJlbnRJ
bmRleCA9IG9sZE9mZnNldDsKKyAgICAgICAgUmVmUHRyPEJhc2ljQmxvY2s+IGJsb2NrID0gYWRv
cHRSZWYobmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2Fs
cywgUE5hTikpOworICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrLmdldCgpOworICAgICAg
ICBtX2dyYXBoLmFwcGVuZEJsb2NrKGJsb2NrKTsKKyAgICAgICAgcHJlcGFyZVRvUGFyc2VCbG9j
aygpOworICAgICAgICAKKyAgICAgICAgTm9kZSogbXlDYWxsVGFyZ2V0Tm9kZSA9IGdldERpcmVj
dChjYWxsZWVSZWcpOworICAgICAgICAKKyAgICAgICAgYm9vbCBpbmxpbmluZ1Jlc3VsdCA9IGF0
dGVtcHRUb0lubGluZUNhbGwoCisgICAgICAgICAgICBteUNhbGxUYXJnZXROb2RlLCByZXN1bHRP
cGVyYW5kLCBjYWxsTGlua1N0YXR1c1tpXS5jYWxsZWUoKSwgcmVnaXN0ZXJPZmZzZXQsCisgICAg
ICAgICAgICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbmV4dE9mZnNldCwga2luZCwgQ2Fs
bGVyTGlua3NNYW51YWxseSwgcHJlZGljdGlvbiwKKyAgICAgICAgICAgIGlubGluaW5nQmFsYW5j
ZSk7CisgICAgICAgIAorICAgICAgICBpZiAoIWlubGluaW5nUmVzdWx0KSB7CisgICAgICAgICAg
ICAvLyBUaGF0IGZhaWxlZCBzbyB3ZSBsZXQgdGhlIGJsb2NrIGRpZS4gTm90aGluZyBpbnRlcmVz
dGluZyBzaG91bGQgaGF2ZSBiZWVuIGFkZGVkIHRvCisgICAgICAgICAgICAvLyB0aGUgYmxvY2su
IFdlIGFsc28gZ2l2ZSB1cCBvbiBpbmxpbmluZyBhbnkgb2YgdGhlIChsZXNzIGZyZXF1ZW50KSBj
YWxsZWVzLgorICAgICAgICAgICAgQVNTRVJUKG1fY3VycmVudEJsb2NrID09IGJsb2NrLmdldCgp
KTsKKyAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLm1fYmxvY2tzLmxhc3QoKSA9PSBibG9jayk7
CisgICAgICAgICAgICBtX2dyYXBoLmtpbGxCbG9ja0FuZEl0c0NvbnRlbnRzKGJsb2NrLmdldCgp
KTsKKyAgICAgICAgICAgIG1fZ3JhcGgubV9ibG9ja3MucmVtb3ZlTGFzdCgpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICAvLyBUaGUgZmFjdCB0aGF0IGlubGluaW5nIGZhaWxlZCBtZWFucyB3
ZSBuZWVkIGEgc2xvdyBwYXRoLgorICAgICAgICAgICAgY291bGRUYWtlU2xvd1BhdGggPSB0cnVl
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEpTQ2Vs
bCogdGhpbmdUb0Nhc2VPbjsKKyAgICAgICAgaWYgKGFsbEFyZURpcmVjdENhbGxzKQorICAgICAg
ICAgICAgdGhpbmdUb0Nhc2VPbiA9IGNhbGxMaW5rU3RhdHVzW2ldLmNhbGxlZSgpLm5vbkV4ZWN1
dGFibGVDYWxsZWUoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQoYWxsQXJl
Q2xvc3VyZUNhbGxzKTsKKyAgICAgICAgICAgIHRoaW5nVG9DYXNlT24gPSBjYWxsTGlua1N0YXR1
c1tpXS5jYWxsZWUoKS5leGVjdXRhYmxlKCk7CisgICAgICAgIH0KKyAgICAgICAgZGF0YS5jYXNl
cy5hcHBlbmQoU3dpdGNoQ2FzZShtX2dyYXBoLmZyZWV6ZSh0aGluZ1RvQ2FzZU9uKSwgYmxvY2su
Z2V0KCkpKTsKKyAgICAgICAgbV9jdXJyZW50SW5kZXggPSBuZXh0T2Zmc2V0OworICAgICAgICBw
cm9jZXNzU2V0TG9jYWxRdWV1ZSgpOyAvLyBUaGlzIG9ubHkgY29tZXMgaW50byBwbGF5IGZvciBp
bnRyaW5zaWNzLCBzaW5jZSBub3JtYWwgaW5saW5lZCBjb2RlIHdpbGwgbGVhdmUgYW4gZW1wdHkg
cXVldWUuCisgICAgICAgIGFkZFRvR3JhcGgoSnVtcCk7CisgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgZGF0YUxvZygiTWFya2luZyAiLCBSYXdQb2ludGVyKG1fY3VycmVudEJsb2Nr
KSwgIiBhcyBsaW5rZWQgKHRhaWwgb2YgcG9seSBpbmxpbmVlKVxuIik7CisgICAgICAgIG1fY3Vy
cmVudEJsb2NrLT5kaWRMaW5rKCk7CisgICAgICAgIGxhbmRpbmdCbG9ja3MuYXBwZW5kKG1fY3Vy
cmVudEJsb2NrKTsKKworICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGRhdGFMb2co
IkZpbmlzaGVkIGlubGluaW5nICIsIGNhbGxMaW5rU3RhdHVzW2ldLmNhbGxlZSgpLCAiIGF0ICIs
IGN1cnJlbnRDb2RlT3JpZ2luKCksICIuXG4iKTsKKyAgICB9CisgICAgCisgICAgUmVmUHRyPEJh
c2ljQmxvY2s+IHNsb3dQYXRoQmxvY2sgPSBhZG9wdFJlZigKKyAgICAgICAgbmV3IEJhc2ljQmxv
Y2soVUlOVF9NQVgsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgUE5hTikpOworICAgIG1f
Y3VycmVudEluZGV4ID0gb2xkT2Zmc2V0OworICAgIGRhdGEuZmFsbFRocm91Z2ggPSBCcmFuY2hU
YXJnZXQoc2xvd1BhdGhCbG9jay5nZXQoKSk7CisgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhzbG93
UGF0aEJsb2NrKTsKKyAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygiTWFya2luZyAi
LCBSYXdQb2ludGVyKHNsb3dQYXRoQmxvY2suZ2V0KCkpLCAiIGFzIGxpbmtlZCAoc2xvdyBwYXRo
IGJsb2NrKVxuIik7CisgICAgc2xvd1BhdGhCbG9jay0+ZGlkTGluaygpOworICAgIHByZXBhcmVU
b1BhcnNlQmxvY2soKTsKKyAgICBtX2N1cnJlbnRCbG9jayA9IHNsb3dQYXRoQmxvY2suZ2V0KCk7
CisgICAgTm9kZSogbXlDYWxsVGFyZ2V0Tm9kZSA9IGdldERpcmVjdChjYWxsZWVSZWcpOworICAg
IGlmIChjb3VsZFRha2VTbG93UGF0aCkgeworICAgICAgICBhZGRDYWxsKAorICAgICAgICAgICAg
cmVzdWx0T3BlcmFuZCwgY2FsbE9wLCBPcEluZm8oKSwgbXlDYWxsVGFyZ2V0Tm9kZSwgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsCisgICAgICAgICAgICByZWdpc3Rlck9mZnNldCwgcHJlZGlj
dGlvbik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYWRkVG9HcmFwaChDaGVja0JhZENlbGwpOwor
ICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIG15Q2FsbFRhcmdldE5vZGUpOworICAgICAgICBl
bWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgICAgIAorICAgICAgICBzZXQoVmlydHVh
bFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBhZGRUb0dyYXBoKEJvdHRvbVZhbHVlKSk7CisgICAg
fQorCisgICAgbV9jdXJyZW50SW5kZXggPSBuZXh0T2Zmc2V0OworICAgIHByb2Nlc3NTZXRMb2Nh
bFF1ZXVlKCk7CisgICAgYWRkVG9HcmFwaChKdW1wKTsKKyAgICBsYW5kaW5nQmxvY2tzLmFwcGVu
ZChtX2N1cnJlbnRCbG9jayk7CisgICAgCisgICAgUmVmUHRyPEJhc2ljQmxvY2s+IGNvbnRpbnVh
dGlvbkJsb2NrID0gYWRvcHRSZWYoCisgICAgICAgIG5ldyBCYXNpY0Jsb2NrKFVJTlRfTUFYLCBt
X251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIFBOYU4pKTsKKyAgICBtX2dyYXBoLmFwcGVuZEJs
b2NrKGNvbnRpbnVhdGlvbkJsb2NrKTsKKyAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgZGF0YUxv
ZygiQWRkaW5nIHVubGlua2VkIGJsb2NrICIsIFJhd1BvaW50ZXIoY29udGludWF0aW9uQmxvY2su
Z2V0KCkpLCAiIChjb250aW51YXRpb24pXG4iKTsKKyAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Vu
bGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGNvbnRpbnVhdGlvbkJsb2NrLmdldCgp
KSk7CisgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOworICAgIG1fY3VycmVudEJsb2NrID0gY29u
dGludWF0aW9uQmxvY2suZ2V0KCk7CiAgICAgCi0gICAgLy8gQXQgdGhpcyBwb2ludCB3ZSByZXR1
cm4gYW5kIGNvbnRpbnVlIHRvIGdlbmVyYXRlIGNvZGUgZm9yIHRoZSBjYWxsZXIsIGJ1dAotICAg
IC8vIGluIHRoZSBuZXcgYmFzaWMgYmxvY2suCisgICAgZm9yICh1bnNpZ25lZCBpID0gbGFuZGlu
Z0Jsb2Nrcy5zaXplKCk7IGktLTspCisgICAgICAgIGxhbmRpbmdCbG9ja3NbaV0tPmxhc3QoKS0+
dGFyZ2V0QmxvY2soKSA9IGNvbnRpbnVhdGlvbkJsb2NrLmdldCgpOworICAgIAorICAgIG1fY3Vy
cmVudEluZGV4ID0gb2xkT2Zmc2V0OworICAgIAorICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAg
IGRhdGFMb2coIkRvbmUgaW5saW5pbmcgKGhhcmQpLlxuIik7CisgICAgICAgIGRhdGFMb2coIlN0
YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKKyAgICB9CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKQEAgLTE2NDUsNyArMTkxOCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZVR5cGVkQXJyYXlDb24KIAogYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRl
cm5hbEZ1bmN0aW9uKAogICAgIGludCByZXN1bHRPcGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiBm
dW5jdGlvbiwgaW50IHJlZ2lzdGVyT2Zmc2V0LAotICAgIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBraW5kKQorICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKQogewogICAgIC8vIElmIHdlIGV2ZXIgZmluZCB0aGF0IHdlIGhhdmUg
YSBsb3Qgb2YgaW50ZXJuYWwgZnVuY3Rpb25zIHRoYXQgd2Ugc3BlY2lhbGl6ZSBmb3IsCiAgICAg
Ly8gdGhlbiB3ZSBzaG91bGQgcHJvYmFibHkgaGF2ZSBzb21lIHNvcnQgb2YgaGFzaHRhYmxlIGRp
c3BhdGNoLCBvciBtYXliZSBldmVuCkBAIC0xNjU0LDggKzE5MjcsNiBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVyCiAgICAgLy8gd2Uga25vdyBhYm91dCBpcyBzbWFs
bCBlbm91Z2gsIHRoYXQgaGF2aW5nIGp1c3QgYSBsaW5lYXIgY2FzY2FkZSBvZiBpZiBzdGF0ZW1l
bnRzCiAgICAgLy8gaXMgZ29vZCBlbm91Z2guCiAgICAgCi0gICAgVU5VU0VEX1BBUkFNKHByZWRp
Y3Rpb24pOyAvLyBSZW1vdmUgdGhpcyBvbmNlIHdlIGRvIG1vcmUgdGhpbmdzLgotICAgIAogICAg
IGlmIChmdW5jdGlvbi0+Y2xhc3NJbmZvKCkgPT0gQXJyYXlDb25zdHJ1Y3Rvcjo6aW5mbygpKSB7
CiAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCkgIT0gbV9pbmxpbmVTdGFja1Rv
cC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMjAyMCw2ICsyMjkxLDEyIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5
SWQoCiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnByZXBhcmVUb1BhcnNlQmxvY2soKQogeworICAg
IGNsZWFyQ2FjaGVzKCk7CisgICAgQVNTRVJUKG1fc2V0TG9jYWxRdWV1ZS5pc0VtcHR5KCkpOwor
fQorCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpjbGVhckNhY2hlcygpCit7CiAgICAgbV9jb25zdGFu
dHMucmVzaXplKDApOwogfQogCkBAIC0yMDU5LDkgKzIzMzYsNyBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgfQogCiAgICAgd2hpbGUgKHRydWUpIHsKLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2V0TG9jYWxRdWV1ZS5zaXplKCk7ICsr
aSkKLSAgICAgICAgICAgIG1fc2V0TG9jYWxRdWV1ZVtpXS5leGVjdXRlKHRoaXMpOwotICAgICAg
ICBtX3NldExvY2FsUXVldWUucmVzaXplKDApOworICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1
ZSgpOwogICAgICAgICAKICAgICAgICAgLy8gRG9uJ3QgZXh0ZW5kIG92ZXIganVtcCBkZXN0aW5h
dGlvbnMuCiAgICAgICAgIGlmIChtX2N1cnJlbnRJbmRleCA9PSBsaW1pdCkgewpAQCAtMjIwNSwx
MyArMjQ4MCwxMyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAg
ICAgICAgICAgICBKU0NlbGwqIGNhY2hlZEZ1bmN0aW9uID0gY3VycmVudEluc3RydWN0aW9uWzJd
LnUuanNDZWxsLmdldCgpOwogICAgICAgICAgICAgaWYgKCFjYWNoZWRGdW5jdGlvbiAKICAgICAg
ICAgICAgICAgICB8fCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmNvdWxkVGFr
ZVNsb3dDYXNlKG1fY3VycmVudEluZGV4KQotICAgICAgICAgICAgICAgIHx8IG1faW5saW5lU3Rh
Y2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZEZ1bmN0
aW9uKSkgeworICAgICAgICAgICAgICAgIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2Zp
bGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENlbGwpKSB7CiAgICAgICAgICAgICAg
ICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwg
Z2V0KFZpcnR1YWxSZWdpc3RlcihKU1N0YWNrOjpDYWxsZWUpKSk7CiAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dyYXBoLmZyZWV6
ZShjYWNoZWRGdW5jdGlvbik7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGNhY2hlZEZ1bmN0aW9u
LT5pbmhlcml0cyhKU0Z1bmN0aW9uOjppbmZvKCkpKTsKICAgICAgICAgICAgICAgICBOb2RlKiBh
Y3R1YWxDYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkNhbGxlZSkpOwotICAg
ICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tGdW5jdGlvbiwgT3BJbmZvKGZyb3plbiksIGFj
dHVhbENhbGxlZSk7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5m
byhmcm96ZW4pLCBhY3R1YWxDYWxsZWUpOwogICAgICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgoSlNDb25z
dGFudCwgT3BJbmZvKGZyb3plbikpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIE5FWFRf
T1BDT0RFKG9wX2dldF9jYWxsZWUpOwpAQCAtMjg5Myw3ICszMTY4LDcgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgLy8gYWxyZWFkeSBnbmFy
bHkgZW5vdWdoIGFzIGl0IGlzLgogICAgICAgICAgICAgQVNTRVJUKHBvaW50ZXJJc0Z1bmN0aW9u
KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnNwZWNpYWxQb2ludGVyKSk7CiAgICAgICAgICAgICBh
ZGRUb0dyYXBoKAotICAgICAgICAgICAgICAgIENoZWNrRnVuY3Rpb24sCisgICAgICAgICAgICAg
ICAgQ2hlY2tDZWxsLAogICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShzdGF0
aWNfY2FzdDxKU0NlbGwqPihhY3R1YWxQb2ludGVyRm9yKAogICAgICAgICAgICAgICAgICAgICBt
X2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jaywgY3VycmVudEluc3RydWN0aW9uWzJdLnUuc3Bl
Y2lhbFBvaW50ZXIpKSkpLAogICAgICAgICAgICAgICAgIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpKTsKQEAgLTMzMTcsMTUgKzM1OTIsMTkgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrKEJhc2ljQmxvYwogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIGJsb2NrLT5pc0xpbmtlZCA9
IHRydWU7Ci0jZW5kaWYKKyAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygiTWFya2lu
ZyAiLCBSYXdQb2ludGVyKGJsb2NrKSwgIiBhcyBsaW5rZWQgKGFjdHVhbGx5IGRpZCBsaW5raW5n
KVxuIik7CisgICAgYmxvY2stPmRpZExpbmsoKTsKIH0KIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6
bGlua0Jsb2NrcyhWZWN0b3I8VW5saW5rZWRCbG9jaz4mIHVubGlua2VkQmxvY2tzLCBWZWN0b3I8
QmFzaWNCbG9jayo+JiBwb3NzaWJsZVRhcmdldHMpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB1bmxpbmtlZEJsb2Nrcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgICAgIGRhdGFMb2coIkF0dGVtcHRpbmcgdG8gbGluayAiLCBSYXdQb2ludGVyKHVu
bGlua2VkQmxvY2tzW2ldLm1fYmxvY2spLCAiXG4iKTsKICAgICAgICAgaWYgKHVubGlua2VkQmxv
Y2tzW2ldLm1fbmVlZHNOb3JtYWxMaW5raW5nKSB7CisgICAgICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRG9lcyBuZWVkIG5vcm1hbCBsaW5raW5nLlxu
Iik7CiAgICAgICAgICAgICBsaW5rQmxvY2sodW5saW5rZWRCbG9ja3NbaV0ubV9ibG9jaywgcG9z
c2libGVUYXJnZXRzKTsKICAgICAgICAgICAgIHVubGlua2VkQmxvY2tzW2ldLm1fbmVlZHNOb3Jt
YWxMaW5raW5nID0gZmFsc2U7CiAgICAgICAgIH0KQEAgLTM0OTIsNyArMzc3MSw3IEBAIEJ5dGVD
b2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmUKIAogdm9pZCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2VDb2RlQmxvY2soKQogewotICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKKyAgICBj
bGVhckNhY2hlcygpOwogICAgIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9pbmxpbmVT
dGFja1RvcC0+bV9jb2RlQmxvY2s7CiAgICAgCkBAIC0zNTU4LDcgKzM4MzcsMTIgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogICAgICAgICAgICAgICAgICAgICAvLyAy
KSBJZiB0aGUgYnl0ZWNvZGVCZWdpbiBpcyBlcXVhbCB0byB0aGUgY3VycmVudEluZGV4LCB0aGVu
IHdlIGZhaWxlZCB0byBkbwogICAgICAgICAgICAgICAgICAgICAvLyAgICBhIHBlZXBob2xlIGNv
YWxlc2Npbmcgb2YgdGhpcyBibG9jayBpbiB0aGUgaWYgc3RhdGVtZW50IGFib3ZlLiBTbywgd2Un
cmUKICAgICAgICAgICAgICAgICAgICAgLy8gICAgZ2VuZXJhdGluZyBzdWJvcHRpbWFsIGNvZGUg
YW5kIGxlYXZpbmcgbW9yZSB3b3JrIGZvciB0aGUgQ0ZHIHNpbXBsaWZpZXIuCi0gICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChtX2lubGluZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmlzRW1w
dHkoKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX2Jsb2Nr
LT5ieXRlY29kZUJlZ2luIDwgbV9jdXJyZW50SW5kZXgpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoIW1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuaXNFbXB0eSgpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsYXN0QmVnaW4gPQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MubGFzdCgpLm1f
YmxvY2stPmJ5dGVjb2RlQmVnaW47CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlRfVU5V
U0VEKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RCZWdpbiwgbGFzdEJlZ2luID09
IFVJTlRfTUFYIHx8IGxhc3RCZWdpbiA8IG1fY3VycmVudEluZGV4KTsKKyAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3VubGlua2Vk
QmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLmdldCgpKSk7CiAgICAgICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5hcHBlbmQoYmxv
Y2suZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICAvLyBUaGUgZmlyc3QgYmxvY2sgaXMgZGVm
aW5pdGVseSBhbiBPU1IgdGFyZ2V0LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05MCw4ICs5MCwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICBub2RlLT5jaGlsZHJlbi5zZXRDaGlsZDEoRWRnZSgpKTsKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOgotICAgICAgICAgICAgICAg
ICAgICBpZiAoIW5vZGUtPmNoaWxkMSgpKQorICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGUt
PmNoaWxkMSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9y
LmZyZWUobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgp
LT5vcCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgUGhpOgogICAgICAgICAgICAgICAg
ICAgICBjYXNlIFNldEFyZ3VtZW50OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNiArMTQ0LDggQEAg
dm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgRmlhdElu
dDUyOgogICAgIGNhc2UgTWFrZVJvcGU6CiAgICAgY2FzZSBWYWx1ZVRvSW50MzI6CisgICAgY2Fz
ZSBHZXRFeGVjdXRhYmxlOgorICAgIGNhc2UgQm90dG9tVmFsdWU6CiAgICAgICAgIGRlZihQdXJl
VmFsdWUobm9kZSkpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIApAQCAtMjM5LDEyICsyNDEs
OCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgIGRl
ZihQdXJlVmFsdWUobm9kZSwgbm9kZS0+YXJpdGhNb2RlKCkpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAKLSAgICBjYXNlIENoZWNrRnVuY3Rpb246Ci0gICAgICAgIGRlZihQdXJlVmFsdWUo
Q2hlY2tGdW5jdGlvbiwgQWRqYWNlbmN5TGlzdChBZGphY2VuY3lMaXN0OjpGaXhlZCwgbm9kZS0+
Y2hpbGQxKCkpLCBub2RlLT5mdW5jdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICAgICAg
Ci0gICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6Ci0gICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwg
bm9kZS0+ZXhlY3V0YWJsZSgpKSk7CisgICAgY2FzZSBDaGVja0NlbGw6CisgICAgICAgIGRlZihQ
dXJlVmFsdWUoQ2hlY2tDZWxsLCBBZGphY2VuY3lMaXN0KEFkamFjZW5jeUxpc3Q6OkZpeGVkLCBu
b2RlLT5jaGlsZDEoKSksIG5vZGUtPmNlbGxPcGVyYW5kKCkpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAKICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6CkBAIC0yNjMsNiArMjYx
LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2Ug
U3dpdGNoOgogICAgIGNhc2UgVGhyb3c6CiAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6CisgICAgY2Fz
ZSBDaGVja0JhZENlbGw6CiAgICAgY2FzZSBSZXR1cm46CiAgICAgY2FzZSBVbnJlYWNoYWJsZToK
ICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgpAQCAtMzU4LDYgKzM1Nyw4IEBAIHZvaWQgY2xv
YmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIEFycmF5UG9wOgogICAg
IGNhc2UgQ2FsbDoKICAgICBjYXNlIENvbnN0cnVjdDoKKyAgICBjYXNlIFByb2ZpbGVkQ2FsbDoK
KyAgICBjYXNlIFByb2ZpbGVkQ29uc3RydWN0OgogICAgIGNhc2UgTmF0aXZlQ2FsbDoKICAgICBj
YXNlIE5hdGl2ZUNvbnN0cnVjdDoKICAgICBjYXNlIFRvUHJpbWl0aXZlOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2
MywxMyBAQCBlbnVtIFJlZk5vZGVNb2RlIHsKICAgICBEb250UmVmTm9kZQogfTsKIAorZW51bSBT
d2l0Y2hLaW5kIHsKKyAgICBTd2l0Y2hJbW0sCisgICAgU3dpdGNoQ2hhciwKKyAgICBTd2l0Y2hT
dHJpbmcsCisgICAgU3dpdGNoQ2VsbAorfTsKKwogaW5saW5lIGJvb2wgdmVyYm9zZUNvbXBpbGF0
aW9uRW5hYmxlZChDb21waWxhdGlvbk1vZGUgbW9kZSA9IERGR01vZGUpCiB7CiAgICAgcmV0dXJu
IE9wdGlvbnM6OnZlcmJvc2VDb21waWxhdGlvbigpIHx8IE9wdGlvbnM6OmR1bXBHcmFwaEF0RWFj
aFBoYXNlKCkgfHwgKGlzRlRMKG1vZGUpICYmIE9wdGlvbnM6OnZlcmJvc2VGVExDb21waWxhdGlv
bigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5n
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQyLDggKzE0Miw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlIENoZWNrRnVuY3Rp
b246IHsKLSAgICAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KS52YWx1ZSgpICE9IG5vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkpCisgICAgICAgICAgICBjYXNl
IENoZWNrQ2VsbDogeworICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLnZhbHVlKCkgIT0gbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKSkKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhh
bnRvbSgpOwogICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwpAQCAtMzg0LDYgKzM4
NCwxOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgUHJv
ZmlsZWRDYWxsOgorICAgICAgICAgICAgY2FzZSBQcm9maWxlZENvbnN0cnVjdDogeworICAgICAg
ICAgICAgICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwg
MCkpLm1fdmFsdWUpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgIC8vIElmIHdlIHdlcmUgYWJsZSB0byBwcm92ZSB0aGF0IHRoZSBj
YWxsZWUgaXMgYSBjb25zdGFudCB0aGVuIHRoZSBub3JtYWwgY2FsbAorICAgICAgICAgICAgICAg
IC8vIGlubGluZSBjYWNoZSB3aWxsIHJlY29yZCB0aGlzIGNhbGxlZS4gVGhpcyBtZWFucyB0aGF0
IHRoZXJlIGlzIG5vIG5lZWQgdG8gZG8gYW55CisgICAgICAgICAgICAgICAgLy8gYWRkaXRpb25h
bCBwcm9maWxpbmcuCisgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3Aobm9kZS0+b3AoKSA9PSBQ
cm9maWxlZENhbGwgPyBDYWxsIDogQ29uc3RydWN0KTsKKyAgICAgICAgICAgICAgICBlbGltaW5h
dGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEs
NyArOTEsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBQdXRCeUlkRmx1c2g6CiAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgIGNhc2UgQ2hlY2tT
dHJ1Y3R1cmU6Ci0gICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6CisgICAgY2FzZSBHZXRFeGVjdXRh
YmxlOgogICAgIGNhc2UgR2V0QnV0dGVyZmx5OgogICAgIGNhc2UgQ2hlY2tBcnJheToKICAgICBj
YXNlIEdldFNjb3BlOgpAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEdsb2JhbFZhcjoKICAgICBjYXNlIFZhcmlhYmxl
V2F0Y2hwb2ludDoKICAgICBjYXNlIFZhckluamVjdGlvbldhdGNocG9pbnQ6Ci0gICAgY2FzZSBD
aGVja0Z1bmN0aW9uOgorICAgIGNhc2UgQ2hlY2tDZWxsOgogICAgIGNhc2UgQWxsb2NhdGlvblBy
b2ZpbGVXYXRjaHBvaW50OgogICAgIGNhc2UgUmVnRXhwRXhlYzoKICAgICBjYXNlIFJlZ0V4cFRl
c3Q6CkBAIC0xMTksNiArMTE5LDggQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlKQogICAgIGNhc2UgQ29uc3RydWN0OgogICAgIGNhc2UgTmF0aXZlQ2FsbDoKICAgICBjYXNl
IE5hdGl2ZUNvbnN0cnVjdDoKKyAgICBjYXNlIFByb2ZpbGVkQ2FsbDoKKyAgICBjYXNlIFByb2Zp
bGVkQ29uc3RydWN0OgogICAgIGNhc2UgQnJlYWtwb2ludDoKICAgICBjYXNlIFByb2ZpbGVXaWxs
Q2FsbDoKICAgICBjYXNlIFByb2ZpbGVEaWRDYWxsOgpAQCAtMTk1LDYgKzE5Nyw4IEBAIGJvb2wg
ZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEdldERpcmVjdFBuYW1l
OgogICAgIGNhc2UgRmlhdEludDUyOgogICAgIGNhc2UgQm9vbGVhblRvTnVtYmVyOgorICAgIGNh
c2UgQ2hlY2tCYWRDZWxsOgorICAgIGNhc2UgQm90dG9tVmFsdWU6CiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjoKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODks
OSBAQCBzdGF0aWMgQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZUltcGwoCiAgICAgICAgIHZtLmdl
dENUSVN0dWIodmlydHVhbENvbnN0cnVjdFRoYXRQcmVzZXJ2ZXNSZWdzVGh1bmtHZW5lcmF0b3Ip
OwogICAgIH0KICAgICAKKyAgICBpZiAoQ2FsbEVkZ2VMb2c6OmlzRW5hYmxlZCgpKQorICAgICAg
ICB2bS5lbnN1cmVDYWxsRWRnZUxvZygpLnByb2Nlc3NMb2coKTsKKyAgICAKICAgICBSZWZQdHI8
UGxhbj4gcGxhbiA9IGFkb3B0UmVmKAogICAgICAgICBuZXcgUGxhbihjb2RlQmxvY2ssIHByb2Zp
bGVkREZHQ29kZUJsb2NrLCBtb2RlLCBvc3JFbnRyeUJ5dGVjb2RlSW5kZXgsIG11c3RIYW5kbGVW
YWx1ZXMpKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzM2LDYgKzczNiwxMiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRT
cGVjdWxhdGVTdHJpbmcoKSkKICAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgU3dpdGNoQ2VsbDoKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3Vs
ZFNwZWN1bGF0ZUNlbGwoKSkKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgLy8gZWxzZSBpdCdzIGZpbmUgZm9yIHRo
aXMgdG8gaGF2ZSBVbnR5cGVkVXNlOyB3ZSB3aWxsIGhhbmRsZSB0aGlzIGJ5IGp1c3QgbWFraW5n
CisgICAgICAgICAgICAgICAgLy8gbm9uLWNlbGxzIHRha2UgdGhlIGRlZmF1bHQgY2FzZS4KKyAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CkBAIC04OTcsMTMgKzkwMywxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIENoZWNrRXhlY3V0YWJsZTogeworICAgICAg
ICBjYXNlIEdldEV4ZWN1dGFibGU6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8RnVuY3Rpb25Vc2U+
KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
ICAgICAKICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKLSAgICAgICAgY2FzZSBDaGVja0Z1
bmN0aW9uOgorICAgICAgICBjYXNlIENoZWNrQ2VsbDoKICAgICAgICAgY2FzZSBDaGVja0hhc0lu
c3RhbmNlOgogICAgICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgICAgIGNhc2UgR2V0QnV0dGVy
Zmx5OiB7CkBAIC0xMTIwLDYgKzExMjYsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEFsbG9j
YXRpb25Qcm9maWxlV2F0Y2hwb2ludDoKICAgICAgICAgY2FzZSBDYWxsOgogICAgICAgICBjYXNl
IENvbnN0cnVjdDoKKyAgICAgICAgY2FzZSBQcm9maWxlZENhbGw6CisgICAgICAgIGNhc2UgUHJv
ZmlsZWRDb25zdHJ1Y3Q6CiAgICAgICAgIGNhc2UgTmF0aXZlQ2FsbDoKICAgICAgICAgY2FzZSBO
YXRpdmVDb25zdHJ1Y3Q6CiAgICAgICAgIGNhc2UgTmV3T2JqZWN0OgpAQCAtMTE0OSw2ICsxMTU3
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgogICAgICAg
ICBjYXNlIENvdW50RXhlY3V0aW9uOgogICAgICAgICBjYXNlIEZvcmNlT1NSRXhpdDoKKyAgICAg
ICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgICAgIGNhc2UgQ2hlY2tXYXRjaGRvZ1RpbWVyOgog
ICAgICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxv
Y2FsOgpAQCAtMTE1OSw2ICsxMTY4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBUeXBlZEFy
cmF5V2F0Y2hwb2ludDoKICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICBjYXNlIFpvbWJp
ZUhpbnQ6CisgICAgICAgIGNhc2UgQm90dG9tVmFsdWU6CiAgICAgICAgICAgICBicmVhazsKICNl
bHNlCiAgICAgICAgIGRlZmF1bHQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMiwyNCArMjIyLDIzIEBAIHZvaWQgR3Jh
cGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QKICAgICAgICAgb3V0LnByaW50KGNvbW1h
LCBpbkNvbnRleHQoKm5vZGUtPnN0cnVjdHVyZSgpLCBjb250ZXh0KSk7CiAgICAgaWYgKG5vZGUt
Pmhhc1RyYW5zaXRpb24oKSkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBwb2ludGVyRHVtcElu
Q29udGV4dChub2RlLT50cmFuc2l0aW9uKCksIGNvbnRleHQpKTsKLSAgICBpZiAobm9kZS0+aGFz
RnVuY3Rpb24oKSkgewotICAgICAgICBvdXQucHJpbnQoY29tbWEsICJmdW5jdGlvbigiLCBwb2lu
dGVyRHVtcChub2RlLT5mdW5jdGlvbigpKSwgIiwgIik7Ci0gICAgICAgIGlmIChub2RlLT5mdW5j
dGlvbigpLT52YWx1ZSgpLmlzQ2VsbCgpCi0gICAgICAgICAgICAmJiBub2RlLT5mdW5jdGlvbigp
LT52YWx1ZSgpLmFzQ2VsbCgpLT5pbmhlcml0cyhKU0Z1bmN0aW9uOjppbmZvKCkpKSB7Ci0gICAg
ICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4obm9kZS0+
ZnVuY3Rpb24oKS0+dmFsdWUoKS5hc0NlbGwoKSk7Ci0gICAgICAgICAgICBpZiAoZnVuY3Rpb24t
PmlzSG9zdEZ1bmN0aW9uKCkpCi0gICAgICAgICAgICAgICAgb3V0LnByaW50KCI8aG9zdCBmdW5j
dGlvbj4iKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQoRnVu
Y3Rpb25FeGVjdXRhYmxlRHVtcChmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCkpKTsKLSAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICBvdXQucHJpbnQoIjxub3QgSlNGdW5jdGlvbj4iKTsKLSAgICAg
ICAgb3V0LnByaW50KCIpIik7Ci0gICAgfQotICAgIGlmIChub2RlLT5oYXNFeGVjdXRhYmxlKCkp
IHsKLSAgICAgICAgaWYgKG5vZGUtPmV4ZWN1dGFibGUoKS0+aW5oZXJpdHMoRnVuY3Rpb25FeGVj
dXRhYmxlOjppbmZvKCkpKQotICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiZXhlY3V0YWJs
ZSgiLCBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wKGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihu
b2RlLT5leGVjdXRhYmxlKCkpKSwgIikiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgb3V0
LnByaW50KGNvbW1hLCAiZXhlY3V0YWJsZShub3QgZnVuY3Rpb246ICIsIFJhd1BvaW50ZXIobm9k
ZS0+ZXhlY3V0YWJsZSgpKSwgIikiKTsKKyAgICBpZiAobm9kZS0+aGFzQ2VsbE9wZXJhbmQoKSkg
eworICAgICAgICBpZiAoIW5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkgfHwgIW5vZGUtPmNl
bGxPcGVyYW5kKCktPnZhbHVlKCkuaXNDZWxsKCkpCisgICAgICAgICAgICBvdXQucHJpbnQoY29t
bWEsICJpbnZhbGlkIGNlbGwgb3BlcmFuZDogIiwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUo
KSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBwb2ludGVy
RHVtcChub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpLmFzQ2VsbCgpKSk7CisgICAgICAgICAg
ICBpZiAobm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5pc0NlbGwoKSkgeworICAgICAgICAg
ICAgICAgIENhbGxWYXJpYW50IHZhcmlhbnQobm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5h
c0NlbGwoKSk7CisgICAgICAgICAgICAgICAgaWYgKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxl
ID0gdmFyaWFudC5leGVjdXRhYmxlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGV4ZWN1
dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJp
bnQoY29tbWEsICI8aG9zdCBmdW5jdGlvbj4iKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBqc0R5bmFtaWNDYXN0
PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0LnByaW50KGNvbW1hLCBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wKGZ1bmN0aW9uRXhlY3V0
YWJsZSkpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAg
ICBvdXQucHJpbnQoY29tbWEsICI8bm9uLWZ1bmN0aW9uIGV4ZWN1dGFibGU+Iik7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogICAgIGlmIChub2Rl
LT5oYXNGdW5jdGlvbkRlY2xJbmRleCgpKSB7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSA9IG1fY29kZUJsb2NrLT5mdW5jdGlvbkRlY2wobm9kZS0+ZnVuY3Rpb25EZWNs
SW5kZXgoKSk7CkBAIC05ODUsMTAgKzk4NCw2IEBAIHZvaWQgR3JhcGg6OnZpc2l0Q2hpbGRyZW4o
U2xvdFZpc2l0b3ImIHYKICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUlu
ZGV4KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0g
ICAgICAgICAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToKLSAgICAgICAgICAgICAgICB2aXNpdG9y
LmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlQb2ludGVyKG5vZGUtPmV4ZWN1dGFibGUoKSk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNl
IENoZWNrU3RydWN0dXJlOgogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG5vZGUt
PnN0cnVjdHVyZVNldCgpLnNpemUoKTsgaS0tOykKICAgICAgICAgICAgICAgICAgICAgdmlzaXRv
ci5hcHBlbmRVbmJhcnJpZXJlZFJlYWRPbmx5UG9pbnRlcihub2RlLT5zdHJ1Y3R1cmVTZXQoKVtp
XSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNw
cAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIEpJVENv
bXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAgICAgICAgICAgICB0YWJsZS5jdGlPZmZz
ZXRzW2pdID0gdGFibGUuY3RpRGVmYXVsdDsKICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gZGF0
YS5jYXNlcy5zaXplKCk7IGotLTspIHsKICAgICAgICAgICAgIFN3aXRjaENhc2UmIG15Q2FzZSA9
IGRhdGEuY2FzZXNbal07Ci0gICAgICAgICAgICB0YWJsZS5jdGlPZmZzZXRzW215Q2FzZS52YWx1
ZS5zd2l0Y2hMb29rdXBWYWx1ZSgpIC0gdGFibGUubWluXSA9CisgICAgICAgICAgICB0YWJsZS5j
dGlPZmZzZXRzW215Q2FzZS52YWx1ZS5zd2l0Y2hMb29rdXBWYWx1ZShkYXRhLmtpbmQpIC0gdGFi
bGUubWluXSA9CiAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1fYmxvY2tI
ZWFkc1tteUNhc2UudGFyZ2V0LmJsb2NrLT5pbmRleF0pOwogICAgICAgICB9CiAgICAgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5jcHAJKHJldmlz
aW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNiArMTEzLDM2IEBAIFRyaVN0YXRlIExhenlKU1Zh
bHVlOjpzdHJpY3RFcXVhbChjb25zdCAKICAgICByZXR1cm4gRmFsc2VUcmlTdGF0ZTsKIH0KIAor
dWludHB0cl90IExhenlKU1ZhbHVlOjpzd2l0Y2hMb29rdXBWYWx1ZShTd2l0Y2hLaW5kIGtpbmQp
IGNvbnN0Cit7CisgICAgLy8gTkIuIE5vdCBldmVyeSBraW5kIG9mIEpTVmFsdWUgd2lsbCBiZSBh
YmxlIHRvIGdpdmUgeW91IGEgc3dpdGNoIGxvb2t1cAorICAgIC8vIHZhbHVlLCBhbmQgdGhpcyBt
ZXRob2Qgd2lsbCBhc3NlcnQsIG9yIGRvIGJhZCB0aGluZ3MsIGlmIHlvdSB1c2UgaXQKKyAgICAv
LyBmb3IgYSBraW5kIG9mIHZhbHVlIHRoYXQgY2FuJ3QuCisgICAgc3dpdGNoIChtX2tpbmQpIHsK
KyAgICBjYXNlIEtub3duVmFsdWU6CisgICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBj
YXNlIFN3aXRjaEltbToKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZSgpLT52YWx1ZSgpLmFzSW50
MzIoKTsKKyAgICAgICAgY2FzZSBTd2l0Y2hDZWxsOgorICAgICAgICAgICAgcmV0dXJuIGJpdHdp
c2VfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKCktPnZhbHVlKCkuYXNDZWxsKCkpOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgY2FzZSBTaW5nbGVDaGFyYWN0ZXJTdHJp
bmc6CisgICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBjYXNlIFN3aXRjaENoYXI6Cisg
ICAgICAgICAgICByZXR1cm4gY2hhcmFjdGVyKCk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKIHZvaWQgTGF6eUpTVmFsdWU6
OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNv
bnN0CiB7CiAgICAgc3dpdGNoIChtX2tpbmQpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTGF6eUpTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0xhenlKU1ZhbHVlLmgJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKKyNpbmNsdWRlICJERkdDb21tb24uaCIK
ICNpbmNsdWRlICJERkdGcm96ZW5WYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0lt
cGwuaD4KIApAQCAtOTUsMjEgKzk2LDcgQEAgcHVibGljOgogICAgIAogICAgIFRyaVN0YXRlIHN0
cmljdEVxdWFsKGNvbnN0IExhenlKU1ZhbHVlJiBvdGhlcikgY29uc3Q7CiAgICAgCi0gICAgdW5z
aWduZWQgc3dpdGNoTG9va3VwVmFsdWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgLy8gTkIuIE5v
dCBldmVyeSBraW5kIG9mIEpTVmFsdWUgd2lsbCBiZSBhYmxlIHRvIGdpdmUgeW91IGEgc3dpdGNo
IGxvb2t1cAotICAgICAgICAvLyB2YWx1ZSwgYW5kIHRoaXMgbWV0aG9kIHdpbGwgYXNzZXJ0LCBv
ciBkbyBiYWQgdGhpbmdzLCBpZiB5b3UgdXNlIGl0Ci0gICAgICAgIC8vIGZvciBhIGtpbmQgb2Yg
dmFsdWUgdGhhdCBjYW4ndC4KLSAgICAgICAgc3dpdGNoIChtX2tpbmQpIHsKLSAgICAgICAgY2Fz
ZSBLbm93blZhbHVlOgotICAgICAgICAgICAgcmV0dXJuIHZhbHVlKCktPnZhbHVlKCkuYXNJbnQz
MigpOwotICAgICAgICBjYXNlIFNpbmdsZUNoYXJhY3RlclN0cmluZzoKLSAgICAgICAgICAgIHJl
dHVybiBjaGFyYWN0ZXIoKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQot
ICAgIH0KKyAgICB1aW50cHRyX3Qgc3dpdGNoTG9va3VwVmFsdWUoU3dpdGNoS2luZCkgY29uc3Q7
CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgdm9pZCBkdW1w
SW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYg
KzExMyw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBTd2kKICAgICBj
YXNlIFN3aXRjaFN0cmluZzoKICAgICAgICAgb3V0LnByaW50KCJTd2l0Y2hTdHJpbmciKTsKICAg
ICAgICAgcmV0dXJuOworICAgIGNhc2UgU3dpdGNoQ2VsbDoKKyAgICAgICAgb3V0LnByaW50KCJT
d2l0Y2hDZWxsIik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShy
ZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTU3LDEyICsxNTcsNiBAQCBzdHJ1Y3QgU3dpdGNoQ2FzZSB7CiAg
ICAgQnJhbmNoVGFyZ2V0IHRhcmdldDsKIH07CiAKLWVudW0gU3dpdGNoS2luZCB7Ci0gICAgU3dp
dGNoSW1tLAotICAgIFN3aXRjaENoYXIsCi0gICAgU3dpdGNoU3RyaW5nCi19OwotCiBzdHJ1Y3Qg
U3dpdGNoRGF0YSB7CiAgICAgLy8gSW5pdGlhbGl6ZXMgbW9zdCBmaWVsZHMgdG8gb2J2aW91c2x5
IGludmFsaWQgdmFsdWVzLiBBbnlvbmUKICAgICAvLyBjb25zdHJ1Y3RpbmcgdGhpcyBzaG91bGQg
bWFrZSBzdXJlIHRvIGluaXRpYWxpemUgZXZlcnl0aGluZyB0aGV5CkBAIC0xODUsNiArMTc5LDcg
QEAgc3RydWN0IFN3aXRjaERhdGEgewogLy8gZGlzdGluZ3Vpc2hlcyBhbiBpbW1lZGlhdGUgdmFs
dWUgKHR5cGljYWxseSBhbiBpbmRleCBpbnRvIGEgQ29kZUJsb2NrIGRhdGEgc3RydWN0dXJlIC0g
CiAvLyBhIGNvbnN0YW50IGluZGV4LCBhcmd1bWVudCwgb3IgaWRlbnRpZmllcikgZnJvbSBhIE5v
ZGUqLgogc3RydWN0IE9wSW5mbyB7CisgICAgT3BJbmZvKCkgOiBtX3ZhbHVlKDApIHsgfQogICAg
IGV4cGxpY2l0IE9wSW5mbyhpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWlu
dHB0cl90Pih2YWx1ZSkpIHsgfQogICAgIGV4cGxpY2l0IE9wSW5mbyh1aW50MzJfdCB2YWx1ZSkg
OiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KICNpZiBPUyhEQVJX
SU4pIHx8IFVTRShKU1ZBTFVFNjQpCkBAIC0xMDA5LDYgKzEwMDQsOCBAQCBzdHJ1Y3QgTm9kZSB7
CiAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsU2FmZToKICAgICAgICAgY2FzZSBDYWxs
OgogICAgICAgICBjYXNlIENvbnN0cnVjdDoKKyAgICAgICAgY2FzZSBQcm9maWxlZENhbGw6Cisg
ICAgICAgIGNhc2UgUHJvZmlsZWRDb25zdHJ1Y3Q6CiAgICAgICAgIGNhc2UgTmF0aXZlQ2FsbDoK
ICAgICAgICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6CiAgICAgICAgIGNhc2UgR2V0QnlPZmZzZXQ6
CkBAIC0xMDQ0LDkgKzEwNDEsMTEgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBtX29wSW5mbzIg
PSBwcmVkaWN0aW9uOwogICAgIH0KICAgICAKLSAgICBib29sIGNhbkJlS25vd25GdW5jdGlvbigp
CisgICAgYm9vbCBoYXNDZWxsT3BlcmFuZCgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkp
IHsKKyAgICAgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6CisgICAgICAgIGNh
c2UgQ2hlY2tDZWxsOgogICAgICAgICBjYXNlIE5hdGl2ZUNvbnN0cnVjdDoKICAgICAgICAgY2Fz
ZSBOYXRpdmVDYWxsOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDU1LDU0ICsxMDU0
LDE2IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgaGFzS25v
d25GdW5jdGlvbigpCi0gICAgewotICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKLSAgICAgICAgY2Fz
ZSBOYXRpdmVDb25zdHJ1Y3Q6Ci0gICAgICAgIGNhc2UgTmF0aXZlQ2FsbDoKLSAgICAgICAgICAg
IHJldHVybiAoYm9vbCltX29wSW5mbzsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBKU0Z1bmN0aW9uKiBrbm93
bkZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjYW5CZUtub3duRnVuY3Rpb24oKSk7
Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNGdW5jdGlvbio+KG1fb3BJbmZvKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIGdpdmVLbm93bkZ1bmN0aW9uKEpTRnVuY3Rpb24qIGNhbGxEYXRhKSAK
KyAgICBGcm96ZW5WYWx1ZSogY2VsbE9wZXJhbmQoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGNh
bkJlS25vd25GdW5jdGlvbigpKTsKLSAgICAgICAgbV9vcEluZm8gPSBiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90PihjYWxsRGF0YSk7Ci0gICAgfQotCi0gICAgYm9vbCBoYXNGdW5jdGlvbigpCi0gICAg
ewotICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKLSAgICAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOgot
ICAgICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDoKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgRnJvemVuVmFsdWUqIGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChoYXNGdW5jdGlvbigpKTsKKyAgICAgICAgQVNTRVJUKGhhc0NlbGxPcGVy
YW5kKCkpOwogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxGcm96ZW5WYWx1ZSo+KG1f
b3BJbmZvKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBoYXNFeGVjdXRhYmxlKCkKKyAgICB2b2lk
IHNldENlbGxPcGVyYW5kKEZyb3plblZhbHVlKiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBvcCgpID09IENoZWNrRXhlY3V0YWJsZTsKLSAgICB9Ci0gICAgCi0gICAgRXhlY3V0YWJsZUJh
c2UqIGV4ZWN1dGFibGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGpzQ2FzdDxFeGVjdXRhYmxl
QmFzZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4obV9vcEluZm8pKTsKKyAgICAgICAgQVNT
RVJUKGhhc0NlbGxPcGVyYW5kKCkpOworICAgICAgICBtX29wSW5mbyA9IGJpdHdpc2VfY2FzdDx1
aW50cHRyX3Q+KHZhbHVlKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNWYXJpYWJsZVdhdGNo
cG9pbnRTZXQoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAko
cmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogICAgIG1hY3JvKFB1dEJ5SWRGbHVzaCwgTm9kZU11c3RHZW5lcmF0ZSB8
IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAogICAgIG1hY3JvKFB1dEJ5
SWREaXJlY3QsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAogICAgIG1h
Y3JvKENoZWNrU3RydWN0dXJlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCi0gICAgbWFjcm8oQ2hlY2tF
eGVjdXRhYmxlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oR2V0RXhlY3V0YWJsZSwg
Tm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUHV0U3RydWN0dXJlLCBOb2RlTXVzdEdlbmVyYXRl
KSBcCiAgICAgbWFjcm8oQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UsIE5vZGVNdXN0R2VuZXJhdGUg
fCBOb2RlUmVzdWx0U3RvcmFnZSkgXAogICAgIG1hY3JvKFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3Jh
Z2UsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0U3RvcmFnZSkgXApAQCAtMTg1LDcgKzE4
NSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhWYXJpYWJs
ZVdhdGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhWYXJJbmplY3Rpb25X
YXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oRnVuY3Rpb25SZWVudHJ5
V2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAotICAgIG1hY3JvKENoZWNrRnVuY3Rpb24s
IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhDaGVja0NlbGwsIE5vZGVNdXN0R2VuZXJh
dGUpIFwKKyAgICBtYWNybyhDaGVja0JhZENlbGwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBt
YWNybyhBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICBtYWNybyhDaGVja0luQm91bmRzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgXApAQCAtMjE0
LDYgKzIxNSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBDYWxs
cy4gKi9cCiAgICAgbWFjcm8oQ2FsbCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8
IE5vZGVIYXNWYXJBcmdzIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKICAgICBtYWNybyhDb25zdHJ1
Y3QsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncyB8IE5v
ZGVDbG9iYmVyc1dvcmxkKSBcCisgICAgbWFjcm8oUHJvZmlsZWRDYWxsLCBOb2RlUmVzdWx0SlMg
fCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MgfCBOb2RlQ2xvYmJlcnNXb3JsZCkg
XAorICAgIG1hY3JvKFByb2ZpbGVkQ29uc3RydWN0LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdl
bmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAogICAgIG1hY3Jv
KE5hdGl2ZUNhbGwsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFy
QXJncyB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCiAgICAgbWFjcm8oTmF0aXZlQ29uc3RydWN0LCBO
b2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MgfCBOb2RlQ2xv
YmJlcnNXb3JsZCkgXAogICAgIFwKQEAgLTI4Niw2ICsyODksMTEgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogICAgIC8qIGRpZmZlcmVudCBjb21waWxlci4gKi9cCiAgICAgbWFj
cm8oRm9yY2VPU1JFeGl0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgXAorICAgIC8qIFZlbmRz
IGEgYm90dG9tIEpTIHZhbHVlLiBJdCBpcyBpbnZhbGlkIHRvIGV2ZXIgZXhlY3V0ZSB0aGlzLiBV
c2VmdWwgZm9yIGNhc2VzICovXAorICAgIC8qIHdoZXJlIHdlIGtub3cgdGhhdCB3ZSB3b3VsZCBo
YXZlIGV4aXRlZCBidXQgd2UnZCBsaWtlIHRvIHN0aWxsIHRyYWNrIHRoZSBjb250cm9sICovXAor
ICAgIC8qIGZsb3cuICovXAorICAgIG1hY3JvKEJvdHRvbVZhbHVlLCBOb2RlUmVzdWx0SlMpIFwK
KyAgICBcCiAgICAgLyogQ2hlY2tzIHRoZSB3YXRjaGRvZyB0aW1lci4gSWYgdGhlIHRpbWVyIGhh
cyBmaXJlZCwgd2UgT1NSIGV4aXQgdG8gdGhlICovIFwKICAgICAvKiBiYXNlbGluZSBKSVQgdG8g
cmVkbyB0aGUgd2F0Y2hkb2cgdGltZXIgY2hlY2ssIGFuZCBzZXJ2aWNlIHRoZSB0aW1lci4gKi8g
XAogICAgIG1hY3JvKENoZWNrV2F0Y2hkb2dUaW1lciwgTm9kZU11c3RHZW5lcmF0ZSkgXApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50
b21DYW5vbmljYWxpemF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05Miw4ICs5MiwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
ICAgICAgICBub2RlLT5jaGlsZHJlbi5yZW1vdmVFZGdlKGktLSk7CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZHJlbi5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGls
ZHJlbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxv
Y2F0b3IuZnJlZShub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICBub2RlLT5jb252ZXJ0VG9DaGVjaygpOwogICAgICAgICAgICAgICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNl
LmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
aGFudG9tUmVtb3ZhbFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDYgKzEyNSw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTQyLDYgKzE0Myw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJl
ZShub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTE0
OSw4ICsxNTEsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgY2FzZSBIYXJkUGhhbnRvbTogewotICAgICAgICAgICAg
ICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xODgsNiArMTg4LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXREaXJlY3RQbmFt
ZToKICAgICAgICAgY2FzZSBDYWxsOgogICAgICAgICBjYXNlIENvbnN0cnVjdDoKKyAgICAgICAg
Y2FzZSBQcm9maWxlZENhbGw6CisgICAgICAgIGNhc2UgUHJvZmlsZWRDb25zdHJ1Y3Q6CiAgICAg
ICAgIGNhc2UgTmF0aXZlQ2FsbDoKICAgICAgICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6CiAgICAg
ICAgIGNhc2UgR2V0R2xvYmFsVmFyOgpAQCAtMTk2LDcgKzE5OCw4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgR2V0
R2V0dGVyU2V0dGVyQnlPZmZzZXQ6IHsKKyAgICAgICAgY2FzZSBHZXRHZXR0ZXJTZXR0ZXJCeU9m
ZnNldDoKKyAgICAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOiB7CiAgICAgICAgICAgICBjaGFuZ2Vk
IHw9IHNldFByZWRpY3Rpb24oU3BlY0NlbGxPdGhlcik7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQpAQCAtNjQyLDggKzY0NSw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRm9yY2VP
U1JFeGl0OgogICAgICAgICBjYXNlIFNldEFyZ3VtZW50OgogICAgICAgICBjYXNlIENoZWNrU3Ry
dWN0dXJlOgotICAgICAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToKLSAgICAgICAgY2FzZSBDaGVj
a0Z1bmN0aW9uOgorICAgICAgICBjYXNlIENoZWNrQ2VsbDoKKyAgICAgICAgY2FzZSBDaGVja0Jh
ZENlbGw6CiAgICAgICAgIGNhc2UgUHV0U3RydWN0dXJlOgogICAgICAgICBjYXNlIFRlYXJPZmZB
Y3RpdmF0aW9uOgogICAgICAgICBjYXNlIFRlYXJPZmZBcmd1bWVudHM6CkBAIC02NjUsNiArNjY4
LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgWm9tYmllSGludDoKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgCisgICAgICAgIC8vIFRoaXMgZ2V0cyBpZ25vcmVkIGJlY2F1c2Ug
aXQgb25seSBwcmV0ZW5kcyB0byBwcm9kdWNlIGEgdmFsdWUuCisgICAgICAgIGNhc2UgQm90dG9t
VmFsdWU6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgICAgICAvLyBUaGlz
IGdldHMgaWdub3JlZCBiZWNhdXNlIGl0IGFscmVhZHkgaGFzIGEgcHJlZGljdGlvbi4KICAgICAg
ICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9u
IDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFi
c3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgUHV0QnlJZEZsdXNoOgogICAgIGNhc2UgUHV0
QnlJZERpcmVjdDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgotICAgIGNhc2UgQ2hlY2tFeGVj
dXRhYmxlOgorICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNlIEdldEJ1dHRlcmZseToK
ICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgY2FzZSBBcnJheWlmeToKQEAgLTE3NCw3ICsxNzQs
OCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBQ
dXRHbG9iYWxWYXI6CiAgICAgY2FzZSBWYXJpYWJsZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBWYXJJ
bmplY3Rpb25XYXRjaHBvaW50OgotICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKKyAgICBjYXNlIENo
ZWNrQ2VsbDoKKyAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICBjYXNlIEFsbG9jYXRpb25Qcm9m
aWxlV2F0Y2hwb2ludDoKICAgICBjYXNlIFJlZ0V4cEV4ZWM6CiAgICAgY2FzZSBSZWdFeHBUZXN0
OgpAQCAtMTg3LDYgKzE4OCw4IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlw
ZSYgc3QKICAgICBjYXNlIENvbXBhcmVTdHJpY3RFcToKICAgICBjYXNlIENhbGw6CiAgICAgY2Fz
ZSBDb25zdHJ1Y3Q6CisgICAgY2FzZSBQcm9maWxlZENhbGw6CisgICAgY2FzZSBQcm9maWxlZENv
bnN0cnVjdDoKICAgICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5ld0FycmF5OgogICAgIGNh
c2UgTmV3QXJyYXlXaXRoU2l6ZToKQEAgLTI3Myw2ICsyNzYsMTEgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OgogICAg
ICAgICByZXR1cm4gZmFsc2U7IC8vIFRPRE86IGFkZCBhIGNoZWNrIGZvciBhbHJlYWR5IGNoZWNr
ZWQuICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNzY5CiAKKyAg
ICBjYXNlIEJvdHRvbVZhbHVlOgorICAgICAgICAvLyBJZiBpbiBkb3VidCwgYXNzdW1lIHRoYXQg
dGhpcyBpc24ndCBzYWZlIHRvIGV4ZWN1dGUsIGp1c3QgYmVjYXVzZSB3ZSBoYXZlIG5vIHdheSBv
ZgorICAgICAgICAvLyBjb21waWxpbmcgdGhpcyBub2RlLgorICAgICAgICByZXR1cm4gZmFsc2U7
CisKICAgICBjYXNlIEdldEJ5VmFsOgogICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFn
ZToKICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxNzI4
NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDAsOSArNjQwLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU1pc2NTdHJpY3RFcQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChO
b2RlKiBub2RlKQogewotICAgIGJvb2wgaXNDYWxsID0gbm9kZS0+b3AoKSA9PSBDYWxsOworICAg
IGJvb2wgaXNDYWxsID0gbm9kZS0+b3AoKSA9PSBDYWxsIHx8IG5vZGUtPm9wKCkgPT0gUHJvZmls
ZWRDYWxsOwogICAgIGlmICghaXNDYWxsKQotICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBD
b25zdHJ1Y3QpOworICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBDb25zdHJ1Y3QgfHwgbm9k
ZS0+b3AoKSA9PSBQcm9maWxlZENvbnN0cnVjdCk7CiAKICAgICAvLyBGb3IgY29uc3RydWN0b3Jz
LCB0aGUgdGhpcyBhcmd1bWVudCBpcyBub3QgcGFzc2VkIGJ1dCB3ZSBoYXZlIHRvIG1ha2Ugc3Bh
Y2UKICAgICAvLyBmb3IgaXQuCkBAIC02ODksNiArNjg5LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKIAogICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4o
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAKKyAgICBDYWxsTGlua0luZm8qIGluZm8gPSBt
X2ppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7CisKKyAgICBpZiAobm9kZS0+b3Ao
KSA9PSBQcm9maWxlZENhbGwgfHwgbm9kZS0+b3AoKSA9PSBQcm9maWxlZENvbnN0cnVjdCkgewor
ICAgICAgICBtX2ppdC52bSgpLT5jYWxsRWRnZUxvZy0+ZW1pdExvZ0NvZGUoCisgICAgICAgICAg
ICBtX2ppdCwgaW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBjYWxsZWUuanNWYWx1ZVJlZ3MoKSk7Cisg
ICAgfQorICAgIAogICAgIHNsb3dQYXRoLmFwcGVuZChicmFuY2hOb3RDZWxsKGNhbGxlZS5qc1Zh
bHVlUmVncygpKSk7CiAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFB0cldpdGhQYXRj
aChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxlZVBheWxvYWRHUFIsIHRhcmdldFRvQ2hl
Y2spKTsKICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNhbGxlZVBh
eWxvYWRHUFIsIE9CSkVDVF9PRkZTRVRPRihKU0Z1bmN0aW9uLCBtX3Njb3BlKSksIHJlc3VsdFBh
eWxvYWRHUFIpOwpAQCAtNzEzLDcgKzcyMCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRD
YWxsKE5vZGUqIG5vZGUKICAgICAgICAgbV9qaXQubW92ZShjYWxsZWVQYXlsb2FkR1BSLCBHUFJJ
bmZvOjpyZWdUMCk7CiAgICAgICAgIG1faml0Lm1vdmUoY2FsbGVlVGFnR1BSLCBHUFJJbmZvOjpy
ZWdUMSk7CiAgICAgfQotICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1faml0LmNvZGVCbG9jaygp
LT5hZGRDYWxsTGlua0luZm8oKTsKICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKGluZm8pLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
c2xvd0NhbGwgPSBtX2ppdC5uZWFyQ2FsbCgpOwogCkBAIC0zNjc1LDE4ICszNjgxLDIxIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUdl
dEFycmF5TGVuZ3RoKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgY2FzZSBD
aGVja0Z1bmN0aW9uOiB7Ci0gICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZ1bmN0aW9uKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRGdW5jdGlv
biwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoZnVuY3Rpb24uZ3ByKCkpLCBub2RlLT5jaGls
ZDEoKSwgbV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGZ1bmN0aW9u
LmdwcigpLCBub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpLmFzQ2VsbCgpKSk7CisgICAgY2FzZSBD
aGVja0NlbGw6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2VsbCh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkQ2VsbCwgSlNWYWx1ZVNv
dXJjZTo6dW5ib3hlZENlbGwoY2VsbC5ncHIoKSksIG5vZGUtPmNoaWxkMSgpLCBtX2ppdC5icmFu
Y2hXZWFrUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgY2VsbC5ncHIoKSwgbm9kZS0+Y2VsbE9w
ZXJhbmQoKS0+dmFsdWUoKS5hc0NlbGwoKSkpOwogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6IHsKKyAgICBj
YXNlIEdldEV4ZWN1dGFibGU6IHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rp
b24odGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBzcGVjdWxhdGVDZWxsVHlwZShub2Rl
LT5jaGlsZDEoKSwgZnVuY3Rpb24uZ3ByKCksIFNwZWNGdW5jdGlvbiwgSlNGdW5jdGlvblR5cGUp
OwotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZEV4ZWN1dGFibGUsIEpTVmFsdWVTb3VyY2U6
OnVuYm94ZWRDZWxsKGZ1bmN0aW9uLmdwcigpKSwgbm9kZS0+Y2hpbGQxKCksIG1faml0LmJyYW5j
aFdlYWtQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhmdW5j
dGlvbi5ncHIoKSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCBub2RlLT5leGVj
dXRhYmxlKCkpKTsKLSAgICAgICAgbm9SZXN1bHQobm9kZSk7CisgICAgICAgIEdQUlRlbXBvcmFy
eSByZXN1bHQodGhpcywgUmV1c2UsIGZ1bmN0aW9uKTsKKyAgICAgICAgR1BSUmVnIGZ1bmN0aW9u
R1BSID0gZnVuY3Rpb24uZ3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQu
Z3ByKCk7CisgICAgICAgIHNwZWN1bGF0ZUNlbGxUeXBlKG5vZGUtPmNoaWxkMSgpLCBmdW5jdGlv
bkdQUiwgU3BlY0Z1bmN0aW9uLCBKU0Z1bmN0aW9uVHlwZSk7CisgICAgICAgIG1faml0LmxvYWRQ
dHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoZnVuY3Rpb25HUFIsIEpTRnVuY3Rpb246Om9mZnNldE9m
RXhlY3V0YWJsZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAtNDE1Niw2ICs0MTY1
LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgY2Fz
ZSBDYWxsOgogICAgIGNhc2UgQ29uc3RydWN0OgorICAgIGNhc2UgUHJvZmlsZWRDYWxsOgorICAg
IGNhc2UgUHJvZmlsZWRDb25zdHJ1Y3Q6CiAgICAgICAgIGVtaXRDYWxsKG5vZGUpOwogICAgICAg
ICBicmVhazsKIApAQCAtNDg5Miw2ICs0OTAzLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKICAgICBjYXNlIE5h
dGl2ZUNhbGw6CiAgICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6CisgICAgY2FzZSBDaGVja0JhZENl
bGw6CisgICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxNzI4NTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02MjYsMTAgKzYyNiw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVNaXNjU3RyaWN0RXEKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSog
bm9kZSkKIHsKLQotICAgIGJvb2wgaXNDYWxsID0gbm9kZS0+b3AoKSA9PSBDYWxsOworICAgIGJv
b2wgaXNDYWxsID0gbm9kZS0+b3AoKSA9PSBDYWxsIHx8IG5vZGUtPm9wKCkgPT0gUHJvZmlsZWRD
YWxsOwogICAgIGlmICghaXNDYWxsKQotICAgICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCks
IG5vZGUsIG5vZGUtPm9wKCkgPT0gQ29uc3RydWN0KTsKKyAgICAgICAgREZHX0FTU0VSVChtX2pp
dC5ncmFwaCgpLCBub2RlLCBub2RlLT5vcCgpID09IENvbnN0cnVjdCB8fCBub2RlLT5vcCgpID09
IFByb2ZpbGVkQ29uc3RydWN0KTsKICAgICAKICAgICAvLyBGb3IgY29uc3RydWN0b3JzLCB0aGUg
dGhpcyBhcmd1bWVudCBpcyBub3QgcGFzc2VkIGJ1dCB3ZSBoYXZlIHRvIG1ha2Ugc3BhY2UKICAg
ICAvLyBmb3IgaXQuCkBAIC02NzAsNiArNjY5LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVt
aXRDYWxsKE5vZGUqIG5vZGUKIAogICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4obm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKICAgICAKKyAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9
IG1faml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKKyAgICAKKyAgICBpZiAobm9k
ZS0+b3AoKSA9PSBQcm9maWxlZENhbGwgfHwgbm9kZS0+b3AoKSA9PSBQcm9maWxlZENvbnN0cnVj
dCkgeworICAgICAgICBtX2ppdC52bSgpLT5jYWxsRWRnZUxvZy0+ZW1pdExvZ0NvZGUoCisgICAg
ICAgICAgICBtX2ppdCwgY2FsbExpbmtJbmZvLT5jYWxsRWRnZVByb2ZpbGUsIEpTVmFsdWVSZWdz
KGNhbGxlZUdQUikpOworICAgIH0KKwogICAgIHNsb3dQYXRoID0gbV9qaXQuYnJhbmNoUHRyV2l0
aFBhdGNoKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgY2FsbGVlR1BSLCB0YXJnZXRUb0NoZWNr
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigwKSk7CiAKICAgICBtX2ppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNhbGxlZUdQUiwgT0JKRUNUX09GRlNFVE9GKEpTRnVu
Y3Rpb24sIG1fc2NvcGUpKSwgcmVzdWx0R1BSKTsKQEAgLTY4Miw3ICs2ODgsNiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgc2xvd1BhdGgubGluaygmbV9q
aXQpOwogICAgIAogICAgIG1faml0Lm1vdmUoY2FsbGVlR1BSLCBHUFJJbmZvOjpyZWdUMCk7IC8v
IENhbGxlZSBuZWVkcyB0byBiZSBpbiByZWdUMAotICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJ
bmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbygpOwogICAgIG1faml0Lm1v
dmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6
cmVnVDIpOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8gYmUgaW4gcmVnVDIKICAgICBKSVRDb21waWxl
cjo6Q2FsbCBzbG93Q2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7CiAgICAgCkBAIC0zNzY4LDE4ICsz
NzczLDIxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgY29tcGlsZUdldEFycmF5TGVuZ3RoKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICAgICAg
Ci0gICAgY2FzZSBDaGVja0Z1bmN0aW9uOiB7Ci0gICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGZ1bmN0aW9uKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRGdW5jdGlvbiwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoZnVuY3Rpb24uZ3ByKCkp
LCBub2RlLT5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6Tm90RXF1
YWwsIGZ1bmN0aW9uLmdwcigpLCBub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpLmFzQ2VsbCgpKSk7
CisgICAgY2FzZSBDaGVja0NlbGw6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2Vs
bCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkQ2Vs
bCwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbC5ncHIoKSksIG5vZGUtPmNoaWxkMSgp
LCBtX2ppdC5icmFuY2hXZWFrUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgY2VsbC5ncHIoKSwg
bm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5hc0NlbGwoKSkpOwogICAgICAgICBub1Jlc3Vs
dChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIENoZWNr
RXhlY3V0YWJsZTogeworICAgIGNhc2UgR2V0RXhlY3V0YWJsZTogewogICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBmdW5jdGlvbih0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIHNw
ZWN1bGF0ZUNlbGxUeXBlKG5vZGUtPmNoaWxkMSgpLCBmdW5jdGlvbi5ncHIoKSwgU3BlY0Z1bmN0
aW9uLCBKU0Z1bmN0aW9uVHlwZSk7Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkRXhlY3V0
YWJsZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoZnVuY3Rpb24uZ3ByKCkpLCBub2RlLT5j
aGlsZDEoKSwgbV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJVENv
bXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1
dGFibGUoKSksIG5vZGUtPmV4ZWN1dGFibGUoKSkpOwotICAgICAgICBub1Jlc3VsdChub2RlKTsK
KyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgZnVuY3Rpb24pOworICAg
ICAgICBHUFJSZWcgZnVuY3Rpb25HUFIgPSBmdW5jdGlvbi5ncHIoKTsKKyAgICAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgc3BlY3VsYXRlQ2VsbFR5cGUobm9k
ZS0+Y2hpbGQxKCksIGZ1bmN0aW9uR1BSLCBTcGVjRnVuY3Rpb24sIEpTRnVuY3Rpb25UeXBlKTsK
KyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhmdW5jdGlvbkdQUiwg
SlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCByZXN1bHRHUFIpOworICAgICAgICBj
ZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAg
ICAgCkBAIC00MjE5LDkgKzQyMjcsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogCiAgICAgY2FzZSBDYWxsOgogICAgIGNhc2UgQ29uc3RydWN0OgorICAgIGNh
c2UgUHJvZmlsZWRDYWxsOgorICAgIGNhc2UgUHJvZmlsZWRDb25zdHJ1Y3Q6CiAgICAgICAgIGVt
aXRDYWxsKG5vZGUpOwogICAgICAgICBicmVhazsKLQorICAgICAgICAKICAgICBjYXNlIENyZWF0
ZUFjdGl2YXRpb246IHsKICAgICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCAh
bm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSk7CiAgICAgICAgIApAQCAtNDk3
MCw3ICs0OTgwLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CiAg
ICAgY2FzZSBGaWF0SW50NTI6Ci0gICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2Rl
LCAiVW5leHBlY3RlZCBGVEwgbm9kZSIpOworICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgorICAgIGNh
c2UgQm90dG9tVmFsdWU6CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAi
VW5leHBlY3RlZCBub2RlIik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9u
IDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzU0LDYgKzUzNTQsMTAgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdFN3aXRjaChOb2RlKiBubwogICAgIGNhc2UgU3dpdGNoU3RyaW5nOiB7CiAgICAg
ICAgIGVtaXRTd2l0Y2hTdHJpbmcobm9kZSwgZGF0YSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgY2FzZSBTd2l0Y2hDZWxsOiB7CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgp
LCBub2RlLCAiQmFkIHN3aXRjaCBraW5kIik7CisgICAgICAgIHJldHVybjsKICAgICB9IH0KICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFz
ZS5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MiwxMCAr
NjIsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChu
b2RlSW5kZXgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5v
cCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6Ci0gICAgICAgICAg
ICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG5vZGUtPmV4ZWN1dGFibGUoKS0+c3RydWN0dXJl
KCkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgICAgICAgICAgICAgICAgICByZWdp
c3RlclN0cnVjdHVyZXMobm9kZS0+c3RydWN0dXJlU2V0KCkpOwogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJ
bmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTMgKzUwLDE3IEBAIHB1YmxpYzoKICAgICAgICAgaWYg
KCFPcHRpb25zOjp1c2VGVExKSVQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgCi0gICAgICAgIGlmIChtX2dyYXBoLm1fcHJvZmlsZWRCbG9jay0+bV9kaWRGYWlsRlRMQ29t
cGlsYXRpb24pCisgICAgICAgIGlmIChtX2dyYXBoLm1fcHJvZmlsZWRCbG9jay0+bV9kaWRGYWls
RlRMQ29tcGlsYXRpb24pIHsKKyAgICAgICAgICAgIHJlbW92ZUZUTFByb2ZpbGluZygpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgICAgIAogI2lmIEVOQUJMRShG
VExfSklUKQogICAgICAgICBGVEw6OkNhcGFiaWxpdHlMZXZlbCBsZXZlbCA9IEZUTDo6Y2FuQ29t
cGlsZShtX2dyYXBoKTsKLSAgICAgICAgaWYgKGxldmVsID09IEZUTDo6Q2Fubm90Q29tcGlsZSkK
KyAgICAgICAgaWYgKGxldmVsID09IEZUTDo6Q2Fubm90Q29tcGlsZSkgeworICAgICAgICAgICAg
cmVtb3ZlRlRMUHJvZmlsaW5nKCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIGlmICghT3B0aW9uczo6ZW5hYmxlT1NSRW50cnlUb0ZUTCgp
KQogICAgICAgICAgICAgbGV2ZWwgPSBGVEw6OkNhbkNvbXBpbGU7CkBAIC0xMTgsNiArMTIyLDMy
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmIC8vIEVOQUJMRShGVExf
SklUKQogICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIHJlbW92ZUZUTFByb2ZpbGluZygpCisg
ICAgeworICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxv
Y2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0g
bV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKKyAgICAgICAgICAgIGlmICghYmxvY2spCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgbm9kZUluZGV4ID0gMDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5k
ZXgpIHsKKyAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7
CisgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAgICAgICAgICAg
Y2FzZSBQcm9maWxlZENhbGw6CisgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wKENhbGwp
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgY2FzZSBQcm9maWxlZENvbnN0cnVjdDoKKyAgICAgICAgICAgICAgICAgICAg
bm9kZS0+c2V0T3AoQ29uc3RydWN0KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KIH07CiAKIGJvb2wgcGVyZm9ybVRpZXJVcENoZWNrSW5qZWN0aW9uKEdyYXBoJiBn
cmFwaCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShy
ZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAwLDcgKzIwMCw4IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFtYXlFeGl0KG1fZ3Jh
cGgsIG5vZGUpIHx8IG5vZGUtPm9yaWdpbi5mb3JFeGl0LmlzU2V0KCkpOwogICAgICAgICAgICAg
ICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhhc1N0cnVjdHVyZSgpIHx8ICEhbm9kZS0+c3Ry
dWN0dXJlKCkpOwotICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhhc0Z1
bmN0aW9uKCkgfHwgbm9kZS0+ZnVuY3Rpb24oKS0+dmFsdWUoKS5pc0Z1bmN0aW9uKCkpOworICAg
ICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhhc0NlbGxPcGVyYW5kKCkgfHwg
bm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5pc0NlbGwoKSk7CisgICAgICAgICAgICAgICAg
VkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+aGFzQ2VsbE9wZXJhbmQoKSB8fCAhIW5vZGUtPmNlbGxP
cGVyYW5kKCktPnZhbHVlKCkpOwogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBp
ZiAoIShub2RlLT5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGlmICghbm9kZS0+Y2hpbGQyKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAJKHJldmlz
aW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENv
bGxlY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExNCw3ICsxMTQsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBbGxvY2F0
aW9uUHJvZmlsZVdhdGNocG9pbnQ6Ci0gICAgICAgICAgICBhZGRMYXppbHkoanNDYXN0PEpTRnVu
Y3Rpb24qPihtX25vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkpLT5hbGxvY2F0aW9uUHJvZmlsZVdh
dGNocG9pbnRTZXQoKSk7CisgICAgICAgICAgICBhZGRMYXppbHkoanNDYXN0PEpTRnVuY3Rpb24q
PihtX25vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkpLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNo
cG9pbnRTZXQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBj
YXNlIFZhcmlhYmxlV2F0Y2hwb2ludDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0
LDcgKzEwNCw4IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAg
ICBjYXNlIFB1dENsb3N1cmVWYXI6CiAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKICAgICBj
YXNlIFN0cmluZ0NoYXJBdDoKLSAgICBjYXNlIENoZWNrRnVuY3Rpb246CisgICAgY2FzZSBDaGVj
a0NlbGw6CisgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0
OgogICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBSZWFsbG9jYXRl
UHJvcGVydHlTdG9yYWdlOgpAQCAtMTI2LDcgKzEyNyw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2
ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6CiAg
ICAgY2FzZSBDaGVjazoKICAgICBjYXNlIENvdW50RXhlY3V0aW9uOgotICAgIGNhc2UgQ2hlY2tF
eGVjdXRhYmxlOgorICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNlIEdldFNjb3BlOgog
ICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OgogICAgIGNhc2UgQ2hlY2tBcmd1
bWVudHNOb3RDcmVhdGVkOgpAQCAtMTY2LDggKzE2NywxNCBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxl
dmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBHZXRHZW5lcmljUHJvcGVydHlFbnVtZXJh
dG9yOgogICAgIGNhc2UgR2V0RW51bWVyYXRvclBuYW1lOgogICAgIGNhc2UgVG9JbmRleFN0cmlu
ZzoKKyAgICBjYXNlIEJvdHRvbVZhbHVlOgogICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgUHJvZmlsZWRDYWxsOgorICAgIGNhc2UgUHJvZmlsZWRDb25z
dHJ1Y3Q6CisgICAgICAgIC8vIFRoZXNlIGFyZSBPSyBub3QgYmVjYXVzZSB0aGUgRlRMIGNhbiBz
dXBwb3J0IHRoZW0sIGJ1dCBiZWNhdXNlIGlmIHRoZSBERkcgc2VlcyBvbmUgb2YKKyAgICAgICAg
Ly8gdGhlc2UgdGhlbiB0aGUgRlRMIHdpbGwgc2VlIGEgbm9ybWFsIENhbGwvQ29uc3RydWN0Lgor
ICAgICAgICBicmVhazsKICAgICBjYXNlIElkZW50aXR5OgogICAgICAgICAvLyBObyBiYWNrZW5k
IGhhbmRsZXMgdGhpcyBiZWNhdXNlIGl0IHdpbGwgYmUgb3B0aW1pemVkIG91dC4gQnV0IHdlIG1h
eSBjaGVjawogICAgICAgICAvLyBmb3IgY2FwYWJpbGl0aWVzIGJlZm9yZSBvcHRpbWl6YXRpb24u
IEl0IHdvdWxkIGJlIGEgZGVlcCBlcnJvciB0byByZW1vdmUgdGhpcwpAQCAtMzI2LDYgKzMzMyw3
IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICAgICAgc3dp
dGNoIChub2RlLT5zd2l0Y2hEYXRhKCktPmtpbmQpIHsKICAgICAgICAgY2FzZSBTd2l0Y2hJbW06
CiAgICAgICAgIGNhc2UgU3dpdGNoQ2hhcjoKKyAgICAgICAgY2FzZSBTd2l0Y2hDZWxsOgogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gQ2Fu
bm90Q29tcGlsZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcs
NiBAQCBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHN0YXRpYyB2b2lkIGZ0bFVuCiBOT19SRVRVUk5f
RFVFX1RPX0NSQVNIIHN0YXRpYyB2b2lkIGZ0bFVucmVhY2hhYmxlKAogICAgIENvZGVCbG9jayog
Y29kZUJsb2NrLCBCbG9ja0luZGV4IGJsb2NrSW5kZXgsIHVuc2lnbmVkIG5vZGVJbmRleCkKIHsK
LSAgICAKICAgICBkYXRhTG9nKCJDcmFzaGluZyBpbiB0aG91Z2h0LXRvLWJlLXVucmVhY2hhYmxl
IEZUTC1nZW5lcmF0ZWQgY29kZSBmb3IgIiwgcG9pbnRlckR1bXAoY29kZUJsb2NrKSwgIiBhdCBi
YXNpYyBibG9jayAjIiwgYmxvY2tJbmRleCk7CiAgICAgaWYgKG5vZGVJbmRleCAhPSBVSU5UX01B
WCkKICAgICAgICAgZGF0YUxvZygiLCBub2RlIEAiLCBub2RlSW5kZXgpOwpAQCAtMTUzLDExICsx
NTIsMTcgQEAgcHVibGljOgogICAgICAgICBmb3IgKHVuc2lnbmVkIGJsb2NrSW5kZXggPSBkZXB0
aEZpcnN0LnNpemUoKTsgYmxvY2tJbmRleC0tOyApIHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sq
IGJsb2NrID0gZGVwdGhGaXJzdFtibG9ja0luZGV4XTsKICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgbm9kZUluZGV4ID0gYmxvY2stPnNpemUoKTsgbm9kZUluZGV4LS07ICkgewotICAgICAgICAg
ICAgICAgIE5vZGUqIG1fbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOwotICAgICAgICAgICAg
ICAgIGlmIChtX25vZGUtPmhhc0tub3duRnVuY3Rpb24oKSkgeworICAgICAgICAgICAgICAgIE5v
ZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKKyAgICAgICAgICAgICAgICBzd2l0Y2gg
KG5vZGUtPm9wKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6CisgICAgICAg
ICAgICAgICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6IHsKICAgICAgICAgICAgICAgICAgICAgaW50
IG51bUFyZ3MgPSBtX25vZGUtPm51bUNoaWxkcmVuKCk7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChudW1BcmdzID4gbWF4TnVtYmVyT2ZBcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBtYXhOdW1iZXJPZkFyZ3VtZW50cyA9IG51bUFyZ3M7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KQEAgLTQ2OCwxMSArNDczLDE0IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hl
Y2tTdHJ1Y3R1cmU6CiAgICAgICAgICAgICBjb21waWxlQ2hlY2tTdHJ1Y3R1cmUoKTsKICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENoZWNrRnVuY3Rpb246Ci0gICAgICAgICAgICBj
b21waWxlQ2hlY2tGdW5jdGlvbigpOworICAgICAgICBjYXNlIENoZWNrQ2VsbDoKKyAgICAgICAg
ICAgIGNvbXBpbGVDaGVja0NlbGwoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IENoZWNrQmFkQ2VsbDoKKyAgICAgICAgICAgIGNvbXBpbGVDaGVja0JhZENlbGwoKTsKICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToKLSAgICAgICAgICAg
IGNvbXBpbGVDaGVja0V4ZWN1dGFibGUoKTsKKyAgICAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgor
ICAgICAgICAgICAgY29tcGlsZUdldEV4ZWN1dGFibGUoKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6CiAgICAgICAgICAgICBjb21waWxlQXJy
YXlpZnlUb1N0cnVjdHVyZSgpOwpAQCAtMTc0MywyNiArMTc1MSwyNSBAQCBwcml2YXRlOgogICAg
ICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKICAgICB9CiAgICAg
Ci0gICAgdm9pZCBjb21waWxlQ2hlY2tGdW5jdGlvbigpCisgICAgdm9pZCBjb21waWxlQ2hlY2tD
ZWxsKCkKICAgICB7CiAgICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgCiAgICAgICAgIHNwZWN1bGF0ZSgKLSAgICAgICAgICAgIEJhZEZ1bmN0
aW9uLCBqc1ZhbHVlVmFsdWUoY2VsbCksIG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpLAotICAgICAg
ICAgICAgbV9vdXQubm90RXF1YWwoY2VsbCwgd2Vha1BvaW50ZXIobV9ub2RlLT5mdW5jdGlvbigp
LT52YWx1ZSgpLmFzQ2VsbCgpKSkpOworICAgICAgICAgICAgQmFkQ2VsbCwganNWYWx1ZVZhbHVl
KGNlbGwpLCBtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSwKKyAgICAgICAgICAgIG1fb3V0Lm5vdEVx
dWFsKGNlbGwsIHdlYWtQb2ludGVyKG1fbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5hc0Nl
bGwoKSkpKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21waWxlQ2hlY2tFeGVjdXRhYmxlKCkK
KyAgICB2b2lkIGNvbXBpbGVDaGVja0JhZENlbGwoKQorICAgIHsKKyAgICAgICAgdGVybWluYXRl
KEJhZENlbGwpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNvbXBpbGVHZXRFeGVjdXRhYmxlKCkK
ICAgICB7CiAgICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgCiAgICAgICAgIHNwZWN1bGF0ZUZ1bmN0aW9uKG1fbm9kZS0+Y2hpbGQxKCksIGNl
bGwpOwotICAgICAgICAKLSAgICAgICAgc3BlY3VsYXRlKAotICAgICAgICAgICAgQmFkRXhlY3V0
YWJsZSwganNWYWx1ZVZhbHVlKGNlbGwpLCBtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSwKLSAgICAg
ICAgICAgIG1fb3V0Lm5vdEVxdWFsKAotICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIoY2Vs
bCwgbV9oZWFwcy5KU0Z1bmN0aW9uX2V4ZWN1dGFibGUpLAotICAgICAgICAgICAgICAgIHdlYWtQ
b2ludGVyKG1fbm9kZS0+ZXhlY3V0YWJsZSgpKSkpOworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0
LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0Z1bmN0aW9uX2V4ZWN1dGFibGUpKTsKICAgICB9CiAg
ICAgCiAgICAgdm9pZCBjb21waWxlQXJyYXlpZnlUb1N0cnVjdHVyZSgpCkBAIC0zNjczLDkgKzM2
ODAsNyBAQCBwcml2YXRlOgogICAgICAgICBpbnQgbnVtUGFzc2VkQXJncyA9IG1fbm9kZS0+bnVt
Q2hpbGRyZW4oKSAtIDE7CiAgICAgICAgIGludCBudW1BcmdzID0gbnVtUGFzc2VkQXJncyArIGR1
bW15VGhpc0FyZ3VtZW50OwogCi0gICAgICAgIEFTU0VSVChtX25vZGUtPmhhc0tub3duRnVuY3Rp
b24oKSk7Ci0KLSAgICAgICAgSlNGdW5jdGlvbioga25vd25GdW5jdGlvbiA9IG1fbm9kZS0+a25v
d25GdW5jdGlvbigpOworICAgICAgICBKU0Z1bmN0aW9uKiBrbm93bkZ1bmN0aW9uID0ganNDYXN0
PEpTRnVuY3Rpb24qPihtX25vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuYXNDZWxsKCkpOwog
ICAgICAgICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiA9IGtub3duRnVuY3Rpb24tPm5hdGl2ZUZ1
bmN0aW9uKCk7CiAKICAgICAgICAgRGxfaW5mbyBpbmZvOwpAQCAtMzkxOCwxMCArMzkyMywzNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAg
ICAgICBjYXNlIFN3aXRjaFN0cmluZzoKKyAgICAgICAgY2FzZSBTd2l0Y2hTdHJpbmc6IHsKICAg
ICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJVbmltcGxlbWVudGVkIik7Ci0g
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgIGNhc2UgU3dpdGNoQ2VsbDogeworICAgICAgICAgICAgTFZhbHVlIGNl
bGw7CisgICAgICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7Cisg
ICAgICAgICAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgICAgICAgICBjZWxsID0gbG93Q2Vs
bChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAg
ICAgICAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgY2VsbENhc2UgPSBGVExfTkVXX0JMT0NLKG1f
b3V0LCAoIlN3aXRjaC9Td2l0Y2hDZWxsIGNlbGwgY2FzZSIpKTsKKyAgICAgICAgICAgICAgICBt
X291dC5icmFuY2goCisgICAgICAgICAgICAgICAgICAgIGlzQ2VsbCh2YWx1ZSksIHVuc3VyZShj
ZWxsQ2FzZSksIHVuc3VyZShsb3dCbG9jayhkYXRhLT5mYWxsVGhyb3VnaC5ibG9jaykpKTsKKyAg
ICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjZWxsQ2FzZSk7CisgICAgICAgICAgICAgICAg
Y2VsbCA9IHZhbHVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBERkdf
Q1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiQmFkIHVzZSBraW5kIik7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBidWlsZFN3
aXRjaChtX25vZGUtPnN3aXRjaERhdGEoKSwgbV9vdXQuaW50UHRyLCBjZWxsKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfSB9CiAgICAgICAgIAogICAgICAgICBERkdfQ1JBU0gobV9n
cmFwaCwgbV9ub2RlLCAiQmFkIHN3aXRjaCBraW5kIik7CiAgICAgfQpAQCAtNTE4Niw3ICs1MjE4
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgVmVjdG9yPFN3aXRjaENhc2U+IGNhc2VzOwogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS0+Y2FzZXMuc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgICAgIGNhc2VzLmFwcGVuZChTd2l0Y2hDYXNlKAotICAgICAgICAgICAgICAgIGNvbnN0
SW50KHR5cGUsIGRhdGEtPmNhc2VzW2ldLnZhbHVlLnN3aXRjaExvb2t1cFZhbHVlKCkpLAorICAg
ICAgICAgICAgICAgIGNvbnN0SW50KHR5cGUsIGRhdGEtPmNhc2VzW2ldLnZhbHVlLnN3aXRjaExv
b2t1cFZhbHVlKGRhdGEtPmtpbmQpKSwKICAgICAgICAgICAgICAgICBsb3dCbG9jayhkYXRhLT5j
YXNlc1tpXS50YXJnZXQuYmxvY2spLCBXZWlnaHQoZGF0YS0+Y2FzZXNbaV0udGFyZ2V0LmNvdW50
KSkpOwogICAgICAgICB9CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5jcHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05ODQsNiArOTg0LDExIEBAIHZvaWQgSGVhcDo6Y29s
bGVjdChIZWFwT3BlcmF0aW9uIGNvbGxlY3QKICAgICAgICAgdm0oKS0+dHlwZVByb2ZpbGVyTG9n
KCktPnByb2Nlc3NMb2dFbnRyaWVzKEFTQ0lJTGl0ZXJhbCgiR0MiKSk7CiAgICAgfQogICAgIAor
ICAgIGlmICh2bSgpLT5jYWxsRWRnZUxvZykgeworICAgICAgICBEZWZlckdDRm9yQVdoaWxlIGF3
aGlsZSgqdGhpcyk7CisgICAgICAgIHZtKCktPmNhbGxFZGdlTG9nLT5wcm9jZXNzTG9nKCk7Cisg
ICAgfQorICAgIAogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2RlZmVycmFsRGVwdGgpOwogICAgIEFT
U0VSVCh2bSgpLT5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKICAgICBSRUxFQVNF
X0FTU0VSVCh2bSgpLT5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9t
aWNTdHJpbmdUYWJsZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuaAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsMzEgQEAg
cHVibGljOgogI2VuZGlmCiAgICAgfQogICAgIAorICAgIHZvaWQgc3RvcmVWYWx1ZShKU1ZhbHVl
UmVncyByZWdzLCB2b2lkKiBhZGRyZXNzKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
ICAgICBzdG9yZTY0KHJlZ3MuZ3ByKCksIGFkZHJlc3MpOworI2Vsc2UKKyAgICAgICAgc3RvcmUz
MihyZWdzLnBheWxvYWRHUFIoKSwgYml0d2lzZV9jYXN0PHZvaWQqPihiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90PihhZGRyZXNzKSArIFBheWxvYWRPZmZzZXQpKTsKKyAgICAgICAgc3RvcmUzMihyZWdz
LnRhZ0dQUigpLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGFk
ZHJlc3MpICsgVGFnT2Zmc2V0KSk7CisjZW5kaWYKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2Fk
VmFsdWUoQWRkcmVzcyBhZGRyZXNzLCBKU1ZhbHVlUmVncyByZWdzKQorICAgIHsKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgICAgICBsb2FkNjQoYWRkcmVzcywgcmVncy5ncHIoKSk7CisjZWxzZQor
ICAgICAgICBpZiAoYWRkcmVzcy5iYXNlID09IHJlZ3MucGF5bG9hZEdQUigpKSB7CisgICAgICAg
ICAgICBsb2FkMzIoYWRkcmVzcy53aXRoT2Zmc2V0KFRhZ09mZnNldCksIHJlZ3MudGFnR1BSKCkp
OworICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldChQYXlsb2FkT2Zmc2V0KSwg
cmVncy5wYXlsb2FkR1BSKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9hZDMy
KGFkZHJlc3Mud2l0aE9mZnNldChQYXlsb2FkT2Zmc2V0KSwgcmVncy5wYXlsb2FkR1BSKCkpOwor
ICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldChUYWdPZmZzZXQpLCByZWdzLnRh
Z0dQUigpKTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorICAgIAogICAgIHZvaWQgbW92ZVRy
dXN0ZWRWYWx1ZShKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlUmVncyByZWdzKQogICAgIHsKICNpZiBV
U0UoSlNWQUxVRTY0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBl
cnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVy
cy5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxs
SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjY2LDYgKzE2NjYsMTUgQEAgcHVibGljOgog
ICAgICAgICBtb3ZlKGFyZzQsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CiAgICAgfQogI2VuZGlm
CisgICAgCisgICAgdm9pZCBzZXR1cEFyZ3VtZW50cyhKU1ZhbHVlUmVncyBhcmcxKQorICAgIHsK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBzZXR1cEFyZ3VtZW50cyhhcmcxLmdwcigpKTsK
KyNlbHNlCisgICAgICAgIHNldHVwQXJndW1lbnRzKGFyZzEucGF5bG9hZEdQUigpLCBhcmcxLnRh
Z0dQUigpKTsKKyNlbmRpZgorICAgIH0KIAogICAgIHZvaWQgc2V0dXBSZXN1bHRzKEdQUlJlZyBk
ZXN0QSwgR1BSUmVnIGRlc3RCKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvR1BSSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BS
SW5mby5oCShyZXZpc2lvbiAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQ
UkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsOCBAQCBwdWJsaWM6CiAgICAgR1BS
UmVnIHRhZ0dQUigpIGNvbnN0IHsgcmV0dXJuIEludmFsaWRHUFJSZWc7IH0KICAgICBHUFJSZWcg
cGF5bG9hZEdQUigpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByOyB9CiAgICAgCisgICAgYm9vbCB1c2Vz
KEdQUlJlZyBncHIpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByID09IGdwcjsgfQorICAgIAogcHJpdmF0
ZToKICAgICBHUFJSZWcgbV9ncHI7CiB9OwpAQCAtMTY5LDYgKzE3MSw4IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHRhZ0dQUigpOwogICAgIH0KIAorICAgIGJvb2wgdXNlcyhHUFJSZWcgZ3By
KSBjb25zdCB7IHJldHVybiBtX3RhZ0dQUiA9PSBncHIgfHwgbV9wYXlsb2FkR1BSID09IGdwcjsg
fQorICAgIAogcHJpdmF0ZToKICAgICBpbnQ4X3QgbV90YWdHUFI7CiAgICAgaW50OF90IG1fcGF5
bG9hZEdQUjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5j
cHAJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2Fs
bDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAwLDYgKzMwMCwxNCBAQCB2b2lkIEpJVDo6
Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgc3RvcmUzMihyZWdUMCwgQWRkcmVz
cyhzdGFja1BvaW50ZXJSZWdpc3RlciwgSlNTdGFjazo6Q2FsbGVlICogc3RhdGljX2Nhc3Q8aW50
PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVB
bmRQQykpKTsKICAgICBzdG9yZTMyKHJlZ1QxLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVy
LCBKU1N0YWNrOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsg
VGFnT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAKKyAgICBDYWxsTGlua0lu
Zm8qIGluZm8gPSBtX2NvZGVCbG9jay0+YWRkQ2FsbExpbmtJbmZvKCk7CisKKyAgICBpZiAoQ2Fs
bEVkZ2VMb2c6OmlzRW5hYmxlZCgpICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKQorICAgICAgICAm
JiBPcHRpb25zOjpiYXNlbGluZURvZXNDYWxsRWRnZVByb2ZpbGluZygpKSB7CisgICAgICAgIG1f
dm0tPmVuc3VyZUNhbGxFZGdlTG9nKCkuZW1pdExvZ0NvZGUoCisgICAgICAgICAgICAqdGhpcywg
aW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApKTsKKyAgICB9
CisKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbF9ldmFsKSB7CiAgICAgICAgIGNvbXBpbGVD
YWxsRXZhbChpbnN0cnVjdGlvbik7CiAgICAgICAgIHJldHVybjsKQEAgLTMxMyw3ICszMjEsNiBA
QCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgYWRkU2xvd0Nh
c2Uoc2xvd0Nhc2UpOwogCiAgICAgQVNTRVJUKG1fY2FsbENvbXBpbGF0aW9uSW5mby5zaXplKCkg
PT0gY2FsbExpbmtJbmZvSW5kZXgpOwotICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1fY29kZUJs
b2NrLT5hZGRDYWxsTGlua0luZm8oKTsKICAgICBpbmZvLT5jYWxsVHlwZSA9IENhbGxMaW5rSW5m
bzo6Y2FsbFR5cGVGb3Iob3Bjb2RlSUQpOwogICAgIGluZm8tPmNvZGVPcmlnaW4gPSBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVPZmZzZXQpOwogICAgIGluZm8tPmNhbGxlZUdQUiA9IHJlZ1QwOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAxNzI4NTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTIsNiArMjEyLDEyIEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29k
ZUkKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSwgcmVnVDApOyAvLyByZWdUMCBo
b2xkcyBjYWxsZWUuCiAKICAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJl
Z2lzdGVyLCBKU1N0YWNrOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rl
cikpIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CisgICAgCisgICAgQ2FsbExpbmtJbmZv
KiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5mbygpOworCisgICAgaWYgKENhbGxF
ZGdlTG9nOjppc0VuYWJsZWQoKSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkKKyAgICAgICAgJiYg
T3B0aW9uczo6YmFzZWxpbmVEb2VzQ2FsbEVkZ2VQcm9maWxpbmcoKSkKKyAgICAgICAgbV92bS0+
ZW5zdXJlQ2FsbEVkZ2VMb2coKS5lbWl0TG9nQ29kZSgqdGhpcywgaW5mby0+Y2FsbEVkZ2VQcm9m
aWxlLCBKU1ZhbHVlUmVncyhyZWdUMCkpOwogCiAgICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxf
ZXZhbCkgewogICAgICAgICBjb21waWxlQ2FsbEV2YWwoaW5zdHJ1Y3Rpb24pOwpAQCAtMjIzLDcg
KzIyOSw2IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICBh
ZGRTbG93Q2FzZShzbG93Q2FzZSk7CiAKICAgICBBU1NFUlQobV9jYWxsQ29tcGlsYXRpb25JbmZv
LnNpemUoKSA9PSBjYWxsTGlua0luZm9JbmRleCk7Ci0gICAgQ2FsbExpbmtJbmZvKiBpbmZvID0g
bV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5mbygpOwogICAgIGluZm8tPmNhbGxUeXBlID0gQ2Fs
bExpbmtJbmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJRCk7CiAgICAgaW5mby0+Y29kZU9yaWdpbiA9
IENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCk7CiAgICAgaW5mby0+Y2FsbGVlR1BSID0gcmVn
VDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lv
biAxNzI4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE2Nyw2ICsxNjcsMTMgQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRp
b25TdHJpbmc7CiAgICAgdihib29sLCBlbmFibGVBY2Nlc3NJbmxpbmluZywgdHJ1ZSkgXAogICAg
IHYoYm9vbCwgZW5hYmxlUG9seXZhcmlhbnREZXZpcnR1YWxpemF0aW9uLCB0cnVlKSBcCiAgICAg
dihib29sLCBlbmFibGVQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nLCB0cnVlKSBcCisgICAgdihi
b29sLCBlbmFibGVQb2x5bW9ycGhpY0NhbGxJbmxpbmluZywgdHJ1ZSkgXAorICAgIHYoYm9vbCwg
Y2FsbFN0YXR1c1Nob3VsZFVzZUNhbGxFZGdlUHJvZmlsZSwgdHJ1ZSkgXAorICAgIHYoYm9vbCwg
Y2FsbEVkZ2VQcm9maWxlUmVhbGx5UHJvY2Vzc2VzTG9nLCB0cnVlKSBcCisgICAgdihib29sLCBi
YXNlbGluZURvZXNDYWxsRWRnZVByb2ZpbGluZywgZmFsc2UpIFwKKyAgICB2KGJvb2wsIGRmZ0Rv
ZXNDYWxsRWRnZVByb2ZpbGluZywgdHJ1ZSkgXAorICAgIHYoYm9vbCwgZW5hYmxlQ2FsbEVkZ2VQ
cm9maWxpbmcsIHRydWUpIFwKKyAgICB2KHVuc2lnbmVkLCBmcmVxdWVudENhbGxUaHJlc2hvbGQs
IDIpIFwKICAgICB2KGJvb2wsIG9wdGltaXplTmF0aXZlQ2FsbHMsIGZhbHNlKSBcCiAgICAgXAog
ICAgIHYoYm9vbCwgZW5hYmxlQ29uY3VycmVudEpJVCwgdHJ1ZSkgXApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzMsNiArMzczLDEz
IEBAIFZNKiYgVk06OnNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKQogICAgIHJldHVybiBzaGFyZWRJ
bnN0YW5jZTsKIH0KIAorQ2FsbEVkZ2VMb2cmIFZNOjplbnN1cmVDYWxsRWRnZUxvZygpCit7Cisg
ICAgaWYgKCFjYWxsRWRnZUxvZykKKyAgICAgICAgY2FsbEVkZ2VMb2cgPSBzdGQ6Om1ha2VfdW5p
cXVlPENhbGxFZGdlTG9nPigpOworICAgIHJldHVybiAqY2FsbEVkZ2VMb2c7Cit9CisKICNpZiBF
TkFCTEUoSklUKQogc3RhdGljIFRodW5rR2VuZXJhdG9yIHRodW5rR2VuZXJhdG9yRm9ySW50cmlu
c2ljKEludHJpbnNpYyBpbnRyaW5zaWMpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgJKHJldmlzaW9uIDE3Mjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBBcml0eUNoZWNrRmFpbFJldHVyblRodW5rczsKICAgICBjbGFzcyBCdWlsdGlu
RXhlY3V0YWJsZXM7CisgICAgY2xhc3MgQ2FsbEVkZ2VMb2c7CiAgICAgY2xhc3MgQ29kZUJsb2Nr
OwogICAgIGNsYXNzIENvZGVDYWNoZTsKICAgICBjbGFzcyBDb21tb25JZGVudGlmaWVyczsKQEAg
LTIzMyw2ICsyMzQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICNpZiBFTkFCTEUoREZHX0pJVCkKICAg
ICAgICAgT3duUHRyPERGRzo6TG9uZ0xpdmVkU3RhdGU+IGRmZ1N0YXRlOwogI2VuZGlmIC8vIEVO
QUJMRShERkdfSklUKQorICAgICAgICAKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxFZGdl
TG9nPiBjYWxsRWRnZUxvZzsKKyAgICAgICAgQ2FsbEVkZ2VMb2cmIGVuc3VyZUNhbGxFZGdlTG9n
KCk7CiAKICAgICAgICAgVk1UeXBlIHZtVHlwZTsKICAgICAgICAgQ2xpZW50RGF0YSogY2xpZW50
RGF0YTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbmV3LWFycmF5
LXRoZW4tZXhpdC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL25ldy1hcnJheS10aGVuLWV4aXQuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL25ldy1hcnJheS10aGVuLWV4aXQuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxNCBAQAorZnVuY3Rpb24gZm9vKGYpIHsKKyAgICByZXR1cm4gbmV3
IGYoKTsKK30KKworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsg
KytpKQorICAgIGZvbyhBcnJheSk7CisKK3ZhciBkaWRDYWxsID0gZmFsc2U7Citmb28oZnVuY3Rp
b24oKSB7IGRpZENhbGwgPSB0cnVlOyB9KTsKKworaWYgKCFkaWRDYWxsKQorICAgIHRocm93ICJF
cnJvcjogZGlkbid0IGNhbGwgbXkgZnVuY3Rpb24uIjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQtdGhpcy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3BvbHktY2FsbC1leGl0LXRoaXMuanMJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3BvbHkt
Y2FsbC1leGl0LXRoaXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOSBAQAorKGZ1bmN0
aW9uKCkgeworICAgIGZ1bmN0aW9uIGZvbyh4KSB7IHJldHVybiAxICsgdGhpcy5mOyB9CisgICAg
ZnVuY3Rpb24gYmFyKHgpIHsgcmV0dXJuIHggKyB0aGlzLmY7IH0KKyAgICBmdW5jdGlvbiBiYXoo
eCkgeyByZXR1cm4geCArIDEgKyB0aGlzLmY7IH0KKyAgICAKKyAgICB2YXIgbiA9IDEwMDAwMDA7
CisgICAgCisgICAgdmFyIHJlc3VsdCA9IChmdW5jdGlvbihvKSB7CisgICAgICAgIHZhciBmID0g
e2Z1bjpmb28sIGY6MX07CisgICAgICAgIHZhciBnID0ge2Z1bjpiYXIsIGY6Mn07CisgICAgICAg
IHZhciBoID0ge2Z1bjpiYXosIGY6M307CisgICAgICAgIAorICAgICAgICB2YXIgcmVzdWx0ID0g
MDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgICAgIGlm
IChpID09IG4gLSAxKQorICAgICAgICAgICAgICAgIGYgPSBoOworICAgICAgICAgICAgcmVzdWx0
ICs9IGYuZnVuKG8uZik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciB0bXAgPSBmOwor
ICAgICAgICAgICAgZiA9IGc7CisgICAgICAgICAgICBnID0gdG1wOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0pKHtmOjQyfSk7CisgICAgCisgICAg
aWYgKHJlc3VsdCAhPSAoKG4gLyAyIC0gMSkgKiAoNDIgKyAyKSkgKyAobiAvIDIgKiAoMSArIDEp
ICsgKDQyICsgMSArIDMpKSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsg
cmVzdWx0OworfSkoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
cG9seS1jYWxsLWV4aXQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9wb2x5LWNhbGwtZXhpdC5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQuanMJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwyOSBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIGZvbyh4KSB7IHJl
dHVybiAxOyB9CisgICAgZnVuY3Rpb24gYmFyKHgpIHsgcmV0dXJuIHg7IH0KKyAgICBmdW5jdGlv
biBiYXooeCkgeyByZXR1cm4geCArIDE7IH0KKyAgICAKKyAgICB2YXIgbiA9IDEwMDAwMDA7Cisg
ICAgCisgICAgdmFyIHJlc3VsdCA9IChmdW5jdGlvbihvKSB7CisgICAgICAgIHZhciBmID0gZm9v
OworICAgICAgICB2YXIgZyA9IGJhcjsKKyAgICAgICAgdmFyIGggPSBiYXo7CisgICAgICAgIAor
ICAgICAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyAr
K2kpIHsKKyAgICAgICAgICAgIGlmIChpID09IG4gLSAxKQorICAgICAgICAgICAgICAgIGYgPSBo
OworICAgICAgICAgICAgcmVzdWx0ICs9IGYoby5mKTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgdmFyIHRtcCA9IGY7CisgICAgICAgICAgICBmID0gZzsKKyAgICAgICAgICAgIGcgPSB0bXA7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSkoe2Y6
NDJ9KTsKKyAgICAKKyAgICBpZiAocmVzdWx0ICE9ICgobiAvIDIgLSAxKSAqIDQyKSArIChuIC8g
MiAqIDEpICsgKDQyICsgMSkpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiAr
IHJlc3VsdDsKK30pKCk7CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyODU5KQorKysgU291cmNlL1dURi9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAxNC0wOC0yMyAgRmls
aXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEZUTCBzaG91bGQgYmUgYWJs
ZSB0byBkbyBwb2x5bW9ycGhpYyBjYWxsIGlubGluaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUxNDUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFkZCBzb21lIHBvd2VyIHRoYXQgSSBu
ZWVkIGZvciBjYWxsIGVkZ2UgcHJvZmlsaW5nLgorCisgICAgICAgICogd3RmL093blB0ci5oOgor
ICAgICAgICAoV1RGOjpPd25QdHI8VD46OmNyZWF0ZVRyYW5zYWN0aW9uYWxseSk6CisgICAgICAg
ICogd3RmL1NwZWN0cnVtLmg6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjphZGQpOgorICAgICAg
ICAoV1RGOjpTcGVjdHJ1bTo6YWRkQWxsKToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OmdldCk6
CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpzaXplKToKKyAgICAgICAgKFdURjo6U3BlY3RydW06
OktleUFuZENvdW50OjpLZXlBbmRDb3VudCk6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpjbGVh
cik6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpyZW1vdmVJZik6CisKIDIwMTQtMDgtMjEgIFRp
bSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0IHIx
NzI4MzEsIGl0IGJyb2tlIHRoZSBXaW5kb3dzIGJ1aWxkLgpJbmRleDogU291cmNlL1dURi93dGYv
T3duUHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvT3duUHRyLmgJKHJldmlzaW9u
IDE3Mjg1OSkKKysrIFNvdXJjZS9XVEYvd3RmL093blB0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDks
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykg
MjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjIsNiArMjIsNyBAQAogI2RlZmlu
ZSBXVEZfT3duUHRyX2gKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8
d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3
dGYvT3duUHRyQ29tbW9uLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgpAQCAtNzIsNiArNzMsMTQg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IE93blB0ciYg
b3BlcmF0b3I9KE93blB0cjxVPiYmKTsKIAogICAgICAgICB2b2lkIHN3YXAoT3duUHRyJiBvKSB7
IHN0ZDo6c3dhcChtX3B0ciwgby5tX3B0cik7IH0KKyAgICAgICAgCisgICAgICAgIC8vIENvbnN0
cnVjdCBhbiBvYmplY3QgdG8gc3RvcmUgaW50byB0aGlzIE93blB0ciwgYnV0IG9ubHkgc28gbG9u
ZyBhcyB0aGlzIE93blB0cgorICAgICAgICAvLyBkb2Vzbid0IGFscmVhZHkgcG9pbnQgdG8gYW4g
b2JqZWN0LiBUaGlzIHdpbGwgZW5zdXJlIHRoYXQgYWZ0ZXIgeW91IGNhbGwgdGhpcywKKyAgICAg
ICAgLy8gdGhlIE93blB0ciB3aWxsIHBvaW50IHRvIGFuIGluc3RhbmNlIG9mIFQuIFRoaXMgaW5z
dGFuY2UgbWF5IG9yIG1heSBub3QgaGF2ZSBiZWVuCisgICAgICAgIC8vIGNyZWF0ZWQgYnkgdGhp
cyBjYWxsLiBNb3Jlb3ZlciwgdGhpcyBjYWxsIHVzZXMgYW4gb3Bwb3J0dW5pc3RpYyB0cmFuc2Fj
dGlvbiwgaW4KKyAgICAgICAgLy8gdGhhdCB3ZSBtYXkgY3JlYXRlIGFuIGluc3RhbmNlIG9mIFQg
YW5kIHRoZW4gaW1tZWRpYXRlbHkgdGhyb3cgaXQgYXdheS4KKyAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gQXJncz4KKyAgICAgICAgdm9pZCBjcmVhdGVUcmFuc2FjdGlvbmFsbHkoQXJncy4u
Lik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBleHBsaWNpdCBPd25QdHIoUHRyVHlwZSBwdHIp
IDogbV9wdHIocHRyKSB7IH0KQEAgLTE4Niw2ICsxOTUsMjggQEAgbmFtZXNwYWNlIFdURiB7CiAg
ICAgICAgIHJldHVybiBwLmdldCgpOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IGlubGluZSB2b2lkIE93blB0cjxUPjo6Y3JlYXRl
VHJhbnNhY3Rpb25hbGx5KEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIGlmIChtX3B0cikg
eworICAgICAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFQqIG5ld09iamVjdCA9IG5ldyBUKGFyZ3Mu
Li4pOworICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOworI2lmIEVOQUJMRShDT01QQVJF
X0FORF9TV0FQKQorICAgICAgICBkbyB7CisgICAgICAgICAgICBpZiAobV9wdHIpIHsKKyAgICAg
ICAgICAgICAgICBkZWxldGUgbmV3T2JqZWN0OworICAgICAgICAgICAgICAgIFdURjo6bG9hZExv
YWRGZW5jZSgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSB3aGlsZSAoIVdURjo6d2Vha0NvbXBhcmVBbmRTd2FwKGJpdHdpc2VfY2FzdDx2b2lkKnZv
bGF0aWxlKj4oJm1fcHRyKSwgbnVsbHB0ciwgbmV3T2JqZWN0KSk7CisjZWxzZQorICAgICAgICBt
X3B0ciA9IG5ld09iamVjdDsKKyNlbmRpZgorICAgIH0KKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAK
IHVzaW5nIFdURjo6T3duUHRyOwpJbmRleDogU291cmNlL1dURi93dGYvU3BlY3RydW0uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCShyZXZpc2lvbiAxNzI4NTkpCisr
KyBTb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwyMiArMzIsMzEg
QEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBDb3VudGVyVHlwZSA9IHVuc2lnbmVkPgogY2xhc3MgU3BlY3Ry
dW0gewogcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCB1bnNpZ25lZCBs
b25nPjo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPFQs
IHVuc2lnbmVkIGxvbmc+Ojpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKKyAgICB0eXBl
ZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+OjppdGVyYXRvciBpdGVyYXRvcjsK
KyAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+Ojpjb25zdF9pdGVy
YXRvciBjb25zdF9pdGVyYXRvcjsKICAgICAKICAgICBTcGVjdHJ1bSgpIHsgfQogICAgIAotICAg
IHZvaWQgYWRkKGNvbnN0IFQmIGtleSwgdW5zaWduZWQgbG9uZyBjb3VudCA9IDEpCisgICAgdm9p
ZCBhZGQoY29uc3QgVCYga2V5LCBDb3VudGVyVHlwZSBjb3VudCA9IDEpCiAgICAgewotICAgICAg
ICB0eXBlbmFtZSBIYXNoTWFwPFQsIHVuc2lnbmVkIGxvbmc+OjpBZGRSZXN1bHQgcmVzdWx0ID0g
bV9tYXAuYWRkKGtleSwgY291bnQpOworICAgICAgICBpZiAoIWNvdW50KQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB0eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6QWRkUmVz
dWx0IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGNvdW50KTsKICAgICAgICAgaWYgKCFyZXN1bHQu
aXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgKz0gY291bnQ7
CiAgICAgfQogICAgIAotICAgIHVuc2lnbmVkIGxvbmcgZ2V0KGNvbnN0IFQmIGtleSkgY29uc3QK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIHZvaWQgYWRkQWxsKGNvbnN0IFNwZWN0cnVt
PFQsIFU+JiBvdGhlclNwZWN0cnVtKQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvIGVudHJ5IDog
b3RoZXJTcGVjdHJ1bSkKKyAgICAgICAgICAgIGFkZChlbnRyeS5rZXksIGVudHJ5LmNvdW50KTsK
KyAgICB9CisgICAgCisgICAgQ291bnRlclR5cGUgZ2V0KGNvbnN0IFQmIGtleSkgY29uc3QKICAg
ICB7CiAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX21hcC5maW5kKGtleSk7CiAgICAg
ICAgIGlmIChpdGVyID09IG1fbWFwLmVuZCgpKQpAQCAtNTUsNiArNjQsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsKICAgICB9CiAgICAgCisgICAgc2l6ZV90IHNpemUo
KSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCk7IH0KKyAgICAKICAgICBpdGVyYXRvciBiZWdp
bigpIHsgcmV0dXJuIG1fbWFwLmJlZ2luKCk7IH0KICAgICBpdGVyYXRvciBlbmQoKSB7IHJldHVy
biBtX21hcC5lbmQoKTsgfQogICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1
cm4gbV9tYXAuYmVnaW4oKTsgfQpAQCAtNjMsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgc3RydWN0
IEtleUFuZENvdW50IHsKICAgICAgICAgS2V5QW5kQ291bnQoKSB7IH0KICAgICAgICAgCi0gICAg
ICAgIEtleUFuZENvdW50KGNvbnN0IFQmIGtleSwgdW5zaWduZWQgbG9uZyBjb3VudCkKKyAgICAg
ICAgS2V5QW5kQ291bnQoY29uc3QgVCYga2V5LCBDb3VudGVyVHlwZSBjb3VudCkKICAgICAgICAg
ICAgIDoga2V5KGtleSkKICAgICAgICAgICAgICwgY291bnQoY291bnQpCiAgICAgICAgIHsKQEAg
LTgwLDcgKzkxLDcgQEAgcHVibGljOgogICAgICAgICB9CiAKICAgICAgICAgVCBrZXk7Ci0gICAg
ICAgIHVuc2lnbmVkIGxvbmcgY291bnQ7CisgICAgICAgIENvdW50ZXJUeXBlIGNvdW50OwogICAg
IH07CiAgICAgCiAgICAgLy8gUmV0dXJucyBhIGxpc3Qgb3JkZXJlZCBmcm9tIGxvd2VzdC1jb3Vu
dCB0byBoaWdoZXN0LWNvdW50LgpAQCAtOTQsOCArMTA1LDE4IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGxpc3Q7CiAgICAgfQogICAgIAorICAgIHZvaWQgY2xlYXIoKSB7IG1fbWFwLmNsZWFy
KCk7IH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIHZvaWQgcmVt
b3ZlSWYoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB7CisgICAgICAgIG1fbWFwLnJlbW92
ZUlmKFtmdW5jdG9yXSAodHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46OktleVZhbHVl
UGFpclR5cGUmIHBhaXIpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3RvcihLZXlBbmRD
b3VudChwYWlyLmtleSwgcGFpci52YWx1ZSkpOworICAgICAgICAgICAgfSk7CisgICAgfQorICAg
IAogcHJpdmF0ZToKLSAgICBIYXNoTWFwPFQsIHVuc2lnbmVkIGxvbmc+IG1fbWFwOworICAgIEhh
c2hNYXA8VCwgQ291bnRlclR5cGU+IG1fbWFwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCklu
ZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNzI4NTkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxNC0wOC0yMyAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgorCisgICAgICAgIEZUTCBzaG91bGQgYmUgYWJsZSB0byBkbyBwb2x5bW9y
cGhpYyBjYWxsIGlubGluaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzUxNDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwtbmVz
dGVkLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUt
cG9seS1jYWxsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNh
bGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1wb2x5
LWNhbGwtbmVzdGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9z
aW1wbGUtcG9seS1jYWxsLW5lc3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNz
L3NpbXBsZS1wb2x5LWNhbGwuaHRtbDogQWRkZWQuCisKIDIwMTQtMDgtMjEgIEFudHRpIEtvaXZp
c3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEFuaW1hdGVkIEdJRnMgc2Nyb2xsZWQg
b3V0IG9mIHZpZXcgc3RpbGwgY2F1c2UgdGl0bGViYXIgYmx1ciB0byB1cGRhdGUsIG9uIHR1bWJs
ci5jb20gcGFnZQpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcG9seS1jYWxs
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBs
ZS1wb2x5LWNhbGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zaW1wbGUtcG9seS1jYWxsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbAorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zaW1wbGUtcG9seS1jYWxsLW5lc3RlZC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcG9seS1jYWxsLW5lc3RlZC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1w
b2x5LWNhbGwtbmVzdGVkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEw
IEBACitKU1JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQKKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVkLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVkLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
aW1wbGUtcG9seS1jYWxsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9zaW1wbGUtcG9seS1jYWxsLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEy
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
cmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zaW1w
bGUtcG9seS1jYWxsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
cmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVkLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBs
ZS1wb2x5LWNhbGwtbmVzdGVkLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwyNSBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIGZvbyh4KSB7
IHJldHVybiAxOyB9CisgICAgZnVuY3Rpb24gYmFyKHgpIHsgcmV0dXJuIHg7IH0KKyAgICAKKyAg
ICB2YXIgbiA9IDEwMDAwMDA7CisgICAgCisgICAgdmFyIHJlc3VsdCA9IChmdW5jdGlvbigpIHsK
KyAgICAgICAgdmFyIGYgPSBmb287CisgICAgICAgIHZhciBnID0gYmFyOworICAgICAgICAKKyAg
ICAgICAgdmFyIHJlc3VsdCA9IDA7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytp
KSB7CisgICAgICAgICAgICByZXN1bHQgKz0gZig0Mik7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIHZhciB0bXAgPSBmOworICAgICAgICAgICAgZiA9IGc7CisgICAgICAgICAgICBnID0gdG1w
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0pKCk7
CisgICAgCisgICAgaWYgKHJlc3VsdCAhPSBuIC8gMiAqIDQyICsgbiAvIDIgKiAxKQorICAgICAg
ICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9KSgpOwpJbmRleDogTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXBvbHktY2FsbC5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcG9s
eS1jYWxsLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQt
dGVzdHMvc2ltcGxlLXBvbHktY2FsbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIwIEBA
CisoZnVuY3Rpb24oKSB7CisgICAgZnVuY3Rpb24gZm9vKHgpIHsgcmV0dXJuIDE7IH0KKyAgICBm
dW5jdGlvbiBiYXIoeCkgeyByZXR1cm4geDsgfQorICAgIAorICAgIHZhciBmID0gZm9vOworICAg
IHZhciBnID0gYmFyOworICAgIAorICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBuID0gMTAw
MDAwOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgIHJlc3VsdCAr
PSBmKDQyKTsKKyAgICAgICAgCisgICAgICAgIHZhciB0bXAgPSBmOworICAgICAgICBmID0gZzsK
KyAgICAgICAgZyA9IHRtcDsKKyAgICB9CisgICAgCisgICAgaWYgKHJlc3VsdCAhPSBuIC8gMiAq
IDQyICsgbiAvIDIgKiAxKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyBy
ZXN1bHQ7Cit9KSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237099</attachid>
            <date>2014-08-25 11:37:15 -0700</date>
            <delta_ts>2014-08-27 22:16:59 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>193164</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyOTI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2NiBA
QAorMjAxNC0wOC0yNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEZUTCBzaG91bGQgYmUgYWJsZSB0byBkbyBwb2x5bW9ycGhpYyBjYWxsIGlubGluaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUxNDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFkZGVk
IGEgbG9nLWJhc2VkIGhpZ2gtZmlkZWxpdHkgY2FsbCBlZGdlIHByb2ZpbGVyIHRoYXQgcnVucyBp
biBERkcgSklUIChhbmQgb3B0aW9uYWxseQorICAgICAgICBiYXNlbGluZSBKSVQpIGNvZGUuIFVz
ZWQgaXQgdG8gZG8gcHJlY2lzZSBwb2x5bW9ycGhpYyBpbmxpbmluZyBpbiB0aGUgRlRMLiBQb3Rl
bnRpYWwKKyAgICAgICAgaW5saW5pbmcgc2l0ZXMgdXNlIHRoZSBjYWxsIGVkZ2UgcHJvZmlsZSBp
ZiBpdCBpcyBhdmFpbGFibGUsIGJ1dCB0aGV5IHdpbGwgc3RpbGwgZmFsbCBiYWNrCisgICAgICAg
IG9uIHRoZSBjYWxsIGlubGluZSBjYWNoZSBhbmQgcmFyZSBjYXNlIGNvdW50cyBpZiBpdCdzIG5v
dC4gUG9seW1vcnBoaWMgaW5saW5pbmcgbWVhbnMgdGhhdAorICAgICAgICBtdWx0aXBsZSBwb3Nz
aWJsZSBjYWxsZWVzIGNhbiBiZSBpbmxpbmVkIHdpdGggYSBzd2l0Y2ggdG8gZ3VhcmQgdGhlbS4g
VGhlIHNsb3cgcGF0aCBtYXkKKyAgICAgICAgZWl0aGVyIGJlIGFuIE9TUiBleGl0IG9yIGEgdmly
dHVhbCBjYWxsLgorICAgICAgICAKKyAgICAgICAgVGhlIGNhbGwgZWRnZSBwcm9maWxpbmcgYWRk
ZWQgaW4gdGhpcyBwYXRjaCBpcyB2ZXJ5IHByZWNpc2UgLSBpdCB3aWxsIHRlbGwgeW91IGFib3V0
IGV2ZXJ5CisgICAgICAgIGNhbGwgdGhhdCBoYXMgZXZlciBoYXBwZW5lZC4gSXQgdG9vayBzb21l
IGVmZm9ydCB0byByZWR1Y2UgdGhlIG92ZXJoZWFkIG9mIHRoaXMgcHJvZmlsaW5nLgorICAgICAg
ICBUaGlzIG1vc3RseSBpbnZvbHZlZCBlbnN1cmluZyB0aGF0IHdlIGRvbid0IGRvIGl0IHVubmVj
ZXNzYXJpbHkuIEZvciBleGFtcGxlLCB3ZSBhdm9pZCBpdAorICAgICAgICBpbiB0aGUgYmFzZWxp
bmUgSklUICh5b3UgY2FuIGNvbmRpdGlvbmFsbHkgZW5hYmxlIGl0IGJ1dCBpdCdzIG9mZiBieSBk
ZWZhdWx0KSBhbmQgd2Ugb25seSBkbworICAgICAgICBpdCBpbiB0aGUgREZHIEpJVCBpZiB3ZSBr
bm93IHRoYXQgdGhlIHJlZ3VsYXIgaW5saW5lIGNhY2hlIHByb2ZpbGluZyB3YXNuJ3QgcHJlY2lz
ZSBlbm91Z2guCisgICAgICAgIEkgYWxzbyBleHBlcmltZW50ZWQgd2l0aCByZWR1Y2luZyB0aGUg
cHJlY2lzaW9uIG9mIHRoZSBwcm9maWxpbmcuIFRoaXMgbGVkIHRvIGEgc2lnbmlmaWNhbnQKKyAg
ICAgICAgcmVkdWN0aW9uIGluIHRoZSBzcGVlZC11cCwgc28gSSBhdm9pZGVkIHRoaXMgYXBwcm9h
Y2guIEkgYWxzbyBleHBsb3JlZCBtYWtpbmcgbG9nIHByb2Nlc3NpbmcKKyAgICAgICAgY29uY3Vy
cmVudCwgYnV0IHRoYXQgZGlkbid0IGhlbHAuIEFsc28sIEkgdGVzdGVkIHRoZSBvdmVyaGVhZCBv
ZiB0aGUgbG9nIHByb2Nlc3NpbmcgYW5kCisgICAgICAgIGZvdW5kIHRoYXQgbW9zdCBvZiB0aGUg
b3ZlcmhlYWQgb2YgdGhpcyBwcm9maWxpbmcgaXMgYWN0dWFsbHkgaW4gcHV0dGluZyB0aGluZ3Mg
aW50byB0aGUgbG9nCisgICAgICAgIHJhdGhlciB0aGFuIGluIHByb2Nlc3NpbmcgdGhlIGxvZyAt
IHRoYXQgcGFydCBhcHBlYXJzIHRvIGJlIHN1cnByaXNpbmdseSBjaGVhcC4KKyAgICAgICAgCisg
ICAgICAgIFBvbHltb3JwaGljIGlubGluaW5nIGNvdWxkIGJlIGVuYWJsZWQgaW4gdGhlIERGRyBp
ZiB3ZSBlbmFibGVkIGJhc2VsaW5lIGNhbGwgZWRnZSBwcm9maWxpbmcsCisgICAgICAgIGFuZCBp
ZiB3ZSBndWFyZGVkIHN1Y2ggaW5saW5pbmcgc2l0ZXMgd2l0aCBzb21lIHByb2ZpbGluZyBtZWNo
YW5pc20gdG8gZGV0ZWN0CisgICAgICAgIHBvbHl2YXJpYW50IG1vbm9tb3JwaGlzYXRpb24gb3Bw
b3J0dW5pdGllcyAod2hlcmUgdGhlIGNhbGxzaXRlIGJlaW5nIGlubGluZWQgcmV2ZWFscyB0aGF0
CisgICAgICAgIGl0J3MgYWN0dWFsbHkgbW9ub21vcnBoaWMpLgorICAgICAgICAKKyAgICAgICAg
VGhpcyBpcyBhIH4yOCUgc3BlZWQtdXAgb24gZGVsdGFibHVlIGFuZCBhIH43JSBzcGVlZC11cCBv
biByaWNoYXJkcywgd2l0aCBzbWFsbCBzcGVlZC11cHMgb24KKyAgICAgICAgb3RoZXIgcHJvZ3Jh
bXMgYXMgd2VsbC4gSXQncyBhYm91dCBhIDIlIHNwZWVkLXVwIG9uIE9jdGFuZSB2ZXJzaW9uIDIs
IGFuZCBuZXZlciBhIHJlZ3Jlc3Npb24KKyAgICAgICAgb24gYW55dGhpbmcgd2UgY2FyZSBhYm91
dC4gU29tZSBhZ2dyZWdhdGVzLCBsaWtlIFY4U3BpZGVyLCBzZWUgYSByZWdyZXNzaW9uLiBUaGlz
IGlzCisgICAgICAgIGhpZ2hsaWdodGluZyB0aGUgaW5jcmVhc2UgaW4gcHJvZmlsaW5nIG92ZXJo
ZWFkLiBCdXQgc2luY2UgdGhpcyBkb2Vzbid0IHNob3cgdXAgb24gYW55IG1ham9yCisgICAgICAg
IHNjb3JlIChjb2RlLWxvYWQgb3IgU3VuU3BpZGVyKSwgaXQncyBwcm9iYWJseSBub3QgcmVsZXZh
bnQuCisgICAgICAgIAorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NhbGxFZGdlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkNhbGxFZGdlOjpkdW1wKToKKyAg
ICAgICAgKiBieXRlY29kZS9DYWxsRWRnZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbEVk
Z2U6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6OkNhbGxFZGdlOjpjYWxsZWUpOgorICAgICAg
ICAoSlNDOjpDYWxsRWRnZTo6Y291bnQpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZTo6ZGVzcGVj
aWZpZWRDbG9zdXJlKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2U6OkNhbGxFZGdlKToKKyAgICAg
ICAgKiBieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
Q2FsbEVkZ2VQcm9maWxlOjpjYWxsRWRnZXMpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2Zp
bGU6Om51bUNhbGxzVG9Lbm93bkNlbGxzKToKKyAgICAgICAgKEpTQzo6d29ydGhEZXNwZWNpZnlp
bmcpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6OndvcnRoRGVzcGVjaWZ5aW5nKToK
KyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VQcm9maWxlOjp2aXNpdFdlYWspOgorICAgICAgICAoSlND
OjpDYWxsRWRnZVByb2ZpbGU6OmFkZFNsb3cpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2Zp
bGU6Om1lcmdlQmFjayk6CisgICAgICAgIChKU0M6OkNhbGxFZGdlUHJvZmlsZTo6ZmFkZUJ5SGFs
Zik6CisgICAgICAgIChKU0M6OkNhbGxFZGdlTG9nOjpDYWxsRWRnZUxvZyk6CisgICAgICAgIChK
U0M6OkNhbGxFZGdlTG9nOjp+Q2FsbEVkZ2VMb2cpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZUxv
Zzo6aXNFbmFibGVkKToKKyAgICAgICAgKEpTQzo6b3BlcmF0aW9uUHJvY2Vzc0NhbGxFZGdlTG9n
KToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VMb2c6OmVtaXRMb2dDb2RlKToKKyAgICAgICAgKEpT
Qzo6Q2FsbEVkZ2VMb2c6OnByb2Nlc3NMb2cpOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxFZGdl
UHJvZmlsZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VQcm9maWxlOjpudW1DYWxs
c1RvTm90Q2VsbCk6CisgICAgICAgIChKU0M6OkNhbGxFZGdlUHJvZmlsZTo6bnVtQ2FsbHNUb1Vu
a25vd25DZWxsKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VQcm9maWxlOjp0b3RhbENhbGxzKToK
KyAgICAgICAgKiBieXRlY29kZS9DYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmg6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6OkNhbGxFZGdlUHJvZmlsZSk6CisgICAgICAgIChK
U0M6OkNhbGxFZGdlUHJvZmlsZTo6YWRkKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0lu
Zm8uY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OnZpc2l0V2Vhayk6CisgICAgICAg
ICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmg6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtT
dGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Q2FsbExpbmtTdGF0dXMp
OgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAg
ICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKEpTQzo6Q2Fs
bExpbmtTdGF0dXM6OmNvbXB1dGVFeGl0U2l0ZURhdGEpOgorICAgICAgICAoSlNDOjpDYWxsTGlu
a1N0YXR1czo6Y29tcHV0ZUZyb21DYWxsTGlua0luZm8pOgorICAgICAgICAoSlNDOjpDYWxsTGlu
a1N0YXR1czo6Y29tcHV0ZUZyb21DYWxsRWRnZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpDYWxs
TGlua1N0YXR1czo6Y29tcHV0ZURGR1N0YXR1c2VzKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtT
dGF0dXM6OmlzQ2xvc3VyZUNhbGwpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6bWFr
ZUNsb3N1cmVDYWxsKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmR1bXApOgorICAg
ICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6ZnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpDYWxsTGlua1N0YXR1czo6aW50ZXJuYWxGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkNhbGxMaW5rU3RhdHVzOjppbnRyaW5zaWNGb3IpOiBEZWxldGVkLgorICAgICAgICAq
IGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmg6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVz
OjpDYWxsTGlua1N0YXR1cyk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjppc1NldCk6
CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb3VsZFRha2VTbG93UGF0aCk6CisgICAg
ICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjplZGdlcyk6CisgICAgICAgIChKU0M6OkNhbGxMaW5r
U3RhdHVzOjpzaXplKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmF0KToKKyAgICAg
ICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9wZXJhdG9yW10pOgorICAgICAgICAoSlNDOjpDYWxs
TGlua1N0YXR1czo6Y2FuT3B0aW1pemUpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6
Y2FuVHJ1c3RDb3VudHMpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6aXNDbG9zdXJl
Q2FsbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjYWxsVGFyZ2V0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmV4ZWN1dGFibGUpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6bWFrZUNsb3N1cmVDYWxsKTog
RGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9DYWxsVmFyaWFudC5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZHVtcCk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbFZh
cmlhbnQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpDYWxsVmFyaWFudCk6
CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpvcGVyYXRvciEpOgorICAgICAgICAoSlNDOjpD
YWxsVmFyaWFudDo6ZGVzcGVjaWZpZWRDbG9zdXJlKToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlh
bnQ6OnJhd0NhbGxlZUNlbGwpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6aW50ZXJuYWxG
dW5jdGlvbik6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpmdW5jdGlvbik6CisgICAgICAg
IChKU0M6OkNhbGxWYXJpYW50Ojppc0Nsb3N1cmVDYWxsKToKKyAgICAgICAgKEpTQzo6Q2FsbFZh
cmlhbnQ6OmV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6bm9uRXhlY3V0
YWJsZUNhbGxlZSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjppbnRyaW5zaWNGb3IpOgor
ICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAg
KEpTQzo6Q2FsbFZhcmlhbnQ6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKEpT
Qzo6Q2FsbFZhcmlhbnQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6
b3BlcmF0b3IhPSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpvcGVyYXRvcjwpOgorICAg
ICAgICAoSlNDOjpDYWxsVmFyaWFudDo6b3BlcmF0b3I+KToKKyAgICAgICAgKEpTQzo6Q2FsbFZh
cmlhbnQ6Om9wZXJhdG9yPD0pOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6b3BlcmF0b3I+
PSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpoYXNoKToKKyAgICAgICAgKEpTQzo6Q2Fs
bFZhcmlhbnQ6OmRlbGV0ZWRUb2tlbik6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50SGFzaDo6
aGFzaCk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50SGFzaDo6ZXF1YWwpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVPcmlnaW4uaDoKKyAgICAgICAgKEpTQzo6SW5saW5lQ2FsbEZyYW1lOjpp
c05vcm1hbENhbGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4aXRLaW5kLmNwcDoKKyAgICAgICAg
KEpTQzo6ZXhpdEtpbmRUb1N0cmluZyk6CisgICAgICAgICogYnl0ZWNvZGUvRXhpdEtpbmQuaDoK
KyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRC
eUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0
dWJJbmZvKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNl
Ojpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdCYXNpY0Jsb2NrLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpCYXNpY0Jsb2NrOjp+QmFzaWNCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Jh
c2ljQmxvY2suaDoKKyAgICAgICAgKEpTQzo6REZHOjpCYXNpY0Jsb2NrOjp0YWtlTGFzdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6QmFzaWNCbG9jazo6ZGlkTGluayk6CisgICAgICAgICogZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
cHJvY2Vzc1NldExvY2FsUXVldWUpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpyZW1vdmVMYXN0Tm9kZUZyb21HcmFwaCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OmFkZENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6ZW1p
dEZ1bmN0aW9uQ2hlY2tzKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6dW5k
b0Z1bmN0aW9uQ2hlY2tzKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5s
aW5pbmdDb3N0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmNhbmNlbExpbmtpbmdGb3JC
bG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmF0dGVtcHRUb0lubGlu
ZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmlu
Zyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50SW50
ZXJuYWxGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnByZXBh
cmVUb1BhcnNlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpjbGVh
ckNhY2hlcyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2spOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2tzKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdD
UFNSZXRocmVhZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDUFNSZXRocmVhZGlu
Z1BoYXNlOjpmcmVlVW5uZWNlc3NhcnlOb2Rlcyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJp
emUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZH
Q29tbW9uLmg6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6Cisg
ICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToK
KyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxl
SW1wbCk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZHVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdM
YXp5SlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6TGF6eUpTVmFsdWU6OnN3aXRjaExv
b2t1cFZhbHVlKToKKyAgICAgICAgKiBkZmcvREZHTGF6eUpTVmFsdWUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpMYXp5SlNWYWx1ZTo6c3dpdGNoTG9va3VwVmFsdWUpOiBEZWxldGVkLgorICAgICAg
ICAqIGRmZy9ERkdOb2RlLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAg
ICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpPcEluZm86Ok9wSW5mbyk6
CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzSGVhcFByZWRpY3Rpb24pOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6Omhhc0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjpjZWxsT3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2V0Q2VsbE9wZXJhbmQp
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNhbkJlS25vd25GdW5jdGlvbik6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzS25vd25GdW5jdGlvbik6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6a25vd25GdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6Z2l2ZUtub3duRnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6Omhhc0Z1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpmdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFz
RXhlY3V0YWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6ZXhlY3V0YWJs
ZSk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZn
L0RGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlBoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR1Bo
YW50b21SZW1vdmFsUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlBoYW50b21SZW1vdmFs
UGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJv
cGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlND
OjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2gpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0
cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1
cmVSZWdpc3RyYXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHVGllclVwQ2hlY2tJ
bmplY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VGllclVwQ2hlY2tJbmplY3Rp
b25QaGFzZTo6cnVuKToKKyAgICAgICAgKEpTQzo6REZHOjpUaWVyVXBDaGVja0luamVjdGlvblBo
YXNlOjpyZW1vdmVGVExQcm9maWxpbmcpOgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6VmFsaWRhdGU6OnZhbGlkYXRlKToKKyAgICAgICAgKiBkZmcv
REZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6V2F0
Y2hwb2ludENvbGxlY3Rpb25QaGFzZTo6aGFuZGxlKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBm
dGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmZ0bFVucmVhY2hh
YmxlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6bG93ZXIpOgorICAgICAg
ICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6
OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVDaGVja0NlbGwpOgorICAgICAgICAoSlNDOjpG
VEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ2hlY2tCYWRDZWxsKToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUdldEV4ZWN1dGFibGUpOgorICAgICAgICAoSlND
OjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTmF0aXZlQ2FsbE9yQ29uc3RydWN0KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVN3aXRjaCk6CisgICAgICAg
IChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmJ1aWxkU3dpdGNoKToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNoZWNrRnVuY3Rpb24pOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ2hlY2tFeGVjdXRhYmxlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpj
b2xsZWN0KToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6
OkFzc2VtYmx5SGVscGVyczo6c3RvcmVWYWx1ZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVs
cGVyczo6bG9hZFZhbHVlKToKKyAgICAgICAgKiBqaXQvQ0NhbGxIZWxwZXJzLmg6CisgICAgICAg
IChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHMpOgorICAgICAgICAqIGppdC9HUFJJ
bmZvLmg6CisgICAgICAgIChKU0M6OkpTVmFsdWVSZWdzOjp1c2VzKToKKyAgICAgICAgKiBqaXQv
SklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAg
ICogaml0L0pJVENhbGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2Fs
bCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6CisgICAgICAgICogcnVudGltZS9WTS5j
cHA6CisgICAgICAgIChKU0M6OlZNOjplbnN1cmVDYWxsRWRnZUxvZyk6CisgICAgICAgICogcnVu
dGltZS9WTS5oOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9uZXctYXJyYXktdGhlbi1leGl0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3BvbHktY2Fs
bC1leGl0LXRoaXMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9wb2x5LWNhbGwt
ZXhpdC5qczogQWRkZWQuCisKIDIwMTQtMDgtMjQgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndh
c2hpbmd0b24uZWR1PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlbmFtZSBET00uUkdCQSBh
bmQgcmVtb3ZlIHdvcmthcm91bmRzIGluIHRoZSBiaW5kaW5ncyBnZW5lcmF0b3IKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE3MjkyNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNjUsOCAr
NjUsMTEgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBieXRlY29kZS9BcnJheVBy
b2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAogICAgIGJ5dGVj
b2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKKyAgICBieXRlY29kZS9DYWxsRWRnZS5j
cHAKKyAgICBieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmNwcAogICAgIGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAorICAgIGJ5dGVjb2Rl
L0NhbGxWYXJpYW50LmNwcAogICAgIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHAKICAgICBieXRlY29k
ZS9Db2RlQmxvY2tIYXNoLmNwcAogICAgIGJ5dGVjb2RlL0NvZGVCbG9ja0pldHRpc29uaW5nV2F0
Y2hwb2ludC5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagko
cmV2aXNpb24gMTcyOTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzE0LDgg
KzMxNCwxMSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlQcm9m
aWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEJ5dGVjb2Rl
QmFzaWNCbG9jay5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cYnl0ZWNvZGVcQ2FsbEVkZ2UuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
Ynl0ZWNvZGVcQ2FsbEVkZ2VQcm9maWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXGJ5dGVjb2RlXENhbGxMaW5rSW5mby5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxieXRlY29kZVxDYWxsTGlua1N0YXR1cy5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxieXRlY29kZVxDYWxsVmFyaWFudC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxieXRlY29kZVxDb2RlQmxvY2suY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cYnl0ZWNvZGVcQ29kZUJsb2NrSGFzaC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxieXRlY29kZVxDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwIiAvPgpA
QCAtOTA1LDkgKzkwOCwxMyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVc
Qnl0ZWNvZGVCYXNpY0Jsb2NrLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRl
Y29kZVxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGJ5dGVjb2RlXEJ5dGVjb2RlVXNlRGVmLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxieXRlY29kZVxDYWxsRWRnZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cYnl0ZWNvZGVcQ2FsbEVkZ2VQcm9maWxlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxieXRlY29kZVxDYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDYWxsTGlua0luZm8uaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENhbGxMaW5rU3RhdHVzLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5o
IiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ2FsbFZhcmlhbnQuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENvZGVCbG9jay5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ29kZUJsb2NrSGFzaC5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ29kZUJsb2NrSmV0dGlzb25pbmdX
YXRjaHBvaW50LmgiIC8+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMTcyOTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI2Myw2ICsyNjMsMTMgQEAK
IAkJMEYzQjNBMjgxNTQ0Qzk5NzAwM0VEMEZGIC8qIERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0IzQTI1
MTU0NEM5OTEwMDNFRDBGRiAvKiBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYzQjNBMkIxNTQ3NTAw
MDAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0IzQTI5MTU0NzRGRjQwMDNFRDBGRiAvKiBERkdWYWxpZGF0
ZS5jcHAgKi87IH07CiAJCTBGM0IzQTJDMTU0NzUwMDIwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjNBMkEx
NTQ3NEZGNDAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYzQjdFMjYxOUExMUI4MDAwRDlCQzU2IC8qIENh
bGxFZGdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjNCN0UyMDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjNCN0UyNzE5QTExQjgwMDBEOUJDNTYg
LyogQ2FsbEVkZ2VQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGM0I3RTIxMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUu
Y3BwICovOyB9OworCQkwRjNCN0UyODE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCN0Uy
MjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYzQjdFMjkxOUExMUI4MDAwRDlCQzU2
IC8qIENhbGxFZGdlUHJvZmlsZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTIzMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVBy
b2ZpbGVJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEYzQjdFMkExOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTI0MTlBMTFC
ODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5jcHAgKi87IH07CisJCTBGM0I3RTJCMTlBMTFCODAw
MEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYzQjdFMjUxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYzQjdF
MkQxOUExMkFBRTAwRDlCQzU2IC8qIENhbGxFZGdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTJDMTlBMTJBQUUwMEQ5QkM1NiAvKiBDYWxs
RWRnZS5jcHAgKi87IH07CiAJCTBGM0QwQkJDMTk0QTQxNDMwMEZDOUNGOSAvKiBDb25zdGFudFN0
cnVjdHVyZUNoZWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGM0QwQkJBMTk0QTQxNDMwMEZDOUNGOSAvKiBDb25zdGFudFN0cnVjdHVyZUNoZWNr
LmNwcCAqLzsgfTsKIAkJMEYzRDBCQkQxOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0
dXJlQ2hlY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGM0QwQkJCMTk0QTQxNDMwMEZDOUNGOSAvKiBDb25zdGFudFN0cnVjdHVyZUNoZWNrLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0MjZBNDgx
NDYwQ0JCMzAwMTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDI2QTQ1MTQ2MENCQUIwMDEzMUY4RiAvKiBWYWx1
ZVJlY292ZXJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTIxNjcsNiArMjE3NCwxMyBAQAogCQkwRjNCM0EyNTE1NDRDOTkxMDAzRUQwRkYgLyog
REZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmg7IHBhdGggPSBkZmcvREZHQ0ZHU2ltcGxp
ZmljYXRpb25QaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNCM0EyOTE1
NDc0RkY0MDAzRUQwRkYgLyogREZHVmFsaWRhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gREZHVmFsaWRhdGUuY3BwOyBwYXRoID0gZGZnL0RGR1ZhbGlkYXRlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQjNBMkExNTQ3NEZGNDAwM0VEMEZG
IC8qIERGR1ZhbGlkYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1Zh
bGlkYXRlLmg7IHBhdGggPSBkZmcvREZHVmFsaWRhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYzQjdFMjAxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxFZGdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGM0I3RTIxMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbEVkZ2VQcm9maWxlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzQjdFMjIxOUExMUI4MDAwRDlCQzU2
IC8qIENhbGxFZGdlUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YWxsRWRnZVByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzQjdFMjMx
OUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyNDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlh
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbFZhcmlhbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyNTE5QTExQjgwMDBEOUJD
NTYgLyogQ2FsbFZhcmlhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2Fs
bFZhcmlhbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzQjdFMkMxOUExMkFB
RTAwRDlCQzU2IC8qIENhbGxFZGdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENhbGxFZGdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzRDBC
QkExOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0QwQkJCMTk0QTQxNDMwMEZDOUNGOSAv
KiBDb25zdGFudFN0cnVjdHVyZUNoZWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENvbnN0YW50U3RydWN0dXJlQ2hlY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY0MjZBNDUxNDYwQ0JBQjAwMTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFsdWVSZWNvdmVyeS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNTE0NCwxMSArNTE1OCwxOCBAQAogCQkJCTBGNjY2RUJFMTgzNTY2Rjkw
MEQwMTdGMSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggKi8sCiAJCQkJMEY4
ODVFMTAxODQ5QTNCRTAwRjFFM0ZBIC8qIEJ5dGVjb2RlVXNlRGVmLmggKi8sCiAJCQkJMEY4MDIz
RTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oICovLAorCQkJCTBGM0I3RTJDMTlBMTJB
QUUwMEQ5QkM1NiAvKiBDYWxsRWRnZS5jcHAgKi8sCisJCQkJMEYzQjdFMjAxOUExMUI4MDAwRDlC
QzU2IC8qIENhbGxFZGdlLmggKi8sCisJCQkJMEYzQjdFMjExOUExMUI4MDAwRDlCQzU2IC8qIENh
bGxFZGdlUHJvZmlsZS5jcHAgKi8sCisJCQkJMEYzQjdFMjIxOUExMUI4MDAwRDlCQzU2IC8qIENh
bGxFZGdlUHJvZmlsZS5oICovLAorCQkJCTBGM0I3RTIzMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxs
RWRnZVByb2ZpbGVJbmxpbmVzLmggKi8sCiAJCQkJMEYwQjgzQUUxNEJDRjcxNDAwODg1QjRGIC8q
IENhbGxMaW5rSW5mby5jcHAgKi8sCiAJCQkJMEYwQjgzQUYxNEJDRjcxNDAwODg1QjRGIC8qIENh
bGxMaW5rSW5mby5oICovLAogCQkJCTBGOTMzMjkzMTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlu
a1N0YXR1cy5jcHAgKi8sCiAJCQkJMEY5MzMyOTQxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5r
U3RhdHVzLmggKi8sCiAJCQkJMEYwQjgzQjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5P
ZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi8sCisJCQkJMEYzQjdFMjQxOUExMUI4MDAwRDlCQzU2
IC8qIENhbGxWYXJpYW50LmNwcCAqLywKKwkJCQkwRjNCN0UyNTE5QTExQjgwMDBEOUJDNTYgLyog
Q2FsbFZhcmlhbnQuaCAqLywKIAkJCQk5NjlBMDc5MDBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJs
b2NrLmNwcCAqLywKIAkJCQk5NjlBMDc5MTBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmgg
Ki8sCiAJCQkJMEY4Rjk0M0QxNjY3NjMyRDAwRDYxOTcxIC8qIENvZGVCbG9ja0hhc2guY3BwICov
LApAQCAtNTg3Nyw2ICs1ODk4LDcgQEAKIAkJCQkwRkZGQzk1QTE0RUY5MEE5MDBDNzI1MzIgLyog
REZHQ1NFUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkZDNzczMTZFMTJGNzQwMDM4RDk3
NiAvKiBERkdEQ0VQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4RjJCOUExNzJGMDUwMTAw
N0RCREE1IC8qIERGR0Rlc2lyZWRJZGVudGlmaWVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYz
QjdFMjgxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzJDMEY3Q0UxN0JCRkM1QjAwNDY0RkU0IC8qIERGR0Rlc2lyZWRUcmFuc2l0aW9ucy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFODUzNEMxNzIzQ0RBNTAwQjYxOEY1IC8qIERGR0Rlc2ly
ZWRXYXRjaHBvaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzI5ODFGRDkxN0JBRUU0QjAwQTNC
Qzk4IC8qIERGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC02MTQ1
LDYgKzYxNjcsNyBAQAogCQkJCTBGNzY2RDMxMTVBQTgxMTIwMDhGMzYzRSAvKiBKSVRTdHViUm91
dGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NjZEMkMxNUE4Q0MzQTAwOEYzNjNFIC8qIEpJ
VFN0dWJSb3V0aW5lU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEM1MjQyQjBGNTM1NUU5MDBC
QTNEMDQgLyogSklUU3R1YnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGM0I3RTJCMTlBMTFCODAw
MEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVGNjgzNUUxNzQz
NDNDQzAwQTMyRTI1IC8qIEpJVFN0dWJzQVJNLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUY2ODM1
RjE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1YnNBUk12Ny5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RkVGNjgzNjExNzQzNDNDQzAwQTMyRTI1IC8qIEpJVFN0dWJzWDg2LmggaW4gSGVhZGVycyAqLywK
QEAgLTYxNTYsNiArNjE3OSw3IEBACiAJCQkJQTc2RjU0QTMxM0IyOEFBQjAwRUYyQkNFIC8qIEpJ
VFdyaXRlQmFycmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTYwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTQWN0aXZhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQwNDgwMTMxMDIxQTFE
OTAwOEU3RjAxIC8qIEpTQVBJVmFsdWVXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjNC
N0UyOTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQzJDRjM5QzIxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVj
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc2MTQwRDIxODI5ODJDQjAwNzUwNjI0IC8qIEpTQXJn
dW1lbnRzSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE3MEUxNkY1Q0QwMEIz
NDQ2MCAvKiBKU0FycmF5LmggaW4gSGVhZGVycyAqLywKQEAgLTY0NzEsNiArNjQ5NSw3IEBACiAJ
CQkJRTQ5REMxNkMxMkVGMjk0RTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUU0OURDMTZEMTJFRjI5NTMwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRl
ckNhY2hlSXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUUxNUVEOEU0NjAwRjE2N0Iy
IC8qIFNwYXJzZUFycmF5VmFsdWVNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGM0I3RTI2MTlB
MTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTczODY1NTQx
MTg2OTdCNDAwNTQwMjc5IC8qIFNwZWNpYWxpemVkVGh1bmtKSVQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNTU0MUIyMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZEODJFNTQxNDFEQUVFRTAwMTc5Qzk0IC8qIFNwZWN1bGF0ZWRUeXBlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTczMjMsNiArNzM0OCw3IEBACiAJCQkJMEYyMzVCRDUxNzE3OEUx
QzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudEZvck9wZXJhbmQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEYyMzVCRDgxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRUaHVua0dlbmVyYXRvci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJEQTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhp
dFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGM0I3RTI3MTlBMTFCODAwMEQ5QkM1NiAv
KiBDYWxsRWRnZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdGMjk5NkIxN0EwQkI2
NzAwMTA0MTdBIC8qIEZUTEZhaWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEOEEzMTkxN0Q1
MUYyMjAwQ0EyQzQwIC8qIEZUTEZvck9TUkVudHJ5SklUQ29kZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjI1RjFBRjE4MTYzNUYzMDA1MjJGMzkgLyogRlRMSW5saW5lQ2FjaGVTaXplLmNwcCBp
biBTb3VyY2VzICovLApAQCAtNzUwOSw2ICs3NTM1LDcgQEAKIAkJCQkwRjQ2ODBEMjE0QkJEMTY1
MDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzhCMDExMTdD
RjA3ODAwMEIxNDREMyAvKiBMTEludEVudHJ5cG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEY0NjgwQTgxNEJBN0ZBQjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRjNCN0UyRDE5QTEyQUFFMDBEOUJDNTYgLyogQ2FsbEVkZ2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50U2xvd1BhdGhz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMEI4MzlDMTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTElu
dFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkNFRkFDRDE4MDVFNzU1MDA0NzJDRTQg
LyogTExWTUFQSS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc2NzAsNiArNzY5Nyw3IEBACiAJCQkJ
MTRFODRGQTAxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkE0RUM5MEIxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkM4MTUwQjE0MDQzQzBFMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVy
U3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjNCN0UyQTE5QTExQjgwMDBEOUJDNTYg
LyogQ2FsbFZhcmlhbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdFNUFCM0ExNzk5RTRCMjAw
RDI4MzNEIC8qIFg4NkRpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjNDNkQ5
QzE1MjExMTFBMDA1ODVFNEUgLyogWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODY3MDRCODQxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJJbnRlcnByZXRlci5jcHAg
aW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
RWRnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxFZGdlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsRWRnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQ2FsbEVkZ2UuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgQ2FsbEVk
Z2U6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoIjwiLCBt
X2NhbGxlZSwgIiwgY291bnQ6ICIsIG1fY291bnQsICI+Iik7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDYWxsRWRnZV9oCisjZGVmaW5lIENhbGxF
ZGdlX2gKKworI2luY2x1ZGUgIkNhbGxWYXJpYW50LmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0
eXBlZGVmIHVpbnQxNl90IENhbGxFZGdlQ291bnRUeXBlOworCitjbGFzcyBDYWxsRWRnZSB7Citw
dWJsaWM6CisgICAgQ2FsbEVkZ2UoKTsKKyAgICBDYWxsRWRnZShDYWxsVmFyaWFudCwgQ2FsbEVk
Z2VDb3VudFR5cGUpOworICAgIAorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4g
IW1fY2FsbGVlOyB9CisgICAgCisgICAgQ2FsbFZhcmlhbnQgY2FsbGVlKCkgY29uc3QgeyByZXR1
cm4gbV9jYWxsZWU7IH0KKyAgICBDYWxsRWRnZUNvdW50VHlwZSBjb3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fY291bnQ7IH0KKyAgICAKKyAgICBDYWxsRWRnZSBkZXNwZWNpZmllZENsb3N1cmUoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIENhbGxFZGdlKG1fY2FsbGVlLmRlc3BlY2lmaWVk
Q2xvc3VyZSgpLCBtX2NvdW50KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJikgY29uc3Q7CisgICAgCitwdWJsaWM6CisgICAgQ2FsbFZhcmlhbnQgbV9jYWxsZWU7Cisg
ICAgQ2FsbEVkZ2VDb3VudFR5cGUgbV9jb3VudDsKK307CisKK2lubGluZSBDYWxsRWRnZTo6Q2Fs
bEVkZ2UoQ2FsbFZhcmlhbnQgY2FsbGVlLCBDYWxsRWRnZUNvdW50VHlwZSBjb3VudCkKKyAgICA6
IG1fY2FsbGVlKGNhbGxlZSkKKyAgICAsIG1fY291bnQoY291bnQpCit7Cit9CisKK2lubGluZSBD
YWxsRWRnZTo6Q2FsbEVkZ2UoKQorICAgIDogQ2FsbEVkZ2UoQ2FsbFZhcmlhbnQoKSwgMCkKK3sK
K30KKwordHlwZWRlZiBWZWN0b3I8Q2FsbEVkZ2UsIDE+IENhbGxFZGdlTGlzdDsKKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDYWxsRWRnZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkNhbGxFZGdlUHJvZmlsZS5oIgorCisjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCisjaW5jbHVk
ZSAiQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIK
KyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitDYWxsRWRnZUxp
c3QgQ2FsbEVkZ2VQcm9maWxlOjpjYWxsRWRnZXMoKSBjb25zdAoreworICAgIENvbmN1cnJlbnRK
SVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCisgICAgQ2FsbEVkZ2VMaXN0IHJlc3VsdDsK
KyAgICAKKyAgICBDYWxsVmFyaWFudCBwcmltYXJ5Q2FsbGVlID0gbV9wcmltYXJ5Q2FsbGVlOwor
ICAgIGZsb2F0IG51bUNhbGxzVG9QcmltYXJ5ID0gbV9udW1DYWxsc1RvUHJpbWFyeTsKKyAgICAv
LyBEZWZlbmQgYWdhaW5zdCByYWNlcy4gVGhlc2UgZmllbGRzIGFyZSBtb2RpZmllZCBieSB0aGUg
bG9nIHByb2Nlc3NvciB3aXRob3V0IGxvY2tpbmcuCisgICAgaWYgKCEhcHJpbWFyeUNhbGxlZSAm
JiBudW1DYWxsc1RvUHJpbWFyeSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZChDYWxsRWRnZShwcmlt
YXJ5Q2FsbGVlLCBudW1DYWxsc1RvUHJpbWFyeSkpOworICAgIAorICAgIGlmIChtX290aGVyQ2Fs
bGVlcykgeworICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBpZiB0aGUgcHJpbWFyeSB0aHJlYWQg
aGFkIGp1c3QgY3JlYXRlZCBhIG1fb3RoZXJDYWxsZXMgd2hpbGUgbG9nCisgICAgICAgIC8vIHBy
b2Nlc3NpbmcsIHdlIHNlZSBhIGNvbnNpc3RlbnRseSBjcmVhdGVkIG9uZS4gVGhlIGxvY2sgYmVp
bmcgaGVsZCBpcyBpbnN1ZmZpY2llbnQgZm9yCisgICAgICAgIC8vIHRoaXMsIHNpbmNlIHRoZSBs
b2cgcHJvY2Vzc29yIHdpbGwgb25seSBncmFiIHRoZSBsb2NrIHdoZW4gbWVyZ2luZyB0aGUgc2Vj
b25kYXJ5CisgICAgICAgIC8vIHNwZWN0cnVtIGludG8gdGhlIHByaW1hcnkgb25lIGJ1dCBtYXkg
c3RpbGwgY3JlYXRlIHRoZSBkYXRhIHN0cnVjdHVyZSB3aXRob3V0IGhvbGRpbmcKKyAgICAgICAg
Ly8gbG9ja3MuCisgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOworICAgICAgICBmb3IgKENh
bGxFZGdlIGVudHJ5IDogbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkKSB7CisgICAgICAgICAg
ICAvLyBEZWZlbmQgYWdhaW5zdCB0aGUgcG9zc2liaWxpdHkgdGhhdCB0aGUgcHJpbWFyeSBkdXBs
aWNhdGVzIGFuIGVudHJ5IGluIHRoZSBzZWNvbmRhcnkKKyAgICAgICAgICAgIC8vIHNwZWN0cnVt
LiBUaGF0IGNhbiBoYXBwZW4gd2hlbiB0aGUgR0MgcmVtb3ZlcyB0aGUgcHJpbWFyeS4gV2UgY291
bGQgaGF2ZSB0aGUgR0MgZml4CisgICAgICAgICAgICAvLyB0aGUgc2l0dWF0aW9uIGJ5IGNoYW5n
aW5nIHRoZSBwcmltYXJ5IHRvIGJlIHNvbWV0aGluZyBmcm9tIHRoZSBzZWNvbmRhcnkgc3BlY3Ry
dW0sCisgICAgICAgICAgICAvLyBidXQgdGhpcyBmaXggc2VlbXMgc2ltcGxlciB0byBpbXBsZW1l
bnQgYW5kIGFsc28gY2hlYXBlci4KKyAgICAgICAgICAgIGlmIChlbnRyeS5jYWxsZWUoKSA9PSBy
ZXN1bHRbMF0uY2FsbGVlKCkpIHsKKyAgICAgICAgICAgICAgICByZXN1bHRbMF0gPSBDYWxsRWRn
ZShyZXN1bHRbMF0uY2FsbGVlKCksIGVudHJ5LmNvdW50KCkgKyByZXN1bHRbMF0uY291bnQoKSk7
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZW50cnkpOworICAgICAgICB9CisgICAgfQorICAg
IAorICAgIHN0ZDo6c29ydChyZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpLCBbXSAoY29uc3Qg
Q2FsbEVkZ2UmIGEsIGNvbnN0IENhbGxFZGdlJiBiKSAtPiBib29sIHsKKyAgICAgICAgICAgIHJl
dHVybiBhLmNvdW50KCkgPiBiLmNvdW50KCk7CisgICAgICAgIH0pOworICAgIAorICAgIGlmIChy
ZXN1bHQuc2l6ZSgpID49IDIpCisgICAgICAgIEFTU0VSVChyZXN1bHRbMF0uY291bnQoKSA+PSBy
ZXN1bHQubGFzdCgpLmNvdW50KCkpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0Nh
bGxFZGdlQ291bnRUeXBlIENhbGxFZGdlUHJvZmlsZTo6bnVtQ2FsbHNUb0tub3duQ2VsbHMoKSBj
b25zdAoreworICAgIENhbGxFZGdlQ291bnRUeXBlIHJlc3VsdCA9IDA7CisgICAgZm9yIChDYWxs
RWRnZSBlZGdlIDogY2FsbEVkZ2VzKCkpCisgICAgICAgIHJlc3VsdCArPSBlZGdlLmNvdW50KCk7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGJvb2wgd29ydGhEZXNwZWNpZnlpbmco
Y29uc3QgQ2FsbFZhcmlhbnQmIHZhcmlhbnQpCit7CisgICAgcmV0dXJuICFIZWFwOjppc01hcmtl
ZCh2YXJpYW50LnJhd0NhbGxlZUNlbGwoKSkKKyAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQodmFy
aWFudC5kZXNwZWNpZmllZENsb3N1cmUoKS5yYXdDYWxsZWVDZWxsKCkpOworfQorCitib29sIENh
bGxFZGdlUHJvZmlsZTo6d29ydGhEZXNwZWNpZnlpbmcoKQoreworICAgIGlmIChtX2Nsb3N1cmVz
QXJlRGVzcGVjaWZpZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoISFt
X3ByaW1hcnlDYWxsZWUgJiYgIUpTQzo6d29ydGhEZXNwZWNpZnlpbmcobV9wcmltYXJ5Q2FsbGVl
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmIChtX290aGVyQ2FsbGVlcykg
eworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQu
c2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBpZiAoIUpTQzo6d29ydGhEZXNwZWNpZnlpbmco
bV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNhbGxlZSgpKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgQ2FsbEVkZ2VQcm9maWxlOjp2aXNpdFdlYWsoKQoreworICAgIGlmICghbV9w
cmltYXJ5Q2FsbGVlICYmICFtX290aGVyQ2FsbGVlcykKKyAgICAgICAgcmV0dXJuOworICAgIAor
ICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCisgICAgLy8gU2Vl
IGlmIGFueXRoaW5nIGlzIGRlYWQgYW5kIGlmIHRoYXQgY2FuIGJlIHJlY3RpZmllZCBieSBkZXNw
ZWNpZnlpbmcuCisgICAgaWYgKHdvcnRoRGVzcGVjaWZ5aW5nKCkpIHsKKyAgICAgICAgQ2FsbFNw
ZWN0cnVtIG5ld1NwZWN0cnVtOworICAgICAgICAKKyAgICAgICAgaWYgKCEhbV9wcmltYXJ5Q2Fs
bGVlKQorICAgICAgICAgICAgbmV3U3BlY3RydW0uYWRkKG1fcHJpbWFyeUNhbGxlZS5kZXNwZWNp
ZmllZENsb3N1cmUoKSwgbV9udW1DYWxsc1RvUHJpbWFyeSk7CisgICAgICAgIAorICAgICAgICBp
ZiAobV9vdGhlckNhbGxlZXMpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fb3Ro
ZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICBu
ZXdTcGVjdHJ1bS5hZGQoCisgICAgICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3By
b2Nlc3NlZFtpXS5jYWxsZWUoKS5kZXNwZWNpZmllZENsb3N1cmUoKSwKKyAgICAgICAgICAgICAg
ICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNvdW50KCkpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBWZWN0b3I8Q2FsbFNwZWN0cnVtOjpL
ZXlBbmRDb3VudD4gbGlzdCA9IG5ld1NwZWN0cnVtLmJ1aWxkTGlzdCgpOworICAgICAgICBBU1NF
UlQobGlzdC5zaXplKCkpOworICAgICAgICBtX3ByaW1hcnlDYWxsZWUgPSBsaXN0Lmxhc3QoKS5r
ZXk7CisgICAgICAgIG1fbnVtQ2FsbHNUb1ByaW1hcnkgPSBsaXN0Lmxhc3QoKS5jb3VudDsKKyAg
ICAgICAgCisgICAgICAgIEFTU0VSVCghIW1fb3RoZXJDYWxsZWVzID09IChsaXN0LnNpemUoKSA+
PSAyKSk7CisgICAgICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICAgICAgbV9vdGhl
ckNhbGxlZXMtPm1fcHJvY2Vzc2VkLmNsZWFyKCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBsaXN0LnNpemUoKSAtIDE7IGktLTspCisgICAgICAgICAgICAgICAgbV9vdGhlckNhbGxl
ZXMtPm1fcHJvY2Vzc2VkLmFwcGVuZChDYWxsRWRnZShsaXN0W2ldLmtleSwgbGlzdFtpXS5jb3Vu
dCkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZp
ZWQgPSB0cnVlOworICAgICAgICAKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBp
ZiAoISFtX3ByaW1hcnlDYWxsZWUgJiYgIUhlYXA6OmlzTWFya2VkKG1fcHJpbWFyeUNhbGxlZS5y
YXdDYWxsZWVDZWxsKCkpKSB7CisgICAgICAgIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxsICs9IG1f
bnVtQ2FsbHNUb1ByaW1hcnk7CisgICAgICAgIAorICAgICAgICBtX3ByaW1hcnlDYWxsZWUgPSBD
YWxsVmFyaWFudCgpOworICAgICAgICBtX251bUNhbGxzVG9QcmltYXJ5ID0gMDsKKyAgICB9Cisg
ICAgCisgICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpKyspIHsKKyAgICAg
ICAgICAgIGlmIChIZWFwOjppc01hcmtlZChtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0u
Y2FsbGVlKCkucmF3Q2FsbGVlQ2VsbCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgbV9udW1DYWxsc1RvVW5rbm93bkNlbGwgKz0gbV9vdGhl
ckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNvdW50KCk7CisgICAgICAgICAgICBtX290aGVyQ2Fs
bGVlcy0+bV9wcm9jZXNzZWRbaS0tXSA9IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5sYXN0
KCk7CisgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQucmVtb3ZlTGFzdCgp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBPbmx5IGV4aXN0cyB3aGlsZSB3ZSBh
cmUgcHJvY2Vzc2luZyB0aGUgbG9nLgorICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9vdGhlckNh
bGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0pOworICAgIH0KK30KKwordm9pZCBDYWxsRWRnZVBy
b2ZpbGU6OmFkZFNsb3coQ2FsbFZhcmlhbnQgY2FsbGVlLCBDYWxsRWRnZVByb2ZpbGVWZWN0b3Im
IG1lcmdlQmFja0xvZykKK3sKKyAgICAvLyBUaGlzIGV4aXN0cyB0byBoYW5kbGUgY2FzZXMgd2hl
cmUgdGhlIHNwZWN0cnVtIHdhc24ndCBjcmVhdGVkIHlldCwgb3Igd2UncmUgc3RvcmluZyB0byBh
CisgICAgLy8gcGFydGljdWxhciBzcGVjdHJ1bSBmb3IgdGhlIGZpcnN0IHRpbWUgZHVyaW5nIGEg
bG9nIHByb2Nlc3NpbmcgaXRlcmF0aW9uLgorICAgIAorICAgIGlmICghbV9vdGhlckNhbGxlZXMp
IHsKKyAgICAgICAgbV9vdGhlckNhbGxlZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlY29uZGFyeT4o
KTsKKyAgICAgICAgLy8gSWYgYSBjb21waWxlciB0aHJlYWQgbm90aWNlcyB0aGUgbV9vdGhlckNh
bGxlZXMgYmVpbmcgbm9uLW51bGwsIHdlIHdhbnQgdG8gbWFrZSBzdXJlCisgICAgICAgIC8vIHRo
YXQgaXQgc2VlcyBhIGZ1bGx5IGNyZWF0ZWQgb25lLgorICAgICAgICBXVEY6OnN0b3JlU3RvcmVG
ZW5jZSgpOworICAgIH0KKyAgICAKKyAgICBpZiAoIW1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFy
eVNwZWN0cnVtKSB7CisgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVt
ID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsU3BlY3RydW0+KCk7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5zaXplKCk7IGktLTspIHsKKyAgICAg
ICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5hZGQoCisgICAgICAg
ICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNhbGxlZSgpLAorICAgICAg
ICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jb3VudCgpKTsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoaXMgaXMgdGhlIGZp
cnN0IHRpbWUgd2UncmUgc2VlaW5nIHRoaXMgcHJvZmlsZSBkdXJpbmcgdGhpcyBsb2cKKyAgICAg
ICAgLy8gcHJvY2Vzc2luZyBpdGVyYXRpb24uCisgICAgICAgIG1lcmdlQmFja0xvZy5hcHBlbmQo
dGhpcyk7CisgICAgfQorICAgIAorICAgIG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0
cnVtLT5hZGQoY2FsbGVlKTsKK30KKwordm9pZCBDYWxsRWRnZVByb2ZpbGU6Om1lcmdlQmFjaygp
Cit7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAKKyAgICBB
U1NFUlQobV9vdGhlckNhbGxlZXMpOworICAgIEFTU0VSVChtX290aGVyQ2FsbGVlcy0+bV90ZW1w
b3JhcnlTcGVjdHJ1bSk7CisgICAgCisgICAgaWYgKCEhbV9wcmltYXJ5Q2FsbGVlKQorICAgICAg
ICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+YWRkKG1fcHJpbWFyeUNhbGxl
ZSwgbV9udW1DYWxsc1RvUHJpbWFyeSk7CisgICAgCisgICAgaWYgKCFtX2Nsb3N1cmVzQXJlRGVz
cGVjaWZpZWQpIHsKKyAgICAgICAgQ2FsbFNwZWN0cnVtIG5ld1NwZWN0cnVtOworICAgICAgICBm
b3IgKGF1dG8gZW50cnkgOiAqbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0pCisg
ICAgICAgICAgICBuZXdTcGVjdHJ1bS5hZGQoZW50cnkua2V5LmRlc3BlY2lmaWVkQ2xvc3VyZSgp
LCBlbnRyeS52YWx1ZSk7CisgICAgICAgIAorICAgICAgICBpZiAobmV3U3BlY3RydW0uc2l6ZSgp
IDwgbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0tPnNpemUoKSkgeworICAgICAg
ICAgICAgKm1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtID0gbmV3U3BlY3RydW07
CisgICAgICAgICAgICBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQgPSB0cnVlOworICAgICAgICB9
CisgICAgfQorICAgIAorICAgIFZlY3RvcjxDYWxsU3BlY3RydW06OktleUFuZENvdW50PiBsaXN0
ID0gbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0tPmJ1aWxkTGlzdCgpOworICAg
IG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtID0gbnVsbHB0cjsKKyAgICAKKyAg
ICBtX3ByaW1hcnlDYWxsZWUgPSBsaXN0Lmxhc3QoKS5rZXk7CisgICAgbV9udW1DYWxsc1RvUHJp
bWFyeSA9IGxpc3QubGFzdCgpLmNvdW50OworICAgIGxpc3QucmVtb3ZlTGFzdCgpOworICAgIAor
ICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5jbGVhcigpOworICAgIGZvciAodW5zaWdu
ZWQgY291bnQgPSBtYXhLbm93bkNhbGxlZXM7IGNvdW50LS0gJiYgIWxpc3QuaXNFbXB0eSgpOykg
eworICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuYXBwZW5kKENhbGxFZGdlKGxp
c3QubGFzdCgpLmtleSwgbGlzdC5sYXN0KCkuY291bnQpKTsKKyAgICAgICAgbGlzdC5yZW1vdmVM
YXN0KCk7CisgICAgfQorICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IGxpc3Quc2l6ZSgpOyBp
LS07KQorICAgICAgICBtX251bUNhbGxzVG9Vbmtub3duQ2VsbCArPSBsaXN0W2ldLmNvdW50Owor
fQorCit2b2lkIENhbGxFZGdlUHJvZmlsZTo6ZmFkZUJ5SGFsZigpCit7CisgICAgbV9udW1DYWxs
c1RvUHJpbWFyeSA+Pj0gMTsKKyAgICBtX251bUNhbGxzVG9Ob3RDZWxsID4+PSAxOworICAgIG1f
bnVtQ2FsbHNUb1Vua25vd25DZWxsID4+PSAxOworICAgIG1fdG90YWxDb3VudCA+Pj0gMTsKKyAg
ICAKKyAgICBpZiAobV9vdGhlckNhbGxlZXMpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
bV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAg
bV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldID0gQ2FsbEVkZ2UoCisgICAgICAgICAgICAg
ICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNhbGxlZSgpLAorICAgICAgICAgICAg
ICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jb3VudCgpID4+IDEpOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBpZiAobV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3Bl
Y3RydW0pIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBlbnRyeSA6ICptX290aGVyQ2FsbGVlcy0+
bV90ZW1wb3JhcnlTcGVjdHJ1bSkKKyAgICAgICAgICAgICAgICBlbnRyeS52YWx1ZSA+Pj0gMTsK
KyAgICAgICAgfQorICAgIH0KK30KKworQ2FsbEVkZ2VMb2c6OkNhbGxFZGdlTG9nKCkKKyAgICA6
IG1fc2NhbGVkTG9nSW5kZXgobG9nU2l6ZSAqIHNpemVvZihFbnRyeSkpCit7CisgICAgQVNTRVJU
KCEobV9zY2FsZWRMb2dJbmRleCAlIHNpemVvZihFbnRyeSkpKTsKK30KKworQ2FsbEVkZ2VMb2c6
On5DYWxsRWRnZUxvZygpIHsgfQorCitib29sIENhbGxFZGdlTG9nOjppc0VuYWJsZWQoKQorewor
ICAgIHJldHVybiBPcHRpb25zOjplbmFibGVDYWxsRWRnZVByb2ZpbGluZygpICYmIE9wdGlvbnM6
OnVzZUZUTEpJVCgpOworfQorCisjaWYgRU5BQkxFKEpJVCkKKworZXh0ZXJuICJDIiBKSVRfT1BF
UkFUSU9OIHZvaWQgb3BlcmF0aW9uUHJvY2Vzc0NhbGxFZGdlTG9nKENhbGxFZGdlTG9nKikgV1RG
X0lOVEVSTkFMOworZXh0ZXJuICJDIiBKSVRfT1BFUkFUSU9OIHZvaWQgb3BlcmF0aW9uUHJvY2Vz
c0NhbGxFZGdlTG9nKENhbGxFZGdlTG9nKiBsb2cpCit7CisgICAgbG9nLT5wcm9jZXNzTG9nKCk7
Cit9CisKK3ZvaWQgQ2FsbEVkZ2VMb2c6OmVtaXRMb2dDb2RlKENDYWxsSGVscGVycyYgaml0LCBD
YWxsRWRnZVByb2ZpbGUmIHByb2ZpbGUsIEpTVmFsdWVSZWdzIGNhbGxlZVJlZ3MpCit7CisgICAg
Y29uc3QgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHMgPSAxOworICAgIAorICAgIEdQUlJlZyBz
Y3JhdGNoR1BSOworICAgIGlmICghY2FsbGVlUmVncy51c2VzKEdQUkluZm86OnJlZ1QwKSkKKyAg
ICAgICAgc2NyYXRjaEdQUiA9IEdQUkluZm86OnJlZ1QwOworICAgIGVsc2UgaWYgKCFjYWxsZWVS
ZWdzLnVzZXMoR1BSSW5mbzo6cmVnVDEpKQorICAgICAgICBzY3JhdGNoR1BSID0gR1BSSW5mbzo6
cmVnVDE7CisgICAgZWxzZQorICAgICAgICBzY3JhdGNoR1BSID0gR1BSSW5mbzo6cmVnVDI7Cisg
ICAgCisgICAgaml0LmxvYWQzMigmbV9zY2FsZWRMb2dJbmRleCwgc2NyYXRjaEdQUik7CisgICAg
CisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG9rID0gaml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBl
cnM6Ok5vblplcm8sIHNjcmF0Y2hHUFIpOworICAgIAorICAgIEFTU0VSVF9VTlVTRUQobnVtYmVy
T2ZBcmd1bWVudHMsIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkgPj0gMSArIG51bWJlck9mQXJn
dW1lbnRzKTsKKyAgICAKKyAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIpOworICAgIAorICAgIGppdC5zdG9yZVZhbHVlKGNhbGxlZVJlZ3MsIENDYWxsSGVscGVyczo6
QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzaXplb2YoSlNWYWx1
ZSkpKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHMoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KHRoaXMpKTsKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYml0d2lz
ZV9jYXN0PHZvaWQqPihvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2cpKSwgR1BSSW5mbzo6bm9u
QXJnR1BSMCk7CisgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgaml0Lmxv
YWRWYWx1ZShDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJS
ZWdpc3Rlciwgc2l6ZW9mKEpTVmFsdWUpKSwgY2FsbGVlUmVncyk7CisgICAgCisgICAgaml0LmFk
ZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzdGFja0FsaWdubWVudEJ5dGVzKCkpLCBD
Q2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAKKyAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihsb2dTaXplICogc2l6ZW9mKEVudHJ5KSksIHNjcmF0
Y2hHUFIpOworICAgIG9rLmxpbmsoJmppdCk7CisKKyAgICBqaXQuc3ViMzIoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoc2l6ZW9mKEVudHJ5KSksIHNjcmF0Y2hHUFIpOworICAgIGppdC5zdG9y
ZTMyKHNjcmF0Y2hHUFIsICZtX3NjYWxlZExvZ0luZGV4KTsKKyAgICBqaXQuYWRkUHRyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihtX2xvZyksIHNjcmF0Y2hHUFIpOworICAgIGppdC5zdG9y
ZVZhbHVlKGNhbGxlZVJlZ3MsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpF
Q1RfT0ZGU0VUT0YoRW50cnksIG1fdmFsdWUpKSk7CisgICAgaml0LnN0b3JlUHRyKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cigmcHJvZmlsZSksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3Jh
dGNoR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW50cnksIG1fcHJvZmlsZSkpKTsKK30KKwordm9pZCBD
YWxsRWRnZUxvZzo6ZW1pdExvZ0NvZGUoCisgICAgQ0NhbGxIZWxwZXJzJiBqaXQsIE93blB0cjxD
YWxsRWRnZVByb2ZpbGU+JiBwcm9maWxlUG9pbnRlciwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncykK
K3sKKyAgICBpZiAoIWlzRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgcHJv
ZmlsZVBvaW50ZXIuY3JlYXRlVHJhbnNhY3Rpb25hbGx5KCk7CisgICAgZW1pdExvZ0NvZGUoaml0
LCAqcHJvZmlsZVBvaW50ZXIsIGNhbGxlZVJlZ3MpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKEpJ
VCkKKwordm9pZCBDYWxsRWRnZUxvZzo6cHJvY2Vzc0xvZygpCit7CisgICAgQVNTRVJUKCEobV9z
Y2FsZWRMb2dJbmRleCAlIHNpemVvZihFbnRyeSkpKTsKKyAgICAKKyAgICBpZiAoT3B0aW9uczo6
Y2FsbEVkZ2VQcm9maWxlUmVhbGx5UHJvY2Vzc2VzTG9nKCkpIHsKKyAgICAgICAgQ2FsbEVkZ2VQ
cm9maWxlVmVjdG9yIG1lcmdlQmFja0xvZzsKKyAgICAgICAgCisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IG1fc2NhbGVkTG9nSW5kZXggLyBzaXplb2YoRW50cnkpOyBpIDwgbG9nU2l6ZTsgKytp
KQorICAgICAgICAgICAgbV9sb2dbaV0ubV9wcm9maWxlLT5hZGQobV9sb2dbaV0ubV92YWx1ZSwg
bWVyZ2VCYWNrTG9nKTsKKyAgICAgICAgCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1lcmdl
QmFja0xvZy5zaXplKCk7IGktLTspCisgICAgICAgICAgICBtZXJnZUJhY2tMb2dbaV0tPm1lcmdl
QmFjaygpOworICAgIH0KKyAgICAKKyAgICBtX3NjYWxlZExvZ0luZGV4ID0gbG9nU2l6ZSAqIHNp
emVvZihFbnRyeSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ2FsbEVkZ2VQcm9maWxlX2gKKyNkZWZpbmUg
Q2FsbEVkZ2VQcm9maWxlX2gKKworI2luY2x1ZGUgIkNhbGxFZGdlLmgiCisjaW5jbHVkZSAiQ2Fs
bFZhcmlhbnQuaCIKKyNpbmNsdWRlICJDb25jdXJyZW50SklUTG9jay5oIgorI2luY2x1ZGUgIkpT
Q2VsbC5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIENDYWxsSGVscGVyczsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKworY2xhc3Mg
Q2FsbEVkZ2VMb2c7CitjbGFzcyBDYWxsRWRnZVByb2ZpbGU7Cit0eXBlZGVmIFZlY3RvcjxDYWxs
RWRnZVByb2ZpbGUqLCAxMD4gQ2FsbEVkZ2VQcm9maWxlVmVjdG9yOworCitjbGFzcyBDYWxsRWRn
ZVByb2ZpbGUgeworcHVibGljOgorICAgIENhbGxFZGdlUHJvZmlsZSgpOworICAgIAorICAgIENh
bGxFZGdlQ291bnRUeXBlIG51bUNhbGxzVG9Ob3RDZWxsKCkgY29uc3QgeyByZXR1cm4gbV9udW1D
YWxsc1RvTm90Q2VsbDsgfQorICAgIENhbGxFZGdlQ291bnRUeXBlIG51bUNhbGxzVG9Vbmtub3du
Q2VsbCgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxsOyB9CisgICAgQ2Fs
bEVkZ2VDb3VudFR5cGUgbnVtQ2FsbHNUb0tub3duQ2VsbHMoKSBjb25zdDsKKyAgICAKKyAgICBD
YWxsRWRnZUNvdW50VHlwZSB0b3RhbENhbGxzKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbENvdW50
OyB9CisgICAgCisgICAgLy8gQ2FsbCB3aGlsZSBob2xkaW5nIHRoZSBvd25pbmcgQ29kZUJsb2Nr
J3MgbG9jay4KKyAgICBDYWxsRWRnZUxpc3QgY2FsbEVkZ2VzKCkgY29uc3Q7CisgICAgCisgICAg
dm9pZCB2aXNpdFdlYWsoKTsKKyAgICAKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIENhbGxF
ZGdlTG9nOworICAgIAorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhLbm93bkNhbGxlZXMg
PSA1OworICAgIAorICAgIHZvaWQgYWRkKEpTVmFsdWUsIENhbGxFZGdlUHJvZmlsZVZlY3RvciYg
bWVyZ2VCYWNrTG9nKTsKKyAgICAKKyAgICBib29sIHdvcnRoRGVzcGVjaWZ5aW5nKCk7CisgICAg
dm9pZCBhZGRTbG93KENhbGxWYXJpYW50LCBDYWxsRWRnZVByb2ZpbGVWZWN0b3ImIG1lcmdlQmFj
a0xvZyk7CisgICAgdm9pZCBtZXJnZUJhY2soKTsKKyAgICB2b2lkIGZhZGVCeUhhbGYoKTsKKyAg
ICAKKyAgICAvLyBJdCdzIGNoZWFwZXIgdG8gbGV0IHRoaXMgaGF2ZSBpdHMgb3duIGxvY2suIEl0
IG5lZWRzIHRvIGJlIGFibGUgdG8gZmluZCB3aGljaCBsb2NrIHRvCisgICAgLy8gbG9jay4gTm9y
bWFsbHkgaXQgd291bGQgbG9jayB0aGUgb3duaW5nIENvZGVCbG9jaydzIGxvY2ssIGJ1dCB0aGF0
IHdvdWxkIHJlcXVpcmUgYQorICAgIC8vIHBvaW50ZXItd2lkdGggd29yZCB0byBwb2ludCBhdCB0
aGUgQ29kZUJsb2NrLiBIYXZpbmcgdGhlIGJ5dGUtc2l6ZWQgbG9jayBoZXJlIGlzCisgICAgLy8g
Y2hlYXBlci4gSG93ZXZlciwgdGhpcyBtZWFucyB0aGF0IHRoZSByZWxhdGlvbnNoaXAgd2l0aCB0
aGUgQ29kZUJsb2NrIGxvY2sgaXM6CisgICAgLy8gYWNxdWlyZSB0aGUgQ29kZUJsb2NrIGxvY2sg
YmVmb3JlIHRoaXMgb25lLgorICAgIG11dGFibGUgQ29uY3VycmVudEpJVExvY2sgbV9sb2NrOwor
ICAgIAorICAgIGJvb2wgbV9jbG9zdXJlc0FyZURlc3BlY2lmaWVkOworICAgIAorICAgIENhbGxF
ZGdlQ291bnRUeXBlIG1fbnVtQ2FsbHNUb1ByaW1hcnk7CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUg
bV9udW1DYWxsc1RvTm90Q2VsbDsKKyAgICBDYWxsRWRnZUNvdW50VHlwZSBtX251bUNhbGxzVG9V
bmtub3duQ2VsbDsKKyAgICBDYWxsRWRnZUNvdW50VHlwZSBtX3RvdGFsQ291bnQ7CisgICAgQ2Fs
bFZhcmlhbnQgbV9wcmltYXJ5Q2FsbGVlOworICAgIAorICAgIHR5cGVkZWYgU3BlY3RydW08Q2Fs
bFZhcmlhbnQsIENhbGxFZGdlQ291bnRUeXBlPiBDYWxsU3BlY3RydW07CisgICAgCisgICAgc3Ry
dWN0IFNlY29uZGFyeSB7CisgICAgICAgIFZlY3RvcjxDYWxsRWRnZT4gbV9wcm9jZXNzZWQ7IC8v
IFByb2Nlc3NlZCBidXQgbm90IG5lY2Vzc2FyaWx5IHNvcnRlZC4KKyAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPENhbGxTcGVjdHJ1bT4gbV90ZW1wb3JhcnlTcGVjdHJ1bTsKKyAgICB9OworICAgIAor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTZWNvbmRhcnk+IG1fb3RoZXJDYWxsZWVzOworfTsKKworY2xh
c3MgQ2FsbEVkZ2VMb2cgeworcHVibGljOgorICAgIENhbGxFZGdlTG9nKCk7CisgICAgfkNhbGxF
ZGdlTG9nKCk7CisKKyAgICBzdGF0aWMgYm9vbCBpc0VuYWJsZWQoKTsKKyAgICAKKyNpZiBFTkFC
TEUoSklUKQorICAgIHZvaWQgZW1pdExvZ0NvZGUoQ0NhbGxIZWxwZXJzJiwgQ2FsbEVkZ2VQcm9m
aWxlJiwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncyk7IC8vIEFzc3VtZXMgdGhhdCBzdGFjayBpcyBh
bGlnbmVkLCBhbGwgdm9sYXRpbGUgcmVnaXN0ZXJzIC0gb3RoZXIgdGhhbiBjYWxsZWVHUFIgLSBh
cmUgY2xvYmJlcmFibGUsIGFuZCB0aGUgcGFyYW1ldGVyIHNwYWNlIGlzIGluIHVzZS4KKyAgICAK
KyAgICAvLyBTYW1lIGFzIGFib3ZlIGJ1dCBjcmVhdGVzIGEgQ2FsbEVkZ2VQcm9maWxlIGluc3Rh
bmNlIGlmIG9uZSBkaWQgbm90IGFscmVhZHkgZXhpc3QuIERvZXMKKyAgICAvLyB0aGlzIGluIGEg
dGhyZWFkLXNhZmUgbWFubmVyIGJ5IGNhbGxpbmcgT3duUHRyOjpjcmVhdGVUcmFuc2FjdGlvbmFs
bHkuCisgICAgdm9pZCBlbWl0TG9nQ29kZShDQ2FsbEhlbHBlcnMmLCBPd25QdHI8Q2FsbEVkZ2VQ
cm9maWxlPiYsIEpTVmFsdWVSZWdzIGNhbGxlZVJlZ3MpOworI2VuZGlmIC8vIEVOQUJMRShKSVQp
CisgICAgCisgICAgdm9pZCBwcm9jZXNzTG9nKCk7CisgICAgCitwcml2YXRlOgorICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgbG9nU2l6ZSA9IDEwMDAwOworICAgIAorICAgIHN0cnVjdCBFbnRyeSB7CisgICAgICAgIEpT
VmFsdWUgbV92YWx1ZTsKKyAgICAgICAgQ2FsbEVkZ2VQcm9maWxlKiBtX3Byb2ZpbGU7CisgICAg
fTsKKyAgICAKKyAgICB1bnNpZ25lZCBtX3NjYWxlZExvZ0luZGV4OworICAgIEVudHJ5IG1fbG9n
W2xvZ1NpemVdOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDYWxsRWRn
ZVByb2ZpbGVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVk
Z2VQcm9maWxlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzX2gKKyNkZWZpbmUg
Q2FsbEVkZ2VQcm9maWxlSW5saW5lc19oCisKKyNpbmNsdWRlICJDYWxsRWRnZVByb2ZpbGUuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2lubGluZSBDYWxsRWRnZVByb2ZpbGU6OkNhbGxFZGdlUHJv
ZmlsZSgpCisgICAgOiBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQoZmFsc2UpCisgICAgLCBtX251
bUNhbGxzVG9QcmltYXJ5KDApCisgICAgLCBtX251bUNhbGxzVG9Ob3RDZWxsKDApCisgICAgLCBt
X251bUNhbGxzVG9Vbmtub3duQ2VsbCgwKQorICAgICwgbV90b3RhbENvdW50KDApCisgICAgLCBt
X3ByaW1hcnlDYWxsZWUobnVsbHB0cikKK3sKK30KKworQUxXQVlTX0lOTElORSB2b2lkIENhbGxF
ZGdlUHJvZmlsZTo6YWRkKEpTVmFsdWUgdmFsdWUsIENhbGxFZGdlUHJvZmlsZVZlY3RvciYgbWVy
Z2VCYWNrTG9nKQoreworICAgIHVuc2lnbmVkIG5ld1RvdGFsQ291bnQgPSBtX3RvdGFsQ291bnQg
KyAxOworICAgIGlmIChVTkxJS0VMWSghbmV3VG90YWxDb3VudCkpIHsKKyAgICAgICAgZmFkZUJ5
SGFsZigpOyAvLyBUYWNrbGUgb3ZlcmZsb3dzIGJ5IGRpdmlkaW5nIGFsbCBjb3VudHMgYnkgdHdv
LgorICAgICAgICBuZXdUb3RhbENvdW50ID0gbV90b3RhbENvdW50ICsgMTsKKyAgICB9CisgICAg
QVNTRVJUKG5ld1RvdGFsQ291bnQpOworICAgIG1fdG90YWxDb3VudCA9IG5ld1RvdGFsQ291bnQ7
CisgICAgCisgICAgaWYgKFVOTElLRUxZKCF2YWx1ZS5pc0NlbGwoKSkpIHsKKyAgICAgICAgbV9u
dW1DYWxsc1RvTm90Q2VsbCsrOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ2FsbFZh
cmlhbnQgY2FsbGVlID0gQ2FsbFZhcmlhbnQodmFsdWUuYXNDZWxsKCkpOworICAgIAorICAgIGlm
IChtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQpCisgICAgICAgIGNhbGxlZSA9IGNhbGxlZS5kZXNw
ZWNpZmllZENsb3N1cmUoKTsKKyAgICAKKyAgICBpZiAoVU5MSUtFTFkoIW1fcHJpbWFyeUNhbGxl
ZSkpIHsKKyAgICAgICAgbV9wcmltYXJ5Q2FsbGVlID0gY2FsbGVlOworICAgICAgICBtX251bUNh
bGxzVG9QcmltYXJ5ID0gMTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAg
aWYgKExJS0VMWShtX3ByaW1hcnlDYWxsZWUgPT0gY2FsbGVlKSkgeworICAgICAgICBtX251bUNh
bGxzVG9QcmltYXJ5Kys7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAorICAgIGlm
IChVTkxJS0VMWSghbV9vdGhlckNhbGxlZXMpKSB7CisgICAgICAgIGFkZFNsb3coY2FsbGVlLCBt
ZXJnZUJhY2tMb2cpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBDYWxs
U3BlY3RydW0qIHNlY29uZGFyeSA9IG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVt
LmdldCgpOworICAgIGlmICghc2Vjb25kYXJ5KSB7CisgICAgICAgIGFkZFNsb3coY2FsbGVlLCBt
ZXJnZUJhY2tMb2cpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBzZWNv
bmRhcnktPmFkZChjYWxsZWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8v
IENhbGxFZGdlUHJvZmlsZUlubGluZXNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAkocmV2aXNpb24gMTcyOTI3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgzLDYgKzgzLDExIEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWsoUmVwYXRj
aEJ1ZmYKICAgICB9CiAgICAgaWYgKCEhbGFzdFNlZW5DYWxsZWUgJiYgIUhlYXA6OmlzTWFya2Vk
KGxhc3RTZWVuQ2FsbGVlLmdldCgpKSkKICAgICAgICAgbGFzdFNlZW5DYWxsZWUuY2xlYXIoKTsK
KyAgICAKKyAgICBpZiAoY2FsbEVkZ2VQcm9maWxlKSB7CisgICAgICAgIFdURjo6bG9hZExvYWRG
ZW5jZSgpOworICAgICAgICBjYWxsRWRnZVByb2ZpbGUtPnZpc2l0V2VhaygpOworICAgIH0KIH0K
IAogQ2FsbExpbmtJbmZvJiBDYWxsTGlua0luZm86OmR1bW15KCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDE3MjkyNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBDYWxsTGlua0luZm9faAogI2RlZmlu
ZSBDYWxsTGlua0luZm9faAogCisjaW5jbHVkZSAiQ2FsbEVkZ2VQcm9maWxlLmgiCiAjaW5jbHVk
ZSAiQ2xvc3VyZUNhbGxTdHViUm91dGluZS5oIgogI2luY2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgog
I2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKQEAgLTMzLDYgKzM0LDcgQEAKICNp
bmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiV3Jp
dGVCYXJyaWVyLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TZW50
aW5lbExpbmtlZExpc3QuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC04OCw2ICs5MCw3IEBAIHN0
cnVjdCBDYWxsTGlua0luZm8gOiBwdWJsaWMgQmFzaWNSYXdTZW4KICAgICB1bnNpZ25lZCBjYWxs
ZWVHUFIgOiA4OwogICAgIHVuc2lnbmVkIHNsb3dQYXRoQ291bnQ7CiAgICAgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luOworICAgIE93blB0cjxDYWxsRWRnZVByb2ZpbGU+IGNhbGxFZGdlUHJvZmlsZTsK
IAogICAgIGJvb2wgaXNMaW5rZWQoKSB7IHJldHVybiBzdHViIHx8IGNhbGxlZTsgfQogICAgIHZv
aWQgdW5saW5rKFJlcGF0Y2hCdWZmZXImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkocmV2aXNpb24gMTcyOTI3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsNTQgKzMyLDIyIEBACiAjaW5jbHVkZSAiTExJbnRDYWxsTGlua0luZm8u
aCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5o
PgorI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogc3RhdGlj
IGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCiBDYWxsTGlua1N0YXR1czo6Q2FsbExpbmtT
dGF0dXMoSlNWYWx1ZSB2YWx1ZSkKLSAgICA6IG1fY2FsbFRhcmdldCh2YWx1ZSkKLSAgICAsIG1f
ZXhlY3V0YWJsZSgwKQotICAgICwgbV9jb3VsZFRha2VTbG93UGF0aChmYWxzZSkKKyAgICA6IG1f
Y291bGRUYWtlU2xvd1BhdGgoZmFsc2UpCiAgICAgLCBtX2lzUHJvdmVkKGZhbHNlKQogewotICAg
IGlmICghdmFsdWUgfHwgIXZhbHVlLmlzQ2VsbCgpKQorICAgIGlmICghdmFsdWUgfHwgIXZhbHVl
LmlzQ2VsbCgpKSB7CisgICAgICAgIG1fY291bGRUYWtlU2xvd1BhdGggPSB0cnVlOwogICAgICAg
ICByZXR1cm47CisgICAgfQogICAgIAotICAgIGlmICghdmFsdWUuYXNDZWxsKCktPmluaGVyaXRz
KEpTRnVuY3Rpb246OmluZm8oKSkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBtX2V4ZWN1
dGFibGUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KHZhbHVlLmFzQ2VsbCgpKS0+ZXhlY3V0YWJsZSgp
OwotfQotCi1KU0Z1bmN0aW9uKiBDYWxsTGlua1N0YXR1czo6ZnVuY3Rpb24oKSBjb25zdAotewot
ICAgIGlmICghbV9jYWxsVGFyZ2V0IHx8ICFtX2NhbGxUYXJnZXQuaXNDZWxsKCkpCi0gICAgICAg
IHJldHVybiAwOwotICAgIAotICAgIGlmICghbV9jYWxsVGFyZ2V0LmFzQ2VsbCgpLT5pbmhlcml0
cyhKU0Z1bmN0aW9uOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICByZXR1
cm4ganNDYXN0PEpTRnVuY3Rpb24qPihtX2NhbGxUYXJnZXQuYXNDZWxsKCkpOwotfQotCi1JbnRl
cm5hbEZ1bmN0aW9uKiBDYWxsTGlua1N0YXR1czo6aW50ZXJuYWxGdW5jdGlvbigpIGNvbnN0Ci17
Ci0gICAgaWYgKCFtX2NhbGxUYXJnZXQgfHwgIW1fY2FsbFRhcmdldC5pc0NlbGwoKSkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgaWYgKCFtX2NhbGxUYXJnZXQuYXNDZWxsKCktPmluaGVy
aXRzKEludGVybmFsRnVuY3Rpb246OmluZm8oKSkpCi0gICAgICAgIHJldHVybiAwOwotICAgIAot
ICAgIHJldHVybiBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KG1fY2FsbFRhcmdldC5hc0NlbGwo
KSk7Ci19Ci0KLUludHJpbnNpYyBDYWxsTGlua1N0YXR1czo6aW50cmluc2ljRm9yKENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCkgY29uc3QKLXsKLSAgICBpZiAoIW1fZXhlY3V0YWJsZSkKLSAg
ICAgICAgcmV0dXJuIE5vSW50cmluc2ljOwotICAgIAotICAgIHJldHVybiBtX2V4ZWN1dGFibGUt
PmludHJpbnNpY0ZvcihraW5kKTsKKyAgICBtX2VkZ2VzLmFwcGVuZChDYWxsRWRnZShDYWxsVmFy
aWFudCh2YWx1ZS5hc0NlbGwoKSksIDEpKTsKIH0KIAogQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtT
dGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2Vy
LCBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCkBAIC04
Nyw3ICs1NSw3IEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnIKICAg
ICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2Rl
SW5kZXgpOwogI2lmIEVOQUJMRShERkdfSklUKQotICAgIGlmIChwcm9maWxlZEJsb2NrLT5oYXNF
eGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRG
dW5jdGlvbikpKSB7CisgICAgaWYgKHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwg
REZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENlbGwpKSkgewogICAgICAg
ICAvLyBXZSBjb3VsZCBmb3JjZSB0aGlzIHRvIGJlIGEgY2xvc3VyZSBjYWxsLCBidXQgaW5zdGVh
ZCB3ZSdsbCBqdXN0IGFzc3VtZSB0aGF0IGl0CiAgICAgICAgIC8vIHRha2VzIHNsb3cgcGF0aC4K
ICAgICAgICAgcmV0dXJuIHRha2VzU2xvd1BhdGgoKTsKQEAgLTEyNSw3ICs5Myw3IEBAIENhbGxM
aW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICAgICBpZiAoIWNhbGxMaW5rSW5m
bykKICAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQobG9ja2VyLCBwcm9maWxlZEJsb2Nr
LCBieXRlY29kZUluZGV4KTsKICAgICAKLSAgICByZXR1cm4gY29tcHV0ZUZvcihsb2NrZXIsICpj
YWxsTGlua0luZm8sIGV4aXRTaXRlRGF0YSk7CisgICAgcmV0dXJuIGNvbXB1dGVGb3IobG9ja2Vy
LCBwcm9maWxlZEJsb2NrLCAqY2FsbExpbmtJbmZvLCBleGl0U2l0ZURhdGEpOwogI2Vsc2UKICAg
ICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoKTsKICNlbmRpZgpAQCAtMTM5LDEwICsxMDcsMTAgQEAg
Q2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBDYWxsTGlua1N0YQogICAgIAogI2lmIEVOQUJM
RShERkdfSklUKQogICAgIGV4aXRTaXRlRGF0YS5tX3Rha2VzU2xvd1BhdGggPQotICAgICAgICBw
cm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShi
eXRlY29kZUluZGV4LCBCYWRDYWNoZSwgZXhpdGluZ0pJVFR5cGUpKQorICAgICAgICBwcm9maWxl
ZEJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29k
ZUluZGV4LCBCYWRUeXBlLCBleGl0aW5nSklUVHlwZSkpCiAgICAgICAgIHx8IHByb2ZpbGVkQmxv
Y2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5k
ZXgsIEJhZEV4ZWN1dGFibGUsIGV4aXRpbmdKSVRUeXBlKSk7CiAgICAgZXhpdFNpdGVEYXRhLm1f
YmFkRnVuY3Rpb24gPQotICAgICAgICBwcm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIs
IERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRGdW5jdGlvbiwgZXhpdGlu
Z0pJVFR5cGUpKTsKKyAgICAgICAgcHJvZmlsZWRCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBE
Rkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkQ2VsbCwgZXhpdGluZ0pJVFR5
cGUpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGxvY2tlcik7CiAgICAgVU5VU0VEX1BBUkFN
KHByb2ZpbGVkQmxvY2spOwpAQCAtMTU0LDcgKzEyMiwzNCBAQCBDYWxsTGlua1N0YXR1czo6RXhp
dFNpdGVEYXRhIENhbGxMaW5rU3RhCiB9CiAKICNpZiBFTkFCTEUoSklUKQotQ2FsbExpbmtTdGF0
dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYs
IENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQorQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVGb3IoCisgICAgY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBD
b2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQorewor
ICAgIC8vIFdlIGRvbid0IHJlYWxseSBuZWVkIHRoaXMsIGJ1dCBhbnl0aW1lIHdlIGhhdmUgdG8g
ZGVidWcgdGhpcyBjb2RlLCBpdCBiZWNvbWVzIGluZGlzcGVuc2FibGUuCisgICAgVU5VU0VEX1BB
UkFNKHByb2ZpbGVkQmxvY2spOworICAgIAorICAgIGlmIChPcHRpb25zOjpjYWxsU3RhdHVzU2hv
dWxkVXNlQ2FsbEVkZ2VQcm9maWxlKCkpIHsKKyAgICAgICAgLy8gQWx3YXlzIHRydXN0IHRoZSBj
YWxsIGVkZ2UgcHJvZmlsZSBvdmVyIGFueXRoaW5nIGVsc2Ugc2luY2UgdGhpcyBoYXMgcHJlY2lz
ZSBjb3VudHMuCisgICAgICAgIC8vIEl0IGNhbiBtYWtlIHRoZSBiZXN0IHBvc3NpYmxlIGRlY2lz
aW9uIGJlY2F1c2UgaXQgbmV2ZXIgImZvcmdldHMiIHdoYXQgaGFwcGVuZWQgZm9yIGFueQorICAg
ICAgICAvLyBjYWxsLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgZmFkaW5nIG91dCB0aGUgY291bnRz
IG9mIG9sZCBjYWxscyAoZm9yIGV4YW1wbGUgaWYgdGhlCisgICAgICAgIC8vIGNvdW50ZXIgdHlw
ZSBpcyAxNi1iaXQgdGhlbiBjYWxscyB0aGF0IGhhcHBlbmVkIG1vcmUgdGhhbiAyXjE2IGNhbGxz
IGFnbyBhcmUgZ2l2ZW4gaGFsZgorICAgICAgICAvLyB3ZWlnaHQsIGFuZCB0aGlzIGNvbXBvdW5k
cyBmb3IgZXZlcnkgMl4xNSBbc2ljXSBjYWxscyBhZnRlciB0aGF0KS4gVGhlIGNvbWJpbmF0aW9u
IG9mCisgICAgICAgIC8vIGhpZ2ggZmlkZWxpdHkgZm9yIHJlY2VudCBjYWxscyBhbmQgZmFkaW5n
IGZvciBvbGRlciBjYWxscyBtYWtlcyB0aGlzIHRoZSBtb3N0IHVzZWZ1bAorICAgICAgICAvLyBt
ZWNoYW1pc20gb2YgY2hvb3NpbmcgaG93IHRvIG9wdGltaXplIGZ1dHVyZSBjYWxscy4KKyAgICAg
ICAgQ2FsbEVkZ2VQcm9maWxlKiBlZGdlUHJvZmlsZSA9IGNhbGxMaW5rSW5mby5jYWxsRWRnZVBy
b2ZpbGUuZ2V0KCk7CisgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOworICAgICAgICBpZiAo
ZWRnZVByb2ZpbGUpIHsKKyAgICAgICAgICAgIENhbGxMaW5rU3RhdHVzIHJlc3VsdCA9IGNvbXB1
dGVGcm9tQ2FsbEVkZ2VQcm9maWxlKGVkZ2VQcm9maWxlKTsKKyAgICAgICAgICAgIGlmICghIXJl
c3VsdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgfQor
ICAgIAorICAgIHJldHVybiBjb21wdXRlRnJvbUNhbGxMaW5rSW5mbyhsb2NrZXIsIGNhbGxMaW5r
SW5mbyk7Cit9CisKK0NhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUNh
bGxMaW5rSW5mbygKKyAgICBjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgQ2FsbExpbmtJbmZv
JiBjYWxsTGlua0luZm8pCiB7CiAgICAgLy8gTm90ZSB0aGF0IGRlc3BpdGUgcmVxdWlyaW5nIHRo
YXQgdGhlIGxvY2tlciBpcyBoZWxkLCB0aGlzIGNvZGUgaXMgcmFjeSB3aXRoIHJlc3BlY3QKICAg
ICAvLyB0byB0aGUgQ2FsbExpbmtJbmZvOiBpdCBtYXkgZ2V0IGNsZWFyZWQgd2hpbGUgdGhpcyBj
b2RlIHJ1bnMhIFRoaXMgaXMgYmVjYXVzZQpAQCAtMTc3LDcgKzE3Miw3IEBAIENhbGxMaW5rU3Rh
dHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICAgICAKICAgICBKU0Z1bmN0aW9uKiB0YXJn
ZXQgPSBjYWxsTGlua0luZm8ubGFzdFNlZW5DYWxsZWUuZ2V0KCk7CiAgICAgaWYgKCF0YXJnZXQp
Ci0gICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygpOworICAgICAgICByZXR1cm4gdGFrZXNT
bG93UGF0aCgpOwogICAgIAogICAgIGlmIChjYWxsTGlua0luZm8uaGFzU2VlbkNsb3N1cmUpCiAg
ICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyh0YXJnZXQtPmV4ZWN1dGFibGUoKSk7CkBAIC0x
ODUsMTUgKzE4MCw0MyBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZv
CiAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKHRhcmdldCk7CiB9CiAKLUNhbGxMaW5rU3RhdHVz
IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAotICAgIGNvbnN0IENvbmN1cnJlbnRKSVRMb2Nr
ZXImIGxvY2tlciwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIEV4aXRTaXRlRGF0YSBleGl0
U2l0ZURhdGEpCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21DYWxs
RWRnZVByb2ZpbGUoQ2FsbEVkZ2VQcm9maWxlKiBlZGdlUHJvZmlsZSkKIHsKLSAgICBpZiAoZXhp
dFNpdGVEYXRhLm1fdGFrZXNTbG93UGF0aCkKKyAgICAvLyBJbiBjYXNlcyB3aGVyZSB0aGUgY2Fs
bCBlZGdlIHByb2ZpbGUgc2F3IG5vdGhpbmcsIHVzZSB0aGUgQ2FsbExpbmtJbmZvIGluc3RlYWQu
CisgICAgaWYgKCFlZGdlUHJvZmlsZS0+dG90YWxDYWxscygpKQorICAgICAgICByZXR1cm4gQ2Fs
bExpbmtTdGF0dXMoKTsKKyAgICAKKyAgICAvLyBUbyBkbyBhbnl0aGluZyBtZWFuaW5nZnVsLCB3
ZSByZXF1aXJlIHRoYXQgdGhlIG1ham9yaXR5IG9mIGNhbGxzIGFyZSB0byBzb21ldGhpbmcgd2UK
KyAgICAvLyBrbm93IGhvdyB0byBoYW5kbGUuCisgICAgdW5zaWduZWQgbnVtQ2FsbHNUb0tub3du
ID0gZWRnZVByb2ZpbGUtPm51bUNhbGxzVG9Lbm93bkNlbGxzKCk7CisgICAgdW5zaWduZWQgbnVt
Q2FsbHNUb1Vua25vd24gPSBlZGdlUHJvZmlsZS0+bnVtQ2FsbHNUb05vdENlbGwoKSArIGVkZ2VQ
cm9maWxlLT5udW1DYWxsc1RvVW5rbm93bkNlbGwoKTsKKyAgICAKKyAgICAvLyBXZSByZXF1aXJl
IHRoYXQgdGhlIG1ham9yaXR5IG9mIGNhbGxzIHdlcmUgdG8gc29tZXRoaW5nIHRoYXQgd2UgY291
bGQgcG9zc2libHkgaW5saW5lLgorICAgIGlmIChudW1DYWxsc1RvS25vd24gPD0gbnVtQ2FsbHNU
b1Vua25vd24pCisgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7CisgICAgCisgICAgLy8g
V2UgcmVxdWlyZSB0aGF0IHRoZSBudW1iZXIgb2Ygc3VjaCBjYWxscyBpcyBncmVhdGVyIHRoYW4g
c29tZSBtaW5pbWFsIHRocmVzaG9sZCwgc28gdGhhdCB3ZQorICAgIC8vIGF2b2lkIGlubGluaW5n
IGNvbXBsZXRlbHkgY29sZCBjYWxscy4KKyAgICBpZiAobnVtQ2FsbHNUb0tub3duIDwgT3B0aW9u
czo6ZnJlcXVlbnRDYWxsVGhyZXNob2xkKCkpCiAgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRo
KCk7CiAgICAgCi0gICAgQ2FsbExpbmtTdGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZvcihsb2NrZXIs
IGNhbGxMaW5rSW5mbyk7CisgICAgQ2FsbExpbmtTdGF0dXMgcmVzdWx0OworICAgIHJlc3VsdC5t
X2VkZ2VzID0gZWRnZVByb2ZpbGUtPmNhbGxFZGdlcygpOworICAgIHJlc3VsdC5tX2NvdWxkVGFr
ZVNsb3dQYXRoID0gISFudW1DYWxsc1RvVW5rbm93bjsKKyAgICByZXN1bHQubV9jYW5UcnVzdENv
dW50cyA9IHRydWU7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQ2FsbExpbmtTdGF0
dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgY29uc3QgQ29uY3VycmVudEpJVExv
Y2tlciYgbG9ja2VyLCBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIENhbGxMaW5rSW5mbyYgY2Fs
bExpbmtJbmZvLAorICAgIEV4aXRTaXRlRGF0YSBleGl0U2l0ZURhdGEpCit7CisgICAgQ2FsbExp
bmtTdGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZvcihsb2NrZXIsIHByb2ZpbGVkQmxvY2ssIGNhbGxM
aW5rSW5mbyk7CiAgICAgaWYgKGV4aXRTaXRlRGF0YS5tX2JhZEZ1bmN0aW9uKQogICAgICAgICBy
ZXN1bHQubWFrZUNsb3N1cmVDYWxsKCk7CisgICAgaWYgKGV4aXRTaXRlRGF0YS5tX3Rha2VzU2xv
d1BhdGgpCisgICAgICAgIHJlc3VsdC5tX2NvdWxkVGFrZVNsb3dQYXRoID0gdHJ1ZTsKICAgICAK
ICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjI3LDcgKzI1MCw3IEBAIHZvaWQgQ2FsbExpbmtT
dGF0dXM6OmNvbXB1dGVERkdTdGF0dXNlcygKICAgICAgICAgCiAgICAgICAgIHsKICAgICAgICAg
ICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKGRmZ0NvZGVCbG9jay0+bV9sb2NrKTsKLSAg
ICAgICAgICAgIG1hcC5hZGQoaW5mby5jb2RlT3JpZ2luLCBjb21wdXRlRm9yKGxvY2tlciwgaW5m
bywgZXhpdFNpdGVEYXRhKSk7CisgICAgICAgICAgICBtYXAuYWRkKGluZm8uY29kZU9yaWdpbiwg
Y29tcHV0ZUZvcihsb2NrZXIsIGRmZ0NvZGVCbG9jaywgaW5mbywgZXhpdFNpdGVEYXRhKSk7CiAg
ICAgICAgIH0KICAgICB9CiAjZWxzZQpAQCAtMjU2LDYgKzI3OSwzMSBAQCBDYWxsTGlua1N0YXR1
cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvCiAgICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmls
ZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBiYXNlbGluZU1hcCk7CiB9CiAKK2Jv
b2wgQ2FsbExpbmtTdGF0dXM6OmlzQ2xvc3VyZUNhbGwoKSBjb25zdAoreworICAgIGZvciAodW5z
aWduZWQgaSA9IG1fZWRnZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIGlmIChtX2VkZ2VzW2ld
LmNhbGxlZSgpLmlzQ2xvc3VyZUNhbGwoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQ2FsbExpbmtTdGF0dXM6Om1ha2VDbG9z
dXJlQ2FsbCgpCit7CisgICAgQVNTRVJUKCFtX2lzUHJvdmVkKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSBtX2VkZ2VzLnNpemUoKTsgaS0tOykKKyAgICAgICAgbV9lZGdlc1tpXSA9IG1fZWRnZXNb
aV0uZGVzcGVjaWZpZWRDbG9zdXJlKCk7CisgICAgCisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQp
IHsKKyAgICAgICAgLy8gRG9pbmcgdGhpcyBzaG91bGQgbm90IGhhdmUgY3JlYXRlZCBkdXBsaWNh
dGVzLCBiZWNhdXNlIHRoZSBDYWxsRWRnZVByb2ZpbGUKKyAgICAgICAgLy8gc2hvdWxkIGRlc3Bl
Y2lmeSBjbG9zdXJlcyBpZiBkb2luZyBzbyB3b3VsZCByZWR1Y2UgdGhlIG51bWJlciBvZiBrbm93
biBjYWxsZWVzLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9lZGdlcy5zaXpl
KCk7ICsraSkgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gaSArIDE7IGogPCBtX2Vk
Z2VzLnNpemUoKTsgKytqKQorICAgICAgICAgICAgICAgIEFTU0VSVChtX2VkZ2VzW2ldLmNhbGxl
ZSgpICE9IG1fZWRnZXNbal0uY2FsbGVlKCkpOworICAgICAgICB9CisgICAgfQorfQorCiB2b2lk
IENhbGxMaW5rU3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgaWYg
KCFpc1NldCgpKSB7CkBAIC0yNzEsMTQgKzMxOSw3IEBAIHZvaWQgQ2FsbExpbmtTdGF0dXM6OmR1
bXAoUHJpbnRTdHJlYW0mIG8KICAgICBpZiAobV9jb3VsZFRha2VTbG93UGF0aCkKICAgICAgICAg
b3V0LnByaW50KGNvbW1hLCAiQ291bGQgVGFrZSBTbG93IFBhdGgiKTsKICAgICAKLSAgICBpZiAo
bV9jYWxsVGFyZ2V0KQotICAgICAgICBvdXQucHJpbnQoY29tbWEsICJLbm93biB0YXJnZXQ6ICIs
IG1fY2FsbFRhcmdldCk7Ci0gICAgCi0gICAgaWYgKG1fZXhlY3V0YWJsZSkgewotICAgICAgICBv
dXQucHJpbnQoY29tbWEsICJFeGVjdXRhYmxlL0NhbGxIYXNoOiAiLCBSYXdQb2ludGVyKG1fZXhl
Y3V0YWJsZSkpOwotICAgICAgICBpZiAoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSkKLSAgICAgICAg
ICAgIG91dC5wcmludCgiLyIsIG1fZXhlY3V0YWJsZS0+aGFzaEZvcihDb2RlRm9yQ2FsbCkpOwot
ICAgIH0KKyAgICBvdXQucHJpbnQobGlzdER1bXAobV9lZGdlcykpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0
YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TGlua1N0YXR1cy5oCShyZXZpc2lvbiAxNzI5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsOSArNDYsOSBA
QCBzdHJ1Y3QgQ2FsbExpbmtJbmZvOwogY2xhc3MgQ2FsbExpbmtTdGF0dXMgewogcHVibGljOgog
ICAgIENhbGxMaW5rU3RhdHVzKCkKLSAgICAgICAgOiBtX2V4ZWN1dGFibGUoMCkKLSAgICAgICAg
LCBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQorICAgICAgICA6IG1fY291bGRUYWtlU2xvd1Bh
dGgoZmFsc2UpCiAgICAgICAgICwgbV9pc1Byb3ZlZChmYWxzZSkKKyAgICAgICAgLCBtX2NhblRy
dXN0Q291bnRzKGZhbHNlKQogICAgIHsKICAgICB9CiAgICAgCkBAIC02MSwxMCArNjEsMTEgQEAg
cHVibGljOgogICAgIAogICAgIGV4cGxpY2l0IENhbGxMaW5rU3RhdHVzKEpTVmFsdWUpOwogICAg
IAotICAgIENhbGxMaW5rU3RhdHVzKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKQotICAgICAg
ICA6IG1fZXhlY3V0YWJsZShleGVjdXRhYmxlKQorICAgIENhbGxMaW5rU3RhdHVzKENhbGxWYXJp
YW50IHZhcmlhbnQpCisgICAgICAgIDogbV9lZGdlcygxLCBDYWxsRWRnZSh2YXJpYW50LCAxKSkK
ICAgICAgICAgLCBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQogICAgICAgICAsIG1faXNQcm92
ZWQoZmFsc2UpCisgICAgICAgICwgbV9jYW5UcnVzdENvdW50cyhmYWxzZSkKICAgICB7CiAgICAg
fQogICAgIApAQCAtOTIsOCArOTMsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEpJVCkKICAgICAv
LyBDb21wdXRlcyB0aGUgc3RhdHVzIGFzc3VtaW5nIHRoYXQgd2UgbmV2ZXIgdG9vayBzbG93IHBh
dGggYW5kIG5ldmVyIHByZXZpb3VzbHkKICAgICAvLyBleGl0ZWQuCi0gICAgc3RhdGljIENhbGxM
aW5rU3RhdHVzIGNvbXB1dGVGb3IoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENhbGxMaW5r
SW5mbyYpOwotICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKGNvbnN0IENvbmN1
cnJlbnRKSVRMb2NrZXImLCBDYWxsTGlua0luZm8mLCBFeGl0U2l0ZURhdGEpOworICAgIHN0YXRp
YyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBD
b2RlQmxvY2sqLCBDYWxsTGlua0luZm8mKTsKKyAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29t
cHV0ZUZvcigKKyAgICAgICAgY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENvZGVCbG9jayos
IENhbGxMaW5rSW5mbyYsIEV4aXRTaXRlRGF0YSk7CiAjZW5kaWYKICAgICAKICAgICB0eXBlZGVm
IEhhc2hNYXA8Q29kZU9yaWdpbiwgQ2FsbExpbmtTdGF0dXMsIENvZGVPcmlnaW5BcHByb3hpbWF0
ZUhhc2g+IENvbnRleHRNYXA7CkBAIC0xMDcsMzcgKzEwOSwzOCBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoCiAgICAgICAgIENvZGVCbG9jayosIENvZGVP
cmlnaW4sIGNvbnN0IENhbGxMaW5rSW5mb01hcCYsIGNvbnN0IENvbnRleHRNYXAmKTsKICAgICAK
LSAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0IHx8IG1fZXhlY3V0
YWJsZSB8fCBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CisgICAgYm9vbCBpc1NldCgpIGNvbnN0IHsg
cmV0dXJuICFtX2VkZ2VzLmlzRW1wdHkoKSB8fCBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CiAgICAg
CiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsgfQogICAgIAog
ICAgIGJvb2wgY291bGRUYWtlU2xvd1BhdGgoKSBjb25zdCB7IHJldHVybiBtX2NvdWxkVGFrZVNs
b3dQYXRoOyB9Ci0gICAgYm9vbCBpc0Nsb3N1cmVDYWxsKCkgY29uc3QgeyByZXR1cm4gbV9leGVj
dXRhYmxlICYmICFtX2NhbGxUYXJnZXQ7IH0KICAgICAKLSAgICBKU1ZhbHVlIGNhbGxUYXJnZXQo
KSBjb25zdCB7IHJldHVybiBtX2NhbGxUYXJnZXQ7IH0KLSAgICBKU0Z1bmN0aW9uKiBmdW5jdGlv
bigpIGNvbnN0OwotICAgIEludGVybmFsRnVuY3Rpb24qIGludGVybmFsRnVuY3Rpb24oKSBjb25z
dDsKLSAgICBJbnRyaW5zaWMgaW50cmluc2ljRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQpIGNv
bnN0OwotICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9l
eGVjdXRhYmxlOyB9CisgICAgQ2FsbEVkZ2VMaXN0IGVkZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9l
ZGdlczsgfQorICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2VkZ2VzLnNpemUo
KTsgfQorICAgIENhbGxFZGdlIGF0KHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIG1fZWRnZXNb
aV07IH0KKyAgICBDYWxsRWRnZSBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJu
IGF0KGkpOyB9CiAgICAgYm9vbCBpc1Byb3ZlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNQcm92ZWQ7
IH0KLSAgICBib29sIGNhbk9wdGltaXplKCkgY29uc3QgeyByZXR1cm4gKG1fY2FsbFRhcmdldCB8
fCBtX2V4ZWN1dGFibGUpICYmICFtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CisgICAgYm9vbCBjYW5P
cHRpbWl6ZSgpIGNvbnN0IHsgcmV0dXJuICFtX2VkZ2VzLmlzRW1wdHkoKTsgfQorICAgIGJvb2wg
Y2FuVHJ1c3RDb3VudHMoKSBjb25zdCB7IHJldHVybiBtX2NhblRydXN0Q291bnRzOyB9CisgICAg
CisgICAgYm9vbCBpc0Nsb3N1cmVDYWxsKCkgY29uc3Q7IC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkg
Y2FsbGVlIGlzIGEgY2xvc3VyZSBjYWxsLgogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKLSAgICB2b2lkIG1ha2VDbG9zdXJlQ2FsbCgpCi0g
ICAgewotICAgICAgICBBU1NFUlQoIW1faXNQcm92ZWQpOwotICAgICAgICAvLyBUdXJuIHRoaXMg
aW50byBhIGNsb3N1cmUgY2FsbC4KLSAgICAgICAgbV9jYWxsVGFyZ2V0ID0gSlNWYWx1ZSgpOwot
ICAgIH0KKyAgICB2b2lkIG1ha2VDbG9zdXJlQ2FsbCgpOwogICAgIAogICAgIHN0YXRpYyBDYWxs
TGlua1N0YXR1cyBjb21wdXRlRnJvbUxMSW50KGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBD
b2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKyNpZiBFTkFCTEUoSklUKQorICAg
IHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRnJvbUNhbGxFZGdlUHJvZmlsZShDYWxsRWRn
ZVByb2ZpbGUqKTsKKyAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZyb21DYWxsTGlu
a0luZm8oCisgICAgICAgIGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBDYWxsTGlua0luZm8m
KTsKKyNlbmRpZgogICAgIAotICAgIEpTVmFsdWUgbV9jYWxsVGFyZ2V0OwotICAgIEV4ZWN1dGFi
bGVCYXNlKiBtX2V4ZWN1dGFibGU7CisgICAgQ2FsbEVkZ2VMaXN0IG1fZWRnZXM7CiAgICAgYm9v
bCBtX2NvdWxkVGFrZVNsb3dQYXRoOwogICAgIGJvb2wgbV9pc1Byb3ZlZDsKKyAgICBib29sIG1f
Y2FuVHJ1c3RDb3VudHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2FsbFZhcmlh
bnQuaCIKKworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3Zv
aWQgQ2FsbFZhcmlhbnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBpZiAo
ISp0aGlzKSB7CisgICAgICAgIG91dC5wcmludCgibnVsbCIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIAorICAgIGlmIChJbnRlcm5hbEZ1bmN0aW9uKiBpbnRlcm5hbEZ1bmN0aW9uID0g
dGhpcy0+aW50ZXJuYWxGdW5jdGlvbigpKSB7CisgICAgICAgIG91dC5wcmludCgiSW50ZXJuYWxG
dW5jdGlvbjogIiwgSlNWYWx1ZShpbnRlcm5hbEZ1bmN0aW9uKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gdGhpcy0+ZnVuY3Rp
b24oKSkgeworICAgICAgICBvdXQucHJpbnQoIihGdW5jdGlvbjogIiwgSlNWYWx1ZShmdW5jdGlv
biksICI7IEV4ZWN1dGFibGU6ICIsICpleGVjdXRhYmxlKCksICIpIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgb3V0LnByaW50KCJFeGVjdXRhYmxlOiAiLCAqZXhlY3V0YWJs
ZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBDYWxsVmFyaWFudF9oCisjZGVmaW5lIENhbGxWYXJpYW50X2gKKworI2luY2x1
ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCisvLyBUaGUgQ2FsbFZhcmlhbnQgY2xhc3MgaXMg
bWVhbnQgdG8gZW5jYXBzdWxhdGUgYSBjYWxsZWUgaW4gYSB3YXkgdGhhdCBpcyB1c2VmdWwgZm9y
IGNhbGwgbGlua2luZworLy8gYW5kIGlubGluaW5nLiBCZWNhdXNlIEphdmFTY3JpcHQgaGFzIGNs
b3N1cmVzLCBhbmQgYmVjYXVzZSBKU0MgaW1wbGVtZW50cyB0aGUgbm90aW9uIG9mIGludGVybmFs
CisvLyBub24tZnVuY3Rpb24gb2JqZWN0cyB0aGF0IG5ldmVydGhlbGVzcyBwcm92aWRlIGNhbGwg
dHJhcHMsIHRoZSBjYWxsIG1hY2hpbmVyeSB3YW50cyB0byBzZWUgYQorLy8gY2FsbGVlIGluIG9u
ZSBvZiB0aGUgZm9sbG93aW5nIGZvdXIgZm9ybXM6CisvLworLy8gSlNGdW5jdGlvbiBjYWxsZWU6
IFRoaXMgbWVhbnMgdGhhdCB3ZSBleHBlY3QgdGhlIGNhbGxzaXRlIHRvIGFsd2F5cyBjYWxsIGEg
cGFydGljdWxhciBmdW5jdGlvbgorLy8gICAgIGluc3RhbmNlLCB0aGF0IGlzIGFzc29jaWF0ZWQg
d2l0aCBhIHBhcnRpY3VsYXIgYWN0aXZhdGlvbi4gVGhpcyBwaW5wb2ludHMgbm90IGp1c3QgdGhl
IGNvZGUKKy8vICAgICB0aGF0IHdpbGwgYmUgY2FsbGVkIChpLmUuIHRoZSBleGVjdXRhYmxlKSBi
dXQgYWxzbyB0aGUgc2NvcGUgd2l0aGluIHdoaWNoIHRoZSBjb2RlIHJ1bnMuCisvLworLy8gRXhl
Y3V0YWJsZSBjYWxsZWU6IFRoaXMgY29ycmVzcG9uZHMgdG8gYSBjYWxsIHRvIGEgY2xvc3VyZS4g
SW4gdGhpcyBjYXNlLCB3ZSBrbm93IHRoYXQgdGhlCisvLyAgICAgY2FsbHNpdGUgd2lsbCBjYWxs
IGEgSlNGdW5jdGlvbiwgYnV0IHdlIGRvIG5vdCBrbm93IHdoaWNoIHBhcnRpY3VsYXIgSlNGdW5j
dGlvbi4gV2UgZG8ga25vdworLy8gICAgIHdoYXQgY29kZSB3aWxsIGJlIGNhbGxlZCAtIGkuZS4g
d2Uga25vdyB0aGUgZXhlY3V0YWJsZS4KKy8vCisvLyBJbnRlcm5hbEZ1bmN0aW9uIGNhbGxlZTog
SlNDIHN1cHBvcnRzIGEgc3BlY2lhbCBraW5kIG9mIG5hdGl2ZSBmdW5jdGlvbnMgdGhhdCBzdXBw
b3J0IGJpemFycmUKKy8vICAgICBzZW1hbnRpY3MuIFRoZXNlIGFyZSBhbHdheXMgc2luZ2xldG9u
cy4gSWYgd2Uga25vdyB0aGF0IHRoZSBjYWxsZWUgaXMgYW4gSW50ZXJuYWxGdW5jdGlvbgorLy8g
ICAgIHRoZW4gd2Uga25vdyBib3RoIHRoZSBjb2RlIHRoYXQgd2lsbCBiZSBjYWxsZWQgYW5kIHRo
ZSBzY29wZTsgaW4gZmFjdCB0aGUgInNjb3BlIiBpcyByZWFsbHkKKy8vICAgICBqdXN0IHRoZSBJ
bnRlcm5hbEZ1bmN0aW9uIGl0c2VsZi4KKy8vCisvLyBTb21ldGhpbmcgZWxzZTogSXQncyBwb3Nz
aWJsZSBjYWxsIGFsbCBtYW5uZXIgb2YgcnViYmlzaCBpbiBKYXZhU2NyaXB0LiBUaGlzIGltcGxp
Y2l0bHkgc3VwcG9ydHMKKy8vICAgICBiaXphcnJlIG9iamVjdCBjYWxsZWVzLCBidXQgaXQgY2Fu
J3QgcmVhbGx5IHRlbGwgeW91IGFueXRoaW5nIGludGVyZXN0aW5nIGFib3V0IHRoZW0gb3RoZXIK
Ky8vICAgICB0aGFuIHRoZSBmYWN0IHRoYXQgdGhleSBkb24ndCBmYWxsIGludG8gYW55IG9mIHRo
ZSBhYm92ZSBjYXRlZ29yaWVzLgorLy8KKy8vIFRoaXMgY2xhc3Mgc2VydmVzIGFzIGEga2luZCBv
ZiB1bmlvbiBvdmVyIHRoZXNlIGZvdXIgdGhpbmdzLiBJdCBkb2VzIHNvIGJ5IGp1c3QgaG9sZGlu
ZyBhCisvLyBKU0NlbGwqLiBXZSBkZXRlcm1pbmUgd2hpY2ggb2YgdGhlIG1vZGVzIGl0cyBpbiBi
eSBkb2luZyB0eXBlIGNoZWNrcyBvbiB0aGUgY2VsbC4gTm90ZSB0aGF0IHRoZXJlCisvLyBpcyBu
byBsaWZlY3ljbGUgbWFuYWdlbWVudCBmb3IgdGhlIGNlbGwgYmVjYXVzZSB0aGlzIGNsYXNzIGlz
IGFsd2F5cyB1c2VkIGluIGNvbnRleHRzIHdoZXJlIHdlCisvLyBlaXRoZXIgZG8gY3VzdG9tIHdl
YWsgcmVmZXJlbmNlIGxvZ2ljIG92ZXIgaW5zdGFuY2VzIG9mIHRoaXMgY2xhc3MgKHNlZSBDYWxs
RWRnZVByb2ZpbGUpLCBvciB3ZQorLy8gYXJlIGluc2lkZSB0aGUgY29tcGlsZXIgYW5kIHdlIGFz
c3VtZSB0aGF0IHRoZSBjb21waWxlciBydW5zIGluIGJldHdlZW4gY29sbGVjdGlvbnMgYW5kIHNv
IGNhbgorLy8gdG91Y2ggdGhlIGhlYXAgd2l0aG91dCBub3RpZnlpbmcgYW55b25lLgorCitjbGFz
cyBDYWxsVmFyaWFudCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgQ2FsbFZhcmlhbnQoSlNDZWxs
KiBjYWxsZWUgPSBudWxscHRyKQorICAgICAgICA6IG1fY2FsbGVlKGNhbGxlZSkKKyAgICB7Cisg
ICAgfQorICAgIAorICAgIENhbGxWYXJpYW50KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlw
ZSkKKyAgICAgICAgOiBtX2NhbGxlZShkZWxldGVkVG9rZW4oKSkKKyAgICB7CisgICAgfQorICAg
IAorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fY2FsbGVlOyB9CisgICAg
CisgICAgLy8gSWYgdGhpcyB2YXJpYW50IHJlZmVycyB0byBhIGZ1bmN0aW9uLCBjaGFuZ2UgaXQg
dG8gcmVmZXIgdG8gaXRzIGV4ZWN1dGFibGUuCisgICAgQUxXQVlTX0lOTElORSBDYWxsVmFyaWFu
dCBkZXNwZWNpZmllZENsb3N1cmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fY2FsbGVl
LT50eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpCisgICAgICAgICAgICByZXR1cm4gQ2FsbFZhcmlh
bnQoanNDYXN0PEpTRnVuY3Rpb24qPihtX2NhbGxlZSktPmV4ZWN1dGFibGUoKSk7CisgICAgICAg
IHJldHVybiAqdGhpczsKKyAgICB9CisgICAgCisgICAgSlNDZWxsKiByYXdDYWxsZWVDZWxsKCkg
Y29uc3QgeyByZXR1cm4gbV9jYWxsZWU7IH0KKyAgICAKKyAgICBJbnRlcm5hbEZ1bmN0aW9uKiBp
bnRlcm5hbEZ1bmN0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBqc0R5bmFtaWND
YXN0PEludGVybmFsRnVuY3Rpb24qPihtX2NhbGxlZSk7CisgICAgfQorICAgIAorICAgIEpTRnVu
Y3Rpb24qIGZ1bmN0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBqc0R5bmFtaWND
YXN0PEpTRnVuY3Rpb24qPihtX2NhbGxlZSk7CisgICAgfQorICAgIAorICAgIGJvb2wgaXNDbG9z
dXJlQ2FsbCgpIGNvbnN0IHsgcmV0dXJuICEhanNEeW5hbWljQ2FzdDxFeGVjdXRhYmxlQmFzZSo+
KG1fY2FsbGVlKTsgfQorICAgIAorICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKCkgY29u
c3QKKyAgICB7CisgICAgICAgIGlmIChKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IHRoaXMtPmZ1bmN0
aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24tPmV4ZWN1dGFibGUoKTsKKyAgICAg
ICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8RXhlY3V0YWJsZUJhc2UqPihtX2NhbGxlZSk7CisgICAg
fQorICAgIAorICAgIEpTQ2VsbCogbm9uRXhlY3V0YWJsZUNhbGxlZSgpIGNvbnN0CisgICAgewor
ICAgICAgICBSRUxFQVNFX0FTU0VSVCghaXNDbG9zdXJlQ2FsbCgpKTsKKyAgICAgICAgcmV0dXJu
IG1fY2FsbGVlOworICAgIH0KKyAgICAKKyAgICBJbnRyaW5zaWMgaW50cmluc2ljRm9yKENvZGVT
cGVjaWFsaXphdGlvbktpbmQga2luZCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChFeGVjdXRh
YmxlQmFzZSogZXhlY3V0YWJsZSA9IHRoaXMtPmV4ZWN1dGFibGUoKSkKKyAgICAgICAgICAgIHJl
dHVybiBleGVjdXRhYmxlLT5pbnRyaW5zaWNGb3Ioa2luZCk7CisgICAgICAgIHJldHVybiBOb0lu
dHJpbnNpYzsKKyAgICB9CisgICAgCisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4
ZWN1dGFibGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKEV4ZWN1dGFibGVCYXNlKiBleGVj
dXRhYmxlID0gdGhpcy0+ZXhlY3V0YWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIGpzRHluYW1p
Y0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29u
c3Q7CisgICAgCisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV9jYWxsZWUgPT0gZGVsZXRlZFRva2VuKCk7CisgICAgfQorICAg
IAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDYWxsVmFyaWFudCYgb3RoZXIpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV9jYWxsZWUgPT0gb3RoZXIubV9jYWxsZWU7CisgICAgfQor
ICAgIAorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDYWxsVmFyaWFudCYgb3RoZXIpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorICAgIAor
ICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2NhbGxlZSA8IG90aGVyLm1fY2FsbGVlOworICAgIH0KKyAgICAK
KyAgICBib29sIG9wZXJhdG9yPihjb25zdCBDYWxsVmFyaWFudCYgb3RoZXIpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gb3RoZXIgPCAqdGhpczsKKyAgICB9CisgICAgCisgICAgYm9vbCBv
cGVyYXRvcjw9KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiAhKCp0aGlzIDwgb3RoZXIpOworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9y
Pj0oY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG90aGVyIDw9ICp0aGlzOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBXVEY6OlB0ckhhc2g8SlNDZWxsKj46Omhhc2gobV9jYWxs
ZWUpOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgc3RhdGljIEpTQ2VsbCogZGVsZXRlZFRv
a2VuKCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PEpTQ2VsbCo+KHN0YXRpY19jYXN0PHVpbnRwdHJf
dD4oMSkpOyB9CisgICAgCisgICAgSlNDZWxsKiBtX2NhbGxlZTsKK307CisKK3N0cnVjdCBDYWxs
VmFyaWFudEhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IENhbGxWYXJpYW50
JiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25z
dCBDYWxsVmFyaWFudCYgYSwgY29uc3QgQ2FsbFZhcmlhbnQmIGIpIHsgcmV0dXJuIGEgPT0gYjsg
fQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0g
dHJ1ZTsKK307CisKK3R5cGVkZWYgVmVjdG9yPENhbGxWYXJpYW50LCAxPiBDYWxsVmFyaWFudExp
c3Q7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVs
dEhhc2g8SlNDOjpDYWxsVmFyaWFudD4geworICAgIHR5cGVkZWYgSlNDOjpDYWxsVmFyaWFudEhh
c2ggSGFzaDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRzOwor
dGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6OkNhbGxWYXJpYW50PiA6IFNpbXBsZUNs
YXNzSGFzaFRyYWl0czxKU0M6OkNhbGxWYXJpYW50PiB7IH07CisKK30gLy8gbmFtZXNwYWNlIFdU
RgorCisjZW5kaWYgLy8gQ2FsbFZhcmlhbnRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmgJKHJldmlzaW9uIDE3MjkyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1
NCw2ICsxNTQsMTcgQEAgc3RydWN0IElubGluZUNhbGxGcmFtZSB7CiAgICAgICAgIHJldHVybiBD
b2RlRm9yQ2FsbDsKICAgICB9CiAgICAgCisgICAgc3RhdGljIGJvb2wgaXNOb3JtYWxDYWxsKEtp
bmQga2luZCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBjYXNlIENh
bGw6CisgICAgICAgIGNhc2UgQ29uc3RydWN0OgorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICB9CisgICAgCiAgICAgVmVjdG9yPFZhbHVlUmVjb3Zlcnk+IGFyZ3VtZW50czsgLy8gSW5jbHVk
ZXMgJ3RoaXMnLgogICAgIFdyaXRlQmFycmllcjxTY3JpcHRFeGVjdXRhYmxlPiBleGVjdXRhYmxl
OwogICAgIFZhbHVlUmVjb3ZlcnkgY2FsbGVlUmVjb3Zlcnk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5jcHAJKHJldmlzaW9uIDE3MjkyNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDggKzM4LDggQEAgY29uc3QgY2hhciogZXhpdEtpbmRUb1N0cmluZyhFeGl0S2luZCBr
aQogICAgICAgICByZXR1cm4gIlVuc2V0IjsKICAgICBjYXNlIEJhZFR5cGU6CiAgICAgICAgIHJl
dHVybiAiQmFkVHlwZSI7Ci0gICAgY2FzZSBCYWRGdW5jdGlvbjoKLSAgICAgICAgcmV0dXJuICJC
YWRGdW5jdGlvbiI7CisgICAgY2FzZSBCYWRDZWxsOgorICAgICAgICByZXR1cm4gIkJhZENlbGwi
OwogICAgIGNhc2UgQmFkRXhlY3V0YWJsZToKICAgICAgICAgcmV0dXJuICJCYWRFeGVjdXRhYmxl
IjsKICAgICBjYXNlIEJhZENhY2hlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0V4aXRLaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0V4aXRLaW5kLmgJKHJldmlzaW9uIDE3MjkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGl0S2luZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogZW51bSBFeGl0S2luZCA6IHVpbnQ4X3QgewogICAgIEV4aXRLaW5kVW5z
ZXQsCiAgICAgQmFkVHlwZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2UgYSB0eXBlIHByZWRpY3Rpb24g
d2FzIHdyb25nLgotICAgIEJhZEZ1bmN0aW9uLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSB3ZSBtYWRl
IGFuIGluY29ycmVjdCBhc3N1bXB0aW9uIGFib3V0IHdoYXQgZnVuY3Rpb24gd2Ugd291bGQgc2Vl
LgorICAgIEJhZENlbGwsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIG1hZGUgYW4gaW5jb3JyZWN0
IGFzc3VtcHRpb24gYWJvdXQgd2hhdCBjZWxsIHdlIHdvdWxkIHNlZS4gVXN1YWxseSB1c2VkIGZv
ciBmdW5jdGlvbiBjaGVja3MuCiAgICAgQmFkRXhlY3V0YWJsZSwgLy8gV2UgZXhpdGVkIGJlY2F1
c2Ugd2UgbWFkZSBhbiBpbmNvcnJlY3QgYXNzdW1wdGlvbiBhYm91dCB3aGF0IGV4ZWN1dGFibGUg
d2Ugd291bGQgc2VlLgogICAgIEJhZENhY2hlLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSBhbiBpbmxp
bmUgY2FjaGUgd2FzIHdyb25nLgogICAgIEJhZENvbnN0YW50Q2FjaGUsIC8vIFdlIGV4aXRlZCBi
ZWNhdXNlIGEgY2FjaGUgb24gYSB3ZWFrIGNvbnN0YW50ICh1c3VhbGx5IGEgcHJvdG90eXBlKSB3
YXMgd3JvbmcuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0
YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxNzI5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw3ICsx
ODcsOCBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTCiAgICAgICAg
ICAgICAgICAgICAgIEFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lKiBzdHViID0gc3RhdGljX2Nh
c3Q8QWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUqPigKICAgICAgICAgICAgICAgICAgICAgICAg
IGxpc3QtPmF0KGxpc3RJbmRleCkuc3R1YlJvdXRpbmUoKSk7CiAgICAgICAgICAgICAgICAgICAg
IGNhbGxMaW5rU3RhdHVzID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4oCi0gICAg
ICAgICAgICAgICAgICAgICAgICBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcihsb2NrZXIsICpz
dHViLT5tX2NhbGxMaW5rSW5mbywgY2FsbEV4aXRTaXRlRGF0YSkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbG9ja2VyLCBwcm9maWxlZEJsb2NrLCAqc3R1Yi0+bV9jYWxsTGlua0luZm8sIGNh
bGxFeGl0U2l0ZURhdGEpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIGNhc2UgR2V0QnlJZEFjY2Vzczo6Q3VzdG9tR2V0dGVy
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3Rh
dHVzLmNwcAkocmV2aXNpb24gMTcyOTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDcsNyArMjQ3LDcgQEAg
UHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yUwogICAgICAgICAgICAgICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbExpbmtTdGF0dXM+IGNhbGxMaW5rU3RhdHVzID0KICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtTdGF0dXM+KAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NrZXIsICpzdHViLT5tX2NhbGxMaW5r
SW5mbywgY2FsbEV4aXRTaXRlRGF0YSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssICpzdHViLT5tX2NhbGxMaW5rSW5mbywgY2FsbEV4aXRT
aXRlRGF0YSkpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgdmFy
aWFudCA9IFB1dEJ5SWRWYXJpYW50OjpzZXR0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3R1cmUsIGNvbXBsZXhHZXRTdGF0dXMub2Zmc2V0KCksIGNvbXBsZXhHZXRTdGF0dXMuY2hh
aW4oKSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE3MjkyNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMTQ1OSwxNCArMTQ1OSw2IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQz
Mik7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKLSAgICBjYXNlIENoZWNrRXhlY3V0YWJsZTog
ewotICAgICAgICAvLyBGSVhNRTogV2UgY291bGQgdHJhY2sgZXhlY3V0YWJsZXMgaW4gQWJzdHJh
Y3RWYWx1ZSwgd2hpY2ggd291bGQgYWxsb3cgdXMgdG8gZ2V0IHJpZCBvZiB0aGVzZSBjaGVja3MK
LSAgICAgICAgLy8gbW9yZSB0aG9yb3VnaGx5LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA2MjAwCi0gICAgICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBlbGltaW5hdGUg
dGhlc2UgZW50aXJlbHkgaWYgd2Uga25vdyB0aGUgZXhhY3QgdmFsdWUgdGhhdCBmbG93cyBpbnRv
IHRoaXMuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDYyMDEKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCiAgICAgY2FzZSBDaGVja1N0cnVjdHVy
ZTogewogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gcHJvcGFnYXRlIHRo
ZSBzdHJ1Y3R1cmUgc2V0cyBvZiBjb25zdGFudHMgKGkuZS4gcHJvdG90eXBlcykuCiAgICAgICAg
IEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CkBAIC0xNzI2
LDE2ICsxNzE4LDI5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkK
ICAgICAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBHZXRFeGVjdXRhYmxlOiB7CisgICAgICAgIEpTVmFs
dWUgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICBpZiAo
dmFsdWUpIHsKKyAgICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2Fz
dDxKU0Z1bmN0aW9uKj4odmFsdWUpOworICAgICAgICAgICAgaWYgKGZ1bmN0aW9uKSB7CisgICAg
ICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgKm1fZ3JhcGguZnJlZXplKGZ1bmN0aW9uLT5l
eGVjdXRhYmxlKCkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0NlbGxPdGhlcik7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KICAgICAKLSAgICBjYXNlIENoZWNrRnVuY3Rpb246IHsKKyAg
ICBjYXNlIENoZWNrQ2VsbDogewogICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkudmFsdWUoKTsKLSAgICAgICAgaWYgKHZhbHVlID09IG5vZGUtPmZ1bmN0aW9u
KCktPnZhbHVlKCkpIHsKKyAgICAgICAgaWYgKHZhbHVlID09IG5vZGUtPmNlbGxPcGVyYW5kKCkt
PnZhbHVlKCkpIHsKICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7
CiAgICAgICAgICAgICBBU1NFUlQodmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIGZpbHRlckJ5VmFsdWUobm9kZS0+Y2hpbGQxKCksICpub2Rl
LT5mdW5jdGlvbigpKTsKKyAgICAgICAgZmlsdGVyQnlWYWx1ZShub2RlLT5jaGlsZDEoKSwgKm5v
ZGUtPmNlbGxPcGVyYW5kKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAt
MTg1OSw4ICsxODY0LDYgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgICAgICAKICAgICBjYXNlIFZhcmlhYmxlV2F0Y2hwb2ludDoKICAgICBjYXNlIFZhcklu
amVjdGlvbldhdGNocG9pbnQ6Ci0gICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCiAgICAgY2Fz
ZSBQdXRHbG9iYWxWYXI6CiAgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICAgICAgYnJlYWs7CkBA
IC0xOTAwLDcgKzE5MDMsMTYgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeQogICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgIGJyZWFr
OwogCisgICAgY2FzZSBQcm9maWxlZENhbGw6CisgICAgY2FzZSBQcm9maWxlZENvbnN0cnVjdDoK
KyAgICAgICAgaWYgKGZvck5vZGUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSkubV92YWx1
ZSkKKyAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CisgICAgICAg
IGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CisgICAg
ICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBj
YXNlIEZvcmNlT1NSRXhpdDoKKyAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICAgICAgbV9zdGF0
ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIApAQCAtMTk1NSw3
ICsxOTY3LDggQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAg
IGNhc2UgTGFzdE5vZGVUeXBlOgogICAgIGNhc2UgQXJpdGhJTXVsOgogICAgIGNhc2UgRmlhdElu
dDUyOgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNhc2UgQm90
dG9tVmFsdWU6CisgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBub2RlLCAiVW5leHBlY3RlZCBu
b2RlIHR5cGUiKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9u
UGhhc2UuY3BwCShyZXZpc2lvbiAxNzI5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODks
NiArMzg5LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgLy8gdGhlbiAtMCBhbmQgMCBh
cmUgdHJlYXRlZCB0aGUgc2FtZS4KICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKS0+bWVy
Z2VGbGFncyhOb2RlQnl0ZWNvZGVVc2VzQXNOdW1iZXIgfCBOb2RlQnl0ZWNvZGVVc2VzQXNPdGhl
cik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFN3aXRjaENlbGw6
CisgICAgICAgICAgICAgICAgLy8gVGhlcmUgaXMgY3VycmVudGx5IG5vIHBvaW50IHRvIGJlaW5n
IGNsZXZlciBoZXJlIHNpbmNlIHRoaXMgaXMgdXNlZCBmb3Igc3dpdGNoaW5nCisgICAgICAgICAg
ICAgICAgLy8gb24gb2JqZWN0cy4KKyAgICAgICAgICAgICAgICBtZXJnZURlZmF1bHRGbGFncyhu
b2RlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jh
c2ljQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmFzaWNCbG9jay5jcHAJKHJldmlzaW9uIDE3MjkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQmFzaWNCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDkgQEAg
QmFzaWNCbG9jazo6QmFzaWNCbG9jaygKIHsKIH0KIAotQmFzaWNCbG9jazo6fkJhc2ljQmxvY2so
KSB7IH0KK0Jhc2ljQmxvY2s6On5CYXNpY0Jsb2NrKCkKK3sKK30KIAogdm9pZCBCYXNpY0Jsb2Nr
OjplbnN1cmVMb2NhbHModW5zaWduZWQgbmV3TnVtTG9jYWxzKQogewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHJldmlzaW9uIDE3MjkyNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC02Miw2ICs2Miw3IEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MK
ICAgICBOb2RlKiYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyByZXR1cm4gYXQoaSk7IH0KICAgICBO
b2RlKiBvcGVyYXRvcltdKHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBhdChpKTsgfQogICAgIE5v
ZGUqIGxhc3QoKSBjb25zdCB7IHJldHVybiBhdChzaXplKCkgLSAxKTsgfQorICAgIE5vZGUqIHRh
a2VMYXN0KCkgeyByZXR1cm4gbV9ub2Rlcy50YWtlTGFzdCgpOyB9CiAgICAgdm9pZCByZXNpemUo
c2l6ZV90IHNpemUpIHsgbV9ub2Rlcy5yZXNpemUoc2l6ZSk7IH0KICAgICB2b2lkIGdyb3coc2l6
ZV90IHNpemUpIHsgbV9ub2Rlcy5ncm93KHNpemUpOyB9CiAgICAgCkBAIC0xMDYsNiArMTA3LDEz
IEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICAKICAgICB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CiAgICAgCisgICAgdm9pZCBkaWRMaW5r
KCkKKyAgICB7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICBpc0xpbmtlZCA9IHRydWU7
CisjZW5kaWYKKyAgICB9CisgICAgCiAgICAgLy8gVGhpcyB2YWx1ZSBpcyB1c2VkIGludGVybmFs
bHkgZm9yIGJsb2NrIGxpbmtpbmcgYW5kIE9TUiBlbnRyeS4gSXQgaXMgbW9zdGx5IG1lYW5pbmds
ZXNzCiAgICAgLy8gZm9yIG90aGVyIHB1cnBvc2VzIGR1ZSB0byBpbmxpbmluZy4KICAgICB1bnNp
Z25lZCBieXRlY29kZUJlZ2luOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDE3MjkyNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MCw2ICs1MCw4IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAorc3RhdGlj
IGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworCiBjbGFzcyBDb25zdGFudEJ1ZmZlcktleSB7
CiBwdWJsaWM6CiAgICAgQ29uc3RhbnRCdWZmZXJLZXkoKQpAQCAtMTc4LDE0ICsxODAsMjAgQEAg
cHJpdmF0ZToKICAgICAgICAgTm9kZSogY2FsbFRhcmdldCwgaW50IGFyZ0NvdW50LCBpbnQgcmVn
aXN0ZXJPZmZzZXQsIENhbGxMaW5rU3RhdHVzKTsKICAgICB2b2lkIGhhbmRsZUNhbGwoaW50IHJl
c3VsdCwgTm9kZVR5cGUgb3AsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIHVuc2lnbmVkIGluc3Ry
dWN0aW9uU2l6ZSwgaW50IGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQp
OwogICAgIHZvaWQgaGFuZGxlQ2FsbChJbnN0cnVjdGlvbiogcGMsIE5vZGVUeXBlIG9wLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kKTsKLSAgICB2b2lkIGVtaXRGdW5jdGlvbkNoZWNrcyhjb25zdCBD
YWxsTGlua1N0YXR1cyYsIE5vZGUqIGNhbGxUYXJnZXQsIGludCByZWdpc3Rlck9mZnNldCwgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgdm9pZCBlbWl0RnVuY3Rpb25DaGVja3MoQ2FsbFZh
cmlhbnQsIE5vZGUqIGNhbGxUYXJnZXQsIGludCByZWdpc3Rlck9mZnNldCwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCk7CisgICAgdm9pZCB1bmRvRnVuY3Rpb25DaGVja3MoQ2FsbFZhcmlhbnQpOwog
ICAgIHZvaWQgZW1pdEFyZ3VtZW50UGhhbnRvbXMoaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOworICAgIHVu
c2lnbmVkIGlubGluaW5nQ29zdChDYWxsVmFyaWFudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsgLy8gUmV0dXJuIFVJTlRfTUFYIGlmIGl0
J3Mgbm90IGFuIGlubGluaW5nIGNhbmRpZGF0ZS4gQnkgY29udmVudGlvbiwgaW50cmluc2ljcyBo
YXZlIGEgY29zdCBvZiAxLgogICAgIC8vIEhhbmRsZSBpbmxpbmluZy4gUmV0dXJuIHRydWUgaWYg
aXQgc3VjY2VlZGVkLCBmYWxzZSBpZiB3ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4KLSAgICBib29s
IGhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwg
Y29uc3QgQ2FsbExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpL
aW5kKTsKKyAgICBib29sIGhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQg
cmVzdWx0T3BlcmFuZCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQs
IGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgTm9k
ZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRp
Y3Rpb24pOworICAgIGVudW0gQ2FsbGVyTGlua2FiaWxpdHkgeyBDYWxsZXJEb2VzTm9ybWFsTGlu
a2luZywgQ2FsbGVyTGlua3NNYW51YWxseSB9OworICAgIGJvb2wgYXR0ZW1wdFRvSW5saW5lQ2Fs
bChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENhbGxWYXJpYW50LCBp
bnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWdu
ZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBDYWxsZXJMaW5rYWJpbGl0eSwg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSk7Cisg
ICAgdm9pZCBpbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFu
ZCwgQ2FsbFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIENh
bGxlckxpbmthYmlsaXR5KTsKKyAgICB2b2lkIGNhbmNlbExpbmtpbmdGb3JCbG9jayhJbmxpbmVT
dGFja0VudHJ5KiwgQmFzaWNCbG9jayopOyAvLyBPbmx5IHdvcmtzIHdoZW4gdGhlIGdpdmVuIGJs
b2NrIGlzIHRoZSBsYXN0IG9uZSB0byBoYXZlIGJlZW4gYWRkZWQgZm9yIHRoYXQgaW5saW5lIHN0
YWNrIGVudHJ5LgogICAgIC8vIEhhbmRsZSBpbnRyaW5zaWMgZnVuY3Rpb25zLiBSZXR1cm4gdHJ1
ZSBpZiBpdCBzdWNjZWVkZWQsIGZhbHNlIGlmIHdlIG5lZWQgdG8gcGxhbnQgYSBjYWxsLgogICAg
IGJvb2wgaGFuZGxlSW50cmluc2ljKGludCByZXN1bHRPcGVyYW5kLCBJbnRyaW5zaWMsIGludCBy
ZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0aW9uKTsKICAgICBib29sIGhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3Rvcihp
bnQgcmVzdWx0T3BlcmFuZCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwg
aW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBlZEFycmF5VHlwZSk7Ci0gICAgYm9v
bCBoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oaW50IHJlc3VsdE9wZXJhbmQsIEludGVy
bmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCk7CisgICAgYm9vbCBoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oaW50IHJlc3VsdE9w
ZXJhbmQsIEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7CiAgICAgTm9kZSog
aGFuZGxlUHV0QnlPZmZzZXQoTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllciwgUHJvcGVy
dHlPZmZzZXQsIE5vZGUqIHZhbHVlKTsKICAgICBOb2RlKiBoYW5kbGVHZXRCeU9mZnNldChTcGVj
dWxhdGVkVHlwZSwgTm9kZSogYmFzZSwgY29uc3QgU3RydWN0dXJlU2V0JiwgdW5zaWduZWQgaWRl
bnRpZmllck51bWJlciwgUHJvcGVydHlPZmZzZXQsIE5vZGVUeXBlIG9wID0gR2V0QnlPZmZzZXQp
OwogICAgIHZvaWQgaGFuZGxlR2V0QnlJZCgKQEAgLTIwMCw4ICsyMDgsOSBAQCBwcml2YXRlOgog
CiAgICAgTm9kZSogZ2V0U2NvcGUodW5zaWduZWQgc2tpcENvdW50KTsKICAgICAKLSAgICAvLyBQ
cmVwYXJlIHRvIHBhcnNlIGEgYmxvY2suCiAgICAgdm9pZCBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7
CisgICAgdm9pZCBjbGVhckNhY2hlcygpOworCiAgICAgLy8gUGFyc2UgYSBzaW5nbGUgYmFzaWMg
YmxvY2sgb2YgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb25zLgogICAgIGJvb2wgcGFyc2VCbG9jayh1bnNp
Z25lZCBsaW1pdCk7CiAgICAgLy8gTGluayBibG9jayBzdWNjZXNzb3JzLgpAQCAtMjk2LDYgKzMw
NSwxMyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgcmV0dXJuIGRlbGF5ZWQuZXhlY3V0
ZSh0aGlzLCBzZXRNb2RlKTsKICAgICB9CisgICAgCisgICAgdm9pZCBwcm9jZXNzU2V0TG9jYWxR
dWV1ZSgpCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zZXRMb2Nh
bFF1ZXVlLnNpemUoKTsgKytpKQorICAgICAgICAgICAgbV9zZXRMb2NhbFF1ZXVlW2ldLmV4ZWN1
dGUodGhpcyk7CisgICAgICAgIG1fc2V0TG9jYWxRdWV1ZS5yZXNpemUoMCk7CisgICAgfQogCiAg
ICAgTm9kZSogc2V0KFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kLCBOb2RlKiB2YWx1ZSwgU2V0TW9k
ZSBzZXRNb2RlID0gTm9ybWFsU2V0KQogICAgIHsKQEAgLTYzNyw2ICs2NTMsMTMgQEAgcHJpdmF0
ZToKICAgICAgICAgCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQorICAgIAorICAgIHZv
aWQgcmVtb3ZlTGFzdE5vZGVGcm9tR3JhcGgoTm9kZVR5cGUgZXhwZWN0ZWROb2RlVHlwZSkKKyAg
ICB7CisgICAgICAgIE5vZGUqIG5vZGUgPSBtX2N1cnJlbnRCbG9jay0+dGFrZUxhc3QoKTsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+b3AoKSA9PSBleHBlY3RlZE5vZGVUeXBlKTsKKyAg
ICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOworICAgIH0KIAogICAgIHZvaWQg
YWRkVmFyQXJnQ2hpbGQoTm9kZSogY2hpbGQpCiAgICAgewpAQCAtNjQ1LDcgKzY2OCw3IEBAIHBy
aXZhdGU6CiAgICAgfQogICAgIAogICAgIE5vZGUqIGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3Vs
dCgKLSAgICAgICAgTm9kZVR5cGUgb3AsIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQg
cmVnaXN0ZXJPZmZzZXQsCisgICAgICAgIE5vZGVUeXBlIG9wLCBPcEluZm8gb3BJbmZvLCBOb2Rl
KiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAogICAgICAgICBTcGVj
dWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogICAgIHsKICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoY2Fs
bGVlKTsKQEAgLTY1MywxOSArNjc2LDE5IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChwYXJhbWV0
ZXJTbG90cyA+IG1fcGFyYW1ldGVyU2xvdHMpCiAgICAgICAgICAgICBtX3BhcmFtZXRlclNsb3Rz
ID0gcGFyYW1ldGVyU2xvdHM7CiAKLSAgICAgICAgaW50IGR1bW15VGhpc0FyZ3VtZW50ID0gb3Ag
PT0gQ2FsbCB8fCBvcCA9PSBOYXRpdmVDYWxsID8gMCA6IDE7CisgICAgICAgIGludCBkdW1teVRo
aXNBcmd1bWVudCA9IG9wID09IENhbGwgfHwgb3AgPT0gTmF0aXZlQ2FsbCB8fCBvcCA9PSBQcm9m
aWxlZENhbGwgPyAwIDogMTsKICAgICAgICAgZm9yIChpbnQgaSA9IDAgKyBkdW1teVRoaXNBcmd1
bWVudDsgaSA8IGFyZ0NvdW50OyArK2kpCiAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQo
dmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSwgcmVnaXN0ZXJPZmZzZXQpKSk7CiAKLSAgICAg
ICAgcmV0dXJuIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBvcCwgT3BJbmZvKDApLCBPcEluZm8o
cHJlZGljdGlvbikpOworICAgICAgICByZXR1cm4gYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIG9w
LCBvcEluZm8sIE9wSW5mbyhwcmVkaWN0aW9uKSk7CiAgICAgfQogICAgIAogICAgIE5vZGUqIGFk
ZENhbGwoCi0gICAgICAgIGludCByZXN1bHQsIE5vZGVUeXBlIG9wLCBOb2RlKiBjYWxsZWUsIGlu
dCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAorICAgICAgICBpbnQgcmVzdWx0LCBOb2Rl
VHlwZSBvcCwgT3BJbmZvIG9wSW5mbywgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCBy
ZWdpc3Rlck9mZnNldCwKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKICAgICB7
CiAgICAgICAgIE5vZGUqIGNhbGwgPSBhZGRDYWxsV2l0aG91dFNldHRpbmdSZXN1bHQoCi0gICAg
ICAgICAgICBvcCwgY2FsbGVlLCBhcmdDb3VudCwgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24p
OworICAgICAgICAgICAgb3AsIG9wSW5mbywgY2FsbGVlLCBhcmdDb3VudCwgcmVnaXN0ZXJPZmZz
ZXQsIHByZWRpY3Rpb24pOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0UmVnKHJlc3Vs
dCk7CiAgICAgICAgIGlmIChyZXN1bHRSZWcuaXNWYWxpZCgpKQogICAgICAgICAgICAgc2V0KFZp
cnR1YWxSZWdpc3RlcihyZXN1bHQpLCBjYWxsKTsKQEAgLTg3MSw4ICs4OTQsNyBAQCBwcml2YXRl
OgogICAgICAgICBWZWN0b3I8VW5saW5rZWRCbG9jaz4gbV91bmxpbmtlZEJsb2NrczsKICAgICAg
ICAgCiAgICAgICAgIC8vIFBvdGVudGlhbCBibG9jayBsaW5raW5nIHRhcmdldHMuIE11c3QgYmUg
c29ydGVkIGJ5IGJ5dGVjb2RlQmVnaW4sIGFuZAotICAgICAgICAvLyBjYW5ub3QgaGF2ZSB0d28g
YmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRlY29kZUJlZ2luLiBGb3IgdGhpcyB2ZXJ5Ci0g
ICAgICAgIC8vIHJlYXNvbiwgdGhpcyBpcyBub3QgZXF1aXZhbGVudCB0byAKKyAgICAgICAgLy8g
Y2Fubm90IGhhdmUgdHdvIGJsb2NrcyB0aGF0IGhhdmUgdGhlIHNhbWUgYnl0ZWNvZGVCZWdpbi4K
ICAgICAgICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBtX2Jsb2NrTGlua2luZ1RhcmdldHM7CiAgICAg
ICAgIAogICAgICAgICAvLyBJZiB0aGUgY2FsbHNpdGUncyBiYXNpYyBibG9jayB3YXMgc3BsaXQg
aW50byB0d28sIHRoZW4gdGhpcyB3aWxsIGJlCkBAIC0xMDE5LDc3ICsxMDQxLDYzIEBAIHZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoCiAgICAgQ2FsbExpbmtTdGF0dXMgY2FsbExpbmtT
dGF0dXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiB7CiAgICAgQVNTRVJUKHJlZ2lzdGVy
T2Zmc2V0IDw9IDApOwotICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25L
aW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXphdGlvbktpbmRGb3Ioa2luZCk7CiAgICAg
CiAgICAgaWYgKGNhbGxUYXJnZXQtPmhhc0NvbnN0YW50KCkpCiAgICAgICAgIGNhbGxMaW5rU3Rh
dHVzID0gQ2FsbExpbmtTdGF0dXMoY2FsbFRhcmdldC0+YXNKU1ZhbHVlKCkpLnNldElzUHJvdmVk
KHRydWUpOwogICAgIAorICAgIGlmICgoIWNhbGxMaW5rU3RhdHVzLmNhbk9wdGltaXplKCkgfHwg
Y2FsbExpbmtTdGF0dXMuc2l6ZSgpICE9IDEpCisgICAgICAgICYmICFpc0ZUTChtX2dyYXBoLm1f
cGxhbi5tb2RlKSAmJiBPcHRpb25zOjp1c2VGVExKSVQoKQorICAgICAgICAmJiBJbmxpbmVDYWxs
RnJhbWU6OmlzTm9ybWFsQ2FsbChraW5kKQorICAgICAgICAmJiBDYWxsRWRnZUxvZzo6aXNFbmFi
bGVkKCkKKyAgICAgICAgJiYgT3B0aW9uczo6ZGZnRG9lc0NhbGxFZGdlUHJvZmlsaW5nKCkpIHsK
KyAgICAgICAgQVNTRVJUKG9wID09IENhbGwgfHwgb3AgPT0gQ29uc3RydWN0KTsKKyAgICAgICAg
aWYgKG9wID09IENhbGwpCisgICAgICAgICAgICBvcCA9IFByb2ZpbGVkQ2FsbDsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgb3AgPSBQcm9maWxlZENvbnN0cnVjdDsKKyAgICB9CisgICAgCiAg
ICAgaWYgKCFjYWxsTGlua1N0YXR1cy5jYW5PcHRpbWl6ZSgpKSB7CiAgICAgICAgIC8vIE9kZGx5
LCB0aGlzIGNvbmZsYXRlcyBjYWxscyB0aGF0IGhhdmVuJ3QgZXhlY3V0ZWQgd2l0aCBjYWxscyB0
aGF0IGJlaGF2ZWQgc3VmZmljaWVudGx5IHBvbHltb3JwaGljYWxseQogICAgICAgICAvLyB0aGF0
IHdlIGNhbm5vdCBvcHRpbWl6ZSB0aGVtLgogICAgICAgICAKLSAgICAgICAgYWRkQ2FsbChyZXN1
bHQsIG9wLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJP
ZmZzZXQsIHByZWRpY3Rpb24pOworICAgICAgICBhZGRDYWxsKHJlc3VsdCwgb3AsIE9wSW5mbygp
LCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQs
IHByZWRpY3Rpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIHVuc2lnbmVk
IG5leHRPZmZzZXQgPSBtX2N1cnJlbnRJbmRleCArIGluc3RydWN0aW9uU2l6ZTsKLQotICAgIGlm
IChJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxMaW5rU3RhdHVzLmludGVybmFsRnVu
Y3Rpb24oKSkgewotICAgICAgICBpZiAoaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKHJl
c3VsdCwgZnVuY3Rpb24sIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgcHJlZGljdGlvbiwgc3BlY2lhbGl6YXRpb25LaW5kKSkgewotICAgICAgICAgICAgLy8gVGhp
cyBwaGFudG9taW5nIGhhcyB0byBiZSAqYWZ0ZXIqIHRoZSBjb2RlIGZvciB0aGUgaW50cmluc2lj
LCB0byBzaWduaWZ5IHRoYXQKLSAgICAgICAgICAgIC8vIHRoZSBpbnB1dHMgbXVzdCBiZSBrZXB0
IGFsaXZlIHdoYXRldmVyIGV4aXRzIHRoZSBpbnRyaW5zaWMgbWF5IGRvLgotICAgICAgICAgICAg
YWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0KTsKLSAgICAgICAgICAgIGVtaXRBcmd1bWVu
dFBoYW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3Bl
Y2lhbGl6YXRpb25LaW5kKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICAKLSAgICAgICAgLy8gQ2FuIG9ubHkgaGFuZGxlIHRoaXMgdXNpbmcgdGhlIGdlbmVyaWMgY2Fs
bCBoYW5kbGVyLgotICAgICAgICBhZGRDYWxsKHJlc3VsdCwgb3AsIGNhbGxUYXJnZXQsIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgICAgIAotICAgIEludHJpbnNpYyBpbnRyaW5zaWMgPSBj
YWxsTGlua1N0YXR1cy5pbnRyaW5zaWNGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKLQotICAgIEpT
RnVuY3Rpb24qIGtub3duRnVuY3Rpb24gPSBudWxscHRyOwotICAgIGlmIChpbnRyaW5zaWMgIT0g
Tm9JbnRyaW5zaWMpIHsKLSAgICAgICAgZW1pdEZ1bmN0aW9uQ2hlY2tzKGNhbGxMaW5rU3RhdHVz
LCBjYWxsVGFyZ2V0LCByZWdpc3Rlck9mZnNldCwgc3BlY2lhbGl6YXRpb25LaW5kKTsKLSAgICAg
ICAgICAgIAotICAgICAgICBpZiAoaGFuZGxlSW50cmluc2ljKHJlc3VsdCwgaW50cmluc2ljLCBy
ZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHByZWRpY3Rpb24pKSB7
Ci0gICAgICAgICAgICAvLyBUaGlzIHBoYW50b21pbmcgaGFzIHRvIGJlICphZnRlciogdGhlIGNv
ZGUgZm9yIHRoZSBpbnRyaW5zaWMsIHRvIHNpZ25pZnkgdGhhdAotICAgICAgICAgICAgLy8gdGhl
IGlucHV0cyBtdXN0IGJlIGtlcHQgYWxpdmUgd2hhdGV2ZXIgZXhpdHMgdGhlIGludHJpbnNpYyBt
YXkgZG8uCi0gICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXQpOwotICAg
ICAgICAgICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQpOwotICAgICAgICAgICAgaWYgKG1f
Z3JhcGguY29tcGlsYXRpb24oKSkKLSAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9u
KCktPm5vdGljZUlubGluZWRDYWxsKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICB9IGVsc2UgaWYgKGhhbmRsZUlubGluaW5nKGNhbGxUYXJnZXQsIHJlc3VsdCwgY2FsbExp
bmtTdGF0dXMsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbmV4
dE9mZnNldCwga2luZCkpIHsKKyAgICAKKyAgICBPcEluZm8gY2FsbE9wSW5mbzsKKyAgICAKKyAg
ICBpZiAoaGFuZGxlSW5saW5pbmcoY2FsbFRhcmdldCwgcmVzdWx0LCBjYWxsTGlua1N0YXR1cywg
cmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zmc2V0LCBv
cCwga2luZCwgcHJlZGljdGlvbikpIHsKICAgICAgICAgaWYgKG1fZ3JhcGguY29tcGlsYXRpb24o
KSkKICAgICAgICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZENhbGwo
KTsKICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICNpZiBFTkFCTEUoRlRMX05BVElWRV9D
QUxMX0lOTElOSU5HKQotICAgIH0gZWxzZSBpZiAoaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkg
JiYgT3B0aW9uczo6b3B0aW1pemVOYXRpdmVDYWxscygpKSB7Ci0gICAgICAgIEpTRnVuY3Rpb24q
IGZ1bmN0aW9uID0gY2FsbExpbmtTdGF0dXMuZnVuY3Rpb24oKTsKKyAgICBpZiAoaXNGVEwobV9n
cmFwaC5tX3BsYW4ubW9kZSkgJiYgT3B0aW9uczo6b3B0aW1pemVOYXRpdmVDYWxscygpICYmIGNh
bGxMaW5rU3RhdHVzLnNpemUoKSA9PSAxICYmICFjYWxsTGlua1N0YXR1cy5jb3VsZFRha2VTbG93
UGF0aCgpKSB7CisgICAgICAgIENhbGxWYXJpYW50IGNhbGxlZSA9IGNhbGxMaW5rU3RhdHVzWzBd
LmNhbGxlZSgpOworICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS5mdW5jdGlv
bigpOworICAgICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCA9
IElubGluZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOwogICAgICAgICBp
ZiAoZnVuY3Rpb24gJiYgZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkpIHsKLSAgICAgICAgICAg
IGVtaXRGdW5jdGlvbkNoZWNrcyhjYWxsTGlua1N0YXR1cywgY2FsbFRhcmdldCwgcmVnaXN0ZXJP
ZmZzZXQsIHNwZWNpYWxpemF0aW9uS2luZCk7Ci0gICAgICAgICAgICBrbm93bkZ1bmN0aW9uID0g
ZnVuY3Rpb247CisgICAgICAgICAgICBlbWl0RnVuY3Rpb25DaGVja3MoY2FsbGVlLCBjYWxsVGFy
Z2V0LCByZWdpc3Rlck9mZnNldCwgc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICAgICAgICAgIGNh
bGxPcEluZm8gPSBPcEluZm8obV9ncmFwaC5mcmVlemUoZnVuY3Rpb24pKTsKIAotICAgICAgICAg
ICAgaWYgKG9wID09IENhbGwpIAorICAgICAgICAgICAgaWYgKG9wID09IENhbGwgfHwgb3AgPT0g
UHJvZmlsZWRDYWxsKQogICAgICAgICAgICAgICAgIG9wID0gTmF0aXZlQ2FsbDsKICAgICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgICAgIEFTU0VSVChvcCA9PSBDb25zdHJ1Y3QpOworICAg
ICAgICAgICAgICAgIEFTU0VSVChvcCA9PSBDb25zdHJ1Y3QgfHwgb3AgPT0gUHJvZmlsZWRDb25z
dHJ1Y3QpOwogICAgICAgICAgICAgICAgIG9wID0gTmF0aXZlQ29uc3RydWN0OwogICAgICAgICAg
ICAgfQogICAgICAgICB9Ci0jZW5kaWYKICAgICB9Ci0gICAgTm9kZSogY2FsbCA9IGFkZENhbGwo
cmVzdWx0LCBvcCwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lz
dGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKLQotICAgIGlmIChrbm93bkZ1bmN0aW9uKSAKLSAgICAg
ICAgY2FsbC0+Z2l2ZUtub3duRnVuY3Rpb24oa25vd25GdW5jdGlvbik7CisjZW5kaWYKKyAgICAK
KyAgICBhZGRDYWxsKHJlc3VsdCwgb3AsIGNhbGxPcEluZm8sIGNhbGxUYXJnZXQsIGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CiB9CiAKLXZv
aWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRGdW5jdGlvbkNoZWNrcyhjb25zdCBDYWxsTGlua1N0YXR1
cyYgY2FsbExpbmtTdGF0dXMsIE5vZGUqIGNhbGxUYXJnZXQsIGludCByZWdpc3Rlck9mZnNldCwg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQordm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdEZ1
bmN0aW9uQ2hlY2tzKENhbGxWYXJpYW50IGNhbGxlZSwgTm9kZSogY2FsbFRhcmdldCwgaW50IHJl
Z2lzdGVyT2Zmc2V0LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgTm9kZSog
dGhpc0FyZ3VtZW50OwogICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKQpAQCAtMTA5NywyMCAr
MTEwNSwyNSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0RnVuY3Rpb25DaGVja3MoCiAgICAg
ZWxzZQogICAgICAgICB0aGlzQXJndW1lbnQgPSAwOwogCi0gICAgaWYgKGNhbGxMaW5rU3RhdHVz
LmlzUHJvdmVkKCkpIHsKLSAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0LCB0
aGlzQXJndW1lbnQpOwotICAgICAgICByZXR1cm47CisgICAgSlNDZWxsKiBjYWxsZWVDZWxsOwor
ICAgIE5vZGUqIGNhbGxUYXJnZXRGb3JDaGVjazsKKyAgICBpZiAoY2FsbGVlLmlzQ2xvc3VyZUNh
bGwoKSkgeworICAgICAgICBjYWxsZWVDZWxsID0gY2FsbGVlLmV4ZWN1dGFibGUoKTsKKyAgICAg
ICAgY2FsbFRhcmdldEZvckNoZWNrID0gYWRkVG9HcmFwaChHZXRFeGVjdXRhYmxlLCBjYWxsVGFy
Z2V0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBjYWxsZWVDZWxsID0gY2FsbGVlLm5vbkV4ZWN1
dGFibGVDYWxsZWUoKTsKKyAgICAgICAgY2FsbFRhcmdldEZvckNoZWNrID0gY2FsbFRhcmdldDsK
ICAgICB9CiAgICAgCi0gICAgQVNTRVJUKGNhbGxMaW5rU3RhdHVzLmNhbk9wdGltaXplKCkpOwot
ICAgIAotICAgIGlmIChKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxMaW5rU3RhdHVzLmZ1bmN0
aW9uKCkpCi0gICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tGdW5jdGlvbiwgT3BJbmZvKG1fZ3JhcGgu
ZnJlZXplKGZ1bmN0aW9uKSksIGNhbGxUYXJnZXQsIHRoaXNBcmd1bWVudCk7Ci0gICAgZWxzZSB7
Ci0gICAgICAgIEFTU0VSVChjYWxsTGlua1N0YXR1cy5leGVjdXRhYmxlKCkpOwotICAgICAgICAK
LSAgICAgICAgYWRkVG9HcmFwaChDaGVja0V4ZWN1dGFibGUsIE9wSW5mbyhjYWxsTGlua1N0YXR1
cy5leGVjdXRhYmxlKCkpLCBjYWxsVGFyZ2V0LCB0aGlzQXJndW1lbnQpOwotICAgIH0KKyAgICBB
U1NFUlQoY2FsbGVlQ2VsbCk7CisgICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhtX2dy
YXBoLmZyZWV6ZShjYWxsZWVDZWxsKSksIGNhbGxUYXJnZXRGb3JDaGVjaywgdGhpc0FyZ3VtZW50
KTsKK30KKwordm9pZCBCeXRlQ29kZVBhcnNlcjo6dW5kb0Z1bmN0aW9uQ2hlY2tzKENhbGxWYXJp
YW50IGNhbGxlZSkKK3sKKyAgICByZW1vdmVMYXN0Tm9kZUZyb21HcmFwaChDaGVja0NlbGwpOwor
ICAgIGlmIChjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKQorICAgICAgICByZW1vdmVMYXN0Tm9kZUZy
b21HcmFwaChHZXRFeGVjdXRhYmxlKTsKIH0KIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdEFy
Z3VtZW50UGhhbnRvbXMoaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKQEAgLTExMTksMzYgKzExMzIs
MjUgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdEFyZ3VtZW50UGhhbnRvbQogICAgICAgICBh
ZGRUb0dyYXBoKFBoYW50b20sIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpLCByZWdp
c3Rlck9mZnNldCkpKTsKIH0KIAotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmco
Tm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBDYWxsTGlua1N0
YXR1cyYgY2FsbExpbmtTdGF0dXMsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6Oktp
bmQga2luZCkKK3Vuc2lnbmVkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QoQ2FsbFZhcmlh
bnQgY2FsbGVlLCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7
Ci0gICAgCi0gICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQgPSBJ
bmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5kKTsKLSAgICAKICAgICBp
ZiAodmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZygiQ29uc2lkZXJpbmcgaW5saW5pbmcgIiwgY2Fs
bExpbmtTdGF0dXMsICIgaW50byAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKKyAgICAg
ICAgZGF0YUxvZygiQ29uc2lkZXJpbmcgaW5saW5pbmcgIiwgY2FsbGVlLCAiIGludG8gIiwgY3Vy
cmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAgICAgCi0gICAgLy8gRmlyc3QsIHRoZSByZWFsbHkg
c2ltcGxlIGNoZWNrczogZG8gd2UgaGF2ZSBhbiBhY3R1YWwgSlMgZnVuY3Rpb24/Ci0gICAgaWYg
KCFjYWxsTGlua1N0YXR1cy5leGVjdXRhYmxlKCkpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCi0g
ICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIHRoZXJlIGlzIG5vIGV4ZWN1
dGFibGUuXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBpZiAoY2FsbExp
bmtTdGF0dXMuZXhlY3V0YWJsZSgpLT5pc0hvc3RGdW5jdGlvbigpKSB7CisgICAgRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY2FsbGVlLmZ1bmN0aW9uRXhlY3V0YWJsZSgpOworICAg
IGlmICghZXhlY3V0YWJsZSkgewogICAgICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgICAgIGRh
dGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgaXQncyBhIGhvc3QgZnVuY3Rpb24uXG4iKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVj
YXVzZSB0aGVyZSBpcyBubyBmdW5jdGlvbiBleGVjdXRhYmxlLiIpOworICAgICAgICByZXR1cm4g
VUlOVF9NQVg7CiAgICAgfQogICAgIAotICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihjYWxsTGlua1N0YXR1cy5leGVjdXRhYmxl
KCkpOwotICAgIAogICAgIC8vIERvZXMgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgd2UncmUgcGFz
c2luZyBtYXRjaCB0aGUgYXJpdHkgb2YgdGhlIHRhcmdldD8gV2UgY3VycmVudGx5CiAgICAgLy8g
aW5saW5lIG9ubHkgaWYgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgcGFzc2VkIGlzIGdyZWF0ZXIg
dGhhbiBvciBlcXVhbCB0byB0aGUgbnVtYmVyCiAgICAgLy8gYXJndW1lbnRzIGV4cGVjdGVkLgog
ICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KGV4ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCkpICsg
MSA+IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQog
ICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSBvZiBhcml0eSBtaXNtYXRj
aC5cbiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBVSU5UX01BWDsK
ICAgICB9CiAgICAgCiAgICAgLy8gRG8gd2UgaGF2ZSBhIGNvZGUgYmxvY2ssIGFuZCBkb2VzIHRo
ZSBjb2RlIGJsb2NrJ3Mgc2l6ZSBtYXRjaCB0aGUgaGV1cmlzdGljcy9yZXF1aXJlbWVudHMgZm9y
CkBAIC0xMTU3LDE4ICsxMTU5LDE4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGlu
aW5nKE5vZGUKICAgICAvLyBpZiB3ZSBoYWQgYSBzdGF0aWMgcHJvb2Ygb2Ygd2hhdCB3YXMgYmVp
bmcgY2FsbGVkOyB0aGlzIG1pZ2h0IGhhcHBlbiBmb3IgZXhhbXBsZSBpZiB5b3UgY2FsbCBhCiAg
ICAgLy8gZ2xvYmFsIGZ1bmN0aW9uLCB3aGVyZSB3YXRjaHBvaW50aW5nIGdpdmVzIHVzIHN0YXRp
YyBpbmZvcm1hdGlvbi4gT3ZlcmFsbCwgaXQncyBhIHJhcmUgY2FzZQogICAgIC8vIGJlY2F1c2Ug
d2UgZXhwZWN0IHRoYXQgYW55IGhvdCBjYWxsZWVzIHdvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNv
bXBpbGVkLgotICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+YmFzZWxpbmVD
b2RlQmxvY2tGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGV4ZWN1dGFibGUtPmJhc2VsaW5lQ29kZUJsb2NrRm9yKGtpbmQpOwogICAgIGlmICghY29k
ZUJsb2NrKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAg
IEZhaWxpbmcgYmVjYXVzZSBubyBjb2RlIGJsb2NrIGF2YWlsYWJsZS5cbiIpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CiAgICAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbCA9IGlubGluZUZ1bmN0aW9uRm9yQ2FwYWJpbGl0eUxl
dmVsKAotICAgICAgICBjb2RlQmxvY2ssIHNwZWNpYWxpemF0aW9uS2luZCwgY2FsbExpbmtTdGF0
dXMuaXNDbG9zdXJlQ2FsbCgpKTsKKyAgICAgICAgY29kZUJsb2NrLCBraW5kLCBjYWxsZWUuaXND
bG9zdXJlQ2FsbCgpKTsKICAgICBpZiAoIWNhbklubGluZShjYXBhYmlsaXR5TGV2ZWwpKSB7CiAg
ICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVj
YXVzZSB0aGUgZnVuY3Rpb24gaXMgbm90IGlubGluZWFibGUuXG4iKTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQogICAgIAogICAgIC8vIENo
ZWNrIGlmIHRoZSBjYWxsZXIgaXMgYWxyZWFkeSB0b28gbGFyZ2UuIFdlIGRvIHRoaXMgY2hlY2sg
aGVyZSBiZWNhdXNlIHRoYXQncyBqdXN0CkBAIC0xMTc4LDcgKzExODAsNyBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgICAgIGNvZGVCbG9jay0+bV9zaG91
bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIHRoZSBjYWxsZXIgaXMgdG9vIGxhcmdl
LlxuIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwog
ICAgIH0KICAgICAKICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgYmV0dGVyIGF0IHByZWRp
Y3RpbmcgaG93IG11Y2ggYmxvYXQgd2Ugd2lsbCBpbnRyb2R1Y2UgYnkgaW5saW5pbmcKQEAgLTEx
OTcsNyArMTE5OSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUK
ICAgICAgICAgaWYgKGRlcHRoID49IE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ0RlcHRoKCkpIHsK
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBG
YWlsaW5nIGJlY2F1c2UgZGVwdGggZXhjZWVkZWQuXG4iKTsKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgaWYgKGVudHJ5LT5leGVjdXRhYmxlKCkgPT0gZXhlY3V0YWJsZSkgewpAQCAtMTIw
NSwxOSArMTIwNywyNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2Rl
CiAgICAgICAgICAgICBpZiAocmVjdXJzaW9uID49IE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ1Jl
Y3Vyc2lvbigpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgcmVjdXJzaW9uIGRldGVjdGVkLlxu
Iik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVy
biBVSU5UX01BWDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICAKICAgICBp
ZiAodmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZygiICAgIENvbW1pdHRpbmcgdG8gaW5saW5pbmcu
XG4iKTsKKyAgICAgICAgZGF0YUxvZygiICAgIElubGluaW5nIHNob3VsZCBiZSBwb3NzaWJsZS5c
biIpOwogICAgIAotICAgIC8vIE5vdyB3ZSBrbm93IHdpdGhvdXQgYSBkb3VidCB0aGF0IHdlIGFy
ZSBjb21taXR0ZWQgdG8gaW5saW5pbmcuIFNvIGJlZ2luIHRoZSBwcm9jZXNzCi0gICAgLy8gYnkg
Y2hlY2tpbmcgdGhlIGNhbGxlZSAoaWYgbmVjZXNzYXJ5KSBhbmQgbWFraW5nIHN1cmUgdGhhdCBh
cmd1bWVudHMgYW5kIHRoZSBjYWxsZWUKLSAgICAvLyBhcmUgZmx1c2hlZC4KLSAgICBlbWl0RnVu
Y3Rpb25DaGVja3MoY2FsbExpbmtTdGF0dXMsIGNhbGxUYXJnZXROb2RlLCByZWdpc3Rlck9mZnNl
dCwgc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICAvLyBJdCBtaWdodCBiZSBwb3NzaWJsZSB0byBp
bmxpbmUuCisgICAgcmV0dXJuIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpOworfQorCit2
b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQg
cmVzdWx0T3BlcmFuZCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgSW5saW5l
Q2FsbEZyYW1lOjpLaW5kIGtpbmQsIENhbGxlckxpbmthYmlsaXR5IGNhbGxlckxpbmthYmlsaXR5
KQoreworICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5s
aW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXphdGlvbktpbmRGb3Ioa2luZCk7CisgICAgCisgICAgQVNT
RVJUKGlubGluaW5nQ29zdChjYWxsZWUsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBzcGVj
aWFsaXphdGlvbktpbmQpICE9IFVJTlRfTUFYKTsKICAgICAKKyAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGNhbGxlZS5mdW5jdGlvbkV4ZWN1dGFibGUoKS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Io
c3BlY2lhbGl6YXRpb25LaW5kKTsKKwogICAgIC8vIEZJWE1FOiBEb24ndCBmbHVzaCBjb25zdGFu
dHMhCiAgICAgCiAgICAgaW50IGlubGluZUNhbGxGcmFtZVN0YXJ0ID0gbV9pbmxpbmVTdGFja1Rv
cC0+cmVtYXBPcGVyYW5kKFZpcnR1YWxSZWdpc3RlcihyZWdpc3Rlck9mZnNldCkpLm9mZnNldCgp
ICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsKQEAgLTEyMzMsNyArMTI0Miw3IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAgICAgcmVzdWx0UmVn
ID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKHJlc3VsdFJlZyk7CiAgICAgCiAgICAg
SW5saW5lU3RhY2tFbnRyeSBpbmxpbmVTdGFja0VudHJ5KAotICAgICAgICB0aGlzLCBjb2RlQmxv
Y2ssIGNvZGVCbG9jaywgbV9ncmFwaC5sYXN0QmxvY2soKSwgY2FsbExpbmtTdGF0dXMuZnVuY3Rp
b24oKSwgcmVzdWx0UmVnLAorICAgICAgICB0aGlzLCBjb2RlQmxvY2ssIGNvZGVCbG9jaywgbV9n
cmFwaC5sYXN0QmxvY2soKSwgY2FsbGVlLmZ1bmN0aW9uKCksIHJlc3VsdFJlZywKICAgICAgICAg
KFZpcnR1YWxSZWdpc3RlcilpbmxpbmVDYWxsRnJhbWVTdGFydCwgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIGtpbmQpOwogICAgIAogICAgIC8vIFRoaXMgaXMgd2hlcmUgdGhlIGFjdHVhbCBp
bmxpbmluZyByZWFsbHkgaGFwcGVucy4KQEAgLTEyNDcsOCArMTI1Niw4IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAKICAgICBSRUxFQVNFX0FTU0VSVCgK
ICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNh
bGwKLSAgICAgICAgPT0gY2FsbExpbmtTdGF0dXMuaXNDbG9zdXJlQ2FsbCgpKTsKLSAgICBpZiAo
Y2FsbExpbmtTdGF0dXMuaXNDbG9zdXJlQ2FsbCgpKSB7CisgICAgICAgID09IGNhbGxlZS5pc0Ns
b3N1cmVDYWxsKCkpOworICAgIGlmIChjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKSB7CiAgICAgICAg
IFZhcmlhYmxlQWNjZXNzRGF0YSogY2FsbGVlVmFyaWFibGUgPQogICAgICAgICAgICAgc2V0KFZp
cnR1YWxSZWdpc3RlcihKU1N0YWNrOjpDYWxsZWUpLCBjYWxsVGFyZ2V0Tm9kZSwgSW1tZWRpYXRl
TmFrZWRTZXQpLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKICAgICAgICAgVmFyaWFibGVBY2Nlc3NE
YXRhKiBzY29wZVZhcmlhYmxlID0KQEAgLTEyNjMsNyArMTI3Miw3IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICBtX2dyYXBoLm1faW5saW5lVmFyaWFibGVE
YXRhLmFwcGVuZChpbmxpbmVWYXJpYWJsZURhdGEpOwogICAgIAogICAgIHBhcnNlQ29kZUJsb2Nr
KCk7Ci0gICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOyAvLyBSZXNldCBvdXIgc3RhdGUgbm93IHRo
YXQgd2UncmUgYmFjayB0byB0aGUgb3V0ZXIgY29kZS4KKyAgICBjbGVhckNhY2hlcygpOyAvLyBS
ZXNldCBvdXIgc3RhdGUgbm93IHRoYXQgd2UncmUgYmFjayB0byB0aGUgb3V0ZXIgY29kZS4KICAg
ICAKICAgICBtX2N1cnJlbnRJbmRleCA9IG9sZEluZGV4OwogICAgIApAQCAtMTI3NiwyMCArMTI4
NSw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgQVNTRVJUKGlubGluZVN0YWNrRW50cnkubV9jYWxsc2l0ZUJsb2Nr
SGVhZC0+aXNMaW5rZWQpOwogICAgICAgICAKLSAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0
IHRoZSBjYWxsc2l0ZSBibG9jayBoZWFkIGlzIG5vdCBvd25lZCBieSB0aGUgY2FsbGVyLgotICAg
ICAgICBpZiAoIWlubGluZVN0YWNrRW50cnkubV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MuaXNF
bXB0eSgpKSB7Ci0gICAgICAgICAgICAvLyBJdCdzIGRlZmluaXRlbHkgb3duZWQgYnkgdGhlIGNh
bGxlciwgYmVjYXVzZSB0aGUgY2FsbGVyIGNyZWF0ZWQgbmV3IGJsb2Nrcy4KLSAgICAgICAgICAg
IC8vIEFzc2VydCB0aGF0IHRoaXMgYWxsIGFkZHMgdXAuCi0gICAgICAgICAgICBBU1NFUlQoaW5s
aW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9ibG9jayA9
PSBpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbHNpdGVCbG9ja0hlYWQpOwotICAgICAgICAgICAgQVNT
RVJUKGlubGluZVN0YWNrRW50cnkubV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MubGFzdCgpLm1f
bmVlZHNOb3JtYWxMaW5raW5nKTsKLSAgICAgICAgICAgIGlubGluZVN0YWNrRW50cnkubV9jYWxs
ZXItPm1fdW5saW5rZWRCbG9ja3MubGFzdCgpLm1fbmVlZHNOb3JtYWxMaW5raW5nID0gZmFsc2U7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBJdCdzIGRlZmluaXRlbHkgbm90IG93
bmVkIGJ5IHRoZSBjYWxsZXIuIFRlbGwgdGhlIGNhbGxlciB0aGF0IGhlIGRvZXMgbm90Ci0gICAg
ICAgICAgICAvLyBuZWVkIHRvIGxpbmsgaGlzIGNhbGxzaXRlIGJsb2NrIGhlYWQsIGJlY2F1c2Ug
d2UgZGlkIGl0IGZvciBoaW0uCi0gICAgICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS5t
X2NhbGxlci0+bV9jYWxsc2l0ZUJsb2NrSGVhZE5lZWRzTGlua2luZyk7Ci0gICAgICAgICAgICBB
U1NFUlQoaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+bV9jYWxsc2l0ZUJsb2NrSGVhZCA9PSBp
bmxpbmVTdGFja0VudHJ5Lm1fY2FsbHNpdGVCbG9ja0hlYWQpOwotICAgICAgICAgICAgaW5saW5l
U3RhY2tFbnRyeS5tX2NhbGxlci0+bV9jYWxsc2l0ZUJsb2NrSGVhZE5lZWRzTGlua2luZyA9IGZh
bHNlOwotICAgICAgICB9CisgICAgICAgIGlmIChjYWxsZXJMaW5rYWJpbGl0eSA9PSBDYWxsZXJE
b2VzTm9ybWFsTGlua2luZykKKyAgICAgICAgICAgIGNhbmNlbExpbmtpbmdGb3JCbG9jayhpbmxp
bmVTdGFja0VudHJ5Lm1fY2FsbGVyLCBpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbHNpdGVCbG9ja0hl
YWQpOwogICAgICAgICAKICAgICAgICAgbGlua0Jsb2NrcyhpbmxpbmVTdGFja0VudHJ5Lm1fdW5s
aW5rZWRCbG9ja3MsIGlubGluZVN0YWNrRW50cnkubV9ibG9ja0xpbmtpbmdUYXJnZXRzKTsKICAg
ICB9IGVsc2UKQEAgLTEzMDgsMTYgKzEzMDUsMTkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlSW5saW5pbmcoTm9kZQogICAgICAgICAgICAgLy8gZm9yIHJlbGVhc2UgYnVpbGRzIGJlY2F1
c2UgdGhpcyBibG9jayB3aWxsIG5ldmVyIHNlcnZlIGFzIGEgcG90ZW50aWFsIHRhcmdldAogICAg
ICAgICAgICAgLy8gaW4gdGhlIGxpbmtlcidzIGJpbmFyeSBzZWFyY2guCiAgICAgICAgICAgICBs
YXN0QmxvY2stPmJ5dGVjb2RlQmVnaW4gPSBtX2N1cnJlbnRJbmRleDsKLSAgICAgICAgICAgIG1f
aW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtl
ZEJsb2NrKG1fZ3JhcGgubGFzdEJsb2NrKCkpKTsKKyAgICAgICAgICAgIGlmIChjYWxsZXJMaW5r
YWJpbGl0eSA9PSBDYWxsZXJEb2VzTm9ybWFsTGlua2luZykgeworICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJBZGRpbmcgdW5saW5rZWQg
YmxvY2sgIiwgUmF3UG9pbnRlcihtX2dyYXBoLmxhc3RCbG9jaygpKSwgIiAob25lIHJldHVybilc
biIpOworICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX3VubGlu
a2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKG1fZ3JhcGgubGFzdEJsb2NrKCkpKTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgbV9jdXJyZW50QmxvY2sg
PSBtX2dyYXBoLmxhc3RCbG9jaygpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKICAgICAvLyBJZiB3ZSBnZXQgdG8gdGhpcyBwb2ludCB0aGVuIGFs
bCBibG9ja3MgbXVzdCBlbmQgaW4gc29tZSBzb3J0IG9mIHRlcm1pbmFscy4KICAgICBBU1NFUlQo
bGFzdEJsb2NrLT5sYXN0KCktPmlzVGVybWluYWwoKSk7Ci0gICAgCiAKICAgICAvLyBOZWVkIHRv
IGNyZWF0ZSBhIG5ldyBiYXNpYyBibG9jayBmb3IgdGhlIGNvbnRpbnVhdGlvbiBhdCB0aGUgY2Fs
bGVyLgogICAgIFJlZlB0cjxCYXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKG5ldyBCYXNpY0Js
b2NrKG5leHRPZmZzZXQsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgUE5hTikpOwpAQCAt
MTMzMywyMCArMTMzMywyOTMgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmco
Tm9kZQogICAgICAgICBBU1NFUlQoIW5vZGUtPnRhcmdldEJsb2NrKCkpOwogICAgICAgICBub2Rl
LT50YXJnZXRCbG9jaygpID0gYmxvY2suZ2V0KCk7CiAgICAgICAgIGlubGluZVN0YWNrRW50cnku
bV91bmxpbmtlZEJsb2Nrc1tpXS5tX25lZWRzRWFybHlSZXR1cm5MaW5raW5nID0gZmFsc2U7Ci0j
aWYgIUFTU0VSVF9ESVNBQkxFRAotICAgICAgICBibG9ja1RvTGluay0+aXNMaW5rZWQgPSB0cnVl
OwotI2VuZGlmCisgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgZGF0YUxvZygiTWFy
a2luZyAiLCBSYXdQb2ludGVyKGJsb2NrVG9MaW5rKSwgIiBhcyBsaW5rZWQgKGp1bXBzIHRvIHJl
dHVybilcbiIpOworICAgICAgICBibG9ja1RvTGluay0+ZGlkTGluaygpOwogICAgIH0KICAgICAK
ICAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrLmdldCgpOwogICAgIEFTU0VSVChtX2lubGluZVN0
YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmlzRW1wdHkoKSB8fCBtX2lu
bGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmxhc3QoKS0+Ynl0
ZWNvZGVCZWdpbiA8IG5leHRPZmZzZXQpOwotICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVy
LT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLmdldCgpKSk7Ci0g
ICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5hcHBl
bmQoYmxvY2suZ2V0KCkpOworICAgIGlmICh2ZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJBZGRp
bmcgdW5saW5rZWQgYmxvY2sgIiwgUmF3UG9pbnRlcihibG9jay5nZXQoKSksICIgKG1hbnkgcmV0
dXJucylcbiIpOworICAgIGlmIChjYWxsZXJMaW5rYWJpbGl0eSA9PSBDYWxsZXJEb2VzTm9ybWFs
TGlua2luZykgeworICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV91bmxpbmtl
ZEJsb2Nrcy5hcHBlbmQoVW5saW5rZWRCbG9jayhibG9jay5nZXQoKSkpOworICAgICAgICBtX2lu
bGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9j
ay5nZXQoKSk7CisgICAgfQogICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soYmxvY2spOwogICAgIHBy
ZXBhcmVUb1BhcnNlQmxvY2soKTsKK30KKwordm9pZCBCeXRlQ29kZVBhcnNlcjo6Y2FuY2VsTGlu
a2luZ0ZvckJsb2NrKElubGluZVN0YWNrRW50cnkqIGlubGluZVN0YWNrRW50cnksIEJhc2ljQmxv
Y2sqIGJsb2NrKQoreworICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB0aGUgY2FsbHNpdGUgYmxv
Y2sgaGVhZCBpcyBub3Qgb3duZWQgYnkgdGhlIGNhbGxlci4KKyAgICBpZiAoIWlubGluZVN0YWNr
RW50cnktPm1fdW5saW5rZWRCbG9ja3MuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIEl0J3MgZGVm
aW5pdGVseSBvd25lZCBieSB0aGUgY2FsbGVyLCBiZWNhdXNlIHRoZSBjYWxsZXIgY3JlYXRlZCBu
ZXcgYmxvY2tzLgorICAgICAgICAvLyBBc3NlcnQgdGhhdCB0aGlzIGFsbCBhZGRzIHVwLgorICAg
ICAgICBBU1NFUlRfVU5VU0VEKGJsb2NrLCBpbmxpbmVTdGFja0VudHJ5LT5tX3VubGlua2VkQmxv
Y2tzLmxhc3QoKS5tX2Jsb2NrID09IGJsb2NrKTsKKyAgICAgICAgQVNTRVJUKGlubGluZVN0YWNr
RW50cnktPm1fdW5saW5rZWRCbG9ja3MubGFzdCgpLm1fbmVlZHNOb3JtYWxMaW5raW5nKTsKKyAg
ICAgICAgaW5saW5lU3RhY2tFbnRyeS0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9uZWVkc05v
cm1hbExpbmtpbmcgPSBmYWxzZTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBJdCdzIGRlZmlu
aXRlbHkgbm90IG93bmVkIGJ5IHRoZSBjYWxsZXIuIFRlbGwgdGhlIGNhbGxlciB0aGF0IGhlIGRv
ZXMgbm90CisgICAgICAgIC8vIG5lZWQgdG8gbGluayBoaXMgY2FsbHNpdGUgYmxvY2sgaGVhZCwg
YmVjYXVzZSB3ZSBkaWQgaXQgZm9yIGhpbS4KKyAgICAgICAgQVNTRVJUKGlubGluZVN0YWNrRW50
cnktPm1fY2FsbHNpdGVCbG9ja0hlYWROZWVkc0xpbmtpbmcpOworICAgICAgICBBU1NFUlRfVU5V
U0VEKGJsb2NrLCBpbmxpbmVTdGFja0VudHJ5LT5tX2NhbGxzaXRlQmxvY2tIZWFkID09IGJsb2Nr
KTsKKyAgICAgICAgaW5saW5lU3RhY2tFbnRyeS0+bV9jYWxsc2l0ZUJsb2NrSGVhZE5lZWRzTGlu
a2luZyA9IGZhbHNlOworICAgIH0KK30KKworYm9vbCBCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRv
SW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENhbGxW
YXJpYW50IGNhbGxlZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5k
LCBDYWxsZXJMaW5rYWJpbGl0eSBjYWxsZXJMaW5rYWJpbGl0eSwgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSkKK3sKKyAgICBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCA9IElubGluZUNhbGxGcmFtZTo6c3BlY2lhbGl6
YXRpb25LaW5kRm9yKGtpbmQpOworICAgIAorICAgIGlmICghaW5saW5pbmdCYWxhbmNlKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgLy8gQXQgdGhpcyBwb2ludCB3ZSByZXR1cm4g
YW5kIGNvbnRpbnVlIHRvIGdlbmVyYXRlIGNvZGUgZm9yIHRoZSBjYWxsZXIsIGJ1dAotICAgIC8v
IGluIHRoZSBuZXcgYmFzaWMgYmxvY2suCisgICAgaWYgKEludGVybmFsRnVuY3Rpb24qIGZ1bmN0
aW9uID0gY2FsbGVlLmludGVybmFsRnVuY3Rpb24oKSkgeworICAgICAgICBpZiAoaGFuZGxlQ29u
c3RhbnRJbnRlcm5hbEZ1bmN0aW9uKHJlc3VsdE9wZXJhbmQsIGZ1bmN0aW9uLCByZWdpc3Rlck9m
ZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCkpIHsK
KyAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldE5vZGUpOworICAgICAg
ICAgICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgICAgICAgICAgaW5saW5pbmdC
YWxhbmNlLS07CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIEludHJpbnNpYyBpbnRyaW5zaWMgPSBjYWxs
ZWUuaW50cmluc2ljRm9yKHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgaWYgKGludHJpbnNpYyAh
PSBOb0ludHJpbnNpYykgeworICAgICAgICBpZiAoaGFuZGxlSW50cmluc2ljKHJlc3VsdE9wZXJh
bmQsIGludHJpbnNpYywgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LCBwcmVkaWN0aW9uKSkgeworICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFy
Z2V0Tm9kZSk7CisgICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNl
dCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAg
ICAgICAgICBpbmxpbmluZ0JhbGFuY2UtLTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQg
bXlJbmxpbmluZ0Nvc3QgPSBpbmxpbmluZ0Nvc3QoY2FsbGVlLCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICBpZiAobXlJbmxpbmluZ0Nvc3QgPiBp
bmxpbmluZ0JhbGFuY2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpbmxpbmVD
YWxsKGNhbGxUYXJnZXROb2RlLCByZXN1bHRPcGVyYW5kLCBjYWxsZWUsIHJlZ2lzdGVyT2Zmc2V0
LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbmV4dE9mZnNldCwga2luZCwgY2FsbGVyTGlu
a2FiaWxpdHkpOworICAgIGlubGluaW5nQmFsYW5jZSAtPSBteUlubGluaW5nQ29zdDsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9k
ZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBDYWxsTGlua1N0YXR1
cyYgY2FsbExpbmtTdGF0dXMsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBOb2RlVHlwZSBjYWxsT3AsIElubGlu
ZUNhbGxGcmFtZTo6S2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQoreworICAg
IGlmICh2ZXJib3NlKSB7CisgICAgICAgIGRhdGFMb2coIkhhbmRsaW5nIGlubGluaW5nLi4uXG4i
KTsKKyAgICAgICAgZGF0YUxvZygiU3RhY2s6ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIp
OworICAgIH0KKyAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCA9
IElubGluZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOworICAgIAorICAg
IGlmICghY2FsbExpbmtTdGF0dXMuc2l6ZSgpKSB7CisgICAgICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICAgICAgZGF0YUxvZygiQmFpbGluZyBpbmxpbmluZy5cbiIpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIGlubGluaW5nQmFsYW5jZSA9IE9wdGlv
bnM6Om1heGltdW1GdW5jdGlvbkZvckNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50
KCk7CisgICAgaWYgKHNwZWNpYWxpemF0aW9uS2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KQorICAg
ICAgICBpbmxpbmluZ0JhbGFuY2UgPSBzdGQ6Om1pbihpbmxpbmluZ0JhbGFuY2UsIE9wdGlvbnM6
Om1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291
bnQoKSk7CisgICAgaWYgKGNhbGxMaW5rU3RhdHVzLmlzQ2xvc3VyZUNhbGwoKSkKKyAgICAgICAg
aW5saW5pbmdCYWxhbmNlID0gc3RkOjptaW4oaW5saW5pbmdCYWxhbmNlLCBPcHRpb25zOjptYXhp
bXVtRnVuY3Rpb25Gb3JDbG9zdXJlQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQo
KSk7CisgICAgCisgICAgLy8gRmlyc3QgY2hlY2sgaWYgd2UgY2FuIGF2b2lkIGNyZWF0aW5nIGNv
bnRyb2wgZmxvdy4gT3VyIGlubGluZXIgZG9lcyBzb21lIENGRworICAgIC8vIHNpbXBsaWZpY2F0
aW9uIG9uIHRoZSBmbHkgYW5kIHRoaXMgaGVscHMgcmVkdWNlIGNvbXBpbGUgdGltZXMsIGJ1dCB3
ZSBjYW4gb25seSBsZXZlcmFnZQorICAgIC8vIHRoaXMgaW4gY2FzZXMgd2hlcmUgd2UgZG9uJ3Qg
bmVlZCBjb250cm9sIGZsb3cgZGlhbW9uZHMgdG8gY2hlY2sgdGhlIGNhbGxlZS4KKyAgICBpZiAo
IWNhbGxMaW5rU3RhdHVzLmNvdWxkVGFrZVNsb3dQYXRoKCkgJiYgY2FsbExpbmtTdGF0dXMuc2l6
ZSgpID09IDEpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uQ2hlY2tzKAorICAgICAgICAgICAgY2Fs
bExpbmtTdGF0dXNbMF0uY2FsbGVlKCksIGNhbGxUYXJnZXROb2RlLCByZWdpc3Rlck9mZnNldCwg
c3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBhdHRlbXB0VG9Jbmxp
bmVDYWxsKAorICAgICAgICAgICAgY2FsbFRhcmdldE5vZGUsIHJlc3VsdE9wZXJhbmQsIGNhbGxM
aW5rU3RhdHVzWzBdLmNhbGxlZSgpLCByZWdpc3Rlck9mZnNldCwKKyAgICAgICAgICAgIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zmc2V0LCBraW5kLCBDYWxsZXJEb2VzTm9ybWFs
TGlua2luZywgcHJlZGljdGlvbiwKKyAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZSk7CisgICAg
ICAgIGlmICghcmVzdWx0ICYmICFjYWxsTGlua1N0YXR1cy5pc1Byb3ZlZCgpKQorICAgICAgICAg
ICAgdW5kb0Z1bmN0aW9uQ2hlY2tzKGNhbGxMaW5rU3RhdHVzWzBdLmNhbGxlZSgpKTsKKyAgICAg
ICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgIGRhdGFMb2coIkRvbmUgaW5saW5pbmcgKHNp
bXBsZSkuXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9y
aWdpbigpLCAiXG4iKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
KyAgICAKKyAgICAvLyBXZSBuZWVkIHRvIGNyZWF0ZSBzb21lIGtpbmQgb2Ygc3dpdGNoIG92ZXIg
Y2FsbGVlLiBGb3Igbm93IHdlIG9ubHkgZG8gdGhpcyBpZiB3ZSBiZWxpZXZlIHRoYXQKKyAgICAv
LyB3ZSdyZSBpbiB0aGUgdG9wIHRpZXIuIFdlIGhhdmUgdHdvIHJlYXNvbnMgZm9yIHRoaXM6IGZp
cnN0LCBpdCBwcm92aWRlcyB1cyBhbiBvcHBvcnR1bml0eSB0bworICAgIC8vIGRvIG1vcmUgZGV0
YWlsZWQgcG9seXZhcmlhbnQvcG9seW1vcnBoaWMgcHJvZmlsaW5nOyBhbmQgc2Vjb25kLCBpdCBy
ZWR1Y2VzIGNvbXBpbGUgdGltZXMgaW4KKyAgICAvLyB0aGUgREZHLiBBbmQgYnkgcG9seXZhcmlh
bnQgcHJvZmlsaW5nIHdlIG1lYW4gcG9seXZhcmlhbnQgcHJvZmlsaW5nIG9mICp0aGlzKiBjYWxs
LiBOb3RlIHRoYXQKKyAgICAvLyB3ZSBjb3VsZCBpbXByb3ZlIHRoYXQgYXNwZWN0IG9mIHRoaXMg
YnkgZG9pbmcgcG9seW1vcnBoaWMgaW5saW5pbmcgYnV0IGhhdmluZyB0aGUgcHJvZmlsaW5nCisg
ICAgLy8gYWxzby4gQ3VycmVudGx5IHdlIG9wdCBhZ2FpbnN0IHRoaXMsIGJ1dCBpdCBjb3VsZCBi
ZSBpbnRlcmVzdGluZy4gVGhhdCB3b3VsZCByZXF1aXJlIGhhdmluZyBhCisgICAgLy8gc2VwYXJh
dGUgbm9kZSBmb3IgY2FsbCBlZGdlIHByb2ZpbGluZy4KKyAgICAvLyBGSVhNRTogSW50cm9kdWNl
IHRoZSBub3Rpb24gb2YgYSBzZXBhcmF0ZSBjYWxsIGVkZ2UgcHJvZmlsaW5nIG5vZGUuCisgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjAzMworICAgIGlm
ICghaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkgfHwgIU9wdGlvbnM6OmVuYWJsZVBvbHltb3Jw
aGljQ2FsbElubGluaW5nKCkpIHsKKyAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAg
IGRhdGFMb2coIkJhaWxpbmcgaW5saW5pbmcgKGhhcmQpLlxuIik7CisgICAgICAgICAgICBkYXRh
TG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBvbGRPZmZzZXQg
PSBtX2N1cnJlbnRJbmRleDsKKyAgICAKKyAgICBib29sIGFsbEFyZUNsb3N1cmVDYWxscyA9IHRy
dWU7CisgICAgYm9vbCBhbGxBcmVEaXJlY3RDYWxscyA9IHRydWU7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gY2FsbExpbmtTdGF0dXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIGlmIChjYWxsTGlu
a1N0YXR1c1tpXS5jYWxsZWUoKS5pc0Nsb3N1cmVDYWxsKCkpCisgICAgICAgICAgICBhbGxBcmVE
aXJlY3RDYWxscyA9IGZhbHNlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhbGxBcmVDbG9z
dXJlQ2FsbHMgPSBmYWxzZTsKKyAgICB9CisgICAgCisgICAgTm9kZSogdGhpbmdUb1N3aXRjaE9u
OworICAgIGlmIChhbGxBcmVEaXJlY3RDYWxscykKKyAgICAgICAgdGhpbmdUb1N3aXRjaE9uID0g
Y2FsbFRhcmdldE5vZGU7CisgICAgZWxzZSBpZiAoYWxsQXJlQ2xvc3VyZUNhbGxzKQorICAgICAg
ICB0aGluZ1RvU3dpdGNoT24gPSBhZGRUb0dyYXBoKEdldEV4ZWN1dGFibGUsIGNhbGxUYXJnZXRO
b2RlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRv
IGhhbmRsZSB0aGlzIGNhc2UsIGJ1dCBpdCdzIHRyaWNreSBhbmQgd2UgZG9uJ3Qga25vdyBvZiBj
YXNlcworICAgICAgICAvLyB3aGVyZSBpdCB3b3VsZCBiZSBiZW5lZmljaWFsLiBBbHNvLCBDYWxs
TGlua1N0YXR1cyB3b3VsZCBtYWtlIGFsbCBjYWxsZWVzIGFwcGVhciBsaWtlCisgICAgICAgIC8v
IGNsb3N1cmUgY2FsbHMgaWYgYW55IGNhbGxzIHdlcmUgY2xvc3VyZSBjYWxscyAtIGV4Y2VwdCBm
b3IgY2FsbHMgdG8gaW50ZXJuYWwgZnVuY3Rpb25zLgorICAgICAgICAvLyBTbyB0aGlzIHdpbGwg
b25seSBhcmlzZSBpZiBzb21lIGNhbGxlZXMgYXJlIGludGVybmFsIGZ1bmN0aW9ucyBhbmQgb3Ro
ZXJzIGFyZSBjbG9zdXJlcy4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNjAyMAorICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAg
ZGF0YUxvZygiQmFpbGluZyBpbmxpbmluZyAobWl4KS5cbiIpOworICAgICAgICAgICAgZGF0YUxv
ZygiU3RhY2s6ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAg
ICAgZGF0YUxvZygiRG9pbmcgaGFyZCBpbmxpbmluZy4uLlxuIik7CisgICAgICAgIGRhdGFMb2co
IlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKKyAgICB9CisgICAgCisgICAg
Ly8gVGhpcyBtYWtlcyBtZSB3aXNoIHRoYXQgd2Ugd2VyZSBpbiBTU0EgYWxsIHRoZSB0aW1lLiBX
ZSBuZWVkIHRvIHBpY2sgYSB2YXJpYWJsZSBpbnRvIHdoaWNoIHRvCisgICAgLy8gc3RvcmUgdGhl
IGNhbGxlZSBzbyB0aGF0IGl0IHdpbGwgYmUgYWNjZXNzaWJsZSB0byBhbGwgb2YgdGhlIGJsb2Nr
cyB3ZSdyZSBhYm91dCB0byBjcmVhdGUuIFdlCisgICAgLy8gZ2V0IGF3YXkgd2l0aCBkb2luZyBh
biBpbW1lZGlhdGUtc2V0IGhlcmUgYmVjYXVzZSB3ZSB3b3VsZG4ndCBoYXZlIHBlcmZvcm1lZCBh
bnkgc2lkZSBlZmZlY3RzCisgICAgLy8geWV0LgorICAgIGlmICh2ZXJib3NlKQorICAgICAgICBk
YXRhTG9nKCJSZWdpc3RlciBvZmZzZXQ6ICIsIHJlZ2lzdGVyT2Zmc2V0KTsKKyAgICBWaXJ0dWFs
UmVnaXN0ZXIgY2FsbGVlUmVnKHJlZ2lzdGVyT2Zmc2V0ICsgSlNTdGFjazo6Q2FsbGVlKTsKKyAg
ICBjYWxsZWVSZWcgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQoY2FsbGVlUmVnKTsK
KyAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygiQ2FsbGVlIGlzIGdvaW5nIHRvIGJl
ICIsIGNhbGxlZVJlZywgIlxuIik7CisgICAgc2V0RGlyZWN0KGNhbGxlZVJlZywgY2FsbFRhcmdl
dE5vZGUsIEltbWVkaWF0ZVNldFdpdGhGbHVzaCk7CisgICAgCisgICAgU3dpdGNoRGF0YSYgZGF0
YSA9ICptX2dyYXBoLm1fc3dpdGNoRGF0YS5hZGQoKTsKKyAgICBkYXRhLmtpbmQgPSBTd2l0Y2hD
ZWxsOworICAgIGFkZFRvR3JhcGgoU3dpdGNoLCBPcEluZm8oJmRhdGEpLCB0aGluZ1RvU3dpdGNo
T24pOworICAgIAorICAgIEJhc2ljQmxvY2sqIG9yaWdpbkJsb2NrID0gbV9jdXJyZW50QmxvY2s7
CisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGRhdGFMb2coIk1hcmtpbmcgIiwgUmF3UG9pbnRl
cihvcmlnaW5CbG9jayksICIgYXMgbGlua2VkIChvcmlnaW4gb2YgcG9seSBpbmxpbmUpXG4iKTsK
KyAgICBvcmlnaW5CbG9jay0+ZGlkTGluaygpOworICAgIGNhbmNlbExpbmtpbmdGb3JCbG9jayht
X2lubGluZVN0YWNrVG9wLCBvcmlnaW5CbG9jayk7CisgICAgCisgICAgLy8gRWFjaCBpbmxpbmVk
IGNhbGxlZSB3aWxsIGhhdmUgYSBsYW5kaW5nIGJsb2NrIHRoYXQgaXQgcmV0dXJucyBhdC4gVGhl
eSBzaG91bGQgYWxsIGhhdmUganVtcHMKKyAgICAvLyB0byB0aGUgY29udGludWF0aW9uIGJsb2Nr
LCB3aGljaCB3ZSBjcmVhdGUgbGFzdC4KKyAgICBWZWN0b3I8QmFzaWNCbG9jayo+IGxhbmRpbmdC
bG9ja3M7CisgICAgCisgICAgLy8gV2UgbWFrZSBmb3JjZSB0aGlzIHRydWUgaWYgd2UgZ2l2ZSB1
cCBvbiBpbmxpbmluZyBhbnkgb2YgdGhlIGVkZ2VzLgorICAgIGJvb2wgY291bGRUYWtlU2xvd1Bh
dGggPSBjYWxsTGlua1N0YXR1cy5jb3VsZFRha2VTbG93UGF0aCgpOworICAgIAorICAgIGlmICh2
ZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJBYm91dCB0byBsb29wIG92ZXIgZnVuY3Rpb25zIGF0
ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICIuXG4iKTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgY2FsbExpbmtTdGF0dXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgbV9jdXJy
ZW50SW5kZXggPSBvbGRPZmZzZXQ7CisgICAgICAgIFJlZlB0cjxCYXNpY0Jsb2NrPiBibG9jayA9
IGFkb3B0UmVmKG5ldyBCYXNpY0Jsb2NrKFVJTlRfTUFYLCBtX251bUFyZ3VtZW50cywgbV9udW1M
b2NhbHMsIFBOYU4pKTsKKyAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBibG9jay5nZXQoKTsKKyAg
ICAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhibG9jayk7CisgICAgICAgIHByZXBhcmVUb1BhcnNl
QmxvY2soKTsKKyAgICAgICAgCisgICAgICAgIE5vZGUqIG15Q2FsbFRhcmdldE5vZGUgPSBnZXRE
aXJlY3QoY2FsbGVlUmVnKTsKKyAgICAgICAgCisgICAgICAgIGJvb2wgaW5saW5pbmdSZXN1bHQg
PSBhdHRlbXB0VG9JbmxpbmVDYWxsKAorICAgICAgICAgICAgbXlDYWxsVGFyZ2V0Tm9kZSwgcmVz
dWx0T3BlcmFuZCwgY2FsbExpbmtTdGF0dXNbaV0uY2FsbGVlKCksIHJlZ2lzdGVyT2Zmc2V0LAor
ICAgICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQsIGtpbmQs
IENhbGxlckxpbmtzTWFudWFsbHksIHByZWRpY3Rpb24sCisgICAgICAgICAgICBpbmxpbmluZ0Jh
bGFuY2UpOworICAgICAgICAKKyAgICAgICAgaWYgKCFpbmxpbmluZ1Jlc3VsdCkgeworICAgICAg
ICAgICAgLy8gVGhhdCBmYWlsZWQgc28gd2UgbGV0IHRoZSBibG9jayBkaWUuIE5vdGhpbmcgaW50
ZXJlc3Rpbmcgc2hvdWxkIGhhdmUgYmVlbiBhZGRlZCB0bworICAgICAgICAgICAgLy8gdGhlIGJs
b2NrLiBXZSBhbHNvIGdpdmUgdXAgb24gaW5saW5pbmcgYW55IG9mIHRoZSAobGVzcyBmcmVxdWVu
dCkgY2FsbGVlcy4KKyAgICAgICAgICAgIEFTU0VSVChtX2N1cnJlbnRCbG9jayA9PSBibG9jay5n
ZXQoKSk7CisgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2Jsb2Nrcy5sYXN0KCkgPT0gYmxv
Y2spOworICAgICAgICAgICAgbV9ncmFwaC5raWxsQmxvY2tBbmRJdHNDb250ZW50cyhibG9jay5n
ZXQoKSk7CisgICAgICAgICAgICBtX2dyYXBoLm1fYmxvY2tzLnJlbW92ZUxhc3QoKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgLy8gVGhlIGZhY3QgdGhhdCBpbmxpbmluZyBmYWlsZWQgbWVh
bnMgd2UgbmVlZCBhIHNsb3cgcGF0aC4KKyAgICAgICAgICAgIGNvdWxkVGFrZVNsb3dQYXRoID0g
dHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBK
U0NlbGwqIHRoaW5nVG9DYXNlT247CisgICAgICAgIGlmIChhbGxBcmVEaXJlY3RDYWxscykKKyAg
ICAgICAgICAgIHRoaW5nVG9DYXNlT24gPSBjYWxsTGlua1N0YXR1c1tpXS5jYWxsZWUoKS5ub25F
eGVjdXRhYmxlQ2FsbGVlKCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKGFs
bEFyZUNsb3N1cmVDYWxscyk7CisgICAgICAgICAgICB0aGluZ1RvQ2FzZU9uID0gY2FsbExpbmtT
dGF0dXNbaV0uY2FsbGVlKCkuZXhlY3V0YWJsZSgpOworICAgICAgICB9CisgICAgICAgIGRhdGEu
Y2FzZXMuYXBwZW5kKFN3aXRjaENhc2UobV9ncmFwaC5mcmVlemUodGhpbmdUb0Nhc2VPbiksIGJs
b2NrLmdldCgpKSk7CisgICAgICAgIG1fY3VycmVudEluZGV4ID0gbmV4dE9mZnNldDsKKyAgICAg
ICAgcHJvY2Vzc1NldExvY2FsUXVldWUoKTsgLy8gVGhpcyBvbmx5IGNvbWVzIGludG8gcGxheSBm
b3IgaW50cmluc2ljcywgc2luY2Ugbm9ybWFsIGlubGluZWQgY29kZSB3aWxsIGxlYXZlIGFuIGVt
cHR5IHF1ZXVlLgorICAgICAgICBhZGRUb0dyYXBoKEp1bXApOworICAgICAgICBpZiAodmVyYm9z
ZSkKKyAgICAgICAgICAgIGRhdGFMb2coIk1hcmtpbmcgIiwgUmF3UG9pbnRlcihtX2N1cnJlbnRC
bG9jayksICIgYXMgbGlua2VkICh0YWlsIG9mIHBvbHkgaW5saW5lZSlcbiIpOworICAgICAgICBt
X2N1cnJlbnRCbG9jay0+ZGlkTGluaygpOworICAgICAgICBsYW5kaW5nQmxvY2tzLmFwcGVuZCht
X2N1cnJlbnRCbG9jayk7CisKKyAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBkYXRh
TG9nKCJGaW5pc2hlZCBpbmxpbmluZyAiLCBjYWxsTGlua1N0YXR1c1tpXS5jYWxsZWUoKSwgIiBh
dCAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiLlxuIik7CisgICAgfQorICAgIAorICAgIFJlZlB0
cjxCYXNpY0Jsb2NrPiBzbG93UGF0aEJsb2NrID0gYWRvcHRSZWYoCisgICAgICAgIG5ldyBCYXNp
Y0Jsb2NrKFVJTlRfTUFYLCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIFBOYU4pKTsKKyAg
ICBtX2N1cnJlbnRJbmRleCA9IG9sZE9mZnNldDsKKyAgICBkYXRhLmZhbGxUaHJvdWdoID0gQnJh
bmNoVGFyZ2V0KHNsb3dQYXRoQmxvY2suZ2V0KCkpOworICAgIG1fZ3JhcGguYXBwZW5kQmxvY2so
c2xvd1BhdGhCbG9jayk7CisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGRhdGFMb2coIk1hcmtp
bmcgIiwgUmF3UG9pbnRlcihzbG93UGF0aEJsb2NrLmdldCgpKSwgIiBhcyBsaW5rZWQgKHNsb3cg
cGF0aCBibG9jaylcbiIpOworICAgIHNsb3dQYXRoQmxvY2stPmRpZExpbmsoKTsKKyAgICBwcmVw
YXJlVG9QYXJzZUJsb2NrKCk7CisgICAgbV9jdXJyZW50QmxvY2sgPSBzbG93UGF0aEJsb2NrLmdl
dCgpOworICAgIE5vZGUqIG15Q2FsbFRhcmdldE5vZGUgPSBnZXREaXJlY3QoY2FsbGVlUmVnKTsK
KyAgICBpZiAoY291bGRUYWtlU2xvd1BhdGgpIHsKKyAgICAgICAgYWRkQ2FsbCgKKyAgICAgICAg
ICAgIHJlc3VsdE9wZXJhbmQsIGNhbGxPcCwgT3BJbmZvKCksIG15Q2FsbFRhcmdldE5vZGUsIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAorICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXQsIHBy
ZWRpY3Rpb24pOworICAgIH0gZWxzZSB7CisgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tCYWRDZWxs
KTsKKyAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBteUNhbGxUYXJnZXROb2RlKTsKKyAgICAg
ICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgICAgICAKKyAgICAgICAgc2V0KFZp
cnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgYWRkVG9HcmFwaChCb3R0b21WYWx1ZSkpOwor
ICAgIH0KKworICAgIG1fY3VycmVudEluZGV4ID0gbmV4dE9mZnNldDsKKyAgICBwcm9jZXNzU2V0
TG9jYWxRdWV1ZSgpOworICAgIGFkZFRvR3JhcGgoSnVtcCk7CisgICAgbGFuZGluZ0Jsb2Nrcy5h
cHBlbmQobV9jdXJyZW50QmxvY2spOworICAgIAorICAgIFJlZlB0cjxCYXNpY0Jsb2NrPiBjb250
aW51YXRpb25CbG9jayA9IGFkb3B0UmVmKAorICAgICAgICBuZXcgQmFzaWNCbG9jayhVSU5UX01B
WCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCBQTmFOKSk7CisgICAgbV9ncmFwaC5hcHBl
bmRCbG9jayhjb250aW51YXRpb25CbG9jayk7CisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGRh
dGFMb2coIkFkZGluZyB1bmxpbmtlZCBibG9jayAiLCBSYXdQb2ludGVyKGNvbnRpbnVhdGlvbkJs
b2NrLmdldCgpKSwgIiAoY29udGludWF0aW9uKVxuIik7CisgICAgbV9pbmxpbmVTdGFja1RvcC0+
bV91bmxpbmtlZEJsb2Nrcy5hcHBlbmQoVW5saW5rZWRCbG9jayhjb250aW51YXRpb25CbG9jay5n
ZXQoKSkpOworICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKKyAgICBtX2N1cnJlbnRCbG9jayA9
IGNvbnRpbnVhdGlvbkJsb2NrLmdldCgpOworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IGxh
bmRpbmdCbG9ja3Muc2l6ZSgpOyBpLS07KQorICAgICAgICBsYW5kaW5nQmxvY2tzW2ldLT5sYXN0
KCktPnRhcmdldEJsb2NrKCkgPSBjb250aW51YXRpb25CbG9jay5nZXQoKTsKKyAgICAKKyAgICBt
X2N1cnJlbnRJbmRleCA9IG9sZE9mZnNldDsKKyAgICAKKyAgICBpZiAodmVyYm9zZSkgeworICAg
ICAgICBkYXRhTG9nKCJEb25lIGlubGluaW5nIChoYXJkKS5cbiIpOworICAgICAgICBkYXRhTG9n
KCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CisgICAgfQogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0xNjQ1LDcgKzE5MTgsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVUeXBlZEFycmF5Q29uCiAKIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50
SW50ZXJuYWxGdW5jdGlvbigKICAgICBpbnQgcmVzdWx0T3BlcmFuZCwgSW50ZXJuYWxGdW5jdGlv
biogZnVuY3Rpb24sIGludCByZWdpc3Rlck9mZnNldCwKLSAgICBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIENvZGVTcGVjaWFsaXphdGlv
bktpbmQga2luZCkKKyAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICAvLyBJZiB3ZSBldmVyIGZpbmQgdGhhdCB3ZSBo
YXZlIGEgbG90IG9mIGludGVybmFsIGZ1bmN0aW9ucyB0aGF0IHdlIHNwZWNpYWxpemUgZm9yLAog
ICAgIC8vIHRoZW4gd2Ugc2hvdWxkIHByb2JhYmx5IGhhdmUgc29tZSBzb3J0IG9mIGhhc2h0YWJs
ZSBkaXNwYXRjaCwgb3IgbWF5YmUgZXZlbgpAQCAtMTY1NCw4ICsxOTI3LDYgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRlcgogICAgIC8vIHdlIGtub3cgYWJvdXQgaXMg
c21hbGwgZW5vdWdoLCB0aGF0IGhhdmluZyBqdXN0IGEgbGluZWFyIGNhc2NhZGUgb2YgaWYgc3Rh
dGVtZW50cwogICAgIC8vIGlzIGdvb2QgZW5vdWdoLgogICAgIAotICAgIFVOVVNFRF9QQVJBTShw
cmVkaWN0aW9uKTsgLy8gUmVtb3ZlIHRoaXMgb25jZSB3ZSBkbyBtb3JlIHRoaW5ncy4KLSAgICAK
ICAgICBpZiAoZnVuY3Rpb24tPmNsYXNzSW5mbygpID09IEFycmF5Q29uc3RydWN0b3I6OmluZm8o
KSkgewogICAgICAgICBpZiAoZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgpICE9IG1faW5saW5lU3Rh
Y2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTIwMjAsNiArMjI5MSwxMiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQ
dXRCeUlkKAogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwcmVwYXJlVG9QYXJzZUJsb2NrKCkKIHsK
KyAgICBjbGVhckNhY2hlcygpOworICAgIEFTU0VSVChtX3NldExvY2FsUXVldWUuaXNFbXB0eSgp
KTsKK30KKwordm9pZCBCeXRlQ29kZVBhcnNlcjo6Y2xlYXJDYWNoZXMoKQorewogICAgIG1fY29u
c3RhbnRzLnJlc2l6ZSgwKTsKIH0KIApAQCAtMjA1OSw5ICsyMzM2LDcgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgIH0KIAogICAgIHdoaWxlICh0cnVlKSB7
Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NldExvY2FsUXVldWUuc2l6ZSgp
OyArK2kpCi0gICAgICAgICAgICBtX3NldExvY2FsUXVldWVbaV0uZXhlY3V0ZSh0aGlzKTsKLSAg
ICAgICAgbV9zZXRMb2NhbFF1ZXVlLnJlc2l6ZSgwKTsKKyAgICAgICAgcHJvY2Vzc1NldExvY2Fs
UXVldWUoKTsKICAgICAgICAgCiAgICAgICAgIC8vIERvbid0IGV4dGVuZCBvdmVyIGp1bXAgZGVz
dGluYXRpb25zLgogICAgICAgICBpZiAobV9jdXJyZW50SW5kZXggPT0gbGltaXQpIHsKQEAgLTIy
MDUsMTMgKzI0ODAsMTMgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZAogICAgICAgICAgICAgSlNDZWxsKiBjYWNoZWRGdW5jdGlvbiA9IGN1cnJlbnRJbnN0cnVjdGlv
blsyXS51LmpzQ2VsbC5nZXQoKTsKICAgICAgICAgICAgIGlmICghY2FjaGVkRnVuY3Rpb24gCiAg
ICAgICAgICAgICAgICAgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5jb3Vs
ZFRha2VTbG93Q2FzZShtX2N1cnJlbnRJbmRleCkKLSAgICAgICAgICAgICAgICB8fCBtX2lubGlu
ZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRG
dW5jdGlvbikpIHsKKyAgICAgICAgICAgICAgICB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQ
cm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDZWxsKSkgewogICAgICAgICAg
ICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZCksIGdldChWaXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6Q2FsbGVlKSkpOwogICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5m
cmVlemUoY2FjaGVkRnVuY3Rpb24pOwogICAgICAgICAgICAgICAgIEFTU0VSVChjYWNoZWRGdW5j
dGlvbi0+aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSk7CiAgICAgICAgICAgICAgICAgTm9k
ZSogYWN0dWFsQ2FsbGVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihKU1N0YWNrOjpDYWxsZWUpKTsK
LSAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrRnVuY3Rpb24sIE9wSW5mbyhmcm96ZW4p
LCBhY3R1YWxDYWxsZWUpOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tDZWxsLCBP
cEluZm8oZnJvemVuKSwgYWN0dWFsQ2FsbGVlKTsKICAgICAgICAgICAgICAgICBzZXQoVmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKEpT
Q29uc3RhbnQsIE9wSW5mbyhmcm96ZW4pKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBO
RVhUX09QQ09ERShvcF9nZXRfY2FsbGVlKTsKQEAgLTI4OTMsNyArMzE2OCw3IEBAIGJvb2wgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIC8vIGFscmVhZHkg
Z25hcmx5IGVub3VnaCBhcyBpdCBpcy4KICAgICAgICAgICAgIEFTU0VSVChwb2ludGVySXNGdW5j
dGlvbihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5zcGVjaWFsUG9pbnRlcikpOwogICAgICAgICAg
ICAgYWRkVG9HcmFwaCgKLSAgICAgICAgICAgICAgICBDaGVja0Z1bmN0aW9uLAorICAgICAgICAg
ICAgICAgIENoZWNrQ2VsbCwKICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5mcmVlemUo
c3RhdGljX2Nhc3Q8SlNDZWxsKj4oYWN0dWFsUG9pbnRlckZvcigKICAgICAgICAgICAgICAgICAg
ICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2ssIGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
LnNwZWNpYWxQb2ludGVyKSkpKSwKICAgICAgICAgICAgICAgICBnZXQoVmlydHVhbFJlZ2lzdGVy
KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKSk7CkBAIC0zMzE3LDE1ICszNTkyLDE5
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmxpbmtCbG9jayhCYXNpY0Jsb2MKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIAotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBibG9jay0+aXNMaW5r
ZWQgPSB0cnVlOwotI2VuZGlmCisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGRhdGFMb2coIk1h
cmtpbmcgIiwgUmF3UG9pbnRlcihibG9jayksICIgYXMgbGlua2VkIChhY3R1YWxseSBkaWQgbGlu
a2luZylcbiIpOworICAgIGJsb2NrLT5kaWRMaW5rKCk7CiB9CiAKIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmxpbmtCbG9ja3MoVmVjdG9yPFVubGlua2VkQmxvY2s+JiB1bmxpbmtlZEJsb2NrcywgVmVj
dG9yPEJhc2ljQmxvY2sqPiYgcG9zc2libGVUYXJnZXRzKQogewogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgdW5saW5rZWRCbG9ja3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgICAgICBkYXRhTG9nKCJBdHRlbXB0aW5nIHRvIGxpbmsgIiwgUmF3UG9pbnRl
cih1bmxpbmtlZEJsb2Nrc1tpXS5tX2Jsb2NrKSwgIlxuIik7CiAgICAgICAgIGlmICh1bmxpbmtl
ZEJsb2Nrc1tpXS5tX25lZWRzTm9ybWFsTGlua2luZykgeworICAgICAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIERvZXMgbmVlZCBub3JtYWwgbGlua2lu
Zy5cbiIpOwogICAgICAgICAgICAgbGlua0Jsb2NrKHVubGlua2VkQmxvY2tzW2ldLm1fYmxvY2ss
IHBvc3NpYmxlVGFyZ2V0cyk7CiAgICAgICAgICAgICB1bmxpbmtlZEJsb2Nrc1tpXS5tX25lZWRz
Tm9ybWFsTGlua2luZyA9IGZhbHNlOwogICAgICAgICB9CkBAIC0zNDkyLDcgKzM3NzEsNyBAQCBC
eXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lCiAKIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQ29kZUJsb2NrKCkKIHsKLSAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7Cisg
ICAgY2xlYXJDYWNoZXMoKTsKICAgICAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1faW5s
aW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrOwogICAgIApAQCAtMzU1OCw3ICszODM3LDEyIEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKCkKICAgICAgICAgICAgICAgICAgICAg
Ly8gMikgSWYgdGhlIGJ5dGVjb2RlQmVnaW4gaXMgZXF1YWwgdG8gdGhlIGN1cnJlbnRJbmRleCwg
dGhlbiB3ZSBmYWlsZWQgdG8gZG8KICAgICAgICAgICAgICAgICAgICAgLy8gICAgYSBwZWVwaG9s
ZSBjb2FsZXNjaW5nIG9mIHRoaXMgYmxvY2sgaW4gdGhlIGlmIHN0YXRlbWVudCBhYm92ZS4gU28s
IHdlJ3JlCiAgICAgICAgICAgICAgICAgICAgIC8vICAgIGdlbmVyYXRpbmcgc3Vib3B0aW1hbCBj
b2RlIGFuZCBsZWF2aW5nIG1vcmUgd29yayBmb3IgdGhlIENGRyBzaW1wbGlmaWVyLgotICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQobV9pbmxpbmVTdGFja1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5p
c0VtcHR5KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9i
bG9jay0+Ynl0ZWNvZGVCZWdpbiA8IG1fY3VycmVudEluZGV4KTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCFtX2lubGluZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmlzRW1wdHkoKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGFzdEJlZ2luID0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmxhc3Qo
KS5tX2Jsb2NrLT5ieXRlY29kZUJlZ2luOworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
X1VOVVNFRCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0QmVnaW4sIGxhc3RCZWdp
biA9PSBVSU5UX01BWCB8fCBsYXN0QmVnaW4gPCBtX2N1cnJlbnRJbmRleCk7CisgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV91bmxp
bmtlZEJsb2Nrcy5hcHBlbmQoVW5saW5rZWRCbG9jayhibG9jay5nZXQoKSkpOwogICAgICAgICAg
ICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuYXBwZW5k
KGJsb2NrLmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGZpcnN0IGJsb2NrIGlz
IGRlZmluaXRlbHkgYW4gT1NSIHRhcmdldC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTcyOTI3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTAsOCArOTAsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+Y2hpbGRyZW4uc2V0Q2hpbGQxKEVkZ2UoKSk7CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKCFub2RlLT5jaGlsZDEoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFu
b2RlLT5jaGlsZDEoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9j
YXRvci5mcmVlKG5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5jaGls
ZDEoKS0+b3AoKSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIFBoaToKICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBTZXRBcmd1bWVudDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAxNzI5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDYgKzE0NCw4
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIEZp
YXRJbnQ1MjoKICAgICBjYXNlIE1ha2VSb3BlOgogICAgIGNhc2UgVmFsdWVUb0ludDMyOgorICAg
IGNhc2UgR2V0RXhlY3V0YWJsZToKKyAgICBjYXNlIEJvdHRvbVZhbHVlOgogICAgICAgICBkZWYo
UHVyZVZhbHVlKG5vZGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKQEAgLTIzOSwxMiAr
MjQxLDggQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAg
ICBkZWYoUHVyZVZhbHVlKG5vZGUsIG5vZGUtPmFyaXRoTW9kZSgpKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICAgICAgCi0gICAgY2FzZSBDaGVja0Z1bmN0aW9uOgotICAgICAgICBkZWYoUHVyZVZh
bHVlKENoZWNrRnVuY3Rpb24sIEFkamFjZW5jeUxpc3QoQWRqYWNlbmN5TGlzdDo6Rml4ZWQsIG5v
ZGUtPmNoaWxkMSgpKSwgbm9kZS0+ZnVuY3Rpb24oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAg
ICAgIAotICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOgotICAgICAgICBkZWYoUHVyZVZhbHVlKG5v
ZGUsIG5vZGUtPmV4ZWN1dGFibGUoKSkpOworICAgIGNhc2UgQ2hlY2tDZWxsOgorICAgICAgICBk
ZWYoUHVyZVZhbHVlKENoZWNrQ2VsbCwgQWRqYWNlbmN5TGlzdChBZGphY2VuY3lMaXN0OjpGaXhl
ZCwgbm9kZS0+Y2hpbGQxKCkpLCBub2RlLT5jZWxsT3BlcmFuZCgpKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICAgICAgCiAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgpAQCAtMjYzLDYg
KzI2MSw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBj
YXNlIFN3aXRjaDoKICAgICBjYXNlIFRocm93OgogICAgIGNhc2UgRm9yY2VPU1JFeGl0OgorICAg
IGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2UgVW5yZWFjaGFi
bGU6CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKQEAgLTM1OCw2ICszNTcsOCBAQCB2b2lk
IGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBBcnJheVBvcDoK
ICAgICBjYXNlIENhbGw6CiAgICAgY2FzZSBDb25zdHJ1Y3Q6CisgICAgY2FzZSBQcm9maWxlZENh
bGw6CisgICAgY2FzZSBQcm9maWxlZENvbnN0cnVjdDoKICAgICBjYXNlIE5hdGl2ZUNhbGw6CiAg
ICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6CiAgICAgY2FzZSBUb1ByaW1pdGl2ZToKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAkocmV2aXNpb24gMTcyOTI3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjMs
NiArNjMsMTMgQEAgZW51bSBSZWZOb2RlTW9kZSB7CiAgICAgRG9udFJlZk5vZGUKIH07CiAKK2Vu
dW0gU3dpdGNoS2luZCB7CisgICAgU3dpdGNoSW1tLAorICAgIFN3aXRjaENoYXIsCisgICAgU3dp
dGNoU3RyaW5nLAorICAgIFN3aXRjaENlbGwKK307CisKIGlubGluZSBib29sIHZlcmJvc2VDb21w
aWxhdGlvbkVuYWJsZWQoQ29tcGlsYXRpb25Nb2RlIG1vZGUgPSBERkdNb2RlKQogewogICAgIHJl
dHVybiBPcHRpb25zOjp2ZXJib3NlQ29tcGlsYXRpb24oKSB8fCBPcHRpb25zOjpkdW1wR3JhcGhB
dEVhY2hQaGFzZSgpIHx8IChpc0ZUTChtb2RlKSAmJiBPcHRpb25zOjp2ZXJib3NlRlRMQ29tcGls
YXRpb24oKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTcyOTI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0Miw4ICsxNDIsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBDaGVja0Z1
bmN0aW9uOiB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGls
ZDEoKSkudmFsdWUoKSAhPSBub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpKQorICAgICAgICAgICAg
Y2FzZSBDaGVja0NlbGw6IHsKKyAgICAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKS52YWx1ZSgpICE9IG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkpCiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRU
b1BoYW50b20oKTsKICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsKQEAgLTM4NCw2
ICszODQsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNl
IFByb2ZpbGVkQ2FsbDoKKyAgICAgICAgICAgIGNhc2UgUHJvZmlsZWRDb25zdHJ1Y3Q6IHsKKyAg
ICAgICAgICAgICAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5v
ZGUsIDApKS5tX3ZhbHVlKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICAvLyBJZiB3ZSB3ZXJlIGFibGUgdG8gcHJvdmUgdGhhdCB0
aGUgY2FsbGVlIGlzIGEgY29uc3RhbnQgdGhlbiB0aGUgbm9ybWFsIGNhbGwKKyAgICAgICAgICAg
ICAgICAvLyBpbmxpbmUgY2FjaGUgd2lsbCByZWNvcmQgdGhpcyBjYWxsZWUuIFRoaXMgbWVhbnMg
dGhhdCB0aGVyZSBpcyBubyBuZWVkIHRvIGRvIGFueQorICAgICAgICAgICAgICAgIC8vIGFkZGl0
aW9uYWwgcHJvZmlsaW5nLgorICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wKG5vZGUtPm9wKCkg
PT0gUHJvZmlsZWRDYWxsID8gQ2FsbCA6IENvbnN0cnVjdCk7CisgICAgICAgICAgICAgICAgZWxp
bWluYXRlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAxNzI5MjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTkxLDcgKzkxLDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAg
IGNhc2UgUHV0QnlJZEZsdXNoOgogICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKICAgICBjYXNlIENo
ZWNrU3RydWN0dXJlOgotICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOgorICAgIGNhc2UgR2V0RXhl
Y3V0YWJsZToKICAgICBjYXNlIEdldEJ1dHRlcmZseToKICAgICBjYXNlIENoZWNrQXJyYXk6CiAg
ICAgY2FzZSBHZXRTY29wZToKQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRHbG9iYWxWYXI6CiAgICAgY2FzZSBWYXJp
YWJsZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBWYXJJbmplY3Rpb25XYXRjaHBvaW50OgotICAgIGNh
c2UgQ2hlY2tGdW5jdGlvbjoKKyAgICBjYXNlIENoZWNrQ2VsbDoKICAgICBjYXNlIEFsbG9jYXRp
b25Qcm9maWxlV2F0Y2hwb2ludDoKICAgICBjYXNlIFJlZ0V4cEV4ZWM6CiAgICAgY2FzZSBSZWdF
eHBUZXN0OgpAQCAtMTE5LDYgKzExOSw4IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSkKICAgICBjYXNlIENvbnN0cnVjdDoKICAgICBjYXNlIE5hdGl2ZUNhbGw6CiAgICAg
Y2FzZSBOYXRpdmVDb25zdHJ1Y3Q6CisgICAgY2FzZSBQcm9maWxlZENhbGw6CisgICAgY2FzZSBQ
cm9maWxlZENvbnN0cnVjdDoKICAgICBjYXNlIEJyZWFrcG9pbnQ6CiAgICAgY2FzZSBQcm9maWxl
V2lsbENhbGw6CiAgICAgY2FzZSBQcm9maWxlRGlkQ2FsbDoKQEAgLTE5NSw2ICsxOTcsOCBAQCBi
b29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXREaXJlY3RQ
bmFtZToKICAgICBjYXNlIEZpYXRJbnQ1MjoKICAgICBjYXNlIEJvb2xlYW5Ub051bWJlcjoKKyAg
ICBjYXNlIENoZWNrQmFkQ2VsbDoKKyAgICBjYXNlIEJvdHRvbVZhbHVlOgogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCShyZXZpc2lvbiAxNzI5MjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYg
Kzg5LDkgQEAgc3RhdGljIENvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGVJbXBsKAogICAgICAgICB2
bS5nZXRDVElTdHViKHZpcnR1YWxDb25zdHJ1Y3RUaGF0UHJlc2VydmVzUmVnc1RodW5rR2VuZXJh
dG9yKTsKICAgICB9CiAgICAgCisgICAgaWYgKENhbGxFZGdlTG9nOjppc0VuYWJsZWQoKSkKKyAg
ICAgICAgdm0uZW5zdXJlQ2FsbEVkZ2VMb2coKS5wcm9jZXNzTG9nKCk7CisgICAgCiAgICAgUmVm
UHRyPFBsYW4+IHBsYW4gPSBhZG9wdFJlZigKICAgICAgICAgbmV3IFBsYW4oY29kZUJsb2NrLCBw
cm9maWxlZERGR0NvZGVCbG9jaywgbW9kZSwgb3NyRW50cnlCeXRlY29kZUluZGV4LCBtdXN0SGFu
ZGxlVmFsdWVzKSk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE3MjkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczNiw2ICs3MzYsMTIg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hv
dWxkU3BlY3VsYXRlU3RyaW5nKCkpCiAgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5n
VXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIFN3aXRjaENlbGw6CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5z
aG91bGRTcGVjdWxhdGVDZWxsKCkpCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIC8vIGVsc2UgaXQncyBmaW5lIGZv
ciB0aGlzIHRvIGhhdmUgVW50eXBlZFVzZTsgd2Ugd2lsbCBoYW5kbGUgdGhpcyBieSBqdXN0IG1h
a2luZworICAgICAgICAgICAgICAgIC8vIG5vbi1jZWxscyB0YWtlIHRoZSBkZWZhdWx0IGNhc2Uu
CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQpAQCAtODk3LDEzICs5MDMsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6IHsKKyAg
ICAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOiB7CiAgICAgICAgICAgICBmaXhFZGdlPEZ1bmN0aW9u
VXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6Ci0gICAgICAgIGNhc2UgQ2hl
Y2tGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgICAgIGNhc2UgQ2hlY2tI
YXNJbnN0YW5jZToKICAgICAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgICAgICBjYXNlIEdldEJ1
dHRlcmZseTogewpAQCAtMTEyMCw2ICsxMTI2LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBB
bGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6CiAgICAgICAgIGNhc2UgQ2FsbDoKICAgICAgICAg
Y2FzZSBDb25zdHJ1Y3Q6CisgICAgICAgIGNhc2UgUHJvZmlsZWRDYWxsOgorICAgICAgICBjYXNl
IFByb2ZpbGVkQ29uc3RydWN0OgogICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6CiAgICAgICAgIGNh
c2UgTmF0aXZlQ29uc3RydWN0OgogICAgICAgICBjYXNlIE5ld09iamVjdDoKQEAgLTExNDksNiAr
MTE1Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVGhyb3dSZWZlcmVuY2VFcnJvcjoKICAg
ICAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6Cisg
ICAgICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgICAgICBjYXNlIENoZWNrV2F0Y2hkb2dUaW1l
cjoKICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICAgICAgY2FzZSBFeHRyYWN0T1NSRW50
cnlMb2NhbDoKQEAgLTExNTksNiArMTE2OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVHlw
ZWRBcnJheVdhdGNocG9pbnQ6CiAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAgICAgY2FzZSBa
b21iaWVIaW50OgorICAgICAgICBjYXNlIEJvdHRvbVZhbHVlOgogICAgICAgICAgICAgYnJlYWs7
CiAjZWxzZQogICAgICAgICBkZWZhdWx0OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5jcHAJKHJldmlzaW9uIDE3MjkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjIsMjQgKzIyMiwyMyBAQCB2b2lk
IEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0CiAgICAgICAgIG91dC5wcmludChj
b21tYSwgaW5Db250ZXh0KCpub2RlLT5zdHJ1Y3R1cmUoKSwgY29udGV4dCkpOwogICAgIGlmIChu
b2RlLT5oYXNUcmFuc2l0aW9uKCkpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgcG9pbnRlckR1
bXBJbkNvbnRleHQobm9kZS0+dHJhbnNpdGlvbigpLCBjb250ZXh0KSk7Ci0gICAgaWYgKG5vZGUt
Pmhhc0Z1bmN0aW9uKCkpIHsKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiZnVuY3Rpb24oIiwg
cG9pbnRlckR1bXAobm9kZS0+ZnVuY3Rpb24oKSksICIsICIpOwotICAgICAgICBpZiAobm9kZS0+
ZnVuY3Rpb24oKS0+dmFsdWUoKS5pc0NlbGwoKQotICAgICAgICAgICAgJiYgbm9kZS0+ZnVuY3Rp
b24oKS0+dmFsdWUoKS5hc0NlbGwoKS0+aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkgewot
ICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG5v
ZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkuYXNDZWxsKCkpOwotICAgICAgICAgICAgaWYgKGZ1bmN0
aW9uLT5pc0hvc3RGdW5jdGlvbigpKQotICAgICAgICAgICAgICAgIG91dC5wcmludCgiPGhvc3Qg
ZnVuY3Rpb24+Iik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgb3V0LnByaW50
KEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAoZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpKSk7Ci0gICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgb3V0LnByaW50KCI8bm90IEpTRnVuY3Rpb24+Iik7Ci0g
ICAgICAgIG91dC5wcmludCgiKSIpOwotICAgIH0KLSAgICBpZiAobm9kZS0+aGFzRXhlY3V0YWJs
ZSgpKSB7Ci0gICAgICAgIGlmIChub2RlLT5leGVjdXRhYmxlKCktPmluaGVyaXRzKEZ1bmN0aW9u
RXhlY3V0YWJsZTo6aW5mbygpKSkKLSAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgImV4ZWN1
dGFibGUoIiwgRnVuY3Rpb25FeGVjdXRhYmxlRHVtcChqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxl
Kj4obm9kZS0+ZXhlY3V0YWJsZSgpKSksICIpIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IG91dC5wcmludChjb21tYSwgImV4ZWN1dGFibGUobm90IGZ1bmN0aW9uOiAiLCBSYXdQb2ludGVy
KG5vZGUtPmV4ZWN1dGFibGUoKSksICIpIik7CisgICAgaWYgKG5vZGUtPmhhc0NlbGxPcGVyYW5k
KCkpIHsKKyAgICAgICAgaWYgKCFub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpIHx8ICFub2Rl
LT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpLmlzQ2VsbCgpKQorICAgICAgICAgICAgb3V0LnByaW50
KGNvbW1hLCAiaW52YWxpZCBjZWxsIG9wZXJhbmQ6ICIsIG5vZGUtPmNlbGxPcGVyYW5kKCktPnZh
bHVlKCkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgcG9p
bnRlckR1bXAobm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5hc0NlbGwoKSkpOworICAgICAg
ICAgICAgaWYgKG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuaXNDZWxsKCkpIHsKKyAgICAg
ICAgICAgICAgICBDYWxsVmFyaWFudCB2YXJpYW50KG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVl
KCkuYXNDZWxsKCkpOworICAgICAgICAgICAgICAgIGlmIChFeGVjdXRhYmxlQmFzZSogZXhlY3V0
YWJsZSA9IHZhcmlhbnQuZXhlY3V0YWJsZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChl
eGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0
LnByaW50KGNvbW1hLCAiPGhvc3QgZnVuY3Rpb24+Iik7CisgICAgICAgICAgICAgICAgICAgIGVs
c2UgaWYgKEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0ganNEeW5hbWlj
Q2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG91dC5wcmludChjb21tYSwgRnVuY3Rpb25FeGVjdXRhYmxlRHVtcChmdW5jdGlvbkV4
ZWN1dGFibGUpKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICAgICAgb3V0LnByaW50KGNvbW1hLCAiPG5vbi1mdW5jdGlvbiBleGVjdXRhYmxlPiIpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KICAgICBpZiAo
bm9kZS0+aGFzRnVuY3Rpb25EZWNsSW5kZXgoKSkgewogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUgPSBtX2NvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKG5vZGUtPmZ1bmN0aW9u
RGVjbEluZGV4KCkpOwpAQCAtOTg1LDEwICs5ODQsNiBAQCB2b2lkIEdyYXBoOjp2aXNpdENoaWxk
cmVuKFNsb3RWaXNpdG9yJiB2CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5v
ZGVJbmRleCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkg
ewotICAgICAgICAgICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6Ci0gICAgICAgICAgICAgICAgdmlz
aXRvci5hcHBlbmRVbmJhcnJpZXJlZFJlYWRPbmx5UG9pbnRlcihub2RlLT5leGVjdXRhYmxlKCkp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
Y2FzZSBDaGVja1N0cnVjdHVyZToKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBu
b2RlLT5zdHJ1Y3R1cmVTZXQoKS5zaXplKCk7IGktLTspCiAgICAgICAgICAgICAgICAgICAgIHZp
c2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRSZWFkT25seVBvaW50ZXIobm9kZS0+c3RydWN0dXJlU2V0
KClbaV0pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxl
ci5jcHAJKHJldmlzaW9uIDE3MjkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBK
SVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgICAgICAgICAgdGFibGUuY3Rp
T2Zmc2V0c1tqXSA9IHRhYmxlLmN0aURlZmF1bHQ7CiAgICAgICAgIGZvciAodW5zaWduZWQgaiA9
IGRhdGEuY2FzZXMuc2l6ZSgpOyBqLS07KSB7CiAgICAgICAgICAgICBTd2l0Y2hDYXNlJiBteUNh
c2UgPSBkYXRhLmNhc2VzW2pdOwotICAgICAgICAgICAgdGFibGUuY3RpT2Zmc2V0c1tteUNhc2Uu
dmFsdWUuc3dpdGNoTG9va3VwVmFsdWUoKSAtIHRhYmxlLm1pbl0gPQorICAgICAgICAgICAgdGFi
bGUuY3RpT2Zmc2V0c1tteUNhc2UudmFsdWUuc3dpdGNoTG9va3VwVmFsdWUoZGF0YS5raW5kKSAt
IHRhYmxlLm1pbl0gPQogICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX2Js
b2NrSGVhZHNbbXlDYXNlLnRhcmdldC5ibG9jay0+aW5kZXhdKTsKICAgICAgICAgfQogICAgIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCShy
ZXZpc2lvbiAxNzI5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1Zh
bHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMywzNiBAQCBUcmlTdGF0ZSBMYXp5
SlNWYWx1ZTo6c3RyaWN0RXF1YWwoY29uc3QgCiAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CiB9
CiAKK3VpbnRwdHJfdCBMYXp5SlNWYWx1ZTo6c3dpdGNoTG9va3VwVmFsdWUoU3dpdGNoS2luZCBr
aW5kKSBjb25zdAoreworICAgIC8vIE5CLiBOb3QgZXZlcnkga2luZCBvZiBKU1ZhbHVlIHdpbGwg
YmUgYWJsZSB0byBnaXZlIHlvdSBhIHN3aXRjaCBsb29rdXAKKyAgICAvLyB2YWx1ZSwgYW5kIHRo
aXMgbWV0aG9kIHdpbGwgYXNzZXJ0LCBvciBkbyBiYWQgdGhpbmdzLCBpZiB5b3UgdXNlIGl0Cisg
ICAgLy8gZm9yIGEga2luZCBvZiB2YWx1ZSB0aGF0IGNhbid0LgorICAgIHN3aXRjaCAobV9raW5k
KSB7CisgICAgY2FzZSBLbm93blZhbHVlOgorICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAg
ICAgY2FzZSBTd2l0Y2hJbW06CisgICAgICAgICAgICByZXR1cm4gdmFsdWUoKS0+dmFsdWUoKS5h
c0ludDMyKCk7CisgICAgICAgIGNhc2UgU3dpdGNoQ2VsbDoKKyAgICAgICAgICAgIHJldHVybiBi
aXR3aXNlX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSgpLT52YWx1ZSgpLmFzQ2VsbCgpKTsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIGNhc2UgU2luZ2xlQ2hhcmFjdGVy
U3RyaW5nOgorICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgY2FzZSBTd2l0Y2hDaGFy
OgorICAgICAgICAgICAgcmV0dXJuIGNoYXJhY3RlcigpOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCiB2b2lkIExhenlKU1Zh
bHVlOjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0
KSBjb25zdAogewogICAgIHN3aXRjaCAobV9raW5kKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5oCShyZXZpc2lvbiAxNzI5MjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVkZSAiREZHQ29tbW9u
LmgiCiAjaW5jbHVkZSAiREZHRnJvemVuVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdJbXBsLmg+CiAKQEAgLTk1LDIxICs5Niw3IEBAIHB1YmxpYzoKICAgICAKICAgICBUcmlTdGF0
ZSBzdHJpY3RFcXVhbChjb25zdCBMYXp5SlNWYWx1ZSYgb3RoZXIpIGNvbnN0OwogICAgIAotICAg
IHVuc2lnbmVkIHN3aXRjaExvb2t1cFZhbHVlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIC8vIE5C
LiBOb3QgZXZlcnkga2luZCBvZiBKU1ZhbHVlIHdpbGwgYmUgYWJsZSB0byBnaXZlIHlvdSBhIHN3
aXRjaCBsb29rdXAKLSAgICAgICAgLy8gdmFsdWUsIGFuZCB0aGlzIG1ldGhvZCB3aWxsIGFzc2Vy
dCwgb3IgZG8gYmFkIHRoaW5ncywgaWYgeW91IHVzZSBpdAotICAgICAgICAvLyBmb3IgYSBraW5k
IG9mIHZhbHVlIHRoYXQgY2FuJ3QuCi0gICAgICAgIHN3aXRjaCAobV9raW5kKSB7Ci0gICAgICAg
IGNhc2UgS25vd25WYWx1ZToKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZSgpLT52YWx1ZSgpLmFz
SW50MzIoKTsKLSAgICAgICAgY2FzZSBTaW5nbGVDaGFyYWN0ZXJTdHJpbmc6Ci0gICAgICAgICAg
ICByZXR1cm4gY2hhcmFjdGVyKCk7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAg
IH0KLSAgICB9CisgICAgdWludHB0cl90IHN3aXRjaExvb2t1cFZhbHVlKFN3aXRjaEtpbmQpIGNv
bnN0OwogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIHZvaWQg
ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29uc3Q7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAJKHJldmlzaW9uIDE3MjkyNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
Myw2ICsxMTMsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgU3dpCiAg
ICAgY2FzZSBTd2l0Y2hTdHJpbmc6CiAgICAgICAgIG91dC5wcmludCgiU3dpdGNoU3RyaW5nIik7
CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFN3aXRjaENlbGw6CisgICAgICAgIG91dC5wcmlu
dCgiU3dpdGNoQ2VsbCIpOworICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAkocmV2aXNpb24gMTcyOTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1NywxMiArMTU3LDYgQEAgc3RydWN0IFN3aXRjaENhc2Ug
ewogICAgIEJyYW5jaFRhcmdldCB0YXJnZXQ7CiB9OwogCi1lbnVtIFN3aXRjaEtpbmQgewotICAg
IFN3aXRjaEltbSwKLSAgICBTd2l0Y2hDaGFyLAotICAgIFN3aXRjaFN0cmluZwotfTsKLQogc3Ry
dWN0IFN3aXRjaERhdGEgewogICAgIC8vIEluaXRpYWxpemVzIG1vc3QgZmllbGRzIHRvIG9idmlv
dXNseSBpbnZhbGlkIHZhbHVlcy4gQW55b25lCiAgICAgLy8gY29uc3RydWN0aW5nIHRoaXMgc2hv
dWxkIG1ha2Ugc3VyZSB0byBpbml0aWFsaXplIGV2ZXJ5dGhpbmcgdGhleQpAQCAtMTg1LDYgKzE3
OSw3IEBAIHN0cnVjdCBTd2l0Y2hEYXRhIHsKIC8vIGRpc3Rpbmd1aXNoZXMgYW4gaW1tZWRpYXRl
IHZhbHVlICh0eXBpY2FsbHkgYW4gaW5kZXggaW50byBhIENvZGVCbG9jayBkYXRhIHN0cnVjdHVy
ZSAtIAogLy8gYSBjb25zdGFudCBpbmRleCwgYXJndW1lbnQsIG9yIGlkZW50aWZpZXIpIGZyb20g
YSBOb2RlKi4KIHN0cnVjdCBPcEluZm8geworICAgIE9wSW5mbygpIDogbV92YWx1ZSgwKSB7IH0K
ICAgICBleHBsaWNpdCBPcEluZm8oaW50MzJfdCB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0
PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KICAgICBleHBsaWNpdCBPcEluZm8odWludDMyX3QgdmFs
dWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9CiAjaWYgT1Mo
REFSV0lOKSB8fCBVU0UoSlNWQUxVRTY0KQpAQCAtMTAwOSw2ICsxMDA0LDggQEAgc3RydWN0IE5v
ZGUgewogICAgICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbFNhZmU6CiAgICAgICAgIGNhc2Ug
Q2FsbDoKICAgICAgICAgY2FzZSBDb25zdHJ1Y3Q6CisgICAgICAgIGNhc2UgUHJvZmlsZWRDYWxs
OgorICAgICAgICBjYXNlIFByb2ZpbGVkQ29uc3RydWN0OgogICAgICAgICBjYXNlIE5hdGl2ZUNh
bGw6CiAgICAgICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OgogICAgICAgICBjYXNlIEdldEJ5T2Zm
c2V0OgpAQCAtMTA0NCw5ICsxMDQxLDExIEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgbV9vcElu
Zm8yID0gcHJlZGljdGlvbjsKICAgICB9CiAgICAgCi0gICAgYm9vbCBjYW5CZUtub3duRnVuY3Rp
b24oKQorICAgIGJvb2wgaGFzQ2VsbE9wZXJhbmQoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChv
cCgpKSB7CisgICAgICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OgorICAgICAg
ICBjYXNlIENoZWNrQ2VsbDoKICAgICAgICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6CiAgICAgICAg
IGNhc2UgTmF0aXZlQ2FsbDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTA1NSw1NCAr
MTA1NCwxNiBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBib29sIGhh
c0tub3duRnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgc3dpdGNoIChvcCgpKSB7Ci0gICAgICAg
IGNhc2UgTmF0aXZlQ29uc3RydWN0OgotICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6Ci0gICAgICAg
ICAgICByZXR1cm4gKGJvb2wpbV9vcEluZm87Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgSlNGdW5jdGlvbiog
a25vd25GdW5jdGlvbigpCi0gICAgewotICAgICAgICBBU1NFUlQoY2FuQmVLbm93bkZ1bmN0aW9u
KCkpOwotICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEpTRnVuY3Rpb24qPihtX29wSW5mbyk7
Ci0gICAgfQotCi0gICAgdm9pZCBnaXZlS25vd25GdW5jdGlvbihKU0Z1bmN0aW9uKiBjYWxsRGF0
YSkgCisgICAgRnJvemVuVmFsdWUqIGNlbGxPcGVyYW5kKCkKICAgICB7Ci0gICAgICAgIEFTU0VS
VChjYW5CZUtub3duRnVuY3Rpb24oKSk7Ci0gICAgICAgIG1fb3BJbmZvID0gYml0d2lzZV9jYXN0
PHVpbnRwdHJfdD4oY2FsbERhdGEpOwotICAgIH0KLQotICAgIGJvb2wgaGFzRnVuY3Rpb24oKQot
ICAgIHsKLSAgICAgICAgc3dpdGNoIChvcCgpKSB7Ci0gICAgICAgIGNhc2UgQ2hlY2tGdW5jdGlv
bjoKLSAgICAgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6Ci0gICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEZyb3plblZhbHVlKiBmdW5jdGlvbigpCi0gICAg
ewotICAgICAgICBBU1NFUlQoaGFzRnVuY3Rpb24oKSk7CisgICAgICAgIEFTU0VSVChoYXNDZWxs
T3BlcmFuZCgpKTsKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RnJvemVuVmFsdWUq
PihtX29wSW5mbyk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaGFzRXhlY3V0YWJsZSgpCisgICAg
dm9pZCBzZXRDZWxsT3BlcmFuZChGcm96ZW5WYWx1ZSogdmFsdWUpCiAgICAgewotICAgICAgICBy
ZXR1cm4gb3AoKSA9PSBDaGVja0V4ZWN1dGFibGU7Ci0gICAgfQotICAgIAotICAgIEV4ZWN1dGFi
bGVCYXNlKiBleGVjdXRhYmxlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBqc0Nhc3Q8RXhlY3V0
YWJsZUJhc2UqPihyZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KG1fb3BJbmZvKSk7CisgICAgICAg
IEFTU0VSVChoYXNDZWxsT3BlcmFuZCgpKTsKKyAgICAgICAgbV9vcEluZm8gPSBiaXR3aXNlX2Nh
c3Q8dWludHB0cl90Pih2YWx1ZSk7CiAgICAgfQogICAgIAogICAgIGJvb2wgaGFzVmFyaWFibGVX
YXRjaHBvaW50U2V0KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgJKHJldmlzaW9uIDE3MjkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDcgKzE1Myw3IEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhQdXRCeUlkRmx1c2gsIE5vZGVNdXN0R2VuZXJh
dGUgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKICAgICBtYWNybyhQ
dXRCeUlkRGlyZWN0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKICAg
ICBtYWNybyhDaGVja1N0cnVjdHVyZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAotICAgIG1hY3JvKENo
ZWNrRXhlY3V0YWJsZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEdldEV4ZWN1dGFi
bGUsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFB1dFN0cnVjdHVyZSwgTm9kZU11c3RHZW5l
cmF0ZSkgXAogICAgIG1hY3JvKEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlLCBOb2RlTXVzdEdlbmVy
YXRlIHwgTm9kZVJlc3VsdFN0b3JhZ2UpIFwKICAgICBtYWNybyhSZWFsbG9jYXRlUHJvcGVydHlT
dG9yYWdlLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdFN0b3JhZ2UpIFwKQEAgLTE4NSw3
ICsxODUsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oVmFy
aWFibGVXYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oVmFySW5qZWN0
aW9uV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEZ1bmN0aW9uUmVl
bnRyeVdhdGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKLSAgICBtYWNybyhDaGVja0Z1bmN0
aW9uLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oQ2hlY2tDZWxsLCBOb2RlTXVzdEdl
bmVyYXRlKSBcCisgICAgbWFjcm8oQ2hlY2tCYWRDZWxsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAg
ICAgbWFjcm8oQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgbWFjcm8oQ2hlY2tJbkJvdW5kcywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIFwKQEAg
LTIxNCw2ICsyMTUsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyog
Q2FsbHMuICovXAogICAgIG1hY3JvKENhbGwsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJh
dGUgfCBOb2RlSGFzVmFyQXJncyB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCiAgICAgbWFjcm8oQ29u
c3RydWN0LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3Mg
fCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAorICAgIG1hY3JvKFByb2ZpbGVkQ2FsbCwgTm9kZVJlc3Vs
dEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzIHwgTm9kZUNsb2JiZXJzV29y
bGQpIFwKKyAgICBtYWNybyhQcm9maWxlZENvbnN0cnVjdCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11
c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKICAgICBt
YWNybyhOYXRpdmVDYWxsLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhh
c1ZhckFyZ3MgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAogICAgIG1hY3JvKE5hdGl2ZUNvbnN0cnVj
dCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzIHwgTm9k
ZUNsb2JiZXJzV29ybGQpIFwKICAgICBcCkBAIC0yODYsNiArMjg5LDExIEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBkaWZmZXJlbnQgY29tcGlsZXIuICovXAogICAg
IG1hY3JvKEZvcmNlT1NSRXhpdCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIFwKKyAgICAvKiBW
ZW5kcyBhIGJvdHRvbSBKUyB2YWx1ZS4gSXQgaXMgaW52YWxpZCB0byBldmVyIGV4ZWN1dGUgdGhp
cy4gVXNlZnVsIGZvciBjYXNlcyAqL1wKKyAgICAvKiB3aGVyZSB3ZSBrbm93IHRoYXQgd2Ugd291
bGQgaGF2ZSBleGl0ZWQgYnV0IHdlJ2QgbGlrZSB0byBzdGlsbCB0cmFjayB0aGUgY29udHJvbCAq
L1wKKyAgICAvKiBmbG93LiAqL1wKKyAgICBtYWNybyhCb3R0b21WYWx1ZSwgTm9kZVJlc3VsdEpT
KSBcCisgICAgXAogICAgIC8qIENoZWNrcyB0aGUgd2F0Y2hkb2cgdGltZXIuIElmIHRoZSB0aW1l
ciBoYXMgZmlyZWQsIHdlIE9TUiBleGl0IHRvIHRoZSAqLyBcCiAgICAgLyogYmFzZWxpbmUgSklU
IHRvIHJlZG8gdGhlIHdhdGNoZG9nIHRpbWVyIGNoZWNrLCBhbmQgc2VydmljZSB0aGUgdGltZXIu
ICovIFwKICAgICBtYWNybyhDaGVja1dhdGNoZG9nVGltZXIsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRp
b25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
aGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTcyOTI3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTIsOCArOTIsMTAgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4ucmVtb3ZlRWRnZShpLS0pOwogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+
Y2hpbGRyZW4uaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1f
YWxsb2NhdG9yLmZyZWUobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+Y29udmVydFRvQ2hlY2soKTsKICAgICAgICAgICAgICAgICB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21SZW1vdmFsUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbVJlbW92YWxQ
aGFzZS5jcHAJKHJldmlzaW9uIDE3MjkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNSw2ICsxMjUs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTE0Miw2ICsxNDMsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4u
aXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9y
LmZyZWUobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICB9CkBA
IC0xNDksOCArMTUxLDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNhc2UgSGFyZFBoYW50b206IHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNzI5MjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTg4LDYgKzE4OCw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0RGlyZWN0
UG5hbWU6CiAgICAgICAgIGNhc2UgQ2FsbDoKICAgICAgICAgY2FzZSBDb25zdHJ1Y3Q6CisgICAg
ICAgIGNhc2UgUHJvZmlsZWRDYWxsOgorICAgICAgICBjYXNlIFByb2ZpbGVkQ29uc3RydWN0Ogog
ICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6CiAgICAgICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0Ogog
ICAgICAgICBjYXNlIEdldEdsb2JhbFZhcjoKQEAgLTE5Niw3ICsxOTgsOCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNl
IEdldEdldHRlclNldHRlckJ5T2Zmc2V0OiB7CisgICAgICAgIGNhc2UgR2V0R2V0dGVyU2V0dGVy
QnlPZmZzZXQ6CisgICAgICAgIGNhc2UgR2V0RXhlY3V0YWJsZTogewogICAgICAgICAgICAgY2hh
bmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNDZWxsT3RoZXIpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KQEAgLTY0Miw4ICs2NDUsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEZv
cmNlT1NSRXhpdDoKICAgICAgICAgY2FzZSBTZXRBcmd1bWVudDoKICAgICAgICAgY2FzZSBDaGVj
a1N0cnVjdHVyZToKLSAgICAgICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6Ci0gICAgICAgIGNhc2Ug
Q2hlY2tGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBDaGVja0NlbGw6CisgICAgICAgIGNhc2UgQ2hl
Y2tCYWRDZWxsOgogICAgICAgICBjYXNlIFB1dFN0cnVjdHVyZToKICAgICAgICAgY2FzZSBUZWFy
T2ZmQWN0aXZhdGlvbjoKICAgICAgICAgY2FzZSBUZWFyT2ZmQXJndW1lbnRzOgpAQCAtNjY1LDYg
KzY2OCwxMCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFpvbWJpZUhpbnQ6CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIAorICAgICAgICAvLyBUaGlzIGdldHMgaWdub3JlZCBiZWNh
dXNlIGl0IG9ubHkgcHJldGVuZHMgdG8gcHJvZHVjZSBhIHZhbHVlLgorICAgICAgICBjYXNlIEJv
dHRvbVZhbHVlOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKICAgICAgICAgLy8g
VGhpcyBnZXRzIGlnbm9yZWQgYmVjYXVzZSBpdCBhbHJlYWR5IGhhcyBhIHByZWRpY3Rpb24uCiAg
ICAgICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAgICAgICAgICAgICBicmVhazsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZp
c2lvbiAxNzI5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0
ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAgICBjYXNl
IFB1dEJ5SWREaXJlY3Q6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKLSAgICBjYXNlIENoZWNr
RXhlY3V0YWJsZToKKyAgICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRCdXR0ZXJm
bHk6CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgQXJyYXlpZnk6CkBAIC0xNzQsNyAr
MTc0LDggQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNh
c2UgUHV0R2xvYmFsVmFyOgogICAgIGNhc2UgVmFyaWFibGVXYXRjaHBvaW50OgogICAgIGNhc2Ug
VmFySW5qZWN0aW9uV2F0Y2hwb2ludDoKLSAgICBjYXNlIENoZWNrRnVuY3Rpb246CisgICAgY2Fz
ZSBDaGVja0NlbGw6CisgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgY2FzZSBBbGxvY2F0aW9u
UHJvZmlsZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBSZWdFeHBFeGVjOgogICAgIGNhc2UgUmVnRXhw
VGVzdDoKQEAgLTE4Nyw2ICsxODgsOCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0
ZVR5cGUmIHN0CiAgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6CiAgICAgY2FzZSBDYWxsOgogICAg
IGNhc2UgQ29uc3RydWN0OgorICAgIGNhc2UgUHJvZmlsZWRDYWxsOgorICAgIGNhc2UgUHJvZmls
ZWRDb25zdHJ1Y3Q6CiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdBcnJheToKICAg
ICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CkBAIC0yNzMsNiArMjc2LDExIEBAIGJvb2wgc2FmZVRv
RXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIE5hdGl2ZUNvbnN0cnVjdDoK
ICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBUT0RPOiBhZGQgYSBjaGVjayBmb3IgYWxyZWFkeSBj
aGVja2VkLiAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzc2OQog
CisgICAgY2FzZSBCb3R0b21WYWx1ZToKKyAgICAgICAgLy8gSWYgaW4gZG91YnQsIGFzc3VtZSB0
aGF0IHRoaXMgaXNuJ3Qgc2FmZSB0byBleGVjdXRlLCBqdXN0IGJlY2F1c2Ugd2UgaGF2ZSBubyB3
YXkgb2YKKyAgICAgICAgLy8gY29tcGlsaW5nIHRoaXMgbm9kZS4KKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCiAgICAgY2FzZSBHZXRCeVZhbDoKICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0
b3JhZ2U6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24g
MTcyOTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQwLDkgKzY0MCw5IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVNaXNjU3RyaWN0RXEKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENh
bGwoTm9kZSogbm9kZSkKIHsKLSAgICBib29sIGlzQ2FsbCA9IG5vZGUtPm9wKCkgPT0gQ2FsbDsK
KyAgICBib29sIGlzQ2FsbCA9IG5vZGUtPm9wKCkgPT0gQ2FsbCB8fCBub2RlLT5vcCgpID09IFBy
b2ZpbGVkQ2FsbDsKICAgICBpZiAoIWlzQ2FsbCkKLSAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkg
PT0gQ29uc3RydWN0KTsKKyAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gQ29uc3RydWN0IHx8
IG5vZGUtPm9wKCkgPT0gUHJvZmlsZWRDb25zdHJ1Y3QpOwogCiAgICAgLy8gRm9yIGNvbnN0cnVj
dG9ycywgdGhlIHRoaXMgYXJndW1lbnQgaXMgbm90IHBhc3NlZCBidXQgd2UgaGF2ZSB0byBtYWtl
IHNwYWNlCiAgICAgLy8gZm9yIGl0LgpAQCAtNjg5LDYgKzY4OSwxMyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAKICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3Jp
Z2luKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgCisgICAgQ2FsbExpbmtJbmZvKiBpbmZv
ID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbygpOworCisgICAgaWYgKG5vZGUt
Pm9wKCkgPT0gUHJvZmlsZWRDYWxsIHx8IG5vZGUtPm9wKCkgPT0gUHJvZmlsZWRDb25zdHJ1Y3Qp
IHsKKyAgICAgICAgbV9qaXQudm0oKS0+Y2FsbEVkZ2VMb2ctPmVtaXRMb2dDb2RlKAorICAgICAg
ICAgICAgbV9qaXQsIGluZm8tPmNhbGxFZGdlUHJvZmlsZSwgY2FsbGVlLmpzVmFsdWVSZWdzKCkp
OworICAgIH0KKyAgICAKICAgICBzbG93UGF0aC5hcHBlbmQoYnJhbmNoTm90Q2VsbChjYWxsZWUu
anNWYWx1ZVJlZ3MoKSkpOwogICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hQdHJXaXRo
UGF0Y2goTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBjYWxsZWVQYXlsb2FkR1BSLCB0YXJnZXRU
b0NoZWNrKSk7CiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjYWxs
ZWVQYXlsb2FkR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9zY29wZSkpLCByZXN1
bHRQYXlsb2FkR1BSKTsKQEAgLTcxMyw3ICs3MjAsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpl
bWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgIG1faml0Lm1vdmUoY2FsbGVlUGF5bG9hZEdQUiwg
R1BSSW5mbzo6cmVnVDApOwogICAgICAgICBtX2ppdC5tb3ZlKGNhbGxlZVRhZ0dQUiwgR1BSSW5m
bzo6cmVnVDEpOwogICAgIH0KLSAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2ppdC5jb2RlQmxv
Y2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7CiAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihpbmZvKSwgR1BSSW5mbzo6cmVnVDIpOwogICAgIEpJVENvbXBpbGVyOjpD
YWxsIHNsb3dDYWxsID0gbV9qaXQubmVhckNhbGwoKTsKIApAQCAtMzY3NSwxOCArMzY4MSwyMSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBp
bGVHZXRBcnJheUxlbmd0aChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgIGNh
c2UgQ2hlY2tGdW5jdGlvbjogewotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmdW5jdGlv
bih0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkRnVu
Y3Rpb24sIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGZ1bmN0aW9uLmdwcigpKSwgbm9kZS0+
Y2hpbGQxKCksIG1faml0LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBmdW5j
dGlvbi5ncHIoKSwgbm9kZS0+ZnVuY3Rpb24oKS0+dmFsdWUoKS5hc0NlbGwoKSkpOworICAgIGNh
c2UgQ2hlY2tDZWxsOiB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGNlbGwodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZENlbGwsIEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKGNlbGwuZ3ByKCkpLCBub2RlLT5jaGlsZDEoKSwgbV9qaXQu
YnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGNlbGwuZ3ByKCksIG5vZGUtPmNl
bGxPcGVyYW5kKCktPnZhbHVlKCkuYXNDZWxsKCkpKTsKICAgICAgICAgbm9SZXN1bHQobm9kZSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOiB7Cisg
ICAgY2FzZSBHZXRFeGVjdXRhYmxlOiB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZ1
bmN0aW9uKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgc3BlY3VsYXRlQ2VsbFR5cGUo
bm9kZS0+Y2hpbGQxKCksIGZ1bmN0aW9uLmdwcigpLCBTcGVjRnVuY3Rpb24sIEpTRnVuY3Rpb25U
eXBlKTsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRFeGVjdXRhYmxlLCBKU1ZhbHVlU291
cmNlOjp1bmJveGVkQ2VsbChmdW5jdGlvbi5ncHIoKSksIG5vZGUtPmNoaWxkMSgpLCBtX2ppdC5i
cmFuY2hXZWFrUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3Mo
ZnVuY3Rpb24uZ3ByKCksIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwgbm9kZS0+
ZXhlY3V0YWJsZSgpKSk7Ci0gICAgICAgIG5vUmVzdWx0KG5vZGUpOworICAgICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBmdW5jdGlvbik7CisgICAgICAgIEdQUlJlZyBmdW5j
dGlvbkdQUiA9IGZ1bmN0aW9uLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVz
dWx0LmdwcigpOworICAgICAgICBzcGVjdWxhdGVDZWxsVHlwZShub2RlLT5jaGlsZDEoKSwgZnVu
Y3Rpb25HUFIsIFNwZWNGdW5jdGlvbiwgSlNGdW5jdGlvblR5cGUpOworICAgICAgICBtX2ppdC5s
b2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uR1BSLCBKU0Z1bmN0aW9uOjpvZmZz
ZXRPZkV4ZWN1dGFibGUoKSksIHJlc3VsdEdQUik7CisgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKQEAgLTQxNTYsNiAr
NDE2NSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAg
IGNhc2UgQ2FsbDoKICAgICBjYXNlIENvbnN0cnVjdDoKKyAgICBjYXNlIFByb2ZpbGVkQ2FsbDoK
KyAgICBjYXNlIFByb2ZpbGVkQ29uc3RydWN0OgogICAgICAgICBlbWl0Q2FsbChub2RlKTsKICAg
ICAgICAgYnJlYWs7CiAKQEAgLTQ4OTIsNiArNDkwMyw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CiAgICAgY2Fz
ZSBOYXRpdmVDYWxsOgogICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OgorICAgIGNhc2UgQ2hlY2tC
YWRDZWxsOgorICAgIGNhc2UgQm90dG9tVmFsdWU6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTcy
OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjI2LDEwICs2MjYsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlTWlzY1N0cmljdEVxCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5v
ZGUqIG5vZGUpCiB7Ci0KLSAgICBib29sIGlzQ2FsbCA9IG5vZGUtPm9wKCkgPT0gQ2FsbDsKKyAg
ICBib29sIGlzQ2FsbCA9IG5vZGUtPm9wKCkgPT0gQ2FsbCB8fCBub2RlLT5vcCgpID09IFByb2Zp
bGVkQ2FsbDsKICAgICBpZiAoIWlzQ2FsbCkKLSAgICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFw
aCgpLCBub2RlLCBub2RlLT5vcCgpID09IENvbnN0cnVjdCk7CisgICAgICAgIERGR19BU1NFUlQo
bV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+b3AoKSA9PSBDb25zdHJ1Y3QgfHwgbm9kZS0+b3Ao
KSA9PSBQcm9maWxlZENvbnN0cnVjdCk7CiAgICAgCiAgICAgLy8gRm9yIGNvbnN0cnVjdG9ycywg
dGhlIHRoaXMgYXJndW1lbnQgaXMgbm90IHBhc3NlZCBidXQgd2UgaGF2ZSB0byBtYWtlIHNwYWNl
CiAgICAgLy8gZm9yIGl0LgpAQCAtNjcwLDYgKzY2OSwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0Q2FsbChOb2RlKiBub2RlCiAKICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgCisgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0lu
Zm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7CisgICAgCisgICAgaWYg
KG5vZGUtPm9wKCkgPT0gUHJvZmlsZWRDYWxsIHx8IG5vZGUtPm9wKCkgPT0gUHJvZmlsZWRDb25z
dHJ1Y3QpIHsKKyAgICAgICAgbV9qaXQudm0oKS0+Y2FsbEVkZ2VMb2ctPmVtaXRMb2dDb2RlKAor
ICAgICAgICAgICAgbV9qaXQsIGNhbGxMaW5rSW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBKU1ZhbHVl
UmVncyhjYWxsZWVHUFIpKTsKKyAgICB9CisKICAgICBzbG93UGF0aCA9IG1faml0LmJyYW5jaFB0
cldpdGhQYXRjaChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxlZUdQUiwgdGFyZ2V0VG9D
aGVjaywgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoMCkpOwogCiAgICAgbV9qaXQubG9h
ZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjYWxsZWVHUFIsIE9CSkVDVF9PRkZTRVRPRihK
U0Z1bmN0aW9uLCBtX3Njb3BlKSksIHJlc3VsdEdQUik7CkBAIC02ODIsNyArNjg4LDYgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgIHNsb3dQYXRoLmxpbmso
Jm1faml0KTsKICAgICAKICAgICBtX2ppdC5tb3ZlKGNhbGxlZUdQUiwgR1BSSW5mbzo6cmVnVDAp
OyAvLyBDYWxsZWUgbmVlZHMgdG8gYmUgaW4gcmVnVDAKLSAgICBDYWxsTGlua0luZm8qIGNhbGxM
aW5rSW5mbyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKICAgICBtX2pp
dC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUklu
Zm86OnJlZ1QyKTsgLy8gTGluayBpbmZvIG5lZWRzIHRvIGJlIGluIHJlZ1QyCiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgc2xvd0NhbGwgPSBtX2ppdC5uZWFyQ2FsbCgpOwogICAgIApAQCAtMzc2OCwx
OCArMzc3MywyMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIAotICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjogewotICAgICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBmdW5jdGlvbih0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soQmFkRnVuY3Rpb24sIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGZ1bmN0aW9uLmdw
cigpKSwgbm9kZS0+Y2hpbGQxKCksIG1faml0LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6Ok5v
dEVxdWFsLCBmdW5jdGlvbi5ncHIoKSwgbm9kZS0+ZnVuY3Rpb24oKS0+dmFsdWUoKS5hc0NlbGwo
KSkpOworICAgIGNhc2UgQ2hlY2tDZWxsOiB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGNlbGwodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJh
ZENlbGwsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGNlbGwuZ3ByKCkpLCBub2RlLT5jaGls
ZDEoKSwgbV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGNlbGwuZ3By
KCksIG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuYXNDZWxsKCkpKTsKICAgICAgICAgbm9S
ZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBD
aGVja0V4ZWN1dGFibGU6IHsKKyAgICBjYXNlIEdldEV4ZWN1dGFibGU6IHsKICAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAg
ICBzcGVjdWxhdGVDZWxsVHlwZShub2RlLT5jaGlsZDEoKSwgZnVuY3Rpb24uZ3ByKCksIFNwZWNG
dW5jdGlvbiwgSlNGdW5jdGlvblR5cGUpOwotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZEV4
ZWN1dGFibGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGZ1bmN0aW9uLmdwcigpKSwgbm9k
ZS0+Y2hpbGQxKCksIG1faml0LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBK
SVRDb21waWxlcjo6QWRkcmVzcyhmdW5jdGlvbi5ncHIoKSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZF
eGVjdXRhYmxlKCkpLCBub2RlLT5leGVjdXRhYmxlKCkpKTsKLSAgICAgICAgbm9SZXN1bHQobm9k
ZSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGZ1bmN0aW9uKTsK
KyAgICAgICAgR1BSUmVnIGZ1bmN0aW9uR1BSID0gZnVuY3Rpb24uZ3ByKCk7CisgICAgICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIHNwZWN1bGF0ZUNlbGxUeXBl
KG5vZGUtPmNoaWxkMSgpLCBmdW5jdGlvbkdQUiwgU3BlY0Z1bmN0aW9uLCBKU0Z1bmN0aW9uVHlw
ZSk7CisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoZnVuY3Rpb25H
UFIsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAg
ICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAg
ICAgICAgIApAQCAtNDIxOSw5ICs0MjI3LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKIAogICAgIGNhc2UgQ2FsbDoKICAgICBjYXNlIENvbnN0cnVjdDoKKyAg
ICBjYXNlIFByb2ZpbGVkQ2FsbDoKKyAgICBjYXNlIFByb2ZpbGVkQ29uc3RydWN0OgogICAgICAg
ICBlbWl0Q2FsbChub2RlKTsKICAgICAgICAgYnJlYWs7Ci0KKyAgICAgICAgCiAgICAgY2FzZSBD
cmVhdGVBY3RpdmF0aW9uOiB7CiAgICAgICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9k
ZSwgIW5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICAKQEAg
LTQ5NzAsNyArNDk4MCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0
OgogICAgIGNhc2UgRmlhdEludDUyOgotICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwg
bm9kZSwgIlVuZXhwZWN0ZWQgRlRMIG5vZGUiKTsKKyAgICBjYXNlIENoZWNrQmFkQ2VsbDoKKyAg
ICBjYXNlIEJvdHRvbVZhbHVlOgorICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9k
ZSwgIlVuZXhwZWN0ZWQgbm9kZSIpOwogICAgICAgICBicmVhazsKICAgICB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZp
c2lvbiAxNzI5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTM1NCw2ICs1MzU0LDEwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRTd2l0Y2goTm9kZSogbm8KICAgICBjYXNlIFN3aXRjaFN0cmluZzogewog
ICAgICAgICBlbWl0U3dpdGNoU3RyaW5nKG5vZGUsIGRhdGEpOwogICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGNhc2UgU3dpdGNoQ2VsbDogeworICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3Jh
cGgoKSwgbm9kZSwgIkJhZCBzd2l0Y2gga2luZCIpOworICAgICAgICByZXR1cm47CiAgICAgfSB9
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9u
UGhhc2UuY3BwCShyZXZpc2lvbiAxNzI5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIs
MTAgKzYyLDYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+
YXQobm9kZUluZGV4KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHN3aXRjaCAobm9k
ZS0+b3AoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOgotICAgICAg
ICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShub2RlLT5leGVjdXRhYmxlKCktPnN0cnVj
dHVyZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICAgICAgICAgICAgICAgICAg
cmVnaXN0ZXJTdHJ1Y3R1cmVzKG5vZGUtPnN0cnVjdHVyZVNldCgpKTsKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENo
ZWNrSW5qZWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE3MjkyNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEzICs1MCwxNyBAQCBwdWJsaWM6CiAgICAgICAg
IGlmICghT3B0aW9uczo6dXNlRlRMSklUKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIAotICAgICAgICBpZiAobV9ncmFwaC5tX3Byb2ZpbGVkQmxvY2stPm1fZGlkRmFpbEZU
TENvbXBpbGF0aW9uKQorICAgICAgICBpZiAobV9ncmFwaC5tX3Byb2ZpbGVkQmxvY2stPm1fZGlk
RmFpbEZUTENvbXBpbGF0aW9uKSB7CisgICAgICAgICAgICByZW1vdmVGVExQcm9maWxpbmcoKTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQogICAgICAgICAKICNpZiBFTkFC
TEUoRlRMX0pJVCkKICAgICAgICAgRlRMOjpDYXBhYmlsaXR5TGV2ZWwgbGV2ZWwgPSBGVEw6OmNh
bkNvbXBpbGUobV9ncmFwaCk7Ci0gICAgICAgIGlmIChsZXZlbCA9PSBGVEw6OkNhbm5vdENvbXBp
bGUpCisgICAgICAgIGlmIChsZXZlbCA9PSBGVEw6OkNhbm5vdENvbXBpbGUpIHsKKyAgICAgICAg
ICAgIHJlbW92ZUZUTFByb2ZpbGluZygpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoIU9wdGlvbnM6OmVuYWJsZU9TUkVudHJ5VG9G
VEwoKSkKICAgICAgICAgICAgIGxldmVsID0gRlRMOjpDYW5Db21waWxlOwpAQCAtMTE4LDYgKzEy
MiwzMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZiAvLyBFTkFCTEUo
RlRMX0pJVCkKICAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCByZW1vdmVGVExQcm9maWxpbmco
KQorICAgIHsKKyAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51
bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9j
ayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CisgICAgICAgICAgICBpZiAoIWJsb2NrKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIG5vZGVJbmRleCA9IDA7IG5vZGVJbmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbm9k
ZUluZGV4KSB7CisgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5k
ZXgpOworICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgeworICAgICAgICAgICAg
ICAgIGNhc2UgUHJvZmlsZWRDYWxsOgorICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcChD
YWxsKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgIGNhc2UgUHJvZmlsZWRDb25zdHJ1Y3Q6CisgICAgICAgICAgICAgICAg
ICAgIG5vZGUtPnNldE9wKENvbnN0cnVjdCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CiB9OwogCiBib29sIHBlcmZvcm1UaWVyVXBDaGVja0luamVjdGlvbihHcmFw
aCYgZ3JhcGgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNw
cAkocmV2aXNpb24gMTcyOTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxp
ZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMCw3ICsyMDAsOCBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbWF5RXhpdCht
X2dyYXBoLCBub2RlKSB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdC5pc1NldCgpKTsKICAgICAgICAg
ICAgICAgICBWQUxJREFURSgobm9kZSksICFub2RlLT5oYXNTdHJ1Y3R1cmUoKSB8fCAhIW5vZGUt
PnN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFub2RlLT5o
YXNGdW5jdGlvbigpIHx8IG5vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkuaXNGdW5jdGlvbigpKTsK
KyAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFub2RlLT5oYXNDZWxsT3BlcmFuZCgp
IHx8IG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuaXNDZWxsKCkpOworICAgICAgICAgICAg
ICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhhc0NlbGxPcGVyYW5kKCkgfHwgISFub2RlLT5j
ZWxsT3BlcmFuZCgpLT52YWx1ZSgpKTsKICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgaWYgKCEobm9kZS0+ZmxhZ3MoKSAmIE5vZGVIYXNWYXJBcmdzKSkgewogICAgICAgICAgICAg
ICAgICAgICBpZiAoIW5vZGUtPmNoaWxkMigpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAxNzI5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dhdGNocG9p
bnRDb2xsZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTQsNyArMTE0LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQWxs
b2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OgotICAgICAgICAgICAgYWRkTGF6aWx5KGpzQ2FzdDxK
U0Z1bmN0aW9uKj4obV9ub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpKS0+YWxsb2NhdGlvblByb2Zp
bGVXYXRjaHBvaW50U2V0KCkpOworICAgICAgICAgICAgYWRkTGF6aWx5KGpzQ2FzdDxKU0Z1bmN0
aW9uKj4obV9ub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpKS0+YWxsb2NhdGlvblByb2ZpbGVX
YXRjaHBvaW50U2V0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAg
ICAgY2FzZSBWYXJpYWJsZVdhdGNocG9pbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAxNzI5MjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwNCw3ICsxMDQsOCBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSog
CiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAgIGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6CiAg
ICAgY2FzZSBTdHJpbmdDaGFyQXQ6Ci0gICAgY2FzZSBDaGVja0Z1bmN0aW9uOgorICAgIGNhc2Ug
Q2hlY2tDZWxsOgorICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgIGNhc2UgU3RyaW5nQ2hhckNv
ZGVBdDoKICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgUmVhbGxv
Y2F0ZVByb3BlcnR5U3RvcmFnZToKQEAgLTEyNiw3ICsxMjcsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0
eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVy
OgogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKLSAgICBjYXNlIENo
ZWNrRXhlY3V0YWJsZToKKyAgICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRTY29w
ZToKICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDoKICAgICBjYXNlIENoZWNr
QXJndW1lbnRzTm90Q3JlYXRlZDoKQEAgLTE2Niw4ICsxNjcsMTQgQEAgaW5saW5lIENhcGFiaWxp
dHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgR2V0R2VuZXJpY1Byb3BlcnR5RW51
bWVyYXRvcjoKICAgICBjYXNlIEdldEVudW1lcmF0b3JQbmFtZToKICAgICBjYXNlIFRvSW5kZXhT
dHJpbmc6CisgICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICAgICAgLy8gVGhlc2UgYXJlIE9LLgog
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFByb2ZpbGVkQ2FsbDoKKyAgICBjYXNlIFByb2ZpbGVk
Q29uc3RydWN0OgorICAgICAgICAvLyBUaGVzZSBhcmUgT0sgbm90IGJlY2F1c2UgdGhlIEZUTCBj
YW4gc3VwcG9ydCB0aGVtLCBidXQgYmVjYXVzZSBpZiB0aGUgREZHIHNlZXMgb25lIG9mCisgICAg
ICAgIC8vIHRoZXNlIHRoZW4gdGhlIEZUTCB3aWxsIHNlZSBhIG5vcm1hbCBDYWxsL0NvbnN0cnVj
dC4KKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJZGVudGl0eToKICAgICAgICAgLy8gTm8gYmFj
a2VuZCBoYW5kbGVzIHRoaXMgYmVjYXVzZSBpdCB3aWxsIGJlIG9wdGltaXplZCBvdXQuIEJ1dCB3
ZSBtYXkgY2hlY2sKICAgICAgICAgLy8gZm9yIGNhcGFiaWxpdGllcyBiZWZvcmUgb3B0aW1pemF0
aW9uLiBJdCB3b3VsZCBiZSBhIGRlZXAgZXJyb3IgdG8gcmVtb3ZlIHRoaXMKQEAgLTMyNiw2ICsz
MzMsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgICAg
IHN3aXRjaCAobm9kZS0+c3dpdGNoRGF0YSgpLT5raW5kKSB7CiAgICAgICAgIGNhc2UgU3dpdGNo
SW1tOgogICAgICAgICBjYXNlIFN3aXRjaENoYXI6CisgICAgICAgIGNhc2UgU3dpdGNoQ2VsbDoK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJu
IENhbm5vdENvbXBpbGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9MTFZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTcyOTI3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcg
KzY3LDYgQEAgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBzdGF0aWMgdm9pZCBmdGxVbgogTk9fUkVU
VVJOX0RVRV9UT19DUkFTSCBzdGF0aWMgdm9pZCBmdGxVbnJlYWNoYWJsZSgKICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQmxvY2tJbmRleCBibG9ja0luZGV4LCB1bnNpZ25lZCBub2RlSW5kZXgp
CiB7Ci0gICAgCiAgICAgZGF0YUxvZygiQ3Jhc2hpbmcgaW4gdGhvdWdodC10by1iZS11bnJlYWNo
YWJsZSBGVEwtZ2VuZXJhdGVkIGNvZGUgZm9yICIsIHBvaW50ZXJEdW1wKGNvZGVCbG9jayksICIg
YXQgYmFzaWMgYmxvY2sgIyIsIGJsb2NrSW5kZXgpOwogICAgIGlmIChub2RlSW5kZXggIT0gVUlO
VF9NQVgpCiAgICAgICAgIGRhdGFMb2coIiwgbm9kZSBAIiwgbm9kZUluZGV4KTsKQEAgLTE1Mywx
MSArMTUyLDE3IEBAIHB1YmxpYzoKICAgICAgICAgZm9yICh1bnNpZ25lZCBibG9ja0luZGV4ID0g
ZGVwdGhGaXJzdC5zaXplKCk7IGJsb2NrSW5kZXgtLTsgKSB7CiAgICAgICAgICAgICBCYXNpY0Js
b2NrKiBibG9jayA9IGRlcHRoRmlyc3RbYmxvY2tJbmRleF07CiAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIG5vZGVJbmRleCA9IGJsb2NrLT5zaXplKCk7IG5vZGVJbmRleC0tOyApIHsKLSAgICAg
ICAgICAgICAgICBOb2RlKiBtX25vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKLSAgICAgICAg
ICAgICAgICBpZiAobV9ub2RlLT5oYXNLbm93bkZ1bmN0aW9uKCkpIHsKKyAgICAgICAgICAgICAg
ICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7CisgICAgICAgICAgICAgICAgc3dp
dGNoIChub2RlLT5vcCgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBOYXRpdmVDYWxsOgorICAg
ICAgICAgICAgICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OiB7CiAgICAgICAgICAgICAgICAgICAg
IGludCBudW1BcmdzID0gbV9ub2RlLT5udW1DaGlsZHJlbigpOwogICAgICAgICAgICAgICAgICAg
ICBpZiAobnVtQXJncyA+IG1heE51bWJlck9mQXJndW1lbnRzKQogICAgICAgICAgICAgICAgICAg
ICAgICAgbWF4TnVtYmVyT2ZBcmd1bWVudHMgPSBudW1BcmdzOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogICAgICAgICB9CkBAIC00NjgsMTEgKzQ3MywxNCBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IENoZWNrU3RydWN0dXJlOgogICAgICAgICAgICAgY29tcGlsZUNoZWNrU3RydWN0dXJlKCk7CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOgotICAgICAgICAg
ICAgY29tcGlsZUNoZWNrRnVuY3Rpb24oKTsKKyAgICAgICAgY2FzZSBDaGVja0NlbGw6CisgICAg
ICAgICAgICBjb21waWxlQ2hlY2tDZWxsKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBDaGVja0JhZENlbGw6CisgICAgICAgICAgICBjb21waWxlQ2hlY2tCYWRDZWxsKCk7CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6Ci0gICAgICAg
ICAgICBjb21waWxlQ2hlY2tFeGVjdXRhYmxlKCk7CisgICAgICAgIGNhc2UgR2V0RXhlY3V0YWJs
ZToKKyAgICAgICAgICAgIGNvbXBpbGVHZXRFeGVjdXRhYmxlKCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgICAgICAgICAgY29tcGls
ZUFycmF5aWZ5VG9TdHJ1Y3R1cmUoKTsKQEAgLTE3NDMsMjYgKzE3NTEsMjUgQEAgcHJpdmF0ZToK
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAgICAgfQog
ICAgIAotICAgIHZvaWQgY29tcGlsZUNoZWNrRnVuY3Rpb24oKQorICAgIHZvaWQgY29tcGlsZUNo
ZWNrQ2VsbCgpCiAgICAgewogICAgICAgICBMVmFsdWUgY2VsbCA9IGxvd0NlbGwobV9ub2RlLT5j
aGlsZDEoKSk7CiAgICAgICAgIAogICAgICAgICBzcGVjdWxhdGUoCi0gICAgICAgICAgICBCYWRG
dW5jdGlvbiwganNWYWx1ZVZhbHVlKGNlbGwpLCBtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSwKLSAg
ICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKGNlbGwsIHdlYWtQb2ludGVyKG1fbm9kZS0+ZnVuY3Rp
b24oKS0+dmFsdWUoKS5hc0NlbGwoKSkpKTsKKyAgICAgICAgICAgIEJhZENlbGwsIGpzVmFsdWVW
YWx1ZShjZWxsKSwgbV9ub2RlLT5jaGlsZDEoKS5ub2RlKCksCisgICAgICAgICAgICBtX291dC5u
b3RFcXVhbChjZWxsLCB3ZWFrUG9pbnRlcihtX25vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCku
YXNDZWxsKCkpKSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgY29tcGlsZUNoZWNrRXhlY3V0YWJs
ZSgpCisgICAgdm9pZCBjb21waWxlQ2hlY2tCYWRDZWxsKCkKKyAgICB7CisgICAgICAgIHRlcm1p
bmF0ZShCYWRDZWxsKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjb21waWxlR2V0RXhlY3V0YWJs
ZSgpCiAgICAgewogICAgICAgICBMVmFsdWUgY2VsbCA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSk7Ci0gICAgICAgIAogICAgICAgICBzcGVjdWxhdGVGdW5jdGlvbihtX25vZGUtPmNoaWxkMSgp
LCBjZWxsKTsKLSAgICAgICAgCi0gICAgICAgIHNwZWN1bGF0ZSgKLSAgICAgICAgICAgIEJhZEV4
ZWN1dGFibGUsIGpzVmFsdWVWYWx1ZShjZWxsKSwgbV9ub2RlLT5jaGlsZDEoKS5ub2RlKCksCi0g
ICAgICAgICAgICBtX291dC5ub3RFcXVhbCgKLSAgICAgICAgICAgICAgICBtX291dC5sb2FkUHRy
KGNlbGwsIG1faGVhcHMuSlNGdW5jdGlvbl9leGVjdXRhYmxlKSwKLSAgICAgICAgICAgICAgICB3
ZWFrUG9pbnRlcihtX25vZGUtPmV4ZWN1dGFibGUoKSkpKTsKKyAgICAgICAgc2V0SlNWYWx1ZSht
X291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNGdW5jdGlvbl9leGVjdXRhYmxlKSk7CiAgICAg
fQogICAgIAogICAgIHZvaWQgY29tcGlsZUFycmF5aWZ5VG9TdHJ1Y3R1cmUoKQpAQCAtMzY3Myw5
ICszNjgwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgaW50IG51bVBhc3NlZEFyZ3MgPSBtX25vZGUt
Pm51bUNoaWxkcmVuKCkgLSAxOwogICAgICAgICBpbnQgbnVtQXJncyA9IG51bVBhc3NlZEFyZ3Mg
KyBkdW1teVRoaXNBcmd1bWVudDsKIAotICAgICAgICBBU1NFUlQobV9ub2RlLT5oYXNLbm93bkZ1
bmN0aW9uKCkpOwotCi0gICAgICAgIEpTRnVuY3Rpb24qIGtub3duRnVuY3Rpb24gPSBtX25vZGUt
Pmtub3duRnVuY3Rpb24oKTsKKyAgICAgICAgSlNGdW5jdGlvbioga25vd25GdW5jdGlvbiA9IGpz
Q2FzdDxKU0Z1bmN0aW9uKj4obV9ub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpLmFzQ2VsbCgp
KTsKICAgICAgICAgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24gPSBrbm93bkZ1bmN0aW9uLT5uYXRp
dmVGdW5jdGlvbigpOwogCiAgICAgICAgIERsX2luZm8gaW5mbzsKQEAgLTM5MTgsMTAgKzM5MjMs
MzcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAK
LSAgICAgICAgY2FzZSBTd2l0Y2hTdHJpbmc6CisgICAgICAgIGNhc2UgU3dpdGNoU3RyaW5nOiB7
CiAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiVW5pbXBsZW1lbnRlZCIp
OwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICBjYXNlIFN3aXRjaENlbGw6IHsKKyAgICAgICAgICAgIExWYWx1
ZSBjZWxsOworICAgICAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkg
eworICAgICAgICAgICAgY2FzZSBDZWxsVXNlOiB7CisgICAgICAgICAgICAgICAgY2VsbCA9IGxv
d0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsK
KyAgICAgICAgICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNlbGxDYXNlID0gRlRMX05FV19CTE9D
SyhtX291dCwgKCJTd2l0Y2gvU3dpdGNoQ2VsbCBjZWxsIGNhc2UiKSk7CisgICAgICAgICAgICAg
ICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgICAgICAgICBpc0NlbGwodmFsdWUpLCB1bnN1
cmUoY2VsbENhc2UpLCB1bnN1cmUobG93QmxvY2soZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spKSk7
CisgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY2VsbENhc2UpOworICAgICAgICAgICAg
ICAgIGNlbGwgPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
REZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkJhZCB1c2Uga2luZCIpOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgYnVp
bGRTd2l0Y2gobV9ub2RlLT5zd2l0Y2hEYXRhKCksIG1fb3V0LmludFB0ciwgY2VsbCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0gfQogICAgICAgICAKICAgICAgICAgREZHX0NSQVNI
KG1fZ3JhcGgsIG1fbm9kZSwgIkJhZCBzd2l0Y2gga2luZCIpOwogICAgIH0KQEAgLTUxODYsNyAr
NTIxOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIFZlY3RvcjxTd2l0Y2hDYXNlPiBjYXNlczsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEtPmNhc2VzLnNpemUoKTsgKytpKSB7
CiAgICAgICAgICAgICBjYXNlcy5hcHBlbmQoU3dpdGNoQ2FzZSgKLSAgICAgICAgICAgICAgICBj
b25zdEludCh0eXBlLCBkYXRhLT5jYXNlc1tpXS52YWx1ZS5zd2l0Y2hMb29rdXBWYWx1ZSgpKSwK
KyAgICAgICAgICAgICAgICBjb25zdEludCh0eXBlLCBkYXRhLT5jYXNlc1tpXS52YWx1ZS5zd2l0
Y2hMb29rdXBWYWx1ZShkYXRhLT5raW5kKSksCiAgICAgICAgICAgICAgICAgbG93QmxvY2soZGF0
YS0+Y2FzZXNbaV0udGFyZ2V0LmJsb2NrKSwgV2VpZ2h0KGRhdGEtPmNhc2VzW2ldLnRhcmdldC5j
b3VudCkpKTsKICAgICAgICAgfQogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCShyZXZpc2lvbiAxNzI5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTg0LDYgKzk4NCwxMSBAQCB2b2lkIEhlYXA6
OmNvbGxlY3QoSGVhcE9wZXJhdGlvbiBjb2xsZWN0CiAgICAgICAgIHZtKCktPnR5cGVQcm9maWxl
ckxvZygpLT5wcm9jZXNzTG9nRW50cmllcyhBU0NJSUxpdGVyYWwoIkdDIikpOwogICAgIH0KICAg
ICAKKyAgICBpZiAodm0oKS0+Y2FsbEVkZ2VMb2cpIHsKKyAgICAgICAgRGVmZXJHQ0ZvckFXaGls
ZSBhd2hpbGUoKnRoaXMpOworICAgICAgICB2bSgpLT5jYWxsRWRnZUxvZy0+cHJvY2Vzc0xvZygp
OworICAgIH0KKyAgICAKICAgICBSRUxFQVNFX0FTU0VSVCghbV9kZWZlcnJhbERlcHRoKTsKICAg
ICBBU1NFUlQodm0oKS0+Y3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CiAgICAgUkVM
RUFTRV9BU1NFUlQodm0oKS0+YXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCku
YXRvbWljU3RyaW5nVGFibGUoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fz
c2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
QXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDE3MjkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4LDYgKzg4LDMx
IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KICAgICAKKyAgICB2b2lkIHN0b3JlVmFsdWUoSlNW
YWx1ZVJlZ3MgcmVncywgdm9pZCogYWRkcmVzcykKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICAgICAgc3RvcmU2NChyZWdzLmdwcigpLCBhZGRyZXNzKTsKKyNlbHNlCisgICAgICAgIHN0
b3JlMzIocmVncy5wYXlsb2FkR1BSKCksIGJpdHdpc2VfY2FzdDx2b2lkKj4oYml0d2lzZV9jYXN0
PHVpbnRwdHJfdD4oYWRkcmVzcykgKyBQYXlsb2FkT2Zmc2V0KSk7CisgICAgICAgIHN0b3JlMzIo
cmVncy50YWdHUFIoKSwgYml0d2lzZV9jYXN0PHZvaWQqPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90
PihhZGRyZXNzKSArIFRhZ09mZnNldCkpOworI2VuZGlmCisgICAgfQorICAgIAorICAgIHZvaWQg
bG9hZFZhbHVlKEFkZHJlc3MgYWRkcmVzcywgSlNWYWx1ZVJlZ3MgcmVncykKKyAgICB7CisjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbG9hZDY0KGFkZHJlc3MsIHJlZ3MuZ3ByKCkpOworI2Vs
c2UKKyAgICAgICAgaWYgKGFkZHJlc3MuYmFzZSA9PSByZWdzLnBheWxvYWRHUFIoKSkgeworICAg
ICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldChUYWdPZmZzZXQpLCByZWdzLnRhZ0dQ
UigpKTsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNl
dCksIHJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxv
YWQzMihhZGRyZXNzLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCksIHJlZ3MucGF5bG9hZEdQUigp
KTsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoVGFnT2Zmc2V0KSwgcmVn
cy50YWdHUFIoKSk7CisgICAgICAgIH0KKyNlbmRpZgorICAgIH0KKyAgICAKICAgICB2b2lkIG1v
dmVUcnVzdGVkVmFsdWUoSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZVJlZ3MgcmVncykKICAgICB7CiAj
aWYgVVNFKEpTVkFMVUU2NCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxI
ZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhl
bHBlcnMuaAkocmV2aXNpb24gMTcyOTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9D
Q2FsbEhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTY2Niw2ICsxNjY2LDE1IEBAIHB1Ymxp
YzoKICAgICAgICAgbW92ZShhcmc0LCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwogICAgIH0KICNl
bmRpZgorICAgIAorICAgIHZvaWQgc2V0dXBBcmd1bWVudHMoSlNWYWx1ZVJlZ3MgYXJnMSkKKyAg
ICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgc2V0dXBBcmd1bWVudHMoYXJnMS5ncHIo
KSk7CisjZWxzZQorICAgICAgICBzZXR1cEFyZ3VtZW50cyhhcmcxLnBheWxvYWRHUFIoKSwgYXJn
MS50YWdHUFIoKSk7CisjZW5kaWYKKyAgICB9CiAKICAgICB2b2lkIHNldHVwUmVzdWx0cyhHUFJS
ZWcgZGVzdEEsIEdQUlJlZyBkZXN0QikKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0dQUkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0dQUkluZm8uaAkocmV2aXNpb24gMTcyOTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9HUFJJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDggQEAgcHVibGljOgogICAg
IEdQUlJlZyB0YWdHUFIoKSBjb25zdCB7IHJldHVybiBJbnZhbGlkR1BSUmVnOyB9CiAgICAgR1BS
UmVnIHBheWxvYWRHUFIoKSBjb25zdCB7IHJldHVybiBtX2dwcjsgfQogICAgIAorICAgIGJvb2wg
dXNlcyhHUFJSZWcgZ3ByKSBjb25zdCB7IHJldHVybiBtX2dwciA9PSBncHI7IH0KKyAgICAKIHBy
aXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByOwogfTsKQEAgLTE2OSw2ICsxNzEsOCBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiB0YWdHUFIoKTsKICAgICB9CiAKKyAgICBib29sIHVzZXMoR1BSUmVn
IGdwcikgY29uc3QgeyByZXR1cm4gbV90YWdHUFIgPT0gZ3ByIHx8IG1fcGF5bG9hZEdQUiA9PSBn
cHI7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgaW50OF90IG1fdGFnR1BSOwogICAgIGludDhfdCBt
X3BheWxvYWRHUFI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJf
NjQuY3BwCShyZXZpc2lvbiAxNzI5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENhbGwzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMCw2ICszMDAsMTQgQEAgdm9pZCBK
SVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIHN0b3JlMzIocmVnVDAsIEFk
ZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpTU3RhY2s6OkNhbGxlZSAqIHN0YXRpY19jYXN0
PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZy
YW1lQW5kUEMpKSk7CiAgICAgc3RvcmUzMihyZWdUMSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdp
c3RlciwgSlNTdGFjazo6Q2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSArIFRhZ09mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogCisgICAgQ2FsbExp
bmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5mbygpOworCisgICAgaWYg
KENhbGxFZGdlTG9nOjppc0VuYWJsZWQoKSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkKKyAgICAg
ICAgJiYgT3B0aW9uczo6YmFzZWxpbmVEb2VzQ2FsbEVkZ2VQcm9maWxpbmcoKSkgeworICAgICAg
ICBtX3ZtLT5lbnN1cmVDYWxsRWRnZUxvZygpLmVtaXRMb2dDb2RlKAorICAgICAgICAgICAgKnRo
aXMsIGluZm8tPmNhbGxFZGdlUHJvZmlsZSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7Cisg
ICAgfQorCiAgICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCkgewogICAgICAgICBjb21w
aWxlQ2FsbEV2YWwoaW5zdHJ1Y3Rpb24pOwogICAgICAgICByZXR1cm47CkBAIC0zMTMsNyArMzIx
LDYgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIGFkZFNs
b3dDYXNlKHNsb3dDYXNlKTsKIAogICAgIEFTU0VSVChtX2NhbGxDb21waWxhdGlvbkluZm8uc2l6
ZSgpID09IGNhbGxMaW5rSW5mb0luZGV4KTsKLSAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2Nv
ZGVCbG9jay0+YWRkQ2FsbExpbmtJbmZvKCk7CiAgICAgaW5mby0+Y2FsbFR5cGUgPSBDYWxsTGlu
a0luZm86OmNhbGxUeXBlRm9yKG9wY29kZUlEKTsKICAgICBpbmZvLT5jb2RlT3JpZ2luID0gQ29k
ZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KTsKICAgICBpbmZvLT5jYWxsZWVHUFIgPSByZWdUMDsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAkocmV2aXNpb24gMTcyOTI3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjEyLDYgKzIxMiwxMiBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBv
cGNvZGVJCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjYWxsZWUsIHJlZ1QwKTsgLy8gcmVn
VDAgaG9sZHMgY2FsbGVlLgogCiAgICAgc3RvcmU2NChyZWdUMCwgQWRkcmVzcyhzdGFja1BvaW50
ZXJSZWdpc3RlciwgSlNTdGFjazo6Q2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVn
aXN0ZXIpKSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOworICAgIAorICAgIENhbGxMaW5r
SW5mbyogaW5mbyA9IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsKKworICAgIGlmIChD
YWxsRWRnZUxvZzo6aXNFbmFibGVkKCkgJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpCisgICAgICAg
ICYmIE9wdGlvbnM6OmJhc2VsaW5lRG9lc0NhbGxFZGdlUHJvZmlsaW5nKCkpCisgICAgICAgIG1f
dm0tPmVuc3VyZUNhbGxFZGdlTG9nKCkuZW1pdExvZ0NvZGUoKnRoaXMsIGluZm8tPmNhbGxFZGdl
UHJvZmlsZSwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKIAogICAgIGlmIChvcGNvZGVJRCA9PSBvcF9j
YWxsX2V2YWwpIHsKICAgICAgICAgY29tcGlsZUNhbGxFdmFsKGluc3RydWN0aW9uKTsKQEAgLTIy
Myw3ICsyMjksNiBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAg
ICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2UpOwogCiAgICAgQVNTRVJUKG1fY2FsbENvbXBpbGF0aW9u
SW5mby5zaXplKCkgPT0gY2FsbExpbmtJbmZvSW5kZXgpOwotICAgIENhbGxMaW5rSW5mbyogaW5m
byA9IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsKICAgICBpbmZvLT5jYWxsVHlwZSA9
IENhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3Iob3Bjb2RlSUQpOwogICAgIGluZm8tPmNvZGVPcmln
aW4gPSBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpOwogICAgIGluZm8tPmNhbGxlZUdQUiA9
IHJlZ1QwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2
aXNpb24gMTcyOTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsNiArMTY3LDEzIEBAIHR5cGVkZWYgY29uc3QgY2hhciog
b3B0aW9uU3RyaW5nOwogICAgIHYoYm9vbCwgZW5hYmxlQWNjZXNzSW5saW5pbmcsIHRydWUpIFwK
ICAgICB2KGJvb2wsIGVuYWJsZVBvbHl2YXJpYW50RGV2aXJ0dWFsaXphdGlvbiwgdHJ1ZSkgXAog
ICAgIHYoYm9vbCwgZW5hYmxlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZywgdHJ1ZSkgXAorICAg
IHYoYm9vbCwgZW5hYmxlUG9seW1vcnBoaWNDYWxsSW5saW5pbmcsIHRydWUpIFwKKyAgICB2KGJv
b2wsIGNhbGxTdGF0dXNTaG91bGRVc2VDYWxsRWRnZVByb2ZpbGUsIHRydWUpIFwKKyAgICB2KGJv
b2wsIGNhbGxFZGdlUHJvZmlsZVJlYWxseVByb2Nlc3Nlc0xvZywgdHJ1ZSkgXAorICAgIHYoYm9v
bCwgYmFzZWxpbmVEb2VzQ2FsbEVkZ2VQcm9maWxpbmcsIGZhbHNlKSBcCisgICAgdihib29sLCBk
ZmdEb2VzQ2FsbEVkZ2VQcm9maWxpbmcsIHRydWUpIFwKKyAgICB2KGJvb2wsIGVuYWJsZUNhbGxF
ZGdlUHJvZmlsaW5nLCB0cnVlKSBcCisgICAgdih1bnNpZ25lZCwgZnJlcXVlbnRDYWxsVGhyZXNo
b2xkLCAyKSBcCiAgICAgdihib29sLCBvcHRpbWl6ZU5hdGl2ZUNhbGxzLCBmYWxzZSkgXAogICAg
IFwKICAgICB2KGJvb2wsIGVuYWJsZUNvbmN1cnJlbnRKSVQsIHRydWUpIFwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDE3MjkyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzczLDYgKzM3
MywxMyBAQCBWTSomIFZNOjpzaGFyZWRJbnN0YW5jZUludGVybmFsKCkKICAgICByZXR1cm4gc2hh
cmVkSW5zdGFuY2U7CiB9CiAKK0NhbGxFZGdlTG9nJiBWTTo6ZW5zdXJlQ2FsbEVkZ2VMb2coKQor
eworICAgIGlmICghY2FsbEVkZ2VMb2cpCisgICAgICAgIGNhbGxFZGdlTG9nID0gc3RkOjptYWtl
X3VuaXF1ZTxDYWxsRWRnZUxvZz4oKTsKKyAgICByZXR1cm4gKmNhbGxFZGdlTG9nOworfQorCiAj
aWYgRU5BQkxFKEpJVCkKIHN0YXRpYyBUaHVua0dlbmVyYXRvciB0aHVua0dlbmVyYXRvckZvcklu
dHJpbnNpYyhJbnRyaW5zaWMgaW50cmluc2ljKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCShyZXZpc2lvbiAxNzI5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3Miw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3M7CiAgICAgY2xhc3MgQnVp
bHRpbkV4ZWN1dGFibGVzOworICAgIGNsYXNzIENhbGxFZGdlTG9nOwogICAgIGNsYXNzIENvZGVC
bG9jazsKICAgICBjbGFzcyBDb2RlQ2FjaGU7CiAgICAgY2xhc3MgQ29tbW9uSWRlbnRpZmllcnM7
CkBAIC0yMzMsNiArMjM0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAjaWYgRU5BQkxFKERGR19KSVQp
CiAgICAgICAgIE93blB0cjxERkc6OkxvbmdMaXZlZFN0YXRlPiBkZmdTdGF0ZTsKICNlbmRpZiAv
LyBFTkFCTEUoREZHX0pJVCkKKyAgICAgICAgCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxs
RWRnZUxvZz4gY2FsbEVkZ2VMb2c7CisgICAgICAgIENhbGxFZGdlTG9nJiBlbnN1cmVDYWxsRWRn
ZUxvZygpOwogCiAgICAgICAgIFZNVHlwZSB2bVR5cGU7CiAgICAgICAgIENsaWVudERhdGEqIGNs
aWVudERhdGE7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL25ldy1h
cnJheS10aGVuLWV4aXQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9uZXctYXJyYXktdGhlbi1leGl0LmpzCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9uZXctYXJyYXktdGhlbi1leGl0LmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKK2Z1bmN0aW9uIGZvbyhmKSB7CisgICAgcmV0dXJu
IG5ldyBmKCk7Cit9CisKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAw
MDA7ICsraSkKKyAgICBmb28oQXJyYXkpOworCit2YXIgZGlkQ2FsbCA9IGZhbHNlOworZm9vKGZ1
bmN0aW9uKCkgeyBkaWRDYWxsID0gdHJ1ZTsgfSk7CisKK2lmICghZGlkQ2FsbCkKKyAgICB0aHJv
dyAiRXJyb3I6IGRpZG4ndCBjYWxsIG15IGZ1bmN0aW9uLiI7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL3BvbHktY2FsbC1leGl0LXRoaXMuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wb2x5LWNhbGwtZXhpdC10aGlz
LmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9w
b2x5LWNhbGwtZXhpdC10aGlzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjkgQEAKKyhm
dW5jdGlvbigpIHsKKyAgICBmdW5jdGlvbiBmb28oeCkgeyByZXR1cm4gMSArIHRoaXMuZjsgfQor
ICAgIGZ1bmN0aW9uIGJhcih4KSB7IHJldHVybiB4ICsgdGhpcy5mOyB9CisgICAgZnVuY3Rpb24g
YmF6KHgpIHsgcmV0dXJuIHggKyAxICsgdGhpcy5mOyB9CisgICAgCisgICAgdmFyIG4gPSAxMDAw
MDAwOworICAgIAorICAgIHZhciByZXN1bHQgPSAoZnVuY3Rpb24obykgeworICAgICAgICB2YXIg
ZiA9IHtmdW46Zm9vLCBmOjF9OworICAgICAgICB2YXIgZyA9IHtmdW46YmFyLCBmOjJ9OworICAg
ICAgICB2YXIgaCA9IHtmdW46YmF6LCBmOjN9OworICAgICAgICAKKyAgICAgICAgdmFyIHJlc3Vs
dCA9IDA7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgICAg
ICBpZiAoaSA9PSBuIC0gMSkKKyAgICAgICAgICAgICAgICBmID0gaDsKKyAgICAgICAgICAgIHJl
c3VsdCArPSBmLmZ1bihvLmYpOworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgdG1wID0g
ZjsKKyAgICAgICAgICAgIGYgPSBnOworICAgICAgICAgICAgZyA9IHRtcDsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9KSh7Zjo0Mn0pOworICAgIAor
ICAgIGlmIChyZXN1bHQgIT0gKChuIC8gMiAtIDEpICogKDQyICsgMikpICsgKG4gLyAyICogKDEg
KyAxKSArICg0MiArIDEgKyAzKSkpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDog
IiArIHJlc3VsdDsKK30pKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL3BvbHktY2FsbC1leGl0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3BvbHktY2FsbC1leGl0LmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMjkgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBmdW5jdGlvbiBmb28oeCkg
eyByZXR1cm4gMTsgfQorICAgIGZ1bmN0aW9uIGJhcih4KSB7IHJldHVybiB4OyB9CisgICAgZnVu
Y3Rpb24gYmF6KHgpIHsgcmV0dXJuIHggKyAxOyB9CisgICAgCisgICAgdmFyIG4gPSAxMDAwMDAw
OworICAgIAorICAgIHZhciByZXN1bHQgPSAoZnVuY3Rpb24obykgeworICAgICAgICB2YXIgZiA9
IGZvbzsKKyAgICAgICAgdmFyIGcgPSBiYXI7CisgICAgICAgIHZhciBoID0gYmF6OworICAgICAg
ICAKKyAgICAgICAgdmFyIHJlc3VsdCA9IDA7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
bjsgKytpKSB7CisgICAgICAgICAgICBpZiAoaSA9PSBuIC0gMSkKKyAgICAgICAgICAgICAgICBm
ID0gaDsKKyAgICAgICAgICAgIHJlc3VsdCArPSBmKG8uZik7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIHZhciB0bXAgPSBmOworICAgICAgICAgICAgZiA9IGc7CisgICAgICAgICAgICBnID0g
dG1wOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0p
KHtmOjQyfSk7CisgICAgCisgICAgaWYgKHJlc3VsdCAhPSAoKG4gLyAyIC0gMSkgKiA0MikgKyAo
biAvIDIgKiAxKSArICg0MiArIDEpKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6
ICIgKyByZXN1bHQ7Cit9KSgpOwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MjkyNykKKysrIFNvdXJjZS9X
VEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTQtMDgtMjMg
IEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBGVEwgc2hvdWxkIGJl
IGFibGUgdG8gZG8gcG9seW1vcnBoaWMgY2FsbCBpbmxpbmluZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MTQ1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBBZGQgc29tZSBwb3dlciB0aGF0
IEkgbmVlZCBmb3IgY2FsbCBlZGdlIHByb2ZpbGluZy4KKworICAgICAgICAqIHd0Zi9Pd25QdHIu
aDoKKyAgICAgICAgKFdURjo6T3duUHRyPFQ+OjpjcmVhdGVUcmFuc2FjdGlvbmFsbHkpOgorICAg
ICAgICAqIHd0Zi9TcGVjdHJ1bS5oOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6YWRkKToKKyAg
ICAgICAgKFdURjo6U3BlY3RydW06OmFkZEFsbCk6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpn
ZXQpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6c2l6ZSk6CisgICAgICAgIChXVEY6OlNwZWN0
cnVtOjpLZXlBbmRDb3VudDo6S2V5QW5kQ291bnQpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6
Y2xlYXIpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6cmVtb3ZlSWYpOgorCiAyMDE0LTA4LTI1
ICBUb21hcyBQb3BlbGEgIDx0cG9wZWxhQHJlZGhhdC5jb20+CiAKICAgICAgICAgQWRkIHN1cHBv
cnQgZm9yIGxpdHRsZS1lbmRpYW4gUG93ZXJQQzY0CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Pd25Q
dHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Pd25QdHIuaAkocmV2aXNpb24gMTcy
OTI3KQorKysgU291cmNlL1dURi93dGYvT3duUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA2
LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMiw2ICsyMiw3IEBACiAjZGVmaW5lIFdU
Rl9Pd25QdHJfaAogCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
QXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9P
d25QdHJDb21tb24uaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CkBAIC03Miw2ICs3MywxNCBAQCBu
YW1lc3BhY2UgV1RGIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gT3duUHRyJiBvcGVy
YXRvcj0oT3duUHRyPFU+JiYpOwogCiAgICAgICAgIHZvaWQgc3dhcChPd25QdHImIG8pIHsgc3Rk
Ojpzd2FwKG1fcHRyLCBvLm1fcHRyKTsgfQorICAgICAgICAKKyAgICAgICAgLy8gQ29uc3RydWN0
IGFuIG9iamVjdCB0byBzdG9yZSBpbnRvIHRoaXMgT3duUHRyLCBidXQgb25seSBzbyBsb25nIGFz
IHRoaXMgT3duUHRyCisgICAgICAgIC8vIGRvZXNuJ3QgYWxyZWFkeSBwb2ludCB0byBhbiBvYmpl
Y3QuIFRoaXMgd2lsbCBlbnN1cmUgdGhhdCBhZnRlciB5b3UgY2FsbCB0aGlzLAorICAgICAgICAv
LyB0aGUgT3duUHRyIHdpbGwgcG9pbnQgdG8gYW4gaW5zdGFuY2Ugb2YgVC4gVGhpcyBpbnN0YW5j
ZSBtYXkgb3IgbWF5IG5vdCBoYXZlIGJlZW4KKyAgICAgICAgLy8gY3JlYXRlZCBieSB0aGlzIGNh
bGwuIE1vcmVvdmVyLCB0aGlzIGNhbGwgdXNlcyBhbiBvcHBvcnR1bmlzdGljIHRyYW5zYWN0aW9u
LCBpbgorICAgICAgICAvLyB0aGF0IHdlIG1heSBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgVCBhbmQg
dGhlbiBpbW1lZGlhdGVseSB0aHJvdyBpdCBhd2F5LgorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBBcmdzPgorICAgICAgICB2b2lkIGNyZWF0ZVRyYW5zYWN0aW9uYWxseShBcmdzLi4uKTsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IE93blB0cihQdHJUeXBlIHB0cikgOiBt
X3B0cihwdHIpIHsgfQpAQCAtMTg2LDYgKzE5NSwyOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgcmV0dXJuIHAuZ2V0KCk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdGVt
cGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gaW5saW5lIHZvaWQgT3duUHRyPFQ+OjpjcmVhdGVUcmFu
c2FjdGlvbmFsbHkoQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgaWYgKG1fcHRyKSB7Cisg
ICAgICAgICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgVCogbmV3T2JqZWN0ID0gbmV3IFQoYXJncy4uLik7
CisgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CisjaWYgRU5BQkxFKENPTVBBUkVfQU5E
X1NXQVApCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGlmIChtX3B0cikgeworICAgICAgICAg
ICAgICAgIGRlbGV0ZSBuZXdPYmplY3Q7CisgICAgICAgICAgICAgICAgV1RGOjpsb2FkTG9hZEZl
bmNlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9
IHdoaWxlICghV1RGOjp3ZWFrQ29tcGFyZUFuZFN3YXAoYml0d2lzZV9jYXN0PHZvaWQqdm9sYXRp
bGUqPigmbV9wdHIpLCBudWxscHRyLCBuZXdPYmplY3QpKTsKKyNlbHNlCisgICAgICAgIG1fcHRy
ID0gbmV3T2JqZWN0OworI2VuZGlmCisgICAgfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNp
bmcgV1RGOjpPd25QdHI7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgJKHJldmlzaW9uIDE3MjkyNykKKysrIFNv
dXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDIyICszMiwzMSBAQAog
CiBuYW1lc3BhY2UgV1RGIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KK3RlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIENvdW50ZXJUeXBlID0gdW5zaWduZWQ+CiBjbGFzcyBTcGVjdHJ1bSB7
CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPFQsIHVuc2lnbmVkIGxvbmc+
OjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgdW5z
aWduZWQgbG9uZz46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOworICAgIHR5cGVkZWYg
dHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46Oml0ZXJhdG9yIGl0ZXJhdG9yOworICAg
IHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46OmNvbnN0X2l0ZXJhdG9y
IGNvbnN0X2l0ZXJhdG9yOwogICAgIAogICAgIFNwZWN0cnVtKCkgeyB9CiAgICAgCi0gICAgdm9p
ZCBhZGQoY29uc3QgVCYga2V5LCB1bnNpZ25lZCBsb25nIGNvdW50ID0gMSkKKyAgICB2b2lkIGFk
ZChjb25zdCBUJiBrZXksIENvdW50ZXJUeXBlIGNvdW50ID0gMSkKICAgICB7Ci0gICAgICAgIHR5
cGVuYW1lIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz46OkFkZFJlc3VsdCByZXN1bHQgPSBtX21h
cC5hZGQoa2V5LCBjb3VudCk7CisgICAgICAgIGlmICghY291bnQpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+OjpBZGRSZXN1bHQg
cmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgY291bnQpOwogICAgICAgICBpZiAoIXJlc3VsdC5pc05l
d0VudHJ5KQogICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSArPSBjb3VudDsKICAg
ICB9CiAgICAgCi0gICAgdW5zaWduZWQgbG9uZyBnZXQoY29uc3QgVCYga2V5KSBjb25zdAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAgdm9pZCBhZGRBbGwoY29uc3QgU3BlY3RydW08VCwg
VT4mIG90aGVyU3BlY3RydW0pCisgICAgeworICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBvdGhl
clNwZWN0cnVtKQorICAgICAgICAgICAgYWRkKGVudHJ5LmtleSwgZW50cnkuY291bnQpOworICAg
IH0KKyAgICAKKyAgICBDb3VudGVyVHlwZSBnZXQoY29uc3QgVCYga2V5KSBjb25zdAogICAgIHsK
ICAgICAgICAgY29uc3RfaXRlcmF0b3IgaXRlciA9IG1fbWFwLmZpbmQoa2V5KTsKICAgICAgICAg
aWYgKGl0ZXIgPT0gbV9tYXAuZW5kKCkpCkBAIC01NSw2ICs2NCw4IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGl0ZXItPnZhbHVlOwogICAgIH0KICAgICAKKyAgICBzaXplX3Qgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsgfQorICAgIAogICAgIGl0ZXJhdG9yIGJlZ2luKCkg
eyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQogICAgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIG1f
bWFwLmVuZCgpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBt
X21hcC5iZWdpbigpOyB9CkBAIC02Myw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgS2V5
QW5kQ291bnQgewogICAgICAgICBLZXlBbmRDb3VudCgpIHsgfQogICAgICAgICAKLSAgICAgICAg
S2V5QW5kQ291bnQoY29uc3QgVCYga2V5LCB1bnNpZ25lZCBsb25nIGNvdW50KQorICAgICAgICBL
ZXlBbmRDb3VudChjb25zdCBUJiBrZXksIENvdW50ZXJUeXBlIGNvdW50KQogICAgICAgICAgICAg
OiBrZXkoa2V5KQogICAgICAgICAgICAgLCBjb3VudChjb3VudCkKICAgICAgICAgewpAQCAtODAs
NyArOTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBUIGtleTsKLSAgICAgICAg
dW5zaWduZWQgbG9uZyBjb3VudDsKKyAgICAgICAgQ291bnRlclR5cGUgY291bnQ7CiAgICAgfTsK
ICAgICAKICAgICAvLyBSZXR1cm5zIGEgbGlzdCBvcmRlcmVkIGZyb20gbG93ZXN0LWNvdW50IHRv
IGhpZ2hlc3QtY291bnQuCkBAIC05NCw4ICsxMDUsMTggQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gbGlzdDsKICAgICB9CiAgICAgCisgICAgdm9pZCBjbGVhcigpIHsgbV9tYXAuY2xlYXIoKTsg
fQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgdm9pZCByZW1vdmVJ
Zihjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAgICAgICAgbV9tYXAucmVtb3ZlSWYo
W2Z1bmN0b3JdICh0eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6S2V5VmFsdWVQYWly
VHlwZSYgcGFpcikgeworICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdG9yKEtleUFuZENvdW50
KHBhaXIua2V5LCBwYWlyLnZhbHVlKSk7CisgICAgICAgICAgICB9KTsKKyAgICB9CisgICAgCiBw
cml2YXRlOgotICAgIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz4gbV9tYXA7CisgICAgSGFzaE1h
cDxULCBDb3VudGVyVHlwZT4gbV9tYXA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDE3MjkyNykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE0LTA4LTIzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0Bh
cHBsZS5jb20+CisKKyAgICAgICAgRlRMIHNob3VsZCBiZSBhYmxlIHRvIGRvIHBvbHltb3JwaGlj
IGNhbGwgaW5saW5pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzNTE0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQu
anM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1wb2x5
LWNhbGwuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2Fs
bC1uZXN0ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NpbXBs
ZS1wb2x5LWNhbGwtbmVzdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2lt
cGxlLXBvbHktY2FsbC5odG1sOiBBZGRlZC4KKwogMjAxNC0wOC0yNSAgQWxleGV5IFByb3NrdXJ5
YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBBU1NFUlQoZXh0cmFjdGFibGUoKSkgd2hl
biBzdG9yaW5nIGEgbm9uLWV4dHJhY3RhYmxlIGtleSBpbiBJbmRleGVkREIKSW5kZXg6IExheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcG9seS1jYWxsLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2Fs
bC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNz
L3NpbXBsZS1wb2x5LWNhbGwKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
bm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHkt
Y2FsbC1uZXN0ZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3Jl
Z3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcG9seS1jYWxsLW5lc3RlZC1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3NpbXBsZS1w
b2x5LWNhbGwtbmVzdGVkCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5v
IGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNh
bGwtbmVzdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1w
bGUtcG9seS1jYWxsLW5lc3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zaW1wbGUtcG9seS1jYWxsLW5lc3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRl
c3RzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcG9seS1jYWxs
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc2ltcGxlLXBvbHktY2FsbC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Njcmlw
dC10ZXN0cy9zaW1wbGUtcG9seS1jYWxsLW5lc3RlZC5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcG9seS1jYWxsLW5lc3RlZC5qcwko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBs
ZS1wb2x5LWNhbGwtbmVzdGVkLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjUgQEAKKyhm
dW5jdGlvbigpIHsKKyAgICBmdW5jdGlvbiBmb28oeCkgeyByZXR1cm4gMTsgfQorICAgIGZ1bmN0
aW9uIGJhcih4KSB7IHJldHVybiB4OyB9CisgICAgCisgICAgdmFyIG4gPSAxMDAwMDAwOworICAg
IAorICAgIHZhciByZXN1bHQgPSAoZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBmID0gZm9vOwor
ICAgICAgICB2YXIgZyA9IGJhcjsKKyAgICAgICAgCisgICAgICAgIHZhciByZXN1bHQgPSAwOwor
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkgeworICAgICAgICAgICAgcmVzdWx0
ICs9IGYoNDIpOworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgdG1wID0gZjsKKyAgICAg
ICAgICAgIGYgPSBnOworICAgICAgICAgICAgZyA9IHRtcDsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9KSgpOworICAgIAorICAgIGlmIChyZXN1bHQg
IT0gbiAvIDIgKiA0MiArIG4gLyAyICogMSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVz
dWx0OiAiICsgcmVzdWx0OworfSkoKTsKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXBvbHktY2FsbC5qcwkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMCBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZ1
bmN0aW9uIGZvbyh4KSB7IHJldHVybiAxOyB9CisgICAgZnVuY3Rpb24gYmFyKHgpIHsgcmV0dXJu
IHg7IH0KKyAgICAKKyAgICB2YXIgZiA9IGZvbzsKKyAgICB2YXIgZyA9IGJhcjsKKyAgICAKKyAg
ICB2YXIgcmVzdWx0ID0gMDsKKyAgICB2YXIgbiA9IDEwMDAwMDsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IG47ICsraSkgeworICAgICAgICByZXN1bHQgKz0gZig0Mik7CisgICAgICAgIAorICAg
ICAgICB2YXIgdG1wID0gZjsKKyAgICAgICAgZiA9IGc7CisgICAgICAgIGcgPSB0bXA7CisgICAg
fQorICAgIAorICAgIGlmIChyZXN1bHQgIT0gbiAvIDIgKiA0MiArIG4gLyAyICogMSkKKyAgICAg
ICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfSkoKTsK
</data>
<flag name="review"
          id="261811"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="261819"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>237107</attachid>
            <date>2014-08-25 14:28:32 -0700</date>
            <delta_ts>2014-08-27 22:16:59 -0700</delta_ts>
            <desc>Archive of layout-test-results from webkit-ews-09 for mac-mountainlion-wk2</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>597618</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
Fa32Iit6oylldIdr7KbqpEoSo6dO5doyMUeT/svjxZAY1bOky59YAXMMv0DHSWfQvwFlAuoNdJzx
tOtg5VMV4/2y9GckVxLgj62s17o1eAUOuovPDnzfQaz0j/MkPDH/yQFqszWCJaIcJmBcxmEmlBKp
HBUcXIv+c27NTw7UtxoBndaD146N03OPq8XTYvm0+XLYvJapjf1uOX8XygkIEZVToOTxI0QG3wo2
F8YQbTGLMtF7cbqbYK64eq1TqwewktOKABwcbO96f7hsm5BKPDA3OzGDU57BoYnYCiZKjVMGSpgE
ry9kqyFEaquxyxuNIG4aEN12MhETLxVf9tvd1x+vw1xMxo98OfwLZrYswED7FllRCwIpEM6TzgrK
Oc/e8XneT+M+16ZjTk6s5Wq4PXBwKIGWuYF/vj5mNQVKXdHMAXUbzvcJIYAdRGNukT4n7vR5hSmS
kSDTpMt6rflExT29vD7+vl9hPsweR8QfefkidNIp8NScVWjNIf40iRIOziSNQVFB5d2zYQOea8H2
8ecPtViiJetQQeshPoTBW8UJdnNflMB2T4/0R4vqnAdHXNIJ/tnJ4KOjzo3IXfUdRuBaL8LQERVn
//K22w5daM4+qLn5FdJxsDQQnBQzyjEzk8EftJEyYfDHoGejuYub1WDN1DnZGMo0nxjGj/gZ3d2q
sH41vZzNEik8NmokwZHsRESB35KMmoDTDb5q4CFJ9v+wcM6QridqTmd8+F9QSwMECgACAAAAzmoZ
RbVrAyVnAAAAZwAAAD0AHABhY2Nlc3NpYmlsaXR5L2FjY2Vzc2liaWxpdHktbm9kZS1tZW1vcnkt
bWFuYWdlbWVudC1zdGRlcnIudHh0VVQJAAMDm/tTA5v7U3V4CwABBPUBAAAEFAAAACNQUk9DRVNT
IFVOUkVTUE9OU0lWRSAtIFdlYlByb2Nlc3MgKHBpZCAyMDEyMykKI0VPRgpib290c3RyYXBfbG9v
a191cCByZXN1bHQ6IHVua25vd24gZXJyb3IgY29kZSAoNDRlKQpQSwMEFAACAAgA92oZRSv3XbPa
AAAAJwEAADcAHABhY2Nlc3NpYmlsaXR5L2FjY2Vzc2liaWxpdHktbm9kZS1yZXBhcmVudC1jcmFz
aC1sb2cudHh0VVQJAANRm/tTUZv7U3V4CwABBPUBAAAEFAAAAEWQT2vDMAzF7/4Ugl7aw0o3chhm
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
ObGWq+H2wMGhBFrmBv75+pjVFCh1RTMH1G043yeEAHYQjblF+py40+cVpkhGgkyTLuu15hMV9/Ty
+vj7foX5MHscEX/k5YvQSafAU3NWoTWH+NMkSjg4kzQGRQWVd8+GDXiuBdvHnz/UYomWrEMFrYf4
EAZvFSfYzX1RAts9PdIfLapzHhxxSSf4ZyeDj446NyJ31XcYgWu9CENHVJz9y9tuO3ShOfug5uZX
SMfB0kBwUswox8xMBn/QRsqEwR+Dno3mLm5WgzVT52RjKNN8Yhg/4md0d6vC+tX0cjZLpPDYqJEE
R7ITEQV+SzJqAk43+KqBhyTZ/8PCOUO6nqg5nfHhfwFQSwMECgACAAAA92oZRU1rL7FnAAAAZwAA
ADQAHABhY2Nlc3NpYmlsaXR5L2FjY2Vzc2liaWxpdHktbm9kZS1yZXBhcmVudC1zdGRlcnIudHh0
VVQJAANRm/tTUZv7U3V4CwABBPUBAAAEFAAAACNQUk9DRVNTIFVOUkVTUE9OU0lWRSAtIFdlYlBy
b2Nlc3MgKHBpZCAyMDE0OCkKI0VPRgpib290c3RyYXBfbG9va191cCByZXN1bHQ6IHVua25vd24g
ZXJyb3IgY29kZSAoNDRlKQpQSwMEFAACAAgAIGsZRWe7EM3bAAAAJwEAADkAHABhY2Nlc3NpYmls
aXR5L2FjY2Vzc2liaWxpdHktb2JqZWN0LWRldGFjaGVkLWNyYXNoLWxvZy50eHRVVAkAA5ub+1Ob
m/tTdXgLAAEE9QEAAAQUAAAARZBPa8MwDMXv/hSCXtrDylY6BmbsUlLoJQnN/hxLYqudqWsFSe6+
/pxStovQe6CfnlQTOO7lGyKd4Eg5+VIZvnBomRyK2NXj08vz0twlHPsQ0YMSDOjogsAoIyUJVyxO
mUXQcAnpBJR1aYyoL401rzmdE/2kN3iAdxTdUFKmGJGt5ZyKu/0jFyQqiPaKk3QTXhSTwrWPGeVG
RWZrZu2+2VRdBx/1vurapu52n1Vh/eeH+Rg83I5YmFnVbM1ApKLcj4dIdD7kcdqXo1q4R4SCLj9w
5BHm6zUujPkFUEsDBBQAAgAIAIBrGUXqX67/byMAAP55AAA2ABwAYWNjZXNzaWJpbGl0eS9hY2Nl
c3NpYmlsaXR5LW9iamVjdC1kZXRhY2hlZC1zYW1wbGUudHh0VVQJAANQnPtTUJz7U3V4CwABBPUB
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
eS9hY2Nlc3NpYmlsaXR5LW9iamVjdC1kZXRhY2hlZC1zdGRlcnIudHh0VVQJAAObm/tTm5v7U3V4
CwABBPUBAAAEFAAAACNQUk9DRVNTIFVOUkVTUE9OU0lWRSAtIFdlYlByb2Nlc3MgKHBpZCAyMDE3
NSkKI0VPRgpib290c3RyYXBfbG9va191cCByZXN1bHQ6IHVua25vd24gZXJyb3IgY29kZSAoNDRl
KQpQSwMEFAACAAgASmsZRRNy4Uq7AAAA9AAAAEoAHABhY2Nlc3NpYmlsaXR5L2FkamFjZW50LWNv
bnRpbnVhdGlvbnMtY2F1c2UtYXNzZXJ0aW9uLWZhaWx1cmUtY3Jhc2gtbG9nLnR4dFVUCQAD7Jv7
U+yb+1N1eAsAAQT1AQAABBQAAABFj81KA0EQhO/zFAW56MGgXsRBvIQNeNldsv6cN7udODjpDt09
8fWdBNFLU1VQH12tYNLRPpFlj50UnutVfNC2V5nILN7f3j0+LMOvxW5MmWa4YEuTHAhKdhS2dKKa
1C7B0yHxHlJ8GYL5XEUMT4W/WL75GTd4JfOVsKvkTBqjFq7p+o9ckeQwH53OdjrjzYkdpzEXsguV
VGNY9Jtu1QwD3tpNM/RdO7y8N5X1/z+ujmnGZcR1WDTdOoQfUEsDBBQAAgAIAIBrGUUtdKN9zCMA
AAB7AABHABwAYWNjZXNzaWJpbGl0eS9hZGphY2VudC1jb250aW51YXRpb25zLWNhdXNlLWFzc2Vy
dGlvbi1mYWlsdXJlLXNhbXBsZS50eHRVVAkAA1Cc+1NQnPtTdXgLAAEE9QEAAAQUAAAAxFtpcxvH
tf2OX4GPUikN9r6o8pLqNVYsxXqm4qQqlXo1GAwoPIEAjUU2/evf7cFCzKAB0c8qhyoR5PR2bvdd
zr3TtItq/rierYfL6XBd3T/MZ4u74T+a8fvVsm7W6+GLh9lkSDEx6uWw+dysHocED+9n8/ls3dTL
xWQ92Pd8PTx8nYz+Vzvy34P31ebjUwf4uvlhOd/eN+ubUG2qm/iP2xsY9e1ss/9w29l8cvN9M2+q
dbN/Npquqvvmp+Xq080PzWo9Wy7WN/bmabFR9fBw45eLTbPYrG/eVfV3tyetg7fLajK0k8nqgBX/
THAzNWOM8eDNBAbNprNm9bovw2C/2BP8P//5z8MX8O3lwC8nzfDD40NzaPynlkjy4Yu/VZvZ5+Yl
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
ZTkBIaJyCpQ8fpbJ4FvBPscYoi1mUSZ6K3p5E8wVV691avUANnJeEYCDo+3dPh0uOzikEnfMLQ7v
4JRncGgidqWJUuOUgRImwesL2WoIkdpq7PJGE4h9A6LbzWaE4qXi89Nu//XHyzgplPEjdQ//gpkt
CzDQvkVW1IJACoTzpLOCcs6zd3yZgtS4z7V5obMTa7kabg8cHEugZYThX68Pnk2BUlc0c0DdhqOG
QghgB9GYW2TyiRt9cGKOZCLIPOmy3Wo+U3EPzy/3fzxtMB9mj0Pzjy0CInTSKfDUnFVozSH+NIkS
Ds4kjUFRQeXNs2EjnmvB9vHnD7VYoiXrWEEbIN6F0VvFYXpL39jAzlOPTEyL6pwHR1zSCf7ZyeCj
o85NeGb1HSbgWi/C0AkV5+n5db8bG+KcvVNLozSk42BpIDgpZpRjZiaDP2gjZcLgj0EvRnMXN6vB
mrlz0hvKNJ8Zxo/4YeH9phCQNb0cExMpPDZqJMEh9UREgV/XjJqA0w2+auAhSfYvWDhnSNcTNacz
PvwvUEsDBAoAAgAAAHxrGUWfZPqaNAAAADQAAAA8ABwAYWNjZXNzaWJpbGl0eS9hbHQtdGFnLW9u
LWltYWdlLXdpdGgtbm9uaW1hZ2Utcm9sZS1zdGRlcnIudHh0VVQJAANMnPtTTJz7U3V4CwABBPUB
AAAEFAAAACNQUk9DRVNTIFVOUkVTUE9OU0lWRSAtIFdlYlByb2Nlc3MgKHBpZCAyMDIyMykKI0VP
RgpQSwMECgAAAAAAgGsZRQAAAAAAAAAAAAAAAAsAHABhbmltYXRpb25zL1VUCQADUJz7U1Kc+1N1
eAsAAQT1AQAABBQAAABQSwMECgAAAAAAgGsZRQAAAAAAAAAAAAAAAA4AHABhbmltYXRpb25zLzNk
L1VUCQADUJz7U1Kc+1N1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAzmoZRQOrQRfaAAAAJwEAADkA
HABhbmltYXRpb25zLzNkL2NoYW5nZS10cmFuc2Zvcm0taW4tZW5kLWV2ZW50LWNyYXNoLWxvZy50
eHRVVAkAAwOb+1MDm/tTdXgLAAEE9QEAAAQUAAAARZBPb8IwDMXv+RSWuMABNCYui6ZdUJF2aSu6
P0fUJoZFhLiyHfb1lyLELpbfk/zzs2sCx738QKQTHCknXyrDNw4tk0MR+/y0Xr+szF3CsQ8RPSjB
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
6+Pv+xXmw+xxRPyRly9CJ50CT81ZhdYc4k+TKOHgTNIYFBVU3j0bNuC5Fmwff/5QiyVasg4VtB7i
Qxi8VZxgN/dFCWz39Eh/tKjOeXDEJZ3gn50MPjrq3IjcVd9hBK71IgwdUXH2L2+77dCF5uyDmptf
IR0HSwPBSTGjHDMzGfxBGykTBn8Mejaau7hZDdZMnZONoUzziWH8iJ/R3a0K61fTy9kskcJjo0YS
HMlORBT4LcmoCTjd4KsGHpJk/w8L5wzpeqLmdMaH/wVQSwMECgACAAAAzmoZRY3WHI9nAAAAZwAA
ADYAHABhbmltYXRpb25zLzNkL2NoYW5nZS10cmFuc2Zvcm0taW4tZW5kLWV2ZW50LXN0ZGVyci50
eHRVVAkAAwOb+1MDm/tTdXgLAAEE9QEAAAQUAAAAI1BST0NFU1MgVU5SRVNQT05TSVZFIC0gV2Vi
UHJvY2VzcyAocGlkIDIwMTE5KQojRU9GCmJvb3RzdHJhcF9sb29rX3VwIHJlc3VsdDogdW5rbm93
biBlcnJvciBjb2RlICg0NGUpClBLAwQUAAIACAD3ahlFQgc8orsAAAD0AAAAOwAcAGFuaW1hdGlv
bnMvM2QvbWF0cml4LXRyYW5zZm9ybS10eXBlLWFuaW1hdGlvbi1jcmFzaC1sb2cudHh0VVQJAANR
m/tTUZv7U3V4CwABBPUBAAAEFAAAAEWPzUoDQRCE7/MUBbnowaCil0G8hA142V2y/pw3u504OOkO
3T3x9Z0E0UtTVVAfXa1g0tE+kWWPnRSe61V80LZXmcgs3t/ePTwuw6/FbkyZZrhgS5McCEp2FLZ0
oprULsHTIfEeUnwZgvlcRQxPhb9YvvkZN3gl85Wwq+RMGqMWrun6j1yR5DAfnc52OuPNiR2nMRey
C5VUY1j0m27VDAPe2k0z9F07vLw3lfX/P66OacZlxHVYNN06hB9QSwMEFAACAAgAgGsZRT3wezvI
IwAAAHsAADgAHABhbmltYXRpb25zLzNkL21hdHJpeC10cmFuc2Zvcm0tdHlwZS1hbmltYXRpb24t
c2FtcGxlLnR4dFVUCQADUJz7U1Cc+1N1eAsAAQT1AQAABBQAAADEW2mTG7e1/c5fwY9yKeBgX1RJ
XFhjxVKs51GcVKVSr5rN5ohPHHLMRfb417+L5jLsJkiNY5UzqhI5DTRwLnCXcy8wdlHNH9ez9XA5
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
aW9ucy8zZC9tYXRyaXgtdHJhbnNmb3JtLXR5cGUtYW5pbWF0aW9uLXN0ZGVyci50eHRVVAkAA1Gb
+1NRm/tTdXgLAAEE9QEAAAQUAAAAI1BST0NFU1MgVU5SRVNQT05TSVZFIC0gV2ViUHJvY2VzcyAo
cGlkIDIwMTQ1KQojRU9GClBLAwQUAAIACAAgaxlF/SxcYdoAAAAnAQAANQAcAGFuaW1hdGlvbnMv
M2QvcmVwbGFjZS1maWxsaW5nLXRyYW5zZm9ybS1jcmFzaC1sb2cudHh0VVQJAAObm/tTm5v7U3V4
CwABBPUBAAAEFAAAAEWQT2sCQQzF7/MpAl70oNQiFIbSi6zQy+7i9s9RdmeiHRwnS5KxX7+zIvYS
8h7kl5fUBI57+YFIJzhSTr5Uhm8cWiaHIvb5af2yXpm7hGMfInpQggEdXRAYZaQk4YrFKbMIGi4h
nYCyrowR9aWx5jWnc6Lf9AZL+EDRLSVlihHZWs6puLsHuSBRQbRXnKSb8KKYFK59zCg3KjJbM2v3
zbbqOvis91XXNnX3/lUV1n9+mI/Bw+2IhZlVzc4MRCrK/XiIROdDHqd9OaqFe0Qo6PIDRx5hvtng
wpg/UEsDBBQAAgAIAIBrGUXrGiQ/cSMAAO55AAAyABwAYW5pbWF0aW9ucy8zZC9yZXBsYWNlLWZp
bGxpbmctdHJhbnNmb3JtLXNhbXBsZS50eHRVVAkAA1Cc+1NQnPtTdXgLAAEE9QEAAAQUAAAAxFtp
kxs3kv3OX8GPUmjAxn0ovOPAOdZYGmndGs9ETGxsFItFiSs22eYhu/3rJ1E8mlUEqfZa4WmFRHYB
BbwE8niZgOyimj+sZ+vhcjpcV3f389niw/Afzfjdalk36/Xw2f1sMqSYKPJ82HxuVg9Dgod3s/l8
tm7q5WKyHux7vhwefk7e/lf75v8M3lWbj48d4Ofmx+V8e9esb0K1qW7iP25v4K3vZ5v9h9vO5pOb
H5p5U62b/bPRdFXdNT8vV59ufmxW69lysb6xN4+Tjar7+xu/XGyaxWZ986aq396etA5eL6vJ0E4m
qwNW/AvBdFxPMcaDVxN4aTadNauXfRkG+8ke4X/77bfDZ/DP84FfTprh+4f75tD4Ty2R5MNnf6s2
s8/Nc5B7BQMPH5cov/svWJAByN3cvJ/dHV+FleIIa0TFkLCXlL/EdISFHiKsAODb22EXB8g3hIf/
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
EytgjuEX6DjpDPo3oExAvYGOM552Hax8qmK8X5b+jORKAvyxlfVatwavwEF38dmB7zuIlf5xnoQn
5j85QG22RrBElMMEjMs4zIRSIpWjgoNr0X/OrfnJgfpWI6DTevDasXF67nG1eFosnzZfDpvXMrWx
3y3n70I5ASGicgqUPH6EyOBbwebCGKItZlEmei9OdxPMFVevdWr1AFZyWhGAg4PtXe8Pl20TUokH
5mYnZnDKMzg0EVvBRKlxykAJk+D1hWw1hEhtNXZ5oxHETQOi204mYuKl4st+u/v643WYi8n4kS+H
f8HMlgUYaN8iK2pBIAXCedJZQTnn2Ts+z/tp3OfadMzJibVcDbcHDg4l0DI38M/Xx6ymQKkrmjmg
bsP5PiEEsINozC3S58SdPq8wRTISZJp0Wa81n6i4p5fXx9/3K8yH2eOI+CMvX4ROOgWemrMKrTnE
nyZRwsGZpDEoKqi8ezZswHMt2D7+/KEWS7RkHSpoPcSHMHirOMFu7osS2O7pkf5oUZ3z4IhLOsE/
Oxl8dNS5EbmrvsMIXOtFGDqi4uxf3nbboQvN2Qc1N79COg6WBoKTYkY5ZmYy+IM2UiYM/hj0bDR3
cbMarJk6JxtDmeYTw/gRP6O7WxXWr6aXs1kihcdGjSQ4kp2IKPBbklETcLrBVw08JMn+HxbOGdL1
RM3pjA//C1BLAwQKAAIAAAAgaxlFZtjkoGcAAABnAAAAMgAcAGFuaW1hdGlvbnMvM2QvcmVwbGFj
ZS1maWxsaW5nLXRyYW5zZm9ybS1zdGRlcnIudHh0VVQJAAObm/tTm5v7U3V4CwABBPUBAAAEFAAA
ACNQUk9DRVNTIFVOUkVTUE9OU0lWRSAtIFdlYlByb2Nlc3MgKHBpZCAyMDE3MSkKI0VPRgpib290
c3RyYXBfbG9va191cCByZXN1bHQ6IHVua25vd24gZXJyb3IgY29kZSAoNDRlKQpQSwMEFAACAAgA
SmsZRdaZJ9vZAAAAJwEAADgAHABhbmltYXRpb25zLzNkL3N0YXRlLWF0LWVuZC1ldmVudC10cmFu
c2Zvcm0tY3Jhc2gtbG9nLnR4dFVUCQAD7Jv7U+yb+1N1eAsAAQT1AQAABBQAAABFkE9vwjAMxe/5
FJa4wGEIEKdo2gUVaZe2ovtzRGljWESIK9uBr78Uoe1i+T3JPz+7JhjYyQ9EOsOJcvKlMnxj3zIN
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
6bJeaz5RcQ9Pz/e/7VeYD7PHEfFHXr4InXQKPDVnFVpziD9NooSDM0ljUFRQefNs2IDnUrB9/Pld
LZZoyTpU0HqId2HwVnGC3dwXJbDd0yP90aI658ERl3SCf3Yy+OiocyNyV32HEbjWizB0RMXZP73s
tkMXmrN3am5+hXQcLA0EJ8WMcszMZPAHbaRMGPwx6Nlo7uxmNVgzdU42hjLNJ4bxPX5Gd7cqrF9N
z2ezRAqPjRpJcCQ7EVHgtySjJuB0g68aeEiS/RcWzgnS5UTN6xnv/g1QSwMECgACAAAASmsZRUms
Gj9nAAAAZwAAADUAHABhbmltYXRpb25zLzNkL3N0YXRlLWF0LWVuZC1ldmVudC10cmFuc2Zvcm0t
c3RkZXJyLnR4dFVUCQAD7Jv7U+yb+1N1eAsAAQT1AQAABBQAAAAjUFJPQ0VTUyBVTlJFU1BPTlNJ
VkUgLSBXZWJQcm9jZXNzIChwaWQgMjAyMDEpCiNFT0YKYm9vdHN0cmFwX2xvb2tfdXAgcmVzdWx0
OiB1bmtub3duIGVycm9yIGNvZGUgKDQ0ZSkKUEsDBBQAAgAIAHJrGUXMMENU2QAAACcBAAA5ABwA
YW5pbWF0aW9ucy8zZC90cmFuc2Zvcm0tb3JpZ2luLXZzLWZ1bmN0aW9ucy1jcmFzaC1sb2cudHh0
VVQJAAM4nPtTOJz7U3V4CwABBPUBAAAEFAAAAEWQT2vDMAzF7/4Ugl7aw8oIOZmxS0lhlyQ0+3Ms
jqN2pq4VJLn7+nNK2S5C74F+elJL4NnJN0Q6w4lymkpl+MKxZ/IoYqvnqqq35iHh5ELECZRgRE9X
BEaZKUm4YXHKLIKGa0hnoKxbY0Sn0ljzktMl0U96hSd4R9EdJWWKEdlazqm4+z9yQaKCqFNcpF/w
opgUbi5mlDsVma1Z9Ydu1wwDfLSHZui7dnj7bArrPz+s5zDB/YiNWTXd3oxEKspuPkaiyzHPy74c
1cIjIhR0+YGnCWFd17gx5hdQSwMEFAACAAgAgGsZRXe7XTVxIwAA/nkAADYAHABhbmltYXRpb25z
LzNkL3RyYW5zZm9ybS1vcmlnaW4tdnMtZnVuY3Rpb25zLXNhbXBsZS50eHRVVAkAA1Cc+1NQnPtT
dXgLAAEE9QEAAAQUAAAAxFtpkxu3tf3OX8GPcingYF9ceXFhjRVLkeJRnFSlUq+azeaITxxyzEX2
+NfnorkMuwlS42eVMyqJnAYaOBe4y7kXkF1U88f1bD1cTofr6v5hPlvcDf/RjN+tlnWzXg9fPMwm
Q4op5V8Nm0/N6nFI8PB+Np/P1k29XEzWg33Pr4eHn5O3/9W++e/Bu2rz4akD/Nz8sJxv75v1Tag2
1U38x+0NvPXdbLP/cNvZfHLzfTNvqnWzfzaarqr75qfl6uPND81qPVsu1jf25mmyUfXwcOOXi02z
2Kxv3lT129uT1sHrZTUZ2slkdcCKfyaYEzzBGA9eTeCl2XTWrPYo6+V9Hm/ejE6G2E/7JIjE5OXw
Bfw7gj8vvxr45aQZvn98aA5d/qklknz44q/VZvap+QrWYQUTDZ+W7Jtvvhn+i/x7MIB1aG7ez+6P
r1JMOMIaUTEk7Gsqv+ZsRBUfIqwA8NvbYRcNyDuEh/+E7RnpkRi+IDRx8dXg++ZhudqcdFaDga/m
8+Hdqnr48PVg8H65qebDxfZ+3KyGs8Vwvanqj8MXq6bewiufGliKLazpZHi/nW9msCJ/GP70oVkM
//Q/4it4/TaPPn4cbpYPrQrlt/+QNSm/OJ9XD2t49cX+jWH7ipstKtCjV/fVXbP+erCX92Q7hmjY
ezidTst70q7+S3jhuAnDP3oelPfKosgiQUxbh0zUBFljEhYKNJLQP/0XNLAjE6EFQQmdTtXw5Xw2
htf8ctW8b9ab2w+z+9HkER4OX2R1QVlpQEyjLXdeMJBLOMSijMhhrZGVLnjJaNRK/koxL03cgy5K
0EXeo5dP4p7C3m8OvAN7+AC2MJ7NZxtwJSM8wiBKoNRRYiKyAnvEaGBIG5lQkEpg6oTUSvwXduzS
AlT1+QIIzPLedZUUEJQUlLLIOCgjEpxZxDx80zFisHaqmaLBc2t+q7i7Bx3c4+w5+rhrOSnift3c
VfVjCT3WhmlGCJKOKTCvBOiFBDXUJOqENYv8/4d+N+XFLTv26AjVYHMmlGBK9jzGX6pP1W29mj1s
snaXxHKOkWASR9wKDuaUxdI6IIOFMdhEDLb2K8XqTloWrNvnVDQhzbmeSTWtzvfrkkwxyaQMTbBV
YFxMZkXTFDyhj+ADsTNOpV+/VZeF2TcOdmgV7IFkk1OXfnzIiWGwQWBcEB0oxCx69GtMemsZeDNF
HTiDyDUyMhjkjLQ0JKUUwwB6u15lf3WThziZUBMzZf0JNamo6WlEaMbbu9vH+/FyDlHEaHjBaJhe
wX4nRWDjraaIBUaRMc6hiDkLMVhJFIfpbx/Xm+b+5vVsvIJgdvNuNfsEETwdVgUW82T88mqd9hh0
wVYlCZrexr/3HsL8KHckADzRxJyCeJC8YoiBb0HauQjGaVJwjgdp5XOAw7BlvNDQhcl5AaYc92C+
a1bT5eq+WtSNPZBNgE1kxi0BOHEB9ltSRLQDh5IYbDiPAjbAB66UVVLT5wAvTFQWpNCxK5isC4Kp
3fqDzv0C9rWPbGREgWxdimvUEiHAKyJLVdYlEMpJAwolhFE8RcKJPFHl06G7gNT0HNAY172Vvm2q
Vf2hDTpkxHeKkT8BieBWY2k8AucMa+ywQi5ahQJz3gQnnGyddm+NTxY32/Vts/o0g8BYXtWTzkcg
5Z7H5o6QY6UKQmrRs9sdtlm1aJVor/vCeqqllEhJDgttRAJWRBnyMmlYe+6cC89RoePgZeDH5g7w
qdHnwKeV6O3OX5uN3W4+DF/sdma3L5ZbSix4aEclUIHgDShH5CjYZIEcQKtnzwG+H7wMe9/YBT0u
gZ72jff75n65aX6YNT8dNh/cdYtf41E2XuETGC+4S67B9TDrPZDt5EHjrSeJMwck9TkCnE9UluW8
36lYFLNzJaLg0XtifdesIN1ZHoXJOgS2CD4zCRSVTUBCpUEafkde+2B1CDgle9VEDoOWgR9au3DF
uaenVE97cLPx5eAMKo9lq/Qcq5HK+iOVjMRyRAkH1qIk5DrUaeSAkIZAgtJRfNau89Bl0IfWDmhq
6gLoqg/6dbW4O3X4au+QVKv4mLIAtAoCPGg6YhycvtbRISwChnggbErxKnALk8xq8LnLxbP90imk
CxZ+0qMr9BifC80I63mnajuZLdv9svlbNnbScpv2M0fpaJ1mkJKSHA2YJgyBiWgEYS5Rprj3CX92
w9qxL+9Y29xBL8TkHL2o6kNEq+GtevX4sFmWMk0fsafGgjvlFCPGjEM2WIsETVxqRhnz/iSMrXfY
C8N2MVUlTONxu6Lty/f3y4XvoMqZJ87B9WLIddYmgAt00WkJuRXEOK09RpF5Z40OFst0AWt/ui7a
cUHpzZgd0L6276z/rrR6IefiXjtEnYXVy24SXK9FFAMYbAk2xF/X9LoG8r0Cf/lZBf/U1DBAuVsP
5KAryDmVo7Xuh7B1Lgrl1X6xM2YgN8qMCMt6zamODEvQEZwJhgCqkwl0FJC7i6iBxaWrUt7ux75E
GXatgy5AWUBds2mz25M/v25rTMXiCYmMQP6DOHAwyIyCQNYFD5uSSJDgOLG/DvftQ7P48+urNAEy
qj6ILvy6sOiTSW3oDv5y/H/1yB7QQ1i4qvgGB0YM1ShxyFpZhNxcA8dElGIrSAoGnnS55un4HWCN
OOcGtKnJQdfXm0n98uVIHq1SFpGpPbJoLXWCRRRtgCzUeCBnOCaUnAnccMhpqe0i605wio01mp5h
Y9P8scf2I8zdsAM0A4OcIzN7ZIDHeGc0CkrBmmEMvIVRcGxCOgXZjYKMuYfsdPhTYBxX56Gc43rc
CxB/H89+3LYmtIsLlLMREdnJGqtiVMDLZS6rQFyHb1Ihj4GFAH/FHJvnEKnDBGXVPLR2oNOxOYdO
a96D7lsPueOwrF1V2q4i8dbksioKwQNyGxzSYF9IJWBjYFXBkmdlzE/jXwpth/YOej499wLwsF8z
BhKcbkFXT8g3MSLoCLFCUZcrqJgjK3lAQKi0cUBosSdXnUA75kXOnW47OIUs4JSY93zsbPHxacRM
+Ea6VRQiMmQWdCDSUqQiBr8VLdnpC1AKcGJMMIb1dfpQrcbLxWcDyatTFKd9oKEjlZSiIJXUB2aR
yzNHF5brPCN20YUlYUDvYT88ITlSUuAZ0ghkMBNWhsC0isXY/TRJD1tBrxWp+hlltV3UH57yG8HM
yOTolj8zVVXJgzlCcglsGqiqgsQggaMN1BtDVCRAtL9c7txFc4mlnvbpyKxoQcsUPTK97eKn2eK4
I0yMyJWYQonCLDCJaADGCroHls0hwQaP7ijzWELMKW7I6SxdeIVKBm+9d8cISuTevgfzZeykUGgg
qggpEGSgYAtJgi1gg5FXGpRIM8Lpl08hAEW5DzR0JNXndc/8cNpTvver7XoTP1XzbYvD3uXzwX1W
SjOxskYFxmHlGXWQlkZBkQ6JImFcsoEScFbPqhCUJrpQ5yv07IpGaEE0Qy6wxelyu5i0Qw1fyANv
JGLEQTqd81ccgKbkmg0Dg0UupxbSG09AOuy0fhZtTMdJrhPIp35dkUxJpDE90Ip3i7sSjWTgYxIT
HkVPcvkG/tEYaCRRQguVLDHhevrdcsNXby/VOtbL7are8cgjgg7uMS/gHtf9tPRNs6km+wLCPhFX
WI1IzkglMMMYE8QQp0DLZFYwBnme01FDsqJwFPLLubcDknLHQ2tXxkYVZGz0YW/CrLpbLNebWf2m
Wa/zobKfz7J2FzZMC65j3iEcKOgbdsCyMAcXAhkKZjoqGXSX8V0fvQe0EG9qos541NN6vVpsmtWi
msPGCN6GxvazTagiITpyyFwpsCrwZrAtQYHvpdgRBXEn4OexqvPZLpcO+j078rX5ypl85qwM3R5p
7B1r5rlZLJNlCgwCB5MWBRFB1TDnyEUTEHZKRck9xsk/R6bODBfs/bRLV4qqYDITXB3U6VO4fXeM
jxqPyLWsi3kLG2YZIi6Xc3zKEnFIwrBVxFgjgbr/Tsn9E+5BV7JxSdzJQVz/w5vbd/Pt3Wxxu33I
d0VKZpMwZYYZiPzYw8Yp0EOXIjB+mUTgNBli5JdJly/A6YjUAD08Ewke9u2spbqtZbV2JdqzJgq8
0OVrITxmh+0hVzEG8n5CiVCUsc+dg1zhz7u2HtSCsjWsLhR4f5hNmmU2l/Yo0rThMQqsqQHqCW4J
MBvFIHUWNl9qscJpkbT+vG9uB75s8m1zB/SUFUBP92fquVS2fVgDkT+w+rKF0ENdAuKjE9qixFVm
z/ANPLBBkTKRLHeGKtz1uKfDd3EV8lRB8LhYg90sl/Px8udRWwx9v/slr67ZZVP5M3skLxJogUM4
uyVQ7IicpxwpCemUNwISrM8U506Gv0AMT3oMusjrgjhUHaj6jk7/70dwxM38uNpY4BHXELov+iTu
lDHMM5QkDflIhiCbwHY54RYHGSN43yJrL0zYBUx1CXB//T8084fW7e8K37Q9W9HWWA4E3TsOTBYS
WAMBDMAxrZM03prwJdLWb2Hqcqfc0hWmUK8RlKieZWY2Mmk2Tb1ZrtZ1e8+CtycwVJo2TgulRMK5
5qGCRIzgAEQKM9BvGxQ1MYHHedZ9AZgoHCa6fMXirNugi1+XhJo+1dQfHqez+bEkqs3VmqJWUigW
MIomF3UFOCJLsEYgc7RgNZK0J/OlYvrpPF2I9JxECEaPTPsv72gpAlGZkguQARnvwY1kJmS5ALuF
3M/nuj5T8Qsx7SOCDm4mz+Mo5DH9ayV/21arzS+7Czk7Vw40Z0/oBE4UHAxN4GCYEAoZ7VqViVgE
MFN1veT8NHRZiKf2DnBR8Ob54RVWOnwhVE7T8gkjF4lAlgNem0qA7RyEfhwh4xFRuORiIJz9xvTg
tEcP+vlVHqFlP7v59tXRv+8S553KSCED1h5cDZYaFpzRXOMHp0OjF1go7x39Ik7n1VX/f2zuiKYL
Jy65/NVzP982s/tJTg9OC67WJ+xzbVjk43amqc13WzWSJIKeaun18wqu+8EvOcy2sQPaFBIAUZ0V
1MZV/XH70KlijvbJzWhnC9JJ4Tn3SMEPWDODEBUgEeBMB4Kt9fD4ORK43kynAuzaBl2o4xL+45Fj
Zqm7y3izxd3fN7N5kQtrqQmlFGEjDRgEweDwwSd5ITKd8YJi3yU0F4btQatL0Ore0p6kC7t0IGtG
9jL73+CXtpAqhZNaIspjvg6TQPM9EAIvIseacyVd/D2ykl1bT85JQU52dtaQ8qKF2aoNdI+7OnjL
4gnQzUzkceIkWA56k69rJkGR02ADQutgLMkJMvlsRnIc/7NS9vBc8GPdTh25J7xANya8Pqjej+C8
qwUoyDE2C3q1Ngtu1ykqIwpArIG5Wg1+zgLNxsL4FIilkRdjc3+mHszC9kzG4nhR4OXLp8tv8nr1
OAqLvdYRYZ1PtDAR4Ka0Qkl7aAlMhNC7/XYyehfV+LyoLabsuHjutb0tXlwgmHqcJNI+B1rHDXJW
OkQjUJeEHVWa/07Z+RPEQVeI8/UGWUsXgN43P+fKsMQnIc6CSIxqyKaIhhDnPYRpKTQikDhCtkgg
QaSfDc554MuBObeeQpYEn0cuSc6CwJv830U2y2394ZDIn8QDytSItxVu1ea5OKkUIzWISNIeNMRc
GIKMF+K3A03hXJLnxIMrk3bKjP1uXQELLgoeNr28bF0tJjnoF/TOKWaClQw5qfIlHwUBOmgOGRi1
UhAwXY+vZWCdoXvYpiVsR4L/sXm8v1sdk0Vxld57byJjJpesiMzVBWDXFMwjCmWcxDFyaoowT2fp
wDPqPP+QlTwWm2b1cvHpqXSgrt4bAI3QzhiJomvvtiWb74CDw2PKSMlDTJF0/Udn+A6wSp2TYDk2
fRI8adYfN8uH9ZEH5+tqfH9trS3IBBZsvk9EJE5gcMEjJ1iuhtGogCU75cnzboe3Ex1Yb+5w6ZL4
WcdBV4Zziizrqs8bzrKfzBtom6BDKtySZUG9VAwBWcisJjMyQoHVcGaINQLIzm84ydg3dpBPRXOO
HP4e67BvZuv62YVYqxKhCjIUa4BWMhldvk+IIdhA5ihsEsL9Xq7+BHhX4Ol5+UphfCyrjX9pI/7T
1XJ85Wq5j2BrIuqsfuBiBAYrzgVaTRMMyYEDJdo1js7wgy4GVQLW16HPMbJc4PNgropjtjvK00EH
5BkJzMkULLa/lZFd5FcAd1KQYX/xFwSutuW7jUAfLfdRIe/y/WXCPFiAjQhMgWEIqBSiT3cdn0bq
AhDjAoC6f/P4KNbo1dv2pn6uk5InOKAiTMd8nRpIO8xvkMWcIsEsC8pA3sivq3E76gUjfNu7cg/w
qgLm5rhoq2a9nH8amdLCYa1pgOVBVoPaMZJSjnH+P8VdS5PbyJG+61fscS/VW+/HsR4oWRvjtTxt
Rfjm4FNiTDdb0WxNzPz7zSyQIAsogj1erh1zkARigC+Bqnx+mSA0BMVslDZwUT+4+mo1kE0TyGKS
o1i9LLCIjNkJ5kr9JUdHEycc/AWsjoM+zikQBRYNXODIA7/V1wCXvOb9wE8jmI13LOUYZq4K3iWd
L8FVxsiMJdMp22nkLGDrH/aGRKvAsCWqAxgW7+fpv/N17vhf7fo2gGwgVys69jPz/2zeevOgnC7q
p/yJCTjw1bgEd0Z3GawxrEpiRY4kUnClOwnxVriRBzpd+1rwdPy5wq0btGtj3aLhH0+fOkj9UFYJ
uJegk8A55jGAm5yoJ87xAJvcGcpS5ib6m27yLYZBfc6HGnDj6dulHUnxAtrtcMoT9Bl0fY5lKLUQ
13vw7ZH5lcDKeVDyxBnjYPGAztLuHtmsKllxXQsPp9SCrllD0K04KZTfvg8WnUn6IMWMRTc0RI0p
Xu0guBeYfQRfBxacBWvHaIxdbnunw00qaM40VIxbjxMP3193l7yYh8/47z6da0sKC7z5UjlSAaLb
gJo6WSSrwZtxWsLGBnjRWarCjQTEP8M+GtBcaWw7/VxJvlg1/I4lGyh6+WX/9vPm6+7wBma3lfAC
s045BO4K6QjChw5T7xChMaq8tp03+l/Is6pS9VPoH2ohW5LzQfLfFq/nbEYVwGlvovWgoTvsePAM
zJwJnsicKFU8e0VHNJGLS9UQeAuC2o6Cyd1+2269cMEzyiWhEDOCW56QDWnB1GaDPckqdVeyPJPr
1qh0C5UZ99rF18XhWz9BYvN6DJWPlFTcCrKYtNRpnzGATA4LvKCMwAnF2p7iPBojomgtjwZRpXGz
K5q2cWYlXqvqbhl3DasxLMhePR4LN1SYonr7v6Dd7pQ2HvSQNhAlC6YtKF7s4M8hUMtsUjzcjyR1
xjJHNBhvdMsazW9WrJcNsUtAhirt1CYKTmjJCOiEwxhIzrFUpgLmBgThwhlP4XW67v9Woxo9kb41
4qo5LT9XIlo9DXfhoDrTW1fvTH7wnKKTHhOTAjxHDUrcqgyiMi07LYKEIOoKt7VhXgCDbgAzy1Yc
Hhff3370FqV0UvbmjgUuNXUEtjTgcdwQFy0sON4Zzg3lzsW7MLsvEMwE68czahnNqiHjcry+/pow
uSD5RVhjjOc0ckU6iA6IkCwijyUSlaSyAdZWUvHuJuSv6UqdNFVSuQa9EA5Odw12H3xe7DdPh3Pf
t8OkkMqWJeUEkQGspEgRghAnJLw6kE/oIGNg93h1lxDmWiT6M2oht9OkrV3QgWuyPDyfMw+V8ZfI
P44dkTQ5rFozYiVyOJLqhIM1b8ZtRReXqiAslGpAUEMS/2P+++O3xetm3TTI0gcnYY/yCNGdkNkS
m3QmWUGQlyPnLNA79WvVMCoRlnTq3toVHURAd+Tz4vWweW32nOkoeScdMc5r7COAsA97vcHXsFw5
OJj8v9GPugReSb1xU2fBblbjGCztVogMMD9epE8L2crKkjzNgSpJM1hNKpAB4Rjx3CaiQbPkAC8R
4rT7GdEpnisZ1sl5lfRb1tg5W72YcBAqqc8lmhCTgAiGEsoEeA4K+QgMi2LKO+GlCZ29v+o7o7nG
SWjL2uC44MHtdj0l2P3Y794OPb3uy76fOVFz63QSTKJdheAbU8rREG+RR6QFdl0yn52/za3Da88Q
6/DnkQxTIwXrt0nCronKfTDKGLJeDCjuLoFKD4V4KWwkAF3DXnWCQzjAXGffzb6+zVaenPahRm8b
IvFxK8k5aN0unndPv69gU7+W6TY9Y02WNK2ioDMVB3ky1kSxE9lh96OKOXUyKeP0uwY25HKPeLzH
lRVZnVPLtFINmdbjnPPHzR5z8rg/nx7fXl6L13qc+yF4z6tK0oNJEoQJjzVQTYlXriNc4WAKKY1n
7+KSNG7VlqpxYi3aet0QbTMWDbM9X58KS+yB9U647TPpPkkXs9IEq0moJ8HYaUYh/laC5yiZkOqf
Nnb9bzXgTRPw5mTWnhb7r7umWbZaRtjciSSlwSxb0RGHxTovhQLdlrmQoxL/5bUqEKwRq8PBwbb+
vFjvcGJPM0oWzASITkgsWVUOgVnQKRIToxC5ozZadidyYA1jJEHjMRY+b/XeD983m9W3h9fN6uUr
KK9KJ/TzItRxXoQqk21kgLeOzGkOqztT7DASnATqc86Gg8R3Yc4+FlQ/t0BVbRXj0+on0CAIO6b0
KNnRHGfIWNAQSYM3wBnHztZAnEMXqUsallFI2qu5TMdz44206LBw0A3N4v3/unx6Wf1yGHg385zY
5HiKIQqiMIoRJiTisa/dx2iQ8KIgapvDeXmzEdhFAywXjThkA6vxRDEttEBdDK7PQlkjPdEZ41pe
WBSCljFgmQYjmbfvbcTGW1ytJDXOnUlWXJxRC8xlQ2A5xPLx5/z4Y/e2accDLnmuFGgaDEsEJsIV
LJkgGPaix5RNqBVPfbUaiNQNIGpMM0VHbJMfQZ7vOES2+AzS9dkTpAZopqkSoAsF+HgCLkmCTRmM
UQehk9YK3J73PP3pba64P5PzaqFUSyg3rvh8fHysyaWSi5AyjnFitkxjg6UdAiWp7G3RBabms71w
xSt28/GxRuhYA+Fy0Pi/HZ7ezulZ8cBboxzEqelBMmN0sABbYDoeXDenIEAUsB1Vzl5LORrlcHn5
Gtdy08B1HIcAJz8vVt+GZK3l8+oiZAEOI6zRzoJVwg524riHoK9jHnZkSLB+m+ri4i4VOrFtPDUp
Bx37t085t3aMMVQHnPvWmQ4MicUsvsrwXm3QohPBcSvuZCPPED7UIE0D+WI8qtN3//GfWqqSfy1/
lrebsYDHiNZgAMtsQx9weBS4wR3l2Ykb02X+UOTouys7rqvlWTTkUZQ1qnqrJyz08wfmyj7jD8fi
tUkZ/BbQWhmUGDwf4lmO2F7vJdgu5m8UVtCXizN+Xqz9PEV5C7AZukNgyZ3pp2Z2XWsF6iFq8Ety
aUuHnecZFkzwPauOO3slfXpxkxG4RtymmBz5Duv94dDOEIFVttihQpnFhxkpcbqkGXxIossdV2HO
Ll9cuMJl1lPGHR68Ssw+9X1cHGGFlW2NhRcKCiAGxGVpJhZ9HfCTQ2bgvsYbTZS3KErn3ysJ1pvG
a99u+JmU9wMbm86jhqSb5fUqY0USVBEqUZMkZoiT2RAWO589+Gxg18e8vOoOl+gWrLEoF0yOR08t
X55xpnkfojv0dii8U2yoQVe/tHKCZkXL24HDCPY2G+rfNTY0wD3aDQQvzxVSoRtI4WDDTRjla+CR
Fp++OPSC8oiUj6RwFWQcdNpBrBc90wZ8X2Oyvk8+qHHiSJ5tQx4z1l/NivipdsFVWdmZSxz7TChn
aOQcxCcKnDNBGfUGG5/8XTptPtdQJqXvSjzZCMfg4OZMbnp++XVz2Q3HkRI5o/KMFiGCU80sskjQ
qNuMpFQJD014w7Vsj5Yb32kEs/EWJB83M5+GaXzbnQaIYjqdl864TuOcXNLhBBSh4A0EbyPRxnLp
PRcs6rtEiEcEf/o0P2HjT59q+Xhj18jNmE29OjtU6kHSmWHxYPwDVR7UaPYKB3V3xHbKEmM4h5iM
IcN/TtGvWi9h03oJ22G638dPuU0elDRRi95c0egxgc0xiRiqspOBWXsjo/9+n2pAUOEu8xDHuIvR
bKUcDr/v375tqtmXfcKBnSZUloEgTnYpcwimbJnPmVgJwhUxIK4K3JvI9N0z1n1i4XGKcJp9GE6q
HwVTrUexPiexcGbSYOIkx3iCz5SHDYs+W6IVdmty/DhBRDWtKIRyNoB/0Z55eXmfCqClDYBuQcu0
wvO7+vVYmu+DHd0z4X3HBNMOp+R4jHYVLHkdiIlgSpikBuL9u5GbZ2ryv04K8kuANZFqKcTyomFo
sdwNGlbP51YsxNAuIwkdJzoZ44nz8M+EA08kp6ruaRpdvsLVUqtLe2wZyos+HfHT7uu3QsGVcx+n
SD7nBFCSwMQUjrf0FLOxvoPgmIEzxN6ZML+46bV8+cUpH2rkU2O2LDWAylajl/VjN0w1tqywOsBd
49FxLLThdOzoQE1h05BwSQWplIzCv7eY8eXT9QrGl0rzL11jLvbSLccd9vHbj/0vu/3X430H8EKU
9D4EqhEWQSApYniBwavHTA+HLcwDF7JrTepsgK9vc0WK+qRanFVjpcPBka6dacvUMYScIvYBKYxd
YRE5BZYraMOMhvDP2HkK5x/rtQRwpoF4PV40S4h7jnr6z4s9bPDnyxlkfbcB405zsAFWZSy/ozb0
Cr9tlOE/azJn7saYrtH1r/kQo9NqedaiIc+GjVyJ/ZFm3JoiAJG1Np4RxVWH3y6hYOS4JSzxoKVh
WjM25ztUl66xNYIsODg0d3xfPJ/7nkRTC55SWdGCx2y1JDg3BUxPmeTaMcIjeNueJSPCiHx4cfEK
1LoRuy4354D/vz93H1uPSUsPET12cUh83RSrn8wEohnViWVkvOa7DVs4QaiQb1fTHNxyux7GGP7y
21M7C2Cz6QAiOIcWe8bALXbMCkI9i4qJlC1r++jnC17iWJX57CMcK+3WA4P0+Ymf32thRjbMGz1R
mnOiLuMAaJGQWwr+ok0YRhja4VcAqOQjMs3l9StgRk3TgCujh+6pjz+1e9eDD15EYixO2PRa9SR+
zZxUsKNp5+5Fo/mpBXo15ResxbHlq4qg+y8n9Q1GzBqICBA94zFLLYjO2O2KJFPXBU9o9twnEbMy
Nx3TKzWNePztEu5aqunLX8tj80GR8Utz92jnUuc1gMMpZwEWolcGP/EALoMEe6VudB3/gYf8ZfqU
AWHjKcslHUay7g6wOM++ME6W5nNM/MRBIh0yyVEZsFult447krVQVinNOtrOYdd3qkEuWQvkmIH8
6S+PP1634BZBYIi+I/Zi9n/pZ8JQFpMkAb97IIwHx9GCc6N1Z8ErVpLfaEkZrn6tYer48wi5biEf
l/fT7vCLf13u3l6P9BL+oPqJz/gnqnlMGgj05zXFjzNFjDBwLryKVnuRFb3RlDK6wzV2U3VSJYnR
U6dybZmYo0n/5fFiSIzqWdLlT6yAOYZfoOOkM+jfgDIB9QY6znjadbDyqYrxfln6M5IrCfDHVtZr
3Rq8AgfdxWcHvu8gVvrHeRKemP/kALXZGsESUQ4TMC7jMBNKiVSOCg6uRf85t+YnB+pbjYBO68Fr
x8bpucfV4mmxfNp8OWxey9TGfrecvwvlBISIyilQ8vgRIoNvBZsLY4i2mEWZ6L043U0wV1y91qnV
A1jJaUUADg62d70/XLZNSCUemJudmMEpz+DQRGwFE6XGKQMlTILXF7LVECK11djljUYQNw2IbjuZ
iImXii/77e7rj9dhLibjR74c/gUzWxZgoH2LrKgFgRQI50lnBeWcZ+/4PO+ncZ9r0zEnJ9ZyNdwe
ODiUQMvcwD9fH7OaAqWuaOaAug3n+4QQwA6iMbdInxN3+rzCFMlIkGnSZb3WfKLinl5eH3/frzAf
Zo8j4o+8fBE66RR4as4qtOYQf5pECQdnksagqKDy7tmwAc+1YPv484daLNGSdaig9RAfwuCt4gS7
uS9KYLunR/qjRXXOgyMu6QT/7GTw0VHnRuSu+g4jcK0XYeiIirN/edtthy40Zx/U3PwK6ThYGghO
ihnlmJnJ4A/aSJkw+GPQs9Hcxc1qsGbqnGwMZZpPDONH/IzublVYv5pezmaJFB4bNZLgSHYiosBv
SUZNwOkGXzXwkCT7f1g4Z0jXEzWnMz78L1BLAwQKAAIAAAByaxlFYqPBZmcAAABnAAAANgAcAGFu
aW1hdGlvbnMvM2QvdHJhbnNmb3JtLW9yaWdpbi12cy1mdW5jdGlvbnMtc3RkZXJyLnR4dFVUCQAD
OJz7Uzic+1N1eAsAAQT1AQAABBQAAAAjUFJPQ0VTUyBVTlJFU1BPTlNJVkUgLSBXZWJQcm9jZXNz
IChwaWQgMjAyMjQpCiNFT0YKYm9vdHN0cmFwX2xvb2tfdXAgcmVzdWx0OiB1bmtub3duIGVycm9y
IGNvZGUgKDQ0ZSkKUEsDBBQAAgAIAM5qGUUYO2aT2gAAACcBAAAuABwAYW5pbWF0aW9ucy9hZGRl
ZC13aGlsZS1zdXNwZW5kZWQtY3Jhc2gtbG9nLnR4dFVUCQADA5v7UwOb+1N1eAsAAQT1AQAABBQA
AABFkE9rwzAMxe/+FIJe2sNKF3oyY5eSwi5JaPbnWJxY7UxdK0hy9/XnlLJdhN4D/fSkhmBkJ98Q
6QwnysmXyvCFQ8c0ooitNs9VtTYPCScXInpQggFHuiIwykRJwg2LU2YRNFxDOgNlXRsj6ktjzUtO
l0Q/6RWe4B1Fd5SUKUZkazmn4u7/yAWJCqJOcZbjjBfFpHBzMaPcqchszaI7tLu67+GjOdR91zb9
22ddWP/5YTkFD/cjVmZRt3szEKkou+kYiS7HPM37clQLj4hQ0OUHI3mE5XaLK2N+AVBLAwQUAAIA
CACAaxlF1HTfOW8jAAD+eQAAKwAcAGFuaW1hdGlvbnMvYWRkZWQtd2hpbGUtc3VzcGVuZGVkLXNh
bXBsZS50eHRVVAkAA1Cc+1NQnPtTdXgLAAEE9QEAAAQUAAAAxFtpkxu3tf3OX8GPcingYF9ceXFh
jRVLkeJRnFSlUq+azeaITxxyzEX2+NfnorkMuwlS42eVMyqJnAYaOBe4y7kXkF1U88f1bD1cTofr
6v5hPlvcDf/RjN+tlnWzXg9fPMwmQ4oJpV8Nm0/N6nFI8PB+Np/P1k29XEzWg33Pr4eHn5O3/9W+
+e/Bu2rz4akD/Nz8sJxv75v1Tag21U38x+0NvPXdbLP/cNvZfHLzfTNvqnWzfzaarqr75qfl6uPN
D81qPVsu1jf25mmyUfXwcOOXi02z2Kxv3lT129uT1sHrZTUZ2slkdcCKfyZ4OhFTjPHg1QRemk1n
zWqPsl7e5/HmzehkiP20T4JITF4OX8C/I/jz8quBX06a4fvHh+bQ5Z9aIsmHL/5abWafmq9gHVYw
0fBpyb755pvhv8i/BwNYh+bm/ez++CqsHEdYIyqGhH1NydeMjRgzQ4QVAH57O+yiAXmH8PCfsD0j
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
2nWw8qmK8X5Z+jOSKwnwx1bWa90avAIH3cVnB77vIFb6x3kSnpj/5AC12RrBElEOEzAu4zATSolU
jgoOrkX/ObfmJwfqW42ATuvBa8fG6bnH1eJpsXzafDlsXsvUxn63nL8L5QSEiMopUPL4ESKDbwWb
C2OItphFmei9ON1NMFdcvdap1QNYyWlFAA4Otne9P1y2TUglHpibnZjBKc/g0ERsBROlxikDJUyC
1xey1RAitdXY5Y1GEDcNiG47mYiJl4ov++3u64/XYS4m40e+HP4FM1sWYKB9i6yoBYEUCOdJZwXl
nGfv+Dzvp3Gfa9MxJyfWcjXcHjg4lEDL3MA/Xx+zmgKlrmjmgLoN5/uEEMAOojG3SJ8Td/q8whTJ
SJBp0mW91nyi4p5eXh9/368wH2aPI+KPvHwROukUeGrOKrTmEH+aRAkHZ5LGoKig8u7ZsAHPtWD7
+POHWizRknWooPUQH8LgreIEu7kvSmC7p0f6o0V1zoMjLukE/+xk8NFR50bkrvoOI3CtF2HoiIqz
f3nbbYcuNGcf1Nz8Cuk4WBoITooZ5ZiZyeAP2kiZMPhj0LPR3MXNarBm6pxsDGWaTwzjR/yM7m5V
WL+aXs5miRQeGzWS4Eh2IqLAb0lGTcDpBl818JAk+39YOGdI1xM1pzM+/C9QSwMECgACAAAAzmoZ
RURuT0xnAAAAZwAAACsAHABhbmltYXRpb25zL2FkZGVkLXdoaWxlLXN1c3BlbmRlZC1zdGRlcnIu
dHh0VVQJAAMDm/tTA5v7U3V4CwABBPUBAAAEFAAAACNQUk9DRVNTIFVOUkVTUE9OU0lWRSAtIFdl
YlByb2Nlc3MgKHBpZCAyMDEyMikKI0VPRgpib290c3RyYXBfbG9va191cCByZXN1bHQ6IHVua25v
d24gZXJyb3IgY29kZSAoNDRlKQpQSwMEFAACAAgA92oZRe1R9nXaAAAAJwEAADYAHABhbmltYXRp
b25zL2FkZGl0aXZlLXRyYW5zZm9ybS1hbmltYXRpb25zLWNyYXNoLWxvZy50eHRVVAkAA1Gb+1NR
m/tTdXgLAAEE9QEAAAQUAAAARZBPa8MwDMXv/hSCXtrDSjdymRm7lBR2SUKzP8eS2Gpn6lpBkruv
P6eU7SL0HuinJzUEjgf5hkgnOFJOvlSGLxw7Joci9mnzWD2vzV3CcQgRPSjBiI4uCIwyUZJwxeKU
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
ZxVac4g/TaKEgzNJY1BUUHn3bNiA51qwffz5Qy2WaMk6VNB6iA9h8FZxgt3cFyWw3dMj/dGiOufB
EZd0gn92MvjoqHMjcld9hxG41oswdETF2b+87bZDF5qzD2pufoV0HCwNBCfFjHLMzGTwB22kTBj8
MejZaO7iZjVYM3VONoYyzSeG8SN+Rne3KqxfTS9ns0QKj40aSXAkOxFR4LckoybgdIOvGnhIkv0/
LJwzpOuJmtMZH/4XUEsDBAoAAgAAAPdqGUW8bmPYZwAAAGcAAAAzABwAYW5pbWF0aW9ucy9hZGRp
dGl2ZS10cmFuc2Zvcm0tYW5pbWF0aW9ucy1zdGRlcnIudHh0VVQJAANRm/tTUZv7U3V4CwABBPUB
AAAEFAAAACNQUk9DRVNTIFVOUkVTUE9OU0lWRSAtIFdlYlByb2Nlc3MgKHBpZCAyMDE0OSkKI0VP
Rgpib290c3RyYXBfbG9va191cCByZXN1bHQ6IHVua25vd24gZXJyb3IgY29kZSAoNDRlKQpQSwME
FAACAAgAIGsZRTBnejfbAAAAJwEAADgAHABhbmltYXRpb25zL2FuaW1hdGlvbi1hZGQtZXZlbnRz
LWluLWhhbmRsZXItY3Jhc2gtbG9nLnR4dFVUCQADm5v7U5ub+1N1eAsAAQT1AQAABBQAAABFkE9r
wzAMxe/+FIJe2sPK1hUGZuxSUuglCc3+HEtiq52pawVJ7r7+nFK2i9B7oJ+eVBM47uUbIp3gSDn5
Uhm+cGiZHIrY1ePTy/PS3CUc+xDRgxIM6OiCwCgjJQlXLE6ZRdBwCekElHVpjKgvjTWvOZ0T/aQ3
eIB3FN1QUqYYka3lnIq7/SMXJCqI9oqTdBNeFJPCtY8Z5UZFZmtm7b7ZVF0HH/W+6tqm7nafVWH9
54f5GDzcjliYWdVszUCkotyPh0h0PuRx2pejWrhHhIIuP3DkEebrNS6M+QVQSwMEFAACAAgAgGsZ
RdhrEilzIwAA/nkAADUAHABhbmltYXRpb25zL2FuaW1hdGlvbi1hZGQtZXZlbnRzLWluLWhhbmRs
ZXItc2FtcGxlLnR4dFVUCQADUJz7U1Cc+1N1eAsAAQT1AQAABBQAAADEW2mTG7e1/c5fwY9yKeBg
X1x5cWGNFUuR4lGcVKVSr5rN5ohPHHLMRfb41+eiuQy7CVLjZ5UzKomcBho4F7jLuReQXVTzx/Vs
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
UyBVTlJFU1BPTlNJVkUgLSBXZWJQcm9jZXNzIChwaWQgMjAxNzMpCiNFT0YKYm9vdHN0cmFwX2xv
b2tfdXAgcmVzdWx0OiB1bmtub3duIGVycm9yIGNvZGUgKDQ0ZSkKUEsDBBQAAgAIAEprGUVRxuwU
uwAAAPQAAAAyABwAYW5pbWF0aW9ucy9hbmltYXRpb24tYm9yZGVyLW92ZXJmbG93LWNyYXNoLWxv
Zy50eHRVVAkAA+yb+1Psm/tTdXgLAAEE9QEAAAQUAAAARY/NSgNBEITv8xQFuejBoN4yiJewAS+7
S9af82a3Ewcn3aG7J76+kyB6aaoK6qOrFUw62ieyHLCXwnO9ig/a9SoTmcXH+4fVahl+LfZjyjTD
BTua5EhQspOwpTPVpHYJno6JD5DiyxDM5ypieCr8xfLNz7jDK5mvhV0lZ9IYtXBNN3/kiiSH+eh0
sdMFb07sOI+5kF2ppBrDot9262YY8NZum6Hv2uHlvams//9xc0ozriNuw6LpNiH8AFBLAwQUAAIA
CACAaxlFWARw08sjAAAAewAALwAcAGFuaW1hdGlvbnMvYW5pbWF0aW9uLWJvcmRlci1vdmVyZmxv
dy1zYW1wbGUudHh0VVQJAANQnPtTUJz7U3V4CwABBPUBAAAEFAAAAMRba3MbuZX9zl/Bj3Y5oPB+
uLJJ4Zlxxs54R84kVanUVrPZlLmmSA0fntH8+r1oPsRugrRmxzWRy6LUQAPnAvdx7gVkF9X8cT1b
D5fT4bq6f5jPFnfDfzTj96tl3azXwxcPs8mQYmLMy2HzuVk9Dgke3s/m89m6qZeLyXqw7/l6ePg6
eftf7Zv/HryvNh+fOsDXzQ/L+fa+Wd+EalPdxH/c3sBb3842+w+3nc0nN98386ZaN/tno+mqum9+
Wq4+3fzQrNaz5WJ9Y2+eJhtVDw83frnYNIvN+uZdVX93e9I6eLusJkM7mawOWPHPBFcTTjDGgzcT
eGk2nTWr130ZBvvJnuD/+c9/Hr6Aby8Hfjlphh8eH5pD4z+1RJIPX/yt2sw+Ny9B7hUMPHxaovzu
v8i/BwOQu7n5MLs/vgorxRHWiIohYa+peE3MiAs9RFgBwO9uh10cIN8QHv4TtmOkR2L4gtDExcvB
983DcrU56awGA1/N58O7VfXw8fVg8GG5qebDxfZ+3KyGs8VwvanqT8MXq6bewiufm2G93MIaTob3
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
eupUri0Tc4ztnx8v5tWonrBd/sQKmGP4TT5OOoP+DSgTUG+g44ynXQcrn6oY75elPyO5kgB/bGW9
1q0ZMHDQXXyI4fsOYqX/OQ/lE/MfYaA2WyNYIsphAsZlnKtCKZHKUcHBteg/cNf8CEN9qxHQaT14
7dg4Pfe4Wjwtlk+bL4fNa5lj2e+W85eynIAQUTkFSh4/y2TwrWCfYwzRFrMoE70XvbwJ5oqr1zq1
egArOa0IwMHB9q73h8sODqnEA3Ozwzs45RkcmohdaaLUOGWghEnw+kK2GkKkthq7vNEI4qYB0W0n
M0LxUvFlv919/fE6TApl/Ejdw79gZssCDLRvkRW1IJAC4TzprKCc8+wdn6cgNe5zbV7o5MRarobb
AweHEmgZYfjX64NnU6DUFc0cULfhqKEQAthBNOYWmXziTh+cmCIZCTJNuqzXmk9U3NPL6+Mf+xXm
w+xxaP6xRUCETjoFnpqzCq05xJ8mUcLBmaQxKCqovHs2bMBzLdg+/vyhFku0ZB0qaD3EhzB4qzhM
b+4bG9h56pGJaVGd8+CISzrBPzsZfHTUuRHPrL7DCFzrRRg6ouLsX95226EhztkHNTdKQzoOlgaC
k2JGOWZmMviDNlImDP4Y9Gw0d3GzGqyZOicbQ5nmE8P4ET8svFsVArKml2NiIoXHRo0kOKSeiCjw
65pRE3C6wVcNPCTJ/gUL5wzpeqLmdMaH/wVQSwMECgACAAAASmsZRYldWGI0AAAANAAAAC8AHABh
bmltYXRpb25zL2FuaW1hdGlvbi1ib3JkZXItb3ZlcmZsb3ctc3RkZXJyLnR4dFVUCQAD7Jv7U+yb
+1N1eAsAAQT1AQAABBQAAAAjUFJPQ0VTUyBVTlJFU1BPTlNJVkUgLSBXZWJQcm9jZXNzIChwaWQg
MjAxOTkpCiNFT0YKUEsDBBQAAgAIAHJrGUXbFk75ugAAAPQAAAA1ABwAYW5pbWF0aW9ucy9hbmlt
YXRpb24tY29udHJvbGxlci1kcnQtYXBpLWNyYXNoLWxvZy50eHRVVAkAAzic+1M4nPtTdXgLAAEE
9QEAAAQUAAAARY/NasNADITv+xQDubSHhuLjUnoJDvRim7g/Z8dW0qUbKUja9PW7CaW9iJmB+dB0
glkn+0SWIw5SeKlX8UH7QWUms9g8Nk2zDr8WhyllWuCCPc1yIijZWdjShWpSuwRPp8RHSPF1COZL
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
P2gjZcLgj0HPRnMXN6vBmqlzsjGUaT4xjB/xM7q7VWH9ano5myVSeGzUSIIj2YmIAr8lGTUBpxt8
1cBDkuz/YeGcIV1P1JzO+PC/UEsDBAoAAgAAAM5qGUVXYJv3ZwAAAGcAAAAxABwAY2FudmFzL3Bo
aWxpcC90ZXN0cy8yZC5jYW52YXMucmVhZG9ubHktc3RkZXJyLnR4dFVUCQADA5v7UwOb+1N1eAsA
AQT1AQAABBQAAAAjUFJPQ0VTUyBVTlJFU1BPTlNJVkUgLSBXZWJQcm9jZXNzIChwaWQgMjAxMjEp
CiNFT0YKYm9vdHN0cmFwX2xvb2tfdXAgcmVzdWx0OiB1bmtub3duIGVycm9yIGNvZGUgKDQ0ZSkK
UEsDBBQAAgAIAPdqGUV9EnRC2gAAACcBAAA1ABwAY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5jYW52
YXMucmVmZXJlbmNlLWNyYXNoLWxvZy50eHRVVAkAA1Gb+1NRm/tTdXgLAAEE9QEAAAQUAAAARZBP
b8IwDMXv+RSWuMBhiE3sEk27oCLt0lZ0f46oTQyLCHFlO/D1SRHaLpbfk/zzs2sCx738QqQjHCgn
XyrDDw4tk0MR+7J6fl0tzUPCoQ8RPSjBgI7OCIwyUpJwweKUWQQN55COQFmXxoj60ljzltMp0TW9
wxN8ouiGkjLFiGwt51Tc7R+5IFFBtFecpJvwopgULn3MKHcqMlsza3fNpuo6+Kp3Vdc2dffxXRXW
f36Yj8HD/YiFmVXN1gxEKsr9uI9Ep30ep305qoVHRCjo8gNHHmG+XuPCmBtQSwMEFAACAAgAgGsZ
RTJW7rZyIwAA/nkAADIAHABjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNhbnZhcy5yZWZlcmVuY2Ut
c2FtcGxlLnR4dFVUCQADUJz7U1Cc+1N1eAsAAQT1AQAABBQAAADEW2mTGzeS/c5fwY9yaMDGfTi8
48A51lgaad0az0RMTGwUi8UWV2yyzUN2+9dvong0qwhS7bXC0wqJ7AIKeAnk8TIB2UU1f1zP1sPl
dLiu7h/ms8Xd8B/N+N1qWTfr9fDFw2wypJgI/NWw+dSsHocED+9n8/ls3dTLxWQ92Pf8enj4OXn7
X+2b/x68qzYfnjrAz82Py/n2vlnfhGpT3cR/3N7AW9/PNvsPt53NJzc/NPOmWjf7Z6Ppqrpvfl6u
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
67gjWQtlldKso+0cdn2nGuSStUCOGcif/vL443ULbhEEhug7Yi9m/5d+JgxlMUkS8LsHwnhwHC04
N1p3FrxiJfmNlpTh6tcapo4/j5DrFvJxeT/tDr/41+Xu7fVIL+EPqp/4jH+imsekgUB/XlP8OFPE
CAPnwqtotRdZ0RtNKaM7XGM3VSdVkhg9dSrXlok5mvRfHi+GxKieJV3+xAqYY/gFOk46g/4NKBNQ
b6DjjKddByufqhjvl6U/I7mSAH9sZb3WrcErcNBdfHbg+w5ipX+cJ+GJ+U8OUJutESwR5TAB4zIO
M6GUSOWo4OBa9J9za35yoL7VCOi0Hrx2bJyee1wtnhbLp82Xw+a1TG3sd8v5u1BOQIionAIljx8h
MvhWsLkwhmiLWZSJ3ovT3QRzxdVrnVo9gJWcVgTg4GB71/vDZduEVOKBudmJGZzyDA5NxFYwUWqc
MlDCJHh9IVsNIVJbjV3eaARx04DotpOJmHip+LLf7r7+eB3mYjJ+5MvhXzCzZQEG2rfIiloQSIFw
nnRWUM559o7P834a97k2HXNyYi1Xw+2Bg0MJtMwN/PP1MaspUOqKZg6o23C+TwgB7CAac4v0OXGn
zytMkYwEmSZd1mvNJyru6eX18ff9CvNh9jgi/sjLF6GTToGn5qxCaw7xp0mUcHAmaQyKCirvng0b
8FwLto8/f6jFEi1ZhwpaD/EhDN4qTrCb+6IEtnt6pD9aVOc8OOKSTvDPTgYfHXVuRO6q7zAC13oR
ho6oOPuXt9126EJz9kHNza+QjoOlgeCkmFGOmZkM/qCNlAmDPwY9G81d3KwGa6bOycZQpvnEMH7E
z+juVoX1q+nlbJZI4bFRIwmOZCciCvyWZNQEnG7wVQMPSbL/h4VzhnQ9UXM648P/AlBLAwQKAAIA
AAD3ahlFyMZ+h2cAAABnAAAAMgAcAGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuY2FudmFzLnJlZmVy
ZW5jZS1zdGRlcnIudHh0VVQJAANRm/tTUZv7U3V4CwABBPUBAAAEFAAAACNQUk9DRVNTIFVOUkVT
UE9OU0lWRSAtIFdlYlByb2Nlc3MgKHBpZCAyMDE1MCkKI0VPRgpib290c3RyYXBfbG9va191cCBy
ZXN1bHQ6IHVua25vd24gZXJyb3IgY29kZSAoNDRlKQpQSwMEFAACAAgASmsZRW6Ss5C3AAAA9AAA
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
wV3zJQz1pSZA5/XgrWPT9Nz9ZvWwWj/0Xw79S5ljOeyW85uynIAQUTkFSh5fy2TwqWCfYwzRFrMo
E70VvbwJ5oqr1zq0ugEbOa8IwIej7d0+HS47OKQSd8wtDu/glGdwaCJ2pYlS45SBEibB6wvZagiR
2mrs8kITiH0DotvNZoTiqeLz027/9cfLOCmU8SN1D3/BzJYFGGjfIitqQSAFwnnSWUE559k7vkxB
alzn2rzQ2YG1XA23Bz4cS6BlhOFfrw+eTYFSVzRzQN2Go4ZCCGAH0ZhbZPKJG71wYo5kIsg86bLd
aj5TcQ/PL/d/PG0wH2aPQ/OPLQIidNIp8NScVWjNIf40iRIOziSNQVFB5c2zYSOea8H28esPtVii
JetYQRsg3oXRW8Vhekvv2MDOU49MTIvqnAdHXNIJ/uxk8NFR5yY8s/oKE3CtB2HohIrz9Py6340N
cc7eqaVRGtJxsDQQnBQzyjEzk8EftJEyYfDLoBejuYuL1WDN3DnpDWWazwzjR3yx8H5TCMiaXo6J
iRRuGzWS4JB6IqLAt2tGTcDpBl818JAk+xcsnDOk64ma0xEf/hdQSwMECgACAAAASmsZRfpLgzo0
AAAANAAAADsAHABjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNsZWFyUmVjdCtmaWxsUmVjdC5hbHBo
YTAtc3RkZXJyLnR4dFVUCQAD7Jv7U+yb+1N1eAsAAQT1AQAABBQAAAAjUFJPQ0VTUyBVTlJFU1BP
TlNJVkUgLSBXZWJQcm9jZXNzIChwaWQgMjAyMDApCiNFT0YKUEsDBBQAAgAIACBrGUX2wdHx2gAA
ACcBAABAABwAY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5jbGVhclJlY3QrZmlsbFJlY3QuYWxwaGEw
LjUtY3Jhc2gtbG9nLnR4dFVUCQADm5v7U5ub+1N1eAsAAQT1AQAABBQAAABFkE9rAkEMxe/zKQJe
9KC0IhSG0ous0Mvu4vbPUXZnoh0cJ0uSsV+/syL2EvIe5JeX1ASOe/mBSCc4Uk6+VIZvHFomhyJ2
/fT8sl6Zu4RjHyJ6UIIBHV0QGGWkJOGKxSmzCBouIZ2Asq6MEfWlseY1p3Oi3/QGS/hA0S0lZYoR
2VrOqbi7B7kgUUG0V5ykm/CimBSufcwoNyoyWzNr98226jr4rPdV1zZ19/5VFdZ/fpiPwcPtiIWZ
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
xdm/vO22Qxeasw9qbn6FdBwsDQQnxYxyzMxk8AdtpEwY/DHo2Wju4mY1WDN1TjaGMs0nhvEjfkZ3
tyqsX00vZ7NECo+NGklwJDsRUeC3JKMm4HSDrxp4SJL9PyycM6TriZrTGR/+F1BLAwQKAAIAAAAg
axlFddYwG2cAAABnAAAAPQAcAGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuY2xlYXJSZWN0K2ZpbGxS
ZWN0LmFscGhhMC41LXN0ZGVyci50eHRVVAkAA5ub+1Obm/tTdXgLAAEE9QEAAAQUAAAAI1BST0NF
U1MgVU5SRVNQT05TSVZFIC0gV2ViUHJvY2VzcyAocGlkIDIwMTcyKQojRU9GCmJvb3RzdHJhcF9s
b29rX3VwIHJlc3VsdDogdW5rbm93biBlcnJvciBjb2RlICg0NGUpClBLAwQUAAIACAByaxlFkAGk
PtoAAAAnAQAAPQAcAGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuY2xlYXJSZWN0K2ZpbGxSZWN0LmJh
c2ljLWNyYXNoLWxvZy50eHRVVAkAAzic+1M4nPtTdXgLAAEE9QEAAAQUAAAARZBPa8MwDMXv/hSC
XtrDShd6MmOXksIuSWj251icWO1MXStIcvf155SyXYTeA/30pIZgZCffEOkMJ8rJl8rwhUPHNKKI
rTZV9bw2DwknFyJ6UIIBR7oiMMpEScINi1NmETRcQzoDZV0bI+pLY81LTpdEP+kVnuAdRXeUlClG
ZGs5p+Lu/8gFiQqiTnGW44wXxaRwczGj3KnIbM2iO7S7uu/hoznUfdc2/dtnXVj/+WE5BQ/3I1Zm
Ubd7MxCpKLvpGIkuxzzN+3JUC4+IUNDlByN5hOV2iytjfgFQSwMEFAACAAgAgGsZRbhp8OZxIwAA
7nkAADoAHABjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNsZWFyUmVjdCtmaWxsUmVjdC5iYXNpYy1z
YW1wbGUudHh0VVQJAANQnPtTUJz7U3V4CwABBPUBAAAEFAAAAMRbaZMbx5H9jl+Bj2TQhan7YGit
qNOiRZpcDS07wrGx0Wg0SCwxwAgHpdGvd1bjGHSjAI5WDHkYJDBd18uqPF5mF+2imj+sZ+vhcjpc
V3f389niw/Afzfjdalk36/Xw2f1sMqSYUvJ82HxuVg9Dgod3s/l8tm7q5WKyHux7vhwefk5G/6sd
+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
WIheGfzEA7gMEuyVutF1/Ace8pfpUwaEjacsl3QYybo7wOI8+8I4WZrPMfETB4l0yCRHZcBuld46
7kjWQlmlNOtoO4dd36kGuWQtkGMG8qe/PP543YJbBIEh+o7Yi9n/pZ8JQ1lMkgT87oEwHhxHC86N
1p0Fr1hJfqMlZbj6tYap488j5LqFfFzeT7vDL/51uXt7PdJL+IPqJz7jn6jmMWkg0J/XFD/OFDHC
wLnwKlrtRVb0RlPK6A7X2E3VSZUkRk+dyrVlYo4m/ZfHiyExqmdJlz+xAuYYfoGOk86gfwPKBNQb
6DjjadfByqcqxvtl6c9IriTAH1tZr3Vr8AocdBefHfi+g1jpH+dJeGL+kwPUZmsES0Q5TMC4jMNM
KCVSOSo4uBb959yanxyobzUCOq0Hrx0bp+ceV4unxfJp8+WweS1TG/vdcv4ulBMQIiqnQMnjR4gM
vhVsLowh2mIWZaL34nQ3wVxx9VqnVg9gJacVATg42N71/nDZNiGVeGBudmIGpzyDQxOxFUyUGqcM
lDAJXl/IVkOI1FZjlzcaQdw0ILrtZCImXiq+7Le7rz9eh7mYjB/5cvgXzGxZgIH2LbKiFgRSIJwn
nRWUc5694/O8n8Z9rk3HnJxYy9Vwe+DgUAItcwP/fH3MagqUuqKZA+o2nO8TQgA7iMbcIn1O3Onz
ClMkI0GmSZf1WvOJint6eX38fb/CfJg9jog/8vJF6KRT4Kk5q9CaQ/xpEiUcnEkag6KCyrtnwwY8
14Lt488farFES9ahgtZDfAiDt4oT7Oa+KIHtnh7pjxbVOQ+OuKQT/LOTwUdHnRuRu+o7jMC1XoSh
IyrO/uVttx260Jx9UHPzK6TjYGkgOClmlGNmJoM/aCNlwuCPQc9Gcxc3q8GaqXOyMZRpPjGMH/Ez
urtVYf1qejmbJVJ4bNRIgiPZiYgCvyUZNQGnG3zVwEOS7P9h4ZwhXU/UnM748L9QSwMECgACAAAA
cmsZRRa3zHFnAAAAZwAAADoAHABjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNsZWFyUmVjdCtmaWxs
UmVjdC5iYXNpYy1zdGRlcnIudHh0VVQJAAM4nPtTOJz7U3V4CwABBPUBAAAEFAAAACNQUk9DRVNT
IFVOUkVTUE9OU0lWRSAtIFdlYlByb2Nlc3MgKHBpZCAyMDIyMSkKI0VPRgpib290c3RyYXBfbG9v
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
Cag30HHG066DlU9VjPfL0p+RXEmAP7ayXuvW4BU46C4+O/B9B7HSP86T8MT8JweozdYIlohymIBx
GYeZUEqkclRwcC36z7k1PzlQ32oEdFoPXjs2Ts89rhZPi+XT5sth81qmNva75fxdKCcgRFROgZLH
jxAZfCvYXBhDtMUsykTvxelugrni6rVOrR7ASk4rAnBwsL3r/eGybUIq8cDc7MQMTnkGhyZiK5go
NU4ZKGESvL6QrYYQqa3GLm80grhpQHTbyURMvFR82W93X3+8DnMxGT/y5fAvmNmyAAPtW2RFLQik
QDhPOivw45DZOz7P+2nc59p0zMmJtVwNtwcODiXQMjfwz9fHrKZAqSuaOaBuw/k+IQSwg2jMLdLn
xJ0+rzBFMhJkmnRZrzWfqLinl9fH3/crzIfZ44j4Iy9fhE46BZ6aswqtOcSfJlHCwZmkMSgqqLx7
NmzAcy3YPv78oRZLtGQdKmg9xIcweKs4wW7uixLY7umR/mhRnfPgiEs6wT87GXx01LkRuau+wwhc
60UYOqLi7F/edtuhC83ZBzU3v0I6DpYGgpNiRjlmZjL4gzZSJgz+GPRsNHdxsxqsmTonG0OZ5hPD
+BE/o7tbFdavppezWSKFx0aNJDiSnYgo8FuSURNwusFXDTwkyf4fFs4Z0vVEzemMD/8LUEsDBAoA
AgAAAM5qGUWmZdeeZwAAAGcAAAA4ABwAY29tcG9zaXRpbmcvYWJzb2x1dGUtaW5zaWRlLW91dC1v
Zi12aWV3LWZpeGVkLXN0ZGVyci50eHRVVAkAAwOb+1MDm/tTdXgLAAEE9QEAAAQUAAAAI1BST0NF
U1MgVU5SRVNQT05TSVZFIC0gV2ViUHJvY2VzcyAocGlkIDIwMTIwKQojRU9GCmJvb3RzdHJhcF9s
b29rX3VwIHJlc3VsdDogdW5rbm93biBlcnJvciBjb2RlICg0NGUpClBLAwQUAAIACAD3ahlFCQLf
ytoAAAAnAQAARwAcAGNvbXBvc2l0aW5nL2Fic29sdXRlLXBvc2l0aW9uLWNoYW5nZWQtaW4tY29t
cG9zaXRlZC1sYXllci1jcmFzaC1sb2cudHh0VVQJAANRm/tTUZv7U3V4CwABBPUBAAAEFAAAAEWQ
T2vDMAzF7/4Ugl7aw0o3wg5m7FJS2CUJzf4cS2KrnalrBUnuvv6cUraL0Hugn57UEDge5BsineBI
OflSGb5w7JgcitinzWP1vDZ3CcchRPSgBCM6uiAwykRJwhWLU2YRNFxCOgFlXRsj6ktjzUtO50Q/
6RUe4B1Ft5SUKUZkazmn4u7+yAWJCqKD4izdjBfFpHAdYka5UZHZmkW3b7d138NHs6/7rm36t8+6
sP7zw3IKHm5HrMyibndmJFJRHqZDJDof8jTvy1Et3CNCQZcfOPIIy6rClTG/UEsDBBQAAgAIAIBr
GUW98HvsbiMAAP55AABEABwAY29tcG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRpb24tY2hhbmdlZC1p
bi1jb21wb3NpdGVkLWxheWVyLXNhbXBsZS50eHRVVAkAA1Cc+1NQnPtTdXgLAAEE9QEAAAQUAAAA
xFtrcxu31f7OX8GPzrigcL9k2mZwbdzYtd/ITTvT6byzXC5lvqZIhRcnyq9/D5YXcZcgrTSeVBqL
0gILPAc4l+ccwHZRzR/Xs/VwOR2uq/uH+WxxN/xHM363WtbNej188TCbDCkmXH41bD41q8chwcP7
2Xw+Wzf1cjFZD/Y9vx4evk7e/lf75r8H76rNh6cO8HXzw3K+vW/WN6HaVDfxH7c38NZ3s83+w21n
88nN9828qdbN/tlouqrum5+Wq483PzSr9Wy5WN/Ym6fJRtXDw41fLjbNYrO+eVPVb29PWgevl9Vk
aCeT1QEr/plg+G4wxoNXE3hpNp01qz3Kenmfx5s3o5Mh9tM+CSIxeTl8AT9H8P3yq4FfTprh+8eH
5tDln1oiyYcv/lZtZp+ar2AdVjDR8GnJvvnmm+G/yL8HA1iH5ub97P74al45hDWiYkjY15R+zc1I
CzVEWAHgt7fDLhqQdwgP/wnbM9IjMXxBaOLiq8H3zcNytTnprAYDX83nw7tV9fDh68Hg/XJTzYeL
7f24WQ1ni+F6U9Ufhy9WTb2FVz41sBRbWNPJ8H4738xgRf4w/OlDsxj++U/iK3j9No8+fhxulg+t
CuW3/5A1Kb84n1cPa3j1xf6NYfuKmy0q0KNX99Vds/56sJf3ZDuGaNh7OJ1Oy3vSrv5LeOG4CcM/
eh6U98qiyCJBTFuHTNQEWWMSFgpTSuif/wsa2JGJyoKgVE6navhyPhvDa365at43683th9n9aPII
D4cvsrqgrDQgptGWOy8YyCUcYlFG5LDWyEoXvGQ0aiV/pZiXJu5Br0rQq7xHL5/EPYW93xx4B/bw
AWxhPJvPNuBKRniEQZRAqaPERGQF9ojRwJA2MqEglcDUCamV+C/s2KUFGBeUlBOR966rpICgpKCU
RcZBGZHgzCLm4TcdIwZrp5opGjy35reKu3vQwV0Rc457rKZF3K+bu6p+LKHH2jDNCEHSMQXmlQC9
kKCGmkSdsGaR/2fod1Ne3LJjj45QEzI+E4pSrXse46/Vp+q2Xs0eNlm7S2I5x0gwiSNuBQdzymJp
HZDBwhhsIgZb+5VidSctC9btcyoaFdW5njGF6/P9uiRTTDIpQxNsFRgXk1nRNAVP6CP4QOyMU+nX
b9VlYfaNgx3arFkS16cu/fhQUMNgg8C4IDpQiFn06NeY9NYy8GaKOnAGkWtkZDDIGWlpSEophgH0
dr3K/uomD3EyoSZmyvoTalJR09OI0Iy3d7eP9+PlHKKI0fCC0TC9gv1OisDGW00RC4wiY5xDEXMW
YrCSKA7T3z6uN839zevZeAXB7ObdavYJIng6rAos5sn45dU67THogq1KEjS9jX/vPYT5Ue5IAHii
iTkF8SB5xRAD34K0cxGM06TgHA/SyucAh2HLeKGhC5PzAkw57sF816ymy9V9tagbeyCbAJvIjBtY
5R+JC7DfkiKiHTiUxGDDeRSwAT5wpaySmj4HeGGisiCFjl3BZF0QTO3WH3TuF7CvfWQjIwpk61Jc
o5YIAV4RWaqyLoFQThpQKCGM4ilC1JAnqnw6dBeQmp4DGp95gtumWtUf2qBDRnynGPkTkAhuNZbG
I3DOsMYOK+SiVSgw501wwsnWaffW+GRxs13fNqtPMwiM5VU96XwEUu55bO4IOVaqIKQWPbvdYZtV
i1aJ9rovrKdaSomU5LDQRiRgRZQhL5OGtefOufAcFToOXgZ+bO4Anxp9Dnxa9fnA35qN3W4+DF/s
dma3L5ZbSix4aEclUIHgDShH5CjYZIEcQKtnzwG+H7wMe9/YBT0ugZ72jff75n65aX6YNT8dNh/c
dYtf41E2XuETGC+4S67B9TDrPZDt5EHjrSeJMwck9TkCnE9UluW836lYNAfIvlgUPHpPrO+aFaQ7
y6MwWYfAFsFnJoGisglIqDRIw9/Iax+sDgGnZK+ayGHQMvBDaxeuOPf0wF76lCwbXw7OoPJYtkrP
sRqprD9SyUgsR5RwYC1KQq5DnUaOCxwCCUpH8Vm7zkOXQR9aO6CpqQugqz7o19Xi7tThq71DUq3i
Y8oC0CoI8KDpiHFw+lpHh7AIGOKBsCnFq8AtTDKrwecuF8/2S6eQLlj4SY+u0Jlm9oVmhPW8U7Wd
zJbtftn8WzZ20nKb9jNH6WidZpCSkhwNmCYMgYloBGEuUaa49wl/dsPasS/vWNvcQS/E5By9qOpD
RKvhrXr1+LBZljJNH7GnxoI75RQjxoxDNliLBE1cakYZ8/4kjK132AvDdjFVJUzjcbui7cv398uF
76ASeRNycL0Ycp21CeACXXRaQm4FMU5rj1Fk3lmjg8UyXcDan66LdlxQejNmB7Sv7TvrvyutXsi5
uNcOUWdh9bKbBNdrEcUABluCDfHXNb2ugXyvwF9+VsE/NTUMUO7WAznoCnJO5Wit+yFsnYtCebVf
7IwZyI0yI8KyXnOqI8MSdARngiGA6mQCHQXk7iJqYHHpqpS3+7EvUYZd66ALUBZQ12za7PbkL6/b
GlOxeEIiI5D/IA4cDDKjIJB1wcOmJBIkOE7sr8N9+9As/vL6Kk2AjKoPogu/Liz6ZFIbuoO/HP9f
PbIH9BAWriq+wYERQzVKHLJWFiE318AxEaXYCpKCgSddrnk6fgdYI865AW1qctD19WZSv3w5kker
lEVkao8sWkudYBFFGyALNR7IGY4JJWcCNxxLRW0XWXeCU2ysgaDZx8am+WOP7UeYu2EHaAYGOUdm
9sgAj/HOaBSUgjXDGHgLo+DYhHQKshsFGXMP2enwp8A4rs5DOcf1uBcg/j6e/bhtTWgXFyhnIyKy
kzVWxaiAl8tcVoG4Dr9JhTwGFgL8FXNsnkOkDhOUVfPQ2oFOx+YcOq15D7pvPeSOw7J2VWm7isRb
k8uqKAQPyG1wSIN9IZWAjYFVBUuelTE/jX8ptB3aO+j59NwLwMNJDz2Q4HQLunpCvokRQUeIFYq6
XEHFHFnJAwJCpY0DQos9ueoE2jEvcu5028EpZAGnxLznY2eLj08jZsI30q2iEJEhs6ADkZYiFTH4
rWjJTl+AUoATY4IxrK/Th2o1Xi4+G0henaI47QMNHamkFAWppD4wi1yeObqwXOcZsYsuLAkDeg/7
4QnJkZICz5BGIIOZsDIEplUsxu6nSXrYCnqtSNXPKKvtov7wlN8IZkYmR7f8mamqSh7MEZJLYNNA
VRUkBgkcbaDeGKIiAaL95XLnLppLLPW0T0dmRQtapuiR6W0XP80Wxx1hYkSuxBRKFGaBSUQDMFbQ
PbBsDgk2eHRHmccSYk5xQ05n6cIrVDJ46707RlAi9/Y9mC9jJ4VCA1FFSIEgAwVbSBJsARuMvNKg
RJoRTr98CgEoyn2goSOpxuf0Fh5Oe8r3frVdb+Knar5tcdi7fD64z0ppJlbWqMA4rDyjDtLSKCjS
IVEkjEs2UALO6lkVgtJEF+p8hZ5d0QgtiGbIBbY4XW4Xk3ao4Qt54I1EjDhIp3P+igPQlFyzYWCw
yOXUQnrjCUiHndbPoo3pOMl1AvnUryuSKYk0pgda8W5xV6KRDHxMYsKj6Eku38APjYFGEiW0UMkS
E66n3y03fPX2Uq1jvdyu6h2PPCLo4B7zAu5x3U9L3zSbarIvIOwTcYXViOSMVAIzjDFBDHEKtExm
BWOQ5zkdNSQrCkchv5x7OyApdzy0dmVsVEHGRh/2Jsyqu8VyvZnVb5r1Oh8q+/ksa3dhw7TgOuYd
woGCvmEHLAtzcCGQoWCmo5JBdxnf9dF7QAvxpibqjEc9rderxaZZLao5bIzgbWhsP9uEKhKiI4fM
lQKrAm8G2xIU+F6KHVEQdwJ+Hqs6n+1y6aDfsyNfm6+cyWfOytDtkcbesWaem8UyWabAIHAwaVEQ
EVQNc45cNAFhp1SU3GOc/HNk6sxwwd5Pu3SlqAomM8HVQZ0+hdt3x/io8Yhcy7qYt7BhliHicjnH
pywRhyQMW0WMNRKo+++U3D/hHnQlG5fEnRzE9T+8uX03397NFrfbh3xXpGQ2CVNmmIHIjz1snAI9
dCkC45dJBE6TIUZ+mXT5ApyOSA3QwzOR4GHfzlqq21pWa1eiPWuiwAtdvhbCY3bYHnIVYyDvJ5QI
RRn73DnIFf68a+tBLShbw+pCgfeH2aRZZnNpjyJNGx6jwJoaoJ7glgCzUQxSZ2HzpRYrnBZJ68/7
5nbgyybfNndAT1kB9FTJY2Vu+7AGIn9g9WULoYe6BMRHJ7RFiavMnuE38MAGRcpEstwZqnDX454O
38VVyFMFweNiDXazXM7Hy59HbTH0/e6PvLpml03lz+yRvEigBQ7h7JZAsSNynnKkJKRT3ghIsD5T
nDsZ/gIxPOkx6CKvC+JQdaDqOzr9vx/BETfz42pjgUdcQ+i+6JO4U8Ywz1CSNOQjGYJsAtvlhFsc
ZIzgfYusvTBhFzDVJcD99f/QzB9at78rfNP2bEVbYzkQdO84MFlIYA0EMADHtE7SeGvCl0hbv4Wp
y51yS1eYQr1GUKJ6lpnZyKTZNPVmuVrX7T0L3p7AUGnaOC2UEgnnmocKEjGCAxApzEC/bVDUxAQe
51n3BWCicJjo8hWLs26DLn5dEmr6VFN/eJzO5seSqDZXa4paSaFYwCiaXNQV4IgswRqBzNGC1UjS
nsyXiumn83Qh0nMSIRg9Mu2/vqOlCERlSi5ABmS8BzeSmZDlAuwWcj+f6/pMxS/EtI8IOriZPI+j
kMf0r5X8z7ZabX7ZXcjZuXKgOXtCJ3Ci4GBoAgfDhFDIaNeqTMQigJmq6yXnp6HLQjy1d4CLgjfP
D6+w0uGLfNF0KPIJIxeJQJYDXptKgO0chH4cIeMRUbjkYiCc/cb04LRHD/r5VR6hZT+7+fbV0b/v
EuedykghA9YeXA2WGhac0VzjB6dDoxdYKO8d/SJO59VV/39s7oimCycuufzVcz/fNrP7SU4PTguu
1ifsc21Y5ON2pqnNd1s1kiSCnmrp9fMKrvvBLznMtrED2hQSAFGdFdTGVf1x+9CpYo72yc1oZwvS
SeE590jBF1gzgxAVIBHgTAeCrfXw+DkSuN5MpwLs2gZdqOMS/uORY2apu8t4s8Xd3zezeZELa6kJ
pRRhIw0YBMHg8MEneSEynfGCYt8lNBeG7UGrS9Dq3tKepAu7dCBrRvYy+7/gj7aQKoWTWiLKY74O
k0DzPRACLyLHmnMlXfw9spJdW0/OSUFOdnbWkPKihdmqDXSPuzp4y+IJ0M1M5HHiJFgOepOvayZB
kdNgA0LrYCzJCTL5bEZyHP+zUvbwXPBj3U4duSe8QDcmvD6o3o/gvKsFKMgxNgt6tTYLbtcpKiMK
QKyBuVoNfs4CzcbC+BSIpZEXY3N/ph7MwvZMxuJ4UeDly6fLb/J69TgKi73WEWGdT7QwEeCmtEJJ
e2gJTITQu/12MnoX1fi8qC2m7Lh47rW9LV5cIJh6nCTSPgdaxw1yVjpEI1CXhB1Vmv9O2fkTxEFX
iPP1BllLF4DeNz/nyrDEJyHOgkiMasimiIYQ5z2EaSk0IpA4QrZIIEGknw3OeeDLgTm3nkKWBJ9H
LknOgsCb/N9FNstt/eGQyJ/EA8rUiLcVbtXmuTipFCM1iEjSHjTEXBiCjBfitwNN4VyS58SDK5N2
yoz9bl0BCy4KHja9vGxdLSY56Bf0zilmgpUMOanyJR8FATpoDhkYtVIQMF2Pr2VgnaF72KYlbEeC
/7F5vL9bHZNFcZXee28iYyaXrIjM1QVg1xTMIwplnMQxcmqKME9n6cAz6jz/kJU8Fptm9XLx6al0
oK7eGwCN0M4YiaJr77Ylm++Ag8NjykjJQ0yRdP1HZ/gOsEqdk2A5Nn0SPGnWHzfLh/WRB+franx/
ba0tyAQWbL5PRCROYHDBIydYrobRqIAlO+XJ826HtxMdWG/ucOmS+FnHQVeGc4os66rPG86yn8wb
aJugQyrckmVBvVQMAVnIrCYzMkKB1XBmiDUCyM5vOMnYN3aQT0Vzjhz+Heuwb2br+tmFWKsSoQoy
FGuAVjIZXb5PiCHYQOYobBLC/V6u/gR4V+DpeflKYXwsq41/aSP+09VyfOVquY9gayLqrH7gYgQG
K84FWk0TDMmBAyXaNY7O8IMuBlUC1tehzzGyXODzYK6KY7Y7ytNBB+QZCczJFCy2v5WRXeRXAHdS
kGF/8RcErrblu41AHy33USHv8v1lwjxYgI0ITIFhCKgUok93HZ9G6gIQ4wKAun/z+CjW6NXb9qZ+
rpOSJzigIkzHfJ0aSDvMb5DFnCLBLAvKQN7Ir6txO+oFI3zbu3IP8KoC5ua4aKtmvZx/GpnSwmGt
aYDlQVaD2jGSUo5xHmHnBNH+/4u7lia3kSN916/Y416qt96PYz1QsjbGa3naivDNwafEmG62otma
mPn3m1kgQRZQBHu8XDvmIAnEAF8CVfn8MiFt4KJ+cPXVaiCbJpDFJEexellgERmzE8yV+kuOjiZO
OPgLWB0HfZxTIAosGrjAkQd+q68BLnnN+4GfRjAb71jKMcxcFbxLOl+Cq4yRGUumU7bTyFnA1j/s
DYlWgWFLVAcwLN7P03/n69zxv9r1bQDZQK5WdOxn5v/ZvPXmQTld1E/5ExNw4KtxCe6M7jJYY1iV
xIocSaTgSncS4q1wIw90uva14On4c4VbN2jXxrpFwz+ePnWQ+qGsEnAvQSeBc8xjADc5UU+c4wE2
uTOUpcxN9Dfd5FsMg/qcDzXgxtO3SzuS4gW02+GUJ+gz6Pocy1BqIa734Nsj8yuBlfOg5IkzxsHi
AZ2l3T2yWVWy4roWHk6pBV2zhqBbcVIov30fLDqT9EGKGYtuaIgaU7zaQXAvMPsIvg4sOAvWjtEY
u9z2ToebVNCcaagYtx4nHr6/7i55MQ+f8d99OteWFBZ486VypAJEtwE1dbJIVoM347SEjQ3worNU
hRsJiH+GfTSgudLYdvq5knyxavgdSzZQ9PLL/u3nzdfd4Q3MbivhBWadcgjcFdIRhA8dpt4hQmNU
eW07b/S/kGdVpeqn0D/UQrYk54Pkvy1ez9mMKoDT3kTrQUN32PHgGZg5EzyROVGqePaKjmgiF5eq
IfAWBLUdBZO7/bbdeuGCZ5RLQiFmBLc8IRvSgqnNBnuSVequZHkm161R6RYqM+61i6+Lw7d+gsTm
9RgqHympuBVkMWmp0z5jAJkcFnhBGYETirU9xXk0RkTRWh4NokrjZlc0bePMSrxW1d0y7hpWY1iQ
vXo8Fm6oMEX19n9Bu90pbTzoIW0gShZMW1C82MGfQ6CW2aR4uB9J6oxljmgw3uiWNZrfrFgvG2KX
gAxV2qlNFJzQkhHQCYcxkJxjqUwFzA0IwoUznsLrdN3/rUY1eiJ9a8RVc1p+rkS0ehruwkF1preu
3pn84DlFJz0mJgV4jhqUuFUZRGVadloECUHUFW5rw7wABt0AZpatODwuvr/96C1K6aTszR0LXGrq
CGxpwOO4IS5aWHC8M5wbyp2Ld2F2XyCYCdaPZ9QymlVDxuV4ff01YXJB8ouwxhjPaeSKdBAdECFZ
RB5LJCpJZQOsraTi3U3IX9OVOmmqpHINeiEcnO4a7D74vNhvng7nvm+HSSGVLUvKCSIDWEmRIgQh
Tkh4dSCf0EHGwO7x6i4hzLVI9GfUQm6nSVu7oAPXZHl4PmceKuMvkX8cOyJpcli1ZsRK5HAk1QkH
a96M24ouLlVBWCjVgKCGJP7H/PfHb4vXzbppkKUPTsIe5RGiOyGzJTbpTLKCIC9Hzlmgd+rXqmFU
Iizp1L21KzqIgO7I58XrYfPa7DnTUfJOOmKc19hHAGEf9nqDr2G5cnAw+X+jH3UJvJJ646bOgt2s
xjFY2q0QGWB+vEifFrKVlSV5mgNVkmawmlQgA8Ix4rlNRINmyQFeIsRp9zOiUzxXMqyT8yrpt6yx
c7Z6MeEgVFKfSzQhJgERDCWUCfAcFPIRGBbFlHfCSxM6e3/Vd0ZzjZPQlrXBccGD2+16SrD7sd+9
HXp63Zd9P3Oi5tbpJJhEuwrBN6aUoyHeIo9IC+y6ZD47f5tbh9eeIdbhzyMZpkYK1m+ThF0Tlftg
lDFkvRhQ3F0ClR4K8VLYSAC6hr3qBIdwgLnOvpt9fZutPDntQ43eNkTi41aSc9C6XTzvnn5fwaZ+
LdNtesaaLGlaRUFnKg7yZKyJYieyw+5HFXPqZFLG6XcNbMjlHvF4jysrsjqnlmmlGjKtxznnj5s9
5uRxfz49vr28Fq/1OPdD8J5XlaQHkyQIEx5roJoSr1xHuMLBFFIaz97FJWncqi1V48RatPW6Idpm
LBpme74+FZbYA+udcNtn0n2SLmalCVaTUE+CsdOMQvytBM9RMiHVP23s+t9qwJsm4M3JrD0t9l93
TbNstYywuRNJSoNZtqIjDot1XgoFui1zIUcl/strVSBYI1aHg4Nt/Xmx3uHEnmaULJgJEJ2QWLKq
HAKzoFMkJkYhckdttOxO5MAaxkiCxmMsfN7qvR++bzarbw+vm9XLV1BelU7o50Wo47wIVSbbyABv
HZnTHFZ3pthhJDgJ1OecDQeJ78KcfSyofm6BqtoqxqfVT6BBEHZM6VGyoznOkLGgIZIGb4Azjp2t
gTiHLlKXNCyjkLRXc5mO58YbadFh4aAbmsX7/3X59LL65TDwbuY5scnxFEMURGEUI0xIxGNfu4/R
IOFFQdQ2h/PyZiOwiwZYLhpxyAZW44liWmiBuhhcn4WyRnqiM8a1vLAoBC1jwDINRjJv39uIjbe4
WklqnDuTrLg4oxaYy4bAcojl48/58cfubdOOB1zyXCnQNBiWCEyEK1gyQTDsRY8pm1ArnvpqNRCp
G0DUmGaKjtgmP4I833GIbPEZpOuzJ0gN0ExTJUAXCvDxBFySBJsyGKMOQietFbg973n609tccX8m
59VCqZZQblzx+fj4WJNLJRchZRzjxGyZxgZLOwRKUtnbogtMzWd74YpX7ObjY43QsQbC5aDxfzs8
vZ3Ts+KBt0Y5iFPTg2TG6GABtsB0PLhuTkGAKGA7qpy9lnI0yuHy8jWu5aaB6zgOAU5+Xqy+Dcla
y+fVRcgCHEZYo50Fq4Qd7MRxD0FfxzzsyJBg/TbVxcVdKnRi23hqUg469m+fcm7tGGOoDjj3rTMd
GBKLWXyV4b3aoEUnguNW3MlGniF8qEGaBvKFHm+z7j/+U0tV8q/lz/J2MxbwGNEaDGCZbegDDo8C
N7ijPDtxY7rMH4ocfXdlx3W1PIuGPIqyRlVv9YSFfv7AXNln/OFYvDYpg98CWiuDEoPnQzzLEdvr
vQTbxfyNwgr6cnHGz4u1n6cobwE2Q3cILLkz/dTMrmutQD1EDX5JLm3psPM8w4IJvmfVcWevpE8v
bjIC14jbFJMj32G9PxzaGSKwyhY7VCiz+DAjJU6XNIMPSXS54yrM2eWLC1e4zHrKuMODV4nZp76P
iyOssLKtsfBCQQHEgLgszcSirwN+csgM3Nd4o4nyFkXp/HslwXrTeO3bDT+T8n5gY9N51JB0s7xe
ZaxIgipCJWqSxAxxMhvCYuezB58N7PqYl1fd4RLdgjUW5YLJ8eip5cszzjTvQ3SH3g6Fd4oNNejq
l1ZO0KxoeTtwGMHeZkP9u8aGBrhHu4Hg5blCKnQDKRxsuAmjfA080uLTF4deUB6R8pEUroKMg047
iPWiZ9qA72tM1vfJBzVOHMmzbchjxvqrWRE/1S64Kis7c4ljnwnlDI2cg/hEgXMmKKPeYOOTv0un
zecayqT0XYknG+EYHNycyU3PL79uLrvhOFIiZ1Se0SJEcKqZRRYJGnWbkZQq4aEJb7iW7dFy4zuN
YDbeguTjZubTMI1vu9MAUUyn89IZ12mck0s6nIAiFLyB4G0k2lguveeCRX2XCPGI4E+f5ids/OlT
LR9v7Bq5GbOpV2eHSj1IOjMsHox/oMqDGs1e4aDujthOWWIM5xCTMWT4zyn6VeslbFovYTtM9/v4
KbfJg5ImatGbKxo9JrA5JhFDVXYyMGtvZPTf71MNCCrcZR7iGHcxmq2Uw+H3/du3TTX7sk84sNOE
yjIQxMkuZQ7BlC3zORMrQbgiBsRVgXsTmb57xrpPLDxOEU6zD8NJ9aNgqvUo1uckFs5MGkyc5BhP
8JnysGHRZ0u0wm5Njh8niKimFYVQzgbwL9ozLy/vUwG0tAHQLWiZVnh+V78eS/N9sKN7JrzvmGDa
4ZQcj9GugiWvAzERTAmT1EC8fzdy80xN/tdJQX4JsCZSLYVYXjQMLZa7QcPq+dyKhRjaZSSh40Qn
YzxxHv6ZcOCJ5FTVPU2jy1e4Wmp1aY8tQ3nRpyN+2n39Vii4cu7jFMnnnABKEpiYwvGWnmI21ncQ
HDNwhtg7E+YXN72WL7845UONfGrMlqUGUNlq9LJ+7IapxpYVVge4azw6joU2nI4dHagpbBoSLqkg
lZJR+PcWM758ul7B+FJp/qVrzMVeuuW4wz5++7H/Zbf/erzvAF6Ikt6HQDXCIggkRQwvMHj1mOnh
sIV54EJ2rUmdDfD1ba5IUZ9Ui7NqrHQ4ONK1M22ZOoaQU8Q+IIWxKywip8ByBW2Y0RD+GTtP4fxj
vZYAzjQQr8eLZglxz1FP/3mxhw3+fDmDrO82YNxpDjbAqozld9SGXuG3jTL8Z03mzN0Y0zW6/jUf
YnRaLc9aNOTZsJErsT/SjFtTBCCy1sYzorjq8NslFIwct4QlHrQ0TGvG5nyH6tI1tkaQBQeH5o7v
i+dz35NoasFTKita8JitlgTnpoDpKZNcO0Z4BG/bs2REGJEPLy5egVo3Ytfl5hzw//fn7mPrMWnp
IaLHLg6Jr5ti9ZOZQDSjOrGMjNd8t2ELJwgV8u1qmoNbbtfDGMNffntqZwFsNh1ABOfQYs8YuMWO
WUGoZ1ExkbJlbR/9fMFLHKsyn32EY6XdemCQPj/x83stzMiGeaMnSnNO1GUcAC0SckvBX7QJwwhD
O/wKAJV8RKa5vH4FzKhpGnBl9NA99fGndu968MGLSIzFCZteq57Er5mTCnY07dy9aDQ/tUCvpvyC
tdjaaQTdfzmpbzBi1kBEgOgZj1lqQXTGblckmboueEKz5z6JmJW56ZheqWnE42+XcNdSTV/+Wh6b
D4qMX5q7RzuXOq8BHE45C7AQvTL4iQdwGSTYK3Wj6/gPPOQv06cMCBtPWS7pMJJ1d4DFefaFcbI0
n2PiJw4S6ZBJjsqA3Sq9ddyRrIWySmnW0XYOu75TDXLJWiDHDORPf3n88boFtwgCQ/QdsRez/0s/
E4aymCQJ+N0DYTw4jhacG607C16xkvxGS8pw9WsNU8efR8h1C/m4vJ92h1/863L39nqkl/AH1U98
xj9RzWPSQKA/ryl+nClihIFz4VW02ous6I2mlNEdrrGbqpMqSYyeOpVry8QcTfovjxdDYlTPki5/
YgXMMfwCHSedQf8GlAmoN9BxxtOug5VPVYz3y9KfkVxJgD+2sl7r1uAVOOguPjvwfQex0j/Ok/DE
/CcHqM3WCJaIcpiAcRmHmVBKpHJUcHAt+s+5NT85UN9qBHRaD147Nk7PPa4WT4vl0+bLYfNapjb2
u+X8XSgnIERUToGSx48QGXwr2FwYQ7TFLMpE78XpboK54uq1Tq0ewEpOKwJwcLC96/3hsm1CKvHA
3OzEDE55BocmYiuYKDVOGShhEry+kK2GEKmtxi5vNIK4aUB028lETLxUfNlvd19/vA5zMRk/8uXw
L5jZsgAD7VtkRS0IpEA4TzorKOc8e8fneT+N+1ybjjk5sZar4fbAwaEEWuYG/vn6mNUUKHVFMwfU
bTjfJ4QAdhCNuUX6nLjT5xWmSEaCTJMu67XmExX39PL6+Pt+hfkwexwRf+Tli9BJp8BTc1ahNYf4
0yRKODiTNAZFBZV3z4YNeK4F28efP9RiiZasQwWth/gQBm8VJ9jNfVEC2z090h8tqnMeHHFJJ/hn
J4OPjjo3InfVdxiBa70IQ0dUnP3L2247dKE5+6Dm5ldIx8HSQHBSzCjHzEwGf9BGyoTBH4OejeYu
blaDNVPnZGMo03xiGD/iZ3R3q8L61fRyNkuk8NiokQRHshMRBX5LMmoCTjf4qoGHJNn/w8I5Q7qe
qDmd8eF/AVBLAwQKAAIAAAD3ahlFIFJ04WcAAABnAAAARAAcAGNvbXBvc2l0aW5nL2Fic29sdXRl
LXBvc2l0aW9uLWNoYW5nZWQtaW4tY29tcG9zaXRlZC1sYXllci1zdGRlcnIudHh0VVQJAANRm/tT
UZv7U3V4CwABBPUBAAAEFAAAACNQUk9DRVNTIFVOUkVTUE9OU0lWRSAtIFdlYlByb2Nlc3MgKHBp
ZCAyMDE0NikKI0VPRgpib290c3RyYXBfbG9va191cCByZXN1bHQ6IHVua25vd24gZXJyb3IgY29k
ZSAoNDRlKQpQSwMEFAACAAgAIGsZRaEduwvaAAAAJwEAAFAAHABjb21wb3NpdGluZy9hYnNvbHV0
ZS1wb3NpdGlvbi1jaGFuZ2VkLXdpdGgtY29tcG9zaXRlZC1wYXJlbnQtbGF5ZXItY3Jhc2gtbG9n
LnR4dFVUCQADm5v7U5ub+1N1eAsAAQT1AQAABBQAAABFkE9rwzAMxe/+FIJe2sNKNwIDM3YpKeyS
hGZ/jiWx1c7UtYIkd19/TinbReg90E9PaggcD/INkU5wpJx8qQxfOHZMDkXs0+bxuVqbu4TjECJ6
UIIRHV0QGGWiJOGKxSmzCBouIZ2Asq6NEfWlseYlp3Oin/QKD/COoltKyhQjsrWcU3F3f+SCRAXR
QXGWbsaLYlK4DjGj3KjIbM2i27fbuu/ho9nXfdc2/dtnXVj/+WE5BQ+3I1ZmUbc7MxKpKA/TIRKd
D3ma9+WoFu4RoaDLDxx5hGVV4cqYX1BLAwQUAAIACACAaxlFy+YYqnIjAAD+eQAATQAcAGNvbXBv
c2l0aW5nL2Fic29sdXRlLXBvc2l0aW9uLWNoYW5nZWQtd2l0aC1jb21wb3NpdGVkLXBhcmVudC1s
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
BAoAAgAAACBrGUUSzOm3ZwAAAGcAAABNABwAY29tcG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRpb24t
Y2hhbmdlZC13aXRoLWNvbXBvc2l0ZWQtcGFyZW50LWxheWVyLXN0ZGVyci50eHRVVAkAA5ub+1Ob
m/tTdXgLAAEE9QEAAAQUAAAAI1BST0NFU1MgVU5SRVNQT05TSVZFIC0gV2ViUHJvY2VzcyAocGlk
IDIwMTc0KQojRU9GCmJvb3RzdHJhcF9sb29rX3VwIHJlc3VsdDogdW5rbm93biBlcnJvciBjb2Rl
ICg0NGUpClBLAwQUAAIACABKaxlFX2AG8dsAAAAnAQAAOAAcAGNvbXBvc2l0aW5nL2JvdW5kcy1p
bi1mbGlwcGVkLXdyaXRpbmctbW9kZS1jcmFzaC1sb2cudHh0VVQJAAPsm/tT7Jv7U3V4CwABBPUB
AAAEFAAAAEWQT2/CMAzF7/kUlrjAYWhDHLZo2gUViUtb0f05ojYxLCLEle2wr78Uoe1i+T3JPz+7
JnDcyzdEOsGRcvKlMnzh0DI5FLGrx6eX56W5Szj2IaIHJRjQ0QWBUUZKEq5YnDKLoOES0gko69IY
UV8aa15zOif6SW/wAO8ouqGkTDEiW8s5FXf7Ry5IVBDtFSfpJrwoJoVrHzPKjYrM1szafbOpug4+
6n3VtU3d7T6rwvrPD/MxeLgdsTCzqtmagUhFuR8Pkeh8yOO0L0e1cI8IBV1+4MgjzNdrXBjzC1BL
AwQUAAIACACAaxlFEW0EwXEjAADueQAANQAcAGNvbXBvc2l0aW5nL2JvdW5kcy1pbi1mbGlwcGVk
LXdyaXRpbmctbW9kZS1zYW1wbGUudHh0VVQJAANQnPtTUJz7U3V4CwABBPUBAAAEFAAAAMRbaZMb
x5H9jl+Bj2TQhan7YGitqNOiRZpcDS07wuHYaDQaJJYYYISD0ujXb1bjGHSjAI5WDHkYJDBd18uq
PF5mF+2imj+sZ+vhcjpcV3f389niw/Afzfjdalk36/Xw2f1sMqSYGP182HxuVg9Dgod3s/l8tm7q
5WKyHux7vhwefk5G/6sd+e/Bu2rz8bED/Nz8uJxv75r1Tag21U38x+0NjPp+ttl/uO1sPrn5oZk3
1brZPxtNV9Vd8/Ny9enmx2a1ni0X6xt787jYqLq/v/HLxaZZbNY3b6r67e1J6+D1spoM7WSyOmDF
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
oSwmSQJ+90AYD46jBedG686CV6wkv9GSMlz9WsPU8ecRct1CPi7vp93hF/+63L29Hukl/EH1E5/x
T1TzmDQQ6M9rih9nihhh4Fx4Fa32Iit6oylldIdr7KbqpEoSo6dO5doyMUeT/svjxZAY1bOky59Y
AXMMv0DHSWfQvwFlAuoNdJzxtOtg5VMV4/2y9GckVxLgj62s17o1eAUOuovPDnzfQaz0j/MkPDH/
yQFqszWCJaIcJmBcxmEmlBKpHBUcXIv+c27NTw7UtxoBndaD146N03OPq8XTYvm0+XLYvJapjf1u
OX8XygkIEZVToOTxI0QG3wo2F8YQbTGLMtF7cbqbYK64eq1TqwewktOKABwcbO96f7hsm5BKPDA3
OzGDU57BoYnYCiZKjVMGSpgEry9kqyFEaquxyxuNIG4aEN12MhETLxVf9tvd1x+vw1xMxo98OfwL
ZrYswED7FllRCwIpEM6TzgrKOc/e8XneT+M+16ZjTk6s5Wq4PXBwKIGWuYF/vj5mNQVKXdHMAXUb
zvcJIYAdRGNukT4n7vR5hSmSkSDTpMt6rflExT29vD7+vl9hPsweR8QfefkidNIp8NScVWjNIf40
iRIOziSNQVFB5d2zYQOea8H28ecPtViiJetQQeshPoTBW8UJdnNflMB2T4/0R4vqnAdHXNIJ/tnJ
4KOjzo3IXfUdRuBaL8LQERVn//K22w5daM4+qLn5FdJxsDQQnBQzyjEzk8EftJEyYfDHoGejuYub
1WDN1DnZGMo0nxjGj/gZ3d2qsH41vZzNEik8NmokwZHsRESB35KMmoDTDb5q4CFJ9v+wcM6Qridq
Tmd8+F9QSwMECgACAAAASmsZRUG4eQZnAAAAZwAAADUAHABjb21wb3NpdGluZy9ib3VuZHMtaW4t
ZmxpcHBlZC13cml0aW5nLW1vZGUtc3RkZXJyLnR4dFVUCQAD7Jv7U+yb+1N1eAsAAQT1AQAABBQA
AAAjUFJPQ0VTUyBVTlJFU1BPTlNJVkUgLSBXZWJQcm9jZXNzIChwaWQgMjAxOTgpCiNFT0YKYm9v
dHN0cmFwX2xvb2tfdXAgcmVzdWx0OiB1bmtub3duIGVycm9yIGNvZGUgKDQ0ZSkKUEsDBBQAAgAI
AHJrGUUKluiS2gAAACcBAAAmABwAY29tcG9zaXRpbmcvY2hlY2tlcmJvYXJkLWNyYXNoLWxvZy50
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
p0DJ42eZDL4V7HOMIdpiFmWit6KXN8FccfVap1YPYCPnFQE4ONre7dPhsoNDKnHH3OLwDk55Bocm
YleaKDVOGShhEry+kK2GEKmtxi5vNIHYNyC63WxGKF4qPj/t9l9/vIyTQhk/UvfwL5jZsgAD7Vtk
RS0IpEA4TzorKOc8e8eXKUiN+1ybFzo7sZar4fbAwbEEWkYY/vX64NkUKHVFMwfUbThqKIQAdhCN
uUUmn7jRByfmSCaCzJMu263mMxX38Pxy/8fTBvNh9jg0/9giIEInnQJPzVmF1hziT5Mo4eBM0hgU
FVTePBs24rkWbB9//lCLJVqyjhW0AeJdGL1VHKa39I0N7Dz1yMS0qM55cMQlneCfnQw+OurchGdW
32ECrvUiDJ1QcZ6eX/e7sSHO2Tu1NEpDOg6WBoKTYkY5ZmYy+IM2UiYM/hj0YjR3cbMarJk7J72h
TPOZYfyIHxbebwoBWdPLMTGRwmOjRhIcUk9EFPh1zagJON3gqwYekmT/goVzhnQ9UXM648P/AlBL
AwQKAAIAAADOahlFD/8qFTQAAAA0AAAAKwAcAGh0dHAvdGVzdHMvYXBwY2FjaGUvNDA0LW1hbmlm
ZXN0LXN0ZGVyci50eHRVVAkAAwOb+1MDm/tTdXgLAAEE9QEAAAQUAAAAI1BST0NFU1MgVU5SRVNQ
T05TSVZFIC0gV2ViUHJvY2VzcyAocGlkIDIwMTE4KQojRU9GClBLAwQUAAIACAD3ahlFz6R0DNoA
AAAnAQAALgAcAGh0dHAvdGVzdHMvYXBwY2FjaGUvNDA0LXJlc291cmNlLWNyYXNoLWxvZy50eHRV
VAkAA1Gb+1NRm/tTdXgLAAEE9QEAAAQUAAAARZBPa8MwDMXv/hSCXtrDSjcCAzN2KSnskoRmf44l
sdXO1LWCJHdff04p20XoPdBPT2oIHA/yDZFOcKScfKkMXzh2TA5F7NPmsXpem7uE4xAielCCER1d
EBhloiThisUpswgaLiGdgLKujRH1pbHmJadzop/0Cg/wjqJbSsoUI7K1nFNxd3/kgkQF0UFxlm7G
i2JSuA4xo9yoyGzNotu327rv4aPZ133XNv3bZ11Y//lhOQUPtyNWZlG3OzMSqSgP0yESnQ95mvfl
qBbuEaGgyw8ceYRlVeHKmF9QSwMEFAACAAgAgGsZRVg+1QVqIwAA/nkAACsAHABodHRwL3Rlc3Rz
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
EzWnMz78L1BLAwQKAAIAAAD3ahlF0Vc4iGcAAABnAAAAKwAcAGh0dHAvdGVzdHMvYXBwY2FjaGUv
NDA0LXJlc291cmNlLXN0ZGVyci50eHRVVAkAA1Gb+1NRm/tTdXgLAAEE9QEAAAQUAAAAI1BST0NF
U1MgVU5SRVNQT05TSVZFIC0gV2ViUHJvY2VzcyAocGlkIDIwMTQ3KQojRU9GCmJvb3RzdHJhcF9s
b29rX3VwIHJlc3VsdDogdW5rbm93biBlcnJvciBjb2RlICg0NGUpClBLAwQUAAIACAByaxlFAXtl
AtoAAAAnAQAAOAAcAGh0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy1j
cmFzaC1sb2cudHh0VVQJAAM4nPtTOJz7U3V4CwABBPUBAAAEFAAAAEWQT2vDMAzF7/4Ugl7aw0oJ
ZQczdikp7JKEZn+OxbHVLtS1giR3X39OKdtF6D3QT09qCDw7+YZIZzhRTqFUhi8cOiaPIrbaVNXz
2jwknNwYMYASDOjpisAoEyUZb1icMoug43VMZ6Csa2NEQ2msecnpkugnvcITvKPojpIyxYhsLedU
3P0fuSBRQdQpztLPeFFMCjcXM8qdiszWLLpDu6v7Hj6aQ913bdO/fdaF9Z8fltMY4H7Eyizqdm8G
IhVlNx0j0eWYp3lfjmrhEREKuvzAU0BYbre4MuYXUEsDBBQAAgAIACBrGUVsVp1d2wAAACcBAABF
ABwAaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLW1hbmlmZXN0LTQw
NC1jcmFzaC1sb2cudHh0VVQJAAObm/tTm5v7U3V4CwABBPUBAAAEFAAAAEWQT2vDMAzF7/4Ugl7a
w8pWygZm7FJS6CUJzf4cS2KrnalrBUnuvv6cUraL0Hugn55UEzju5RsineBIOflSGb5waJkcitjV
49PL89LcJRz7ENGDEgzo6ILAKCMlCVcsTplF0HAJ6QSUdWmMqC+NNa85nRP9pDd4gHcU3VBSphiR
reWcirv9IxckKoj2ipN0E14Uk8K1jxnlRkVma2btvtlUXQcf9b7q2qbudp9VYf3nh/kYPNyOWJhZ
1WzNQKSi3I+HSHQ+5HHal6NauEeEgi4/cOQR5us1Loz5BVBLAwQUAAIACACAaxlFWECyancjAAD+
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
U+dkYyjTfGIYP+JndHerwvrV9HI2S6Tw2KiRBEeyExEFfksyagJON/iqgYck2f/DwjlDup6oOZ3x
4X8BUEsDBAoAAgAAACBrGUXwx3FlZwAAAGcAAABCABwAaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9y
dC1jYWNoZS1vbmNoZWNraW5nLW1hbmlmZXN0LTQwNC1zdGRlcnIudHh0VVQJAAObm/tTm5v7U3V4
CwABBPUBAAAEFAAAACNQUk9DRVNTIFVOUkVTUE9OU0lWRSAtIFdlYlByb2Nlc3MgKHBpZCAyMDE3
NikKI0VPRgpib290c3RyYXBfbG9va191cCByZXN1bHQ6IHVua25vd24gZXJyb3IgY29kZSAoNDRl
KQpQSwMEFAACAAgASmsZRd10qkvYAAAAJwEAAEUAHABodHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0
LWNhY2hlLW9uY2hlY2tpbmctcmVzb3VyY2UtNDA0LWNyYXNoLWxvZy50eHRVVAkAA+yb+1Psm/tT
dXgLAAEE9QEAAAQUAAAARZBNa8MwDIbv/hWCXtrDyhg9mbFLSWGXJDT7OBbHVltT1wqW3P39KaVs
CIRegR69Ukvgi+MzJDrBkWoOmgt849gX8shsX5411uYh4ehiwgBCMKKnK0JBnihzvKF2dBZB4jXm
E1CVtTEsQQtrXmu+ZPrJb/AEH8iypSyFUsJibalZu7s/siJRgMUJztLPeBbMAjeXKvKdiqVYs+j3
3bYZBvhs983Qd+3w/tUo698/LKcY4H7EyiyabmdGImEpbjokosuhTvO+msTCwyIoWn/gKSAsNxtc
GfMLUEsDBBQAAgAIAIBrGUUk6ay1biMAAP55AABCABwAaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9y
dC1jYWNoZS1vbmNoZWNraW5nLXJlc291cmNlLTQwNC1zYW1wbGUudHh0VVQJAANQnPtTUJz7U3V4
CwABBPUBAAAEFAAAAMRba3Mbt9X+zl/Bj864oHC/ZPo2g2vjxq7dyE070+m8sySXMl9TpMKLE+XX
92B50e4SpJU3nlQai9ICCzwHOJfnHMB2WS0eN/PNcDUbbqr7h8V8eTf8Rz1+t15N6s1m+OJhPh1S
DN9fDetP9fpxSPDwfr5YzDf1ZLWcbgaHnl8Pj1+tt//VvPnvwbtq++GpA3zd/LBa7O7rzU2ottVN
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
O3XI/vL88yARFux8EMq2pUo9UEsDBBQAAgAIAIBrGUWxJScsciMAAP55AAA1ABwAaHR0cC90ZXN0
cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLXNhbXBsZS50eHRVVAkAA1Cc+1NQnPtT
dXgLAAEE9QEAAAQUAAAAxFtpkxu3tf3OX8GPcingYF9cSVxYY8VSpOdRnFSlUq+azeaITxxyzEX2
+Ne/i+Yy7CZIjWOVI5c9owYaOPfiLufehu2imj+uZ+vhcjpcV/cP89nibviPZvxutayb9Xr44mE2
GVJMqfxq2HxqVo9Dgof3s/l8tm7q5WKyHuxnfj08/Dl5+1/tm/8evKs2H54mwJ+bH5bz7X2zvgnV
prqJ/7i9gbe+m232P9x2Np/cfN/Mm2rd7J+Npqvqvvlpufp480OzWs+Wi/WNvXnabFQ9PNz45WLT
LDbrmzdV/fb2ZHTwellNhnYyWR2w4p8JJmMxwRgPXk3gpdl01qz2KOvlfV5v3oxOlthv+ySIxOTl
8AX8dwT/vPxq4JeTZvj+8aE5TPmnlkjy4Yu/VZvZp+Yr0MMKNho+qeybb74Z/ov8ezAAPTQ372f3
x1cpJhxhjagYEvY1lV9zNqLKDBFWAPjt7bCLBuQdwsN/wvGM9EgMXxCauPhq8H3zsFxtTiarwcBX
8/nwblU9fPh6MHi/3FTz4WJ7P25Ww9liuN5U9cfhi1VTb+GVTw2oYgs6nQzvt/PNDDTyh+FPH5rF
8M9/El/B67d59fHjcLN8aE0ov/2HbEn5xfm8eljDqy/2bwzbV9xsUYEdvbqv7pr114O9vCfHMUTD
3sPpdFo+k1b7L+GF4yEM/+h5UN4riyKLBDFtHTJRE2SNSVgosEhC//xfsMCOTFIUBJViOlXDl/PZ
GF7zy1Xzvllvbj/M7keTR3g4fJHNBWWjATGNttx5wUAu4RCLMiKHtUZWuuAlo1Er+SvFvLRxD/q0
BH2az+jlk7insPeHA+/AGT6AL4xn89kGQskIjzCIEih1lJiIrMAeMRoY0kYmFKQSmDohtRL/hRO7
pIBpQQFTIfPZdY0UEJQMlLLIOBgjEpxZxDz8pmPE4O1UM0WD59b8VnF3D05xUyGqM9xU1riI+3Vz
V9WPJfRYG6YZIUg6psC9EqAXEsxQk6gT1izy/wz9bsuLR3ac0RFKi/pcqEltehHjr9Wn6rZezR42
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
TooZ5ZiZyeAP2kiZMPhj0LPR3MXNarBm6pxsDGWaTwzjR/yM7m5VWL+aXs5miRQeGzWS4Eh2IqLA
b0lGTcDpBl818JAk+39YOGdI1xM1pzM+/C9QSwMECgACAAAAcmsZRYCoWbRnAAAAZwAAADUAHABo
dHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmctc3RkZXJyLnR4dFVUCQAD
OJz7Uzic+1N1eAsAAQT1AQAABBQAAAAjUFJPQ0VTUyBVTlJFU1BPTlNJVkUgLSBXZWJQcm9jZXNz
IChwaWQgMjAyMjYpCiNFT0YKYm9vdHN0cmFwX2xvb2tfdXAgcmVzdWx0OiB1bmtub3duIGVycm9y
IGNvZGUgKDQ0ZSkKUEsDBBQAAgAIAKRqGUXqinxCYQUAAAUPAAAKABwAaHR0cGQuY29uZlVUCQAD
tJr7U02c+1N1eAsAAQT1AQAABBQAAACtV21v2zYQ/q5fQbgwsBWTnLhx5w2BAddxmixJnVlOAyxJ
DVqiJNYSyZFUEmfrfvuOtOUXyREKbA5gk8fnuTsej8eLT+QjkWPONWq0ciUbjnPJg/kpTQkIdCZa
t2R2QXUr0VqEXgprDeeahq8BBA0bjh9wST5wLF+FKYOYGQQYnNCM8FyjdwcHzgUhop/SR4JGzLnC
z+v5mPyZE6UVOtxGFdTDjuNcUeYLLIlvtwRAw9+RdBxfY6l3AIOUEmbUdg7MtDBzTeQgoWlozMHH
RAWHVzzMYT8418nLNOFKT7OlJKUz8kyCFhY4SEi7BeLpBuUpvk2nLEjzkNRxV5ASMeXxNOAsonEd
d4Mq0ROCQ9h2HXcFKRGVSutIsFwiZHAqdQyzXqJgRWs9M+slShDTOgYslwiMxFxTrClndcQtWPnk
MhyTDIvao1thyvsLjL76LS4hZWJKcT3NAEokSZ4k1bVnsIKUiCIRnYK1+pTJMDcoQ3SWN+kTzgg6
bP/sHcDfoeMcn1BJAs3lArV6jtExEnZr6JyFoEuhU56m/MlfZJeUzRW6ylNNP1PypNAQTA0+ngPS
3gBl6X2DHoElSUNiZkulEnIV4gNrP4WELTZQFEmemRXnuLX2pec4/SAgSpmaZF32Eo2tBFw2QoX+
QY0v994Pd2fJw91EP/x9dxI+3PnqYWq+fmz0Xrd7AoONWSPxIYNUtLDuHresfnDhRpEBZpzRAKfW
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
n8Z9rk3HnJxYy9Vwe+DgUAItcwP/fH3MagqUuqKZA+o2nO8TQgA7iMbcIn1O3OnzClMkI0GmSZf1
WvOJint6eX38fb/CfJg9jog/8vJF6KRT4Kk5q9CaQ/xpEiUcnEkag6KCyrtnwwY814Lt488farFE
S9ahgtZDfAiDt4oT7Oa+KIHtnh7pjxbVOQ+OuKQT/LOTwUdHnRuRu+o7jMC1XoShIyrO/uVttx26
0Jx9UHPzK6TjYGkgOClmlGNmJoM/aCNlwuCPQc9Gcxc3q8GaqXOyMZRpPjGMH/EzurtVYf1qejmb
JVJ4bNRIgiPZiYgCvyUZNQGnG3zVwEOS7P9h4ZwhXU/UnM748L9QSwMEFAACAAgAvGoZRdR03zlv
IwAA/nkAABsAHABXZWJQcm9jZXNzLTIwMTIyLXNhbXBsZS50eHRVVAkAA+Sa+1NQnPtTdXgLAAEE
9QEAAAQUAAAAxFtpkxu3tf3OX8GPcingYF9ceXFhjRVLkeJRnFSlUq+azeaITxxyzEX2+NfnorkM
uwlS42eVMyqJnAYaOBe4y7kXkF1U88f1bD1cTofr6v5hPlvcDf/RjN+tlnWzXg9fPMwmQ4oJpV8N
m0/N6nFI8PB+Np/P1k29XEzWg33Pr4eHn5O3/9W++e/Bu2rz4akD/Nz8sJxv75v1Tag21U38x+0N
vPXdbLP/cNvZfHLzfTNvqnWzfzaarqr75qfl6uPND81qPVsu1jf25mmyUfXwcOOXi02z2Kxv3lT1
29uT1sHrZTUZ2slkdcCKfyZ4OhFTjPHg1QRemk1nzWqPsl7e5/HmzehkiP20T4JITF4OX8C/I/jz
8quBX06a4fvHh+bQ5Z9aIsmHL/5abWafmq9gHVYw0fBpyb755pvhv8i/BwNYh+bm/ez++CqsHEdY
IyqGhH1NydeMjRgzQ4QVAH57O+yiAXmH8PCfsD0jPRLDF4QmLr4afN88LFebk85qMPDVfD68W1UP
H74eDN4vN9V8uNjej5vVcLYYrjdV/XH4YtXUW3jlUwNLsYU1nQzvt/PNDFbkD8OfPjSL4Z/+R3wF
r9/m0cePw83yoVWh/PYfsiblF+fz6mENr77YvzFsX3GzRQV69Oq+umvWXw/28p5sxxANew/hp7wn
7eq/hBeOmzD8o+dBea8siiwSxLR1yERNkDUmYaEwpYT+6b+ggR2ZpCwIKuV0qoYv57MxvOaXq+Z9
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
Y2Vzc19sb2cudHh0VVQFAAO0mvtTdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAgGsZRQAAAAAA
AAAAAAAAAA4AGAAAAAAAAAAQAO1BSAAAAGFjY2Vzc2liaWxpdHkvVVQFAANQnPtTdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAzmoZRd6dzVXaAAAAJwEAAEAAGAAAAAAAAQAAAKSBkAAAAGFjY2Vz
c2liaWxpdHkvYWNjZXNzaWJpbGl0eS1ub2RlLW1lbW9yeS1tYW5hZ2VtZW50LWNyYXNoLWxvZy50
eHRVVAUAAwOb+1N1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACAaxlFvquheHIjAAD+eQAAPQAY
AAAAAAABAAAApIHkAQAAYWNjZXNzaWJpbGl0eS9hY2Nlc3NpYmlsaXR5LW5vZGUtbWVtb3J5LW1h
bmFnZW1lbnQtc2FtcGxlLnR4dFVUBQADUJz7U3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAAM5q
GUW1awMlZwAAAGcAAAA9ABgAAAAAAAEAAACkgc0lAABhY2Nlc3NpYmlsaXR5L2FjY2Vzc2liaWxp
dHktbm9kZS1tZW1vcnktbWFuYWdlbWVudC1zdGRlcnIudHh0VVQFAAMDm/tTdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgA92oZRSv3XbPaAAAAJwEAADcAGAAAAAAAAQAAAKSBqyYAAGFjY2Vzc2li
aWxpdHkvYWNjZXNzaWJpbGl0eS1ub2RlLXJlcGFyZW50LWNyYXNoLWxvZy50eHRVVAUAA1Gb+1N1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACAaxlFWBFxq3AjAAD+eQAANAAYAAAAAAABAAAApIH2
JwAAYWNjZXNzaWJpbGl0eS9hY2Nlc3NpYmlsaXR5LW5vZGUtcmVwYXJlbnQtc2FtcGxlLnR4dFVU
BQADUJz7U3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAAPdqGUVNay+xZwAAAGcAAAA0ABgAAAAA
AAEAAACkgdRLAABhY2Nlc3NpYmlsaXR5L2FjY2Vzc2liaWxpdHktbm9kZS1yZXBhcmVudC1zdGRl
cnIudHh0VVQFAANRm/tTdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAIGsZRWe7EM3bAAAAJwEA
ADkAGAAAAAAAAQAAAKSBqUwAAGFjY2Vzc2liaWxpdHkvYWNjZXNzaWJpbGl0eS1vYmplY3QtZGV0
YWNoZWQtY3Jhc2gtbG9nLnR4dFVUBQADm5v7U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIBr
GUXqX67/byMAAP55AAA2ABgAAAAAAAEAAACkgfdNAABhY2Nlc3NpYmlsaXR5L2FjY2Vzc2liaWxp
dHktb2JqZWN0LWRldGFjaGVkLXNhbXBsZS50eHRVVAUAA1Cc+1N1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAIAAAAgaxlF48ml3mcAAABnAAAANgAYAAAAAAABAAAApIHWcQAAYWNjZXNzaWJpbGl0eS9h
Y2Nlc3NpYmlsaXR5LW9iamVjdC1kZXRhY2hlZC1zdGRlcnIudHh0VVQFAAObm/tTdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgASmsZRRNy4Uq7AAAA9AAAAEoAGAAAAAAAAQAAAKSBrXIAAGFjY2Vz
c2liaWxpdHkvYWRqYWNlbnQtY29udGludWF0aW9ucy1jYXVzZS1hc3NlcnRpb24tZmFpbHVyZS1j
cmFzaC1sb2cudHh0VVQFAAPsm/tTdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAgGsZRS10o33M
IwAAAHsAAEcAGAAAAAAAAQAAAKSB7HMAAGFjY2Vzc2liaWxpdHkvYWRqYWNlbnQtY29udGludWF0
aW9ucy1jYXVzZS1hc3NlcnRpb24tZmFpbHVyZS1zYW1wbGUudHh0VVQFAANQnPtTdXgLAAEE9QEA
AAQUAAAAUEsBAh4DCgACAAAASmsZRbtP0nc0AAAANAAAAEcAGAAAAAAAAQAAAKSBOZgAAGFjY2Vz
c2liaWxpdHkvYWRqYWNlbnQtY29udGludWF0aW9ucy1jYXVzZS1hc3NlcnRpb24tZmFpbHVyZS1z
dGRlcnIudHh0VVQFAAPsm/tTdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAfGsZRU2LpDm6AAAA
9AAAAD8AGAAAAAAAAQAAAKSB7pgAAGFjY2Vzc2liaWxpdHkvYWx0LXRhZy1vbi1pbWFnZS13aXRo
LW5vbmltYWdlLXJvbGUtY3Jhc2gtbG9nLnR4dFVUBQADTJz7U3V4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAIBrGUUg47OoyyMAAAB7AAA8ABgAAAAAAAEAAACkgSGaAABhY2Nlc3NpYmlsaXR5L2Fs
dC10YWctb24taW1hZ2Utd2l0aC1ub25pbWFnZS1yb2xlLXNhbXBsZS50eHRVVAUAA1Cc+1N1eAsA
AQT1AQAABBQAAABQSwECHgMKAAIAAAB8axlFn2T6mjQAAAA0AAAAPAAYAAAAAAABAAAApIFivgAA
YWNjZXNzaWJpbGl0eS9hbHQtdGFnLW9uLWltYWdlLXdpdGgtbm9uaW1hZ2Utcm9sZS1zdGRlcnIu
dHh0VVQFAANMnPtTdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAgGsZRQAAAAAAAAAAAAAAAAsA
GAAAAAAAAAAQAO1BDL8AAGFuaW1hdGlvbnMvVVQFAANQnPtTdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgAAAAAAgGsZRQAAAAAAAAAAAAAAAA4AGAAAAAAAAAAQAO1BUb8AAGFuaW1hdGlvbnMvM2QvVVQF
AANQnPtTdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAzmoZRQOrQRfaAAAAJwEAADkAGAAAAAAA
AQAAAKSBmb8AAGFuaW1hdGlvbnMvM2QvY2hhbmdlLXRyYW5zZm9ybS1pbi1lbmQtZXZlbnQtY3Jh
c2gtbG9nLnR4dFVUBQADA5v7U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIBrGUVXn0cTdSMA
AP55AAA2ABgAAAAAAAEAAACkgebAAABhbmltYXRpb25zLzNkL2NoYW5nZS10cmFuc2Zvcm0taW4t
ZW5kLWV2ZW50LXNhbXBsZS50eHRVVAUAA1Cc+1N1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAADO
ahlFjdYcj2cAAABnAAAANgAYAAAAAAABAAAApIHL5AAAYW5pbWF0aW9ucy8zZC9jaGFuZ2UtdHJh
bnNmb3JtLWluLWVuZC1ldmVudC1zdGRlcnIudHh0VVQFAAMDm/tTdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgA92oZRUIHPKK7AAAA9AAAADsAGAAAAAAAAQAAAKSBouUAAGFuaW1hdGlvbnMvM2Qv
bWF0cml4LXRyYW5zZm9ybS10eXBlLWFuaW1hdGlvbi1jcmFzaC1sb2cudHh0VVQFAANRm/tTdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAgGsZRT3wezvIIwAAAHsAADgAGAAAAAAAAQAAAKSB0uYA
AGFuaW1hdGlvbnMvM2QvbWF0cml4LXRyYW5zZm9ybS10eXBlLWFuaW1hdGlvbi1zYW1wbGUudHh0
VVQFAANQnPtTdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAA92oZRZGvuMQ0AAAANAAAADgAGAAA
AAAAAQAAAKSBDAsBAGFuaW1hdGlvbnMvM2QvbWF0cml4LXRyYW5zZm9ybS10eXBlLWFuaW1hdGlv
bi1zdGRlcnIudHh0VVQFAANRm/tTdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAIGsZRf0sXGHa
AAAAJwEAADUAGAAAAAAAAQAAAKSBsgsBAGFuaW1hdGlvbnMvM2QvcmVwbGFjZS1maWxsaW5nLXRy
YW5zZm9ybS1jcmFzaC1sb2cudHh0VVQFAAObm/tTdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
gGsZResaJD9xIwAA7nkAADIAGAAAAAAAAQAAAKSB+wwBAGFuaW1hdGlvbnMvM2QvcmVwbGFjZS1m
aWxsaW5nLXRyYW5zZm9ybS1zYW1wbGUudHh0VVQFAANQnPtTdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgACAAAAIGsZRWbY5KBnAAAAZwAAADIAGAAAAAAAAQAAAKSB2DABAGFuaW1hdGlvbnMvM2QvcmVw
bGFjZS1maWxsaW5nLXRyYW5zZm9ybS1zdGRlcnIudHh0VVQFAAObm/tTdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgASmsZRdaZJ9vZAAAAJwEAADgAGAAAAAAAAQAAAKSBqzEBAGFuaW1hdGlvbnMv
M2Qvc3RhdGUtYXQtZW5kLWV2ZW50LXRyYW5zZm9ybS1jcmFzaC1sb2cudHh0VVQFAAPsm/tTdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAgGsZRaynysZvIwAA/nkAADUAGAAAAAAAAQAAAKSB9jIB
AGFuaW1hdGlvbnMvM2Qvc3RhdGUtYXQtZW5kLWV2ZW50LXRyYW5zZm9ybS1zYW1wbGUudHh0VVQF
AANQnPtTdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAASmsZRUmsGj9nAAAAZwAAADUAGAAAAAAA
AQAAAKSB1FYBAGFuaW1hdGlvbnMvM2Qvc3RhdGUtYXQtZW5kLWV2ZW50LXRyYW5zZm9ybS1zdGRl
cnIudHh0VVQFAAPsm/tTdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAcmsZRcwwQ1TZAAAAJwEA
ADkAGAAAAAAAAQAAAKSBqlcBAGFuaW1hdGlvbnMvM2QvdHJhbnNmb3JtLW9yaWdpbi12cy1mdW5j
dGlvbnMtY3Jhc2gtbG9nLnR4dFVUBQADOJz7U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIBr
GUV3u101cSMAAP55AAA2ABgAAAAAAAEAAACkgfZYAQBhbmltYXRpb25zLzNkL3RyYW5zZm9ybS1v
cmlnaW4tdnMtZnVuY3Rpb25zLXNhbXBsZS50eHRVVAUAA1Cc+1N1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAIAAAByaxlFYqPBZmcAAABnAAAANgAYAAAAAAABAAAApIHXfAEAYW5pbWF0aW9ucy8zZC90
cmFuc2Zvcm0tb3JpZ2luLXZzLWZ1bmN0aW9ucy1zdGRlcnIudHh0VVQFAAM4nPtTdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAzmoZRRg7ZpPaAAAAJwEAAC4AGAAAAAAAAQAAAKSBrn0BAGFuaW1h
dGlvbnMvYWRkZWQtd2hpbGUtc3VzcGVuZGVkLWNyYXNoLWxvZy50eHRVVAUAAwOb+1N1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACACAaxlF1HTfOW8jAAD+eQAAKwAYAAAAAAABAAAApIHwfgEAYW5p
bWF0aW9ucy9hZGRlZC13aGlsZS1zdXNwZW5kZWQtc2FtcGxlLnR4dFVUBQADUJz7U3V4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAgAAAM5qGUVEbk9MZwAAAGcAAAArABgAAAAAAAEAAACkgcSiAQBhbmlt
YXRpb25zL2FkZGVkLXdoaWxlLXN1c3BlbmRlZC1zdGRlcnIudHh0VVQFAAMDm/tTdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgA92oZRe1R9nXaAAAAJwEAADYAGAAAAAAAAQAAAKSBkKMBAGFuaW1h
dGlvbnMvYWRkaXRpdmUtdHJhbnNmb3JtLWFuaW1hdGlvbnMtY3Jhc2gtbG9nLnR4dFVUBQADUZv7
U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIBrGUWIdM1kcCMAAP55AAAzABgAAAAAAAEAAACk
gdqkAQBhbmltYXRpb25zL2FkZGl0aXZlLXRyYW5zZm9ybS1hbmltYXRpb25zLXNhbXBsZS50eHRV
VAUAA1Cc+1N1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAAD3ahlFvG5j2GcAAABnAAAAMwAYAAAA
AAABAAAApIG3yAEAYW5pbWF0aW9ucy9hZGRpdGl2ZS10cmFuc2Zvcm0tYW5pbWF0aW9ucy1zdGRl
cnIudHh0VVQFAANRm/tTdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAIGsZRTBnejfbAAAAJwEA
ADgAGAAAAAAAAQAAAKSBi8kBAGFuaW1hdGlvbnMvYW5pbWF0aW9uLWFkZC1ldmVudHMtaW4taGFu
ZGxlci1jcmFzaC1sb2cudHh0VVQFAAObm/tTdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAgGsZ
RdhrEilzIwAA/nkAADUAGAAAAAAAAQAAAKSB2MoBAGFuaW1hdGlvbnMvYW5pbWF0aW9uLWFkZC1l
dmVudHMtaW4taGFuZGxlci1zYW1wbGUudHh0VVQFAANQnPtTdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgACAAAAIGsZRYTTfHJnAAAAZwAAADUAGAAAAAAAAQAAAKSBuu4BAGFuaW1hdGlvbnMvYW5pbWF0
aW9uLWFkZC1ldmVudHMtaW4taGFuZGxlci1zdGRlcnIudHh0VVQFAAObm/tTdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgASmsZRVHG7BS7AAAA9AAAADIAGAAAAAAAAQAAAKSBkO8BAGFuaW1hdGlv
bnMvYW5pbWF0aW9uLWJvcmRlci1vdmVyZmxvdy1jcmFzaC1sb2cudHh0VVQFAAPsm/tTdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAgGsZRVgEcNPLIwAAAHsAAC8AGAAAAAAAAQAAAKSBt/ABAGFu
aW1hdGlvbnMvYW5pbWF0aW9uLWJvcmRlci1vdmVyZmxvdy1zYW1wbGUudHh0VVQFAANQnPtTdXgL
AAEE9QEAAAQUAAAAUEsBAh4DCgACAAAASmsZRYldWGI0AAAANAAAAC8AGAAAAAAAAQAAAKSB6xQC
AGFuaW1hdGlvbnMvYW5pbWF0aW9uLWJvcmRlci1vdmVyZmxvdy1zdGRlcnIudHh0VVQFAAPsm/tT
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAcmsZRdsWTvm6AAAA9AAAADUAGAAAAAAAAQAAAKSB
iBUCAGFuaW1hdGlvbnMvYW5pbWF0aW9uLWNvbnRyb2xsZXItZHJ0LWFwaS1jcmFzaC1sb2cudHh0
VVQFAAM4nPtTdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAgGsZRS2CSi7JIwAAAHsAADIAGAAA
AAAAAQAAAKSBsRYCAGFuaW1hdGlvbnMvYW5pbWF0aW9uLWNvbnRyb2xsZXItZHJ0LWFwaS1zYW1w
bGUudHh0VVQFAANQnPtTdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAAcmsZRQFkUFY0AAAANAAA
ADIAGAAAAAAAAQAAAKSB5joCAGFuaW1hdGlvbnMvYW5pbWF0aW9uLWNvbnRyb2xsZXItZHJ0LWFw
aS1zdGRlcnIudHh0VVQFAAM4nPtTdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAzmoZRQAAAAAA
AAAAAAAAAAcAGAAAAAAAAAAQAO1BhjsCAGNhbnZhcy9VVAUAAwOb+1N1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAAAAADOahlFAAAAAAAAAAAAAAAADgAYAAAAAAAAABAA7UHHOwIAY2FudmFzL3BoaWxp
cC9VVAUAAwOb+1N1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACAaxlFAAAAAAAAAAAAAAAAFAAY
AAAAAAAAABAA7UEPPAIAY2FudmFzL3BoaWxpcC90ZXN0cy9VVAUAA1Cc+1N1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACADOahlFE9brA9kAAAAnAQAANAAYAAAAAAABAAAApIFdPAIAY2FudmFzL3Bo
aWxpcC90ZXN0cy8yZC5jYW52YXMucmVhZG9ubHktY3Jhc2gtbG9nLnR4dFVUBQADA5v7U3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAIBrGUXR9n4lbCMAAP55AAAxABgAAAAAAAEAAACkgaQ9AgBj
YW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNhbnZhcy5yZWFkb25seS1zYW1wbGUudHh0VVQFAANQnPtT
dXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAAzmoZRVdgm/dnAAAAZwAAADEAGAAAAAAAAQAAAKSB
e2ECAGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuY2FudmFzLnJlYWRvbmx5LXN0ZGVyci50eHRVVAUA
AwOb+1N1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD3ahlFfRJ0QtoAAAAnAQAANQAYAAAAAAAB
AAAApIFNYgIAY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5jYW52YXMucmVmZXJlbmNlLWNyYXNoLWxv
Zy50eHRVVAUAA1Gb+1N1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACAaxlFMlbutnIjAAD+eQAA
MgAYAAAAAAABAAAApIGWYwIAY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5jYW52YXMucmVmZXJlbmNl
LXNhbXBsZS50eHRVVAUAA1Cc+1N1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAAD3ahlFyMZ+h2cA
AABnAAAAMgAYAAAAAAABAAAApIF0hwIAY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5jYW52YXMucmVm
ZXJlbmNlLXN0ZGVyci50eHRVVAUAA1Gb+1N1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABKaxlF
bpKzkLcAAAD0AAAAPgAYAAAAAAABAAAApIFHiAIAY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5jbGVh
clJlY3QrZmlsbFJlY3QuYWxwaGEwLWNyYXNoLWxvZy50eHRVVAUAA+yb+1N1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACACAaxlFPAD39cojAAAAewAAOwAYAAAAAAABAAAApIF2iQIAY2FudmFzL3Bo
aWxpcC90ZXN0cy8yZC5jbGVhclJlY3QrZmlsbFJlY3QuYWxwaGEwLXNhbXBsZS50eHRVVAUAA1Cc
+1N1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAABKaxlF+kuDOjQAAAA0AAAAOwAYAAAAAAABAAAA
pIG1rQIAY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5jbGVhclJlY3QrZmlsbFJlY3QuYWxwaGEwLXN0
ZGVyci50eHRVVAUAA+yb+1N1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAgaxlF9sHR8doAAAAn
AQAAQAAYAAAAAAABAAAApIFergIAY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5jbGVhclJlY3QrZmls
bFJlY3QuYWxwaGEwLjUtY3Jhc2gtbG9nLnR4dFVUBQADm5v7U3V4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAIBrGUUnvaN1biMAAP55AAA9ABgAAAAAAAEAAACkgbKvAgBjYW52YXMvcGhpbGlwL3Rl
c3RzLzJkLmNsZWFyUmVjdCtmaWxsUmVjdC5hbHBoYTAuNS1zYW1wbGUudHh0VVQFAANQnPtTdXgL
AAEE9QEAAAQUAAAAUEsBAh4DCgACAAAAIGsZRXXWMBtnAAAAZwAAAD0AGAAAAAAAAQAAAKSBl9MC
AGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuY2xlYXJSZWN0K2ZpbGxSZWN0LmFscGhhMC41LXN0ZGVy
ci50eHRVVAUAA5ub+1N1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAByaxlFkAGkPtoAAAAnAQAA
PQAYAAAAAAABAAAApIF11AIAY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5jbGVhclJlY3QrZmlsbFJl
Y3QuYmFzaWMtY3Jhc2gtbG9nLnR4dFVUBQADOJz7U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AIBrGUW4afDmcSMAAO55AAA6ABgAAAAAAAEAAACkgcbVAgBjYW52YXMvcGhpbGlwL3Rlc3RzLzJk
LmNsZWFyUmVjdCtmaWxsUmVjdC5iYXNpYy1zYW1wbGUudHh0VVQFAANQnPtTdXgLAAEE9QEAAAQU
AAAAUEsBAh4DCgACAAAAcmsZRRa3zHFnAAAAZwAAADoAGAAAAAAAAQAAAKSBq/kCAGNhbnZhcy9w
aGlsaXAvdGVzdHMvMmQuY2xlYXJSZWN0K2ZpbGxSZWN0LmJhc2ljLXN0ZGVyci50eHRVVAUAAzic
+1N1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACAaxlFAAAAAAAAAAAAAAAADAAYAAAAAAAAABAA
7UGG+gIAY29tcG9zaXRpbmcvVVQFAANQnPtTdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAzmoZ
RdVwQMXZAAAAJwEAADsAGAAAAAAAAQAAAKSBzPoCAGNvbXBvc2l0aW5nL2Fic29sdXRlLWluc2lk
ZS1vdXQtb2Ytdmlldy1maXhlZC1jcmFzaC1sb2cudHh0VVQFAAMDm/tTdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAgGsZRZ16+lZvIwAA/nkAADgAGAAAAAAAAQAAAKSBGvwCAGNvbXBvc2l0aW5n
L2Fic29sdXRlLWluc2lkZS1vdXQtb2Ytdmlldy1maXhlZC1zYW1wbGUudHh0VVQFAANQnPtTdXgL
AAEE9QEAAAQUAAAAUEsBAh4DCgACAAAAzmoZRaZl155nAAAAZwAAADgAGAAAAAAAAQAAAKSB+x8D
AGNvbXBvc2l0aW5nL2Fic29sdXRlLWluc2lkZS1vdXQtb2Ytdmlldy1maXhlZC1zdGRlcnIudHh0
VVQFAAMDm/tTdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA92oZRQkC38raAAAAJwEAAEcAGAAA
AAAAAQAAAKSB1CADAGNvbXBvc2l0aW5nL2Fic29sdXRlLXBvc2l0aW9uLWNoYW5nZWQtaW4tY29t
cG9zaXRlZC1sYXllci1jcmFzaC1sb2cudHh0VVQFAANRm/tTdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAgGsZRb3we+xuIwAA/nkAAEQAGAAAAAAAAQAAAKSBLyIDAGNvbXBvc2l0aW5nL2Fic29s
dXRlLXBvc2l0aW9uLWNoYW5nZWQtaW4tY29tcG9zaXRlZC1sYXllci1zYW1wbGUudHh0VVQFAANQ
nPtTdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAA92oZRSBSdOFnAAAAZwAAAEQAGAAAAAAAAQAA
AKSBG0YDAGNvbXBvc2l0aW5nL2Fic29sdXRlLXBvc2l0aW9uLWNoYW5nZWQtaW4tY29tcG9zaXRl
ZC1sYXllci1zdGRlcnIudHh0VVQFAANRm/tTdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAIGsZ
RaEduwvaAAAAJwEAAFAAGAAAAAAAAQAAAKSBAEcDAGNvbXBvc2l0aW5nL2Fic29sdXRlLXBvc2l0
aW9uLWNoYW5nZWQtd2l0aC1jb21wb3NpdGVkLXBhcmVudC1sYXllci1jcmFzaC1sb2cudHh0VVQF
AAObm/tTdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAgGsZRcvmGKpyIwAA/nkAAE0AGAAAAAAA
AQAAAKSBZEgDAGNvbXBvc2l0aW5nL2Fic29sdXRlLXBvc2l0aW9uLWNoYW5nZWQtd2l0aC1jb21w
b3NpdGVkLXBhcmVudC1sYXllci1zYW1wbGUudHh0VVQFAANQnPtTdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgACAAAAIGsZRRLM6bdnAAAAZwAAAE0AGAAAAAAAAQAAAKSBXWwDAGNvbXBvc2l0aW5nL2Fi
c29sdXRlLXBvc2l0aW9uLWNoYW5nZWQtd2l0aC1jb21wb3NpdGVkLXBhcmVudC1sYXllci1zdGRl
cnIudHh0VVQFAAObm/tTdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgASmsZRV9gBvHbAAAAJwEA
ADgAGAAAAAAAAQAAAKSBS20DAGNvbXBvc2l0aW5nL2JvdW5kcy1pbi1mbGlwcGVkLXdyaXRpbmct
bW9kZS1jcmFzaC1sb2cudHh0VVQFAAPsm/tTdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAgGsZ
RRFtBMFxIwAA7nkAADUAGAAAAAAAAQAAAKSBmG4DAGNvbXBvc2l0aW5nL2JvdW5kcy1pbi1mbGlw
cGVkLXdyaXRpbmctbW9kZS1zYW1wbGUudHh0VVQFAANQnPtTdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgACAAAASmsZRUG4eQZnAAAAZwAAADUAGAAAAAAAAQAAAKSBeJIDAGNvbXBvc2l0aW5nL2JvdW5k
cy1pbi1mbGlwcGVkLXdyaXRpbmctbW9kZS1zdGRlcnIudHh0VVQFAAPsm/tTdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAcmsZRQqW6JLaAAAAJwEAACYAGAAAAAAAAQAAAKSBTpMDAGNvbXBvc2l0
aW5nL2NoZWNrZXJib2FyZC1jcmFzaC1sb2cudHh0VVQFAAM4nPtTdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAgGsZRam6UqFwIwAA/nkAACMAGAAAAAAAAQAAAKSBiJQDAGNvbXBvc2l0aW5nL2No
ZWNrZXJib2FyZC1zYW1wbGUudHh0VVQFAANQnPtTdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAA
cmsZRZOmjQ9nAAAAZwAAACMAGAAAAAAAAQAAAKSBVbgDAGNvbXBvc2l0aW5nL2NoZWNrZXJib2Fy
ZC1zdGRlcnIudHh0VVQFAAM4nPtTdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAfWsZRastA1zJ
AAAALQEAAA0AGAAAAAAAAQAAAKSBGbkDAGVycm9yX2xvZy50eHRVVAUAA02c+1N1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACACBaxlFy9dybeYCAADxDgAAEQAYAAAAAAABAAAApIEpugMAZnVsbF9y
ZXN1bHRzLmpzb25VVAUAA1Gc+1N1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADOahlFAAAAAAAA
AAAAAAAABQAYAAAAAAAAABAA7UFavQMAaHR0cC9VVAUAAwOb+1N1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAAAAADOahlFAAAAAAAAAAAAAAAACwAYAAAAAAAAABAA7UGZvQMAaHR0cC90ZXN0cy9VVAUA
AwOb+1N1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACAaxlFAAAAAAAAAAAAAAAAFAAYAAAAAAAA
ABAA7UHevQMAaHR0cC90ZXN0cy9hcHBjYWNoZS9VVAUAA1Cc+1N1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACADOahlFp7xgGbsAAAD0AAAALgAYAAAAAAABAAAApIEsvgMAaHR0cC90ZXN0cy9hcHBj
YWNoZS80MDQtbWFuaWZlc3QtY3Jhc2gtbG9nLnR4dFVUBQADA5v7U3V4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAIBrGUXSPE21ySMAAAB7AAArABgAAAAAAAEAAACkgU+/AwBodHRwL3Rlc3RzL2Fw
cGNhY2hlLzQwNC1tYW5pZmVzdC1zYW1wbGUudHh0VVQFAANQnPtTdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgACAAAAzmoZRQ//KhU0AAAANAAAACsAGAAAAAAAAQAAAKSBfeMDAGh0dHAvdGVzdHMvYXBw
Y2FjaGUvNDA0LW1hbmlmZXN0LXN0ZGVyci50eHRVVAUAAwOb+1N1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAD3ahlFz6R0DNoAAAAnAQAALgAYAAAAAAABAAAApIEW5AMAaHR0cC90ZXN0cy9hcHBj
YWNoZS80MDQtcmVzb3VyY2UtY3Jhc2gtbG9nLnR4dFVUBQADUZv7U3V4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAIBrGUVYPtUFaiMAAP55AAArABgAAAAAAAEAAACkgVjlAwBodHRwL3Rlc3RzL2Fw
cGNhY2hlLzQwNC1yZXNvdXJjZS1zYW1wbGUudHh0VVQFAANQnPtTdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgACAAAA92oZRdFXOIhnAAAAZwAAACsAGAAAAAAAAQAAAKSBJwkEAGh0dHAvdGVzdHMvYXBw
Y2FjaGUvNDA0LXJlc291cmNlLXN0ZGVyci50eHRVVAUAA1Gb+1N1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAByaxlFAXtlAtoAAAAnAQAAOAAYAAAAAAABAAAApIHzCQQAaHR0cC90ZXN0cy9hcHBj
YWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLWNyYXNoLWxvZy50eHRVVAUAAzic+1N1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACAAgaxlFbFadXdsAAAAnAQAARQAYAAAAAAABAAAApIE/CwQAaHR0
cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLW1hbmlmZXN0LTQwNC1jcmFz
aC1sb2cudHh0VVQFAAObm/tTdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAgGsZRVhAsmp3IwAA
/nkAAEIAGAAAAAAAAQAAAKSBmQwEAGh0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25j
aGVja2luZy1tYW5pZmVzdC00MDQtc2FtcGxlLnR4dFVUBQADUJz7U3V4CwABBPUBAAAEFAAAAFBL
AQIeAwoAAgAAACBrGUXwx3FlZwAAAGcAAABCABgAAAAAAAEAAACkgYwwBABodHRwL3Rlc3RzL2Fw
cGNhY2hlL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmctbWFuaWZlc3QtNDA0LXN0ZGVyci50eHRVVAUA
A5ub+1N1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABKaxlF3XSqS9gAAAAnAQAARQAYAAAAAAAB
AAAApIFvMQQAaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLXJlc291
cmNlLTQwNC1jcmFzaC1sb2cudHh0VVQFAAPsm/tTdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
gGsZRSTprLVuIwAA/nkAAEIAGAAAAAAAAQAAAKSBxjIEAGh0dHAvdGVzdHMvYXBwY2FjaGUvYWJv
cnQtY2FjaGUtb25jaGVja2luZy1yZXNvdXJjZS00MDQtc2FtcGxlLnR4dFVUBQADUJz7U3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAEprGUVaos6EZgAAAGcAAABCABgAAAAAAAEAAACkgbBWBABo
dHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmctcmVzb3VyY2UtNDA0LXN0
ZGVyci50eHRVVAUAA+yb+1N1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACAaxlFsSUnLHIjAAD+
eQAANQAYAAAAAAABAAAApIGSVwQAaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNo
ZWNraW5nLXNhbXBsZS50eHRVVAUAA1Cc+1N1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAAByaxlF
gKhZtGcAAABnAAAANQAYAAAAAAABAAAApIFzewQAaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1j
YWNoZS1vbmNoZWNraW5nLXN0ZGVyci50eHRVVAUAAzic+1N1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACACkahlF6op8QmEFAAAFDwAACgAYAAAAAAABAAAApIFJfAQAaHR0cGQuY29uZlVUBQADtJr7
U3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAKVqGUUAAAAAAAAAAAAAAAArABgAAAAAAAAAAACk
ge6BBABweXdlYnNvY2tldC53cy5sb2ctMjVBdWcyMDE0LTEzMjEwOS1lcnIudHh0VVQFAAO1mvtT
dXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAApWoZRQAAAAAAAAAAAAAAACsAGAAAAAAAAAAAAKSB
U4IEAHB5d2Vic29ja2V0LndzLmxvZy0yNUF1ZzIwMTQtMTMyMTA5LW91dC50eHRVVAUAA7Wa+1N1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACBaxlFhwrRGYYmAABhpAAADAAYAAAAAAABAAAApIG4
ggQAcmVzdWx0cy5odG1sVVQFAANRnPtTdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAgWsZRfR1
J8xVAwAA2QkAAAoAGAAAAAAAAQAAAKSBhKkEAHN0YXRzLmpzb25VVAUAA1Gc+1N1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAC8ahlF0jxNtckjAAAAewAAGwAYAAAAAAABAAAApIEdrQQAV2ViUHJv
Y2Vzcy0yMDExOC1zYW1wbGUudHh0VVQFAAPkmvtTdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
vGoZRVefRxN1IwAA/nkAABsAGAAAAAAAAQAAAKSBO9EEAFdlYlByb2Nlc3MtMjAxMTktc2FtcGxl
LnR4dFVUBQAD5Jr7U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIALxqGUWdevpWbyMAAP55AAAb
ABgAAAAAAAEAAACkgQX1BABXZWJQcm9jZXNzLTIwMTIwLXNhbXBsZS50eHRVVAUAA+Sa+1N1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACAC8ahlF0fZ+JWwjAAD+eQAAGwAYAAAAAAABAAAApIHJGAUA
V2ViUHJvY2Vzcy0yMDEyMS1zYW1wbGUudHh0VVQFAAPkmvtTdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAvGoZRdR03zlvIwAA/nkAABsAGAAAAAAAAQAAAKSBijwFAFdlYlByb2Nlc3MtMjAxMjIt
c2FtcGxlLnR4dFVUBQAD5Jr7U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIALxqGUW+q6F4ciMA
AP55AAAbABgAAAAAAAEAAACkgU5gBQBXZWJQcm9jZXNzLTIwMTIzLXNhbXBsZS50eHRVVAUAA+Sa
+1N1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADoahlFPfB7O8gjAAAAewAAGwAYAAAAAAABAAAA
pIEVhAUAV2ViUHJvY2Vzcy0yMDE0NS1zYW1wbGUudHh0VVQFAAMzm/tTdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgA6GoZRb3we+xuIwAA/nkAABsAGAAAAAAAAQAAAKSBMqgFAFdlYlByb2Nlc3Mt
MjAxNDYtc2FtcGxlLnR4dFVUBQADM5v7U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOhqGUVY
PtUFaiMAAP55AAAbABgAAAAAAAEAAACkgfXLBQBXZWJQcm9jZXNzLTIwMTQ3LXNhbXBsZS50eHRV
VAUAAzOb+1N1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADoahlFWBFxq3AjAAD+eQAAGwAYAAAA
AAABAAAApIG07wUAV2ViUHJvY2Vzcy0yMDE0OC1zYW1wbGUudHh0VVQFAAMzm/tTdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgA6GoZRYh0zWRwIwAA/nkAABsAGAAAAAAAAQAAAKSBeRMGAFdlYlBy
b2Nlc3MtMjAxNDktc2FtcGxlLnR4dFVUBQADM5v7U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AOhqGUUyVu62ciMAAP55AAAbABgAAAAAAAEAAACkgT43BgBXZWJQcm9jZXNzLTIwMTUwLXNhbXBs
ZS50eHRVVAUAAzOb+1N1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAPaxlF6xokP3EjAADueQAA
GwAYAAAAAAABAAAApIEFWwYAV2ViUHJvY2Vzcy0yMDE3MS1zYW1wbGUudHh0VVQFAAN9m/tTdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAD2sZRSe9o3VuIwAA/nkAABsAGAAAAAAAAQAAAKSBy34G
AFdlYlByb2Nlc3MtMjAxNzItc2FtcGxlLnR4dFVUBQADfZv7U3V4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAA9rGUXYaxIpcyMAAP55AAAbABgAAAAAAAEAAACkgY6iBgBXZWJQcm9jZXNzLTIwMTcz
LXNhbXBsZS50eHRVVAUAA32b+1N1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAPaxlFy+YYqnIj
AAD+eQAAGwAYAAAAAAABAAAApIFWxgYAV2ViUHJvY2Vzcy0yMDE3NC1zYW1wbGUudHh0VVQFAAN9
m/tTdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAD2sZRepfrv9vIwAA/nkAABsAGAAAAAAAAQAA
AKSBHeoGAFdlYlByb2Nlc3MtMjAxNzUtc2FtcGxlLnR4dFVUBQADfZv7U3V4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAA9rGUVYQLJqdyMAAP55AAAbABgAAAAAAAEAAACkgeENBwBXZWJQcm9jZXNz
LTIwMTc2LXNhbXBsZS50eHRVVAUAA32b+1N1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA5axlF
LXSjfcwjAAAAewAAGwAYAAAAAAABAAAApIGtMQcAV2ViUHJvY2Vzcy0yMDE5Ny1zYW1wbGUudHh0
VVQFAAPOm/tTdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAOWsZRRFtBMFxIwAA7nkAABsAGAAA
AAAAAQAAAKSBzlUHAFdlYlByb2Nlc3MtMjAxOTgtc2FtcGxlLnR4dFVUBQADzpv7U3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIADlrGUVYBHDTyyMAAAB7AAAbABgAAAAAAAEAAACkgZR5BwBXZWJQ
cm9jZXNzLTIwMTk5LXNhbXBsZS50eHRVVAUAA86b+1N1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAA5axlFPAD39cojAAAAewAAGwAYAAAAAAABAAAApIG0nQcAV2ViUHJvY2Vzcy0yMDIwMC1zYW1w
bGUudHh0VVQFAAPOm/tTdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAOWsZRaynysZvIwAA/nkA
ABsAGAAAAAAAAQAAAKSB08EHAFdlYlByb2Nlc3MtMjAyMDEtc2FtcGxlLnR4dFVUBQADzpv7U3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADlrGUUk6ay1biMAAP55AAAbABgAAAAAAAEAAACkgZfl
BwBXZWJQcm9jZXNzLTIwMjAyLXNhbXBsZS50eHRVVAUAA86b+1N1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABjaxlFuGnw5nEjAADueQAAGwAYAAAAAAABAAAApIFaCQgAV2ViUHJvY2Vzcy0yMDIy
MS1zYW1wbGUudHh0VVQFAAManPtTdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAY2sZRS2CSi7J
IwAAAHsAABsAGAAAAAAAAQAAAKSBIC0IAFdlYlByb2Nlc3MtMjAyMjItc2FtcGxlLnR4dFVUBQAD
Gpz7U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAG1rGUUg47OoyyMAAAB7AAAbABgAAAAAAAEA
AACkgT5RCABXZWJQcm9jZXNzLTIwMjIzLXNhbXBsZS50eHRVVAUAAy6c+1N1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACABjaxlFd7tdNXEjAAD+eQAAGwAYAAAAAAABAAAApIFedQgAV2ViUHJvY2Vz
cy0yMDIyNC1zYW1wbGUudHh0VVQFAAManPtTdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAY2sZ
Ram6UqFwIwAA/nkAABsAGAAAAAAAAQAAAKSBJJkIAFdlYlByb2Nlc3MtMjAyMjUtc2FtcGxlLnR4
dFVUBQADGpz7U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGNrGUWxJScsciMAAP55AAAbABgA
AAAAAAEAAACkgem8CABXZWJQcm9jZXNzLTIwMjI2LXNhbXBsZS50eHRVVAUAAxqc+1N1eAsAAQT1
AQAABBQAAABQSwUGAAAAAIoAigCsPQAAsOAIAAAA
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237289</attachid>
            <date>2014-08-27 22:16:59 -0700</date>
            <delta_ts>2014-08-28 01:16:42 -0700</delta_ts>
            <desc>patch for relanding</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>194461</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTczMDQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2OSBA
QAorMjAxNC0wOC0yNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEZUTCBzaG91bGQgYmUgYWJsZSB0byBkbyBwb2x5bW9ycGhpYyBjYWxsIGlubGluaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUxNDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKyAgICAgICAgCisgICAgICAgIEFkZGVk
IGEgbG9nLWJhc2VkIGhpZ2gtZmlkZWxpdHkgY2FsbCBlZGdlIHByb2ZpbGVyIHRoYXQgcnVucyBp
biBERkcgSklUIChhbmQgb3B0aW9uYWxseQorICAgICAgICBiYXNlbGluZSBKSVQpIGNvZGUuIFVz
ZWQgaXQgdG8gZG8gcHJlY2lzZSBwb2x5bW9ycGhpYyBpbmxpbmluZyBpbiB0aGUgRlRMLiBQb3Rl
bnRpYWwKKyAgICAgICAgaW5saW5pbmcgc2l0ZXMgdXNlIHRoZSBjYWxsIGVkZ2UgcHJvZmlsZSBp
ZiBpdCBpcyBhdmFpbGFibGUsIGJ1dCB0aGV5IHdpbGwgc3RpbGwgZmFsbCBiYWNrCisgICAgICAg
IG9uIHRoZSBjYWxsIGlubGluZSBjYWNoZSBhbmQgcmFyZSBjYXNlIGNvdW50cyBpZiBpdCdzIG5v
dC4gUG9seW1vcnBoaWMgaW5saW5pbmcgbWVhbnMgdGhhdAorICAgICAgICBtdWx0aXBsZSBwb3Nz
aWJsZSBjYWxsZWVzIGNhbiBiZSBpbmxpbmVkIHdpdGggYSBzd2l0Y2ggdG8gZ3VhcmQgdGhlbS4g
VGhlIHNsb3cgcGF0aCBtYXkKKyAgICAgICAgZWl0aGVyIGJlIGFuIE9TUiBleGl0IG9yIGEgdmly
dHVhbCBjYWxsLgorICAgICAgICAKKyAgICAgICAgVGhlIGNhbGwgZWRnZSBwcm9maWxpbmcgYWRk
ZWQgaW4gdGhpcyBwYXRjaCBpcyB2ZXJ5IHByZWNpc2UgLSBpdCB3aWxsIHRlbGwgeW91IGFib3V0
IGV2ZXJ5CisgICAgICAgIGNhbGwgdGhhdCBoYXMgZXZlciBoYXBwZW5lZC4gSXQgdG9vayBzb21l
IGVmZm9ydCB0byByZWR1Y2UgdGhlIG92ZXJoZWFkIG9mIHRoaXMgcHJvZmlsaW5nLgorICAgICAg
ICBUaGlzIG1vc3RseSBpbnZvbHZlZCBlbnN1cmluZyB0aGF0IHdlIGRvbid0IGRvIGl0IHVubmVj
ZXNzYXJpbHkuIEZvciBleGFtcGxlLCB3ZSBhdm9pZCBpdAorICAgICAgICBpbiB0aGUgYmFzZWxp
bmUgSklUICh5b3UgY2FuIGNvbmRpdGlvbmFsbHkgZW5hYmxlIGl0IGJ1dCBpdCdzIG9mZiBieSBk
ZWZhdWx0KSBhbmQgd2Ugb25seSBkbworICAgICAgICBpdCBpbiB0aGUgREZHIEpJVCBpZiB3ZSBr
bm93IHRoYXQgdGhlIHJlZ3VsYXIgaW5saW5lIGNhY2hlIHByb2ZpbGluZyB3YXNuJ3QgcHJlY2lz
ZSBlbm91Z2guCisgICAgICAgIEkgYWxzbyBleHBlcmltZW50ZWQgd2l0aCByZWR1Y2luZyB0aGUg
cHJlY2lzaW9uIG9mIHRoZSBwcm9maWxpbmcuIFRoaXMgbGVkIHRvIGEgc2lnbmlmaWNhbnQKKyAg
ICAgICAgcmVkdWN0aW9uIGluIHRoZSBzcGVlZC11cCwgc28gSSBhdm9pZGVkIHRoaXMgYXBwcm9h
Y2guIEkgYWxzbyBleHBsb3JlZCBtYWtpbmcgbG9nIHByb2Nlc3NpbmcKKyAgICAgICAgY29uY3Vy
cmVudCwgYnV0IHRoYXQgZGlkbid0IGhlbHAuIEFsc28sIEkgdGVzdGVkIHRoZSBvdmVyaGVhZCBv
ZiB0aGUgbG9nIHByb2Nlc3NpbmcgYW5kCisgICAgICAgIGZvdW5kIHRoYXQgbW9zdCBvZiB0aGUg
b3ZlcmhlYWQgb2YgdGhpcyBwcm9maWxpbmcgaXMgYWN0dWFsbHkgaW4gcHV0dGluZyB0aGluZ3Mg
aW50byB0aGUgbG9nCisgICAgICAgIHJhdGhlciB0aGFuIGluIHByb2Nlc3NpbmcgdGhlIGxvZyAt
IHRoYXQgcGFydCBhcHBlYXJzIHRvIGJlIHN1cnByaXNpbmdseSBjaGVhcC4KKyAgICAgICAgCisg
ICAgICAgIFBvbHltb3JwaGljIGlubGluaW5nIGNvdWxkIGJlIGVuYWJsZWQgaW4gdGhlIERGRyBp
ZiB3ZSBlbmFibGVkIGJhc2VsaW5lIGNhbGwgZWRnZSBwcm9maWxpbmcsCisgICAgICAgIGFuZCBp
ZiB3ZSBndWFyZGVkIHN1Y2ggaW5saW5pbmcgc2l0ZXMgd2l0aCBzb21lIHByb2ZpbGluZyBtZWNo
YW5pc20gdG8gZGV0ZWN0CisgICAgICAgIHBvbHl2YXJpYW50IG1vbm9tb3JwaGlzYXRpb24gb3Bw
b3J0dW5pdGllcyAod2hlcmUgdGhlIGNhbGxzaXRlIGJlaW5nIGlubGluZWQgcmV2ZWFscyB0aGF0
CisgICAgICAgIGl0J3MgYWN0dWFsbHkgbW9ub21vcnBoaWMpLgorICAgICAgICAKKyAgICAgICAg
VGhpcyBpcyBhIH4yOCUgc3BlZWQtdXAgb24gZGVsdGFibHVlIGFuZCBhIH43JSBzcGVlZC11cCBv
biByaWNoYXJkcywgd2l0aCBzbWFsbCBzcGVlZC11cHMgb24KKyAgICAgICAgb3RoZXIgcHJvZ3Jh
bXMgYXMgd2VsbC4gSXQncyBhYm91dCBhIDIlIHNwZWVkLXVwIG9uIE9jdGFuZSB2ZXJzaW9uIDIs
IGFuZCBuZXZlciBhIHJlZ3Jlc3Npb24KKyAgICAgICAgb24gYW55dGhpbmcgd2UgY2FyZSBhYm91
dC4gU29tZSBhZ2dyZWdhdGVzLCBsaWtlIFY4U3BpZGVyLCBzZWUgYSByZWdyZXNzaW9uLiBUaGlz
IGlzCisgICAgICAgIGhpZ2hsaWdodGluZyB0aGUgaW5jcmVhc2UgaW4gcHJvZmlsaW5nIG92ZXJo
ZWFkLiBCdXQgc2luY2UgdGhpcyBkb2Vzbid0IHNob3cgdXAgb24gYW55IG1ham9yCisgICAgICAg
IHNjb3JlIChjb2RlLWxvYWQgb3IgU3VuU3BpZGVyKSwgaXQncyBwcm9iYWJseSBub3QgcmVsZXZh
bnQuCisgICAgICAgIAorICAgICAgICBSZWxhbmRpbmcgYWZ0ZXIgZml4aW5nIGRlYnVnIGFzc2Vy
dGlvbnMgaW4gZmFzdC9zdG9yYWdlL3NlcmlhbGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWwuCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9DYWxsRWRnZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpDYWxsRWRnZTo6ZHVtcCk6CisgICAgICAgICogYnl0ZWNvZGUv
Q2FsbEVkZ2UuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkNhbGxFZGdlOjpvcGVyYXRvciEpOgor
ICAgICAgICAoSlNDOjpDYWxsRWRnZTo6Y2FsbGVlKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2U6
OmNvdW50KToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2U6OmRlc3BlY2lmaWVkQ2xvc3VyZSk6Cisg
ICAgICAgIChKU0M6OkNhbGxFZGdlOjpDYWxsRWRnZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ2Fs
bEVkZ2VQcm9maWxlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkNhbGxFZGdlUHJvZmlsZTo6
Y2FsbEVkZ2VzKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VQcm9maWxlOjpudW1DYWxsc1RvS25v
d25DZWxscyk6CisgICAgICAgIChKU0M6OndvcnRoRGVzcGVjaWZ5aW5nKToKKyAgICAgICAgKEpT
Qzo6Q2FsbEVkZ2VQcm9maWxlOjp3b3J0aERlc3BlY2lmeWluZyk6CisgICAgICAgIChKU0M6OkNh
bGxFZGdlUHJvZmlsZTo6dmlzaXRXZWFrKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VQcm9maWxl
OjphZGRTbG93KToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VQcm9maWxlOjptZXJnZUJhY2spOgor
ICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6OmZhZGVCeUhhbGYpOgorICAgICAgICAoSlND
OjpDYWxsRWRnZUxvZzo6Q2FsbEVkZ2VMb2cpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZUxvZzo6
fkNhbGxFZGdlTG9nKToKKyAgICAgICAgKEpTQzo6Q2FsbEVkZ2VMb2c6OmlzRW5hYmxlZCk6Cisg
ICAgICAgIChKU0M6Om9wZXJhdGlvblByb2Nlc3NDYWxsRWRnZUxvZyk6CisgICAgICAgIChKU0M6
OkNhbGxFZGdlTG9nOjplbWl0TG9nQ29kZSk6CisgICAgICAgIChKU0M6OkNhbGxFZGdlTG9nOjpw
cm9jZXNzTG9nKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuaDogQWRkZWQu
CisgICAgICAgIChKU0M6OkNhbGxFZGdlUHJvZmlsZTo6bnVtQ2FsbHNUb05vdENlbGwpOgorICAg
ICAgICAoSlNDOjpDYWxsRWRnZVByb2ZpbGU6Om51bUNhbGxzVG9Vbmtub3duQ2VsbCk6CisgICAg
ICAgIChKU0M6OkNhbGxFZGdlUHJvZmlsZTo6dG90YWxDYWxscyk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbEVk
Z2VQcm9maWxlOjpDYWxsRWRnZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpDYWxsRWRnZVByb2Zp
bGU6OmFkZCk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcDoKKyAgICAgICAg
KEpTQzo6Q2FsbExpbmtJbmZvOjp2aXNpdFdlYWspOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxM
aW5rSW5mby5oOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OkNhbGxMaW5rU3RhdHVzKToKKyAgICAgICAgKEpTQzo6
Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAoSlNDOjpDYWxsTGlu
a1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb21w
dXRlRXhpdFNpdGVEYXRhKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVG
cm9tQ2FsbExpbmtJbmZvKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVG
cm9tQ2FsbEVkZ2VQcm9maWxlKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVERkdTdGF0dXNlcyk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjppc0Nsb3N1cmVD
YWxsKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om1ha2VDbG9zdXJlQ2FsbCk6Cisg
ICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpkdW1wKToKKyAgICAgICAgKEpTQzo6Q2FsbExp
bmtTdGF0dXM6OmZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0
dXM6OmludGVybmFsRnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0
YXR1czo6aW50cmluc2ljRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlu
a1N0YXR1cy5oOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Q2FsbExpbmtTdGF0dXMp
OgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6aXNTZXQpOgorICAgICAgICAoSlNDOjpD
YWxsTGlua1N0YXR1czo6Y291bGRUYWtlU2xvd1BhdGgpOgorICAgICAgICAoSlNDOjpDYWxsTGlu
a1N0YXR1czo6ZWRnZXMpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6c2l6ZSk6Cisg
ICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjphdCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5r
U3RhdHVzOjpvcGVyYXRvcltdKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNhbk9w
dGltaXplKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNhblRydXN0Q291bnRzKToK
KyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmlzQ2xvc3VyZUNhbGwpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y2FsbFRhcmdldCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpleGVjdXRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6Q2FsbExpbmtTdGF0dXM6Om1ha2VDbG9zdXJlQ2FsbCk6IERlbGV0ZWQuCisgICAgICAg
ICogYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbFZh
cmlhbnQ6OmR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxWYXJpYW50Lmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6Q2FsbFZhcmlhbnQpOgorICAgICAgICAoSlNDOjpD
YWxsVmFyaWFudDo6b3BlcmF0b3IhKToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OmRlc3Bl
Y2lmaWVkQ2xvc3VyZSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpyYXdDYWxsZWVDZWxs
KToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OmludGVybmFsRnVuY3Rpb24pOgorICAgICAg
ICAoSlNDOjpDYWxsVmFyaWFudDo6ZnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFu
dDo6aXNDbG9zdXJlQ2FsbCk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpleGVjdXRhYmxl
KToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om5vbkV4ZWN1dGFibGVDYWxsZWUpOgorICAg
ICAgICAoSlNDOjpDYWxsVmFyaWFudDo6aW50cmluc2ljRm9yKToKKyAgICAgICAgKEpTQzo6Q2Fs
bFZhcmlhbnQ6OmZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50
Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50Ojpv
cGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om9wZXJhdG9yIT0pOgorICAg
ICAgICAoSlNDOjpDYWxsVmFyaWFudDo6b3BlcmF0b3I8KToKKyAgICAgICAgKEpTQzo6Q2FsbFZh
cmlhbnQ6Om9wZXJhdG9yPik6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpvcGVyYXRvcjw9
KToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om9wZXJhdG9yPj0pOgorICAgICAgICAoSlND
OjpDYWxsVmFyaWFudDo6aGFzaCk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpkZWxldGVk
VG9rZW4pOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudEhhc2g6Omhhc2gpOgorICAgICAgICAo
SlNDOjpDYWxsVmFyaWFudEhhc2g6OmVxdWFsKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlT3Jp
Z2luLmg6CisgICAgICAgIChKU0M6OklubGluZUNhbGxGcmFtZTo6aXNOb3JtYWxDYWxsKToKKyAg
ICAgICAgKiBieXRlY29kZS9FeGl0S2luZC5jcHA6CisgICAgICAgIChKU0M6OmV4aXRLaW5kVG9T
dHJpbmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4aXRLaW5kLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvR2V0QnlJZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNvbXB1
dGVGb3JTdHViSW5mbyk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6Cisg
ICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbyk6CisgICAgICAg
ICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3Rz
KToKKyAgICAgICAgKiBkZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6QmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAg
ICAgICAgKiBkZmcvREZHQmFzaWNCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QmFzaWNC
bG9jazo6fkJhc2ljQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdCYXNpY0Jsb2NrLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6QmFzaWNCbG9jazo6dGFrZUxhc3QpOgorICAgICAgICAoSlNDOjpERkc6
OkJhc2ljQmxvY2s6OmRpZExpbmspOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnByb2Nlc3NTZXRMb2NhbFF1
ZXVlKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cmVtb3ZlTGFzdE5vZGVG
cm9tR3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphZGRDYWxsV2l0
aG91dFNldHRpbmdSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjph
ZGRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCk6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmVtaXRGdW5jdGlvbkNoZWNrcyk6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnVuZG9GdW5jdGlvbkNoZWNrcyk6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpjYW5jZWxMaW5raW5nRm9yQmxvY2spOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24pOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwcmVwYXJlVG9QYXJzZUJsb2NrKToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Y2xlYXJDYWNoZXMpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6bGlua0Jsb2Nrcyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQ29kZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFz
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q1BTUmV0aHJlYWRpbmdQaGFzZTo6ZnJlZVVubmVj
ZXNzYXJ5Tm9kZXMpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChK
U0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbW1vbi5oOgorICAgICAg
ICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAqIGRmZy9ERkdE
b2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RG
R0RyaXZlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y29tcGlsZUltcGwpOgorICAgICAgICAq
IGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpm
aXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6R3JhcGg6OmR1bXApOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpnZXRCbG9ja3NJblBy
ZU9yZGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21w
aWxlcjo6bGluayk6CisgICAgICAgICogZGZnL0RGR0xhenlKU1ZhbHVlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpMYXp5SlNWYWx1ZTo6c3dpdGNoTG9va3VwVmFsdWUpOgorICAgICAgICAqIGRm
Zy9ERkdMYXp5SlNWYWx1ZS5oOgorICAgICAgICAoSlNDOjpERkc6OkxhenlKU1ZhbHVlOjpzd2l0
Y2hMb29rdXBWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR05vZGUuY3BwOgorICAg
ICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAg
ICAgICAoSlNDOjpERkc6Ok9wSW5mbzo6T3BJbmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjpoYXNIZWFwUHJlZGljdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2VsbE9w
ZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNlbGxPcGVyYW5kKToKKyAgICAgICAg
KEpTQzo6REZHOjpOb2RlOjpzZXRDZWxsT3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9k
ZTo6Y2FuQmVLbm93bkZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjpoYXNLbm93bkZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpr
bm93bkZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpnaXZlS25v
d25GdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzRnVuY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmZ1bmN0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNFeGVjdXRhYmxlKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6REZHOjpOb2RlOjpleGVjdXRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBk
ZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRp
b25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGhhbnRvbUNhbm9uaWNhbGl6YXRpb25Q
aGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6UGhhbnRvbVJlbW92YWxQaGFzZTo6cnVuKToKKyAgICAgICAgKiBk
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9E
RkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlOjpydW4p
OgorICAgICAgICAqIGRmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpUaWVyVXBDaGVja0luamVjdGlvblBoYXNlOjpydW4pOgorICAgICAgICAo
SlNDOjpERkc6OlRpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2U6OnJlbW92ZUZUTFByb2ZpbGluZyk6
CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpWYWxp
ZGF0ZTo6dmFsaWRhdGUpOgorICAgICAgICAqIGRmZy9ERkdXYXRjaHBvaW50Q29sbGVjdGlvblBo
YXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlOjpo
YW5kbGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6ZnRsVW5yZWFjaGFibGUpOgorICAgICAgICAoSlNDOjpGVEw6
Okxvd2VyREZHVG9MTFZNOjpsb3dlcik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29t
cGlsZUNoZWNrQ2VsbCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBp
bGVDaGVja0JhZENlbGwpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21w
aWxlR2V0RXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNv
bXBpbGVOYXRpdmVDYWxsT3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjpjb21waWxlU3dpdGNoKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExW
TTo6YnVpbGRTd2l0Y2gpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21w
aWxlQ2hlY2tGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdU
b0xMVk06OmNvbXBpbGVDaGVja0V4ZWN1dGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAv
SGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3QpOgorICAgICAgICAqIGppdC9B
c3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVZh
bHVlKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpsb2FkVmFsdWUpOgorICAgICAg
ICAqIGppdC9DQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1
cEFyZ3VtZW50cyk6CisgICAgICAgICogaml0L0dQUkluZm8uaDoKKyAgICAgICAgKEpTQzo6SlNW
YWx1ZVJlZ3M6OnVzZXMpOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKiBqaXQvSklUQ2FsbDMyXzY0LmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKiBydW50aW1lL09w
dGlvbnMuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OmVu
c3VyZUNhbGxFZGdlTG9nKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICogdGVz
dHMvc3RyZXNzL2ZvbGQtcHJvZmlsZWQtY2FsbC10by1jYWxsLmpzOiBBZGRlZC4gVGhpcyB0ZXN0
IHBpbnBvaW50cyB0aGUgcHJvYmxlbSB3ZSBzYXcgaW4gZmFzdC9zdG9yYWdlL3NlcmlhbGl6ZWQt
c2NyaXB0LXZhbHVlLmh0bWwuCisgICAgICAgICogdGVzdHMvc3RyZXNzL25ldy1hcnJheS10aGVu
LWV4aXQuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9wb2x5LWNhbGwtZXhpdC10
aGlzLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQuanM6
IEFkZGVkLgorCiAyMDE0LTA4LTI3ICBBa29zIEtpc3MgIDxha2lzc0BpbmYudS1zemVnZWQuaHU+
CiAKICAgICAgICAgRW5zdXJlIHRoYXQgdGhlIGNhbGwgZnJhbWUgcGFzc2VkIGZyb20gSklUIGNv
ZGUgdmlhIEpTQzo6b3BlcmF0aW9uQ2FsbEV2YWwgdG8gSlNDOjpldmFsIGFsd2F5cyBjb250YWlu
cyB0aGUgdmFsaWQgc2NvcGUgY2hhaW4uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CShyZXZpc2lvbiAxNzI5NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTY1LDggKzY1LDExIEBAIHNldChKYXZhU2NyaXB0
Q29yZV9TT1VSQ0VTCiAgICAgYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAogICAgIGJ5dGVjb2Rl
L0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMuY3BwCisgICAgYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCisgICAgYnl0ZWNvZGUvQ2FsbEVk
Z2VQcm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKICAgICBieXRlY29k
ZS9DYWxsTGlua1N0YXR1cy5jcHAKKyAgICBieXRlY29kZS9DYWxsVmFyaWFudC5jcHAKICAgICBi
eXRlY29kZS9Db2RlQmxvY2suY3BwCiAgICAgYnl0ZWNvZGUvQ29kZUJsb2NrSGFzaC5jcHAKICAg
ICBieXRlY29kZS9Db2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE3Mjk2MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMxNCw4ICszMTQsMTEgQEAKICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5UHJvZmlsZS5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeXRlY29kZUJhc2ljQmxvY2suY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
LmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENhbGxFZGdlLmNw
cCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENhbGxFZGdlUHJvZmls
ZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDYWxsTGlua0lu
Zm8uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ2FsbExpbmtT
dGF0dXMuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ2FsbFZh
cmlhbnQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ29kZUJs
b2NrLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENvZGVCbG9j
a0hhc2guY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ29kZUJs
b2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcCIgLz4KQEAgLTkwNSw5ICs5MDgsMTMgQEAKICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEJ5dGVjb2RlQmFzaWNCbG9jay5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeXRlY29k
ZVVzZURlZi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ2FsbEVk
Z2UuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENhbGxFZGdlUHJv
ZmlsZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ2FsbEVkZ2VQ
cm9maWxlSW5saW5lcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVc
Q2FsbExpbmtJbmZvLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxD
YWxsTGlua1N0YXR1cy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVc
Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGJ5dGVjb2RlXENhbGxWYXJpYW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxieXRlY29kZVxDb2RlQmxvY2suaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGJ5dGVjb2RlXENvZGVCbG9ja0hhc2guaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGJ5dGVjb2RlXENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5oIiAvPgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE3Mjk2MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjMsNiArMjYzLDEzIEBACiAJCTBGM0IzQTI4MTU0NEM5OTcwMDNF
RDBGRiAvKiBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCM0EyNTE1NDRDOTkxMDAzRUQwRkYgLyogREZH
Q0ZHU2ltcGxpZmljYXRpb25QaGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGM0IzQTJCMTU0NzUwMDAwMDNFRDBGRiAvKiBERkdWYWxpZGF0
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNC
M0EyOTE1NDc0RkY0MDAzRUQwRkYgLyogREZHVmFsaWRhdGUuY3BwICovOyB9OwogCQkwRjNCM0Ey
QzE1NDc1MDAyMDAzRUQwRkYgLyogREZHVmFsaWRhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0IzQTJBMTU0NzRGRjQwMDNFRDBGRiAvKiBERkdW
YWxpZGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTBGM0I3RTI2MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMjAxOUExMUI4MDAwRDlCQzU2
IC8qIENhbGxFZGdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEYzQjdFMjcxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCN0UyMTE5
QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmNwcCAqLzsgfTsKKwkJMEYzQjdFMjgx
OUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMjIxOUExMUI4MDAwRDlCQzU2IC8qIENh
bGxFZGdlUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGM0I3RTI5MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGVJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNC
N0UyMzE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGM0I3RTJBMTlBMTFC
ODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCN0UyNDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlh
bnQuY3BwICovOyB9OworCQkwRjNCN0UyQjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTI1
MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGM0I3RTJEMTlBMTJBQUUwMEQ5QkM1NiAvKiBD
YWxsRWRnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjNCN0UyQzE5QTEyQUFFMDBEOUJDNTYgLyogQ2FsbEVkZ2UuY3BwICovOyB9OwogCQkwRjNE
MEJCQzE5NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNEMEJCQTE5NEE0MTQz
MDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHAgKi87IH07CiAJCTBGM0QwQkJE
MTk0QTQxNDMwMEZDOUNGOSAvKiBDb25zdGFudFN0cnVjdHVyZUNoZWNrLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNEMEJCQjE5NEE0MTQzMDBGQzlD
RjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDI2QTQ4MTQ2MENCQjMwMDEzMUY4RiAvKiBWYWx1
ZVJlY292ZXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMTY5LDYgKzIxNzYsMTMg
QEAKIAkJMEYzQjNBMjUxNTQ0Qzk5MTAwM0VEMEZGIC8qIERGR0NGR1NpbXBsaWZpY2F0aW9uUGhh
c2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ0ZHU2ltcGxpZmljYXRp
b25QaGFzZS5oOyBwYXRoID0gZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQjNBMjkxNTQ3NEZGNDAwM0VEMEZGIC8qIERGR1Zh
bGlkYXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ZhbGlk
YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdWYWxpZGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGM0IzQTJBMTU0NzRGRjQwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdWYWxpZGF0ZS5oOyBwYXRoID0gZGZnL0RG
R1ZhbGlkYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGM0I3RTIwMTlBMTFC
ODAwMEQ5QkM1NiAvKiBDYWxsRWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDYWxsRWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyMTE5QTEx
QjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENhbGxFZGdlUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGM0I3RTIyMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbEVkZ2VQcm9maWxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGM0I3RTIzMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxs
RWRnZVByb2ZpbGVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENh
bGxFZGdlUHJvZmlsZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYz
QjdFMjQxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxWYXJpYW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYzQjdFMjUxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxWYXJpYW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGM0I3RTJDMTlBMTJBQUUwMEQ5QkM1NiAvKiBDYWxsRWRnZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsRWRnZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0QwQkJBMTk0QTQxNDMwMEZDOUNGOSAvKiBD
b25zdGFudFN0cnVjdHVyZUNoZWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENvbnN0YW50U3RydWN0dXJlQ2hlY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjNEMEJCQjE5NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVj
ay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb25zdGFudFN0cnVjdHVyZUNo
ZWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ1MTQ2MENCQUIwMDEz
MUY4RiAvKiBWYWx1ZVJlY292ZXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFZhbHVlUmVjb3ZlcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUxNDYsMTEg
KzUxNjAsMTggQEAKIAkJCQkwRjY2NkVCRTE4MzU2NkY5MDBEMDE3RjEgLyogQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzSW5saW5lcy5oICovLAogCQkJCTBGODg1RTEwMTg0OUEzQkUwMEYxRTNGQSAv
KiBCeXRlY29kZVVzZURlZi5oICovLAogCQkJCTBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBC
eVZhbEluZm8uaCAqLywKKwkJCQkwRjNCN0UyQzE5QTEyQUFFMDBEOUJDNTYgLyogQ2FsbEVkZ2Uu
Y3BwICovLAorCQkJCTBGM0I3RTIwMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZS5oICovLAor
CQkJCTBGM0I3RTIxMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuY3BwICovLAor
CQkJCTBGM0I3RTIyMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuaCAqLywKKwkJ
CQkwRjNCN0UyMzE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oICov
LAogCQkJCTBGMEI4M0FFMTRCQ0Y3MTQwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uY3BwICovLAog
CQkJCTBGMEI4M0FGMTRCQ0Y3MTQwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uaCAqLywKIAkJCQkw
RjkzMzI5MzE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuY3BwICovLAogCQkJCTBG
OTMzMjk0MTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5oICovLAogCQkJCTBGMEI4
M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5o
ICovLAorCQkJCTBGM0I3RTI0MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5jcHAgKi8s
CisJCQkJMEYzQjdFMjUxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmggKi8sCiAJCQkJ
OTY5QTA3OTAwRUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5jcHAgKi8sCiAJCQkJOTY5QTA3
OTEwRUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5oICovLAogCQkJCTBGOEY5NDNEMTY2NzYz
MkQwMEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmNwcCAqLywKQEAgLTU4NzksNiArNTkwMCw3IEBA
CiAJCQkJMEZGRkM5NUExNEVGOTBBOTAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjJGQzc3MzE2RTEyRjc0MDAzOEQ5NzYgLyogREZHRENFUGhhc2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGOEYyQjlBMTcyRjA1MDEwMDdEQkRBNSAvKiBERkdEZXNpcmVkSWRl
bnRpZmllcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGM0I3RTI4MTlBMTFCODAwMEQ5QkM1NiAv
KiBDYWxsRWRnZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQzBGN0NFMTdCQkZDNUIw
MDQ2NEZFNCAvKiBERkdEZXNpcmVkVHJhbnNpdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RTg1MzRDMTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUMyOTgxRkQ5MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vha1Jl
ZmVyZW5jZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNjE0Nyw2ICs2MTY5LDcgQEAKIAkJCQkwRjc2
NkQzMTE1QUE4MTEyMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNzY2RDJDMTVBOENDM0EwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZVNldC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTRDNTI0MkIwRjUzNTVFOTAwQkEzRDA0IC8qIEpJVFN0dWJzLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjNCN0UyQjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZFRjY4MzVFMTc0MzQzQ0MwMEEzMkUyNSAvKiBKSVRTdHVi
c0FSTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVGNjgzNUYxNzQzNDNDQzAwQTMyRTI1IC8qIEpJ
VFN0dWJzQVJNdjcuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFRjY4MzYxMTc0MzQzQ0MwMEEzMkUy
NSAvKiBKSVRTdHVic1g4Ni5oIGluIEhlYWRlcnMgKi8sCkBAIC02MTU4LDYgKzYxODEsNyBAQAog
CQkJCUE3NkY1NEEzMTNCMjhBQUIwMEVGMkJDRSAvKiBKSVRXcml0ZUJhcnJpZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0FjdGl2YXRpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTg0MDQ4MDEzMTAyMUExRDkwMDhFN0YwMSAvKiBKU0FQSVZhbHVl
V3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYzQjdFMjkxOUExMUI4MDAwRDlCQzU2IC8q
IENhbGxFZGdlUHJvZmlsZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQ0YzOUMyMTZF
MTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3NjE0MEQyMTgyOTgyQ0IwMDc1MDYyNCAvKiBKU0FyZ3VtZW50c0l0ZXJhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzE4QzQxNzBFMTZGNUNEMDBCMzQ0NjAgLyogSlNBcnJheS5oIGluIEhl
YWRlcnMgKi8sCkBAIC02NDczLDYgKzY0OTcsNyBAQAogCQkJCUU0OURDMTZDMTJFRjI5NEUwMDE4
NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDlEQzE2
RDEyRUYyOTUzMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGQjdGMzlFMTVFRDhFNDYwMEYxNjdCMiAvKiBTcGFyc2VBcnJheVZhbHVlTWFw
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjNCN0UyNjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVk
Z2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mzg2NTU0MTE4Njk3QjQwMDU0MDI3OSAvKiBTcGVj
aWFsaXplZFRodW5rSklULmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU1NDFCMjE2MTNDMUZCMDBD
RTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgyRTU0MTQx
REFFRUUwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03MzI3
LDYgKzczNTIsNyBAQAogCQkJCTBGMjM1QkQ1MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJn
dW1lbnRGb3JPcGVyYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkQ4MTcxNzhFMUMw
MDY5MEM3RiAvKiBGVExFeGl0VGh1bmtHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEYyMzVCREExNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRWYWx1ZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkwRjNCN0UyNzE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE3RjI5OTZCMTdBMEJCNjcwMDEwNDE3QSAvKiBGVExGYWlsLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDhBMzE5MTdENTFGMjIwMENBMkM0MCAvKiBGVExGb3JP
U1JFbnRyeUpJVENvZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyNUYxQUYxODE2MzVGMzAw
NTIyRjM5IC8qIEZUTElubGluZUNhY2hlU2l6ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc1MTMs
NiArNzUzOSw3IEBACiAJCQkJMEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcyIC8qIExMSW50RGF0YS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjM4QjAxMTE3Q0YwNzgwMDBCMTQ0RDMgLyogTExJbnRF
bnRyeXBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3
MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYzQjdFMkQxOUEx
MkFBRTAwRDlCQzU2IC8qIENhbGxFZGdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MEE0
MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludFNsb3dQYXRocy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjBCODM5QzE0QkNGNDYzMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEZDRUZBQ0QxODA1RTc1NTAwNDcyQ0U0IC8qIExMVk1BUEkuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC03Njc0LDYgKzc3MDEsNyBAQAogCQkJCTE0RTg0RkEwMTRFRTFBQ0MwMEQ2RDVE
NCAvKiBXZWFrU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJBNEVDOTBCMTg2MEQ2QzIwMDk0
Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDODE1
MEIxNDA0M0MwRTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMEYzQjdFMkExOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE3RTVBQjNBMTc5OUU0QjIwMEQyODMzRCAvKiBYODZEaXNhc3NlbWJs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODYzQzZEOUMxNTIxMTExQTAwNTg1RTRFIC8qIFlh
cnJDYW5vbmljYWxpemVVQ1MyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0Qjg0MTJEQkEz
MzcwMEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZS5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNhbGxFZGdlLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCit2b2lkIENhbGxFZGdlOjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KCI8IiwgbV9jYWxsZWUsICIsIGNvdW50OiAiLCBt
X2NvdW50LCAiPiIpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgQ2FsbEVkZ2VfaAorI2RlZmluZSBDYWxsRWRnZV9oCisKKyNpbmNsdWRlICJDYWxs
VmFyaWFudC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordHlwZWRlZiB1aW50MTZfdCBDYWxsRWRn
ZUNvdW50VHlwZTsKKworY2xhc3MgQ2FsbEVkZ2UgeworcHVibGljOgorICAgIENhbGxFZGdlKCk7
CisgICAgQ2FsbEVkZ2UoQ2FsbFZhcmlhbnQsIENhbGxFZGdlQ291bnRUeXBlKTsKKyAgICAKKyAg
ICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX2NhbGxlZTsgfQorICAgIAorICAg
IENhbGxWYXJpYW50IGNhbGxlZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGVlOyB9CisgICAgQ2Fs
bEVkZ2VDb3VudFR5cGUgY291bnQoKSBjb25zdCB7IHJldHVybiBtX2NvdW50OyB9CisgICAgCisg
ICAgQ2FsbEVkZ2UgZGVzcGVjaWZpZWRDbG9zdXJlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBDYWxsRWRnZShtX2NhbGxlZS5kZXNwZWNpZmllZENsb3N1cmUoKSwgbV9jb3VudCk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIAorcHVi
bGljOgorICAgIENhbGxWYXJpYW50IG1fY2FsbGVlOworICAgIENhbGxFZGdlQ291bnRUeXBlIG1f
Y291bnQ7Cit9OworCitpbmxpbmUgQ2FsbEVkZ2U6OkNhbGxFZGdlKENhbGxWYXJpYW50IGNhbGxl
ZSwgQ2FsbEVkZ2VDb3VudFR5cGUgY291bnQpCisgICAgOiBtX2NhbGxlZShjYWxsZWUpCisgICAg
LCBtX2NvdW50KGNvdW50KQoreworfQorCitpbmxpbmUgQ2FsbEVkZ2U6OkNhbGxFZGdlKCkKKyAg
ICA6IENhbGxFZGdlKENhbGxWYXJpYW50KCksIDApCit7Cit9CisKK3R5cGVkZWYgVmVjdG9yPENh
bGxFZGdlLCAxPiBDYWxsRWRnZUxpc3Q7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYg
Ly8gQ2FsbEVkZ2VfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bEVkZ2VQcm9maWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMzQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDYWxsRWRnZVByb2ZpbGUuaCIKKwor
I2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgorI2luY2x1ZGUgIkNhbGxFZGdlUHJvZmlsZUlubGlu
ZXMuaCIKKyNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworQ2FsbEVkZ2VMaXN0IENhbGxFZGdlUHJvZmlsZTo6Y2Fs
bEVkZ2VzKCkgY29uc3QKK3sKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2sp
OworICAgIAorICAgIENhbGxFZGdlTGlzdCByZXN1bHQ7CisgICAgCisgICAgQ2FsbFZhcmlhbnQg
cHJpbWFyeUNhbGxlZSA9IG1fcHJpbWFyeUNhbGxlZTsKKyAgICBDYWxsRWRnZUNvdW50VHlwZSBu
dW1DYWxsc1RvUHJpbWFyeSA9IG1fbnVtQ2FsbHNUb1ByaW1hcnk7CisgICAgLy8gRGVmZW5kIGFn
YWluc3QgcmFjZXMuIFRoZXNlIGZpZWxkcyBhcmUgbW9kaWZpZWQgYnkgdGhlIGxvZyBwcm9jZXNz
b3Igd2l0aG91dCBsb2NraW5nLgorICAgIGlmICghIXByaW1hcnlDYWxsZWUgJiYgbnVtQ2FsbHNU
b1ByaW1hcnkpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoQ2FsbEVkZ2UocHJpbWFyeUNhbGxlZSwg
bnVtQ2FsbHNUb1ByaW1hcnkpKTsKKyAgICAKKyAgICBpZiAobV9vdGhlckNhbGxlZXMpIHsKKyAg
ICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgaWYgdGhlIHByaW1hcnkgdGhyZWFkIGhhZCBqdXN0IGNy
ZWF0ZWQgYSBtX290aGVyQ2FsbGVzIHdoaWxlIGxvZworICAgICAgICAvLyBwcm9jZXNzaW5nLCB3
ZSBzZWUgYSBjb25zaXN0ZW50bHkgY3JlYXRlZCBvbmUuIFRoZSBsb2NrIGJlaW5nIGhlbGQgaXMg
aW5zdWZmaWNpZW50IGZvcgorICAgICAgICAvLyB0aGlzLCBzaW5jZSB0aGUgbG9nIHByb2Nlc3Nv
ciB3aWxsIG9ubHkgZ3JhYiB0aGUgbG9jayB3aGVuIG1lcmdpbmcgdGhlIHNlY29uZGFyeQorICAg
ICAgICAvLyBzcGVjdHJ1bSBpbnRvIHRoZSBwcmltYXJ5IG9uZSBidXQgbWF5IHN0aWxsIGNyZWF0
ZSB0aGUgZGF0YSBzdHJ1Y3R1cmUgd2l0aG91dCBob2xkaW5nCisgICAgICAgIC8vIGxvY2tzLgor
ICAgICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKKyAgICAgICAgZm9yIChDYWxsRWRnZSYgZW50
cnkgOiBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQpIHsKKyAgICAgICAgICAgIC8vIERlZmVu
ZCBhZ2FpbnN0IHRoZSBwb3NzaWJpbGl0eSB0aGF0IHRoZSBwcmltYXJ5IGR1cGxpY2F0ZXMgYW4g
ZW50cnkgaW4gdGhlIHNlY29uZGFyeQorICAgICAgICAgICAgLy8gc3BlY3RydW0uIFRoYXQgY2Fu
IGhhcHBlbiB3aGVuIHRoZSBHQyByZW1vdmVzIHRoZSBwcmltYXJ5LiBXZSBjb3VsZCBoYXZlIHRo
ZSBHQyBmaXgKKyAgICAgICAgICAgIC8vIHRoZSBzaXR1YXRpb24gYnkgY2hhbmdpbmcgdGhlIHBy
aW1hcnkgdG8gYmUgc29tZXRoaW5nIGZyb20gdGhlIHNlY29uZGFyeSBzcGVjdHJ1bSwKKyAgICAg
ICAgICAgIC8vIGJ1dCB0aGlzIGZpeCBzZWVtcyBzaW1wbGVyIHRvIGltcGxlbWVudCBhbmQgYWxz
byBjaGVhcGVyLgorICAgICAgICAgICAgaWYgKGVudHJ5LmNhbGxlZSgpID09IHJlc3VsdFswXS5j
YWxsZWUoKSkgeworICAgICAgICAgICAgICAgIHJlc3VsdFswXSA9IENhbGxFZGdlKHJlc3VsdFsw
XS5jYWxsZWUoKSwgZW50cnkuY291bnQoKSArIHJlc3VsdFswXS5jb3VudCgpKTsKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChlbnRyeSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgc3Rk
Ojpzb3J0KHJlc3VsdC5iZWdpbigpLCByZXN1bHQuZW5kKCksIFtdIChjb25zdCBDYWxsRWRnZSYg
YSwgY29uc3QgQ2FsbEVkZ2UmIGIpIC0+IGJvb2wgeworICAgICAgICAgICAgcmV0dXJuIGEuY291
bnQoKSA+IGIuY291bnQoKTsKKyAgICAgICAgfSk7CisgICAgCisgICAgaWYgKHJlc3VsdC5zaXpl
KCkgPj0gMikKKyAgICAgICAgQVNTRVJUKHJlc3VsdFswXS5jb3VudCgpID49IHJlc3VsdC5sYXN0
KCkuY291bnQoKSk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQ2FsbEVkZ2VDb3Vu
dFR5cGUgQ2FsbEVkZ2VQcm9maWxlOjpudW1DYWxsc1RvS25vd25DZWxscygpIGNvbnN0Cit7Cisg
ICAgQ2FsbEVkZ2VDb3VudFR5cGUgcmVzdWx0ID0gMDsKKyAgICBmb3IgKENhbGxFZGdlJiBlZGdl
IDogY2FsbEVkZ2VzKCkpCisgICAgICAgIHJlc3VsdCArPSBlZGdlLmNvdW50KCk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGJvb2wgd29ydGhEZXNwZWNpZnlpbmcoY29uc3QgQ2Fs
bFZhcmlhbnQmIHZhcmlhbnQpCit7CisgICAgcmV0dXJuICFIZWFwOjppc01hcmtlZCh2YXJpYW50
LnJhd0NhbGxlZUNlbGwoKSkKKyAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQodmFyaWFudC5kZXNw
ZWNpZmllZENsb3N1cmUoKS5yYXdDYWxsZWVDZWxsKCkpOworfQorCitib29sIENhbGxFZGdlUHJv
ZmlsZTo6d29ydGhEZXNwZWNpZnlpbmcoKQoreworICAgIGlmIChtX2Nsb3N1cmVzQXJlRGVzcGVj
aWZpZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoISFtX3ByaW1hcnlD
YWxsZWUgJiYgIUpTQzo6d29ydGhEZXNwZWNpZnlpbmcobV9wcmltYXJ5Q2FsbGVlKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBp
LS07KSB7CisgICAgICAgICAgICBpZiAoIUpTQzo6d29ydGhEZXNwZWNpZnlpbmcobV9vdGhlckNh
bGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNhbGxlZSgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Zv
aWQgQ2FsbEVkZ2VQcm9maWxlOjp2aXNpdFdlYWsoKQoreworICAgIGlmICghbV9wcmltYXJ5Q2Fs
bGVlICYmICFtX290aGVyQ2FsbGVlcykKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIENvbmN1
cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCisgICAgLy8gU2VlIGlmIGFueXRo
aW5nIGlzIGRlYWQgYW5kIGlmIHRoYXQgY2FuIGJlIHJlY3RpZmllZCBieSBkZXNwZWNpZnlpbmcu
CisgICAgaWYgKHdvcnRoRGVzcGVjaWZ5aW5nKCkpIHsKKyAgICAgICAgQ2FsbFNwZWN0cnVtIG5l
d1NwZWN0cnVtOworICAgICAgICAKKyAgICAgICAgaWYgKCEhbV9wcmltYXJ5Q2FsbGVlKQorICAg
ICAgICAgICAgbmV3U3BlY3RydW0uYWRkKG1fcHJpbWFyeUNhbGxlZS5kZXNwZWNpZmllZENsb3N1
cmUoKSwgbV9udW1DYWxsc1RvUHJpbWFyeSk7CisgICAgICAgIAorICAgICAgICBpZiAobV9vdGhl
ckNhbGxlZXMpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fb3RoZXJDYWxsZWVz
LT5tX3Byb2Nlc3NlZC5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICBuZXdTcGVjdHJ1
bS5hZGQoCisgICAgICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtp
XS5jYWxsZWUoKS5kZXNwZWNpZmllZENsb3N1cmUoKSwKKyAgICAgICAgICAgICAgICAgICAgbV9v
dGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNvdW50KCkpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBWZWN0b3I8Q2FsbFNwZWN0cnVtOjpLZXlBbmRDb3Vu
dD4gbGlzdCA9IG5ld1NwZWN0cnVtLmJ1aWxkTGlzdCgpOworICAgICAgICBBU1NFUlQobGlzdC5z
aXplKCkpOworICAgICAgICBtX3ByaW1hcnlDYWxsZWUgPSBsaXN0Lmxhc3QoKS5rZXk7CisgICAg
ICAgIG1fbnVtQ2FsbHNUb1ByaW1hcnkgPSBsaXN0Lmxhc3QoKS5jb3VudDsKKyAgICAgICAgCisg
ICAgICAgIEFTU0VSVCghIW1fb3RoZXJDYWxsZWVzID09IChsaXN0LnNpemUoKSA+PSAyKSk7Cisg
ICAgICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMt
Pm1fcHJvY2Vzc2VkLmNsZWFyKCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBsaXN0
LnNpemUoKSAtIDE7IGktLTspCisgICAgICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJv
Y2Vzc2VkLmFwcGVuZChDYWxsRWRnZShsaXN0W2ldLmtleSwgbGlzdFtpXS5jb3VudCkpOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQgPSB0cnVl
OworICAgICAgICAKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoISFtX3By
aW1hcnlDYWxsZWUgJiYgIUhlYXA6OmlzTWFya2VkKG1fcHJpbWFyeUNhbGxlZS5yYXdDYWxsZWVD
ZWxsKCkpKSB7CisgICAgICAgIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxsICs9IG1fbnVtQ2FsbHNU
b1ByaW1hcnk7CisgICAgICAgIAorICAgICAgICBtX3ByaW1hcnlDYWxsZWUgPSBDYWxsVmFyaWFu
dCgpOworICAgICAgICBtX251bUNhbGxzVG9QcmltYXJ5ID0gMDsKKyAgICB9CisgICAgCisgICAg
aWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIGlm
IChIZWFwOjppc01hcmtlZChtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCku
cmF3Q2FsbGVlQ2VsbCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgbV9udW1DYWxsc1RvVW5rbm93bkNlbGwgKz0gbV9vdGhlckNhbGxlZXMt
Pm1fcHJvY2Vzc2VkW2ldLmNvdW50KCk7CisgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9w
cm9jZXNzZWRbaS0tXSA9IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5sYXN0KCk7CisgICAg
ICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQucmVtb3ZlTGFzdCgpOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICAvLyBPbmx5IGV4aXN0cyB3aGlsZSB3ZSBhcmUgcHJvY2Vz
c2luZyB0aGUgbG9nLgorICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9vdGhlckNhbGxlZXMtPm1f
dGVtcG9yYXJ5U3BlY3RydW0pOworICAgIH0KK30KKwordm9pZCBDYWxsRWRnZVByb2ZpbGU6OmFk
ZFNsb3coQ2FsbFZhcmlhbnQgY2FsbGVlLCBDYWxsRWRnZVByb2ZpbGVWZWN0b3ImIG1lcmdlQmFj
a0xvZykKK3sKKyAgICAvLyBUaGlzIGV4aXN0cyB0byBoYW5kbGUgY2FzZXMgd2hlcmUgdGhlIHNw
ZWN0cnVtIHdhc24ndCBjcmVhdGVkIHlldCwgb3Igd2UncmUgc3RvcmluZyB0byBhCisgICAgLy8g
cGFydGljdWxhciBzcGVjdHJ1bSBmb3IgdGhlIGZpcnN0IHRpbWUgZHVyaW5nIGEgbG9nIHByb2Nl
c3NpbmcgaXRlcmF0aW9uLgorICAgIAorICAgIGlmICghbV9vdGhlckNhbGxlZXMpIHsKKyAgICAg
ICAgbV9vdGhlckNhbGxlZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlY29uZGFyeT4oKTsKKyAgICAg
ICAgLy8gSWYgYSBjb21waWxlciB0aHJlYWQgbm90aWNlcyB0aGUgbV9vdGhlckNhbGxlZXMgYmVp
bmcgbm9uLW51bGwsIHdlIHdhbnQgdG8gbWFrZSBzdXJlCisgICAgICAgIC8vIHRoYXQgaXQgc2Vl
cyBhIGZ1bGx5IGNyZWF0ZWQgb25lLgorICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwor
ICAgIH0KKyAgICAKKyAgICBpZiAoIW1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVt
KSB7CisgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtID0gc3RkOjpt
YWtlX3VuaXF1ZTxDYWxsU3BlY3RydW0+KCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1f
b3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIG1f
b3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5hZGQoCisgICAgICAgICAgICAgICAg
bV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNhbGxlZSgpLAorICAgICAgICAgICAgICAg
IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jb3VudCgpKTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUg
d2UncmUgc2VlaW5nIHRoaXMgcHJvZmlsZSBkdXJpbmcgdGhpcyBsb2cKKyAgICAgICAgLy8gcHJv
Y2Vzc2luZyBpdGVyYXRpb24uCisgICAgICAgIG1lcmdlQmFja0xvZy5hcHBlbmQodGhpcyk7Cisg
ICAgfQorICAgIAorICAgIG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5hZGQo
Y2FsbGVlKTsKK30KKwordm9pZCBDYWxsRWRnZVByb2ZpbGU6Om1lcmdlQmFjaygpCit7CisgICAg
Q29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAKKyAgICBBU1NFUlQobV9v
dGhlckNhbGxlZXMpOworICAgIEFTU0VSVChtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVj
dHJ1bSk7CisgICAgCisgICAgaWYgKCEhbV9wcmltYXJ5Q2FsbGVlKQorICAgICAgICBtX290aGVy
Q2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+YWRkKG1fcHJpbWFyeUNhbGxlZSwgbV9udW1D
YWxsc1RvUHJpbWFyeSk7CisgICAgCisgICAgaWYgKCFtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQp
IHsKKyAgICAgICAgQ2FsbFNwZWN0cnVtIG5ld1NwZWN0cnVtOworICAgICAgICBmb3IgKGF1dG8m
IGVudHJ5IDogKm1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtKQorICAgICAgICAg
ICAgbmV3U3BlY3RydW0uYWRkKGVudHJ5LmtleS5kZXNwZWNpZmllZENsb3N1cmUoKSwgZW50cnku
dmFsdWUpOworICAgICAgICAKKyAgICAgICAgaWYgKG5ld1NwZWN0cnVtLnNpemUoKSA8IG1fb3Ro
ZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5zaXplKCkpIHsKKyAgICAgICAgICAgICpt
X290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSA9IG5ld1NwZWN0cnVtOworICAgICAg
ICAgICAgbV9jbG9zdXJlc0FyZURlc3BlY2lmaWVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0K
KyAgICAKKyAgICBWZWN0b3I8Q2FsbFNwZWN0cnVtOjpLZXlBbmRDb3VudD4gbGlzdCA9IG1fb3Ro
ZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5idWlsZExpc3QoKTsKKyAgICBtX290aGVy
Q2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSA9IG51bGxwdHI7CisgICAgCisgICAgbV9wcmlt
YXJ5Q2FsbGVlID0gbGlzdC5sYXN0KCkua2V5OworICAgIG1fbnVtQ2FsbHNUb1ByaW1hcnkgPSBs
aXN0Lmxhc3QoKS5jb3VudDsKKyAgICBsaXN0LnJlbW92ZUxhc3QoKTsKKyAgICAKKyAgICBtX290
aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuY2xlYXIoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGNvdW50
ID0gbWF4S25vd25DYWxsZWVzOyBjb3VudC0tICYmICFsaXN0LmlzRW1wdHkoKTspIHsKKyAgICAg
ICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLmFwcGVuZChDYWxsRWRnZShsaXN0Lmxhc3Qo
KS5rZXksIGxpc3QubGFzdCgpLmNvdW50KSk7CisgICAgICAgIGxpc3QucmVtb3ZlTGFzdCgpOwor
ICAgIH0KKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBsaXN0LnNpemUoKTsgaS0tOykKKyAg
ICAgICAgbV9udW1DYWxsc1RvVW5rbm93bkNlbGwgKz0gbGlzdFtpXS5jb3VudDsKK30KKwordm9p
ZCBDYWxsRWRnZVByb2ZpbGU6OmZhZGVCeUhhbGYoKQoreworICAgIG1fbnVtQ2FsbHNUb1ByaW1h
cnkgPj49IDE7CisgICAgbV9udW1DYWxsc1RvTm90Q2VsbCA+Pj0gMTsKKyAgICBtX251bUNhbGxz
VG9Vbmtub3duQ2VsbCA+Pj0gMTsKKyAgICBtX3RvdGFsQ291bnQgPj49IDE7CisgICAgCisgICAg
aWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fb3RoZXJD
YWxsZWVzLT5tX3Byb2Nlc3NlZC5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIG1fb3RoZXJD
YWxsZWVzLT5tX3Byb2Nlc3NlZFtpXSA9IENhbGxFZGdlKAorICAgICAgICAgICAgICAgIG1fb3Ro
ZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jYWxsZWUoKSwKKyAgICAgICAgICAgICAgICBtX290
aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291bnQoKSA+PiAxKTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgaWYgKG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtKSB7
CisgICAgICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogKm1fb3RoZXJDYWxsZWVzLT5tX3RlbXBv
cmFyeVNwZWN0cnVtKQorICAgICAgICAgICAgICAgIGVudHJ5LnZhbHVlID4+PSAxOworICAgICAg
ICB9CisgICAgfQorfQorCitDYWxsRWRnZUxvZzo6Q2FsbEVkZ2VMb2coKQorICAgIDogbV9zY2Fs
ZWRMb2dJbmRleChsb2dTaXplICogc2l6ZW9mKEVudHJ5KSkKK3sKKyAgICBBU1NFUlQoIShtX3Nj
YWxlZExvZ0luZGV4ICUgc2l6ZW9mKEVudHJ5KSkpOworfQorCitDYWxsRWRnZUxvZzo6fkNhbGxF
ZGdlTG9nKCkgeyB9CisKK2Jvb2wgQ2FsbEVkZ2VMb2c6OmlzRW5hYmxlZCgpCit7CisgICAgcmV0
dXJuIE9wdGlvbnM6OmVuYWJsZUNhbGxFZGdlUHJvZmlsaW5nKCkgJiYgT3B0aW9uczo6dXNlRlRM
SklUKCk7Cit9CisKKyNpZiBFTkFCTEUoSklUKQorCitleHRlcm4gIkMiIEpJVF9PUEVSQVRJT04g
dm9pZCBvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2coQ2FsbEVkZ2VMb2cqKSBXVEZfSU5URVJO
QUw7CitleHRlcm4gIkMiIEpJVF9PUEVSQVRJT04gdm9pZCBvcGVyYXRpb25Qcm9jZXNzQ2FsbEVk
Z2VMb2coQ2FsbEVkZ2VMb2cqIGxvZykKK3sKKyAgICBsb2ctPnByb2Nlc3NMb2coKTsKK30KKwor
dm9pZCBDYWxsRWRnZUxvZzo6ZW1pdExvZ0NvZGUoQ0NhbGxIZWxwZXJzJiBqaXQsIENhbGxFZGdl
UHJvZmlsZSYgcHJvZmlsZSwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncykKK3sKKyAgICBjb25zdCB1
bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50cyA9IDE7CisgICAgCisgICAgR1BSUmVnIHNjcmF0Y2hH
UFI7CisgICAgaWYgKCFjYWxsZWVSZWdzLnVzZXMoR1BSSW5mbzo6cmVnVDApKQorICAgICAgICBz
Y3JhdGNoR1BSID0gR1BSSW5mbzo6cmVnVDA7CisgICAgZWxzZSBpZiAoIWNhbGxlZVJlZ3MudXNl
cyhHUFJJbmZvOjpyZWdUMSkpCisgICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJbmZvOjpyZWdUMTsK
KyAgICBlbHNlCisgICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJbmZvOjpyZWdUMjsKKyAgICAKKyAg
ICBqaXQubG9hZDMyKCZtX3NjYWxlZExvZ0luZGV4LCBzY3JhdGNoR1BSKTsKKyAgICAKKyAgICBD
Q2FsbEhlbHBlcnM6Okp1bXAgb2sgPSBqaXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6Tm9u
WmVybywgc2NyYXRjaEdQUik7CisgICAgCisgICAgQVNTRVJUX1VOVVNFRChudW1iZXJPZkFyZ3Vt
ZW50cywgc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSA+PSAxICsgbnVtYmVyT2ZBcmd1bWVudHMp
OworICAgIAorICAgIGppdC5zdWJQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhY2tB
bGlnbm1lbnRCeXRlcygpKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Cisg
ICAgCisgICAgaml0LnN0b3JlVmFsdWUoY2FsbGVlUmVncywgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIHNpemVvZihKU1ZhbHVlKSkpOwor
ICAgIGppdC5zZXR1cEFyZ3VtZW50cyhDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGhpcykp
OworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8
dm9pZCo+KG9wZXJhdGlvblByb2Nlc3NDYWxsRWRnZUxvZykpLCBHUFJJbmZvOjpub25BcmdHUFIw
KTsKKyAgICBqaXQuY2FsbChHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICBqaXQubG9hZFZhbHVl
KENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVy
LCBzaXplb2YoSlNWYWx1ZSkpLCBjYWxsZWVSZWdzKTsKKyAgICAKKyAgICBqaXQuYWRkUHRyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSksIENDYWxsSGVs
cGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIAorICAgIGppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKGxvZ1NpemUgKiBzaXplb2YoRW50cnkpKSwgc2NyYXRjaEdQUik7
CisgICAgb2subGluaygmaml0KTsKKworICAgIGppdC5zdWIzMihDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihzaXplb2YoRW50cnkpKSwgc2NyYXRjaEdQUik7CisgICAgaml0LnN0b3JlMzIoc2Ny
YXRjaEdQUiwgJm1fc2NhbGVkTG9nSW5kZXgpOworICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKG1fbG9nKSwgc2NyYXRjaEdQUik7CisgICAgaml0LnN0b3JlVmFsdWUo
Y2FsbGVlUmVncywgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIE9CSkVDVF9PRkZT
RVRPRihFbnRyeSwgbV92YWx1ZSkpKTsKKyAgICBqaXQuc3RvcmVQdHIoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKCZwcm9maWxlKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIs
IE9CSkVDVF9PRkZTRVRPRihFbnRyeSwgbV9wcm9maWxlKSkpOworfQorCit2b2lkIENhbGxFZGdl
TG9nOjplbWl0TG9nQ29kZSgKKyAgICBDQ2FsbEhlbHBlcnMmIGppdCwgT3duUHRyPENhbGxFZGdl
UHJvZmlsZT4mIHByb2ZpbGVQb2ludGVyLCBKU1ZhbHVlUmVncyBjYWxsZWVSZWdzKQoreworICAg
IGlmICghaXNFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBwcm9maWxlUG9p
bnRlci5jcmVhdGVUcmFuc2FjdGlvbmFsbHkoKTsKKyAgICBlbWl0TG9nQ29kZShqaXQsICpwcm9m
aWxlUG9pbnRlciwgY2FsbGVlUmVncyk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCit2
b2lkIENhbGxFZGdlTG9nOjpwcm9jZXNzTG9nKCkKK3sKKyAgICBBU1NFUlQoIShtX3NjYWxlZExv
Z0luZGV4ICUgc2l6ZW9mKEVudHJ5KSkpOworICAgIAorICAgIGlmIChPcHRpb25zOjpjYWxsRWRn
ZVByb2ZpbGVSZWFsbHlQcm9jZXNzZXNMb2coKSkgeworICAgICAgICBDYWxsRWRnZVByb2ZpbGVW
ZWN0b3IgbWVyZ2VCYWNrTG9nOworICAgICAgICAKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
bV9zY2FsZWRMb2dJbmRleCAvIHNpemVvZihFbnRyeSk7IGkgPCBsb2dTaXplOyArK2kpCisgICAg
ICAgICAgICBtX2xvZ1tpXS5tX3Byb2ZpbGUtPmFkZChtX2xvZ1tpXS5tX3ZhbHVlLCBtZXJnZUJh
Y2tMb2cpOworICAgICAgICAKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbWVyZ2VCYWNrTG9n
LnNpemUoKTsgaS0tOykKKyAgICAgICAgICAgIG1lcmdlQmFja0xvZ1tpXS0+bWVyZ2VCYWNrKCk7
CisgICAgfQorICAgIAorICAgIG1fc2NhbGVkTG9nSW5kZXggPSBsb2dTaXplICogc2l6ZW9mKEVu
dHJ5KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBDYWxsRWRnZVByb2ZpbGVfaAorI2RlZmluZSBDYWxsRWRn
ZVByb2ZpbGVfaAorCisjaW5jbHVkZSAiQ2FsbEVkZ2UuaCIKKyNpbmNsdWRlICJDYWxsVmFyaWFu
dC5oIgorI2luY2x1ZGUgIkNvbmN1cnJlbnRKSVRMb2NrLmgiCisjaW5jbHVkZSAiSlNDZWxsLmgi
CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQ0Nh
bGxIZWxwZXJzOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCitjbGFzcyBDYWxsRWRn
ZUxvZzsKK2NsYXNzIENhbGxFZGdlUHJvZmlsZTsKK3R5cGVkZWYgVmVjdG9yPENhbGxFZGdlUHJv
ZmlsZSosIDEwPiBDYWxsRWRnZVByb2ZpbGVWZWN0b3I7CisKK2NsYXNzIENhbGxFZGdlUHJvZmls
ZSB7CitwdWJsaWM6CisgICAgQ2FsbEVkZ2VQcm9maWxlKCk7CisgICAgCisgICAgQ2FsbEVkZ2VD
b3VudFR5cGUgbnVtQ2FsbHNUb05vdENlbGwoKSBjb25zdCB7IHJldHVybiBtX251bUNhbGxzVG9O
b3RDZWxsOyB9CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbnVtQ2FsbHNUb1Vua25vd25DZWxsKCkg
Y29uc3QgeyByZXR1cm4gbV9udW1DYWxsc1RvVW5rbm93bkNlbGw7IH0KKyAgICBDYWxsRWRnZUNv
dW50VHlwZSBudW1DYWxsc1RvS25vd25DZWxscygpIGNvbnN0OworICAgIAorICAgIENhbGxFZGdl
Q291bnRUeXBlIHRvdGFsQ2FsbHMoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsQ291bnQ7IH0KKyAg
ICAKKyAgICAvLyBDYWxsIHdoaWxlIGhvbGRpbmcgdGhlIG93bmluZyBDb2RlQmxvY2sncyBsb2Nr
LgorICAgIENhbGxFZGdlTGlzdCBjYWxsRWRnZXMoKSBjb25zdDsKKyAgICAKKyAgICB2b2lkIHZp
c2l0V2VhaygpOworICAgIAorcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQ2FsbEVkZ2VMb2c7
CisgICAgCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heEtub3duQ2FsbGVlcyA9IDU7Cisg
ICAgCisgICAgdm9pZCBhZGQoSlNWYWx1ZSwgQ2FsbEVkZ2VQcm9maWxlVmVjdG9yJiBtZXJnZUJh
Y2tMb2cpOworICAgIAorICAgIGJvb2wgd29ydGhEZXNwZWNpZnlpbmcoKTsKKyAgICB2b2lkIGFk
ZFNsb3coQ2FsbFZhcmlhbnQsIENhbGxFZGdlUHJvZmlsZVZlY3RvciYgbWVyZ2VCYWNrTG9nKTsK
KyAgICB2b2lkIG1lcmdlQmFjaygpOworICAgIHZvaWQgZmFkZUJ5SGFsZigpOworICAgIAorICAg
IC8vIEl0J3MgY2hlYXBlciB0byBsZXQgdGhpcyBoYXZlIGl0cyBvd24gbG9jay4gSXQgbmVlZHMg
dG8gYmUgYWJsZSB0byBmaW5kIHdoaWNoIGxvY2sgdG8KKyAgICAvLyBsb2NrLiBOb3JtYWxseSBp
dCB3b3VsZCBsb2NrIHRoZSBvd25pbmcgQ29kZUJsb2NrJ3MgbG9jaywgYnV0IHRoYXQgd291bGQg
cmVxdWlyZSBhCisgICAgLy8gcG9pbnRlci13aWR0aCB3b3JkIHRvIHBvaW50IGF0IHRoZSBDb2Rl
QmxvY2suIEhhdmluZyB0aGUgYnl0ZS1zaXplZCBsb2NrIGhlcmUgaXMKKyAgICAvLyBjaGVhcGVy
LiBIb3dldmVyLCB0aGlzIG1lYW5zIHRoYXQgdGhlIHJlbGF0aW9uc2hpcCB3aXRoIHRoZSBDb2Rl
QmxvY2sgbG9jayBpczoKKyAgICAvLyBhY3F1aXJlIHRoZSBDb2RlQmxvY2sgbG9jayBiZWZvcmUg
dGhpcyBvbmUuCisgICAgbXV0YWJsZSBDb25jdXJyZW50SklUTG9jayBtX2xvY2s7CisgICAgCisg
ICAgYm9vbCBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQ7CisgICAgCisgICAgQ2FsbEVkZ2VDb3Vu
dFR5cGUgbV9udW1DYWxsc1RvUHJpbWFyeTsKKyAgICBDYWxsRWRnZUNvdW50VHlwZSBtX251bUNh
bGxzVG9Ob3RDZWxsOworICAgIENhbGxFZGdlQ291bnRUeXBlIG1fbnVtQ2FsbHNUb1Vua25vd25D
ZWxsOworICAgIENhbGxFZGdlQ291bnRUeXBlIG1fdG90YWxDb3VudDsKKyAgICBDYWxsVmFyaWFu
dCBtX3ByaW1hcnlDYWxsZWU7CisgICAgCisgICAgdHlwZWRlZiBTcGVjdHJ1bTxDYWxsVmFyaWFu
dCwgQ2FsbEVkZ2VDb3VudFR5cGU+IENhbGxTcGVjdHJ1bTsKKyAgICAKKyAgICBzdHJ1Y3QgU2Vj
b25kYXJ5IHsKKyAgICAgICAgVmVjdG9yPENhbGxFZGdlPiBtX3Byb2Nlc3NlZDsgLy8gUHJvY2Vz
c2VkIGJ1dCBub3QgbmVjZXNzYXJpbHkgc29ydGVkLgorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q2FsbFNwZWN0cnVtPiBtX3RlbXBvcmFyeVNwZWN0cnVtOworICAgIH07CisgICAgCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNlY29uZGFyeT4gbV9vdGhlckNhbGxlZXM7Cit9OworCitjbGFzcyBDYWxs
RWRnZUxvZyB7CitwdWJsaWM6CisgICAgQ2FsbEVkZ2VMb2coKTsKKyAgICB+Q2FsbEVkZ2VMb2co
KTsKKworICAgIHN0YXRpYyBib29sIGlzRW5hYmxlZCgpOworICAgIAorI2lmIEVOQUJMRShKSVQp
CisgICAgdm9pZCBlbWl0TG9nQ29kZShDQ2FsbEhlbHBlcnMmLCBDYWxsRWRnZVByb2ZpbGUmLCBK
U1ZhbHVlUmVncyBjYWxsZWVSZWdzKTsgLy8gQXNzdW1lcyB0aGF0IHN0YWNrIGlzIGFsaWduZWQs
IGFsbCB2b2xhdGlsZSByZWdpc3RlcnMgLSBvdGhlciB0aGFuIGNhbGxlZUdQUiAtIGFyZSBjbG9i
YmVyYWJsZSwgYW5kIHRoZSBwYXJhbWV0ZXIgc3BhY2UgaXMgaW4gdXNlLgorICAgIAorICAgIC8v
IFNhbWUgYXMgYWJvdmUgYnV0IGNyZWF0ZXMgYSBDYWxsRWRnZVByb2ZpbGUgaW5zdGFuY2UgaWYg
b25lIGRpZCBub3QgYWxyZWFkeSBleGlzdC4gRG9lcworICAgIC8vIHRoaXMgaW4gYSB0aHJlYWQt
c2FmZSBtYW5uZXIgYnkgY2FsbGluZyBPd25QdHI6OmNyZWF0ZVRyYW5zYWN0aW9uYWxseS4KKyAg
ICB2b2lkIGVtaXRMb2dDb2RlKENDYWxsSGVscGVycyYsIE93blB0cjxDYWxsRWRnZVByb2ZpbGU+
JiwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncyk7CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKyAgICAK
KyAgICB2b2lkIHByb2Nlc3NMb2coKTsKKyAgICAKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb2dT
aXplID0gMTAwMDA7CisgICAgCisgICAgc3RydWN0IEVudHJ5IHsKKyAgICAgICAgSlNWYWx1ZSBt
X3ZhbHVlOworICAgICAgICBDYWxsRWRnZVByb2ZpbGUqIG1fcHJvZmlsZTsKKyAgICB9OworICAg
IAorICAgIHVuc2lnbmVkIG1fc2NhbGVkTG9nSW5kZXg7CisgICAgRW50cnkgbV9sb2dbbG9nU2l6
ZV07Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIENhbGxFZGdlUHJvZmls
ZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2Zp
bGVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxFZGdlUHJvZmlsZUlubGluZXMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIENhbGxFZGdlUHJvZmlsZUlubGluZXNfaAorI2RlZmluZSBDYWxsRWRn
ZVByb2ZpbGVJbmxpbmVzX2gKKworI2luY2x1ZGUgIkNhbGxFZGdlUHJvZmlsZS5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworaW5saW5lIENhbGxFZGdlUHJvZmlsZTo6Q2FsbEVkZ2VQcm9maWxlKCkK
KyAgICA6IG1fY2xvc3VyZXNBcmVEZXNwZWNpZmllZChmYWxzZSkKKyAgICAsIG1fbnVtQ2FsbHNU
b1ByaW1hcnkoMCkKKyAgICAsIG1fbnVtQ2FsbHNUb05vdENlbGwoMCkKKyAgICAsIG1fbnVtQ2Fs
bHNUb1Vua25vd25DZWxsKDApCisgICAgLCBtX3RvdGFsQ291bnQoMCkKKyAgICAsIG1fcHJpbWFy
eUNhbGxlZShudWxscHRyKQoreworfQorCitBTFdBWVNfSU5MSU5FIHZvaWQgQ2FsbEVkZ2VQcm9m
aWxlOjphZGQoSlNWYWx1ZSB2YWx1ZSwgQ2FsbEVkZ2VQcm9maWxlVmVjdG9yJiBtZXJnZUJhY2tM
b2cpCit7CisgICAgdW5zaWduZWQgbmV3VG90YWxDb3VudCA9IG1fdG90YWxDb3VudCArIDE7Cisg
ICAgaWYgKFVOTElLRUxZKCFuZXdUb3RhbENvdW50KSkgeworICAgICAgICBmYWRlQnlIYWxmKCk7
IC8vIFRhY2tsZSBvdmVyZmxvd3MgYnkgZGl2aWRpbmcgYWxsIGNvdW50cyBieSB0d28uCisgICAg
ICAgIG5ld1RvdGFsQ291bnQgPSBtX3RvdGFsQ291bnQgKyAxOworICAgIH0KKyAgICBBU1NFUlQo
bmV3VG90YWxDb3VudCk7CisgICAgbV90b3RhbENvdW50ID0gbmV3VG90YWxDb3VudDsKKyAgICAK
KyAgICBpZiAoVU5MSUtFTFkoIXZhbHVlLmlzQ2VsbCgpKSkgeworICAgICAgICBtX251bUNhbGxz
VG9Ob3RDZWxsKys7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDYWxsVmFyaWFudCBj
YWxsZWUgPSBDYWxsVmFyaWFudCh2YWx1ZS5hc0NlbGwoKSk7CisgICAgCisgICAgaWYgKG1fY2xv
c3VyZXNBcmVEZXNwZWNpZmllZCkKKyAgICAgICAgY2FsbGVlID0gY2FsbGVlLmRlc3BlY2lmaWVk
Q2xvc3VyZSgpOworICAgIAorICAgIGlmIChVTkxJS0VMWSghbV9wcmltYXJ5Q2FsbGVlKSkgewor
ICAgICAgICBtX3ByaW1hcnlDYWxsZWUgPSBjYWxsZWU7CisgICAgICAgIG1fbnVtQ2FsbHNUb1By
aW1hcnkgPSAxOworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBpZiAoTElL
RUxZKG1fcHJpbWFyeUNhbGxlZSA9PSBjYWxsZWUpKSB7CisgICAgICAgIG1fbnVtQ2FsbHNUb1By
aW1hcnkrKzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAgaWYgKFVOTElL
RUxZKCFtX290aGVyQ2FsbGVlcykpIHsKKyAgICAgICAgYWRkU2xvdyhjYWxsZWUsIG1lcmdlQmFj
a0xvZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAorICAgIENhbGxTcGVjdHJ1
bSogc2Vjb25kYXJ5ID0gbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0uZ2V0KCk7
CisgICAgaWYgKCFzZWNvbmRhcnkpIHsKKyAgICAgICAgYWRkU2xvdyhjYWxsZWUsIG1lcmdlQmFj
a0xvZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAorICAgIHNlY29uZGFyeS0+
YWRkKGNhbGxlZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ2FsbEVk
Z2VQcm9maWxlSW5saW5lc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsTGlua0luZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua0luZm8uY3BwCShyZXZpc2lvbiAxNzI5NjEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODMsNiArODMsMTEgQEAgdm9pZCBDYWxsTGlua0luZm86OnZpc2l0V2VhayhSZXBhdGNoQnVmZgog
ICAgIH0KICAgICBpZiAoISFsYXN0U2VlbkNhbGxlZSAmJiAhSGVhcDo6aXNNYXJrZWQobGFzdFNl
ZW5DYWxsZWUuZ2V0KCkpKQogICAgICAgICBsYXN0U2VlbkNhbGxlZS5jbGVhcigpOworICAgIAor
ICAgIGlmIChjYWxsRWRnZVByb2ZpbGUpIHsKKyAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7
CisgICAgICAgIGNhbGxFZGdlUHJvZmlsZS0+dmlzaXRXZWFrKCk7CisgICAgfQogfQogCiBDYWxs
TGlua0luZm8mIENhbGxMaW5rSW5mbzo6ZHVtbXkoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAkocmV2aXNpb24gMTcyOTYxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIENhbGxMaW5rSW5mb19oCiAjZGVmaW5lIENhbGxM
aW5rSW5mb19oCiAKKyNpbmNsdWRlICJDYWxsRWRnZVByb2ZpbGUuaCIKICNpbmNsdWRlICJDbG9z
dXJlQ2FsbFN0dWJSb3V0aW5lLmgiCiAjaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCiAjaW5jbHVk
ZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgpAQCAtMzMsNiArMzQsNyBAQAogI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJp
ZXIuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlu
a2VkTGlzdC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTg4LDYgKzkwLDcgQEAgc3RydWN0IENh
bGxMaW5rSW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1NlbgogICAgIHVuc2lnbmVkIGNhbGxlZUdQUiA6
IDg7CiAgICAgdW5zaWduZWQgc2xvd1BhdGhDb3VudDsKICAgICBDb2RlT3JpZ2luIGNvZGVPcmln
aW47CisgICAgT3duUHRyPENhbGxFZGdlUHJvZmlsZT4gY2FsbEVkZ2VQcm9maWxlOwogCiAgICAg
Ym9vbCBpc0xpbmtlZCgpIHsgcmV0dXJuIHN0dWIgfHwgY2FsbGVlOyB9CiAgICAgdm9pZCB1bmxp
bmsoUmVwYXRjaEJ1ZmZlciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZpc2lvbiAxNzI5NjEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw1NCArMzIsMjIgQEAKICNpbmNsdWRlICJMTEludENhbGxMaW5rSW5mby5oIgogI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CisjaW5j
bHVkZSA8d3RmL0xpc3REdW1wLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCiBzdGF0aWMgY29uc3Qg
Ym9vbCB2ZXJib3NlID0gZmFsc2U7CiAKIENhbGxMaW5rU3RhdHVzOjpDYWxsTGlua1N0YXR1cyhK
U1ZhbHVlIHZhbHVlKQotICAgIDogbV9jYWxsVGFyZ2V0KHZhbHVlKQotICAgICwgbV9leGVjdXRh
YmxlKDApCi0gICAgLCBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQorICAgIDogbV9jb3VsZFRh
a2VTbG93UGF0aChmYWxzZSkKICAgICAsIG1faXNQcm92ZWQoZmFsc2UpCiB7Ci0gICAgaWYgKCF2
YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkpCisgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxs
KCkpIHsKKyAgICAgICAgbV9jb3VsZFRha2VTbG93UGF0aCA9IHRydWU7CiAgICAgICAgIHJldHVy
bjsKKyAgICB9CiAgICAgCi0gICAgaWYgKCF2YWx1ZS5hc0NlbGwoKS0+aW5oZXJpdHMoSlNGdW5j
dGlvbjo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIG1fZXhlY3V0YWJsZSA9
IGpzQ2FzdDxKU0Z1bmN0aW9uKj4odmFsdWUuYXNDZWxsKCkpLT5leGVjdXRhYmxlKCk7Ci19Ci0K
LUpTRnVuY3Rpb24qIENhbGxMaW5rU3RhdHVzOjpmdW5jdGlvbigpIGNvbnN0Ci17Ci0gICAgaWYg
KCFtX2NhbGxUYXJnZXQgfHwgIW1fY2FsbFRhcmdldC5pc0NlbGwoKSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgCi0gICAgaWYgKCFtX2NhbGxUYXJnZXQuYXNDZWxsKCktPmluaGVyaXRzKEpTRnVu
Y3Rpb246OmluZm8oKSkpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIHJldHVybiBqc0Nh
c3Q8SlNGdW5jdGlvbio+KG1fY2FsbFRhcmdldC5hc0NlbGwoKSk7Ci19Ci0KLUludGVybmFsRnVu
Y3Rpb24qIENhbGxMaW5rU3RhdHVzOjppbnRlcm5hbEZ1bmN0aW9uKCkgY29uc3QKLXsKLSAgICBp
ZiAoIW1fY2FsbFRhcmdldCB8fCAhbV9jYWxsVGFyZ2V0LmlzQ2VsbCgpKQotICAgICAgICByZXR1
cm4gMDsKLSAgICAKLSAgICBpZiAoIW1fY2FsbFRhcmdldC5hc0NlbGwoKS0+aW5oZXJpdHMoSW50
ZXJuYWxGdW5jdGlvbjo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgcmV0
dXJuIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4obV9jYWxsVGFyZ2V0LmFzQ2VsbCgpKTsKLX0K
LQotSW50cmluc2ljIENhbGxMaW5rU3RhdHVzOjppbnRyaW5zaWNGb3IoQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kKSBjb25zdAotewotICAgIGlmICghbV9leGVjdXRhYmxlKQotICAgICAgICBy
ZXR1cm4gTm9JbnRyaW5zaWM7Ci0gICAgCi0gICAgcmV0dXJuIG1fZXhlY3V0YWJsZS0+aW50cmlu
c2ljRm9yKGtpbmQpOworICAgIG1fZWRnZXMuYXBwZW5kKENhbGxFZGdlKENhbGxWYXJpYW50KHZh
bHVlLmFzQ2VsbCgpKSwgMSkpOwogfQogCiBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6
Y29tcHV0ZUZyb21MTEludChjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiBsb2NrZXIsIENvZGVC
bG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKQEAgLTg3LDcgKzU1
LDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcgogICAgIFVOVVNF
RF9QQVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7
CiAjaWYgRU5BQkxFKERGR19KSVQpCi0gICAgaWYgKHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRl
KGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZEZ1bmN0aW9u
KSkpIHsKKyAgICBpZiAocHJvZmlsZWRCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZy
ZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkQ2VsbCkpKSB7CiAgICAgICAgIC8vIFdl
IGNvdWxkIGZvcmNlIHRoaXMgdG8gYmUgYSBjbG9zdXJlIGNhbGwsIGJ1dCBpbnN0ZWFkIHdlJ2xs
IGp1c3QgYXNzdW1lIHRoYXQgaXQKICAgICAgICAgLy8gdGFrZXMgc2xvdyBwYXRoLgogICAgICAg
ICByZXR1cm4gdGFrZXNTbG93UGF0aCgpOwpAQCAtMTI1LDcgKzkzLDcgQEAgQ2FsbExpbmtTdGF0
dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGbwogICAgIGlmICghY2FsbExpbmtJbmZvKQogICAg
ICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChsb2NrZXIsIHByb2ZpbGVkQmxvY2ssIGJ5dGVj
b2RlSW5kZXgpOwogICAgIAotICAgIHJldHVybiBjb21wdXRlRm9yKGxvY2tlciwgKmNhbGxMaW5r
SW5mbywgZXhpdFNpdGVEYXRhKTsKKyAgICByZXR1cm4gY29tcHV0ZUZvcihsb2NrZXIsIHByb2Zp
bGVkQmxvY2ssICpjYWxsTGlua0luZm8sIGV4aXRTaXRlRGF0YSk7CiAjZWxzZQogICAgIHJldHVy
biBDYWxsTGlua1N0YXR1cygpOwogI2VuZGlmCkBAIC0xMzksMTAgKzEwNywxMCBAQCBDYWxsTGlu
a1N0YXR1czo6RXhpdFNpdGVEYXRhIENhbGxMaW5rU3RhCiAgICAgCiAjaWYgRU5BQkxFKERGR19K
SVQpCiAgICAgZXhpdFNpdGVEYXRhLm1fdGFrZXNTbG93UGF0aCA9Ci0gICAgICAgIHByb2ZpbGVk
QmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2Rl
SW5kZXgsIEJhZENhY2hlLCBleGl0aW5nSklUVHlwZSkpCisgICAgICAgIHByb2ZpbGVkQmxvY2st
Pmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgs
IEJhZFR5cGUsIGV4aXRpbmdKSVRUeXBlKSkKICAgICAgICAgfHwgcHJvZmlsZWRCbG9jay0+aGFz
RXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFk
RXhlY3V0YWJsZSwgZXhpdGluZ0pJVFR5cGUpKTsKICAgICBleGl0U2l0ZURhdGEubV9iYWRGdW5j
dGlvbiA9Ci0gICAgICAgIHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpG
cmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZEZ1bmN0aW9uLCBleGl0aW5nSklUVHlw
ZSkpOworICAgICAgICBwcm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJl
cXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDZWxsLCBleGl0aW5nSklUVHlwZSkpOwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0obG9ja2VyKTsKICAgICBVTlVTRURfUEFSQU0ocHJvZmls
ZWRCbG9jayk7CkBAIC0xNTQsNyArMTIyLDM0IEBAIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURh
dGEgQ2FsbExpbmtTdGEKIH0KIAogI2lmIEVOQUJMRShKSVQpCi1DYWxsTGlua1N0YXR1cyBDYWxs
TGlua1N0YXR1czo6Y29tcHV0ZUZvcihjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgQ2FsbExp
bmtJbmZvJiBjYWxsTGlua0luZm8pCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29t
cHV0ZUZvcigKKyAgICBjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9j
ayogcHJvZmlsZWRCbG9jaywgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pCit7CisgICAgLy8g
V2UgZG9uJ3QgcmVhbGx5IG5lZWQgdGhpcywgYnV0IGFueXRpbWUgd2UgaGF2ZSB0byBkZWJ1ZyB0
aGlzIGNvZGUsIGl0IGJlY29tZXMgaW5kaXNwZW5zYWJsZS4KKyAgICBVTlVTRURfUEFSQU0ocHJv
ZmlsZWRCbG9jayk7CisgICAgCisgICAgaWYgKE9wdGlvbnM6OmNhbGxTdGF0dXNTaG91bGRVc2VD
YWxsRWRnZVByb2ZpbGUoKSkgeworICAgICAgICAvLyBBbHdheXMgdHJ1c3QgdGhlIGNhbGwgZWRn
ZSBwcm9maWxlIG92ZXIgYW55dGhpbmcgZWxzZSBzaW5jZSB0aGlzIGhhcyBwcmVjaXNlIGNvdW50
cy4KKyAgICAgICAgLy8gSXQgY2FuIG1ha2UgdGhlIGJlc3QgcG9zc2libGUgZGVjaXNpb24gYmVj
YXVzZSBpdCBuZXZlciAiZm9yZ2V0cyIgd2hhdCBoYXBwZW5lZCBmb3IgYW55CisgICAgICAgIC8v
IGNhbGwsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBmYWRpbmcgb3V0IHRoZSBjb3VudHMgb2Ygb2xk
IGNhbGxzIChmb3IgZXhhbXBsZSBpZiB0aGUKKyAgICAgICAgLy8gY291bnRlciB0eXBlIGlzIDE2
LWJpdCB0aGVuIGNhbGxzIHRoYXQgaGFwcGVuZWQgbW9yZSB0aGFuIDJeMTYgY2FsbHMgYWdvIGFy
ZSBnaXZlbiBoYWxmCisgICAgICAgIC8vIHdlaWdodCwgYW5kIHRoaXMgY29tcG91bmRzIGZvciBl
dmVyeSAyXjE1IFtzaWNdIGNhbGxzIGFmdGVyIHRoYXQpLiBUaGUgY29tYmluYXRpb24gb2YKKyAg
ICAgICAgLy8gaGlnaCBmaWRlbGl0eSBmb3IgcmVjZW50IGNhbGxzIGFuZCBmYWRpbmcgZm9yIG9s
ZGVyIGNhbGxzIG1ha2VzIHRoaXMgdGhlIG1vc3QgdXNlZnVsCisgICAgICAgIC8vIG1lY2hhbWlz
bSBvZiBjaG9vc2luZyBob3cgdG8gb3B0aW1pemUgZnV0dXJlIGNhbGxzLgorICAgICAgICBDYWxs
RWRnZVByb2ZpbGUqIGVkZ2VQcm9maWxlID0gY2FsbExpbmtJbmZvLmNhbGxFZGdlUHJvZmlsZS5n
ZXQoKTsKKyAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CisgICAgICAgIGlmIChlZGdlUHJv
ZmlsZSkgeworICAgICAgICAgICAgQ2FsbExpbmtTdGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZyb21D
YWxsRWRnZVByb2ZpbGUoZWRnZVByb2ZpbGUpOworICAgICAgICAgICAgaWYgKCEhcmVzdWx0KQor
ICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICB9CisgICAgCisg
ICAgcmV0dXJuIGNvbXB1dGVGcm9tQ2FsbExpbmtJbmZvKGxvY2tlciwgY2FsbExpbmtJbmZvKTsK
K30KKworQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tQ2FsbExpbmtJ
bmZvKAorICAgIGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBDYWxsTGlua0luZm8mIGNhbGxM
aW5rSW5mbykKIHsKICAgICAvLyBOb3RlIHRoYXQgZGVzcGl0ZSByZXF1aXJpbmcgdGhhdCB0aGUg
bG9ja2VyIGlzIGhlbGQsIHRoaXMgY29kZSBpcyByYWN5IHdpdGggcmVzcGVjdAogICAgIC8vIHRv
IHRoZSBDYWxsTGlua0luZm86IGl0IG1heSBnZXQgY2xlYXJlZCB3aGlsZSB0aGlzIGNvZGUgcnVu
cyEgVGhpcyBpcyBiZWNhdXNlCkBAIC0xNzcsNyArMTcyLDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2Fs
bExpbmtTdGF0dXM6OmNvbXB1dGVGbwogICAgIAogICAgIEpTRnVuY3Rpb24qIHRhcmdldCA9IGNh
bGxMaW5rSW5mby5sYXN0U2VlbkNhbGxlZS5nZXQoKTsKICAgICBpZiAoIXRhcmdldCkKLSAgICAg
ICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKCk7CisgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRo
KCk7CiAgICAgCiAgICAgaWYgKGNhbGxMaW5rSW5mby5oYXNTZWVuQ2xvc3VyZSkKICAgICAgICAg
cmV0dXJuIENhbGxMaW5rU3RhdHVzKHRhcmdldC0+ZXhlY3V0YWJsZSgpKTsKQEAgLTE4NSwxNSAr
MTgwLDQzIEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICAgICBy
ZXR1cm4gQ2FsbExpbmtTdGF0dXModGFyZ2V0KTsKIH0KIAotQ2FsbExpbmtTdGF0dXMgQ2FsbExp
bmtTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9j
a2VyLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0
YSkKK0NhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUNhbGxFZGdlUHJv
ZmlsZShDYWxsRWRnZVByb2ZpbGUqIGVkZ2VQcm9maWxlKQogewotICAgIGlmIChleGl0U2l0ZURh
dGEubV90YWtlc1Nsb3dQYXRoKQorICAgIC8vIEluIGNhc2VzIHdoZXJlIHRoZSBjYWxsIGVkZ2Ug
cHJvZmlsZSBzYXcgbm90aGluZywgdXNlIHRoZSBDYWxsTGlua0luZm8gaW5zdGVhZC4KKyAgICBp
ZiAoIWVkZ2VQcm9maWxlLT50b3RhbENhbGxzKCkpCisgICAgICAgIHJldHVybiBDYWxsTGlua1N0
YXR1cygpOworICAgIAorICAgIC8vIFRvIGRvIGFueXRoaW5nIG1lYW5pbmdmdWwsIHdlIHJlcXVp
cmUgdGhhdCB0aGUgbWFqb3JpdHkgb2YgY2FsbHMgYXJlIHRvIHNvbWV0aGluZyB3ZQorICAgIC8v
IGtub3cgaG93IHRvIGhhbmRsZS4KKyAgICB1bnNpZ25lZCBudW1DYWxsc1RvS25vd24gPSBlZGdl
UHJvZmlsZS0+bnVtQ2FsbHNUb0tub3duQ2VsbHMoKTsKKyAgICB1bnNpZ25lZCBudW1DYWxsc1Rv
VW5rbm93biA9IGVkZ2VQcm9maWxlLT5udW1DYWxsc1RvTm90Q2VsbCgpICsgZWRnZVByb2ZpbGUt
Pm51bUNhbGxzVG9Vbmtub3duQ2VsbCgpOworICAgIAorICAgIC8vIFdlIHJlcXVpcmUgdGhhdCB0
aGUgbWFqb3JpdHkgb2YgY2FsbHMgd2VyZSB0byBzb21ldGhpbmcgdGhhdCB3ZSBjb3VsZCBwb3Nz
aWJseSBpbmxpbmUuCisgICAgaWYgKG51bUNhbGxzVG9Lbm93biA8PSBudW1DYWxsc1RvVW5rbm93
bikKKyAgICAgICAgcmV0dXJuIHRha2VzU2xvd1BhdGgoKTsKKyAgICAKKyAgICAvLyBXZSByZXF1
aXJlIHRoYXQgdGhlIG51bWJlciBvZiBzdWNoIGNhbGxzIGlzIGdyZWF0ZXIgdGhhbiBzb21lIG1p
bmltYWwgdGhyZXNob2xkLCBzbyB0aGF0IHdlCisgICAgLy8gYXZvaWQgaW5saW5pbmcgY29tcGxl
dGVseSBjb2xkIGNhbGxzLgorICAgIGlmIChudW1DYWxsc1RvS25vd24gPCBPcHRpb25zOjpmcmVx
dWVudENhbGxUaHJlc2hvbGQoKSkKICAgICAgICAgcmV0dXJuIHRha2VzU2xvd1BhdGgoKTsKICAg
ICAKLSAgICBDYWxsTGlua1N0YXR1cyByZXN1bHQgPSBjb21wdXRlRm9yKGxvY2tlciwgY2FsbExp
bmtJbmZvKTsKKyAgICBDYWxsTGlua1N0YXR1cyByZXN1bHQ7CisgICAgcmVzdWx0Lm1fZWRnZXMg
PSBlZGdlUHJvZmlsZS0+Y2FsbEVkZ2VzKCk7CisgICAgcmVzdWx0Lm1fY291bGRUYWtlU2xvd1Bh
dGggPSAhIW51bUNhbGxzVG9Vbmtub3duOworICAgIHJlc3VsdC5tX2NhblRydXN0Q291bnRzID0g
dHJ1ZTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitDYWxsTGlua1N0YXR1cyBDYWxs
TGlua1N0YXR1czo6Y29tcHV0ZUZvcigKKyAgICBjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiBs
b2NrZXIsIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0lu
Zm8sCisgICAgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSkKK3sKKyAgICBDYWxsTGlua1N0YXR1
cyByZXN1bHQgPSBjb21wdXRlRm9yKGxvY2tlciwgcHJvZmlsZWRCbG9jaywgY2FsbExpbmtJbmZv
KTsKICAgICBpZiAoZXhpdFNpdGVEYXRhLm1fYmFkRnVuY3Rpb24pCiAgICAgICAgIHJlc3VsdC5t
YWtlQ2xvc3VyZUNhbGwoKTsKKyAgICBpZiAoZXhpdFNpdGVEYXRhLm1fdGFrZXNTbG93UGF0aCkK
KyAgICAgICAgcmVzdWx0Lm1fY291bGRUYWtlU2xvd1BhdGggPSB0cnVlOwogICAgIAogICAgIHJl
dHVybiByZXN1bHQ7CiB9CkBAIC0yMjcsNyArMjUwLDcgQEAgdm9pZCBDYWxsTGlua1N0YXR1czo6
Y29tcHV0ZURGR1N0YXR1c2VzKAogICAgICAgICAKICAgICAgICAgewogICAgICAgICAgICAgQ29u
Y3VycmVudEpJVExvY2tlciBsb2NrZXIoZGZnQ29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAg
ICAgbWFwLmFkZChpbmZvLmNvZGVPcmlnaW4sIGNvbXB1dGVGb3IobG9ja2VyLCBpbmZvLCBleGl0
U2l0ZURhdGEpKTsKKyAgICAgICAgICAgIG1hcC5hZGQoaW5mby5jb2RlT3JpZ2luLCBjb21wdXRl
Rm9yKGxvY2tlciwgZGZnQ29kZUJsb2NrLCBpbmZvLCBleGl0U2l0ZURhdGEpKTsKICAgICAgICAg
fQogICAgIH0KICNlbHNlCkBAIC0yNTYsNiArMjc5LDMxIEBAIENhbGxMaW5rU3RhdHVzIENhbGxM
aW5rU3RhdHVzOjpjb21wdXRlRm8KICAgICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJsb2Nr
LCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIGJhc2VsaW5lTWFwKTsKIH0KIAorYm9vbCBDYWxs
TGlua1N0YXR1czo6aXNDbG9zdXJlQ2FsbCgpIGNvbnN0Cit7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gbV9lZGdlcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgaWYgKG1fZWRnZXNbaV0uY2FsbGVl
KCkuaXNDbG9zdXJlQ2FsbCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDYWxsTGlua1N0YXR1czo6bWFrZUNsb3N1cmVDYWxs
KCkKK3sKKyAgICBBU1NFUlQoIW1faXNQcm92ZWQpOworICAgIGZvciAodW5zaWduZWQgaSA9IG1f
ZWRnZXMuc2l6ZSgpOyBpLS07KQorICAgICAgICBtX2VkZ2VzW2ldID0gbV9lZGdlc1tpXS5kZXNw
ZWNpZmllZENsb3N1cmUoKTsKKyAgICAKKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAg
ICAgICAvLyBEb2luZyB0aGlzIHNob3VsZCBub3QgaGF2ZSBjcmVhdGVkIGR1cGxpY2F0ZXMsIGJl
Y2F1c2UgdGhlIENhbGxFZGdlUHJvZmlsZQorICAgICAgICAvLyBzaG91bGQgZGVzcGVjaWZ5IGNs
b3N1cmVzIGlmIGRvaW5nIHNvIHdvdWxkIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGtub3duIGNhbGxl
ZXMuCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2VkZ2VzLnNpemUoKTsgKytp
KSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSBpICsgMTsgaiA8IG1fZWRnZXMuc2l6
ZSgpOyArK2opCisgICAgICAgICAgICAgICAgQVNTRVJUKG1fZWRnZXNbaV0uY2FsbGVlKCkgIT0g
bV9lZGdlc1tqXS5jYWxsZWUoKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgQ2FsbExp
bmtTdGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBpZiAoIWlzU2V0
KCkpIHsKQEAgLTI3MSwxNCArMzE5LDcgQEAgdm9pZCBDYWxsTGlua1N0YXR1czo6ZHVtcChQcmlu
dFN0cmVhbSYgbwogICAgIGlmIChtX2NvdWxkVGFrZVNsb3dQYXRoKQogICAgICAgICBvdXQucHJp
bnQoY29tbWEsICJDb3VsZCBUYWtlIFNsb3cgUGF0aCIpOwogICAgIAotICAgIGlmIChtX2NhbGxU
YXJnZXQpCi0gICAgICAgIG91dC5wcmludChjb21tYSwgIktub3duIHRhcmdldDogIiwgbV9jYWxs
VGFyZ2V0KTsKLSAgICAKLSAgICBpZiAobV9leGVjdXRhYmxlKSB7Ci0gICAgICAgIG91dC5wcmlu
dChjb21tYSwgIkV4ZWN1dGFibGUvQ2FsbEhhc2g6ICIsIFJhd1BvaW50ZXIobV9leGVjdXRhYmxl
KSk7Ci0gICAgICAgIGlmICghaXNDb21waWxhdGlvblRocmVhZCgpKQotICAgICAgICAgICAgb3V0
LnByaW50KCIvIiwgbV9leGVjdXRhYmxlLT5oYXNoRm9yKENvZGVGb3JDYWxsKSk7Ci0gICAgfQor
ICAgIG91dC5wcmludChsaXN0RHVtcChtX2VkZ2VzKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3Rh
dHVzLmgJKHJldmlzaW9uIDE3Mjk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsTGlua1N0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw5ICs0Niw5IEBAIHN0cnVj
dCBDYWxsTGlua0luZm87CiBjbGFzcyBDYWxsTGlua1N0YXR1cyB7CiBwdWJsaWM6CiAgICAgQ2Fs
bExpbmtTdGF0dXMoKQotICAgICAgICA6IG1fZXhlY3V0YWJsZSgwKQotICAgICAgICAsIG1fY291
bGRUYWtlU2xvd1BhdGgoZmFsc2UpCisgICAgICAgIDogbV9jb3VsZFRha2VTbG93UGF0aChmYWxz
ZSkKICAgICAgICAgLCBtX2lzUHJvdmVkKGZhbHNlKQorICAgICAgICAsIG1fY2FuVHJ1c3RDb3Vu
dHMoZmFsc2UpCiAgICAgewogICAgIH0KICAgICAKQEAgLTYxLDEwICs2MSwxMSBAQCBwdWJsaWM6
CiAgICAgCiAgICAgZXhwbGljaXQgQ2FsbExpbmtTdGF0dXMoSlNWYWx1ZSk7CiAgICAgCi0gICAg
Q2FsbExpbmtTdGF0dXMoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUpCi0gICAgICAgIDogbV9l
eGVjdXRhYmxlKGV4ZWN1dGFibGUpCisgICAgQ2FsbExpbmtTdGF0dXMoQ2FsbFZhcmlhbnQgdmFy
aWFudCkKKyAgICAgICAgOiBtX2VkZ2VzKDEsIENhbGxFZGdlKHZhcmlhbnQsIDEpKQogICAgICAg
ICAsIG1fY291bGRUYWtlU2xvd1BhdGgoZmFsc2UpCiAgICAgICAgICwgbV9pc1Byb3ZlZChmYWxz
ZSkKKyAgICAgICAgLCBtX2NhblRydXN0Q291bnRzKGZhbHNlKQogICAgIHsKICAgICB9CiAgICAg
CkBAIC05Miw4ICs5Myw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIENvbXB1
dGVzIHRoZSBzdGF0dXMgYXNzdW1pbmcgdGhhdCB3ZSBuZXZlciB0b29rIHNsb3cgcGF0aCBhbmQg
bmV2ZXIgcHJldmlvdXNseQogICAgIC8vIGV4aXRlZC4KLSAgICBzdGF0aWMgQ2FsbExpbmtTdGF0
dXMgY29tcHV0ZUZvcihjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgQ2FsbExpbmtJbmZvJik7
Ci0gICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoY29uc3QgQ29uY3VycmVudEpJ
VExvY2tlciYsIENhbGxMaW5rSW5mbyYsIEV4aXRTaXRlRGF0YSk7CisgICAgc3RhdGljIENhbGxM
aW5rU3RhdHVzIGNvbXB1dGVGb3IoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENvZGVCbG9j
ayosIENhbGxMaW5rSW5mbyYpOworICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9y
KAorICAgICAgICBjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgQ29kZUJsb2NrKiwgQ2FsbExp
bmtJbmZvJiwgRXhpdFNpdGVEYXRhKTsKICNlbmRpZgogICAgIAogICAgIHR5cGVkZWYgSGFzaE1h
cDxDb2RlT3JpZ2luLCBDYWxsTGlua1N0YXR1cywgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4g
Q29udGV4dE1hcDsKQEAgLTEwNywzNyArMTA5LDM4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ2Fs
bExpbmtTdGF0dXMgY29tcHV0ZUZvcigKICAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwg
Y29uc3QgQ2FsbExpbmtJbmZvTWFwJiwgY29uc3QgQ29udGV4dE1hcCYpOwogICAgIAotICAgIGJv
b2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxUYXJnZXQgfHwgbV9leGVjdXRhYmxlIHx8
IG1fY291bGRUYWtlU2xvd1BhdGg7IH0KKyAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4g
IW1fZWRnZXMuaXNFbXB0eSgpIHx8IG1fY291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKICAgICBi
b29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFpc1NldCgpOyB9CiAgICAgCiAgICAgYm9v
bCBjb3VsZFRha2VTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bGRUYWtlU2xvd1BhdGg7
IH0KLSAgICBib29sIGlzQ2xvc3VyZUNhbGwoKSBjb25zdCB7IHJldHVybiBtX2V4ZWN1dGFibGUg
JiYgIW1fY2FsbFRhcmdldDsgfQogICAgIAotICAgIEpTVmFsdWUgY2FsbFRhcmdldCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FsbFRhcmdldDsgfQotICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uKCkgY29u
c3Q7Ci0gICAgSW50ZXJuYWxGdW5jdGlvbiogaW50ZXJuYWxGdW5jdGlvbigpIGNvbnN0OwotICAg
IEludHJpbnNpYyBpbnRyaW5zaWNGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCkgY29uc3Q7Ci0g
ICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtX2V4ZWN1dGFi
bGU7IH0KKyAgICBDYWxsRWRnZUxpc3QgZWRnZXMoKSBjb25zdCB7IHJldHVybiBtX2VkZ2VzOyB9
CisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWRnZXMuc2l6ZSgpOyB9Cisg
ICAgQ2FsbEVkZ2UgYXQodW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV9lZGdlc1tpXTsgfQor
ICAgIENhbGxFZGdlIG9wZXJhdG9yW10odW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7
IH0KICAgICBib29sIGlzUHJvdmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1Byb3ZlZDsgfQotICAg
IGJvb2wgY2FuT3B0aW1pemUoKSBjb25zdCB7IHJldHVybiAobV9jYWxsVGFyZ2V0IHx8IG1fZXhl
Y3V0YWJsZSkgJiYgIW1fY291bGRUYWtlU2xvd1BhdGg7IH0KKyAgICBib29sIGNhbk9wdGltaXpl
KCkgY29uc3QgeyByZXR1cm4gIW1fZWRnZXMuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBjYW5UcnVz
dENvdW50cygpIGNvbnN0IHsgcmV0dXJuIG1fY2FuVHJ1c3RDb3VudHM7IH0KKyAgICAKKyAgICBi
b29sIGlzQ2xvc3VyZUNhbGwoKSBjb25zdDsgLy8gUmV0dXJucyB0cnVlIGlmIGFueSBjYWxsZWUg
aXMgYSBjbG9zdXJlIGNhbGwuCiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29u
c3Q7CiAgICAgCiBwcml2YXRlOgotICAgIHZvaWQgbWFrZUNsb3N1cmVDYWxsKCkKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVCghbV9pc1Byb3ZlZCk7Ci0gICAgICAgIC8vIFR1cm4gdGhpcyBpbnRvIGEg
Y2xvc3VyZSBjYWxsLgotICAgICAgICBtX2NhbGxUYXJnZXQgPSBKU1ZhbHVlKCk7Ci0gICAgfQor
ICAgIHZvaWQgbWFrZUNsb3N1cmVDYWxsKCk7CiAgICAgCiAgICAgc3RhdGljIENhbGxMaW5rU3Rh
dHVzIGNvbXB1dGVGcm9tTExJbnQoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENvZGVCbG9j
ayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworI2lmIEVOQUJMRShKSVQpCisgICAgc3RhdGlj
IENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGcm9tQ2FsbEVkZ2VQcm9maWxlKENhbGxFZGdlUHJvZmls
ZSopOworICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRnJvbUNhbGxMaW5rSW5mbygK
KyAgICAgICAgY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENhbGxMaW5rSW5mbyYpOworI2Vu
ZGlmCiAgICAgCi0gICAgSlNWYWx1ZSBtX2NhbGxUYXJnZXQ7Ci0gICAgRXhlY3V0YWJsZUJhc2Uq
IG1fZXhlY3V0YWJsZTsKKyAgICBDYWxsRWRnZUxpc3QgbV9lZGdlczsKICAgICBib29sIG1fY291
bGRUYWtlU2xvd1BhdGg7CiAgICAgYm9vbCBtX2lzUHJvdmVkOworICAgIGJvb2wgbV9jYW5UcnVz
dENvdW50czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDYWxsVmFyaWFudC5oIgor
CisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBDYWxs
VmFyaWFudDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIGlmICghKnRoaXMp
IHsKKyAgICAgICAgb3V0LnByaW50KCJudWxsIik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgCisgICAgaWYgKEludGVybmFsRnVuY3Rpb24qIGludGVybmFsRnVuY3Rpb24gPSB0aGlzLT5p
bnRlcm5hbEZ1bmN0aW9uKCkpIHsKKyAgICAgICAgb3V0LnByaW50KCJJbnRlcm5hbEZ1bmN0aW9u
OiAiLCBKU1ZhbHVlKGludGVybmFsRnVuY3Rpb24pKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAKKyAgICBpZiAoSlNGdW5jdGlvbiogZnVuY3Rpb24gPSB0aGlzLT5mdW5jdGlvbigpKSB7
CisgICAgICAgIG91dC5wcmludCgiKEZ1bmN0aW9uOiAiLCBKU1ZhbHVlKGZ1bmN0aW9uKSwgIjsg
RXhlY3V0YWJsZTogIiwgKmV4ZWN1dGFibGUoKSwgIikiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICAKKyAgICBvdXQucHJpbnQoIkV4ZWN1dGFibGU6ICIsICpleGVjdXRhYmxlKCkpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxWYXJpYW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIENhbGxWYXJpYW50X2gKKyNkZWZpbmUgQ2FsbFZhcmlhbnRfaAorCisjaW5jbHVkZSAiRXhl
Y3V0YWJsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKKy8vIFRoZSBDYWxsVmFyaWFudCBjbGFzcyBpcyBtZWFudCB0
byBlbmNhcHN1bGF0ZSBhIGNhbGxlZSBpbiBhIHdheSB0aGF0IGlzIHVzZWZ1bCBmb3IgY2FsbCBs
aW5raW5nCisvLyBhbmQgaW5saW5pbmcuIEJlY2F1c2UgSmF2YVNjcmlwdCBoYXMgY2xvc3VyZXMs
IGFuZCBiZWNhdXNlIEpTQyBpbXBsZW1lbnRzIHRoZSBub3Rpb24gb2YgaW50ZXJuYWwKKy8vIG5v
bi1mdW5jdGlvbiBvYmplY3RzIHRoYXQgbmV2ZXJ0aGVsZXNzIHByb3ZpZGUgY2FsbCB0cmFwcywg
dGhlIGNhbGwgbWFjaGluZXJ5IHdhbnRzIHRvIHNlZSBhCisvLyBjYWxsZWUgaW4gb25lIG9mIHRo
ZSBmb2xsb3dpbmcgZm91ciBmb3JtczoKKy8vCisvLyBKU0Z1bmN0aW9uIGNhbGxlZTogVGhpcyBt
ZWFucyB0aGF0IHdlIGV4cGVjdCB0aGUgY2FsbHNpdGUgdG8gYWx3YXlzIGNhbGwgYSBwYXJ0aWN1
bGFyIGZ1bmN0aW9uCisvLyAgICAgaW5zdGFuY2UsIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIGEg
cGFydGljdWxhciBhY3RpdmF0aW9uLiBUaGlzIHBpbnBvaW50cyBub3QganVzdCB0aGUgY29kZQor
Ly8gICAgIHRoYXQgd2lsbCBiZSBjYWxsZWQgKGkuZS4gdGhlIGV4ZWN1dGFibGUpIGJ1dCBhbHNv
IHRoZSBzY29wZSB3aXRoaW4gd2hpY2ggdGhlIGNvZGUgcnVucy4KKy8vCisvLyBFeGVjdXRhYmxl
IGNhbGxlZTogVGhpcyBjb3JyZXNwb25kcyB0byBhIGNhbGwgdG8gYSBjbG9zdXJlLiBJbiB0aGlz
IGNhc2UsIHdlIGtub3cgdGhhdCB0aGUKKy8vICAgICBjYWxsc2l0ZSB3aWxsIGNhbGwgYSBKU0Z1
bmN0aW9uLCBidXQgd2UgZG8gbm90IGtub3cgd2hpY2ggcGFydGljdWxhciBKU0Z1bmN0aW9uLiBX
ZSBkbyBrbm93CisvLyAgICAgd2hhdCBjb2RlIHdpbGwgYmUgY2FsbGVkIC0gaS5lLiB3ZSBrbm93
IHRoZSBleGVjdXRhYmxlLgorLy8KKy8vIEludGVybmFsRnVuY3Rpb24gY2FsbGVlOiBKU0Mgc3Vw
cG9ydHMgYSBzcGVjaWFsIGtpbmQgb2YgbmF0aXZlIGZ1bmN0aW9ucyB0aGF0IHN1cHBvcnQgYml6
YXJyZQorLy8gICAgIHNlbWFudGljcy4gVGhlc2UgYXJlIGFsd2F5cyBzaW5nbGV0b25zLiBJZiB3
ZSBrbm93IHRoYXQgdGhlIGNhbGxlZSBpcyBhbiBJbnRlcm5hbEZ1bmN0aW9uCisvLyAgICAgdGhl
biB3ZSBrbm93IGJvdGggdGhlIGNvZGUgdGhhdCB3aWxsIGJlIGNhbGxlZCBhbmQgdGhlIHNjb3Bl
OyBpbiBmYWN0IHRoZSAic2NvcGUiIGlzIHJlYWxseQorLy8gICAgIGp1c3QgdGhlIEludGVybmFs
RnVuY3Rpb24gaXRzZWxmLgorLy8KKy8vIFNvbWV0aGluZyBlbHNlOiBJdCdzIHBvc3NpYmxlIGNh
bGwgYWxsIG1hbm5lciBvZiBydWJiaXNoIGluIEphdmFTY3JpcHQuIFRoaXMgaW1wbGljaXRseSBz
dXBwb3J0cworLy8gICAgIGJpemFycmUgb2JqZWN0IGNhbGxlZXMsIGJ1dCBpdCBjYW4ndCByZWFs
bHkgdGVsbCB5b3UgYW55dGhpbmcgaW50ZXJlc3RpbmcgYWJvdXQgdGhlbSBvdGhlcgorLy8gICAg
IHRoYW4gdGhlIGZhY3QgdGhhdCB0aGV5IGRvbid0IGZhbGwgaW50byBhbnkgb2YgdGhlIGFib3Zl
IGNhdGVnb3JpZXMuCisvLworLy8gVGhpcyBjbGFzcyBzZXJ2ZXMgYXMgYSBraW5kIG9mIHVuaW9u
IG92ZXIgdGhlc2UgZm91ciB0aGluZ3MuIEl0IGRvZXMgc28gYnkganVzdCBob2xkaW5nIGEKKy8v
IEpTQ2VsbCouIFdlIGRldGVybWluZSB3aGljaCBvZiB0aGUgbW9kZXMgaXRzIGluIGJ5IGRvaW5n
IHR5cGUgY2hlY2tzIG9uIHRoZSBjZWxsLiBOb3RlIHRoYXQgdGhlcmUKKy8vIGlzIG5vIGxpZmVj
eWNsZSBtYW5hZ2VtZW50IGZvciB0aGUgY2VsbCBiZWNhdXNlIHRoaXMgY2xhc3MgaXMgYWx3YXlz
IHVzZWQgaW4gY29udGV4dHMgd2hlcmUgd2UKKy8vIGVpdGhlciBkbyBjdXN0b20gd2VhayByZWZl
cmVuY2UgbG9naWMgb3ZlciBpbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyAoc2VlIENhbGxFZGdlUHJv
ZmlsZSksIG9yIHdlCisvLyBhcmUgaW5zaWRlIHRoZSBjb21waWxlciBhbmQgd2UgYXNzdW1lIHRo
YXQgdGhlIGNvbXBpbGVyIHJ1bnMgaW4gYmV0d2VlbiBjb2xsZWN0aW9ucyBhbmQgc28gY2FuCisv
LyB0b3VjaCB0aGUgaGVhcCB3aXRob3V0IG5vdGlmeWluZyBhbnlvbmUuCisKK2NsYXNzIENhbGxW
YXJpYW50IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBDYWxsVmFyaWFudChKU0NlbGwqIGNhbGxl
ZSA9IG51bGxwdHIpCisgICAgICAgIDogbV9jYWxsZWUoY2FsbGVlKQorICAgIHsKKyAgICB9Cisg
ICAgCisgICAgQ2FsbFZhcmlhbnQoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQorICAg
ICAgICA6IG1fY2FsbGVlKGRlbGV0ZWRUb2tlbigpKQorICAgIHsKKyAgICB9CisgICAgCisgICAg
Ym9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7IH0KKyAgICAKKyAgICAv
LyBJZiB0aGlzIHZhcmlhbnQgcmVmZXJzIHRvIGEgZnVuY3Rpb24sIGNoYW5nZSBpdCB0byByZWZl
ciB0byBpdHMgZXhlY3V0YWJsZS4KKyAgICBBTFdBWVNfSU5MSU5FIENhbGxWYXJpYW50IGRlc3Bl
Y2lmaWVkQ2xvc3VyZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9jYWxsZWUtPnR5cGUo
KSA9PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICAgICAgICAgIHJldHVybiBDYWxsVmFyaWFudChqc0Nh
c3Q8SlNGdW5jdGlvbio+KG1fY2FsbGVlKS0+ZXhlY3V0YWJsZSgpKTsKKyAgICAgICAgcmV0dXJu
ICp0aGlzOworICAgIH0KKyAgICAKKyAgICBKU0NlbGwqIHJhd0NhbGxlZUNlbGwoKSBjb25zdCB7
IHJldHVybiBtX2NhbGxlZTsgfQorICAgIAorICAgIEludGVybmFsRnVuY3Rpb24qIGludGVybmFs
RnVuY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SW50
ZXJuYWxGdW5jdGlvbio+KG1fY2FsbGVlKTsKKyAgICB9CisgICAgCisgICAgSlNGdW5jdGlvbiog
ZnVuY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNG
dW5jdGlvbio+KG1fY2FsbGVlKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0Nsb3N1cmVDYWxs
KCkgY29uc3QgeyByZXR1cm4gISFqc0R5bmFtaWNDYXN0PEV4ZWN1dGFibGVCYXNlKj4obV9jYWxs
ZWUpOyB9CisgICAgCisgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUoKSBjb25zdAorICAg
IHsKKyAgICAgICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gdGhpcy0+ZnVuY3Rpb24oKSkK
KyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbi0+ZXhlY3V0YWJsZSgpOworICAgICAgICByZXR1
cm4ganNEeW5hbWljQ2FzdDxFeGVjdXRhYmxlQmFzZSo+KG1fY2FsbGVlKTsKKyAgICB9CisgICAg
CisgICAgSlNDZWxsKiBub25FeGVjdXRhYmxlQ2FsbGVlKCkgY29uc3QKKyAgICB7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKCFpc0Nsb3N1cmVDYWxsKCkpOworICAgICAgICByZXR1cm4gbV9jYWxs
ZWU7CisgICAgfQorICAgIAorICAgIEludHJpbnNpYyBpbnRyaW5zaWNGb3IoQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKEV4ZWN1dGFibGVCYXNl
KiBleGVjdXRhYmxlID0gdGhpcy0+ZXhlY3V0YWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIGV4
ZWN1dGFibGUtPmludHJpbnNpY0ZvcihraW5kKTsKKyAgICAgICAgcmV0dXJuIE5vSW50cmluc2lj
OworICAgIH0KKyAgICAKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUg
PSB0aGlzLT5leGVjdXRhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxG
dW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorICAgIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKKyAg
ICAKKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2NhbGxlZSA9PSBkZWxldGVkVG9rZW4oKTsKKyAgICB9CisgICAgCisgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2NhbGxlZSA9PSBvdGhlci5tX2NhbGxlZTsKKyAgICB9CisgICAgCisg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAgICB9CisgICAgCisgICAgYm9v
bCBvcGVyYXRvcjwoY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fY2FsbGVlIDwgb3RoZXIubV9jYWxsZWU7CisgICAgfQorICAgIAorICAgIGJv
b2wgb3BlcmF0b3I+KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBvdGhlciA8ICp0aGlzOworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9y
PD0oY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
ICEoKnRoaXMgPCBvdGhlcik7CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3I+PShjb25z
dCBDYWxsVmFyaWFudCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gb3RoZXIg
PD0gKnRoaXM7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIFdURjo6UHRySGFzaDxKU0NlbGwqPjo6aGFzaChtX2NhbGxlZSk7Cisg
ICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBzdGF0aWMgSlNDZWxsKiBkZWxldGVkVG9rZW4oKSB7
IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSk7
IH0KKyAgICAKKyAgICBKU0NlbGwqIG1fY2FsbGVlOworfTsKKworc3RydWN0IENhbGxWYXJpYW50
SGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgQ2FsbFZhcmlhbnQmIGtleSkg
eyByZXR1cm4ga2V5Lmhhc2goKTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENhbGxW
YXJpYW50JiBhLCBjb25zdCBDYWxsVmFyaWFudCYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAg
c3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOwor
fTsKKwordHlwZWRlZiBWZWN0b3I8Q2FsbFZhcmlhbnQsIDE+IENhbGxWYXJpYW50TGlzdDsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxK
U0M6OkNhbGxWYXJpYW50PiB7CisgICAgdHlwZWRlZiBKU0M6OkNhbGxWYXJpYW50SGFzaCBIYXNo
OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM7Cit0ZW1wbGF0
ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6Q2FsbFZhcmlhbnQ+IDogU2ltcGxlQ2xhc3NIYXNo
VHJhaXRzPEpTQzo6Q2FsbFZhcmlhbnQ+IHsgfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNl
bmRpZiAvLyBDYWxsVmFyaWFudF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlT3JpZ2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVPcmlnaW4uaAkocmV2aXNpb24gMTcyOTYxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDYgKzE1
NCwxNyBAQCBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lIHsKICAgICAgICAgcmV0dXJuIENvZGVGb3JD
YWxsOwogICAgIH0KICAgICAKKyAgICBzdGF0aWMgYm9vbCBpc05vcm1hbENhbGwoS2luZCBraW5k
KQorICAgIHsKKyAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIGNhc2UgQ2FsbDoKKyAg
ICAgICAgY2FzZSBDb25zdHJ1Y3Q6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKICAgICBWZWN0b3I8VmFsdWVSZWNvdmVyeT4gYXJndW1lbnRzOyAvLyBJbmNsdWRlcyAndGhp
cycuCiAgICAgV3JpdGVCYXJyaWVyPFNjcmlwdEV4ZWN1dGFibGU+IGV4ZWN1dGFibGU7CiAgICAg
VmFsdWVSZWNvdmVyeSBjYWxsZWVSZWNvdmVyeTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGl0S2luZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V4aXRLaW5kLmNwcAkocmV2aXNpb24gMTcyOTYxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgs
OCArMzgsOCBAQCBjb25zdCBjaGFyKiBleGl0S2luZFRvU3RyaW5nKEV4aXRLaW5kIGtpCiAgICAg
ICAgIHJldHVybiAiVW5zZXQiOwogICAgIGNhc2UgQmFkVHlwZToKICAgICAgICAgcmV0dXJuICJC
YWRUeXBlIjsKLSAgICBjYXNlIEJhZEZ1bmN0aW9uOgotICAgICAgICByZXR1cm4gIkJhZEZ1bmN0
aW9uIjsKKyAgICBjYXNlIEJhZENlbGw6CisgICAgICAgIHJldHVybiAiQmFkQ2VsbCI7CiAgICAg
Y2FzZSBCYWRFeGVjdXRhYmxlOgogICAgICAgICByZXR1cm4gIkJhZEV4ZWN1dGFibGUiOwogICAg
IGNhc2UgQmFkQ2FjaGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhp
dEtpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhp
dEtpbmQuaAkocmV2aXNpb24gMTcyOTYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0V4aXRLaW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiBlbnVtIEV4aXRLaW5kIDogdWludDhfdCB7CiAgICAgRXhpdEtpbmRVbnNldCwKICAg
ICBCYWRUeXBlLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSBhIHR5cGUgcHJlZGljdGlvbiB3YXMgd3Jv
bmcuCi0gICAgQmFkRnVuY3Rpb24sIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIG1hZGUgYW4gaW5j
b3JyZWN0IGFzc3VtcHRpb24gYWJvdXQgd2hhdCBmdW5jdGlvbiB3ZSB3b3VsZCBzZWUuCisgICAg
QmFkQ2VsbCwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2UgbWFkZSBhbiBpbmNvcnJlY3QgYXNzdW1w
dGlvbiBhYm91dCB3aGF0IGNlbGwgd2Ugd291bGQgc2VlLiBVc3VhbGx5IHVzZWQgZm9yIGZ1bmN0
aW9uIGNoZWNrcy4KICAgICBCYWRFeGVjdXRhYmxlLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSB3ZSBt
YWRlIGFuIGluY29ycmVjdCBhc3N1bXB0aW9uIGFib3V0IHdoYXQgZXhlY3V0YWJsZSB3ZSB3b3Vs
ZCBzZWUuCiAgICAgQmFkQ2FjaGUsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIGFuIGlubGluZSBjYWNo
ZSB3YXMgd3JvbmcuCiAgICAgQmFkQ29uc3RhbnRDYWNoZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ug
YSBjYWNoZSBvbiBhIHdlYWsgY29uc3RhbnQgKHVzdWFsbHkgYSBwcm90b3R5cGUpIHdhcyB3cm9u
Zy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0
YXR1cy5jcHAJKHJldmlzaW9uIDE3Mjk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg3LDcgKzE4Nyw4IEBA
IEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclMKICAgICAgICAgICAgICAg
ICAgICAgQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUqIHN0dWIgPSBzdGF0aWNfY2FzdDxBY2Nl
c3NvckNhbGxKSVRTdHViUm91dGluZSo+KAogICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC0+
YXQobGlzdEluZGV4KS5zdHViUm91dGluZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbExp
bmtTdGF0dXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5rU3RhdHVzPigKLSAgICAgICAgICAg
ICAgICAgICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKGxvY2tlciwgKnN0dWItPm1f
Y2FsbExpbmtJbmZvLCBjYWxsRXhpdFNpdGVEYXRhKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssICpzdHViLT5tX2NhbGxMaW5rSW5mbywgY2FsbEV4aXRT
aXRlRGF0YSkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRCeUlkQWNjZXNzOjpDdXN0b21HZXR0ZXI6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3Bw
CShyZXZpc2lvbiAxNzI5NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Nyw3ICsyNDcsNyBAQCBQdXRCeUlk
U3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTCiAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxDYWxsTGlua1N0YXR1cz4gY2FsbExpbmtTdGF0dXMgPQogICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4oCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tlciwgKnN0dWItPm1fY2FsbExpbmtJbmZvLCBj
YWxsRXhpdFNpdGVEYXRhKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tl
ciwgcHJvZmlsZWRCbG9jaywgKnN0dWItPm1fY2FsbExpbmtJbmZvLCBjYWxsRXhpdFNpdGVEYXRh
KSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICB2YXJpYW50ID0g
UHV0QnlJZFZhcmlhbnQ6OnNldHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVy
ZSwgY29tcGxleEdldFN0YXR1cy5vZmZzZXQoKSwgY29tcGxleEdldFN0YXR1cy5jaGFpbigpLApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMTcyOTYxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDU5LDE0ICsxNDU5LDYgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeQogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOiB7Ci0gICAg
ICAgIC8vIEZJWE1FOiBXZSBjb3VsZCB0cmFjayBleGVjdXRhYmxlcyBpbiBBYnN0cmFjdFZhbHVl
LCB3aGljaCB3b3VsZCBhbGxvdyB1cyB0byBnZXQgcmlkIG9mIHRoZXNlIGNoZWNrcwotICAgICAg
ICAvLyBtb3JlIHRob3JvdWdobHkuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDYyMDAKLSAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIGVsaW1pbmF0ZSB0aGVzZSBl
bnRpcmVseSBpZiB3ZSBrbm93IHRoZSBleGFjdCB2YWx1ZSB0aGF0IGZsb3dzIGludG8gdGhpcy4K
LSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjIw
MQotICAgICAgICBicmVhazsKLSAgICB9Ci0KICAgICBjYXNlIENoZWNrU3RydWN0dXJlOiB7CiAg
ICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBwcm9wYWdhdGUgdGhlIHN0cnVj
dHVyZSBzZXRzIG9mIGNvbnN0YW50cyAoaS5lLiBwcm90b3R5cGVzKS4KICAgICAgICAgQWJzdHJh
Y3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKQEAgLTE3MjYsMTYgKzE3
MTgsMjkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAg
ICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQor
ICAgICAgICAKKyAgICBjYXNlIEdldEV4ZWN1dGFibGU6IHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1
ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlmICh2YWx1ZSkg
eworICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVu
Y3Rpb24qPih2YWx1ZSk7CisgICAgICAgICAgICBpZiAoZnVuY3Rpb24pIHsKKyAgICAgICAgICAg
ICAgICBzZXRDb25zdGFudChub2RlLCAqbV9ncmFwaC5mcmVlemUoZnVuY3Rpb24tPmV4ZWN1dGFi
bGUoKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjQ2VsbE90aGVyKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQogICAgIAotICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjogeworICAgIGNhc2Ug
Q2hlY2tDZWxsOiB7CiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS52YWx1ZSgpOwotICAgICAgICBpZiAodmFsdWUgPT0gbm9kZS0+ZnVuY3Rpb24oKS0+dmFs
dWUoKSkgeworICAgICAgICBpZiAodmFsdWUgPT0gbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUo
KSkgewogICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKICAgICAg
ICAgICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICAKLSAgICAgICAgZmlsdGVyQnlWYWx1ZShub2RlLT5jaGlsZDEoKSwgKm5vZGUtPmZ1bmN0
aW9uKCkpOworICAgICAgICBmaWx0ZXJCeVZhbHVlKG5vZGUtPmNoaWxkMSgpLCAqbm9kZS0+Y2Vs
bE9wZXJhbmQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC0xODU5LDgg
KzE4NjQsNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAg
ICAgIAogICAgIGNhc2UgVmFyaWFibGVXYXRjaHBvaW50OgogICAgIGNhc2UgVmFySW5qZWN0aW9u
V2F0Y2hwb2ludDoKLSAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKICAgICBjYXNlIFB1dEds
b2JhbFZhcjoKICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAgICAgICBicmVhazsKQEAgLTE5MDAs
NyArMTkwMywxNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAg
ICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAgYnJlYWs7CiAKKyAg
ICBjYXNlIFByb2ZpbGVkQ2FsbDoKKyAgICBjYXNlIFByb2ZpbGVkQ29uc3RydWN0OgorICAgICAg
ICBpZiAoZm9yTm9kZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKS5tX3ZhbHVlKQorICAg
ICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKKyAgICAgICAgY2xvYmJl
cldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKKyAgICAgICAgZm9y
Tm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgRm9y
Y2VPU1JFeGl0OgorICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgICAgICBtX3N0YXRlLnNldElz
VmFsaWQoZmFsc2UpOwogICAgICAgICBicmVhazsKICAgICAgICAgCkBAIC0xOTU1LDcgKzE5Njcs
OCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgY2FzZSBM
YXN0Tm9kZVR5cGU6CiAgICAgY2FzZSBBcml0aElNdWw6CiAgICAgY2FzZSBGaWF0SW50NTI6Ci0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgY2FzZSBCb3R0b21WYWx1
ZToKKyAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG5vZGUsICJVbmV4cGVjdGVkIG5vZGUgdHlw
ZSIpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5j
cHAJKHJldmlzaW9uIDE3Mjk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFj
a3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4OSw2ICszODks
MTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAvLyB0aGVuIC0wIGFuZCAwIGFyZSB0cmVh
dGVkIHRoZSBzYW1lLgogICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgpLT5tZXJnZUZsYWdz
KE5vZGVCeXRlY29kZVVzZXNBc051bWJlciB8IE5vZGVCeXRlY29kZVVzZXNBc090aGVyKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU3dpdGNoQ2VsbDoKKyAgICAg
ICAgICAgICAgICAvLyBUaGVyZSBpcyBjdXJyZW50bHkgbm8gcG9pbnQgdG8gYmVpbmcgY2xldmVy
IGhlcmUgc2luY2UgdGhpcyBpcyB1c2VkIGZvciBzd2l0Y2hpbmcKKyAgICAgICAgICAgICAgICAv
LyBvbiBvYmplY3RzLgorICAgICAgICAgICAgICAgIG1lcmdlRGVmYXVsdEZsYWdzKG5vZGUpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9j
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrLmNwcAkocmV2aXNpb24gMTcyOTYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsOSBAQCBCYXNpY0Js
b2NrOjpCYXNpY0Jsb2NrKAogewogfQogCi1CYXNpY0Jsb2NrOjp+QmFzaWNCbG9jaygpIHsgfQor
QmFzaWNCbG9jazo6fkJhc2ljQmxvY2soKQoreworfQogCiB2b2lkIEJhc2ljQmxvY2s6OmVuc3Vy
ZUxvY2Fscyh1bnNpZ25lZCBuZXdOdW1Mb2NhbHMpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkocmV2aXNpb24gMTcyOTYxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYg
KzYyLDcgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIE5v
ZGUqJiBvcGVyYXRvcltdKHNpemVfdCBpKSB7IHJldHVybiBhdChpKTsgfQogICAgIE5vZGUqIG9w
ZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIGF0KGkpOyB9CiAgICAgTm9kZSogbGFz
dCgpIGNvbnN0IHsgcmV0dXJuIGF0KHNpemUoKSAtIDEpOyB9CisgICAgTm9kZSogdGFrZUxhc3Qo
KSB7IHJldHVybiBtX25vZGVzLnRha2VMYXN0KCk7IH0KICAgICB2b2lkIHJlc2l6ZShzaXplX3Qg
c2l6ZSkgeyBtX25vZGVzLnJlc2l6ZShzaXplKTsgfQogICAgIHZvaWQgZ3JvdyhzaXplX3Qgc2l6
ZSkgeyBtX25vZGVzLmdyb3coc2l6ZSk7IH0KICAgICAKQEAgLTEwNiw2ICsxMDcsMTMgQEAgc3Ry
dWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIAogICAgIHZvaWQgZHVt
cChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKICAgICAKKyAgICB2b2lkIGRpZExpbmsoKQorICAg
IHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIGlzTGlua2VkID0gdHJ1ZTsKKyNlbmRp
ZgorICAgIH0KKyAgICAKICAgICAvLyBUaGlzIHZhbHVlIGlzIHVzZWQgaW50ZXJuYWxseSBmb3Ig
YmxvY2sgbGlua2luZyBhbmQgT1NSIGVudHJ5LiBJdCBpcyBtb3N0bHkgbWVhbmluZ2xlc3MKICAg
ICAvLyBmb3Igb3RoZXIgcHVycG9zZXMgZHVlIHRvIGlubGluaW5nLgogICAgIHVuc2lnbmVkIGJ5
dGVjb2RlQmVnaW47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTcyOTYxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUw
LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCitzdGF0aWMgY29uc3Qg
Ym9vbCB2ZXJib3NlID0gZmFsc2U7CisKIGNsYXNzIENvbnN0YW50QnVmZmVyS2V5IHsKIHB1Ymxp
YzoKICAgICBDb25zdGFudEJ1ZmZlcktleSgpCkBAIC0xNzgsMTQgKzE4MCwyMCBAQCBwcml2YXRl
OgogICAgICAgICBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9m
ZnNldCwgQ2FsbExpbmtTdGF0dXMpOwogICAgIHZvaWQgaGFuZGxlQ2FsbChpbnQgcmVzdWx0LCBO
b2RlVHlwZSBvcCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25T
aXplLCBpbnQgY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCk7CiAgICAg
dm9pZCBoYW5kbGVDYWxsKEluc3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3AsIENvZGVTcGVjaWFs
aXphdGlvbktpbmQpOwotICAgIHZvaWQgZW1pdEZ1bmN0aW9uQ2hlY2tzKGNvbnN0IENhbGxMaW5r
U3RhdHVzJiwgTm9kZSogY2FsbFRhcmdldCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kKTsKKyAgICB2b2lkIGVtaXRGdW5jdGlvbkNoZWNrcyhDYWxsVmFyaWFudCwg
Tm9kZSogY2FsbFRhcmdldCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kKTsKKyAgICB2b2lkIHVuZG9GdW5jdGlvbkNoZWNrcyhDYWxsVmFyaWFudCk7CiAgICAgdm9p
ZCBlbWl0QXJndW1lbnRQaGFudG9tcyhpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgdW5zaWduZWQg
aW5saW5pbmdDb3N0KENhbGxWYXJpYW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IENvZGVTcGVjaWFsaXphdGlvbktpbmQpOyAvLyBSZXR1cm4gVUlOVF9NQVggaWYgaXQncyBub3Qg
YW4gaW5saW5pbmcgY2FuZGlkYXRlLiBCeSBjb252ZW50aW9uLCBpbnRyaW5zaWNzIGhhdmUgYSBj
b3N0IG9mIDEuCiAgICAgLy8gSGFuZGxlIGlubGluaW5nLiBSZXR1cm4gdHJ1ZSBpZiBpdCBzdWNj
ZWVkZWQsIGZhbHNlIGlmIHdlIG5lZWQgdG8gcGxhbnQgYSBjYWxsLgotICAgIGJvb2wgaGFuZGxl
SW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBD
YWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQpOwor
ICAgIGJvb2wgaGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRP
cGVyYW5kLCBjb25zdCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBOb2RlVHlwZSBj
YWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7
CisgICAgZW51bSBDYWxsZXJMaW5rYWJpbGl0eSB7IENhbGxlckRvZXNOb3JtYWxMaW5raW5nLCBD
YWxsZXJMaW5rc01hbnVhbGx5IH07CisgICAgYm9vbCBhdHRlbXB0VG9JbmxpbmVDYWxsKE5vZGUq
IGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcmlhbnQsIGludCByZWdp
c3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0
T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIENhbGxlckxpbmthYmlsaXR5LCBTcGVjdWxh
dGVkVHlwZSBwcmVkaWN0aW9uLCB1bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlKTsKKyAgICB2b2lk
IGlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxs
VmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2luZCwgQ2FsbGVyTGlu
a2FiaWxpdHkpOworICAgIHZvaWQgY2FuY2VsTGlua2luZ0ZvckJsb2NrKElubGluZVN0YWNrRW50
cnkqLCBCYXNpY0Jsb2NrKik7IC8vIE9ubHkgd29ya3Mgd2hlbiB0aGUgZ2l2ZW4gYmxvY2sgaXMg
dGhlIGxhc3Qgb25lIHRvIGhhdmUgYmVlbiBhZGRlZCBmb3IgdGhhdCBpbmxpbmUgc3RhY2sgZW50
cnkuCiAgICAgLy8gSGFuZGxlIGludHJpbnNpYyBmdW5jdGlvbnMuIFJldHVybiB0cnVlIGlmIGl0
IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCiAgICAgYm9vbCBo
YW5kbGVJbnRyaW5zaWMoaW50IHJlc3VsdE9wZXJhbmQsIEludHJpbnNpYywgaW50IHJlZ2lzdGVy
T2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24pOwogICAgIGJvb2wgaGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKGludCByZXN1
bHRPcGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlKTsKLSAgICBib29sIGhhbmRs
ZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihpbnQgcmVzdWx0T3BlcmFuZCwgSW50ZXJuYWxGdW5j
dGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKKyAg
ICBib29sIGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihpbnQgcmVzdWx0T3BlcmFuZCwg
SW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICBOb2RlKiBoYW5kbGVQ
dXRCeU9mZnNldChOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNl
dCwgTm9kZSogdmFsdWUpOwogICAgIE5vZGUqIGhhbmRsZUdldEJ5T2Zmc2V0KFNwZWN1bGF0ZWRU
eXBlLCBOb2RlKiBiYXNlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmLCB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyLCBQcm9wZXJ0eU9mZnNldCwgTm9kZVR5cGUgb3AgPSBHZXRCeU9mZnNldCk7CiAgICAg
dm9pZCBoYW5kbGVHZXRCeUlkKApAQCAtMjAwLDggKzIwOCw5IEBAIHByaXZhdGU6CiAKICAgICBO
b2RlKiBnZXRTY29wZSh1bnNpZ25lZCBza2lwQ291bnQpOwogICAgIAotICAgIC8vIFByZXBhcmUg
dG8gcGFyc2UgYSBibG9jay4KICAgICB2b2lkIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKKyAgICB2
b2lkIGNsZWFyQ2FjaGVzKCk7CisKICAgICAvLyBQYXJzZSBhIHNpbmdsZSBiYXNpYyBibG9jayBv
ZiBieXRlY29kZSBpbnN0cnVjdGlvbnMuCiAgICAgYm9vbCBwYXJzZUJsb2NrKHVuc2lnbmVkIGxp
bWl0KTsKICAgICAvLyBMaW5rIGJsb2NrIHN1Y2Nlc3NvcnMuCkBAIC0yOTYsNiArMzA1LDEzIEBA
IHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICByZXR1cm4gZGVsYXllZC5leGVjdXRlKHRoaXMs
IHNldE1vZGUpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCkK
KyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NldExvY2FsUXVldWUu
c2l6ZSgpOyArK2kpCisgICAgICAgICAgICBtX3NldExvY2FsUXVldWVbaV0uZXhlY3V0ZSh0aGlz
KTsKKyAgICAgICAgbV9zZXRMb2NhbFF1ZXVlLnJlc2l6ZSgwKTsKKyAgICB9CiAKICAgICBOb2Rl
KiBzZXQoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQsIE5vZGUqIHZhbHVlLCBTZXRNb2RlIHNldE1v
ZGUgPSBOb3JtYWxTZXQpCiAgICAgewpAQCAtNjM3LDYgKzY1MywxMyBAQCBwcml2YXRlOgogICAg
ICAgICAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CisgICAgCisgICAgdm9pZCByZW1v
dmVMYXN0Tm9kZUZyb21HcmFwaChOb2RlVHlwZSBleHBlY3RlZE5vZGVUeXBlKQorICAgIHsKKyAg
ICAgICAgTm9kZSogbm9kZSA9IG1fY3VycmVudEJsb2NrLT50YWtlTGFzdCgpOworICAgICAgICBS
RUxFQVNFX0FTU0VSVChub2RlLT5vcCgpID09IGV4cGVjdGVkTm9kZVR5cGUpOworICAgICAgICBt
X2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CisgICAgfQogCiAgICAgdm9pZCBhZGRWYXJB
cmdDaGlsZChOb2RlKiBjaGlsZCkKICAgICB7CkBAIC02NDUsNyArNjY4LDcgQEAgcHJpdmF0ZToK
ICAgICB9CiAgICAgCiAgICAgTm9kZSogYWRkQ2FsbFdpdGhvdXRTZXR0aW5nUmVzdWx0KAotICAg
ICAgICBOb2RlVHlwZSBvcCwgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rl
ck9mZnNldCwKKyAgICAgICAgTm9kZVR5cGUgb3AsIE9wSW5mbyBvcEluZm8sIE5vZGUqIGNhbGxl
ZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAgICAgIFNwZWN1bGF0ZWRU
eXBlIHByZWRpY3Rpb24pCiAgICAgewogICAgICAgICBhZGRWYXJBcmdDaGlsZChjYWxsZWUpOwpA
QCAtNjUzLDE5ICs2NzYsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKHBhcmFtZXRlclNsb3Rz
ID4gbV9wYXJhbWV0ZXJTbG90cykKICAgICAgICAgICAgIG1fcGFyYW1ldGVyU2xvdHMgPSBwYXJh
bWV0ZXJTbG90czsKIAotICAgICAgICBpbnQgZHVtbXlUaGlzQXJndW1lbnQgPSBvcCA9PSBDYWxs
IHx8IG9wID09IE5hdGl2ZUNhbGwgPyAwIDogMTsKKyAgICAgICAgaW50IGR1bW15VGhpc0FyZ3Vt
ZW50ID0gb3AgPT0gQ2FsbCB8fCBvcCA9PSBOYXRpdmVDYWxsIHx8IG9wID09IFByb2ZpbGVkQ2Fs
bCA/IDAgOiAxOwogICAgICAgICBmb3IgKGludCBpID0gMCArIGR1bW15VGhpc0FyZ3VtZW50OyBp
IDwgYXJnQ291bnQ7ICsraSkKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldCh2aXJ0dWFs
UmVnaXN0ZXJGb3JBcmd1bWVudChpLCByZWdpc3Rlck9mZnNldCkpKTsKIAotICAgICAgICByZXR1
cm4gYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIG9wLCBPcEluZm8oMCksIE9wSW5mbyhwcmVkaWN0
aW9uKSk7CisgICAgICAgIHJldHVybiBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgb3AsIG9wSW5m
bywgT3BJbmZvKHByZWRpY3Rpb24pKTsKICAgICB9CiAgICAgCiAgICAgTm9kZSogYWRkQ2FsbCgK
LSAgICAgICAgaW50IHJlc3VsdCwgTm9kZVR5cGUgb3AsIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0Nv
dW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgICAgIGludCByZXN1bHQsIE5vZGVUeXBlIG9w
LCBPcEluZm8gb3BJbmZvLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVy
T2Zmc2V0LAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogICAgIHsKICAgICAg
ICAgTm9kZSogY2FsbCA9IGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdCgKLSAgICAgICAgICAg
IG9wLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CisgICAg
ICAgICAgICBvcCwgb3BJbmZvLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCwgcHJl
ZGljdGlvbik7CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHRSZWcocmVzdWx0KTsKICAg
ICAgICAgaWYgKHJlc3VsdFJlZy5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBzZXQoVmlydHVhbFJl
Z2lzdGVyKHJlc3VsdCksIGNhbGwpOwpAQCAtODcxLDggKzg5NCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIFZlY3RvcjxVbmxpbmtlZEJsb2NrPiBtX3VubGlua2VkQmxvY2tzOwogICAgICAgICAKICAg
ICAgICAgLy8gUG90ZW50aWFsIGJsb2NrIGxpbmtpbmcgdGFyZ2V0cy4gTXVzdCBiZSBzb3J0ZWQg
YnkgYnl0ZWNvZGVCZWdpbiwgYW5kCi0gICAgICAgIC8vIGNhbm5vdCBoYXZlIHR3byBibG9ja3Mg
dGhhdCBoYXZlIHRoZSBzYW1lIGJ5dGVjb2RlQmVnaW4uIEZvciB0aGlzIHZlcnkKLSAgICAgICAg
Ly8gcmVhc29uLCB0aGlzIGlzIG5vdCBlcXVpdmFsZW50IHRvIAorICAgICAgICAvLyBjYW5ub3Qg
aGF2ZSB0d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRlY29kZUJlZ2luLgogICAgICAg
ICBWZWN0b3I8QmFzaWNCbG9jayo+IG1fYmxvY2tMaW5raW5nVGFyZ2V0czsKICAgICAgICAgCiAg
ICAgICAgIC8vIElmIHRoZSBjYWxsc2l0ZSdzIGJhc2ljIGJsb2NrIHdhcyBzcGxpdCBpbnRvIHR3
bywgdGhlbiB0aGlzIHdpbGwgYmUKQEAgLTEwMTksNzcgKzEwNDEsNjMgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlQ2FsbCgKICAgICBDYWxsTGlua1N0YXR1cyBjYWxsTGlua1N0YXR1cywg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKIHsKICAgICBBU1NFUlQocmVnaXN0ZXJPZmZzZXQg
PD0gMCk7Ci0gICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQgPSBJ
bmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5kKTsKICAgICAKICAgICBp
ZiAoY2FsbFRhcmdldC0+aGFzQ29uc3RhbnQoKSkKICAgICAgICAgY2FsbExpbmtTdGF0dXMgPSBD
YWxsTGlua1N0YXR1cyhjYWxsVGFyZ2V0LT5hc0pTVmFsdWUoKSkuc2V0SXNQcm92ZWQodHJ1ZSk7
CiAgICAgCisgICAgaWYgKCghY2FsbExpbmtTdGF0dXMuY2FuT3B0aW1pemUoKSB8fCBjYWxsTGlu
a1N0YXR1cy5zaXplKCkgIT0gMSkKKyAgICAgICAgJiYgIWlzRlRMKG1fZ3JhcGgubV9wbGFuLm1v
ZGUpICYmIE9wdGlvbnM6OnVzZUZUTEpJVCgpCisgICAgICAgICYmIElubGluZUNhbGxGcmFtZTo6
aXNOb3JtYWxDYWxsKGtpbmQpCisgICAgICAgICYmIENhbGxFZGdlTG9nOjppc0VuYWJsZWQoKQor
ICAgICAgICAmJiBPcHRpb25zOjpkZmdEb2VzQ2FsbEVkZ2VQcm9maWxpbmcoKSkgeworICAgICAg
ICBBU1NFUlQob3AgPT0gQ2FsbCB8fCBvcCA9PSBDb25zdHJ1Y3QpOworICAgICAgICBpZiAob3Ag
PT0gQ2FsbCkKKyAgICAgICAgICAgIG9wID0gUHJvZmlsZWRDYWxsOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBvcCA9IFByb2ZpbGVkQ29uc3RydWN0OworICAgIH0KKyAgICAKICAgICBpZiAo
IWNhbGxMaW5rU3RhdHVzLmNhbk9wdGltaXplKCkpIHsKICAgICAgICAgLy8gT2RkbHksIHRoaXMg
Y29uZmxhdGVzIGNhbGxzIHRoYXQgaGF2ZW4ndCBleGVjdXRlZCB3aXRoIGNhbGxzIHRoYXQgYmVo
YXZlZCBzdWZmaWNpZW50bHkgcG9seW1vcnBoaWNhbGx5CiAgICAgICAgIC8vIHRoYXQgd2UgY2Fu
bm90IG9wdGltaXplIHRoZW0uCiAgICAgICAgIAotICAgICAgICBhZGRDYWxsKHJlc3VsdCwgb3As
IGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwg
cHJlZGljdGlvbik7CisgICAgICAgIGFkZENhbGwocmVzdWx0LCBvcCwgT3BJbmZvKCksIGNhbGxU
YXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGlj
dGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgbmV4dE9m
ZnNldCA9IG1fY3VycmVudEluZGV4ICsgaW5zdHJ1Y3Rpb25TaXplOwotCi0gICAgaWYgKEludGVy
bmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbExpbmtTdGF0dXMuaW50ZXJuYWxGdW5jdGlvbigp
KSB7Ci0gICAgICAgIGlmIChoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24ocmVzdWx0LCBm
dW5jdGlvbiwgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBwcmVk
aWN0aW9uLCBzcGVjaWFsaXphdGlvbktpbmQpKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIHBoYW50
b21pbmcgaGFzIHRvIGJlICphZnRlciogdGhlIGNvZGUgZm9yIHRoZSBpbnRyaW5zaWMsIHRvIHNp
Z25pZnkgdGhhdAotICAgICAgICAgICAgLy8gdGhlIGlucHV0cyBtdXN0IGJlIGtlcHQgYWxpdmUg
d2hhdGV2ZXIgZXhpdHMgdGhlIGludHJpbnNpYyBtYXkgZG8uCi0gICAgICAgICAgICBhZGRUb0dy
YXBoKFBoYW50b20sIGNhbGxUYXJnZXQpOwotICAgICAgICAgICAgZW1pdEFyZ3VtZW50UGhhbnRv
bXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXph
dGlvbktpbmQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICAvLyBDYW4gb25seSBoYW5kbGUgdGhpcyB1c2luZyB0aGUgZ2VuZXJpYyBjYWxsIGhhbmRs
ZXIuCi0gICAgICAgIGFkZENhbGwocmVzdWx0LCBvcCwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICAgICAgCi0gICAgSW50cmluc2ljIGludHJpbnNpYyA9IGNhbGxMaW5r
U3RhdHVzLmludHJpbnNpY0ZvcihzcGVjaWFsaXphdGlvbktpbmQpOwotCi0gICAgSlNGdW5jdGlv
bioga25vd25GdW5jdGlvbiA9IG51bGxwdHI7Ci0gICAgaWYgKGludHJpbnNpYyAhPSBOb0ludHJp
bnNpYykgewotICAgICAgICBlbWl0RnVuY3Rpb25DaGVja3MoY2FsbExpbmtTdGF0dXMsIGNhbGxU
YXJnZXQsIHJlZ2lzdGVyT2Zmc2V0LCBzcGVjaWFsaXphdGlvbktpbmQpOwotICAgICAgICAgICAg
Ci0gICAgICAgIGlmIChoYW5kbGVJbnRyaW5zaWMocmVzdWx0LCBpbnRyaW5zaWMsIHJlZ2lzdGVy
T2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbikpIHsKLSAgICAg
ICAgICAgIC8vIFRoaXMgcGhhbnRvbWluZyBoYXMgdG8gYmUgKmFmdGVyKiB0aGUgY29kZSBmb3Ig
dGhlIGludHJpbnNpYywgdG8gc2lnbmlmeSB0aGF0Ci0gICAgICAgICAgICAvLyB0aGUgaW5wdXRz
IG11c3QgYmUga2VwdCBhbGl2ZSB3aGF0ZXZlciBleGl0cyB0aGUgaW50cmluc2ljIG1heSBkby4K
LSAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldCk7Ci0gICAgICAgICAg
ICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7Ci0gICAgICAgICAgICBpZiAobV9ncmFwaC5j
b21waWxhdGlvbigpKQotICAgICAgICAgICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90
aWNlSW5saW5lZENhbGwoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0g
ZWxzZSBpZiAoaGFuZGxlSW5saW5pbmcoY2FsbFRhcmdldCwgcmVzdWx0LCBjYWxsTGlua1N0YXR1
cywgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zmc2V0
LCBraW5kKSkgeworICAgIAorICAgIE9wSW5mbyBjYWxsT3BJbmZvOworICAgIAorICAgIGlmICho
YW5kbGVJbmxpbmluZyhjYWxsVGFyZ2V0LCByZXN1bHQsIGNhbGxMaW5rU3RhdHVzLCByZWdpc3Rl
ck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQsIG9wLCBraW5k
LCBwcmVkaWN0aW9uKSkgewogICAgICAgICBpZiAobV9ncmFwaC5jb21waWxhdGlvbigpKQogICAg
ICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkQ2FsbCgpOwogICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIAogI2lmIEVOQUJMRShGVExfTkFUSVZFX0NBTExfSU5M
SU5JTkcpCi0gICAgfSBlbHNlIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSAmJiBPcHRp
b25zOjpvcHRpbWl6ZU5hdGl2ZUNhbGxzKCkpIHsKLSAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rp
b24gPSBjYWxsTGlua1N0YXR1cy5mdW5jdGlvbigpOworICAgIGlmIChpc0ZUTChtX2dyYXBoLm1f
cGxhbi5tb2RlKSAmJiBPcHRpb25zOjpvcHRpbWl6ZU5hdGl2ZUNhbGxzKCkgJiYgY2FsbExpbmtT
dGF0dXMuc2l6ZSgpID09IDEgJiYgIWNhbGxMaW5rU3RhdHVzLmNvdWxkVGFrZVNsb3dQYXRoKCkp
IHsKKyAgICAgICAgQ2FsbFZhcmlhbnQgY2FsbGVlID0gY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVl
KCk7CisgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLmZ1bmN0aW9uKCk7Cisg
ICAgICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5l
Q2FsbEZyYW1lOjpzcGVjaWFsaXphdGlvbktpbmRGb3Ioa2luZCk7CiAgICAgICAgIGlmIChmdW5j
dGlvbiAmJiBmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSkgewotICAgICAgICAgICAgZW1pdEZ1
bmN0aW9uQ2hlY2tzKGNhbGxMaW5rU3RhdHVzLCBjYWxsVGFyZ2V0LCByZWdpc3Rlck9mZnNldCwg
c3BlY2lhbGl6YXRpb25LaW5kKTsKLSAgICAgICAgICAgIGtub3duRnVuY3Rpb24gPSBmdW5jdGlv
bjsKKyAgICAgICAgICAgIGVtaXRGdW5jdGlvbkNoZWNrcyhjYWxsZWUsIGNhbGxUYXJnZXQsIHJl
Z2lzdGVyT2Zmc2V0LCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgICAgICAgICAgY2FsbE9wSW5m
byA9IE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShmdW5jdGlvbikpOwogCi0gICAgICAgICAgICBpZiAo
b3AgPT0gQ2FsbCkgCisgICAgICAgICAgICBpZiAob3AgPT0gQ2FsbCB8fCBvcCA9PSBQcm9maWxl
ZENhbGwpCiAgICAgICAgICAgICAgICAgb3AgPSBOYXRpdmVDYWxsOwogICAgICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG9wID09IENvbnN0cnVjdCk7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKG9wID09IENvbnN0cnVjdCB8fCBvcCA9PSBQcm9maWxlZENvbnN0cnVjdCk7
CiAgICAgICAgICAgICAgICAgb3AgPSBOYXRpdmVDb25zdHJ1Y3Q7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KLSNlbmRpZgogICAgIH0KLSAgICBOb2RlKiBjYWxsID0gYWRkQ2FsbChyZXN1bHQs
IG9wLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZz
ZXQsIHByZWRpY3Rpb24pOwotCi0gICAgaWYgKGtub3duRnVuY3Rpb24pIAotICAgICAgICBjYWxs
LT5naXZlS25vd25GdW5jdGlvbihrbm93bkZ1bmN0aW9uKTsKKyNlbmRpZgorICAgIAorICAgIGFk
ZENhbGwocmVzdWx0LCBvcCwgY2FsbE9wSW5mbywgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKIH0KIAotdm9pZCBCeXRl
Q29kZVBhcnNlcjo6ZW1pdEZ1bmN0aW9uQ2hlY2tzKGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxs
TGlua1N0YXR1cywgTm9kZSogY2FsbFRhcmdldCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIGtpbmQpCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0RnVuY3Rpb25D
aGVja3MoQ2FsbFZhcmlhbnQgY2FsbGVlLCBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgcmVnaXN0ZXJP
ZmZzZXQsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICBOb2RlKiB0aGlzQXJn
dW1lbnQ7CiAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpCkBAIC0xMDk3LDIwICsxMTA1LDI1
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRGdW5jdGlvbkNoZWNrcygKICAgICBlbHNlCiAg
ICAgICAgIHRoaXNBcmd1bWVudCA9IDA7CiAKLSAgICBpZiAoY2FsbExpbmtTdGF0dXMuaXNQcm92
ZWQoKSkgewotICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXQsIHRoaXNBcmd1
bWVudCk7Ci0gICAgICAgIHJldHVybjsKKyAgICBKU0NlbGwqIGNhbGxlZUNlbGw7CisgICAgTm9k
ZSogY2FsbFRhcmdldEZvckNoZWNrOworICAgIGlmIChjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKSB7
CisgICAgICAgIGNhbGxlZUNlbGwgPSBjYWxsZWUuZXhlY3V0YWJsZSgpOworICAgICAgICBjYWxs
VGFyZ2V0Rm9yQ2hlY2sgPSBhZGRUb0dyYXBoKEdldEV4ZWN1dGFibGUsIGNhbGxUYXJnZXQpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIGNhbGxlZUNlbGwgPSBjYWxsZWUubm9uRXhlY3V0YWJsZUNh
bGxlZSgpOworICAgICAgICBjYWxsVGFyZ2V0Rm9yQ2hlY2sgPSBjYWxsVGFyZ2V0OwogICAgIH0K
ICAgICAKLSAgICBBU1NFUlQoY2FsbExpbmtTdGF0dXMuY2FuT3B0aW1pemUoKSk7Ci0gICAgCi0g
ICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbExpbmtTdGF0dXMuZnVuY3Rpb24oKSkK
LSAgICAgICAgYWRkVG9HcmFwaChDaGVja0Z1bmN0aW9uLCBPcEluZm8obV9ncmFwaC5mcmVlemUo
ZnVuY3Rpb24pKSwgY2FsbFRhcmdldCwgdGhpc0FyZ3VtZW50KTsKLSAgICBlbHNlIHsKLSAgICAg
ICAgQVNTRVJUKGNhbGxMaW5rU3RhdHVzLmV4ZWN1dGFibGUoKSk7Ci0gICAgICAgIAotICAgICAg
ICBhZGRUb0dyYXBoKENoZWNrRXhlY3V0YWJsZSwgT3BJbmZvKGNhbGxMaW5rU3RhdHVzLmV4ZWN1
dGFibGUoKSksIGNhbGxUYXJnZXQsIHRoaXNBcmd1bWVudCk7Ci0gICAgfQorICAgIEFTU0VSVChj
YWxsZWVDZWxsKTsKKyAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKG1fZ3JhcGguZnJl
ZXplKGNhbGxlZUNlbGwpKSwgY2FsbFRhcmdldEZvckNoZWNrLCB0aGlzQXJndW1lbnQpOworfQor
Cit2b2lkIEJ5dGVDb2RlUGFyc2VyOjp1bmRvRnVuY3Rpb25DaGVja3MoQ2FsbFZhcmlhbnQgY2Fs
bGVlKQoreworICAgIHJlbW92ZUxhc3ROb2RlRnJvbUdyYXBoKENoZWNrQ2VsbCk7CisgICAgaWYg
KGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpCisgICAgICAgIHJlbW92ZUxhc3ROb2RlRnJvbUdyYXBo
KEdldEV4ZWN1dGFibGUpOwogfQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0QXJndW1lbnRQ
aGFudG9tcyhpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpAQCAtMTExOSwzNiArMTEzMiwyNSBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0QXJndW1lbnRQaGFudG9tCiAgICAgICAgIGFkZFRvR3Jh
cGgoUGhhbnRvbSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGksIHJlZ2lzdGVyT2Zm
c2V0KSkpOwogfQogCi1ib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlKiBj
YWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBj
YWxsTGlua1N0YXR1cywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5k
KQordW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxs
ZWUsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBraW5kKQogewotICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKLSAgICAK
LSAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCA9IElubGluZUNh
bGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOwotICAgIAogICAgIGlmICh2ZXJi
b3NlKQotICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyBpbmxpbmluZyAiLCBjYWxsTGlua1N0
YXR1cywgIiBpbnRvICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOworICAgICAgICBkYXRh
TG9nKCJDb25zaWRlcmluZyBpbmxpbmluZyAiLCBjYWxsZWUsICIgaW50byAiLCBjdXJyZW50Q29k
ZU9yaWdpbigpLCAiXG4iKTsKICAgICAKLSAgICAvLyBGaXJzdCwgdGhlIHJlYWxseSBzaW1wbGUg
Y2hlY2tzOiBkbyB3ZSBoYXZlIGFuIGFjdHVhbCBKUyBmdW5jdGlvbj8KLSAgICBpZiAoIWNhbGxM
aW5rU3RhdHVzLmV4ZWN1dGFibGUoKSkgewotICAgICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAg
ICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgdGhlcmUgaXMgbm8gZXhlY3V0YWJsZS5c
biIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGlmIChjYWxsTGlua1N0YXR1
cy5leGVjdXRhYmxlKCktPmlzSG9zdEZ1bmN0aW9uKCkpIHsKKyAgICBGdW5jdGlvbkV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUgPSBjYWxsZWUuZnVuY3Rpb25FeGVjdXRhYmxlKCk7CisgICAgaWYgKCFl
eGVjdXRhYmxlKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZygi
ICAgIEZhaWxpbmcgYmVjYXVzZSBpdCdzIGEgaG9zdCBmdW5jdGlvbi5cbiIpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIHRo
ZXJlIGlzIG5vIGZ1bmN0aW9uIGV4ZWN1dGFibGUuIik7CisgICAgICAgIHJldHVybiBVSU5UX01B
WDsKICAgICB9CiAgICAgCi0gICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganND
YXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNhbGxMaW5rU3RhdHVzLmV4ZWN1dGFibGUoKSk7Ci0g
ICAgCiAgICAgLy8gRG9lcyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyB3ZSdyZSBwYXNzaW5nIG1h
dGNoIHRoZSBhcml0eSBvZiB0aGUgdGFyZ2V0PyBXZSBjdXJyZW50bHkKICAgICAvLyBpbmxpbmUg
b25seSBpZiB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgaXMgZ3JlYXRlciB0aGFuIG9y
IGVxdWFsIHRvIHRoZSBudW1iZXIKICAgICAvLyBhcmd1bWVudHMgZXhwZWN0ZWQuCiAgICAgaWYg
KHN0YXRpY19jYXN0PGludD4oZXhlY3V0YWJsZS0+cGFyYW1ldGVyQ291bnQoKSkgKyAxID4gYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIG9mIGFyaXR5IG1pc21hdGNoLlxuIik7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgIH0K
ICAgICAKICAgICAvLyBEbyB3ZSBoYXZlIGEgY29kZSBibG9jaywgYW5kIGRvZXMgdGhlIGNvZGUg
YmxvY2sncyBzaXplIG1hdGNoIHRoZSBoZXVyaXN0aWNzL3JlcXVpcmVtZW50cyBmb3IKQEAgLTEx
NTcsMTggKzExNTksMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9k
ZQogICAgIC8vIGlmIHdlIGhhZCBhIHN0YXRpYyBwcm9vZiBvZiB3aGF0IHdhcyBiZWluZyBjYWxs
ZWQ7IHRoaXMgbWlnaHQgaGFwcGVuIGZvciBleGFtcGxlIGlmIHlvdSBjYWxsIGEKICAgICAvLyBn
bG9iYWwgZnVuY3Rpb24sIHdoZXJlIHdhdGNocG9pbnRpbmcgZ2l2ZXMgdXMgc3RhdGljIGluZm9y
bWF0aW9uLiBPdmVyYWxsLCBpdCdzIGEgcmFyZSBjYXNlCiAgICAgLy8gYmVjYXVzZSB3ZSBleHBl
Y3QgdGhhdCBhbnkgaG90IGNhbGxlZXMgd291bGQgaGF2ZSBhbHJlYWR5IGJlZW4gY29tcGlsZWQu
Ci0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5iYXNlbGluZUNvZGVCbG9j
a0ZvcihzcGVjaWFsaXphdGlvbktpbmQpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhl
Y3V0YWJsZS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Ioa2luZCk7CiAgICAgaWYgKCFjb2RlQmxvY2sp
IHsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGlu
ZyBiZWNhdXNlIG5vIGNvZGUgYmxvY2sgYXZhaWxhYmxlLlxuIik7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgIH0KICAgICBDYXBhYmlsaXR5TGV2
ZWwgY2FwYWJpbGl0eUxldmVsID0gaW5saW5lRnVuY3Rpb25Gb3JDYXBhYmlsaXR5TGV2ZWwoCi0g
ICAgICAgIGNvZGVCbG9jaywgc3BlY2lhbGl6YXRpb25LaW5kLCBjYWxsTGlua1N0YXR1cy5pc0Ns
b3N1cmVDYWxsKCkpOworICAgICAgICBjb2RlQmxvY2ssIGtpbmQsIGNhbGxlZS5pc0Nsb3N1cmVD
YWxsKCkpOwogICAgIGlmICghY2FuSW5saW5lKGNhcGFiaWxpdHlMZXZlbCkpIHsKICAgICAgICAg
aWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIHRo
ZSBmdW5jdGlvbiBpcyBub3QgaW5saW5lYWJsZS5cbiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CiAgICAgCiAgICAgLy8gQ2hlY2sgaWYg
dGhlIGNhbGxlciBpcyBhbHJlYWR5IHRvbyBsYXJnZS4gV2UgZG8gdGhpcyBjaGVjayBoZXJlIGJl
Y2F1c2UgdGhhdCdzIGp1c3QKQEAgLTExNzgsNyArMTE4MCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAgICAgY29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5
c0JlSW5saW5lZCA9IGZhbHNlOwogICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRh
dGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgdGhlIGNhbGxlciBpcyB0b28gbGFyZ2UuXG4iKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQog
ICAgIAogICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBiZXR0ZXIgYXQgcHJlZGljdGluZyBo
b3cgbXVjaCBibG9hdCB3ZSB3aWxsIGludHJvZHVjZSBieSBpbmxpbmluZwpAQCAtMTE5Nyw3ICsx
MTk5LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgICAg
ICBpZiAoZGVwdGggPj0gT3B0aW9uczo6bWF4aW11bUlubGluaW5nRGVwdGgoKSkgewogICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcg
YmVjYXVzZSBkZXB0aCBleGNlZWRlZC5cbiIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICBpZiAoZW50cnktPmV4ZWN1dGFibGUoKSA9PSBleGVjdXRhYmxlKSB7CkBAIC0xMjA1LDE5ICsx
MjA3LDI2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAg
ICAgICAgIGlmIChyZWN1cnNpb24gPj0gT3B0aW9uczo6bWF4aW11bUlubGluaW5nUmVjdXJzaW9u
KCkpIHsKICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSByZWN1cnNpb24gZGV0ZWN0ZWQuXG4iKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIFVJTlRf
TUFYOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIAogICAgIGlmICh2ZXJi
b3NlKQotICAgICAgICBkYXRhTG9nKCIgICAgQ29tbWl0dGluZyB0byBpbmxpbmluZy5cbiIpOwor
ICAgICAgICBkYXRhTG9nKCIgICAgSW5saW5pbmcgc2hvdWxkIGJlIHBvc3NpYmxlLlxuIik7CiAg
ICAgCi0gICAgLy8gTm93IHdlIGtub3cgd2l0aG91dCBhIGRvdWJ0IHRoYXQgd2UgYXJlIGNvbW1p
dHRlZCB0byBpbmxpbmluZy4gU28gYmVnaW4gdGhlIHByb2Nlc3MKLSAgICAvLyBieSBjaGVja2lu
ZyB0aGUgY2FsbGVlIChpZiBuZWNlc3NhcnkpIGFuZCBtYWtpbmcgc3VyZSB0aGF0IGFyZ3VtZW50
cyBhbmQgdGhlIGNhbGxlZQotICAgIC8vIGFyZSBmbHVzaGVkLgotICAgIGVtaXRGdW5jdGlvbkNo
ZWNrcyhjYWxsTGlua1N0YXR1cywgY2FsbFRhcmdldE5vZGUsIHJlZ2lzdGVyT2Zmc2V0LCBzcGVj
aWFsaXphdGlvbktpbmQpOworICAgIC8vIEl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRvIGlubGluZS4K
KyAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCk7Cit9CisKK3ZvaWQgQnl0
ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRP
cGVyYW5kLCBDYWxsVmFyaWFudCBjYWxsZWUsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJh
bWU6OktpbmQga2luZCwgQ2FsbGVyTGlua2FiaWxpdHkgY2FsbGVyTGlua2FiaWxpdHkpCit7Cisg
ICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQgPSBJbmxpbmVDYWxs
RnJhbWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5kKTsKKyAgICAKKyAgICBBU1NFUlQoaW5s
aW5pbmdDb3N0KGNhbGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0
aW9uS2luZCkgIT0gVUlOVF9NQVgpOwogICAgIAorICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
Y2FsbGVlLmZ1bmN0aW9uRXhlY3V0YWJsZSgpLT5iYXNlbGluZUNvZGVCbG9ja0ZvcihzcGVjaWFs
aXphdGlvbktpbmQpOworCiAgICAgLy8gRklYTUU6IERvbid0IGZsdXNoIGNvbnN0YW50cyEKICAg
ICAKICAgICBpbnQgaW5saW5lQ2FsbEZyYW1lU3RhcnQgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1h
cE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0KSkub2Zmc2V0KCkgKyBKU1N0
YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOwpAQCAtMTIzMyw3ICsxMjQyLDcgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgICAgICByZXN1bHRSZWcgPSBtX2lu
bGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQocmVzdWx0UmVnKTsKICAgICAKICAgICBJbmxpbmVT
dGFja0VudHJ5IGlubGluZVN0YWNrRW50cnkoCi0gICAgICAgIHRoaXMsIGNvZGVCbG9jaywgY29k
ZUJsb2NrLCBtX2dyYXBoLmxhc3RCbG9jaygpLCBjYWxsTGlua1N0YXR1cy5mdW5jdGlvbigpLCBy
ZXN1bHRSZWcsCisgICAgICAgIHRoaXMsIGNvZGVCbG9jaywgY29kZUJsb2NrLCBtX2dyYXBoLmxh
c3RCbG9jaygpLCBjYWxsZWUuZnVuY3Rpb24oKSwgcmVzdWx0UmVnLAogICAgICAgICAoVmlydHVh
bFJlZ2lzdGVyKWlubGluZUNhbGxGcmFtZVN0YXJ0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywga2luZCk7CiAgICAgCiAgICAgLy8gVGhpcyBpcyB3aGVyZSB0aGUgYWN0dWFsIGlubGluaW5n
IHJlYWxseSBoYXBwZW5zLgpAQCAtMTI0Nyw4ICsxMjU2LDggQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgIAogICAgIFJFTEVBU0VfQVNTRVJUKAogICAgICAg
ICBtX2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbAotICAg
ICAgICA9PSBjYWxsTGlua1N0YXR1cy5pc0Nsb3N1cmVDYWxsKCkpOwotICAgIGlmIChjYWxsTGlu
a1N0YXR1cy5pc0Nsb3N1cmVDYWxsKCkpIHsKKyAgICAgICAgPT0gY2FsbGVlLmlzQ2xvc3VyZUNh
bGwoKSk7CisgICAgaWYgKGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpIHsKICAgICAgICAgVmFyaWFi
bGVBY2Nlc3NEYXRhKiBjYWxsZWVWYXJpYWJsZSA9CiAgICAgICAgICAgICBzZXQoVmlydHVhbFJl
Z2lzdGVyKEpTU3RhY2s6OkNhbGxlZSksIGNhbGxUYXJnZXROb2RlLCBJbW1lZGlhdGVOYWtlZFNl
dCktPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwogICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHNj
b3BlVmFyaWFibGUgPQpAQCAtMTI2Myw3ICsxMjcyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlSW5saW5pbmcoTm9kZQogICAgIG1fZ3JhcGgubV9pbmxpbmVWYXJpYWJsZURhdGEuYXBw
ZW5kKGlubGluZVZhcmlhYmxlRGF0YSk7CiAgICAgCiAgICAgcGFyc2VDb2RlQmxvY2soKTsKLSAg
ICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7IC8vIFJlc2V0IG91ciBzdGF0ZSBub3cgdGhhdCB3ZSdy
ZSBiYWNrIHRvIHRoZSBvdXRlciBjb2RlLgorICAgIGNsZWFyQ2FjaGVzKCk7IC8vIFJlc2V0IG91
ciBzdGF0ZSBub3cgdGhhdCB3ZSdyZSBiYWNrIHRvIHRoZSBvdXRlciBjb2RlLgogICAgIAogICAg
IG1fY3VycmVudEluZGV4ID0gb2xkSW5kZXg7CiAgICAgCkBAIC0xMjc2LDIwICsxMjg1LDggQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxzaXRlQmxvY2tIZWFkLT5p
c0xpbmtlZCk7CiAgICAgICAgIAotICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGNh
bGxzaXRlIGJsb2NrIGhlYWQgaXMgbm90IG93bmVkIGJ5IHRoZSBjYWxsZXIuCi0gICAgICAgIGlm
ICghaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgIC8vIEl0J3MgZGVmaW5pdGVseSBvd25lZCBieSB0aGUgY2FsbGVyLCBi
ZWNhdXNlIHRoZSBjYWxsZXIgY3JlYXRlZCBuZXcgYmxvY2tzLgotICAgICAgICAgICAgLy8gQXNz
ZXJ0IHRoYXQgdGhpcyBhbGwgYWRkcyB1cC4KLSAgICAgICAgICAgIEFTU0VSVChpbmxpbmVTdGFj
a0VudHJ5Lm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX2Jsb2NrID09IGlubGlu
ZVN0YWNrRW50cnkubV9jYWxsc2l0ZUJsb2NrSGVhZCk7Ci0gICAgICAgICAgICBBU1NFUlQoaW5s
aW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9uZWVkc05v
cm1hbExpbmtpbmcpOwotICAgICAgICAgICAgaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+bV91
bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9uZWVkc05vcm1hbExpbmtpbmcgPSBmYWxzZTsKLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIEl0J3MgZGVmaW5pdGVseSBub3Qgb3duZWQgYnkg
dGhlIGNhbGxlci4gVGVsbCB0aGUgY2FsbGVyIHRoYXQgaGUgZG9lcyBub3QKLSAgICAgICAgICAg
IC8vIG5lZWQgdG8gbGluayBoaXMgY2FsbHNpdGUgYmxvY2sgaGVhZCwgYmVjYXVzZSB3ZSBkaWQg
aXQgZm9yIGhpbS4KLSAgICAgICAgICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVy
LT5tX2NhbGxzaXRlQmxvY2tIZWFkTmVlZHNMaW5raW5nKTsKLSAgICAgICAgICAgIEFTU0VSVChp
bmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLT5tX2NhbGxzaXRlQmxvY2tIZWFkID09IGlubGluZVN0
YWNrRW50cnkubV9jYWxsc2l0ZUJsb2NrSGVhZCk7Ci0gICAgICAgICAgICBpbmxpbmVTdGFja0Vu
dHJ5Lm1fY2FsbGVyLT5tX2NhbGxzaXRlQmxvY2tIZWFkTmVlZHNMaW5raW5nID0gZmFsc2U7Ci0g
ICAgICAgIH0KKyAgICAgICAgaWYgKGNhbGxlckxpbmthYmlsaXR5ID09IENhbGxlckRvZXNOb3Jt
YWxMaW5raW5nKQorICAgICAgICAgICAgY2FuY2VsTGlua2luZ0ZvckJsb2NrKGlubGluZVN0YWNr
RW50cnkubV9jYWxsZXIsIGlubGluZVN0YWNrRW50cnkubV9jYWxsc2l0ZUJsb2NrSGVhZCk7CiAg
ICAgICAgIAogICAgICAgICBsaW5rQmxvY2tzKGlubGluZVN0YWNrRW50cnkubV91bmxpbmtlZEJs
b2NrcywgaW5saW5lU3RhY2tFbnRyeS5tX2Jsb2NrTGlua2luZ1RhcmdldHMpOwogICAgIH0gZWxz
ZQpAQCAtMTMwOCwxNiArMTMwNSwxOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxp
bmluZyhOb2RlCiAgICAgICAgICAgICAvLyBmb3IgcmVsZWFzZSBidWlsZHMgYmVjYXVzZSB0aGlz
IGJsb2NrIHdpbGwgbmV2ZXIgc2VydmUgYXMgYSBwb3RlbnRpYWwgdGFyZ2V0CiAgICAgICAgICAg
ICAvLyBpbiB0aGUgbGlua2VyJ3MgYmluYXJ5IHNlYXJjaC4KICAgICAgICAgICAgIGxhc3RCbG9j
ay0+Ynl0ZWNvZGVCZWdpbiA9IG1fY3VycmVudEluZGV4OwotICAgICAgICAgICAgbV9pbmxpbmVT
dGFja1RvcC0+bV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2so
bV9ncmFwaC5sYXN0QmxvY2soKSkpOworICAgICAgICAgICAgaWYgKGNhbGxlckxpbmthYmlsaXR5
ID09IENhbGxlckRvZXNOb3JtYWxMaW5raW5nKSB7CisgICAgICAgICAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkFkZGluZyB1bmxpbmtlZCBibG9jayAi
LCBSYXdQb2ludGVyKG1fZ3JhcGgubGFzdEJsb2NrKCkpLCAiIChvbmUgcmV0dXJuKVxuIik7Cisg
ICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fdW5saW5rZWRCbG9j
a3MuYXBwZW5kKFVubGlua2VkQmxvY2sobV9ncmFwaC5sYXN0QmxvY2soKSkpOworICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBtX2N1cnJlbnRCbG9jayA9IG1fZ3Jh
cGgubGFzdEJsb2NrKCk7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIAogICAgIC8vIElmIHdlIGdldCB0byB0aGlzIHBvaW50IHRoZW4gYWxsIGJsb2Nr
cyBtdXN0IGVuZCBpbiBzb21lIHNvcnQgb2YgdGVybWluYWxzLgogICAgIEFTU0VSVChsYXN0Qmxv
Y2stPmxhc3QoKS0+aXNUZXJtaW5hbCgpKTsKLSAgICAKIAogICAgIC8vIE5lZWQgdG8gY3JlYXRl
IGEgbmV3IGJhc2ljIGJsb2NrIGZvciB0aGUgY29udGludWF0aW9uIGF0IHRoZSBjYWxsZXIuCiAg
ICAgUmVmUHRyPEJhc2ljQmxvY2s+IGJsb2NrID0gYWRvcHRSZWYobmV3IEJhc2ljQmxvY2sobmV4
dE9mZnNldCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCBQTmFOKSk7CkBAIC0xMzMzLDIw
ICsxMzMzLDI5MyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAg
ICAgICAgIEFTU0VSVCghbm9kZS0+dGFyZ2V0QmxvY2soKSk7CiAgICAgICAgIG5vZGUtPnRhcmdl
dEJsb2NrKCkgPSBibG9jay5nZXQoKTsKICAgICAgICAgaW5saW5lU3RhY2tFbnRyeS5tX3VubGlu
a2VkQmxvY2tzW2ldLm1fbmVlZHNFYXJseVJldHVybkxpbmtpbmcgPSBmYWxzZTsKLSNpZiAhQVNT
RVJUX0RJU0FCTEVECi0gICAgICAgIGJsb2NrVG9MaW5rLT5pc0xpbmtlZCA9IHRydWU7Ci0jZW5k
aWYKKyAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBkYXRhTG9nKCJNYXJraW5nICIs
IFJhd1BvaW50ZXIoYmxvY2tUb0xpbmspLCAiIGFzIGxpbmtlZCAoanVtcHMgdG8gcmV0dXJuKVxu
Iik7CisgICAgICAgIGJsb2NrVG9MaW5rLT5kaWRMaW5rKCk7CiAgICAgfQogICAgIAogICAgIG1f
Y3VycmVudEJsb2NrID0gYmxvY2suZ2V0KCk7CiAgICAgQVNTRVJUKG1faW5saW5lU3RhY2tUb3At
Pm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuaXNFbXB0eSgpIHx8IG1faW5saW5lU3Rh
Y2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMubGFzdCgpLT5ieXRlY29kZUJl
Z2luIDwgbmV4dE9mZnNldCk7Ci0gICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fdW5s
aW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2suZ2V0KCkpKTsKLSAgICBtX2lu
bGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9j
ay5nZXQoKSk7CisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGRhdGFMb2coIkFkZGluZyB1bmxp
bmtlZCBibG9jayAiLCBSYXdQb2ludGVyKGJsb2NrLmdldCgpKSwgIiAobWFueSByZXR1cm5zKVxu
Iik7CisgICAgaWYgKGNhbGxlckxpbmthYmlsaXR5ID09IENhbGxlckRvZXNOb3JtYWxMaW5raW5n
KSB7CisgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tz
LmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLmdldCgpKSk7CisgICAgICAgIG1faW5saW5lU3Rh
Y2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuYXBwZW5kKGJsb2NrLmdldCgp
KTsKKyAgICB9CiAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhibG9jayk7CiAgICAgcHJlcGFyZVRv
UGFyc2VCbG9jaygpOworfQorCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpjYW5jZWxMaW5raW5nRm9y
QmxvY2soSW5saW5lU3RhY2tFbnRyeSogaW5saW5lU3RhY2tFbnRyeSwgQmFzaWNCbG9jayogYmxv
Y2spCit7CisgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHRoZSBjYWxsc2l0ZSBibG9jayBoZWFk
IGlzIG5vdCBvd25lZCBieSB0aGUgY2FsbGVyLgorICAgIGlmICghaW5saW5lU3RhY2tFbnRyeS0+
bV91bmxpbmtlZEJsb2Nrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gSXQncyBkZWZpbml0ZWx5
IG93bmVkIGJ5IHRoZSBjYWxsZXIsIGJlY2F1c2UgdGhlIGNhbGxlciBjcmVhdGVkIG5ldyBibG9j
a3MuCisgICAgICAgIC8vIEFzc2VydCB0aGF0IHRoaXMgYWxsIGFkZHMgdXAuCisgICAgICAgIEFT
U0VSVF9VTlVTRUQoYmxvY2ssIGlubGluZVN0YWNrRW50cnktPm1fdW5saW5rZWRCbG9ja3MubGFz
dCgpLm1fYmxvY2sgPT0gYmxvY2spOworICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS0+
bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9uZWVkc05vcm1hbExpbmtpbmcpOworICAgICAgICBp
bmxpbmVTdGFja0VudHJ5LT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX25lZWRzTm9ybWFsTGlu
a2luZyA9IGZhbHNlOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEl0J3MgZGVmaW5pdGVseSBu
b3Qgb3duZWQgYnkgdGhlIGNhbGxlci4gVGVsbCB0aGUgY2FsbGVyIHRoYXQgaGUgZG9lcyBub3QK
KyAgICAgICAgLy8gbmVlZCB0byBsaW5rIGhpcyBjYWxsc2l0ZSBibG9jayBoZWFkLCBiZWNhdXNl
IHdlIGRpZCBpdCBmb3IgaGltLgorICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS0+bV9j
YWxsc2l0ZUJsb2NrSGVhZE5lZWRzTGlua2luZyk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoYmxv
Y2ssIGlubGluZVN0YWNrRW50cnktPm1fY2FsbHNpdGVCbG9ja0hlYWQgPT0gYmxvY2spOworICAg
ICAgICBpbmxpbmVTdGFja0VudHJ5LT5tX2NhbGxzaXRlQmxvY2tIZWFkTmVlZHNMaW5raW5nID0g
ZmFsc2U7CisgICAgfQorfQorCitib29sIEJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVD
YWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcmlhbnQg
Y2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgdW5zaWduZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIENhbGxl
ckxpbmthYmlsaXR5IGNhbGxlckxpbmthYmlsaXR5LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
LCB1bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlKQoreworICAgIENvZGVTcGVjaWFsaXphdGlvbktp
bmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXphdGlvbktp
bmRGb3Ioa2luZCk7CisgICAgCisgICAgaWYgKCFpbmxpbmluZ0JhbGFuY2UpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAKLSAgICAvLyBBdCB0aGlzIHBvaW50IHdlIHJldHVybiBhbmQgY29u
dGludWUgdG8gZ2VuZXJhdGUgY29kZSBmb3IgdGhlIGNhbGxlciwgYnV0Ci0gICAgLy8gaW4gdGhl
IG5ldyBiYXNpYyBibG9jay4KKyAgICBpZiAoSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24gPSBj
YWxsZWUuaW50ZXJuYWxGdW5jdGlvbigpKSB7CisgICAgICAgIGlmIChoYW5kbGVDb25zdGFudElu
dGVybmFsRnVuY3Rpb24ocmVzdWx0T3BlcmFuZCwgZnVuY3Rpb24sIHJlZ2lzdGVyT2Zmc2V0LCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kKSkgeworICAgICAg
ICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0Tm9kZSk7CisgICAgICAgICAgICBl
bWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgICAgICAgICBpbmxpbmluZ0JhbGFuY2Ut
LTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgCisgICAgSW50cmluc2ljIGludHJpbnNpYyA9IGNhbGxlZS5pbnRy
aW5zaWNGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICBpZiAoaW50cmluc2ljICE9IE5vSW50
cmluc2ljKSB7CisgICAgICAgIGlmIChoYW5kbGVJbnRyaW5zaWMocmVzdWx0T3BlcmFuZCwgaW50
cmluc2ljLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHByZWRp
Y3Rpb24pKSB7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXROb2Rl
KTsKKyAgICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICAgICAgICAg
IGlubGluaW5nQmFsYW5jZS0tOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBteUlubGlu
aW5nQ29zdCA9IGlubGluaW5nQ29zdChjYWxsZWUsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LCBzcGVjaWFsaXphdGlvbktpbmQpOworICAgIGlmIChteUlubGluaW5nQ29zdCA+IGlubGluaW5n
QmFsYW5jZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlubGluZUNhbGwoY2Fs
bFRhcmdldE5vZGUsIHJlc3VsdE9wZXJhbmQsIGNhbGxlZSwgcmVnaXN0ZXJPZmZzZXQsIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zmc2V0LCBraW5kLCBjYWxsZXJMaW5rYWJpbGl0
eSk7CisgICAgaW5saW5pbmdCYWxhbmNlIC09IG15SW5saW5pbmdDb3N0OworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlKiBjYWxs
VGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxs
TGlua1N0YXR1cywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZy
YW1lOjpLaW5kIGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCit7CisgICAgaWYgKHZl
cmJvc2UpIHsKKyAgICAgICAgZGF0YUxvZygiSGFuZGxpbmcgaW5saW5pbmcuLi5cbiIpOworICAg
ICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CisgICAg
fQorICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5l
Q2FsbEZyYW1lOjpzcGVjaWFsaXphdGlvbktpbmRGb3Ioa2luZCk7CisgICAgCisgICAgaWYgKCFj
YWxsTGlua1N0YXR1cy5zaXplKCkpIHsKKyAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAg
ICBkYXRhTG9nKCJCYWlsaW5nIGlubGluaW5nLlxuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgCisgICAgdW5zaWduZWQgaW5saW5pbmdCYWxhbmNlID0gT3B0aW9uczo6bWF4
aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKTsKKyAg
ICBpZiAoc3BlY2lhbGl6YXRpb25LaW5kID09IENvZGVGb3JDb25zdHJ1Y3QpCisgICAgICAgIGlu
bGluaW5nQmFsYW5jZSA9IHN0ZDo6bWluKGlubGluaW5nQmFsYW5jZSwgT3B0aW9uczo6bWF4aW11
bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgpKTsK
KyAgICBpZiAoY2FsbExpbmtTdGF0dXMuaXNDbG9zdXJlQ2FsbCgpKQorICAgICAgICBpbmxpbmlu
Z0JhbGFuY2UgPSBzdGQ6Om1pbihpbmxpbmluZ0JhbGFuY2UsIE9wdGlvbnM6Om1heGltdW1GdW5j
dGlvbkZvckNsb3N1cmVDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgpKTsKKyAg
ICAKKyAgICAvLyBGaXJzdCBjaGVjayBpZiB3ZSBjYW4gYXZvaWQgY3JlYXRpbmcgY29udHJvbCBm
bG93LiBPdXIgaW5saW5lciBkb2VzIHNvbWUgQ0ZHCisgICAgLy8gc2ltcGxpZmljYXRpb24gb24g
dGhlIGZseSBhbmQgdGhpcyBoZWxwcyByZWR1Y2UgY29tcGlsZSB0aW1lcywgYnV0IHdlIGNhbiBv
bmx5IGxldmVyYWdlCisgICAgLy8gdGhpcyBpbiBjYXNlcyB3aGVyZSB3ZSBkb24ndCBuZWVkIGNv
bnRyb2wgZmxvdyBkaWFtb25kcyB0byBjaGVjayB0aGUgY2FsbGVlLgorICAgIGlmICghY2FsbExp
bmtTdGF0dXMuY291bGRUYWtlU2xvd1BhdGgoKSAmJiBjYWxsTGlua1N0YXR1cy5zaXplKCkgPT0g
MSkgeworICAgICAgICBlbWl0RnVuY3Rpb25DaGVja3MoCisgICAgICAgICAgICBjYWxsTGlua1N0
YXR1c1swXS5jYWxsZWUoKSwgY2FsbFRhcmdldE5vZGUsIHJlZ2lzdGVyT2Zmc2V0LCBzcGVjaWFs
aXphdGlvbktpbmQpOworICAgICAgICBib29sIHJlc3VsdCA9IGF0dGVtcHRUb0lubGluZUNhbGwo
CisgICAgICAgICAgICBjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0T3BlcmFuZCwgY2FsbExpbmtTdGF0
dXNbMF0uY2FsbGVlKCksIHJlZ2lzdGVyT2Zmc2V0LAorICAgICAgICAgICAgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQsIGtpbmQsIENhbGxlckRvZXNOb3JtYWxMaW5raW5n
LCBwcmVkaWN0aW9uLAorICAgICAgICAgICAgaW5saW5pbmdCYWxhbmNlKTsKKyAgICAgICAgaWYg
KCFyZXN1bHQgJiYgIWNhbGxMaW5rU3RhdHVzLmlzUHJvdmVkKCkpCisgICAgICAgICAgICB1bmRv
RnVuY3Rpb25DaGVja3MoY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVlKCkpOworICAgICAgICBpZiAo
dmVyYm9zZSkgeworICAgICAgICAgICAgZGF0YUxvZygiRG9uZSBpbmxpbmluZyAoc2ltcGxlKS5c
biIpOworICAgICAgICAgICAgZGF0YUxvZygiU3RhY2s6ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCks
ICJcbiIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAor
ICAgIC8vIFdlIG5lZWQgdG8gY3JlYXRlIHNvbWUga2luZCBvZiBzd2l0Y2ggb3ZlciBjYWxsZWUu
IEZvciBub3cgd2Ugb25seSBkbyB0aGlzIGlmIHdlIGJlbGlldmUgdGhhdAorICAgIC8vIHdlJ3Jl
IGluIHRoZSB0b3AgdGllci4gV2UgaGF2ZSB0d28gcmVhc29ucyBmb3IgdGhpczogZmlyc3QsIGl0
IHByb3ZpZGVzIHVzIGFuIG9wcG9ydHVuaXR5IHRvCisgICAgLy8gZG8gbW9yZSBkZXRhaWxlZCBw
b2x5dmFyaWFudC9wb2x5bW9ycGhpYyBwcm9maWxpbmc7IGFuZCBzZWNvbmQsIGl0IHJlZHVjZXMg
Y29tcGlsZSB0aW1lcyBpbgorICAgIC8vIHRoZSBERkcuIEFuZCBieSBwb2x5dmFyaWFudCBwcm9m
aWxpbmcgd2UgbWVhbiBwb2x5dmFyaWFudCBwcm9maWxpbmcgb2YgKnRoaXMqIGNhbGwuIE5vdGUg
dGhhdAorICAgIC8vIHdlIGNvdWxkIGltcHJvdmUgdGhhdCBhc3BlY3Qgb2YgdGhpcyBieSBkb2lu
ZyBwb2x5bW9ycGhpYyBpbmxpbmluZyBidXQgaGF2aW5nIHRoZSBwcm9maWxpbmcKKyAgICAvLyBh
bHNvLiBDdXJyZW50bHkgd2Ugb3B0IGFnYWluc3QgdGhpcywgYnV0IGl0IGNvdWxkIGJlIGludGVy
ZXN0aW5nLiBUaGF0IHdvdWxkIHJlcXVpcmUgaGF2aW5nIGEKKyAgICAvLyBzZXBhcmF0ZSBub2Rl
IGZvciBjYWxsIGVkZ2UgcHJvZmlsaW5nLgorICAgIC8vIEZJWE1FOiBJbnRyb2R1Y2UgdGhlIG5v
dGlvbiBvZiBhIHNlcGFyYXRlIGNhbGwgZWRnZSBwcm9maWxpbmcgbm9kZS4KKyAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MDMzCisgICAgaWYgKCFpc0ZU
TChtX2dyYXBoLm1fcGxhbi5tb2RlKSB8fCAhT3B0aW9uczo6ZW5hYmxlUG9seW1vcnBoaWNDYWxs
SW5saW5pbmcoKSkgeworICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgZGF0YUxv
ZygiQmFpbGluZyBpbmxpbmluZyAoaGFyZCkuXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlN0
YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIG9sZE9mZnNldCA9IG1fY3Vy
cmVudEluZGV4OworICAgIAorICAgIGJvb2wgYWxsQXJlQ2xvc3VyZUNhbGxzID0gdHJ1ZTsKKyAg
ICBib29sIGFsbEFyZURpcmVjdENhbGxzID0gdHJ1ZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBj
YWxsTGlua1N0YXR1cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgaWYgKGNhbGxMaW5rU3RhdHVz
W2ldLmNhbGxlZSgpLmlzQ2xvc3VyZUNhbGwoKSkKKyAgICAgICAgICAgIGFsbEFyZURpcmVjdENh
bGxzID0gZmFsc2U7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFsbEFyZUNsb3N1cmVDYWxs
cyA9IGZhbHNlOworICAgIH0KKyAgICAKKyAgICBOb2RlKiB0aGluZ1RvU3dpdGNoT247CisgICAg
aWYgKGFsbEFyZURpcmVjdENhbGxzKQorICAgICAgICB0aGluZ1RvU3dpdGNoT24gPSBjYWxsVGFy
Z2V0Tm9kZTsKKyAgICBlbHNlIGlmIChhbGxBcmVDbG9zdXJlQ2FsbHMpCisgICAgICAgIHRoaW5n
VG9Td2l0Y2hPbiA9IGFkZFRvR3JhcGgoR2V0RXhlY3V0YWJsZSwgY2FsbFRhcmdldE5vZGUpOwor
ICAgIGVsc2UgeworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gaGFuZGxl
IHRoaXMgY2FzZSwgYnV0IGl0J3MgdHJpY2t5IGFuZCB3ZSBkb24ndCBrbm93IG9mIGNhc2VzCisg
ICAgICAgIC8vIHdoZXJlIGl0IHdvdWxkIGJlIGJlbmVmaWNpYWwuIEFsc28sIENhbGxMaW5rU3Rh
dHVzIHdvdWxkIG1ha2UgYWxsIGNhbGxlZXMgYXBwZWFyIGxpa2UKKyAgICAgICAgLy8gY2xvc3Vy
ZSBjYWxscyBpZiBhbnkgY2FsbHMgd2VyZSBjbG9zdXJlIGNhbGxzIC0gZXhjZXB0IGZvciBjYWxs
cyB0byBpbnRlcm5hbCBmdW5jdGlvbnMuCisgICAgICAgIC8vIFNvIHRoaXMgd2lsbCBvbmx5IGFy
aXNlIGlmIHNvbWUgY2FsbGVlcyBhcmUgaW50ZXJuYWwgZnVuY3Rpb25zIGFuZCBvdGhlcnMgYXJl
IGNsb3N1cmVzLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTM2MDIwCisgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICBkYXRhTG9n
KCJCYWlsaW5nIGlubGluaW5nIChtaXgpLlxuIik7CisgICAgICAgICAgICBkYXRhTG9nKCJTdGFj
azogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBkYXRh
TG9nKCJEb2luZyBoYXJkIGlubGluaW5nLi4uXG4iKTsKKyAgICAgICAgZGF0YUxvZygiU3RhY2s6
ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOworICAgIH0KKyAgICAKKyAgICAvLyBUaGlz
IG1ha2VzIG1lIHdpc2ggdGhhdCB3ZSB3ZXJlIGluIFNTQSBhbGwgdGhlIHRpbWUuIFdlIG5lZWQg
dG8gcGljayBhIHZhcmlhYmxlIGludG8gd2hpY2ggdG8KKyAgICAvLyBzdG9yZSB0aGUgY2FsbGVl
IHNvIHRoYXQgaXQgd2lsbCBiZSBhY2Nlc3NpYmxlIHRvIGFsbCBvZiB0aGUgYmxvY2tzIHdlJ3Jl
IGFib3V0IHRvIGNyZWF0ZS4gV2UKKyAgICAvLyBnZXQgYXdheSB3aXRoIGRvaW5nIGFuIGltbWVk
aWF0ZS1zZXQgaGVyZSBiZWNhdXNlIHdlIHdvdWxkbid0IGhhdmUgcGVyZm9ybWVkIGFueSBzaWRl
IGVmZmVjdHMKKyAgICAvLyB5ZXQuCisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGRhdGFMb2co
IlJlZ2lzdGVyIG9mZnNldDogIiwgcmVnaXN0ZXJPZmZzZXQpOworICAgIFZpcnR1YWxSZWdpc3Rl
ciBjYWxsZWVSZWcocmVnaXN0ZXJPZmZzZXQgKyBKU1N0YWNrOjpDYWxsZWUpOworICAgIGNhbGxl
ZVJlZyA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChjYWxsZWVSZWcpOworICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJDYWxsZWUgaXMgZ29pbmcgdG8gYmUgIiwgY2Fs
bGVlUmVnLCAiXG4iKTsKKyAgICBzZXREaXJlY3QoY2FsbGVlUmVnLCBjYWxsVGFyZ2V0Tm9kZSwg
SW1tZWRpYXRlU2V0V2l0aEZsdXNoKTsKKyAgICAKKyAgICBTd2l0Y2hEYXRhJiBkYXRhID0gKm1f
Z3JhcGgubV9zd2l0Y2hEYXRhLmFkZCgpOworICAgIGRhdGEua2luZCA9IFN3aXRjaENlbGw7Cisg
ICAgYWRkVG9HcmFwaChTd2l0Y2gsIE9wSW5mbygmZGF0YSksIHRoaW5nVG9Td2l0Y2hPbik7Cisg
ICAgCisgICAgQmFzaWNCbG9jayogb3JpZ2luQmxvY2sgPSBtX2N1cnJlbnRCbG9jazsKKyAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygiTWFya2luZyAiLCBSYXdQb2ludGVyKG9yaWdp
bkJsb2NrKSwgIiBhcyBsaW5rZWQgKG9yaWdpbiBvZiBwb2x5IGlubGluZSlcbiIpOworICAgIG9y
aWdpbkJsb2NrLT5kaWRMaW5rKCk7CisgICAgY2FuY2VsTGlua2luZ0ZvckJsb2NrKG1faW5saW5l
U3RhY2tUb3AsIG9yaWdpbkJsb2NrKTsKKyAgICAKKyAgICAvLyBFYWNoIGlubGluZWQgY2FsbGVl
IHdpbGwgaGF2ZSBhIGxhbmRpbmcgYmxvY2sgdGhhdCBpdCByZXR1cm5zIGF0LiBUaGV5IHNob3Vs
ZCBhbGwgaGF2ZSBqdW1wcworICAgIC8vIHRvIHRoZSBjb250aW51YXRpb24gYmxvY2ssIHdoaWNo
IHdlIGNyZWF0ZSBsYXN0LgorICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gbGFuZGluZ0Jsb2NrczsK
KyAgICAKKyAgICAvLyBXZSBtYWtlIGZvcmNlIHRoaXMgdHJ1ZSBpZiB3ZSBnaXZlIHVwIG9uIGlu
bGluaW5nIGFueSBvZiB0aGUgZWRnZXMuCisgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCA9IGNh
bGxMaW5rU3RhdHVzLmNvdWxkVGFrZVNsb3dQYXRoKCk7CisgICAgCisgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgIGRhdGFMb2coIkFib3V0IHRvIGxvb3Agb3ZlciBmdW5jdGlvbnMgYXQgIiwgY3Vy
cmVudENvZGVPcmlnaW4oKSwgIi5cbiIpOworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBjYWxsTGlua1N0YXR1cy5zaXplKCk7ICsraSkgeworICAgICAgICBtX2N1cnJlbnRJbmRl
eCA9IG9sZE9mZnNldDsKKyAgICAgICAgUmVmUHRyPEJhc2ljQmxvY2s+IGJsb2NrID0gYWRvcHRS
ZWYobmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2Fscywg
UE5hTikpOworICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrLmdldCgpOworICAgICAgICBt
X2dyYXBoLmFwcGVuZEJsb2NrKGJsb2NrKTsKKyAgICAgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygp
OworICAgICAgICAKKyAgICAgICAgTm9kZSogbXlDYWxsVGFyZ2V0Tm9kZSA9IGdldERpcmVjdChj
YWxsZWVSZWcpOworICAgICAgICAKKyAgICAgICAgYm9vbCBpbmxpbmluZ1Jlc3VsdCA9IGF0dGVt
cHRUb0lubGluZUNhbGwoCisgICAgICAgICAgICBteUNhbGxUYXJnZXROb2RlLCByZXN1bHRPcGVy
YW5kLCBjYWxsTGlua1N0YXR1c1tpXS5jYWxsZWUoKSwgcmVnaXN0ZXJPZmZzZXQsCisgICAgICAg
ICAgICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbmV4dE9mZnNldCwga2luZCwgQ2FsbGVy
TGlua3NNYW51YWxseSwgcHJlZGljdGlvbiwKKyAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZSk7
CisgICAgICAgIAorICAgICAgICBpZiAoIWlubGluaW5nUmVzdWx0KSB7CisgICAgICAgICAgICAv
LyBUaGF0IGZhaWxlZCBzbyB3ZSBsZXQgdGhlIGJsb2NrIGRpZS4gTm90aGluZyBpbnRlcmVzdGlu
ZyBzaG91bGQgaGF2ZSBiZWVuIGFkZGVkIHRvCisgICAgICAgICAgICAvLyB0aGUgYmxvY2suIFdl
IGFsc28gZ2l2ZSB1cCBvbiBpbmxpbmluZyBhbnkgb2YgdGhlIChsZXNzIGZyZXF1ZW50KSBjYWxs
ZWVzLgorICAgICAgICAgICAgQVNTRVJUKG1fY3VycmVudEJsb2NrID09IGJsb2NrLmdldCgpKTsK
KyAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLm1fYmxvY2tzLmxhc3QoKSA9PSBibG9jayk7Cisg
ICAgICAgICAgICBtX2dyYXBoLmtpbGxCbG9ja0FuZEl0c0NvbnRlbnRzKGJsb2NrLmdldCgpKTsK
KyAgICAgICAgICAgIG1fZ3JhcGgubV9ibG9ja3MucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAg
CisgICAgICAgICAgICAvLyBUaGUgZmFjdCB0aGF0IGlubGluaW5nIGZhaWxlZCBtZWFucyB3ZSBu
ZWVkIGEgc2xvdyBwYXRoLgorICAgICAgICAgICAgY291bGRUYWtlU2xvd1BhdGggPSB0cnVlOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCog
dGhpbmdUb0Nhc2VPbjsKKyAgICAgICAgaWYgKGFsbEFyZURpcmVjdENhbGxzKQorICAgICAgICAg
ICAgdGhpbmdUb0Nhc2VPbiA9IGNhbGxMaW5rU3RhdHVzW2ldLmNhbGxlZSgpLm5vbkV4ZWN1dGFi
bGVDYWxsZWUoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQoYWxsQXJlQ2xv
c3VyZUNhbGxzKTsKKyAgICAgICAgICAgIHRoaW5nVG9DYXNlT24gPSBjYWxsTGlua1N0YXR1c1tp
XS5jYWxsZWUoKS5leGVjdXRhYmxlKCk7CisgICAgICAgIH0KKyAgICAgICAgZGF0YS5jYXNlcy5h
cHBlbmQoU3dpdGNoQ2FzZShtX2dyYXBoLmZyZWV6ZSh0aGluZ1RvQ2FzZU9uKSwgYmxvY2suZ2V0
KCkpKTsKKyAgICAgICAgbV9jdXJyZW50SW5kZXggPSBuZXh0T2Zmc2V0OworICAgICAgICBwcm9j
ZXNzU2V0TG9jYWxRdWV1ZSgpOyAvLyBUaGlzIG9ubHkgY29tZXMgaW50byBwbGF5IGZvciBpbnRy
aW5zaWNzLCBzaW5jZSBub3JtYWwgaW5saW5lZCBjb2RlIHdpbGwgbGVhdmUgYW4gZW1wdHkgcXVl
dWUuCisgICAgICAgIGFkZFRvR3JhcGgoSnVtcCk7CisgICAgICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICAgICAgZGF0YUxvZygiTWFya2luZyAiLCBSYXdQb2ludGVyKG1fY3VycmVudEJsb2NrKSwg
IiBhcyBsaW5rZWQgKHRhaWwgb2YgcG9seSBpbmxpbmVlKVxuIik7CisgICAgICAgIG1fY3VycmVu
dEJsb2NrLT5kaWRMaW5rKCk7CisgICAgICAgIGxhbmRpbmdCbG9ja3MuYXBwZW5kKG1fY3VycmVu
dEJsb2NrKTsKKworICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGRhdGFMb2coIkZp
bmlzaGVkIGlubGluaW5nICIsIGNhbGxMaW5rU3RhdHVzW2ldLmNhbGxlZSgpLCAiIGF0ICIsIGN1
cnJlbnRDb2RlT3JpZ2luKCksICIuXG4iKTsKKyAgICB9CisgICAgCisgICAgUmVmUHRyPEJhc2lj
QmxvY2s+IHNsb3dQYXRoQmxvY2sgPSBhZG9wdFJlZigKKyAgICAgICAgbmV3IEJhc2ljQmxvY2so
VUlOVF9NQVgsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgUE5hTikpOworICAgIG1fY3Vy
cmVudEluZGV4ID0gb2xkT2Zmc2V0OworICAgIGRhdGEuZmFsbFRocm91Z2ggPSBCcmFuY2hUYXJn
ZXQoc2xvd1BhdGhCbG9jay5nZXQoKSk7CisgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhzbG93UGF0
aEJsb2NrKTsKKyAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygiTWFya2luZyAiLCBS
YXdQb2ludGVyKHNsb3dQYXRoQmxvY2suZ2V0KCkpLCAiIGFzIGxpbmtlZCAoc2xvdyBwYXRoIGJs
b2NrKVxuIik7CisgICAgc2xvd1BhdGhCbG9jay0+ZGlkTGluaygpOworICAgIHByZXBhcmVUb1Bh
cnNlQmxvY2soKTsKKyAgICBtX2N1cnJlbnRCbG9jayA9IHNsb3dQYXRoQmxvY2suZ2V0KCk7Cisg
ICAgTm9kZSogbXlDYWxsVGFyZ2V0Tm9kZSA9IGdldERpcmVjdChjYWxsZWVSZWcpOworICAgIGlm
IChjb3VsZFRha2VTbG93UGF0aCkgeworICAgICAgICBhZGRDYWxsKAorICAgICAgICAgICAgcmVz
dWx0T3BlcmFuZCwgY2FsbE9wLCBPcEluZm8oKSwgbXlDYWxsVGFyZ2V0Tm9kZSwgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsCisgICAgICAgICAgICByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlv
bik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYWRkVG9HcmFwaChDaGVja0JhZENlbGwpOworICAg
ICAgICBhZGRUb0dyYXBoKFBoYW50b20sIG15Q2FsbFRhcmdldE5vZGUpOworICAgICAgICBlbWl0
QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgICAgIAorICAgICAgICBzZXQoVmlydHVhbFJl
Z2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBhZGRUb0dyYXBoKEJvdHRvbVZhbHVlKSk7CisgICAgfQor
CisgICAgbV9jdXJyZW50SW5kZXggPSBuZXh0T2Zmc2V0OworICAgIHByb2Nlc3NTZXRMb2NhbFF1
ZXVlKCk7CisgICAgYWRkVG9HcmFwaChKdW1wKTsKKyAgICBsYW5kaW5nQmxvY2tzLmFwcGVuZCht
X2N1cnJlbnRCbG9jayk7CisgICAgCisgICAgUmVmUHRyPEJhc2ljQmxvY2s+IGNvbnRpbnVhdGlv
bkJsb2NrID0gYWRvcHRSZWYoCisgICAgICAgIG5ldyBCYXNpY0Jsb2NrKFVJTlRfTUFYLCBtX251
bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIFBOYU4pKTsKKyAgICBtX2dyYXBoLmFwcGVuZEJsb2Nr
KGNvbnRpbnVhdGlvbkJsb2NrKTsKKyAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygi
QWRkaW5nIHVubGlua2VkIGJsb2NrICIsIFJhd1BvaW50ZXIoY29udGludWF0aW9uQmxvY2suZ2V0
KCkpLCAiIChjb250aW51YXRpb24pXG4iKTsKKyAgICBtX2lubGluZVN0YWNrVG9wLT5tX3VubGlu
a2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGNvbnRpbnVhdGlvbkJsb2NrLmdldCgpKSk7
CisgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOworICAgIG1fY3VycmVudEJsb2NrID0gY29udGlu
dWF0aW9uQmxvY2suZ2V0KCk7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gbGFuZGluZ0Js
b2Nrcy5zaXplKCk7IGktLTspCisgICAgICAgIGxhbmRpbmdCbG9ja3NbaV0tPmxhc3QoKS0+dGFy
Z2V0QmxvY2soKSA9IGNvbnRpbnVhdGlvbkJsb2NrLmdldCgpOworICAgIAorICAgIG1fY3VycmVu
dEluZGV4ID0gb2xkT2Zmc2V0OworICAgIAorICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGRh
dGFMb2coIkRvbmUgaW5saW5pbmcgKGhhcmQpLlxuIik7CisgICAgICAgIGRhdGFMb2coIlN0YWNr
OiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKKyAgICB9CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTE2NDUsNyArMTkxOCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVR5
cGVkQXJyYXlDb24KIAogYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRlcm5h
bEZ1bmN0aW9uKAogICAgIGludCByZXN1bHRPcGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5j
dGlvbiwgaW50IHJlZ2lzdGVyT2Zmc2V0LAotICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kKQorICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kKQogewogICAgIC8vIElmIHdlIGV2ZXIgZmluZCB0aGF0IHdlIGhhdmUgYSBs
b3Qgb2YgaW50ZXJuYWwgZnVuY3Rpb25zIHRoYXQgd2Ugc3BlY2lhbGl6ZSBmb3IsCiAgICAgLy8g
dGhlbiB3ZSBzaG91bGQgcHJvYmFibHkgaGF2ZSBzb21lIHNvcnQgb2YgaGFzaHRhYmxlIGRpc3Bh
dGNoLCBvciBtYXliZSBldmVuCkBAIC0xNjU0LDggKzE5MjcsNiBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVDb25zdGFudEludGVyCiAgICAgLy8gd2Uga25vdyBhYm91dCBpcyBzbWFsbCBl
bm91Z2gsIHRoYXQgaGF2aW5nIGp1c3QgYSBsaW5lYXIgY2FzY2FkZSBvZiBpZiBzdGF0ZW1lbnRz
CiAgICAgLy8gaXMgZ29vZCBlbm91Z2guCiAgICAgCi0gICAgVU5VU0VEX1BBUkFNKHByZWRpY3Rp
b24pOyAvLyBSZW1vdmUgdGhpcyBvbmNlIHdlIGRvIG1vcmUgdGhpbmdzLgotICAgIAogICAgIGlm
IChmdW5jdGlvbi0+Y2xhc3NJbmZvKCkgPT0gQXJyYXlDb25zdHJ1Y3Rvcjo6aW5mbygpKSB7CiAg
ICAgICAgIGlmIChmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCkgIT0gbV9pbmxpbmVTdGFja1RvcC0+
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMjAyMCw2ICsyMjkxLDEyIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQo
CiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnByZXBhcmVUb1BhcnNlQmxvY2soKQogeworICAgIGNs
ZWFyQ2FjaGVzKCk7CisgICAgQVNTRVJUKG1fc2V0TG9jYWxRdWV1ZS5pc0VtcHR5KCkpOworfQor
Cit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpjbGVhckNhY2hlcygpCit7CiAgICAgbV9jb25zdGFudHMu
cmVzaXplKDApOwogfQogCkBAIC0yMDU5LDkgKzIzMzYsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgfQogCiAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2V0TG9jYWxRdWV1ZS5zaXplKCk7ICsraSkK
LSAgICAgICAgICAgIG1fc2V0TG9jYWxRdWV1ZVtpXS5leGVjdXRlKHRoaXMpOwotICAgICAgICBt
X3NldExvY2FsUXVldWUucmVzaXplKDApOworICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgp
OwogICAgICAgICAKICAgICAgICAgLy8gRG9uJ3QgZXh0ZW5kIG92ZXIganVtcCBkZXN0aW5hdGlv
bnMuCiAgICAgICAgIGlmIChtX2N1cnJlbnRJbmRleCA9PSBsaW1pdCkgewpAQCAtMjIwNSwxMyAr
MjQ4MCwxMyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAg
ICAgICAgICBKU0NlbGwqIGNhY2hlZEZ1bmN0aW9uID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUu
anNDZWxsLmdldCgpOwogICAgICAgICAgICAgaWYgKCFjYWNoZWRGdW5jdGlvbiAKICAgICAgICAg
ICAgICAgICB8fCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmNvdWxkVGFrZVNs
b3dDYXNlKG1fY3VycmVudEluZGV4KQotICAgICAgICAgICAgICAgIHx8IG1faW5saW5lU3RhY2tU
b3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZEZ1bmN0aW9u
KSkgeworICAgICAgICAgICAgICAgIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUu
aGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENlbGwpKSB7CiAgICAgICAgICAgICAgICAg
c2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgZ2V0
KFZpcnR1YWxSZWdpc3RlcihKU1N0YWNrOjpDYWxsZWUpKSk7CiAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dyYXBoLmZyZWV6ZShj
YWNoZWRGdW5jdGlvbik7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGNhY2hlZEZ1bmN0aW9uLT5p
bmhlcml0cyhKU0Z1bmN0aW9uOjppbmZvKCkpKTsKICAgICAgICAgICAgICAgICBOb2RlKiBhY3R1
YWxDYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkNhbGxlZSkpOwotICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tGdW5jdGlvbiwgT3BJbmZvKGZyb3plbiksIGFjdHVh
bENhbGxlZSk7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhm
cm96ZW4pLCBhY3R1YWxDYWxsZWUpOwogICAgICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0
ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgoSlNDb25zdGFu
dCwgT3BJbmZvKGZyb3plbikpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX2dldF9jYWxsZWUpOwpAQCAtMjg5Myw3ICszMTY4LDcgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgLy8gYWxyZWFkeSBnbmFybHkg
ZW5vdWdoIGFzIGl0IGlzLgogICAgICAgICAgICAgQVNTRVJUKHBvaW50ZXJJc0Z1bmN0aW9uKGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51LnNwZWNpYWxQb2ludGVyKSk7CiAgICAgICAgICAgICBhZGRU
b0dyYXBoKAotICAgICAgICAgICAgICAgIENoZWNrRnVuY3Rpb24sCisgICAgICAgICAgICAgICAg
Q2hlY2tDZWxsLAogICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShzdGF0aWNf
Y2FzdDxKU0NlbGwqPihhY3R1YWxQb2ludGVyRm9yKAogICAgICAgICAgICAgICAgICAgICBtX2lu
bGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jaywgY3VycmVudEluc3RydWN0aW9uWzJdLnUuc3BlY2lh
bFBvaW50ZXIpKSkpLAogICAgICAgICAgICAgICAgIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpKTsKQEAgLTMzMTcsMTUgKzM1OTIsMTkgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrKEJhc2ljQmxvYwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIGJsb2NrLT5pc0xpbmtlZCA9IHRy
dWU7Ci0jZW5kaWYKKyAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygiTWFya2luZyAi
LCBSYXdQb2ludGVyKGJsb2NrKSwgIiBhcyBsaW5rZWQgKGFjdHVhbGx5IGRpZCBsaW5raW5nKVxu
Iik7CisgICAgYmxvY2stPmRpZExpbmsoKTsKIH0KIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6bGlu
a0Jsb2NrcyhWZWN0b3I8VW5saW5rZWRCbG9jaz4mIHVubGlua2VkQmxvY2tzLCBWZWN0b3I8QmFz
aWNCbG9jayo+JiBwb3NzaWJsZVRhcmdldHMpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB1bmxpbmtlZEJsb2Nrcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgIGRhdGFMb2coIkF0dGVtcHRpbmcgdG8gbGluayAiLCBSYXdQb2ludGVyKHVubGlu
a2VkQmxvY2tzW2ldLm1fYmxvY2spLCAiXG4iKTsKICAgICAgICAgaWYgKHVubGlua2VkQmxvY2tz
W2ldLm1fbmVlZHNOb3JtYWxMaW5raW5nKSB7CisgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRG9lcyBuZWVkIG5vcm1hbCBsaW5raW5nLlxuIik7
CiAgICAgICAgICAgICBsaW5rQmxvY2sodW5saW5rZWRCbG9ja3NbaV0ubV9ibG9jaywgcG9zc2li
bGVUYXJnZXRzKTsKICAgICAgICAgICAgIHVubGlua2VkQmxvY2tzW2ldLm1fbmVlZHNOb3JtYWxM
aW5raW5nID0gZmFsc2U7CiAgICAgICAgIH0KQEAgLTM0OTIsNyArMzc3MSw3IEBAIEJ5dGVDb2Rl
UGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmUKIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VDb2RlQmxvY2soKQogewotICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKKyAgICBjbGVh
ckNhY2hlcygpOwogICAgIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9pbmxpbmVTdGFj
a1RvcC0+bV9jb2RlQmxvY2s7CiAgICAgCkBAIC0zNTU4LDcgKzM4MzcsMTIgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogICAgICAgICAgICAgICAgICAgICAvLyAyKSBJ
ZiB0aGUgYnl0ZWNvZGVCZWdpbiBpcyBlcXVhbCB0byB0aGUgY3VycmVudEluZGV4LCB0aGVuIHdl
IGZhaWxlZCB0byBkbwogICAgICAgICAgICAgICAgICAgICAvLyAgICBhIHBlZXBob2xlIGNvYWxl
c2Npbmcgb2YgdGhpcyBibG9jayBpbiB0aGUgaWYgc3RhdGVtZW50IGFib3ZlLiBTbywgd2UncmUK
ICAgICAgICAgICAgICAgICAgICAgLy8gICAgZ2VuZXJhdGluZyBzdWJvcHRpbWFsIGNvZGUgYW5k
IGxlYXZpbmcgbW9yZSB3b3JrIGZvciB0aGUgQ0ZHIHNpbXBsaWZpZXIuCi0gICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChtX2lubGluZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmlzRW1wdHko
KSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX2Jsb2NrLT5i
eXRlY29kZUJlZ2luIDwgbV9jdXJyZW50SW5kZXgpOworICAgICAgICAgICAgICAgICAgICBpZiAo
IW1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuaXNFbXB0eSgpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsYXN0QmVnaW4gPQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MubGFzdCgpLm1fYmxv
Y2stPmJ5dGVjb2RlQmVnaW47CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VE
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RCZWdpbiwgbGFzdEJlZ2luID09IFVJ
TlRfTUFYIHx8IGxhc3RCZWdpbiA8IG1fY3VycmVudEluZGV4KTsKKyAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3VubGlua2VkQmxv
Y2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLmdldCgpKSk7CiAgICAgICAgICAgICAgICAg
ICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5hcHBlbmQoYmxvY2su
Z2V0KCkpOwogICAgICAgICAgICAgICAgICAgICAvLyBUaGUgZmlyc3QgYmxvY2sgaXMgZGVmaW5p
dGVseSBhbiBPU1IgdGFyZ2V0LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
UFNSZXRocmVhZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxNzI5NjEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MCw4ICs5MCwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICBub2RlLT5jaGlsZHJlbi5zZXRDaGlsZDEoRWRnZSgpKTsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOgotICAgICAgICAgICAgICAgICAg
ICBpZiAoIW5vZGUtPmNoaWxkMSgpKQorICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmNo
aWxkMSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZy
ZWUobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLT5v
cCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgUGhpOgogICAgICAgICAgICAgICAgICAg
ICBjYXNlIFNldEFyZ3VtZW50OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgJKHJldmlzaW9uIDE3Mjk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNiArMTQ0LDggQEAgdm9p
ZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgRmlhdEludDUy
OgogICAgIGNhc2UgTWFrZVJvcGU6CiAgICAgY2FzZSBWYWx1ZVRvSW50MzI6CisgICAgY2FzZSBH
ZXRFeGVjdXRhYmxlOgorICAgIGNhc2UgQm90dG9tVmFsdWU6CiAgICAgICAgIGRlZihQdXJlVmFs
dWUobm9kZSkpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIApAQCAtMjM5LDEyICsyNDEsOCBA
QCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgIGRlZihQ
dXJlVmFsdWUobm9kZSwgbm9kZS0+YXJpdGhNb2RlKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAKLSAgICBjYXNlIENoZWNrRnVuY3Rpb246Ci0gICAgICAgIGRlZihQdXJlVmFsdWUoQ2hl
Y2tGdW5jdGlvbiwgQWRqYWNlbmN5TGlzdChBZGphY2VuY3lMaXN0OjpGaXhlZCwgbm9kZS0+Y2hp
bGQxKCkpLCBub2RlLT5mdW5jdGlvbigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICAgICAgCi0g
ICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6Ci0gICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwgbm9k
ZS0+ZXhlY3V0YWJsZSgpKSk7CisgICAgY2FzZSBDaGVja0NlbGw6CisgICAgICAgIGRlZihQdXJl
VmFsdWUoQ2hlY2tDZWxsLCBBZGphY2VuY3lMaXN0KEFkamFjZW5jeUxpc3Q6OkZpeGVkLCBub2Rl
LT5jaGlsZDEoKSksIG5vZGUtPmNlbGxPcGVyYW5kKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAKICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6CkBAIC0yNjMsNiArMjYxLDcg
QEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgU3dp
dGNoOgogICAgIGNhc2UgVGhyb3c6CiAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6CisgICAgY2FzZSBD
aGVja0JhZENlbGw6CiAgICAgY2FzZSBSZXR1cm46CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAg
ICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgpAQCAtMzU4LDYgKzM1Nyw4IEBAIHZvaWQgY2xvYmJl
cml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIEFycmF5UG9wOgogICAgIGNh
c2UgQ2FsbDoKICAgICBjYXNlIENvbnN0cnVjdDoKKyAgICBjYXNlIFByb2ZpbGVkQ2FsbDoKKyAg
ICBjYXNlIFByb2ZpbGVkQ29uc3RydWN0OgogICAgIGNhc2UgTmF0aXZlQ2FsbDoKICAgICBjYXNl
IE5hdGl2ZUNvbnN0cnVjdDoKICAgICBjYXNlIFRvUHJpbWl0aXZlOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lvbiAxNzI5NjEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Mywx
MyBAQCBlbnVtIFJlZk5vZGVNb2RlIHsKICAgICBEb250UmVmTm9kZQogfTsKIAorZW51bSBTd2l0
Y2hLaW5kIHsKKyAgICBTd2l0Y2hJbW0sCisgICAgU3dpdGNoQ2hhciwKKyAgICBTd2l0Y2hTdHJp
bmcsCisgICAgU3dpdGNoQ2VsbAorfTsKKwogaW5saW5lIGJvb2wgdmVyYm9zZUNvbXBpbGF0aW9u
RW5hYmxlZChDb21waWxhdGlvbk1vZGUgbW9kZSA9IERGR01vZGUpCiB7CiAgICAgcmV0dXJuIE9w
dGlvbnM6OnZlcmJvc2VDb21waWxhdGlvbigpIHx8IE9wdGlvbnM6OmR1bXBHcmFwaEF0RWFjaFBo
YXNlKCkgfHwgKGlzRlRMKG1vZGUpICYmIE9wdGlvbnM6OnZlcmJvc2VGVExDb21waWxhdGlvbigp
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxNzI5NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTQyLDggKzE0Miw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlIENoZWNrRnVuY3Rpb246
IHsKLSAgICAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52
YWx1ZSgpICE9IG5vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkpCisgICAgICAgICAgICBjYXNlIENo
ZWNrQ2VsbDogeworICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpLnZhbHVlKCkgIT0gbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKSkKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRv
bSgpOwogICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwpAQCAtMzg0LDYgKzM4NCwy
MCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgUHJvZmls
ZWRDYWxsOgorICAgICAgICAgICAgY2FzZSBQcm9maWxlZENvbnN0cnVjdDogeworICAgICAgICAg
ICAgICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkp
Lm1fdmFsdWUpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgIC8vIElmIHdlIHdlcmUgYWJsZSB0byBwcm92ZSB0aGF0IHRoZSBjYWxs
ZWUgaXMgYSBjb25zdGFudCB0aGVuIHRoZSBub3JtYWwgY2FsbAorICAgICAgICAgICAgICAgIC8v
IGlubGluZSBjYWNoZSB3aWxsIHJlY29yZCB0aGlzIGNhbGxlZS4gVGhpcyBtZWFucyB0aGF0IHRo
ZXJlIGlzIG5vIG5lZWQgdG8gZG8gYW55CisgICAgICAgICAgICAgICAgLy8gYWRkaXRpb25hbCBw
cm9maWxpbmcuCisgICAgICAgICAgICAgICAgbV9pbnRlcnByZXRlci5leGVjdXRlKGluZGV4SW5C
bG9jayk7CisgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3Aobm9kZS0+b3AoKSA9PSBQcm9maWxl
ZENhbGwgPyBDYWxsIDogQ29uc3RydWN0KTsKKyAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDE3Mjk2MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEs
NyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRC
eUlkRmx1c2g6CiAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1
cmU6Ci0gICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6CisgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgog
ICAgIGNhc2UgR2V0QnV0dGVyZmx5OgogICAgIGNhc2UgQ2hlY2tBcnJheToKICAgICBjYXNlIEdl
dFNjb3BlOgpAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSkKICAgICBjYXNlIFB1dEdsb2JhbFZhcjoKICAgICBjYXNlIFZhcmlhYmxlV2F0Y2hw
b2ludDoKICAgICBjYXNlIFZhckluamVjdGlvbldhdGNocG9pbnQ6Ci0gICAgY2FzZSBDaGVja0Z1
bmN0aW9uOgorICAgIGNhc2UgQ2hlY2tDZWxsOgogICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVX
YXRjaHBvaW50OgogICAgIGNhc2UgUmVnRXhwRXhlYzoKICAgICBjYXNlIFJlZ0V4cFRlc3Q6CkBA
IC0xMTksNiArMTE5LDggQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgQ29uc3RydWN0OgogICAgIGNhc2UgTmF0aXZlQ2FsbDoKICAgICBjYXNlIE5hdGl2
ZUNvbnN0cnVjdDoKKyAgICBjYXNlIFByb2ZpbGVkQ2FsbDoKKyAgICBjYXNlIFByb2ZpbGVkQ29u
c3RydWN0OgogICAgIGNhc2UgQnJlYWtwb2ludDoKICAgICBjYXNlIFByb2ZpbGVXaWxsQ2FsbDoK
ICAgICBjYXNlIFByb2ZpbGVEaWRDYWxsOgpAQCAtMTk1LDYgKzE5Nyw4IEBAIGJvb2wgZG9lc0dD
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEdldERpcmVjdFBuYW1lOgogICAg
IGNhc2UgRmlhdEludDUyOgogICAgIGNhc2UgQm9vbGVhblRvTnVtYmVyOgorICAgIGNhc2UgQ2hl
Y2tCYWRDZWxsOgorICAgIGNhc2UgQm90dG9tVmFsdWU6CiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRHJpdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RyaXZlci5jcHAJKHJldmlzaW9uIDE3Mjk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksOSBAQCBz
dGF0aWMgQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZUltcGwoCiAgICAgICAgIHZtLmdldENUSVN0
dWIodmlydHVhbENvbnN0cnVjdFRoYXRQcmVzZXJ2ZXNSZWdzVGh1bmtHZW5lcmF0b3IpOwogICAg
IH0KICAgICAKKyAgICBpZiAoQ2FsbEVkZ2VMb2c6OmlzRW5hYmxlZCgpKQorICAgICAgICB2bS5l
bnN1cmVDYWxsRWRnZUxvZygpLnByb2Nlc3NMb2coKTsKKyAgICAKICAgICBSZWZQdHI8UGxhbj4g
cGxhbiA9IGFkb3B0UmVmKAogICAgICAgICBuZXcgUGxhbihjb2RlQmxvY2ssIHByb2ZpbGVkREZH
Q29kZUJsb2NrLCBtb2RlLCBvc3JFbnRyeUJ5dGVjb2RlSW5kZXgsIG11c3RIYW5kbGVWYWx1ZXMp
KTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAkocmV2aXNpb24gMTcyOTYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzM2LDYgKzczNiwxMiBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVTdHJpbmcoKSkKICAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU3dp
dGNoQ2VsbDoKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1
bGF0ZUNlbGwoKSkKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgICAgICAgICAgLy8gZWxzZSBpdCdzIGZpbmUgZm9yIHRoaXMgdG8g
aGF2ZSBVbnR5cGVkVXNlOyB3ZSB3aWxsIGhhbmRsZSB0aGlzIGJ5IGp1c3QgbWFraW5nCisgICAg
ICAgICAgICAgICAgLy8gbm9uLWNlbGxzIHRha2UgdGhlIGRlZmF1bHQgY2FzZS4KKyAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkBAIC04OTcsMTMgKzkwMywxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIAotICAgICAgICBjYXNlIENoZWNrRXhlY3V0YWJsZTogeworICAgICAgICBjYXNl
IEdldEV4ZWN1dGFibGU6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8RnVuY3Rpb25Vc2U+KG5vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAK
ICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKLSAgICAgICAgY2FzZSBDaGVja0Z1bmN0aW9u
OgorICAgICAgICBjYXNlIENoZWNrQ2VsbDoKICAgICAgICAgY2FzZSBDaGVja0hhc0luc3RhbmNl
OgogICAgICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgICAgIGNhc2UgR2V0QnV0dGVyZmx5OiB7
CkBAIC0xMTIwLDYgKzExMjYsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEFsbG9jYXRpb25Q
cm9maWxlV2F0Y2hwb2ludDoKICAgICAgICAgY2FzZSBDYWxsOgogICAgICAgICBjYXNlIENvbnN0
cnVjdDoKKyAgICAgICAgY2FzZSBQcm9maWxlZENhbGw6CisgICAgICAgIGNhc2UgUHJvZmlsZWRD
b25zdHJ1Y3Q6CiAgICAgICAgIGNhc2UgTmF0aXZlQ2FsbDoKICAgICAgICAgY2FzZSBOYXRpdmVD
b25zdHJ1Y3Q6CiAgICAgICAgIGNhc2UgTmV3T2JqZWN0OgpAQCAtMTE0OSw2ICsxMTU3LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgogICAgICAgICBjYXNl
IENvdW50RXhlY3V0aW9uOgogICAgICAgICBjYXNlIEZvcmNlT1NSRXhpdDoKKyAgICAgICAgY2Fz
ZSBDaGVja0JhZENlbGw6CiAgICAgICAgIGNhc2UgQ2hlY2tXYXRjaGRvZ1RpbWVyOgogICAgICAg
ICBjYXNlIFVucmVhY2hhYmxlOgogICAgICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgpA
QCAtMTE1OSw2ICsxMTY4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBUeXBlZEFycmF5V2F0
Y2hwb2ludDoKICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICBjYXNlIFpvbWJpZUhpbnQ6
CisgICAgICAgIGNhc2UgQm90dG9tVmFsdWU6CiAgICAgICAgICAgICBicmVhazsKICNlbHNlCiAg
ICAgICAgIGRlZmF1bHQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNw
cAkocmV2aXNpb24gMTcyOTYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMiwyNCArMjIyLDIzIEBAIHZvaWQgR3JhcGg6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBpbkNv
bnRleHQoKm5vZGUtPnN0cnVjdHVyZSgpLCBjb250ZXh0KSk7CiAgICAgaWYgKG5vZGUtPmhhc1Ry
YW5zaXRpb24oKSkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBwb2ludGVyRHVtcEluQ29udGV4
dChub2RlLT50cmFuc2l0aW9uKCksIGNvbnRleHQpKTsKLSAgICBpZiAobm9kZS0+aGFzRnVuY3Rp
b24oKSkgewotICAgICAgICBvdXQucHJpbnQoY29tbWEsICJmdW5jdGlvbigiLCBwb2ludGVyRHVt
cChub2RlLT5mdW5jdGlvbigpKSwgIiwgIik7Ci0gICAgICAgIGlmIChub2RlLT5mdW5jdGlvbigp
LT52YWx1ZSgpLmlzQ2VsbCgpCi0gICAgICAgICAgICAmJiBub2RlLT5mdW5jdGlvbigpLT52YWx1
ZSgpLmFzQ2VsbCgpLT5pbmhlcml0cyhKU0Z1bmN0aW9uOjppbmZvKCkpKSB7Ci0gICAgICAgICAg
ICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4obm9kZS0+ZnVuY3Rp
b24oKS0+dmFsdWUoKS5hc0NlbGwoKSk7Ci0gICAgICAgICAgICBpZiAoZnVuY3Rpb24tPmlzSG9z
dEZ1bmN0aW9uKCkpCi0gICAgICAgICAgICAgICAgb3V0LnByaW50KCI8aG9zdCBmdW5jdGlvbj4i
KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQoRnVuY3Rpb25F
eGVjdXRhYmxlRHVtcChmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCkpKTsKLSAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICBvdXQucHJpbnQoIjxub3QgSlNGdW5jdGlvbj4iKTsKLSAgICAgICAgb3V0
LnByaW50KCIpIik7Ci0gICAgfQotICAgIGlmIChub2RlLT5oYXNFeGVjdXRhYmxlKCkpIHsKLSAg
ICAgICAgaWYgKG5vZGUtPmV4ZWN1dGFibGUoKS0+aW5oZXJpdHMoRnVuY3Rpb25FeGVjdXRhYmxl
OjppbmZvKCkpKQotICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiZXhlY3V0YWJsZSgiLCBG
dW5jdGlvbkV4ZWN1dGFibGVEdW1wKGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihub2RlLT5l
eGVjdXRhYmxlKCkpKSwgIikiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgb3V0LnByaW50
KGNvbW1hLCAiZXhlY3V0YWJsZShub3QgZnVuY3Rpb246ICIsIFJhd1BvaW50ZXIobm9kZS0+ZXhl
Y3V0YWJsZSgpKSwgIikiKTsKKyAgICBpZiAobm9kZS0+aGFzQ2VsbE9wZXJhbmQoKSkgeworICAg
ICAgICBpZiAoIW5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkgfHwgIW5vZGUtPmNlbGxPcGVy
YW5kKCktPnZhbHVlKCkuaXNDZWxsKCkpCisgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJp
bnZhbGlkIGNlbGwgb3BlcmFuZDogIiwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKSk7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBwb2ludGVyRHVtcChu
b2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpLmFzQ2VsbCgpKSk7CisgICAgICAgICAgICBpZiAo
bm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5pc0NlbGwoKSkgeworICAgICAgICAgICAgICAg
IENhbGxWYXJpYW50IHZhcmlhbnQobm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5hc0NlbGwo
KSk7CisgICAgICAgICAgICAgICAgaWYgKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gdmFy
aWFudC5leGVjdXRhYmxlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGV4ZWN1dGFibGUt
PmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQoY29t
bWEsICI8aG9zdCBmdW5jdGlvbj4iKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoRnVu
Y3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBqc0R5bmFtaWNDYXN0PEZ1bmN0
aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0
LnByaW50KGNvbW1hLCBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wKGZ1bmN0aW9uRXhlY3V0YWJsZSkp
OworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBvdXQu
cHJpbnQoY29tbWEsICI8bm9uLWZ1bmN0aW9uIGV4ZWN1dGFibGU+Iik7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogICAgIGlmIChub2RlLT5oYXNG
dW5jdGlvbkRlY2xJbmRleCgpKSB7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSA9IG1fY29kZUJsb2NrLT5mdW5jdGlvbkRlY2wobm9kZS0+ZnVuY3Rpb25EZWNsSW5kZXgo
KSk7CkBAIC05ODUsMTAgKzk4NCw2IEBAIHZvaWQgR3JhcGg6OnZpc2l0Q2hpbGRyZW4oU2xvdFZp
c2l0b3ImIHYKICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAg
ICAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToKLSAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVu
ZFVuYmFycmllcmVkUmVhZE9ubHlQb2ludGVyKG5vZGUtPmV4ZWN1dGFibGUoKSk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIENoZWNr
U3RydWN0dXJlOgogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG5vZGUtPnN0cnVj
dHVyZVNldCgpLnNpemUoKTsgaS0tOykKICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBl
bmRVbmJhcnJpZXJlZFJlYWRPbmx5UG9pbnRlcihub2RlLT5zdHJ1Y3R1cmVTZXQoKVtpXSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2
aXNpb24gMTcyOTYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIEpJVENvbXBpbGVy
OjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAgICAgICAgICAgICB0YWJsZS5jdGlPZmZzZXRzW2pd
ID0gdGFibGUuY3RpRGVmYXVsdDsKICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gZGF0YS5jYXNl
cy5zaXplKCk7IGotLTspIHsKICAgICAgICAgICAgIFN3aXRjaENhc2UmIG15Q2FzZSA9IGRhdGEu
Y2FzZXNbal07Ci0gICAgICAgICAgICB0YWJsZS5jdGlPZmZzZXRzW215Q2FzZS52YWx1ZS5zd2l0
Y2hMb29rdXBWYWx1ZSgpIC0gdGFibGUubWluXSA9CisgICAgICAgICAgICB0YWJsZS5jdGlPZmZz
ZXRzW215Q2FzZS52YWx1ZS5zd2l0Y2hMb29rdXBWYWx1ZShkYXRhLmtpbmQpIC0gdGFibGUubWlu
XSA9CiAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1fYmxvY2tIZWFkc1tt
eUNhc2UudGFyZ2V0LmJsb2NrLT5pbmRleF0pOwogICAgICAgICB9CiAgICAgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5jcHAJKHJldmlzaW9uIDE3
Mjk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTMsNiArMTEzLDM2IEBAIFRyaVN0YXRlIExhenlKU1ZhbHVlOjpz
dHJpY3RFcXVhbChjb25zdCAKICAgICByZXR1cm4gRmFsc2VUcmlTdGF0ZTsKIH0KIAordWludHB0
cl90IExhenlKU1ZhbHVlOjpzd2l0Y2hMb29rdXBWYWx1ZShTd2l0Y2hLaW5kIGtpbmQpIGNvbnN0
Cit7CisgICAgLy8gTkIuIE5vdCBldmVyeSBraW5kIG9mIEpTVmFsdWUgd2lsbCBiZSBhYmxlIHRv
IGdpdmUgeW91IGEgc3dpdGNoIGxvb2t1cAorICAgIC8vIHZhbHVlLCBhbmQgdGhpcyBtZXRob2Qg
d2lsbCBhc3NlcnQsIG9yIGRvIGJhZCB0aGluZ3MsIGlmIHlvdSB1c2UgaXQKKyAgICAvLyBmb3Ig
YSBraW5kIG9mIHZhbHVlIHRoYXQgY2FuJ3QuCisgICAgc3dpdGNoIChtX2tpbmQpIHsKKyAgICBj
YXNlIEtub3duVmFsdWU6CisgICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBjYXNlIFN3
aXRjaEltbToKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZSgpLT52YWx1ZSgpLmFzSW50MzIoKTsK
KyAgICAgICAgY2FzZSBTd2l0Y2hDZWxsOgorICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2Fz
dDx1aW50cHRyX3Q+KHZhbHVlKCktPnZhbHVlKCkuYXNDZWxsKCkpOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICB9CisgICAgY2FzZSBTaW5nbGVDaGFyYWN0ZXJTdHJpbmc6Cisg
ICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBjYXNlIFN3aXRjaENoYXI6CisgICAgICAg
ICAgICByZXR1cm4gY2hhcmFjdGVyKCk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKIHZvaWQgTGF6eUpTVmFsdWU6OmR1bXBJ
bkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0CiB7
CiAgICAgc3dpdGNoIChtX2tpbmQpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTGF6eUpTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0xhenlKU1ZhbHVlLmgJKHJldmlzaW9uIDE3Mjk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBA
QAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKKyNpbmNsdWRlICJERkdDb21tb24uaCIKICNpbmNs
dWRlICJERkdGcm96ZW5WYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4K
IApAQCAtOTUsMjEgKzk2LDcgQEAgcHVibGljOgogICAgIAogICAgIFRyaVN0YXRlIHN0cmljdEVx
dWFsKGNvbnN0IExhenlKU1ZhbHVlJiBvdGhlcikgY29uc3Q7CiAgICAgCi0gICAgdW5zaWduZWQg
c3dpdGNoTG9va3VwVmFsdWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgLy8gTkIuIE5vdCBldmVy
eSBraW5kIG9mIEpTVmFsdWUgd2lsbCBiZSBhYmxlIHRvIGdpdmUgeW91IGEgc3dpdGNoIGxvb2t1
cAotICAgICAgICAvLyB2YWx1ZSwgYW5kIHRoaXMgbWV0aG9kIHdpbGwgYXNzZXJ0LCBvciBkbyBi
YWQgdGhpbmdzLCBpZiB5b3UgdXNlIGl0Ci0gICAgICAgIC8vIGZvciBhIGtpbmQgb2YgdmFsdWUg
dGhhdCBjYW4ndC4KLSAgICAgICAgc3dpdGNoIChtX2tpbmQpIHsKLSAgICAgICAgY2FzZSBLbm93
blZhbHVlOgotICAgICAgICAgICAgcmV0dXJuIHZhbHVlKCktPnZhbHVlKCkuYXNJbnQzMigpOwot
ICAgICAgICBjYXNlIFNpbmdsZUNoYXJhY3RlclN0cmluZzoKLSAgICAgICAgICAgIHJldHVybiBj
aGFyYWN0ZXIoKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgIH0K
KyAgICB1aW50cHRyX3Qgc3dpdGNoTG9va3VwVmFsdWUoU3dpdGNoS2luZCkgY29uc3Q7CiAgICAg
CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgdm9pZCBkdW1wSW5Db250
ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkocmV2aXNpb24gMTcyOTYxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMyw5
IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBTd2kKICAgICBjYXNlIFN3
aXRjaFN0cmluZzoKICAgICAgICAgb3V0LnByaW50KCJTd2l0Y2hTdHJpbmciKTsKICAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgU3dpdGNoQ2VsbDoKKyAgICAgICAgb3V0LnByaW50KCJTd2l0Y2hD
ZWxsIik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lv
biAxNzI5NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU3LDEyICsxNTcsNiBAQCBzdHJ1Y3QgU3dpdGNoQ2FzZSB7CiAgICAgQnJh
bmNoVGFyZ2V0IHRhcmdldDsKIH07CiAKLWVudW0gU3dpdGNoS2luZCB7Ci0gICAgU3dpdGNoSW1t
LAotICAgIFN3aXRjaENoYXIsCi0gICAgU3dpdGNoU3RyaW5nCi19OwotCiBzdHJ1Y3QgU3dpdGNo
RGF0YSB7CiAgICAgLy8gSW5pdGlhbGl6ZXMgbW9zdCBmaWVsZHMgdG8gb2J2aW91c2x5IGludmFs
aWQgdmFsdWVzLiBBbnlvbmUKICAgICAvLyBjb25zdHJ1Y3RpbmcgdGhpcyBzaG91bGQgbWFrZSBz
dXJlIHRvIGluaXRpYWxpemUgZXZlcnl0aGluZyB0aGV5CkBAIC0xODUsNiArMTc5LDcgQEAgc3Ry
dWN0IFN3aXRjaERhdGEgewogLy8gZGlzdGluZ3Vpc2hlcyBhbiBpbW1lZGlhdGUgdmFsdWUgKHR5
cGljYWxseSBhbiBpbmRleCBpbnRvIGEgQ29kZUJsb2NrIGRhdGEgc3RydWN0dXJlIC0gCiAvLyBh
IGNvbnN0YW50IGluZGV4LCBhcmd1bWVudCwgb3IgaWRlbnRpZmllcikgZnJvbSBhIE5vZGUqLgog
c3RydWN0IE9wSW5mbyB7CisgICAgT3BJbmZvKCkgOiBtX3ZhbHVlKDApIHsgfQogICAgIGV4cGxp
Y2l0IE9wSW5mbyhpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90
Pih2YWx1ZSkpIHsgfQogICAgIGV4cGxpY2l0IE9wSW5mbyh1aW50MzJfdCB2YWx1ZSkgOiBtX3Zh
bHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KICNpZiBPUyhEQVJXSU4pIHx8
IFVTRShKU1ZBTFVFNjQpCkBAIC0xMDA5LDYgKzEwMDQsOCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAg
ICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsU2FmZToKICAgICAgICAgY2FzZSBDYWxsOgogICAg
ICAgICBjYXNlIENvbnN0cnVjdDoKKyAgICAgICAgY2FzZSBQcm9maWxlZENhbGw6CisgICAgICAg
IGNhc2UgUHJvZmlsZWRDb25zdHJ1Y3Q6CiAgICAgICAgIGNhc2UgTmF0aXZlQ2FsbDoKICAgICAg
ICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6CiAgICAgICAgIGNhc2UgR2V0QnlPZmZzZXQ6CkBAIC0x
MDQ0LDkgKzEwNDEsMTEgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBtX29wSW5mbzIgPSBwcmVk
aWN0aW9uOwogICAgIH0KICAgICAKLSAgICBib29sIGNhbkJlS25vd25GdW5jdGlvbigpCisgICAg
Ym9vbCBoYXNDZWxsT3BlcmFuZCgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAg
ICAgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6CisgICAgICAgIGNhc2UgQ2hl
Y2tDZWxsOgogICAgICAgICBjYXNlIE5hdGl2ZUNvbnN0cnVjdDoKICAgICAgICAgY2FzZSBOYXRp
dmVDYWxsOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDU1LDU0ICsxMDU0LDE2IEBA
IHN0cnVjdCBOb2RlIHsKICAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgaGFzS25vd25GdW5j
dGlvbigpCi0gICAgewotICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKLSAgICAgICAgY2FzZSBOYXRp
dmVDb25zdHJ1Y3Q6Ci0gICAgICAgIGNhc2UgTmF0aXZlQ2FsbDoKLSAgICAgICAgICAgIHJldHVy
biAoYm9vbCltX29wSW5mbzsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBKU0Z1bmN0aW9uKiBrbm93bkZ1bmN0
aW9uKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjYW5CZUtub3duRnVuY3Rpb24oKSk7Ci0gICAg
ICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNGdW5jdGlvbio+KG1fb3BJbmZvKTsKLSAgICB9Ci0K
LSAgICB2b2lkIGdpdmVLbm93bkZ1bmN0aW9uKEpTRnVuY3Rpb24qIGNhbGxEYXRhKSAKKyAgICBG
cm96ZW5WYWx1ZSogY2VsbE9wZXJhbmQoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGNhbkJlS25v
d25GdW5jdGlvbigpKTsKLSAgICAgICAgbV9vcEluZm8gPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90
PihjYWxsRGF0YSk7Ci0gICAgfQotCi0gICAgYm9vbCBoYXNGdW5jdGlvbigpCi0gICAgewotICAg
ICAgICBzd2l0Y2ggKG9wKCkpIHsKLSAgICAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOgotICAgICAg
ICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDoKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgRnJvemVuVmFsdWUqIGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAg
IEFTU0VSVChoYXNGdW5jdGlvbigpKTsKKyAgICAgICAgQVNTRVJUKGhhc0NlbGxPcGVyYW5kKCkp
OwogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxGcm96ZW5WYWx1ZSo+KG1fb3BJbmZv
KTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBoYXNFeGVjdXRhYmxlKCkKKyAgICB2b2lkIHNldENl
bGxPcGVyYW5kKEZyb3plblZhbHVlKiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBvcCgp
ID09IENoZWNrRXhlY3V0YWJsZTsKLSAgICB9Ci0gICAgCi0gICAgRXhlY3V0YWJsZUJhc2UqIGV4
ZWN1dGFibGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGpzQ2FzdDxFeGVjdXRhYmxlQmFzZSo+
KHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4obV9vcEluZm8pKTsKKyAgICAgICAgQVNTRVJUKGhh
c0NlbGxPcGVyYW5kKCkpOworICAgICAgICBtX29wSW5mbyA9IGJpdHdpc2VfY2FzdDx1aW50cHRy
X3Q+KHZhbHVlKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNWYXJpYWJsZVdhdGNocG9pbnRT
ZXQoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNp
b24gMTcyOTYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewogICAgIG1hY3JvKFB1dEJ5SWRGbHVzaCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVN
dXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAogICAgIG1hY3JvKFB1dEJ5SWREaXJl
Y3QsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAogICAgIG1hY3JvKENo
ZWNrU3RydWN0dXJlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCi0gICAgbWFjcm8oQ2hlY2tFeGVjdXRh
YmxlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oR2V0RXhlY3V0YWJsZSwgTm9kZVJl
c3VsdEpTKSBcCiAgICAgbWFjcm8oUHV0U3RydWN0dXJlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAg
ICAgbWFjcm8oQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2Rl
UmVzdWx0U3RvcmFnZSkgXAogICAgIG1hY3JvKFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UsIE5v
ZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0U3RvcmFnZSkgXApAQCAtMTg1LDcgKzE4NSw4IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhWYXJpYWJsZVdhdGNo
cG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhWYXJJbmplY3Rpb25XYXRjaHBv
aW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oRnVuY3Rpb25SZWVudHJ5V2F0Y2hw
b2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAotICAgIG1hY3JvKENoZWNrRnVuY3Rpb24sIE5vZGVN
dXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhDaGVja0NlbGwsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
KyAgICBtYWNybyhDaGVja0JhZENlbGwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhB
bGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhDaGVja0luQm91bmRzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgXApAQCAtMjE0LDYgKzIx
NSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBDYWxscy4gKi9c
CiAgICAgbWFjcm8oQ2FsbCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVI
YXNWYXJBcmdzIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKICAgICBtYWNybyhDb25zdHJ1Y3QsIE5v
ZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncyB8IE5vZGVDbG9i
YmVyc1dvcmxkKSBcCisgICAgbWFjcm8oUHJvZmlsZWRDYWxsLCBOb2RlUmVzdWx0SlMgfCBOb2Rl
TXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAorICAg
IG1hY3JvKFByb2ZpbGVkQ29uc3RydWN0LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRl
IHwgTm9kZUhhc1ZhckFyZ3MgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAogICAgIG1hY3JvKE5hdGl2
ZUNhbGwsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncyB8
IE5vZGVDbG9iYmVyc1dvcmxkKSBcCiAgICAgbWFjcm8oTmF0aXZlQ29uc3RydWN0LCBOb2RlUmVz
dWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MgfCBOb2RlQ2xvYmJlcnNX
b3JsZCkgXAogICAgIFwKQEAgLTI4Niw2ICsyODksMTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogICAgIC8qIGRpZmZlcmVudCBjb21waWxlci4gKi9cCiAgICAgbWFjcm8oRm9y
Y2VPU1JFeGl0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgXAorICAgIC8qIFZlbmRzIGEgYm90
dG9tIEpTIHZhbHVlLiBJdCBpcyBpbnZhbGlkIHRvIGV2ZXIgZXhlY3V0ZSB0aGlzLiBVc2VmdWwg
Zm9yIGNhc2VzICovXAorICAgIC8qIHdoZXJlIHdlIGtub3cgdGhhdCB3ZSB3b3VsZCBoYXZlIGV4
aXRlZCBidXQgd2UnZCBsaWtlIHRvIHN0aWxsIHRyYWNrIHRoZSBjb250cm9sICovXAorICAgIC8q
IGZsb3cuICovXAorICAgIG1hY3JvKEJvdHRvbVZhbHVlLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBc
CiAgICAgLyogQ2hlY2tzIHRoZSB3YXRjaGRvZyB0aW1lci4gSWYgdGhlIHRpbWVyIGhhcyBmaXJl
ZCwgd2UgT1NSIGV4aXQgdG8gdGhlICovIFwKICAgICAvKiBiYXNlbGluZSBKSVQgdG8gcmVkbyB0
aGUgd2F0Y2hkb2cgdGltZXIgY2hlY2ssIGFuZCBzZXJ2aWNlIHRoZSB0aW1lci4gKi8gXAogICAg
IG1hY3JvKENoZWNrV2F0Y2hkb2dUaW1lciwgTm9kZU11c3RHZW5lcmF0ZSkgXApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21DYW5v
bmljYWxpemF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNzI5NjEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05Miw4ICs5MiwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlLT5jaGlsZHJlbi5yZW1vdmVFZGdlKGktLSk7CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGls
ZHJlbi5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3Iu
ZnJlZShub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBu
b2RlLT5jb252ZXJ0VG9DaGVjaygpOwogICAgICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcAko
cmV2aXNpb24gMTcyOTYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9t
UmVtb3ZhbFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDYgKzEyNSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTQyLDYgKzE0Myw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2Rl
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTE0OSw4ICsx
NTEsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgY2FzZSBIYXJkUGhhbnRvbTogewotICAgICAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAJKHJldmlzaW9uIDE3Mjk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODgsNiArMTg4LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXREaXJlY3RQbmFtZToKICAg
ICAgICAgY2FzZSBDYWxsOgogICAgICAgICBjYXNlIENvbnN0cnVjdDoKKyAgICAgICAgY2FzZSBQ
cm9maWxlZENhbGw6CisgICAgICAgIGNhc2UgUHJvZmlsZWRDb25zdHJ1Y3Q6CiAgICAgICAgIGNh
c2UgTmF0aXZlQ2FsbDoKICAgICAgICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6CiAgICAgICAgIGNh
c2UgR2V0R2xvYmFsVmFyOgpAQCAtMTk2LDcgKzE5OCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgR2V0R2V0dGVy
U2V0dGVyQnlPZmZzZXQ6IHsKKyAgICAgICAgY2FzZSBHZXRHZXR0ZXJTZXR0ZXJCeU9mZnNldDoK
KyAgICAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNl
dFByZWRpY3Rpb24oU3BlY0NlbGxPdGhlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQpAQCAtNjQyLDggKzY0NSw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRm9yY2VPU1JFeGl0
OgogICAgICAgICBjYXNlIFNldEFyZ3VtZW50OgogICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJl
OgotICAgICAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToKLSAgICAgICAgY2FzZSBDaGVja0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIENoZWNrQ2VsbDoKKyAgICAgICAgY2FzZSBDaGVja0JhZENlbGw6
CiAgICAgICAgIGNhc2UgUHV0U3RydWN0dXJlOgogICAgICAgICBjYXNlIFRlYXJPZmZBY3RpdmF0
aW9uOgogICAgICAgICBjYXNlIFRlYXJPZmZBcmd1bWVudHM6CkBAIC02NjUsNiArNjY4LDEwIEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgWm9tYmllSGludDoKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgCisgICAgICAgIC8vIFRoaXMgZ2V0cyBpZ25vcmVkIGJlY2F1c2UgaXQgb25s
eSBwcmV0ZW5kcyB0byBwcm9kdWNlIGEgdmFsdWUuCisgICAgICAgIGNhc2UgQm90dG9tVmFsdWU6
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgICAgICAvLyBUaGlzIGdldHMg
aWdub3JlZCBiZWNhdXNlIGl0IGFscmVhZHkgaGFzIGEgcHJlZGljdGlvbi4KICAgICAgICAgY2Fz
ZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDE3Mjk2
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0
U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgUHV0QnlJZEZsdXNoOgogICAgIGNhc2UgUHV0QnlJZERp
cmVjdDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgotICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxl
OgorICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNlIEdldEJ1dHRlcmZseToKICAgICBj
YXNlIENoZWNrQXJyYXk6CiAgICAgY2FzZSBBcnJheWlmeToKQEAgLTE3NCw3ICsxNzQsOCBAQCBi
b29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBQdXRHbG9i
YWxWYXI6CiAgICAgY2FzZSBWYXJpYWJsZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBWYXJJbmplY3Rp
b25XYXRjaHBvaW50OgotICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKKyAgICBjYXNlIENoZWNrQ2Vs
bDoKKyAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0
Y2hwb2ludDoKICAgICBjYXNlIFJlZ0V4cEV4ZWM6CiAgICAgY2FzZSBSZWdFeHBUZXN0OgpAQCAt
MTg3LDYgKzE4OCw4IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QK
ICAgICBjYXNlIENvbXBhcmVTdHJpY3RFcToKICAgICBjYXNlIENhbGw6CiAgICAgY2FzZSBDb25z
dHJ1Y3Q6CisgICAgY2FzZSBQcm9maWxlZENhbGw6CisgICAgY2FzZSBQcm9maWxlZENvbnN0cnVj
dDoKICAgICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5ld0FycmF5OgogICAgIGNhc2UgTmV3
QXJyYXlXaXRoU2l6ZToKQEAgLTI3Myw2ICsyNzYsMTEgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFi
c3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OgogICAgICAgICBy
ZXR1cm4gZmFsc2U7IC8vIFRPRE86IGFkZCBhIGNoZWNrIGZvciBhbHJlYWR5IGNoZWNrZWQuICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNzY5CiAKKyAgICBjYXNl
IEJvdHRvbVZhbHVlOgorICAgICAgICAvLyBJZiBpbiBkb3VidCwgYXNzdW1lIHRoYXQgdGhpcyBp
c24ndCBzYWZlIHRvIGV4ZWN1dGUsIGp1c3QgYmVjYXVzZSB3ZSBoYXZlIG5vIHdheSBvZgorICAg
ICAgICAvLyBjb21waWxpbmcgdGhpcyBub2RlLgorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAg
ICBjYXNlIEdldEJ5VmFsOgogICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAg
ICBjYXNlIEdldEFycmF5TGVuZ3RoOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxNzI5NjEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02NDAsOSArNjQwLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU1pc2NTdHJpY3RFcQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBu
b2RlKQogewotICAgIGJvb2wgaXNDYWxsID0gbm9kZS0+b3AoKSA9PSBDYWxsOworICAgIGJvb2wg
aXNDYWxsID0gbm9kZS0+b3AoKSA9PSBDYWxsIHx8IG5vZGUtPm9wKCkgPT0gUHJvZmlsZWRDYWxs
OwogICAgIGlmICghaXNDYWxsKQotICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBDb25zdHJ1
Y3QpOworICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBDb25zdHJ1Y3QgfHwgbm9kZS0+b3Ao
KSA9PSBQcm9maWxlZENvbnN0cnVjdCk7CiAKICAgICAvLyBGb3IgY29uc3RydWN0b3JzLCB0aGUg
dGhpcyBhcmd1bWVudCBpcyBub3QgcGFzc2VkIGJ1dCB3ZSBoYXZlIHRvIG1ha2Ugc3BhY2UKICAg
ICAvLyBmb3IgaXQuCkBAIC02ODksNiArNjg5LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVt
aXRDYWxsKE5vZGUqIG5vZGUKIAogICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4obm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKICAgICAKKyAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2ppdC5j
b2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7CisKKyAgICBpZiAobm9kZS0+b3AoKSA9PSBQ
cm9maWxlZENhbGwgfHwgbm9kZS0+b3AoKSA9PSBQcm9maWxlZENvbnN0cnVjdCkgeworICAgICAg
ICBtX2ppdC52bSgpLT5jYWxsRWRnZUxvZy0+ZW1pdExvZ0NvZGUoCisgICAgICAgICAgICBtX2pp
dCwgaW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBjYWxsZWUuanNWYWx1ZVJlZ3MoKSk7CisgICAgfQor
ICAgIAogICAgIHNsb3dQYXRoLmFwcGVuZChicmFuY2hOb3RDZWxsKGNhbGxlZS5qc1ZhbHVlUmVn
cygpKSk7CiAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFB0cldpdGhQYXRjaChNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxlZVBheWxvYWRHUFIsIHRhcmdldFRvQ2hlY2spKTsK
ICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNhbGxlZVBheWxvYWRH
UFIsIE9CSkVDVF9PRkZTRVRPRihKU0Z1bmN0aW9uLCBtX3Njb3BlKSksIHJlc3VsdFBheWxvYWRH
UFIpOwpAQCAtNzEzLDcgKzcyMCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5v
ZGUqIG5vZGUKICAgICAgICAgbV9qaXQubW92ZShjYWxsZWVQYXlsb2FkR1BSLCBHUFJJbmZvOjpy
ZWdUMCk7CiAgICAgICAgIG1faml0Lm1vdmUoY2FsbGVlVGFnR1BSLCBHUFJJbmZvOjpyZWdUMSk7
CiAgICAgfQotICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRD
YWxsTGlua0luZm8oKTsKICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKGluZm8pLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgc2xvd0Nh
bGwgPSBtX2ppdC5uZWFyQ2FsbCgpOwogCkBAIC0zNjc1LDE4ICszNjgxLDIxIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUdldEFycmF5
TGVuZ3RoKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgY2FzZSBDaGVja0Z1
bmN0aW9uOiB7Ci0gICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZ1bmN0aW9uKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRGdW5jdGlvbiwgSlNW
YWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoZnVuY3Rpb24uZ3ByKCkpLCBub2RlLT5jaGlsZDEoKSwg
bV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGZ1bmN0aW9uLmdwcigp
LCBub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpLmFzQ2VsbCgpKSk7CisgICAgY2FzZSBDaGVja0Nl
bGw6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2VsbCh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkQ2VsbCwgSlNWYWx1ZVNvdXJjZTo6
dW5ib3hlZENlbGwoY2VsbC5ncHIoKSksIG5vZGUtPmNoaWxkMSgpLCBtX2ppdC5icmFuY2hXZWFr
UHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgY2VsbC5ncHIoKSwgbm9kZS0+Y2VsbE9wZXJhbmQo
KS0+dmFsdWUoKS5hc0NlbGwoKSkpOwogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6IHsKKyAgICBjYXNlIEdl
dEV4ZWN1dGFibGU6IHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBzcGVjdWxhdGVDZWxsVHlwZShub2RlLT5jaGls
ZDEoKSwgZnVuY3Rpb24uZ3ByKCksIFNwZWNGdW5jdGlvbiwgSlNGdW5jdGlvblR5cGUpOwotICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZEV4ZWN1dGFibGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94
ZWRDZWxsKGZ1bmN0aW9uLmdwcigpKSwgbm9kZS0+Y2hpbGQxKCksIG1faml0LmJyYW5jaFdlYWtQ
dHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhmdW5jdGlvbi5n
cHIoKSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCBub2RlLT5leGVjdXRhYmxl
KCkpKTsKLSAgICAgICAgbm9SZXN1bHQobm9kZSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcywgUmV1c2UsIGZ1bmN0aW9uKTsKKyAgICAgICAgR1BSUmVnIGZ1bmN0aW9uR1BSID0g
ZnVuY3Rpb24uZ3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7
CisgICAgICAgIHNwZWN1bGF0ZUNlbGxUeXBlKG5vZGUtPmNoaWxkMSgpLCBmdW5jdGlvbkdQUiwg
U3BlY0Z1bmN0aW9uLCBKU0Z1bmN0aW9uVHlwZSk7CisgICAgICAgIG1faml0LmxvYWRQdHIoSklU
Q29tcGlsZXI6OkFkZHJlc3MoZnVuY3Rpb25HUFIsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0
YWJsZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAtNDE1Niw2ICs0MTY1LDggQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgY2FzZSBDYWxs
OgogICAgIGNhc2UgQ29uc3RydWN0OgorICAgIGNhc2UgUHJvZmlsZWRDYWxsOgorICAgIGNhc2Ug
UHJvZmlsZWRDb25zdHJ1Y3Q6CiAgICAgICAgIGVtaXRDYWxsKG5vZGUpOwogICAgICAgICBicmVh
azsKIApAQCAtNDkwMiw2ICs0OTEzLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKICAgICBjYXNlIE5hdGl2ZUNh
bGw6CiAgICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6CisgICAgY2FzZSBDaGVja0JhZENlbGw6Cisg
ICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxNzI5NjEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02MjYsMTAgKzYyNiw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVN
aXNjU3RyaWN0RXEKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkK
IHsKLQotICAgIGJvb2wgaXNDYWxsID0gbm9kZS0+b3AoKSA9PSBDYWxsOworICAgIGJvb2wgaXND
YWxsID0gbm9kZS0+b3AoKSA9PSBDYWxsIHx8IG5vZGUtPm9wKCkgPT0gUHJvZmlsZWRDYWxsOwog
ICAgIGlmICghaXNDYWxsKQotICAgICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUs
IG5vZGUtPm9wKCkgPT0gQ29uc3RydWN0KTsKKyAgICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFw
aCgpLCBub2RlLCBub2RlLT5vcCgpID09IENvbnN0cnVjdCB8fCBub2RlLT5vcCgpID09IFByb2Zp
bGVkQ29uc3RydWN0KTsKICAgICAKICAgICAvLyBGb3IgY29uc3RydWN0b3JzLCB0aGUgdGhpcyBh
cmd1bWVudCBpcyBub3QgcGFzc2VkIGJ1dCB3ZSBoYXZlIHRvIG1ha2Ugc3BhY2UKICAgICAvLyBm
b3IgaXQuCkBAIC02NzAsNiArNjY5LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxs
KE5vZGUqIG5vZGUKIAogICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4obm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKICAgICAKKyAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IG1faml0
LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKKyAgICAKKyAgICBpZiAobm9kZS0+b3Ao
KSA9PSBQcm9maWxlZENhbGwgfHwgbm9kZS0+b3AoKSA9PSBQcm9maWxlZENvbnN0cnVjdCkgewor
ICAgICAgICBtX2ppdC52bSgpLT5jYWxsRWRnZUxvZy0+ZW1pdExvZ0NvZGUoCisgICAgICAgICAg
ICBtX2ppdCwgY2FsbExpbmtJbmZvLT5jYWxsRWRnZVByb2ZpbGUsIEpTVmFsdWVSZWdzKGNhbGxl
ZUdQUikpOworICAgIH0KKwogICAgIHNsb3dQYXRoID0gbV9qaXQuYnJhbmNoUHRyV2l0aFBhdGNo
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgY2FsbGVlR1BSLCB0YXJnZXRUb0NoZWNrLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigwKSk7CiAKICAgICBtX2ppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGNhbGxlZUdQUiwgT0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rpb24s
IG1fc2NvcGUpKSwgcmVzdWx0R1BSKTsKQEAgLTY4Miw3ICs2ODgsNiBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgc2xvd1BhdGgubGluaygmbV9qaXQpOwog
ICAgIAogICAgIG1faml0Lm1vdmUoY2FsbGVlR1BSLCBHUFJJbmZvOjpyZWdUMCk7IC8vIENhbGxl
ZSBuZWVkcyB0byBiZSBpbiByZWdUMAotICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0g
bV9qaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbygpOwogICAgIG1faml0Lm1vdmUoTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6cmVnVDIp
OyAvLyBMaW5rIGluZm8gbmVlZHMgdG8gYmUgaW4gcmVnVDIKICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBzbG93Q2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7CiAgICAgCkBAIC0zNzY4LDE4ICszNzczLDIx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29t
cGlsZUdldEFycmF5TGVuZ3RoKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAg
Y2FzZSBDaGVja0Z1bmN0aW9uOiB7Ci0gICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZ1bmN0
aW9uKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRG
dW5jdGlvbiwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoZnVuY3Rpb24uZ3ByKCkpLCBub2Rl
LT5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGZ1
bmN0aW9uLmdwcigpLCBub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpLmFzQ2VsbCgpKSk7CisgICAg
Y2FzZSBDaGVja0NlbGw6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2VsbCh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkQ2VsbCwgSlNW
YWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbC5ncHIoKSksIG5vZGUtPmNoaWxkMSgpLCBtX2pp
dC5icmFuY2hXZWFrUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgY2VsbC5ncHIoKSwgbm9kZS0+
Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5hc0NlbGwoKSkpOwogICAgICAgICBub1Jlc3VsdChub2Rl
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIENoZWNrRXhlY3V0
YWJsZTogeworICAgIGNhc2UgR2V0RXhlY3V0YWJsZTogewogICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBmdW5jdGlvbih0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIHNwZWN1bGF0
ZUNlbGxUeXBlKG5vZGUtPmNoaWxkMSgpLCBmdW5jdGlvbi5ncHIoKSwgU3BlY0Z1bmN0aW9uLCBK
U0Z1bmN0aW9uVHlwZSk7Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkRXhlY3V0YWJsZSwg
SlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoZnVuY3Rpb24uZ3ByKCkpLCBub2RlLT5jaGlsZDEo
KSwgbV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVy
OjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUo
KSksIG5vZGUtPmV4ZWN1dGFibGUoKSkpOwotICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAg
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgZnVuY3Rpb24pOworICAgICAgICBH
UFJSZWcgZnVuY3Rpb25HUFIgPSBmdW5jdGlvbi5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgc3BlY3VsYXRlQ2VsbFR5cGUobm9kZS0+Y2hp
bGQxKCksIGZ1bmN0aW9uR1BSLCBTcGVjRnVuY3Rpb24sIEpTRnVuY3Rpb25UeXBlKTsKKyAgICAg
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhmdW5jdGlvbkdQUiwgSlNGdW5j
dGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCByZXN1bHRHUFIpOworICAgICAgICBjZWxsUmVz
dWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkBA
IC00MjE5LDkgKzQyMjcsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogCiAgICAgY2FzZSBDYWxsOgogICAgIGNhc2UgQ29uc3RydWN0OgorICAgIGNhc2UgUHJv
ZmlsZWRDYWxsOgorICAgIGNhc2UgUHJvZmlsZWRDb25zdHJ1Y3Q6CiAgICAgICAgIGVtaXRDYWxs
KG5vZGUpOwogICAgICAgICBicmVhazsKLQorICAgICAgICAKICAgICBjYXNlIENyZWF0ZUFjdGl2
YXRpb246IHsKICAgICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCAhbm9kZS0+
b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSk7CiAgICAgICAgIApAQCAtNDk3MCw3ICs0
OTgwLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNh
c2UgTXVsdGlHZXRCeU9mZnNldDoKICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CiAgICAgY2Fz
ZSBGaWF0SW50NTI6Ci0gICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiVW5l
eHBlY3RlZCBGVEwgbm9kZSIpOworICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgorICAgIGNhc2UgQm90
dG9tVmFsdWU6CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiVW5leHBl
Y3RlZCBub2RlIik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE3Mjk2
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MzU0LDYgKzUzNTQsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
ZW1pdFN3aXRjaChOb2RlKiBubwogICAgIGNhc2UgU3dpdGNoU3RyaW5nOiB7CiAgICAgICAgIGVt
aXRTd2l0Y2hTdHJpbmcobm9kZSwgZGF0YSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
Y2FzZSBTd2l0Y2hDZWxsOiB7CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2Rl
LCAiQmFkIHN3aXRjaCBraW5kIik7CisgICAgICAgIHJldHVybjsKICAgICB9IH0KICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAJ
KHJldmlzaW9uIDE3Mjk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0
dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MiwxMCArNjIsNiBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5k
ZXgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7
Ci0gICAgICAgICAgICAgICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6Ci0gICAgICAgICAgICAgICAg
ICAgIHJlZ2lzdGVyU3RydWN0dXJlKG5vZGUtPmV4ZWN1dGFibGUoKS0+c3RydWN0dXJlKCkpOwot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0
cnVjdHVyZXMobm9kZS0+c3RydWN0dXJlU2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBicmVh
azsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rp
b25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdU
aWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTcyOTYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTAsMTMgKzUwLDE3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFPcHRp
b25zOjp1c2VGVExKSVQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0g
ICAgICAgIGlmIChtX2dyYXBoLm1fcHJvZmlsZWRCbG9jay0+bV9kaWRGYWlsRlRMQ29tcGlsYXRp
b24pCisgICAgICAgIGlmIChtX2dyYXBoLm1fcHJvZmlsZWRCbG9jay0+bV9kaWRGYWlsRlRMQ29t
cGlsYXRpb24pIHsKKyAgICAgICAgICAgIHJlbW92ZUZUTFByb2ZpbGluZygpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgICAgIAogI2lmIEVOQUJMRShGVExfSklU
KQogICAgICAgICBGVEw6OkNhcGFiaWxpdHlMZXZlbCBsZXZlbCA9IEZUTDo6Y2FuQ29tcGlsZSht
X2dyYXBoKTsKLSAgICAgICAgaWYgKGxldmVsID09IEZUTDo6Q2Fubm90Q29tcGlsZSkKKyAgICAg
ICAgaWYgKGxldmVsID09IEZUTDo6Q2Fubm90Q29tcGlsZSkgeworICAgICAgICAgICAgcmVtb3Zl
RlRMUHJvZmlsaW5nKCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIGlmICghT3B0aW9uczo6ZW5hYmxlT1NSRW50cnlUb0ZUTCgpKQogICAg
ICAgICAgICAgbGV2ZWwgPSBGVEw6OkNhbkNvbXBpbGU7CkBAIC0xMTgsNiArMTIyLDMyIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQog
ICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIHJlbW92ZUZUTFByb2ZpbGluZygpCisgICAgewor
ICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7
IGJsb2NrSW5kZXgtLTspIHsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFw
aC5ibG9jayhibG9ja0luZGV4KTsKKyAgICAgICAgICAgIGlmICghYmxvY2spCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQg
bm9kZUluZGV4ID0gMDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsK
KyAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7CisgICAg
ICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBQ
cm9maWxlZENhbGw6CisgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wKENhbGwpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgY2FzZSBQcm9maWxlZENvbnN0cnVjdDoKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+
c2V0T3AoQ29uc3RydWN0KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KIH07CiAKIGJvb2wgcGVyZm9ybVRpZXJVcENoZWNrSW5qZWN0aW9uKEdyYXBoJiBncmFwaCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lv
biAxNzI5NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjAwLDcgKzIwMCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFtYXlFeGl0KG1fZ3JhcGgsIG5v
ZGUpIHx8IG5vZGUtPm9yaWdpbi5mb3JFeGl0LmlzU2V0KCkpOwogICAgICAgICAgICAgICAgIFZB
TElEQVRFKChub2RlKSwgIW5vZGUtPmhhc1N0cnVjdHVyZSgpIHx8ICEhbm9kZS0+c3RydWN0dXJl
KCkpOwotICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhhc0Z1bmN0aW9u
KCkgfHwgbm9kZS0+ZnVuY3Rpb24oKS0+dmFsdWUoKS5pc0Z1bmN0aW9uKCkpOworICAgICAgICAg
ICAgICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhhc0NlbGxPcGVyYW5kKCkgfHwgbm9kZS0+
Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5pc0NlbGwoKSk7CisgICAgICAgICAgICAgICAgVkFMSURB
VEUoKG5vZGUpLCAhbm9kZS0+aGFzQ2VsbE9wZXJhbmQoKSB8fCAhIW5vZGUtPmNlbGxPcGVyYW5k
KCktPnZhbHVlKCkpOwogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoIShu
b2RlLT5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlm
ICghbm9kZS0+Y2hpbGQyKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dh
dGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE3
Mjk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExNCw3ICsxMTQsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBbGxvY2F0aW9uUHJv
ZmlsZVdhdGNocG9pbnQ6Ci0gICAgICAgICAgICBhZGRMYXppbHkoanNDYXN0PEpTRnVuY3Rpb24q
PihtX25vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkpLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9p
bnRTZXQoKSk7CisgICAgICAgICAgICBhZGRMYXppbHkoanNDYXN0PEpTRnVuY3Rpb24qPihtX25v
ZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkpLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRT
ZXQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFZh
cmlhYmxlV2F0Y2hwb2ludDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDE3Mjk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEw
NCw4IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNl
IFB1dENsb3N1cmVWYXI6CiAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKICAgICBjYXNlIFN0
cmluZ0NoYXJBdDoKLSAgICBjYXNlIENoZWNrRnVuY3Rpb246CisgICAgY2FzZSBDaGVja0NlbGw6
CisgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgogICAg
IGNhc2UgQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBSZWFsbG9jYXRlUHJvcGVy
dHlTdG9yYWdlOgpAQCAtMTI2LDcgKzEyNyw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2Fu
Q29tcGlsZShOb2RlKiAKICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6CiAgICAgY2Fz
ZSBDaGVjazoKICAgICBjYXNlIENvdW50RXhlY3V0aW9uOgotICAgIGNhc2UgQ2hlY2tFeGVjdXRh
YmxlOgorICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNlIEdldFNjb3BlOgogICAgIGNh
c2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OgogICAgIGNhc2UgQ2hlY2tBcmd1bWVudHNO
b3RDcmVhdGVkOgpAQCAtMTY2LDggKzE2NywxNCBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNh
bkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBHZXRHZW5lcmljUHJvcGVydHlFbnVtZXJhdG9yOgog
ICAgIGNhc2UgR2V0RW51bWVyYXRvclBuYW1lOgogICAgIGNhc2UgVG9JbmRleFN0cmluZzoKKyAg
ICBjYXNlIEJvdHRvbVZhbHVlOgogICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUHJvZmlsZWRDYWxsOgorICAgIGNhc2UgUHJvZmlsZWRDb25zdHJ1Y3Q6
CisgICAgICAgIC8vIFRoZXNlIGFyZSBPSyBub3QgYmVjYXVzZSB0aGUgRlRMIGNhbiBzdXBwb3J0
IHRoZW0sIGJ1dCBiZWNhdXNlIGlmIHRoZSBERkcgc2VlcyBvbmUgb2YKKyAgICAgICAgLy8gdGhl
c2UgdGhlbiB0aGUgRlRMIHdpbGwgc2VlIGEgbm9ybWFsIENhbGwvQ29uc3RydWN0LgorICAgICAg
ICBicmVhazsKICAgICBjYXNlIElkZW50aXR5OgogICAgICAgICAvLyBObyBiYWNrZW5kIGhhbmRs
ZXMgdGhpcyBiZWNhdXNlIGl0IHdpbGwgYmUgb3B0aW1pemVkIG91dC4gQnV0IHdlIG1heSBjaGVj
awogICAgICAgICAvLyBmb3IgY2FwYWJpbGl0aWVzIGJlZm9yZSBvcHRpbWl6YXRpb24uIEl0IHdv
dWxkIGJlIGEgZGVlcCBlcnJvciB0byByZW1vdmUgdGhpcwpAQCAtMzI2LDYgKzMzMyw3IEBAIGlu
bGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICAgICAgc3dpdGNoIChu
b2RlLT5zd2l0Y2hEYXRhKCktPmtpbmQpIHsKICAgICAgICAgY2FzZSBTd2l0Y2hJbW06CiAgICAg
ICAgIGNhc2UgU3dpdGNoQ2hhcjoKKyAgICAgICAgY2FzZSBTd2l0Y2hDZWxsOgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gQ2Fubm90Q29t
cGlsZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0xMVk0uY3BwCShyZXZpc2lvbiAxNzI5NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNiBAQCBO
T19SRVRVUk5fRFVFX1RPX0NSQVNIIHN0YXRpYyB2b2lkIGZ0bFVuCiBOT19SRVRVUk5fRFVFX1RP
X0NSQVNIIHN0YXRpYyB2b2lkIGZ0bFVucmVhY2hhYmxlKAogICAgIENvZGVCbG9jayogY29kZUJs
b2NrLCBCbG9ja0luZGV4IGJsb2NrSW5kZXgsIHVuc2lnbmVkIG5vZGVJbmRleCkKIHsKLSAgICAK
ICAgICBkYXRhTG9nKCJDcmFzaGluZyBpbiB0aG91Z2h0LXRvLWJlLXVucmVhY2hhYmxlIEZUTC1n
ZW5lcmF0ZWQgY29kZSBmb3IgIiwgcG9pbnRlckR1bXAoY29kZUJsb2NrKSwgIiBhdCBiYXNpYyBi
bG9jayAjIiwgYmxvY2tJbmRleCk7CiAgICAgaWYgKG5vZGVJbmRleCAhPSBVSU5UX01BWCkKICAg
ICAgICAgZGF0YUxvZygiLCBub2RlIEAiLCBub2RlSW5kZXgpOwpAQCAtMTUzLDExICsxNTIsMTcg
QEAgcHVibGljOgogICAgICAgICBmb3IgKHVuc2lnbmVkIGJsb2NrSW5kZXggPSBkZXB0aEZpcnN0
LnNpemUoKTsgYmxvY2tJbmRleC0tOyApIHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2Nr
ID0gZGVwdGhGaXJzdFtibG9ja0luZGV4XTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9k
ZUluZGV4ID0gYmxvY2stPnNpemUoKTsgbm9kZUluZGV4LS07ICkgewotICAgICAgICAgICAgICAg
IE5vZGUqIG1fbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOwotICAgICAgICAgICAgICAgIGlm
IChtX25vZGUtPmhhc0tub3duRnVuY3Rpb24oKSkgeworICAgICAgICAgICAgICAgIE5vZGUqIG5v
ZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUt
Pm9wKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6CisgICAgICAgICAgICAg
ICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6IHsKICAgICAgICAgICAgICAgICAgICAgaW50IG51bUFy
Z3MgPSBtX25vZGUtPm51bUNoaWxkcmVuKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChudW1B
cmdzID4gbWF4TnVtYmVyT2ZBcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgICAgICAgICBtYXhO
dW1iZXJPZkFyZ3VtZW50cyA9IG51bUFyZ3M7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KQEAgLTQ2OCwxMSArNDczLDE0IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1
Y3R1cmU6CiAgICAgICAgICAgICBjb21waWxlQ2hlY2tTdHJ1Y3R1cmUoKTsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIENoZWNrRnVuY3Rpb246Ci0gICAgICAgICAgICBjb21waWxl
Q2hlY2tGdW5jdGlvbigpOworICAgICAgICBjYXNlIENoZWNrQ2VsbDoKKyAgICAgICAgICAgIGNv
bXBpbGVDaGVja0NlbGwoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENoZWNr
QmFkQ2VsbDoKKyAgICAgICAgICAgIGNvbXBpbGVDaGVja0JhZENlbGwoKTsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToKLSAgICAgICAgICAgIGNvbXBp
bGVDaGVja0V4ZWN1dGFibGUoKTsKKyAgICAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgorICAgICAg
ICAgICAgY29tcGlsZUdldEV4ZWN1dGFibGUoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6CiAgICAgICAgICAgICBjb21waWxlQXJyYXlpZnlU
b1N0cnVjdHVyZSgpOwpAQCAtMTc0MywyNiArMTc1MSwyNSBAQCBwcml2YXRlOgogICAgICAgICBt
X291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKICAgICB9CiAgICAgCi0gICAg
dm9pZCBjb21waWxlQ2hlY2tGdW5jdGlvbigpCisgICAgdm9pZCBjb21waWxlQ2hlY2tDZWxsKCkK
ICAgICB7CiAgICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgCiAgICAgICAgIHNwZWN1bGF0ZSgKLSAgICAgICAgICAgIEJhZEZ1bmN0aW9uLCBq
c1ZhbHVlVmFsdWUoY2VsbCksIG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpLAotICAgICAgICAgICAg
bV9vdXQubm90RXF1YWwoY2VsbCwgd2Vha1BvaW50ZXIobV9ub2RlLT5mdW5jdGlvbigpLT52YWx1
ZSgpLmFzQ2VsbCgpKSkpOworICAgICAgICAgICAgQmFkQ2VsbCwganNWYWx1ZVZhbHVlKGNlbGwp
LCBtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSwKKyAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKGNl
bGwsIHdlYWtQb2ludGVyKG1fbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5hc0NlbGwoKSkp
KTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21waWxlQ2hlY2tFeGVjdXRhYmxlKCkKKyAgICB2
b2lkIGNvbXBpbGVDaGVja0JhZENlbGwoKQorICAgIHsKKyAgICAgICAgdGVybWluYXRlKEJhZENl
bGwpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNvbXBpbGVHZXRFeGVjdXRhYmxlKCkKICAgICB7
CiAgICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAg
ICAgCiAgICAgICAgIHNwZWN1bGF0ZUZ1bmN0aW9uKG1fbm9kZS0+Y2hpbGQxKCksIGNlbGwpOwot
ICAgICAgICAKLSAgICAgICAgc3BlY3VsYXRlKAotICAgICAgICAgICAgQmFkRXhlY3V0YWJsZSwg
anNWYWx1ZVZhbHVlKGNlbGwpLCBtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSwKLSAgICAgICAgICAg
IG1fb3V0Lm5vdEVxdWFsKAotICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9o
ZWFwcy5KU0Z1bmN0aW9uX2V4ZWN1dGFibGUpLAotICAgICAgICAgICAgICAgIHdlYWtQb2ludGVy
KG1fbm9kZS0+ZXhlY3V0YWJsZSgpKSkpOworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQ
dHIoY2VsbCwgbV9oZWFwcy5KU0Z1bmN0aW9uX2V4ZWN1dGFibGUpKTsKICAgICB9CiAgICAgCiAg
ICAgdm9pZCBjb21waWxlQXJyYXlpZnlUb1N0cnVjdHVyZSgpCkBAIC0zNjczLDkgKzM2ODAsNyBA
QCBwcml2YXRlOgogICAgICAgICBpbnQgbnVtUGFzc2VkQXJncyA9IG1fbm9kZS0+bnVtQ2hpbGRy
ZW4oKSAtIDE7CiAgICAgICAgIGludCBudW1BcmdzID0gbnVtUGFzc2VkQXJncyArIGR1bW15VGhp
c0FyZ3VtZW50OwogCi0gICAgICAgIEFTU0VSVChtX25vZGUtPmhhc0tub3duRnVuY3Rpb24oKSk7
Ci0KLSAgICAgICAgSlNGdW5jdGlvbioga25vd25GdW5jdGlvbiA9IG1fbm9kZS0+a25vd25GdW5j
dGlvbigpOworICAgICAgICBKU0Z1bmN0aW9uKiBrbm93bkZ1bmN0aW9uID0ganNDYXN0PEpTRnVu
Y3Rpb24qPihtX25vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuYXNDZWxsKCkpOwogICAgICAg
ICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiA9IGtub3duRnVuY3Rpb24tPm5hdGl2ZUZ1bmN0aW9u
KCk7CiAKICAgICAgICAgRGxfaW5mbyBpbmZvOwpAQCAtMzkxOCwxMCArMzkyMywzNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBj
YXNlIFN3aXRjaFN0cmluZzoKKyAgICAgICAgY2FzZSBTd2l0Y2hTdHJpbmc6IHsKICAgICAgICAg
ICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJVbmltcGxlbWVudGVkIik7Ci0gICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgIGNhc2UgU3dpdGNoQ2VsbDogeworICAgICAgICAgICAgTFZhbHVlIGNlbGw7Cisg
ICAgICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgICAg
ICAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgICAgICAgICBjZWxsID0gbG93Q2VsbChtX25v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICAg
ICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgY2VsbENhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAo
IlN3aXRjaC9Td2l0Y2hDZWxsIGNlbGwgY2FzZSIpKTsKKyAgICAgICAgICAgICAgICBtX291dC5i
cmFuY2goCisgICAgICAgICAgICAgICAgICAgIGlzQ2VsbCh2YWx1ZSksIHVuc3VyZShjZWxsQ2Fz
ZSksIHVuc3VyZShsb3dCbG9jayhkYXRhLT5mYWxsVGhyb3VnaC5ibG9jaykpKTsKKyAgICAgICAg
ICAgICAgICBtX291dC5hcHBlbmRUbyhjZWxsQ2FzZSk7CisgICAgICAgICAgICAgICAgY2VsbCA9
IHZhbHVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBERkdfQ1JBU0go
bV9ncmFwaCwgbV9ub2RlLCAiQmFkIHVzZSBraW5kIik7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBidWlsZFN3aXRjaCht
X25vZGUtPnN3aXRjaERhdGEoKSwgbV9vdXQuaW50UHRyLCBjZWxsKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfSB9CiAgICAgICAgIAogICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwg
bV9ub2RlLCAiQmFkIHN3aXRjaCBraW5kIik7CiAgICAgfQpAQCAtNTE4Niw3ICs1MjE4LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgVmVjdG9yPFN3aXRjaENhc2U+IGNhc2VzOwogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS0+Y2FzZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAg
ICAgIGNhc2VzLmFwcGVuZChTd2l0Y2hDYXNlKAotICAgICAgICAgICAgICAgIGNvbnN0SW50KHR5
cGUsIGRhdGEtPmNhc2VzW2ldLnZhbHVlLnN3aXRjaExvb2t1cFZhbHVlKCkpLAorICAgICAgICAg
ICAgICAgIGNvbnN0SW50KHR5cGUsIGRhdGEtPmNhc2VzW2ldLnZhbHVlLnN3aXRjaExvb2t1cFZh
bHVlKGRhdGEtPmtpbmQpKSwKICAgICAgICAgICAgICAgICBsb3dCbG9jayhkYXRhLT5jYXNlc1tp
XS50YXJnZXQuYmxvY2spLCBXZWlnaHQoZGF0YS0+Y2FzZXNbaV0udGFyZ2V0LmNvdW50KSkpOwog
ICAgICAgICB9CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJ
KHJldmlzaW9uIDE3Mjk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05ODQsNiArOTg0LDExIEBAIHZvaWQgSGVhcDo6Y29sbGVjdChI
ZWFwT3BlcmF0aW9uIGNvbGxlY3QKICAgICAgICAgdm0oKS0+dHlwZVByb2ZpbGVyTG9nKCktPnBy
b2Nlc3NMb2dFbnRyaWVzKEFTQ0lJTGl0ZXJhbCgiR0MiKSk7CiAgICAgfQogICAgIAorICAgIGlm
ICh2bSgpLT5jYWxsRWRnZUxvZykgeworICAgICAgICBEZWZlckdDRm9yQVdoaWxlIGF3aGlsZSgq
dGhpcyk7CisgICAgICAgIHZtKCktPmNhbGxFZGdlTG9nLT5wcm9jZXNzTG9nKCk7CisgICAgfQor
ICAgIAogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2RlZmVycmFsRGVwdGgpOwogICAgIEFTU0VSVCh2
bSgpLT5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKICAgICBSRUxFQVNFX0FTU0VS
VCh2bSgpLT5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJp
bmdUYWJsZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuaAkocmV2aXNpb24gMTcyOTYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsMzEgQEAgcHVibGlj
OgogI2VuZGlmCiAgICAgfQogICAgIAorICAgIHZvaWQgc3RvcmVWYWx1ZShKU1ZhbHVlUmVncyBy
ZWdzLCB2b2lkKiBhZGRyZXNzKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBz
dG9yZTY0KHJlZ3MuZ3ByKCksIGFkZHJlc3MpOworI2Vsc2UKKyAgICAgICAgc3RvcmUzMihyZWdz
LnBheWxvYWRHUFIoKSwgYml0d2lzZV9jYXN0PHZvaWQqPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90
PihhZGRyZXNzKSArIFBheWxvYWRPZmZzZXQpKTsKKyAgICAgICAgc3RvcmUzMihyZWdzLnRhZ0dQ
UigpLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGFkZHJlc3Mp
ICsgVGFnT2Zmc2V0KSk7CisjZW5kaWYKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkVmFsdWUo
QWRkcmVzcyBhZGRyZXNzLCBKU1ZhbHVlUmVncyByZWdzKQorICAgIHsKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgICAgICBsb2FkNjQoYWRkcmVzcywgcmVncy5ncHIoKSk7CisjZWxzZQorICAgICAg
ICBpZiAoYWRkcmVzcy5iYXNlID09IHJlZ3MucGF5bG9hZEdQUigpKSB7CisgICAgICAgICAgICBs
b2FkMzIoYWRkcmVzcy53aXRoT2Zmc2V0KFRhZ09mZnNldCksIHJlZ3MudGFnR1BSKCkpOworICAg
ICAgICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldChQYXlsb2FkT2Zmc2V0KSwgcmVncy5w
YXlsb2FkR1BSKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9hZDMyKGFkZHJl
c3Mud2l0aE9mZnNldChQYXlsb2FkT2Zmc2V0KSwgcmVncy5wYXlsb2FkR1BSKCkpOworICAgICAg
ICAgICAgbG9hZDMyKGFkZHJlc3Mud2l0aE9mZnNldChUYWdPZmZzZXQpLCByZWdzLnRhZ0dQUigp
KTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorICAgIAogICAgIHZvaWQgbW92ZVRydXN0ZWRW
YWx1ZShKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlUmVncyByZWdzKQogICAgIHsKICNpZiBVU0UoSlNW
QUxVRTY0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCShy
ZXZpc2lvbiAxNzI5NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVy
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjY2LDYgKzE2NjYsMTUgQEAgcHVibGljOgogICAgICAg
ICBtb3ZlKGFyZzQsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CiAgICAgfQogI2VuZGlmCisgICAg
CisgICAgdm9pZCBzZXR1cEFyZ3VtZW50cyhKU1ZhbHVlUmVncyBhcmcxKQorICAgIHsKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgICAgICBzZXR1cEFyZ3VtZW50cyhhcmcxLmdwcigpKTsKKyNlbHNl
CisgICAgICAgIHNldHVwQXJndW1lbnRzKGFyZzEucGF5bG9hZEdQUigpLCBhcmcxLnRhZ0dQUigp
KTsKKyNlbmRpZgorICAgIH0KIAogICAgIHZvaWQgc2V0dXBSZXN1bHRzKEdQUlJlZyBkZXN0QSwg
R1BSUmVnIGRlc3RCKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BS
SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5o
CShyZXZpc2lvbiAxNzI5NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8u
aAkod29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsOCBAQCBwdWJsaWM6CiAgICAgR1BSUmVnIHRh
Z0dQUigpIGNvbnN0IHsgcmV0dXJuIEludmFsaWRHUFJSZWc7IH0KICAgICBHUFJSZWcgcGF5bG9h
ZEdQUigpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByOyB9CiAgICAgCisgICAgYm9vbCB1c2VzKEdQUlJl
ZyBncHIpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByID09IGdwcjsgfQorICAgIAogcHJpdmF0ZToKICAg
ICBHUFJSZWcgbV9ncHI7CiB9OwpAQCAtMTY5LDYgKzE3MSw4IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIHRhZ0dQUigpOwogICAgIH0KIAorICAgIGJvb2wgdXNlcyhHUFJSZWcgZ3ByKSBjb25z
dCB7IHJldHVybiBtX3RhZ0dQUiA9PSBncHIgfHwgbV9wYXlsb2FkR1BSID09IGdwcjsgfQorICAg
IAogcHJpdmF0ZToKICAgICBpbnQ4X3QgbV90YWdHUFI7CiAgICAgaW50OF90IG1fcGF5bG9hZEdQ
UjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHJl
dmlzaW9uIDE3Mjk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAwLDYgKzMwMCwxNCBAQCB2b2lkIEpJVDo6Y29tcGls
ZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgc3RvcmUzMihyZWdUMCwgQWRkcmVzcyhzdGFj
a1BvaW50ZXJSZWdpc3RlciwgSlNTdGFjazo6Q2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXpl
b2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykp
KTsKICAgICBzdG9yZTMyKHJlZ1QxLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBKU1N0
YWNrOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgVGFnT2Zm
c2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAKKyAgICBDYWxsTGlua0luZm8qIGlu
Zm8gPSBtX2NvZGVCbG9jay0+YWRkQ2FsbExpbmtJbmZvKCk7CisKKyAgICBpZiAoQ2FsbEVkZ2VM
b2c6OmlzRW5hYmxlZCgpICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKQorICAgICAgICAmJiBPcHRp
b25zOjpiYXNlbGluZURvZXNDYWxsRWRnZVByb2ZpbGluZygpKSB7CisgICAgICAgIG1fdm0tPmVu
c3VyZUNhbGxFZGdlTG9nKCkuZW1pdExvZ0NvZGUoCisgICAgICAgICAgICAqdGhpcywgaW5mby0+
Y2FsbEVkZ2VQcm9maWxlLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApKTsKKyAgICB9CisKICAg
ICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbF9ldmFsKSB7CiAgICAgICAgIGNvbXBpbGVDYWxsRXZh
bChpbnN0cnVjdGlvbik7CiAgICAgICAgIHJldHVybjsKQEAgLTMxMyw3ICszMjEsNiBAQCB2b2lk
IEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgYWRkU2xvd0Nhc2Uoc2xv
d0Nhc2UpOwogCiAgICAgQVNTRVJUKG1fY2FsbENvbXBpbGF0aW9uSW5mby5zaXplKCkgPT0gY2Fs
bExpbmtJbmZvSW5kZXgpOwotICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1fY29kZUJsb2NrLT5h
ZGRDYWxsTGlua0luZm8oKTsKICAgICBpbmZvLT5jYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6Y2Fs
bFR5cGVGb3Iob3Bjb2RlSUQpOwogICAgIGluZm8tPmNvZGVPcmlnaW4gPSBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVPZmZzZXQpOwogICAgIGluZm8tPmNhbGxlZUdQUiA9IHJlZ1QwOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAxNzI5NjEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIs
NiArMjEyLDEyIEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSwgcmVnVDApOyAvLyByZWdUMCBob2xkcyBj
YWxsZWUuCiAKICAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVy
LCBKU1N0YWNrOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpIC0g
c2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CisgICAgCisgICAgQ2FsbExpbmtJbmZvKiBpbmZv
ID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5mbygpOworCisgICAgaWYgKENhbGxFZGdlTG9n
Ojppc0VuYWJsZWQoKSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkKKyAgICAgICAgJiYgT3B0aW9u
czo6YmFzZWxpbmVEb2VzQ2FsbEVkZ2VQcm9maWxpbmcoKSkKKyAgICAgICAgbV92bS0+ZW5zdXJl
Q2FsbEVkZ2VMb2coKS5lbWl0TG9nQ29kZSgqdGhpcywgaW5mby0+Y2FsbEVkZ2VQcm9maWxlLCBK
U1ZhbHVlUmVncyhyZWdUMCkpOwogCiAgICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCkg
ewogICAgICAgICBjb21waWxlQ2FsbEV2YWwoaW5zdHJ1Y3Rpb24pOwpAQCAtMjIzLDcgKzIyOSw2
IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICBhZGRTbG93
Q2FzZShzbG93Q2FzZSk7CiAKICAgICBBU1NFUlQobV9jYWxsQ29tcGlsYXRpb25JbmZvLnNpemUo
KSA9PSBjYWxsTGlua0luZm9JbmRleCk7Ci0gICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9jb2Rl
QmxvY2stPmFkZENhbGxMaW5rSW5mbygpOwogICAgIGluZm8tPmNhbGxUeXBlID0gQ2FsbExpbmtJ
bmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJRCk7CiAgICAgaW5mby0+Y29kZU9yaWdpbiA9IENvZGVP
cmlnaW4obV9ieXRlY29kZU9mZnNldCk7CiAgICAgaW5mby0+Y2FsbGVlR1BSID0gcmVnVDA7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAxNzI5
NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE2Nyw2ICsxNjcsMTMgQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJp
bmc7CiAgICAgdihib29sLCBlbmFibGVBY2Nlc3NJbmxpbmluZywgdHJ1ZSkgXAogICAgIHYoYm9v
bCwgZW5hYmxlUG9seXZhcmlhbnREZXZpcnR1YWxpemF0aW9uLCB0cnVlKSBcCiAgICAgdihib29s
LCBlbmFibGVQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nLCB0cnVlKSBcCisgICAgdihib29sLCBl
bmFibGVQb2x5bW9ycGhpY0NhbGxJbmxpbmluZywgdHJ1ZSkgXAorICAgIHYoYm9vbCwgY2FsbFN0
YXR1c1Nob3VsZFVzZUNhbGxFZGdlUHJvZmlsZSwgdHJ1ZSkgXAorICAgIHYoYm9vbCwgY2FsbEVk
Z2VQcm9maWxlUmVhbGx5UHJvY2Vzc2VzTG9nLCB0cnVlKSBcCisgICAgdihib29sLCBiYXNlbGlu
ZURvZXNDYWxsRWRnZVByb2ZpbGluZywgZmFsc2UpIFwKKyAgICB2KGJvb2wsIGRmZ0RvZXNDYWxs
RWRnZVByb2ZpbGluZywgdHJ1ZSkgXAorICAgIHYoYm9vbCwgZW5hYmxlQ2FsbEVkZ2VQcm9maWxp
bmcsIHRydWUpIFwKKyAgICB2KHVuc2lnbmVkLCBmcmVxdWVudENhbGxUaHJlc2hvbGQsIDIpIFwK
ICAgICB2KGJvb2wsIG9wdGltaXplTmF0aXZlQ2FsbHMsIGZhbHNlKSBcCiAgICAgXAogICAgIHYo
Ym9vbCwgZW5hYmxlQ29uY3VycmVudEpJVCwgdHJ1ZSkgXApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMTcyOTYxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzMsNiArMzczLDEzIEBAIFZN
KiYgVk06OnNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKQogICAgIHJldHVybiBzaGFyZWRJbnN0YW5j
ZTsKIH0KIAorQ2FsbEVkZ2VMb2cmIFZNOjplbnN1cmVDYWxsRWRnZUxvZygpCit7CisgICAgaWYg
KCFjYWxsRWRnZUxvZykKKyAgICAgICAgY2FsbEVkZ2VMb2cgPSBzdGQ6Om1ha2VfdW5pcXVlPENh
bGxFZGdlTG9nPigpOworICAgIHJldHVybiAqY2FsbEVkZ2VMb2c7Cit9CisKICNpZiBFTkFCTEUo
SklUKQogc3RhdGljIFRodW5rR2VuZXJhdG9yIHRodW5rR2VuZXJhdG9yRm9ySW50cmluc2ljKElu
dHJpbnNpYyBpbnRyaW5zaWMpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJ
KHJldmlzaW9uIDE3Mjk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBBcml0eUNoZWNrRmFpbFJldHVyblRodW5rczsKICAgICBjbGFzcyBCdWlsdGluRXhlY3V0
YWJsZXM7CisgICAgY2xhc3MgQ2FsbEVkZ2VMb2c7CiAgICAgY2xhc3MgQ29kZUJsb2NrOwogICAg
IGNsYXNzIENvZGVDYWNoZTsKICAgICBjbGFzcyBDb21tb25JZGVudGlmaWVyczsKQEAgLTIzMyw2
ICsyMzQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAg
T3duUHRyPERGRzo6TG9uZ0xpdmVkU3RhdGU+IGRmZ1N0YXRlOwogI2VuZGlmIC8vIEVOQUJMRShE
RkdfSklUKQorICAgICAgICAKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxFZGdlTG9nPiBj
YWxsRWRnZUxvZzsKKyAgICAgICAgQ2FsbEVkZ2VMb2cmIGVuc3VyZUNhbGxFZGdlTG9nKCk7CiAK
ICAgICAgICAgVk1UeXBlIHZtVHlwZTsKICAgICAgICAgQ2xpZW50RGF0YSogY2xpZW50RGF0YTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZm9sZC1wcm9maWxlZC1j
YWxsLXRvLWNhbGwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9mb2xkLXByb2ZpbGVkLWNhbGwtdG8tY2FsbC5qcwkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZm9sZC1wcm9maWxlZC1jYWxsLXRvLWNh
bGwuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNCBAQAorZnVuY3Rpb24gZm9vKGYpIHsK
KyAgICBpZiAoREZHVHJ1ZSgpKQorICAgICAgICBmID0gYmFyOworICAgIHJldHVybiBmKCkuZjsK
K30KKworbm9JbmxpbmUoZm9vKTsKKwordmFyIG9iamVjdDsKK2Z1bmN0aW9uIGJhcigpIHsKKyAg
ICByZXR1cm4gb2JqZWN0OworfQorCitmdW5jdGlvbiBiYXooKSB7IHJldHVybiB7Zjo0Mn07IH07
CisKK29iamVjdCA9IHtmOjQyfTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgKytpKQorICAg
IGZvbygoaSAmIDEpID8gYmFyIDogYmF6KTsKKworb2JqZWN0ID0ge2U6MSwgZjoyfTsKK3ZhciBy
ZXN1bHQgPSBmb28oYmFyKTsKK2lmIChyZXN1bHQgIT0gMikKKyAgICB0aHJvdyAiRXJyb3I6IGJh
ZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvbmV3LWFycmF5LXRoZW4tZXhpdC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL25ldy1hcnJheS10aGVuLWV4aXQuanMJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL25ldy1hcnJheS10aGVu
LWV4aXQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorZnVuY3Rpb24gZm9vKGYp
IHsKKyAgICByZXR1cm4gbmV3IGYoKTsKK30KKworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDAwMDsgKytpKQorICAgIGZvbyhBcnJheSk7CisKK3ZhciBkaWRDYWxsID0g
ZmFsc2U7Citmb28oZnVuY3Rpb24oKSB7IGRpZENhbGwgPSB0cnVlOyB9KTsKKworaWYgKCFkaWRD
YWxsKQorICAgIHRocm93ICJFcnJvcjogZGlkbid0IGNhbGwgbXkgZnVuY3Rpb24uIjsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQtdGhpcy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3BvbHkt
Y2FsbC1leGl0LXRoaXMuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL3BvbHktY2FsbC1leGl0LXRoaXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyOSBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIGZvbyh4KSB7IHJldHVybiAx
ICsgdGhpcy5mOyB9CisgICAgZnVuY3Rpb24gYmFyKHgpIHsgcmV0dXJuIHggKyB0aGlzLmY7IH0K
KyAgICBmdW5jdGlvbiBiYXooeCkgeyByZXR1cm4geCArIDEgKyB0aGlzLmY7IH0KKyAgICAKKyAg
ICB2YXIgbiA9IDEwMDAwMDA7CisgICAgCisgICAgdmFyIHJlc3VsdCA9IChmdW5jdGlvbihvKSB7
CisgICAgICAgIHZhciBmID0ge2Z1bjpmb28sIGY6MX07CisgICAgICAgIHZhciBnID0ge2Z1bjpi
YXIsIGY6Mn07CisgICAgICAgIHZhciBoID0ge2Z1bjpiYXosIGY6M307CisgICAgICAgIAorICAg
ICAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kp
IHsKKyAgICAgICAgICAgIGlmIChpID09IG4gLSAxKQorICAgICAgICAgICAgICAgIGYgPSBoOwor
ICAgICAgICAgICAgcmVzdWx0ICs9IGYuZnVuKG8uZik7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIHZhciB0bXAgPSBmOworICAgICAgICAgICAgZiA9IGc7CisgICAgICAgICAgICBnID0gdG1w
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0pKHtm
OjQyfSk7CisgICAgCisgICAgaWYgKHJlc3VsdCAhPSAoKG4gLyAyIC0gMSkgKiAoNDIgKyAyKSkg
KyAobiAvIDIgKiAoMSArIDEpICsgKDQyICsgMSArIDMpKSkKKyAgICAgICAgdGhyb3cgIkVycm9y
OiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfSkoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wb2x5LWNhbGwtZXhpdC5qcwkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOSBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZ1
bmN0aW9uIGZvbyh4KSB7IHJldHVybiAxOyB9CisgICAgZnVuY3Rpb24gYmFyKHgpIHsgcmV0dXJu
IHg7IH0KKyAgICBmdW5jdGlvbiBiYXooeCkgeyByZXR1cm4geCArIDE7IH0KKyAgICAKKyAgICB2
YXIgbiA9IDEwMDAwMDA7CisgICAgCisgICAgdmFyIHJlc3VsdCA9IChmdW5jdGlvbihvKSB7Cisg
ICAgICAgIHZhciBmID0gZm9vOworICAgICAgICB2YXIgZyA9IGJhcjsKKyAgICAgICAgdmFyIGgg
PSBiYXo7CisgICAgICAgIAorICAgICAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChpID09IG4gLSAxKQorICAg
ICAgICAgICAgICAgIGYgPSBoOworICAgICAgICAgICAgcmVzdWx0ICs9IGYoby5mKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgdmFyIHRtcCA9IGY7CisgICAgICAgICAgICBmID0gZzsKKyAg
ICAgICAgICAgIGcgPSB0bXA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfSkoe2Y6NDJ9KTsKKyAgICAKKyAgICBpZiAocmVzdWx0ICE9ICgobiAvIDIg
LSAxKSAqIDQyKSArIChuIC8gMiAqIDEpICsgKDQyICsgMSkpCisgICAgICAgIHRocm93ICJFcnJv
cjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30pKCk7CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTczMDQ2
KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBA
QAorMjAxNC0wOC0yNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEZUTCBzaG91bGQgYmUgYWJsZSB0byBkbyBwb2x5bW9ycGhpYyBjYWxsIGlubGluaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUxNDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKyAgICAgICAgCisgICAgICAgIEFkZCBz
b21lIHBvd2VyIHRoYXQgSSBuZWVkIGZvciBjYWxsIGVkZ2UgcHJvZmlsaW5nLgorCisgICAgICAg
ICogd3RmL093blB0ci5oOgorICAgICAgICAoV1RGOjpPd25QdHI8VD46OmNyZWF0ZVRyYW5zYWN0
aW9uYWxseSk6CisgICAgICAgICogd3RmL1NwZWN0cnVtLmg6CisgICAgICAgIChXVEY6OlNwZWN0
cnVtOjphZGQpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6YWRkQWxsKToKKyAgICAgICAgKFdU
Rjo6U3BlY3RydW06OmdldCk6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpzaXplKToKKyAgICAg
ICAgKFdURjo6U3BlY3RydW06OktleUFuZENvdW50OjpLZXlBbmRDb3VudCk6CisgICAgICAgIChX
VEY6OlNwZWN0cnVtOjpjbGVhcik6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpyZW1vdmVJZik6
CisKIDIwMTQtMDgtMjcgIE5pY28gV2ViZXIgIDx0aGFraXNAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIERlbGV0ZSBhIE1TVlMyMDEwIHdvcmthcm91bmQuCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9P
d25QdHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Pd25QdHIuaAkocmV2aXNpb24g
MTcyOTYxKQorKysgU291cmNlL1dURi93dGYvT3duUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAy
MDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMiw2ICsyMiw3IEBACiAjZGVmaW5l
IFdURl9Pd25QdHJfaAogCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0
Zi9Pd25QdHJDb21tb24uaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CkBAIC03Miw2ICs3MywxNyBA
QCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gT3duUHRyJiBv
cGVyYXRvcj0oT3duUHRyPFU+JiYpOwogCiAgICAgICAgIHZvaWQgc3dhcChPd25QdHImIG8pIHsg
c3RkOjpzd2FwKG1fcHRyLCBvLm1fcHRyKTsgfQorICAgICAgICAKKyAgICAgICAgLy8gQ29uc3Ry
dWN0IGFuIG9iamVjdCB0byBzdG9yZSBpbnRvIHRoaXMgT3duUHRyLCBidXQgb25seSBzbyBsb25n
IGFzIHRoaXMgT3duUHRyCisgICAgICAgIC8vIGRvZXNuJ3QgYWxyZWFkeSBwb2ludCB0byBhbiBv
YmplY3QuIFRoaXMgd2lsbCBlbnN1cmUgdGhhdCBhZnRlciB5b3UgY2FsbCB0aGlzLAorICAgICAg
ICAvLyB0aGUgT3duUHRyIHdpbGwgcG9pbnQgdG8gYW4gaW5zdGFuY2Ugb2YgVCwgZXZlbiBpZiBj
YWxsZWQgY29uY3VycmVudGx5LiBUaGlzCisgICAgICAgIC8vIGluc3RhbmNlIG1heSBvciBtYXkg
bm90IGhhdmUgYmVlbiBjcmVhdGVkIGJ5IHRoaXMgY2FsbC4gTW9yZW92ZXIsIHRoaXMgY2FsbCB1
c2VzCisgICAgICAgIC8vIGFuIG9wcG9ydHVuaXN0aWMgdHJhbnNhY3Rpb24sIGluIHRoYXQgd2Ug
bWF5IGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiBUIGFuZCB0aGVuCisgICAgICAgIC8vIGltbWVkaWF0
ZWx5IHRocm93IGl0IGF3YXksIGlmIGluIHRoZSBwcm9jZXNzIG9mIGNyZWF0aW5nIHRoYXQgaW5z
dGFuY2Ugc29tZQorICAgICAgICAvLyBvdGhlciB0aHJlYWQgd2FzIGRvaW5nIHRoZSBzYW1lIHRo
aW5nIGFuZCBzdG9yZWQgaXRzIGluc3RhbmNlIGludG8gdGhpcyBwb2ludGVyCisgICAgICAgIC8v
IGJlZm9yZSB3ZSBoYWQgYSBjaGFuY2UgdG8gZG8gc28uCisgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lLi4uIEFyZ3M+CisgICAgICAgIHZvaWQgY3JlYXRlVHJhbnNhY3Rpb25hbGx5KEFyZ3MuLi4p
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZXhwbGljaXQgT3duUHRyKFB0clR5cGUgcHRyKSA6
IG1fcHRyKHB0cikgeyB9CkBAIC0xODYsNiArMTk4LDI4IEBAIG5hbWVzcGFjZSBXVEYgewogICAg
ICAgICByZXR1cm4gcC5nZXQoKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBpbmxpbmUgdm9pZCBPd25QdHI8VD46OmNyZWF0ZVRy
YW5zYWN0aW9uYWxseShBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICBpZiAobV9wdHIpIHsK
KyAgICAgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBUKiBuZXdPYmplY3QgPSBuZXcgVChhcmdzLi4u
KTsKKyAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKKyNpZiBFTkFCTEUoQ09NUEFSRV9B
TkRfU1dBUCkKKyAgICAgICAgZG8geworICAgICAgICAgICAgaWYgKG1fcHRyKSB7CisgICAgICAg
ICAgICAgICAgZGVsZXRlIG5ld09iamVjdDsKKyAgICAgICAgICAgICAgICBXVEY6OmxvYWRMb2Fk
RmVuY2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAg
IH0gd2hpbGUgKCFXVEY6OndlYWtDb21wYXJlQW5kU3dhcChiaXR3aXNlX2Nhc3Q8dm9pZCp2b2xh
dGlsZSo+KCZtX3B0ciksIG51bGxwdHIsIG5ld09iamVjdCkpOworI2Vsc2UKKyAgICAgICAgbV9w
dHIgPSBuZXdPYmplY3Q7CisjZW5kaWYKKyAgICB9CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1
c2luZyBXVEY6Ok93blB0cjsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvU3BlY3RydW0uaAkocmV2aXNpb24gMTcyOTYxKQorKysg
U291cmNlL1dURi93dGYvU3BlY3RydW0uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMjIgKzMyLDMxIEBA
CiAKIG5hbWVzcGFjZSBXVEYgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgordGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgQ291bnRlclR5cGUgPSB1bnNpZ25lZD4KIGNsYXNzIFNwZWN0cnVt
IHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9u
Zz46Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCB1
bnNpZ25lZCBsb25nPjo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CisgICAgdHlwZWRl
ZiB0eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6aXRlcmF0b3IgaXRlcmF0b3I7Cisg
ICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6Y29uc3RfaXRlcmF0
b3IgY29uc3RfaXRlcmF0b3I7CiAgICAgCiAgICAgU3BlY3RydW0oKSB7IH0KICAgICAKLSAgICB2
b2lkIGFkZChjb25zdCBUJiBrZXksIHVuc2lnbmVkIGxvbmcgY291bnQgPSAxKQorICAgIHZvaWQg
YWRkKGNvbnN0IFQmIGtleSwgQ291bnRlclR5cGUgY291bnQgPSAxKQogICAgIHsKLSAgICAgICAg
dHlwZW5hbWUgSGFzaE1hcDxULCB1bnNpZ25lZCBsb25nPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1f
bWFwLmFkZChrZXksIGNvdW50KTsKKyAgICAgICAgaWYgKCFjb3VudCkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgdHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46OkFkZFJlc3Vs
dCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBjb3VudCk7CiAgICAgICAgIGlmICghcmVzdWx0Lmlz
TmV3RW50cnkpCiAgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlICs9IGNvdW50Owog
ICAgIH0KICAgICAKLSAgICB1bnNpZ25lZCBsb25nIGdldChjb25zdCBUJiBrZXkpIGNvbnN0Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KKyAgICB2b2lkIGFkZEFsbChjb25zdCBTcGVjdHJ1bTxU
LCBVPiYgb3RoZXJTcGVjdHJ1bSkKKyAgICB7CisgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBv
dGhlclNwZWN0cnVtKQorICAgICAgICAgICAgYWRkKGVudHJ5LmtleSwgZW50cnkuY291bnQpOwor
ICAgIH0KKyAgICAKKyAgICBDb3VudGVyVHlwZSBnZXQoY29uc3QgVCYga2V5KSBjb25zdAogICAg
IHsKICAgICAgICAgY29uc3RfaXRlcmF0b3IgaXRlciA9IG1fbWFwLmZpbmQoa2V5KTsKICAgICAg
ICAgaWYgKGl0ZXIgPT0gbV9tYXAuZW5kKCkpCkBAIC01NSw2ICs2NCw4IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOwogICAgIH0KICAgICAKKyAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsgfQorICAgIAogICAgIGl0ZXJhdG9yIGJlZ2lu
KCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQogICAgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJu
IG1fbWFwLmVuZCgpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVy
biBtX21hcC5iZWdpbigpOyB9CkBAIC02Myw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3Qg
S2V5QW5kQ291bnQgewogICAgICAgICBLZXlBbmRDb3VudCgpIHsgfQogICAgICAgICAKLSAgICAg
ICAgS2V5QW5kQ291bnQoY29uc3QgVCYga2V5LCB1bnNpZ25lZCBsb25nIGNvdW50KQorICAgICAg
ICBLZXlBbmRDb3VudChjb25zdCBUJiBrZXksIENvdW50ZXJUeXBlIGNvdW50KQogICAgICAgICAg
ICAgOiBrZXkoa2V5KQogICAgICAgICAgICAgLCBjb3VudChjb3VudCkKICAgICAgICAgewpAQCAt
ODAsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBUIGtleTsKLSAgICAg
ICAgdW5zaWduZWQgbG9uZyBjb3VudDsKKyAgICAgICAgQ291bnRlclR5cGUgY291bnQ7CiAgICAg
fTsKICAgICAKICAgICAvLyBSZXR1cm5zIGEgbGlzdCBvcmRlcmVkIGZyb20gbG93ZXN0LWNvdW50
IHRvIGhpZ2hlc3QtY291bnQuCkBAIC05NCw4ICsxMDUsMTggQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gbGlzdDsKICAgICB9CiAgICAgCisgICAgdm9pZCBjbGVhcigpIHsgbV9tYXAuY2xlYXIo
KTsgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgdm9pZCByZW1v
dmVJZihjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAgICAgICAgbV9tYXAucmVtb3Zl
SWYoW2Z1bmN0b3JdICh0eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6S2V5VmFsdWVQ
YWlyVHlwZSYgcGFpcikgeworICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdG9yKEtleUFuZENv
dW50KHBhaXIua2V5LCBwYWlyLnZhbHVlKSk7CisgICAgICAgICAgICB9KTsKKyAgICB9CisgICAg
CiBwcml2YXRlOgotICAgIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz4gbV9tYXA7CisgICAgSGFz
aE1hcDxULCBDb3VudGVyVHlwZT4gbV9tYXA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE3MzA0NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE0LTA4LTI3ICBGaWxpcCBQaXpsbyAgPGZwaXps
b0BhcHBsZS5jb20+CisKKyAgICAgICAgRlRMIHNob3VsZCBiZSBhYmxlIHRvIGRvIHBvbHltb3Jw
aGljIGNhbGwgaW5saW5pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzNTE0NQorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgor
CisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXBvbHktY2FsbC1uZXN0
ZWQuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1w
b2x5LWNhbGwuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2Fs
bC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHkt
Y2FsbC1uZXN0ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3Np
bXBsZS1wb2x5LWNhbGwtbmVzdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mv
c2ltcGxlLXBvbHktY2FsbC5odG1sOiBBZGRlZC4KKwogMjAxNC0wOC0yNyAgRGFuaWVsIEJhdGVz
ICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgU2Nyb2xsYmFyIGNvcm5lciBjYW4gYmUg
ZHJhd24gb3V0c2lkZSBjb250YWluaW5nIGZyYW1lCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL3NpbXBsZS1wb2x5LWNhbGwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zaW1wbGUtcG9seS1j
YWxsCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0
aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVkLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1w
b2x5LWNhbGwtbmVzdGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zaW1wbGUtcG9seS1jYWxsLW5lc3Rl
ZAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhy
b3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJ
bmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcG9seS1jYWxsLW5lc3RlZC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1u
ZXN0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxl
LXBvbHktY2FsbC1uZXN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVz
cy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zaW1wbGUtcG9s
eS1jYWxsLW5lc3RlZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0ic2NyaXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxl
LXBvbHktY2FsbC1uZXN0ZWQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9zY3JpcHQtdGVzdHMvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQuanMJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcG9seS1jYWxsLW5l
c3RlZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI1IEBACisoZnVuY3Rpb24oKSB7Cisg
ICAgZnVuY3Rpb24gZm9vKHgpIHsgcmV0dXJuIDE7IH0KKyAgICBmdW5jdGlvbiBiYXIoeCkgeyBy
ZXR1cm4geDsgfQorICAgIAorICAgIHZhciBuID0gMTAwMDAwMDsKKyAgICAKKyAgICB2YXIgcmVz
dWx0ID0gKGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgZiA9IGZvbzsKKyAgICAgICAgdmFyIGcg
PSBiYXI7CisgICAgICAgIAorICAgICAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgICAgIHJlc3VsdCArPSBmKDQyKTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgdmFyIHRtcCA9IGY7CisgICAgICAgICAgICBmID0gZzsK
KyAgICAgICAgICAgIGcgPSB0bXA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfSkoKTsKKyAgICAKKyAgICBpZiAocmVzdWx0ICE9IG4gLyAyICogNDIg
KyBuIC8gMiAqIDEpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3Vs
dDsKK30pKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1w
bGUtcG9seS1jYWxsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcG9seS1jYWxsLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMjAgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBmdW5jdGlvbiBmb28oeCkg
eyByZXR1cm4gMTsgfQorICAgIGZ1bmN0aW9uIGJhcih4KSB7IHJldHVybiB4OyB9CisgICAgCisg
ICAgdmFyIGYgPSBmb287CisgICAgdmFyIGcgPSBiYXI7CisgICAgCisgICAgdmFyIHJlc3VsdCA9
IDA7CisgICAgdmFyIG4gPSAxMDAwMDA7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kp
IHsKKyAgICAgICAgcmVzdWx0ICs9IGYoNDIpOworICAgICAgICAKKyAgICAgICAgdmFyIHRtcCA9
IGY7CisgICAgICAgIGYgPSBnOworICAgICAgICBnID0gdG1wOworICAgIH0KKyAgICAKKyAgICBp
ZiAocmVzdWx0ICE9IG4gLyAyICogNDIgKyBuIC8gMiAqIDEpCisgICAgICAgIHRocm93ICJFcnJv
cjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30pKCk7Cg==
</data>
<flag name="commit-queue"
          id="262023"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>237300</attachid>
            <date>2014-08-28 01:16:49 -0700</date>
            <delta_ts>2014-08-28 01:16:49 -0700</delta_ts>
            <desc>Archive of layout-test-results from webkit-ews-16 for mac-mountainlion-wk2</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>795700</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
MXXLO5ZwK9g88fl+B+/rwJM+kOgMNQPBWMPhzbnAiQ4Gdo/GjtiCI/07W6uEoeAEXi9Yc5TkTP/4
w9WbdjnrzhqVrcyJGskcgg69ryixLFhwAcPVYDs1aAt4d5FwWljSiSUay7XCqRMhWvE7LVK3crOb
O0nlv4bPcGHhp67dlupfzJdzYZCKQnQuWCJN5fB1pEg1K1mC6Xmlufc49jk7crh804q4/OrDVqlF
L7Xd6nnz6T+HDv3H2JM80BO9pdqBcQclCbqagrOavSFJhOhSUPj1w+vtrFGQc7Tjw+Wbdj3bziIX
8e5Pu4cvQzq4cvN5bVdsvfOwq0JEdc89KAiDJSteWFtg1d5d5Qsef4apz1GgHr60i7G7zmKcm1UZ
P+LXpcdafGdv1aWPtknHjYqAOWtfaQ7v0BcA7TZSJgxeDPrit+UmkzXCmg7lebteDcXkZTWUn/+4
//ipsgvlpc+IJl9KMh72FX6LA79J4CmmHHwuIjNjQQW87QtIk0nPfQBpcsvNPwBQSwMECgACAAAA
K78bRUVLJmg0AAAANAAAAD0AHABhY2Nlc3NpYmlsaXR5L2FjY2Vzc2liaWxpdHktbm9kZS1tZW1v
cnktbWFuYWdlbWVudC1zdGRlcnIudHh0VVQJAAPS0v5Ta8X+U3V4CwABBPUBAAAEFAAAACNQUk9D
RVNTIFVOUkVTUE9OU0lWRSAtIFdlYlByb2Nlc3MgKHBpZCAzMDMzOSkKI0VPRgpQSwMEFAACAAgA
W78bRZ05pJa7AAAA9AAAADcAHABhY2Nlc3NpYmlsaXR5L2FjY2Vzc2liaWxpdHktbm9kZS1yZXBh
cmVudC1jcmFzaC1sb2cudHh0VVQJAAMt0/5TvsX+U3V4CwABBPUBAAAEFAAAAEWPzUoDQRCE7/MU
BbnowSDkoAziJWzAy+6S9ee82e3EwUl36O6Jr+8kiF6aqoL66GoFk472iSwH7KXwXK/ig3a9ykRm
cXW/enhchl+L/ZgyzXDBjiY5EpTsJGzpTDWpXYKnY+IDpPgyBPO5ihieCn+xfPMz7vBK5mthV8mZ
NEYtXNPNH7kiyWE+Ol3sdMGbEzvOYy5kVyqpxrDot926GQa8tdtm6Lt2eHlvKuv/f9yc0ozriNuw
aLpNCD9QSwMEFAACAAgAZQAcRSp3N1LtIwAAAHsAADQAHABhY2Nlc3NpYmlsaXR5L2FjY2Vzc2li
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
YMuKF9YW0Nq7q3yM5Y9w6yUK1MNzq4zddZRxbtJl/Pj07X4/9OI7e6sufX9POm5UBMxZR4RzeIe+
AGi3kTJh8GDQFz8TOLpZI6zpUJ6369WhmbysDu3nH+7vPld2obz0RdjkS0nGw7rCz6rg5yU8xZKD
z0VkZiyYgPd9zGp006VvWY1Oufl/UEsDBAoAAgAAAFu/G0XXGmD5NAAAADQAAAA0ABwAYWNjZXNz
aWJpbGl0eS9hY2Nlc3NpYmlsaXR5LW5vZGUtcmVwYXJlbnQtc3RkZXJyLnR4dFVUCQADLdP+U77F
/lN1eAsAAQT1AQAABBQAAAAjUFJPQ0VTUyBVTlJFU1BPTlNJVkUgLSBXZWJQcm9jZXNzIChwaWQg
MzAzNzgpCiNFT0YKUEsDBBQAAgAIAA8AHEWazvWk2gAAACcBAAA5ABwAYWNjZXNzaWJpbGl0eS9h
Y2Nlc3NpYmlsaXR5LW9iamVjdC1kZXRhY2hlZC1jcmFzaC1sb2cudHh0VVQJAAON0/5TjdP+U3V4
CwABBPUBAAAEFAAAAEWQT2vDMAzF7/4Ugl7aw0rHcjJjl5LCLklo9udYnFhtTV0rSHL39eeUsl2E
3gP99KSGYGQnZ4h0giPl5Etl+MahYxpRxL5squfN2jwkHF2I6EEJBhzpisAoEyUJNyxOmUXQcA3p
BJR1bYyoL401rzldEv2kN3iCDxTdUlKmGJGt5ZyKu/sjFyQqiDrFWY4zXhSTws3FjHKnIrM1i27f
buu+h89mX/dd2/TvX3Vh/eeH5RQ83I9YmUXd7sxApKLspkMkuhzyNO/LUS08IkJBlx+M5BGWVYUr
Y34BUEsDBBQAAgAIAGUAHEUb5e/bnCMAAP55AAA2ABwAYWNjZXNzaWJpbGl0eS9hY2Nlc3NpYmls
aXR5LW9iamVjdC1kZXRhY2hlZC1zYW1wbGUudHh0VVQJAAMu1P5TLtT+U3V4CwABBPUBAAAEFAAA
AMRbaY8bN7b9rl+hjw48VHNfgrwJuCaeOBPH7WQGGAweSqVqu2C11E+LE+fXv8vS0qoSJXdmjCQJ
om4Vizz38i7nXrLtopp/XLfr8fJuvK7uH+bt4u34H8301WpZN+v1+NlDOxszzAn+Ytx8aFYfxwSP
79v5vF039XIxW4/2I78cH/45eftf3Zv/Hr2qNu8eB8A/Nz8v59v7Zn0Tqk11E/9xewNvfddu9h9u
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
GJv4cCM6UdZG8Fmjd3lrThUtkiUP4XhSiI4UJwF8FsS1NjnPcHg9+7NzqsYvq7zj/MlJjd5mP8dQ
G6xY8iPaeFr/9+bSe48DGa9V5mDPCOYggivSJtg3lSYvCwFQ7BUrycEv7dYdX78RbNUJaTYraSdA
etw63sS9LnhGuST4pS8ADAmDKwv+tBjq8ANDeQHdz67bSiV3Han0EASuX79epqE0gEziJOSYiaQ4
AU4pRqwMsEKSysKBCzPTJzO6VCuC7j0YLS41wMPnhy4f3GoZJXUJkDtOLbYiE4f5Xi8h6pQ45EFO
6tTjazVC9JISm52ZduFsV99W2923uu5eN7Xr6/gxDY4l9TqtwahCsYnBpBp2AsLDhvrMfTIcYs7A
32W0kGObzjdaDkJnp7VKdfoWt2zvZt+lGbinfAQ8tNKJWvwWDdUW3rDgBPsxcMJeVFSZCODjFoHE
cPul79B0iKlb3vGEW8Gmhc+PO3hfJ570iURnqDkSjDVs3pwL7OhgYPVoHOUtONK/s7VKGApB4O2S
NWdJFgbfn47eteqsOzoqW5kTNZN5TDr0Pv/EsmDBBUxXg+/UYC3g3UXCaWFJJ5ZoLLdKp46EaMXv
zHbdys1uGiSV/zh+PwwbP3WdtlT/Yr2cC4NUFKJzwRZpKo+fdYpUs5IluJ43ppIP117yI6fDd62I
889VbJWazVLbrV42X/79+GmBc+5JnuiJ3lLtwLmDkQRbTSFYzd6QJEJ0KSj8bOPtVtYgyBLt+HT4
rtVn21Fylu/+snt8PpaDKzef1znL1jsPqypENPfcg4Ew2LLihbUFtPbuJp8e+QvceokC9fjcKmN3
HWWcm3QZH56+PeyHXnxn79W1r81Jx42KgDnrQGwO79AXAO02UiYMHgz66kfxRjdrhDUdyvN2vTo2
k5fVsf38w8PnL5VdKK99/zT5UpLxsK7wIyL4MQVPseTgcxGZGQsm4H2fbhrddOnLTaNT7v4XUEsD
BAoAAgAAAA8AHEUo5egbZwAAAGcAAAA2ABwAYWNjZXNzaWJpbGl0eS9hY2Nlc3NpYmlsaXR5LW9i
amVjdC1kZXRhY2hlZC1zdGRlcnIudHh0VVQJAAON0/5TjdP+U3V4CwABBPUBAAAEFAAAACNQUk9D
RVNTIFVOUkVTUE9OU0lWRSAtIFdlYlByb2Nlc3MgKHBpZCAzMDQxMCkKI0VPRgpib290c3RyYXBf
bG9va191cCByZXN1bHQ6IHVua25vd24gZXJyb3IgY29kZSAoNDRlKQpQSwMEFAACAAgANgAcRUwV
9HbaAAAAJwEAAEoAHABhY2Nlc3NpYmlsaXR5L2FkamFjZW50LWNvbnRpbnVhdGlvbnMtY2F1c2Ut
YXNzZXJ0aW9uLWZhaWx1cmUtY3Jhc2gtbG9nLnR4dFVUCQAD19P+U9fT/lN1eAsAAQT1AQAABBQA
AABFkE9rwzAMxe/+FIJe2sNK2XKZGbuUFHZJQrM/x5LYamfqWkGSu68/p5TtIvQe6KcnNQSOB/mG
SCc4Uk6+VIYvHDsmhyL2aVM9Pq/NXcJxCBE9KMGIji4IjDJRknDF4pRZBA2XkE5AWdfGiPrSWPOS
0znRT3qFB3hH0S0lZYoR2VrOqbi7P3JBooLooDhLN+NFMSlch5hRblRktmbR7dtt3ffw0ezrvmub
/u2zLqz//LCcgofbESuzqNudGYlUlIfpEInOhzzN+3JUC/eIUNDlB448wrKqcGXML1BLAwQUAAIA
CABlABxFrEbieJgjAAD+eQAARwAcAGFjY2Vzc2liaWxpdHkvYWRqYWNlbnQtY29udGludWF0aW9u
cy1jYXVzZS1hc3NlcnRpb24tZmFpbHVyZS1zYW1wbGUudHh0VVQJAAMu1P5TLtT+U3V4CwABBPUB
AAAEFAAAAMRbaZMbt9H+zl/Bj6tSwMV9uN7EhdNWLMeyVnZSlUqlhuRQmhKX3PCQJf/6tzE8ljME
qXWism2XucvBAE83+ni6gbWLav5p3ayHy9lwXd0/zJvF2+Hf6/Gr1XJSr9fDm4dmOmSYU/NsWH+o
V5+GBA/vm/m8WdeT5WK6HuxHfjU8/HPy9j/bN/81eFVt3j0OgH9uf17Ot/f1+jZUm+o2/v3uFt76
rtnsP9y2mU9vX9fzulrX++9Gs1V1X/+yXL2//blerZvlYn1rbx8XG1UPD7d+udjUi8369vtq8sPd
ydPBy2U1HdrpdHXAij8SzKd8ijEevJjCS82sqVd7lJPlfZ5vXo9Optgv+yiIxOT58Ab+P4J/nz8b
+OW0Hr759FAfhvxDSyT58OZv1ab5UD8DPaxgoeGjyr7++uvhP8m/BgPQQ337prk/vkox4QhrRPUQ
46/gP0FHwoghwgoA/3A37KIBeYfw5T9ge0Z6JIY3hCYung1e1w/L1eZksBoMfDWfD9+uqod3Xw0G
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
D3JSpx5fqxGil5TY7My0C2e7+rba7r7Vdfe6qV1fx49pcCyp12kNRhWKTQwm1bATEB421Gfuk+EQ
cwb+LqOFHNt0vtFyEDo7rVWq07e4ZXs3+y7NwD3lI+ChlU7U4rdoqLbwhgUn2I+BE/aiospEAB+3
CCSG2y99h6ZDTN3yjifcCjYtfH7cwfs68aRPJDpDzZFgrGHz5lxgRwcDq0fjKG/Bkf6drVXCUAgC
b5esOUuyMPj+dPSuVWfd0VHZypyomcxj0qH3+SeWBQsuYLoafKcGawHvLhJOC0s6sURjuVU6dSRE
K35ntutWbnbTIKn8x/H7Ydj4qeu0pfoX6+VcGKSiEJ0LtkhTefysU6SalSzB9bwxlXy49pIfOR2+
a0Wcf65iq9Rsltpu9bL58u/HTwucc0/yRE/0lmoHzh2MJNhqCsFq9oYkEaJLQeFnG2+3sgZBlmjH
p8N3rT7bjpKzfPeX3ePzsRxcufm8zlm23nlYVSGiueceDITBlhUvrC2gtXc3+fTIX+DWSxSox+dW
GbvrKOPcpMv48PTtYT/04jt7r659bU46blQEzFkHYnN4h74AaLeRMmHwYNBXP4o3ulkjrOlQnrfr
1bGZvKyO7ecfHj5/qexCee37p8mXkoyHdYUfEcGPKXiKJQefi8jMWDAB7/t00+imS19uGp1y979Q
SwMECgACAAAANgAcRQNWIwpnAAAAZwAAAEcAHABhY2Nlc3NpYmlsaXR5L2FkamFjZW50LWNvbnRp
bnVhdGlvbnMtY2F1c2UtYXNzZXJ0aW9uLWZhaWx1cmUtc3RkZXJyLnR4dFVUCQAD19P+U9fT/lN1
eAsAAQT1AQAABBQAAAAjUFJPQ0VTUyBVTlJFU1BPTlNJVkUgLSBXZWJQcm9jZXNzIChwaWQgMzA0
MjkpCiNFT0YKYm9vdHN0cmFwX2xvb2tfdXAgcmVzdWx0OiB1bmtub3duIGVycm9yIGNvZGUgKDQ0
ZSkKUEsDBBQAAgAIAGMAHEUAJOlO2gAAACcBAAA/ABwAYWNjZXNzaWJpbGl0eS9hbHQtdGFnLW9u
LWltYWdlLXdpdGgtbm9uaW1hZ2Utcm9sZS1jcmFzaC1sb2cudHh0VVQJAAMq1P5TKtT+U3V4CwAB
BPUBAAAEFAAAAEWQT2vDMAzF7/4Ugl7aw0ph2Q5m7FJS2CUJzf4cS2KrnalrBUnuvv6cUraL0Hug
n57UEDge5BsineBIOflSGb5w7JgcitjHTfX0vDZ3CcchRPSgBCM6uiAwykRJwhWLU2YRNFxCOgFl
XRsj6ktjzUtO50Q/6RUe4B1Ft5SUKUZkazmn4u7+yAWJCqKD4izdjBfFpHAdYka5UZHZmkW3b7d1
38NHs6/7rm36t8+6sP7zw3IKHm5HrMyibndmJFJRHqZDJDof8jTvy1Et3CNCQZcfOPIIy6rClTG/
UEsDBBQAAgAIAGUAHEXwTbYfnCMAAP55AAA8ABwAYWNjZXNzaWJpbGl0eS9hbHQtdGFnLW9uLWlt
YWdlLXdpdGgtbm9uaW1hZ2Utcm9sZS1zYW1wbGUudHh0VVQJAAMu1P5TLtT+U3V4CwABBPUBAAAE
FAAAAMRbaY8bx9H+zl/Bj2soze37EN7E6NNWLEeyVnYCBEEwJIfSQFxyw0O2/Ovf6uGxnGGTWieC
LQPmLqen+6nq6qqnqnrtopp/Wjfr4XI2XFf3D/Nm8W7493r8erWc1Ov18OahmQ4Z5kJ+Naw/1qtP
Q4KH98183qzryXIxXQ/2I58PD/9O3v5n++a/Bq+rzfvHAfDv9qflfHtfr29Dtalu49/vbuGt75rN
/sNtm/n09k09r6t1vf9uNFtV9/XPy9WH25/q1bpZLta39vZxsVH18HDrl4tNvdisb7+vJq/uTp4O
Xi6r6dBOp6sDVvwLwVMyYxjjwYspvNTMmnq1RzlZ3uf55vXoZIr9so+CSEyeDW/g/yP479lXA7+c
1sO3nx7qw5B/aIkkH978rdo0H+uvQA8rWGj4qLKvv/56+E/yr8EA9FDfvm3uj69STDjCGlE9xPg5
ps8JHjGOhwgrAPzqbthFA/IO4ct/wPaM9EgMbwhNXHw1eFM/LFebk8FqMPDVfD58t6oe3j8fDN4u
N9V8uNjej+vVsFkM15tq8mF4s6onW3jlYw2q2IJOp8P77XzTgEb+NPz5fb0Y/uXP4it4/S7PPv40
3CwfWhPKb/8pW1J+cT6vHtbw6s3+jWH7imsWFdjRi/vqXb1+PtjLe7IdQzTsfTmbzcp70mr/Gbxw
3ITh/3kelPfKosgiQUxbh0zUBFljEhYKU0roX/4AC+zKVJcErWczNXw2b8bwml+u6rf1enP3vrkf
TT/Bl8ObbC4oGw2IabTlzgsGcgmHWJQROaw1stIFLxmNWsnfKOalhTvQKabn0OHLvEfPHsU9hb3f
HHgH9vABzsK4mTcbcCUjPMIgSqDUUWIisgJ7xGhgSBuZUJBKYOqE1Er8ATt2SQGGnytA1OO8d10j
BQQlA9UWh6iiRkpFgZiPGDnJDZKW6YA5g90j/6u4uy86uMczfI57KuT54YI3X9bvqsmnEnqmoyMu
eqQpBruzniObQJhkHbbKJJWc+a/Q75a8uGXHER2h6tm5NdZc4p5Qf60+VneTVfOwydZdEgsbgwmR
GHlDGBwnEEszSkE2YYURMQjLf6NY3UXLgnXHnIpWKy3PRJvpurBfl2TiDEvCuEUQOPJWaXARPNsd
YRBeorXMyN++VZeF2T8c7NAqACon01OXfviypsowkAIOF0QHCjGLHv0akx6AgTdT1IEziFwjI4NB
zkhLQ1JKMQygt+tV9le3eYqTBTWekaq/oCZ4ontq+2FbrTa/7jRHRhrGA1cZMQAAcRMnGiKiiXLE
hFDIaCcRIzhiEawnKgGAu0/rTX1/+7IZryCc3aaDQta3j1OX1fT4/BQ47Ik4B84Ya/0KiLpuF/z3
ot7kCUshgVprpbIECSoiRL6EkcZUIxIoOBhFpCTkRHW7CW8vTN3FxngJG2+VCoM/1J/u360OmKjI
jv2iu/feRMYMRy4SUKtRCRkqHYpCGSdxjJyaIszTVbrwFCnAU/IAb1JN3tcHdEJdRScF0cqD/bHk
Etifg5BKLJwhbTgXkRrNQxHdySKn4CiR+gwcpYodwCWIP0AM1/WqGOal5zRCdFDGgrK4EsiJyCFY
KE2FgS+DvWqNFsy9mYCcy8VdvfrYQGQrm+XpO2/vymPe1OvldgVT3BaAD7oC8oLUenyQ+puXJWmT
dtZZ5pGCMwseSwrwwskjSQwXFuhBNPiqtK8e6gVMXQS/G97swB/W74LWkwLomvZ8x7cvDprMvoPi
I3znA5NGYIQJA9sRniJDwOtiYQ2zXLmo/RffrEc05aGPzzuyMnzuJ/OXPVntZAKufwXpyehjPXmZ
N4y17nL/G/yS901I4SRkO5RHCkc6QeD0niEPpoo150q6eF3wx2U+J+9u4fKw3bOenOOCnHR6cKu/
PEwOlkg4HnF2xTco7LzkQLdhk0FMKjkyDCir10xggr2Pqey5jot0odG6AE2I3hYcJR3NKki9P0He
vVkt52B8vCXVnGRsELSAqVDgZSkHK4wtMkoFJHwKkQfwrdKdb8HrVfMRlH6i3tSu4fdrXNiNzpiO
TNzgc5l4RQ/q/hXIyUHdIwqZ6iVdU0uEIMBWLFWg6wBU2UkDB0oIo3iKhBN5ouvTqbuAKlYABMlW
V8k5HB/OyQtICFYLSItviABOAO+2ny03iAQONIfckirEGMksMSgULZBhooiKAT9FyaXVyqoujTyV
j/HJOW2AL00vHXnrfdZ4HkiyIDQxpyB7TF4B3RUcUi7nItLCpOAcD9LKpwgC05Zxw4MezHN3A4em
T9RDPd6+u/t0P27t22RHY3R78gCYIgEZq7M1MDAE44AzQL4UYrCSKP4UvKfzl4GfjuhIIMa8IMG4
7kmwfqjryfvRqp4s3y2a7Mkf12lPbGvz7Wc+tZDEC0jWIbIDUWMJTq3GIBzkUiklRb1l4arj9NVq
fLrEBad516J6UwJ1+sbZsJ4GZucakJj2TO1Nfb/c1D819c+PYZK2lqfxSGahfQKGD5vJNVggpJAe
mQhR3lIg14kzB0p5ymaeL3SJtfTHdcSSEhfE0nWPeBerMIQAY9UgiqQE7DLmYpPJHC0GSRl3cI7E
Ncp9f+6xmKwLR0WdHZXvc0Fus9xO3t9tH3KV79TOKFMjDlO0nzm9hbw8AnlFRBJIBUNOBaMhECe0
dwHOP5fkKSq/suipxs+GDbqyFAUE6jE9FbDaTpvlaAuGuB7Z/POPi1xQISPTpovtZybsAdwwcGwE
jNMg5rxCVmPwzpJxCBLEJvMZhnyYuyzL8XFPhnFJhvrAb99U06ZaTOqS0XhGlKOAE043JBbUJAht
AUgvUCaWImyJJlcRt7XTF6+ewNG7MLoSiII/q6joneZ1rgTnwHyj2jMMQVmZEdlFQ6ojwxJ5nvXt
BNh9ds9RaCVE1FbJ65ny3X7uC85o/3TQBShLqPvp/dvVdr2JH6v5tiXT9l2uu++9EM3YrVGBcQ1n
gbZpHvA5HYC2CuOSDZREYtmTAmBhoQsRsTCyJ5opiTbtifbi1d12Nasm9fBGSyBL+ZjvfsisSSZM
fIDcGig3YsoyZLQB9ySjBnorOHXsumkdZi8LcXzcRc5LyPm4Hxr3G/q+yYFwZ0wY0xZ2lIErIFJJ
glMSJGVLgrwPklxuLWXEyy8SBvcIvn1x3eS+fdGTb1KQT/T7En+rN+lueCNa0XjLYokR4Gu9ydWs
XKXHHFnJAwLz0sZB/MP++lFv5yyDbR91cI4lPcc5Nqx3pEMzyRYIK3Xy2OxTNW/NKDkwFZwSEpjl
GhhECks1mJHWKjlPKcST6/txQls/uyvneC5Qs7NxHekn/LwKlL+8mNEeKn8n35A2ndVKWxlVRN5l
8TVOSOf4zkH4RMBzeyP/p3T28XlXAlWSQKk+SW7WH+xq3GxWrSfJfk2029d+5gCjCLNMQGyRGKil
9BHScaCWVHgtLUtgdddDYm+FS9vRGdSVZFKwxEnNe5b4Xb0a16vlkSDm1ATyOkhHkkBR2ZSTbIM0
/A5Jtg9WhwBmeR38YdIy6sPTLty6kERNZtWBAk6bNaSoQOsPFU6qR/RapSAAbEi4E+RXAkKjiQ5p
DfQrSSa0EJJEXK4UdFfqgJwWUms2nZkD5VhvppNnz0byWOiUxUKn2kOM4Fch94iQvAYwEuMTsjgC
YmcCNxxLRW03we4ucIoNIst5BOCE9ptiu97iLzkUyx22HSOyjhtGtQG/qCEN8h7SICk0IhEckFFE
JE0/62/yxJeT6Px00EV37tQ55ZPeYZvW6w+b5cP6xFPuqHX7mfUYGNilx0CtwU8wD0QO1KqQSzQq
Ka1TnjwtNW0XOri2POBShno2sCMYFbQgWK4qqV60stvN+0Mo3sUryy0llkL4pRLcR4DIZXK5Odhk
OctP/ZNo0X7yi4ErP+yCNqoAup4cTuDbFymVuLRSWDoH9LPtqDLtchc5YRS0kywyZ6hmX4hLP0Lo
Iq+n58gZMwfk1XazLCG3uaXoI2QBLmfBhEEWnGwEzsMYhiNAIS3rnr/HmQbdtaoCADE+APBv0t22
2RRTETh3wVIg7pYHSJ4YeFwjIIl1DJiLwj4k5bogurN1gZjznIjPzlpv9uFh1xlvgy8hGs5Rtr0c
WROXDMmUnQCNAYHftAgnS21gPgklP1c9v9D09/tngy4yU4LbL+jklkJoVvVks1xBFpQv2LQVQTJq
664kcQUET+b0E7ZRGgyJBFAlSPICczIFi+1nWxbH+ctm2BlyKgNErXPGsKuqdWTYtz6qRXZfZB9o
hfVUSwnIJc9FewEBwFCGPOjfUsWdc+EpZ/04+dW2S9UhCIJOz/M4kdvF+2D20r62/ruSyYZ8ucVD
5kadxXDi4fDoXO2mGFSNLcGG+N+j19ADOegKcl7Zh+M07bngH0LupnDabsnBn1mKPQX245xAjBMP
UVl4JAIX2hkFXuPLt5B+CBc61aEjlSoQbKFE/3x/Uy/qHSWs5ndgseBfj2bH6K6OHrjV3DEEPDXH
e4nBa5sIBDUXBjlXlqinmF5hqbIkhYEd0SpSEK0is4MP/fDLfFr0nzqpGCBd9UlDpqAghTVEMwR2
6AVhIWmSyr3s44RdHBQXcKhJz3B29en9Nmfl5iaFyZoNzFrHIHYHAZyTYZ7b7CYg7JSKknuMk3+K
ZjsrXEiWT4d0pVDnIVFMpCqwwbTcLqZ7MXYBQXE+ImZXswSXClSQegdGEnJHy1AHARK4AgmJqs9k
Md35L1PDxzGDLuDzxr2Yyurgov76mhZvYciUXADqbzzkXSy3h2zuGWLLiDc6WKbiF2IkRwQd3DNS
cK0zUp1p//5+uXhdLer5+rEZZzKlBbpNgjAMcadVZoFAaQ1kwpKCG2LSce/IlyjHnEK4tD2PI3pC
jgtC7uuAoJHxr+BVIdM59hrxlV6jj0ZpAfwRmBg4XYHh0DBDIelPGEtgRjbRLgvqTN8FVqjiiRnv
99V/HDf/2bZl1V3lhXI2Irkj5I1VMYIfAf6ai9hKwk8SWCIGggUhGfM2c/zsAT4sUNbr4WkXujnP
iMCUjrd8Poa71weFMo2B/1zJgOHgEsEtuHjX3nJM2RFxjRK2ihhrJAjzO4XpR9yDrmSiJO601/eZ
Ltbrsu8P4JcE8CdMIHNl4FsRSJXLZdYFFlOkwl3r/ZxM3MU1xgVc4+M2ZJf10/d+3uRSc4kgOYxN
WwN2ufrDGIGfHEc2U2042MSw9GUu0Zwj6QhCWEEQYvpl012fJ8/Vtlp2TVK6b5LmclaK1mkGWQnJ
twCYJgw5C6akrEqUKe59wp8NBO3cl2NA+7iL3hTMA1jyYRuayXaS7/jZwx5wMyJXDoRQmgWGBcL5
DiYLBKgCTwoRHyG5NkpQjrtOprdCBx2rWQFd3dftzhG3FxnapCV7GOKo5tLlu/E8ZiAeaWMMEGhC
iVCUMW7+a+++e9aBygu3qiQfk8M5mzx7Vo2bY2lNXr2eF2BjpEkMcmWwayBcQAos/Bry9QtOsaCR
d7V4On0X15iWcB0vXML5bBazY+7OBXhocwVaXp5C7IfUD0gLS7mtzR1GhEtCXNLS0PLNwc5CXYj1
OS2VAptHChK/KbkACY43upyP8uTaJi/SRAF1IlgCW+VB4/TFOMgBwqALsiogl7xnnw+r5rRfNnqd
f9/dytUtqWVatT5AQLLnXQwoYwfLBYZrJJcoaSaAVWHhFPniedERTXnk8XFXclWSXB0rWdvF5IkX
ZWkK3nALLAAzCDC5x60F2DolkkeIn1xeuIp6XKIHbFoANsE9Xjhe3uc/H9rV403WPYZYlq9E5y51
6zAiMsxTFGOQwciksKVPoSQO1igqEh50kRYqM1LUus9g328XH5rFu/2KxyYCY22SqV0EMgX2H3y+
v5vrgzbXtijn+Q9OGI8+PemyVneZC36vO6grTl0QR8r+Fa2Shdq3d8C12Mn1eJM5qhQo2ez/crvU
YYORV1rBOWDghOLvdx8YHgy6QhVcvWKkJ2mOatvmuF+ajHI9CsIj9eAjkdS5HuUhazW5J8BMEI4L
wT2zT71c9+OLy6H+x05zF+AVwgDwpMN5zdec39TvmvUG9r50Z1lFjynkSSJfDASaEnO+F5EjWFip
o1Uy/oE3tLvQu5LrouTjQqJYw5SHP5Zo71DI1itD5BVacYtkym6KtteKGG7vEibsFCdWP23Ldktc
/JutwtjLfvl0RFfgkl9RsyOz/mU93zzeT2WjzEXOvDPbe2fOiVLSaWSA5+Y/DwBOImTKnTTw0slK
zlOXiZxO38U1K1BNTfsdm2/usjPY6X8HgTIXWp5Bcp6eGJgekH4UaK5cAAMg4rrpwYwX6mV33YOt
S1ReM3LsPe5SmvF8OfmwPjYgzXUqB2fdO8+QyFVOplxANrcirfdKQLQXoMhr+dPpYh2whhXUOeGT
QvnpeOB2vHVv4pipkcyeqf0hU7sopLKC/n9v17YcN5Jj3/Uvqc375TGvPRNr73SEtyfmbaOutrbl
kkaye9t/v0BWFYtJJkvq7dqJfpC7yCABMhM4AA5Aoo2BN8w0vHXjClEFHrdlNikebseHuMhyDWNP
V7fR+znwMEauZ7lDFDI+HfYPn7+/DBlE8PhHVh3+AwGXBcyK1ZjIKpFAILPReZJhKXDOIWLh6jq5
a36fpTzi7MS7VoVNT68hTn/ZfX36bbd/eBwqXBy27rUWHwPaRLBVzGJi0SdHLGxYEqRA4oThWvaT
ttM7tWKudh0x11Mvv4aY/7QSPq4OgLK/jqlpx3QU407zpBDtAXqX2BnrFbaSF/jPQtDL3Bu8usn1
l9hOk9Nafda95bQd0p8/Hz733KGQWoNXiCRHhhVkhozmFAkzyipTPANvfqPQY5CgkRt5bjO5LRs6
jzZPzz/Gi8Vet1Kwr5QRiZLskOSI+R7PqCXKmOwTC5pZ3u8Ha+4zEbGzosEZn0V8Xn295xc3RK94
oWiLVBAoEhUUFk2FIdZkRnjkynqWjAi29UKji7dCmc76tdbNGiUwI3tkDox9EYseK8acpBQNbqpA
rINIwRQwoj6k5Jl8LxQ4Xv9aRnjKHwBBO6t1xYZHGj74T10uLqM80qKJjdg2E6QjwWsIEjK8WYAw
3Fj5L0pTXkS8a5XYdjSzapQ+uWAWra7moDL6VYsdaRaTy5Qp4h1Ah2IjHElCpaRn2ZMeZAEBdE+q
oX77U/nHpy+rl10/cyp9cBLCWR4TGrhiiU0AnYryPJbIOQu3avNrxWhVcLyjgpvW/+PL6vXLcY7G
7uVEZz/SAGqCQjJkDKasfcF21uQMkqkgdrFIYBCK82iMiKIXBHRWf+dmC/ugc2aj3kbNc0fw46Up
FlYImKeX/3oZssiCXjWF1BYLwVwiyiFL1xVGfKKUSOWo4Cxx6d2CKZzcqhV01dm6m7WZ00Yed+UT
7P9nHOJSYYt0FbLUpa2ZpkokkjA1IWB1kmBTgZA/0+S0Vlq8y/7Mb7MQ+s7Oa5Tamo6J369ZB4Ni
3z0uKH3s5qPm3mBoBSglMy8JZxIry2CTHAe4ApEwTQkMu83qTciJl14OhPHoXStfZ0fsN7rf4vT6
4/Dty+714XXa4MTOyXuGQNLJnAr34A6oiwgIaneMIsYnqQL3JjJ98/j42Mj0aS7hvNtpOKl9FJs5
H80y5rq1i29PT4/rp9+PXSr/efyfeaNKiqqA+oFQrM8LA6FOiFwSQKM6Raeyf4u4Mrr8lV6V0xl3
reSrjjpqaFfZfH9+vUAO3i/t8ZMdcIDvAG14gtQnMN/wL5upI5kLVbwMjptJJWN8+VauTu+VZdv9
QhPKvmELnNpRmKo8TIsbhsKO58hkqkSskLwnOroItonRYO27ulHeogzMz2tV2nVU4lZfiz7/9unC
xFfqGHzWv2jYHMPBPpxkA6ha0AzRSooJ9g/NOUtJVYy3iz0vkixQ0T71uPegX2e7gE8YSscfH143
764de1MYNwBqvZOgsq7s6UwBpnANGKEoFf5VoGwkeKOw0J0NJcyU4fVhdfjszzPWKnWYnqjD1aFy
kVy1ir7glBZhUU8wECpRWLugabl96nAs0gKCGp3RKm3npAsrlZlUzIcXbTlsTXpl8pOSIlDlM4nF
K4I1c7AkCicjca4kYwjFr6WAem/GdtIF+ON5KSJ2PI7ceTh8/uXbw2N/EIW2jHNOqNPYVMgwpxlB
ToUduy4qTmNr4hYuOxFt2xHN9HhRf3/Y7p7ODSrOHZnmiloOUIboZBF/GYHcQBxN4r0KVhVr9ZuW
oF54GRPUw43QrtNAb92ajXAkBGTx5cfzheeM+bfrWDJ4wMs0QrQVLMRd0UPciiT6LGLwyJKiuixh
ycntWmk7EMau+LTIdak4/vVvlYyMvu3CwvSOUmGx2mgLliJATk8lJ0p4kYyzykr5RhvdYiq7Hrpr
xWM9ma+NKMAxNugjEClKVZjUACksDqQQIRgSaI4kq6xCAazFpPiTDmJ8Rit6ZzCQXYuhePL710d+
wRU1aOqsCXqer1ESdQUJvSJ5HMIFUVTC7JyhGbsS4BWYSUp9dP27VobOOlivpw1If9k9fN3ipIdx
KsPHQiNyrhS2pgvLPQ4PtESzbJWwOtr3pTJOF18Yy3I82Aq9Vj2h9flpHu94H4bnqd39tS4kx6VR
Hm2FRejAgyMuaYhKbZbBR3A9bhLut3dohdt3nugWIv5ds0p/q/m7MzzTVY7iMxMgLEIzj10GCsw8
BDQm8hgZRDzFm5v583r/hfEw9Vij1XblOlqt9mfr9nW1+fJ08WfXc4WhCMExnZytAwhqAR07DiEc
BnLByJBk6gfIo7u00nWoYPDjYHvTw+rz4en128PmI8SgOFBzmRZmlQQMlSKhiYNwNGgwE1KRkq1H
Y2fAq7SL4frVW0E7RBX4cSCqPK6+Hy7tc1JyrK3xK8wHw6IvsOUUzmDjmAGPSoP7pRDJ2yBj434v
D3J8n4mAHby23dMLK+N/Hg5DskpcT6NxZqhIQhOefJ2mAPgUdCLZ+8BFpJomsUDMuNylEW/XGSdg
d3o2jSnDxpKqxgf1b61DFqRJM6I19cdRLj4gpnSUZ8qLE2904f+h+MDnhcgzN/rsO01Rju6G4sHr
P+GB7sT5ebv7XqXVncOBlF0MYIATDjQCNBKJh31GlNKwq8B8aDeptDaXv2tlWPcEG/b7T38t/WYt
SRO1uJVrRzB4JqdBGENVcTIwa98Yw/b+qsYgQSv3fm4JHJt1lDwBCn09o9DaGFDXyinXTaktCoAC
yxR8QoLYyjvs+DLGuUTBSmt3C1p3A4WXO5qGUxpFWccgYxPfZCesV5tfvz+PM0/s/jSr6f44q0kH
raIEHQ12ZVQaLJhmgHTCJka9j/Dzu1hLkzs1xKV67K4VVXbk386qsJvV42r9uPvldfdS5zodJzpc
JjQ52NJSOQWoA+dfGQz7EYzGEG3tLpGJ/qkxlOPMR0+YheRH79T2AWzn8ZcTW3bhzT4dfrtgQnO1
SbnkbAOgFJJDzYJildbpTJIwEAjJBBEjm5JmR5dvBNPbeYHL6dl06bpT4+r52/cjC7EOLjrCUxa4
1NSRlDPSkrghLlpONM8QrxrKnYu32D9jCRZiiNEZjY6WdnRc6+kMkXnXjQNvUisZLBmIwLNGgpnH
6cQWXK9V8NgT1QFCNO+vr7vr6bP4b/20mVvv5hkkt6F8klv4dfdy2A0hO6eK3kt7zDj3fbUMYNxE
FKRonnDYFJiB4jiRTHqadM6pcmQWUwzjG961somewNP5OV2G63ldcVXHTRQuBc74pJwhbATpglIK
63PUG5xH6/kt1tXPrSgzKutEPd1RTw2A6acPv3SZxxpcSfaauIz9ZwFcplcG+8mVz1LmqN6op/6B
CZ6/9N5Kp+rlNrOB0OgnPz/W/Mo9O6bk7LGfFzy9i+AlCfbt4+gTS6xmlCgI/XiJkgmp/s8KHI+1
AnfCKgdwsGeVxvih8tMqhLaK1bm1ikdtkBjPMWOF7o7xTKIUjnmnqNN/gndxOnjXCtkx9LtL3zmy
PDdNWqgpvGcaufMCBOQU3LML4J49gDpepLaCCxHjQgKovWwrk+rItKdT+/ehhgmjZIpw91hKrH8x
MWsKPEtsjTYWKxwGGUIcACiPzjGTWUrsdpi6lWYpJzs+565Vr2Pz92zIweCI7MFg4qztCpP61rIo
CBdMdCQyHMBrObwVDSDEUaG8Tglj2n4Pw49ePyuIMV/dK7buFUNOeQN7L085clpZwTHCbTnIUeCV
4BDugHOjBeHCGU95NC6XW+GgQYzlLNgsg7DayLkfgB+HPqF/wv1XB8C5lwnU/Gp0yaQIhiPIKdLg
DC8Ljx92RqEKLFNivm1xubyD6Z0aMbe88ya2fDpe/HV12GJ5scfaMMIlrwUJ2mAblvGwY8G+S8a9
VgzEjvSaJ20u3cpmaEc2QzsMgEm1A9tysNhcZ2kKWA4IVZLCGK1kWLYZkwaewV6GmN2UGxWaOydO
9Jk7odWOTquaD4dfmwAGs6O1YKxqA2WCOEV7TkyN1rJnx5ZQK7zQSSghqL0J2hxL0dj8w6+NVjXF
M9OK8aEv8e8fP/38+P3zw+FMXOkVVihsXOytBfOPA+oSDsrJnCRdVJK8OPbGaK33Nyf2xRmrtOYd
btWab+et0o9PL59+HDbIb7CncTmnmEAEQG4qEcDeCvEOwGWTKJinVEBDBSBR3ryEN8izZKdOh1td
O3XpNb68gUb7+vT4273rvTWsP6cI+NkjOBWsFNz6kdAQFLNR2sBFG4a1V2sEqVTyqSBiNt/0yrhx
HUMoKaLpwby2A1fllLJomJjRUoLXvp7I+GMzxNfSzE38ekeF5jMv9hN+V+lhU4u9mo5nXEVqVaRG
ErDt4FqjSGDWwaWB7UwiBh6SZP8PK+Ui0rJTO59x1+onO0rPRnr9vHvZP718xSGj40I3q/z5yp0P
CQyW5si2rk0K4M4k2mYfceSjN9q+q3usc6OFWGZ+YquY7mz63aVB7/fVy4VQ2ThA7U202EuWEbJ6
BvvBBE9kSZQCbvWKTjLoo0u1IjjXEcHNubabpxVG6Kb24tWu+hIdTZzwgCmIDMsfdkIgKjMNwCDy
wN9I4eEll1YCHJqIOU+ar/dC9QqT7USSY1WKMaxPmgTRbXKAG2rZWmAzKjWaaO8E99iPnu27h6a/
PZZkdtpYpQ3X8xLbBhf1PI+6ecSyMGA1VyuD/P70BkwqgcNzFwW7/gGieVYi5v695Mwy/0a7Fzqw
eCU+jE18uBGdKGsj+KzRu7w1p4oWyZKHcDwpREeKkwA+C+Jam5xnOLye/dk5VeOXVd5x/uSkRm+z
n2OoDVYs+RFtPK3/e3PpvceBjNcqc7BnBHMQwRVpE+ybSpOXhQAo9oqV5OCXduuOr98ItuqENJuV
tBMgPW4db+JeFzyjXBL80hcAhoTBlQV/Wgx1+IGhvIDuZ9dtpZK7jlR6CALXr18v01AaQCZxEnLM
RFKcAKcUI1YGWCFJZeHAhZnpkxldqhVB9x6MFpca4OHzQ5cPbrWMkroEyB2nFluRicN8r5cQdUoc
8iAnderxtRohekmJzc5Mu3C2q2+r7e5bXXevm9r1dfyYBseSep3WYFSh2MRgUg07AeFhQ33mPhkO
MWfg7zJayLFN5xstB6Gz01qlOn2LW7Z3s+/SDNxTPgIeWulELX6LhmoLb1hwgv0YOGEvKqpMBPBx
i0BiuP3Sd2g6xNQt73jCrWDTwufHHbyvE0/6RKIz1BwJxho2b84FdnQwsHo0jvIWHOnf2VolDIUg
8HbJmrMkC4PvT0fvWnXWHR2VrcyJmsk8Jh16n39iWbDgAqarwXdqsBbw7iLhtLCkE0s0llulU0dC
tOJ3Zrtu5WY3DZLKfxy/H4aNn7pOW6p/sV7OhUEqCtG5YIs0lcfPOkWqWckSXM8bU8mHay/5kdPh
u1bE+ecqtkrNZqntVi+bL/9+/LTAOfckT/REb6l24NzBSIKtphCsZm9IEiG6FBR+tvF2K2sQZIl2
fDp81+qz7Sg5y3d/2T0+H8vBlZvP65xl652HVRUimnvuwUAYbFnxwtoCWnt3k0+P/AVuvUSBenxu
lbG7jjLOTbqMD0/fHvZDL76z9+ra1+ak40ZFwJx1IDaHd+gLgHYbKRMGDwZ99aN4o5s1wpoO5Xm7
Xh2bycvq2H7+4eHzl8oulNe+f5p8Kcl4WFf4ERH8mIKnWHLwuYjMjAUT8L5PN41uuvTlptEpd/8L
UEsDBAoAAgAAAGMAHEXxyZ0qZwAAAGcAAAA8ABwAYWNjZXNzaWJpbGl0eS9hbHQtdGFnLW9uLWlt
YWdlLXdpdGgtbm9uaW1hZ2Utcm9sZS1zdGRlcnIudHh0VVQJAAMq1P5TKtT+U3V4CwABBPUBAAAE
FAAAACNQUk9DRVNTIFVOUkVTUE9OU0lWRSAtIFdlYlByb2Nlc3MgKHBpZCAzMDQ1NikKI0VPRgpi
b290c3RyYXBfbG9va191cCByZXN1bHQ6IHVua25vd24gZXJyb3IgY29kZSAoNDRlKQpQSwMECgAA
AAAAZQAcRQAAAAAAAAAAAAAAAAsAHABhbmltYXRpb25zL1VUCQADLtT+UzDU/lN1eAsAAQT1AQAA
BBQAAABQSwMECgAAAAAAZQAcRQAAAAAAAAAAAAAAAA4AHABhbmltYXRpb25zLzNkL1VUCQADLtT+
UzDU/lN1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAL78bRQFg7kjaAAAAJwEAADkAHABhbmltYXRp
b25zLzNkL2NoYW5nZS10cmFuc2Zvcm0taW4tZW5kLWV2ZW50LWNyYXNoLWxvZy50eHRVVAkAA9rS
/lNrxf5TdXgLAAEE9QEAAAQUAAAARZBPa8MwDMXv/hSCXtrDSllzMmOXksIuSWj251icWO1MXStI
cvf155SyXYTeA/30pIZgZCffEOkMJ8rJl8rwhUPHNKKI3W621fPaPCScXIjoQQkGHOmKwCgTJQk3
LE6ZRdBwDekMlHVtjKgvjTUvOV0S/aRXeIJ3FN1RUqYYka3lnIq7/yMXJCqIOsVZjjNeFJPCzcWM
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
262sUZBLtOPj4btWn21HyUW++8vu8XkoB1duPq9zlq13HlZViGjuuQcDYbBlxQtrC2jt3U0+PfIX
uPUlCtTjc6uM3XWUcW7WZXx4+vawH3vxnb1X1742Jx03KgLmrAOxObxDXwC020iZMHgw6KsfxZvc
rBHWdCjP2/VqaCYvq6H9/MPD5y+VXSivff80+VKS8bCu8CMi+DEFT7Hk4HMRmRkLJuB9n26a3PTS
l5smp9z9L1BLAwQKAAIAAAAvvxtFB7McNGcAAABnAAAANgAcAGFuaW1hdGlvbnMvM2QvY2hhbmdl
LXRyYW5zZm9ybS1pbi1lbmQtZXZlbnQtc3RkZXJyLnR4dFVUCQAD2dL+U2vF/lN1eAsAAQT1AQAA
BBQAAAAjUFJPQ0VTUyBVTlJFU1BPTlNJVkUgLSBXZWJQcm9jZXNzIChwaWQgMzAzNDIpCiNFT0YK
Ym9vdHN0cmFwX2xvb2tfdXAgcmVzdWx0OiB1bmtub3duIGVycm9yIGNvZGUgKDQ0ZSkKUEsDBBQA
AgAIAGK/G0Ua8MnM2gAAACcBAAA7ABwAYW5pbWF0aW9ucy8zZC9tYXRyaXgtdHJhbnNmb3JtLXR5
cGUtYW5pbWF0aW9uLWNyYXNoLWxvZy50eHRVVAkAAzfT/lO+xf5TdXgLAAEE9QEAAAQUAAAARZBP
awJBDMXv8ykCXvSgFBRKh9KLrNDL7uL2z1F2Z6IdHCdLkrFfv7Mi9hLyHuSXl9QEjnv5gUgnOFJO
vlSGbxxaJocidv20fn5ZmbuEYx8ielCCAR1dEBhlpCThisUpswgaLiGdgLKujBH1pbHmNadzot/0
Bkv4QNEtJWWKEdlazqm4uwe5IFFBtFecpJvwopgUrn3MKDcqMlsza/fNtuo6+Kz3Vdc2dff+VRXW
f36Yj8HD7YiFmVXNzgxEKsr9eIhE50Mep305qoV7RCjo8gNHHmG+2eDCmD9QSwMEFAACAAgAZQAc
RQKUHkGQJwAAF4wAADgAHABhbmltYXRpb25zLzNkL21hdHJpeC10cmFuc2Zvcm0tdHlwZS1hbmlt
YXRpb24tc2FtcGxlLnR4dFVUCQADLtT+Uy7I/lN1eAsAAQT1AQAABBQAAADEW1lz28ayfuevwH2T
Y4OafVGdm9RgS3TiLaaTnKqUSwUCQwllLgpIOlZ+/e0BCBIAQUq+cXLsKlMCZrq/7ul9aLNM5w/r
Yu2tZt46XdzPi+Wt96udvi1XmV2vvYv7IvcoolI/8+wnWz54GHmLYj4v1jZbLfP1aLfyymv+tHb/
Vu38MHqbbu4OC+DP5S+r+XZh15dRukkv418nl7Drx2Kz+wi2xTy/fGfnNl3b3bPxrEwX9o9V+fHy
F1uui9VyfWkuD8zG6f39Zbhabuxys758lWZvJq23o5erNPdMnpcNVvQZI5RlGUJodJ3DpmJW2HKH
MlstHL25HbdI7NgeBBEIP/cu4N8x/H3+bBSucuu9f7i3zZL/KOEL5l28TjfFJ/sM9FACI++gsu++
+877DX8YjUAP9vJ9sdhvJQgzHymfSI/QK66ukBpLjD0fSQD8ZuJ10YC8Hjz8DxzPWI25d4FJwviz
0Tt7vyo3rcVyNArT+dy7LdP7u6uR26u19t7flTbNb5hEVCiC4GlUrO/TTXb309Zu7Q2+aulkkRZL
f1Pt8LyLtS2LdP6sIvW8IrbepMDTuyiW3ryY5g/zfAz/FNNn8B573m/os5zNZkrPMJIWpK931kAc
7XrrQfNuHxG62lkfWs5mHzwvvAMz2a15BfvGi8WVwntyNcECFF5b0NVVf8O/mhcHXi+81rOdObV2
RGCTt3BW3wLCzQsvu0vLb755tgcMGyshEW3AWkmVzHtg4+WmfHi7AhLjuytJW4hrzE+CcHWVr96W
9npZbED/xZ9gY6vlr+AfF0d4DroDOGlKP1ReekzaKVCKDpwa0PPfXk8MnH2RVVy8Ncht89aTDzVL
eNKogNHDSTOmMiXYhx7lmrbfo12AQEfkuFBdcpmcHpOrCd68nuyVYoFEJefnTZ9kD2Cu+GyIYk3z
ev3KLrdBWv5SrIvp3NbEfrh+v1rNp6vPlYXqA73MzqbckmF6NcUdvesleMsyg9O8Xu9oN+fXoU5x
l7ok+hR1D7RFjul/bzfm9rasbOfn61cQqy62y3Vxu7S5c5JvXnidX4dACNoDkdHTIP6nggFcHSuz
zN/cu+NdJ6tyZ3EXNzcvJ2byGiILgOzzfwIcyrpwFMHn4NR6AZ7h6v6hZXHXy9mqXNTGVzF5mW6X
2d3Elp8KwFk7NG/FLSsyjPV5VjUz4DUvwMcmRW4nlc+8sotV+VCdxvCri5eTCSjH4YpeeFOQ9tkp
VKSHKkXkUVR7JUSrg5PsDqQN46QmXHJo8yQ8e5xnzXWRZnc3i/XtPjWsH9Ybu7j5aMulnR9yhGyz
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
CTzFlIPPRWRmLKiAt30BaTLppQ8gTW65+wdQSwMECgACAAAAYr8bRc4LT/dnAAAAZwAAADgAHABh
bmltYXRpb25zLzNkL21hdHJpeC10cmFuc2Zvcm0tdHlwZS1hbmltYXRpb24tc3RkZXJyLnR4dFVU
CQADN9P+U77F/lN1eAsAAQT1AQAABBQAAAAjUFJPQ0VTUyBVTlJFU1BPTlNJVkUgLSBXZWJQcm9j
ZXNzIChwaWQgMzAzNzkpCiNFT0YKYm9vdHN0cmFwX2xvb2tfdXAgcmVzdWx0OiB1bmtub3duIGVy
cm9yIGNvZGUgKDQ0ZSkKUEsDBBQAAgAIAA8AHEUKjXeT2gAAACcBAAA1ABwAYW5pbWF0aW9ucy8z
ZC9yZXBsYWNlLWZpbGxpbmctdHJhbnNmb3JtLWNyYXNoLWxvZy50eHRVVAkAA43T/lON0/5TdXgL
AAEE9QEAAAQUAAAARZBPa8MwDMXv/hSCXtrDSmG5zIxdSgq7JKHZn2NxYrU1da0gyd3Xn1PKdhF6
D/TTkxqCkZ2cIdIJjpSTL5XhG4eOaUQR+7ypNi9r85BwdCGiByUYcKQrAqNMlCTcsDhlFkHDNaQT
UNa1MaK+NNa85nRJ9JPe4Ak+UHRLSZliRLaWcyru7o9ckKgg6hRnOc54UUwKNxczyp2KzNYsun27
rfsePpt93Xdt079/1YX1nx+WU/BwP2JlFnW7MwORirKbDpHocsjTvC9HtfCICAVdfjCSR1hWFa6M
+QVQSwMEFAACAAgAZQAcRdjCMVygIwAA/nkAADIAHABhbmltYXRpb25zLzNkL3JlcGxhY2UtZmls
bGluZy10cmFuc2Zvcm0tc2FtcGxlLnR4dFVUCQADLtT+Uy7U/lN1eAsAAQT1AQAABBQAAADEW2uP
G8ex/c5fwY8ylOb2+2Hcm6CftmInlrWyEyAILobDoTQQl9zwIVv59bd6+FjOsEltEsGRAXOX09N9
qrq66lRVr11Wi0+bdjNezceb6uFx0S7fjf/STF+vV3Wz2YxfPLazMcMcm6/Gzcdm/WlM8PihXSza
TVOvlrPN6DDy6/Hx39nbf+ve/PvodbV9/zQA/t39vFrsHprNXai21V38y/0dvPVduz18uF27mN29
aRZNtWkO303m6+qh+WW1/nD3c7PetKvl5s7ePS02qR4f7/xquW2W283dn6r6h/uzp6PvV9VsbGez
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
ACcBAAA4ABwAYW5pbWF0aW9ucy8zZC9zdGF0ZS1hdC1lbmQtZXZlbnQtdHJhbnNmb3JtLWNyYXNo
LWxvZy50eHRVVAkAA9fT/lPX0/5TdXgLAAEE9QEAAAQUAAAARZBPa8MwDMXv/hSCXtrDSqE5mbFL
SWGXJDT7cyyOo7amrhUkufv6c0rZLkLvgX56UkPg2ckFIp3hRDmNpTJ849AxeRSx20213azNU8LJ
hYgjKMGAnm4IjDJRknDH4pRZBA23kM5AWdfGiI6lseY1p2uin/QGL/CBojtKyhQjsrWcU3H3f+SC
RAVRpzhLP+NFMSncXcwoDyoyW7PoDu2u7nv4bA5137VN//5VF9Z/flhOYYTHESuzqNu9GYhUlN10
jETXY57mfTmqhWdEKOjyA08jwrKqcGXML1BLAwQUAAIACABlABxF8otkvJojAAD+eQAANQAcAGFu
aW1hdGlvbnMvM2Qvc3RhdGUtYXQtZW5kLWV2ZW50LXRyYW5zZm9ybS1zYW1wbGUudHh0VVQJAAMu
1P5TLtT+U3V4CwABBPUBAAAEFAAAAMRbaZMbt9H+zl/Bj6tSwMV9uJK4cNqK5VjWyk6qUqnUkBxK
U+KS+/KQJf/6tzE8ljMEqXWism2XucvBAE83+ni6gbWLav5p3ayHy9lwXd0/zJvF2+E/6vGr1XJS
r9fDm4dmOmSYM/xsWH+oV5+GBA/vm/m8WdeT5WK6HuxHfjU8/HPy9r/aN/89eFVt3j0OgH9uf17O
t/f1+jZUm+o2/uPuFt76rtnsP9y2mU9vX9fzulrX++9Gs1V1X/+yXL2//blerZvlYn1rbx8XG1UP
D7d+udjUi8369vtq8sPdydPBy2U1HdrpdHXAij8SzPmMYIwHL6bwUjNr6tUe5WR5n+eb16OTKfbL
PgoiMXk+vIH/j+Df588Gfjmth28+PdSHIf/UEkk+vPl7tWk+1M9ADytYaPiosq+//nr4L/LvwQD0
UN++ae6Pr1JMOMIaUT3E+Cv4T9CRMHKIsALAP9wNu2hA3iF8+U/YnpEeieENoYmLZ4PX9cNytTkZ
rAYDX83nw7er6uHdV4PBm+Wmmg8X2/txvRo2i+F6U03eD29W9WQLr3yoQRVb0Ol0eL+dbxrQyJ+G
v7yrF8O//kU8g9fv8uzjT8PN8qE1ofz2n7Il5Rfn8+phDa/e7N8Ytq+4ZlGBHb24r97W668Ge3lP
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
tvCGBSfYj4ET9qKiykQAH7cIJIbbL32HpkNM3fKOJ9wKNi18ftzB+zrxpE8kOkPNkWCsYfPmXGBH
BwOrR+Mob8GR/p2tVcJQCAJvl6w5S7Iw+P509K5VZ93RUdnKnKiZzGPSoff5J5YFCy5guhp8pwZr
Ae8uEk4LSzqxRGO5VTp1JEQrfme261ZudtMgqfzH8fth2Pip67Sl+hfr5VwYpKIQnQu2SFN5/KxT
pJqVLMH1vDGVfLj2kh85Hb5rRZx/rmKr1GyW2m71svny78dPC5xzT/JET/SWagfOHYwk2GoKwWr2
hiQRoktB4Wcbb7eyBkGWaMenw3etPtuOkrN895fd4/OxHFy5+bzOWbbeeVhVIaK55x4MhMGWFS+s
LaC1dzf59Mhf4NZLFKjH51YZu+so49yky/jw9O1hP/TiO3uvrn1tTjpuVATMWQdic3iHvgBot5Ey
YfBg0Fc/ije6WSOs6VCet+vVsZm8rI7t5x8ePn+p7EJ57funyZeSjId1hR8RwY8peIolB5+LyMxY
MAHv+3TT6KZLX24anXL3v1BLAwQKAAIAAAA2ABxFd/4+VWcAAABnAAAANQAcAGFuaW1hdGlvbnMv
M2Qvc3RhdGUtYXQtZW5kLWV2ZW50LXRyYW5zZm9ybS1zdGRlcnIudHh0VVQJAAPX0/5T19P+U3V4
CwABBPUBAAAEFAAAACNQUk9DRVNTIFVOUkVTUE9OU0lWRSAtIFdlYlByb2Nlc3MgKHBpZCAzMDQz
MCkKI0VPRgpib290c3RyYXBfbG9va191cCByZXN1bHQ6IHVua25vd24gZXJyb3IgY29kZSAoNDRl
KQpQSwMEFAACAAgAYwAcRSLRazfaAAAAJwEAADkAHABhbmltYXRpb25zLzNkL3RyYW5zZm9ybS1v
cmlnaW4tdnMtZnVuY3Rpb25zLWNyYXNoLWxvZy50eHRVVAkAAyrU/lMq1P5TdXgLAAEE9QEAAAQU
AAAARZBPa8MwDMXv/hSCXtrDSmEZDDN2KSnskoRmf44lsdXO1LWCJHdff04p20XoPdBPT2oIHA/y
DZFOcKScfKkMXzh2TA5F7OOmenpem7uE4xAielCCER1dEBhloiThisUpswgaLiGdgLKujRH1pbHm
Jadzop/0Cg/wjqJbSsoUI7K1nFNxd3/kgkQF0UFxlm7Gi2JSuA4xo9yoyGzNotu327rv4aPZ133X
Nv3bZ11Y//lhOQUPtyNWZlG3OzMSqSgP0yESnQ95mvflqBbuEaGgyw8ceYRlVeHKmF9QSwMEFAAC
AAgAZQAcRamZElOdIwAA/nkAADYAHABhbmltYXRpb25zLzNkL3RyYW5zZm9ybS1vcmlnaW4tdnMt
ZnVuY3Rpb25zLXNhbXBsZS50eHRVVAkAAy7U/lMu1P5TdXgLAAEE9QEAAAQUAAAAxFtpjxvHtf3O
X8GPMpTi1L4Y7yWo1VbsxLJGdgIEwUOz2ZQa4pATLrKVX/9uNZdhN4vUJBEcGTBn2NVV5966y7m3
auyyWnzatJvxaj7eVA+Pi3b5bvyXZvp6vaqbzWb84rGdjRnmQn81bj42609jgscP7WLRbpp6tZxt
RoeRX4+P/87e/lv35t9Hr6vt+6cB8O/u59Vi99Bs7kK1re7iX+7v4K3v2u3hw+3axezuTbNoqk1z
+G4yX1cPzS+r9Ye7n5v1pl0tN3f27mmxSfX4eOdXy22z3G7u/lTVP9yfPR19v6pmYzubrY9Y8a8E
82ltMMajVzN4qZ23zfqAsl495PkWzeRsisOyT4JITF6OX8D/J/Dfy69GfjVrxm8/PTbHIX/VEkk+
fvHnatt+bL4CPaxhofGTyv7whz+M/0b+PhqBHpq7t+3D6VWKCUdYI6rHGH+N6dcETxhXY4QVAP7h
ftxHA/KO4cu/wvZM9ESMXxCauPhq9KZ5XK23Z4PVaOSrxWL8bl09vv96NHq72laL8XL3MG3W43Y5
3myr+sP4xbqpd/DKxwZUsQOdzsYPu8W2BY38bvzL+2Y5/v3/iq/g9fs8+/TTeLt67Ewov/27bEn5
xcWietzAqy8Ob4y7V1y7rMCOXj1U75rN16ODvGfbMUbjwZfz+by8J532X8ILp00Y/4/nQXmvLIos
EsS0dchETZA1JmGhMKWE/v6/YIE9mWa8IOiMz+dq/HLRTuE1v1o3b5vN9v59+zCZfYIvxy+yuaBs
NCCm0ZY7LxjIJRxiUUbksNbIShe8ZDRqJf9FMa8tPIBe2qNZt0cvn8Q9h33YHHgH9vARfGHaLtot
hJIJnmAQJVDqKDERWYE9YjQwpI1MKEglMHVCaiX+Czt2RQG1LChgXuO8d30jBQQlA9UWh6iiRkpF
gZiPGDnJDZKW6YA5g90j/6m4+y/OcQtRiwvcQtHppXPBm98376r6Uwk909ERFz3SFIPdWc+RTSBM
sg5bZZJKzvxb6PdLXt2y04ieULpWl0I1TAyE+mP1sbqv1+3jNlt3SSxsDCZEYuQNYeBOIJZmlIJs
wgojYhCW/4ti9RctC9Yfcy6aJGJ6IRpsV2G/rsnEGczCuEWMd1ulIUTwbHeEQXqJ1jIj//Wtui7M
4eFoj1YBUMnVeUg/fTmfGQZSgHNBdqCQs+gprjHpARhEM0UdBIPINTIyGOSMtDQkpRTDAHq3Wed4
dZenOFtQ4zmphgtqgms9UNuPu2q9/edec2SiYTxwlQkDAJA3caIhIpooR0wIhYx2EjGCIxbBeqIS
ALj/tNk2D3fft9M1pLO7dFTI5u5p6rKanp6fA4c9EZfAGWNdXAFRN92C/7dstnnCUkqg1lqpLEGC
igiZL2GkMdWIBAoBRhEpCTlT3X7CuytT97ExXsLGO6XC4A/Np4d36yMmKnJgvxruvTeRMcORiwTU
alRChkqHolDGSRwjp6YI83yVPjxFCvCUPMKrq/p9c0Qn1E10UhCtPNgfSy6B/TlIqcSCD2nDuYjU
aB6K6M4WOQdHidQX4ChV7AguQf4BYrhp1sU0Lz2nEbKDMhaUxZVATkQOyUJpKgx8GexNa7Rg7m0N
cq6W9836YwuZrWyW5++8vS+PedNsVrs1THFXAD7qC8gLUuvpUepvvi9Jm7SzzjKPFPgsRCwpIAon
jyQxXFigB9Hgm9L+8NgsYeoi+P3wdg/+uH4ftK4LoBs6iB3fvjpqMscOik/wnQ9MGoERJgxsR3iK
DIGoi4U1zHLlovZffLOe0JSHPj3vycrwZZzMXw5ktXUNoX8N5cnkY1N/nzeMdeHy8Bv8kvdNSOEk
VDuURwounSBxes+QB1PFmnMlXbwt+NMyn5N3v3B52P7ZQM5pQU46O4bVXx/royUSjiec3YgNCjsv
OdBt2GQQk0qODAPK6jUTmGDvYypHrtMifWi0KUATQ/JyknQyr6D0/gR193a9WoDx8Y5Uc5KxQdIC
pkKBl6WcrDC2yCgVkPApRB4gtkp3uQWv1+1HUPqZelO3hj+scWU3emN6MvGc7ocy8Yoe1f1PICdH
dU8oVKrXdE0tEYIAW7FUga4DUGUnDTiUEEbxFAkn8kzX51P3AVWsAGhGBkrO6fjoJ6+gIFgvoSx+
QQRwAni3++y4QSTg0BxqS6oQYySzxKBQtECGiSIqBvwcJZdWK6u6NPJcPsbrS9oAX5pBOfLW+6zx
PJBkQWhiTkH1mLwCuis4lFzORaSFScE5HqSVzxEEpi3jhgcDmJfhBpwGD7YhNNPdu/tPD9POvk0O
NEZ3ngfAFAnIWJ2tgYEhGAecAeqlEIOVRPHn4D2fvwz8fERPAjHlBQmmzUCCzWPT1O8n66ZevVu2
OZI/rdN5bGfz3Wf2WijiBRTrkNmBqLEEXqsxCAe1VEpJUW9ZuBk4fbWeni9xJWjed6jelECdv3Ex
bKCB+aUGJKYDU3vTPKy2zc9t88tTmqSd5Wk8kVlon4Dhw2ZyDRYIJaRHJkKWtxTIdeLMgVKes5mX
C11jLcNxPbGkxAWxdDMg3sUuDCHAWDWIIikBu4y52WQyR4tBUsYd+JG4RbkfLiMWk03BVdSFq/wp
N+S2q139/n73mLt853ZGmZpwmKL7zOUt1OURyCsikkApGHIpGA2BPKG9C+D/XJLnqPzGoucavxg2
6stSFBCox+xcwGo3a1eTHRjiZmLzzz8tc0OFTExXLnafmbAHCMPAsREwToOY8wpZjSE6S8YhSRCb
zGcY8nHusiynxwMZpiUZmiO/fVPN2mpZNyWj8YwoRwEneDcUFtQkSG0BSC9QJpYibIkmNxF3vdNX
PzyDo/dh9CUQhXhWUTHw5k3uBOfE/EJ1PgxJWZkJ2WdDqiPDEnme9e0E2H0Oz1FoJUTUVsnblfL9
Ye4rwejwdNQHKEuoh+X92/Vus40fq8WuI9P2Xe67H6IQzditUYFxDb5AuzIP+JwOQFuFcckGSiKx
7FkJsLDQlYxYGDkQzZREmw1Ee/XD/W49r+pm/EJLIEvZzfc/ZNYkEyY+QG0NlBsxZRky2kB4klED
vRWcOnbbtI6zl4U4Pe4j5yXkfNiqOprS+zYnwr0xYUw72FEGroBIJQlBSZCULQnqPihyubWUES+/
SBo8IPj21W2T+/bVQL66IJ9gA/n+3GzT/fiF6ETjHYslRkCs9SZ3s3KXHnNkJQ8IzEsbB/kP+9uu
3s1ZBts96uGcSnqJc2rYwKVDW2cLhJV6dWyOqZp3ZpQcmApOCQnMcg8MMoWlGsxIa5WcpxTyye39
OKOtn92VSzxXqNnFuJ70Nb/sAuUvr1a0x87f2TekK2e10lZGFZF3WXyNE9I5v3MQPhGI3N7I/6ic
fXrel0CVJFBqSJLbzQe7nrbbdRdJclwT3fZ1nznBKMIsE5BbJAZqKX2EchyoJRVeS8sSWN3tlDhY
4dp29Ab1JakLllg3fGCJ3zXrabNenQhiLk2groNyJAkUlU25yDZIw+9QZPtgdQhglrfBHyctoz4+
7cNtCkVUPa+OFHDWbqBEBVp/7HBSPaG3OgUBYEPBnaC+EpAaTXRIa6BfSTKhhZAk4nKnoL9SD+Ss
UFqz2dwcKcdmO6tfvpzIU6NTFhud6gAxQlyF2iNC8RrASIxPyOIIiJ0J3HAsFbX9Aru/wDk2yCyX
GYCTfLikhlX22+bXnIrlHtueEVnHDaPaQFzUUAZ5D2WQFBqRCAHIKCKSpp+NN3ni60V0fjrqo7sM
6pzyeuBss2bzYbt63JxFyj217j6zHgMDu/QYqDXECeaByIFaFXKJRiWldcqT55Wm3ULH0JYHXKtQ
Lwb2BKOCFgTLXSU1yFZ2t31/TMX7fGW5pcRSSL9UQvgIkLlMbjcHmyxn+al/Fi06TH41ceWHfdBG
FUA39dED375KqcSllcLSOaCf3Ykq0y6fIieMgnaSReYM1ewLceknCH3kzewSOWPmiLzabVcl5DYf
KfoIVYDLVTBhUAUnG4HzMIbBBSiUZX3/e5pp1F+rKgAQ0yMA/ybd79ptsRQBvwuWAnG3PEDxxCDi
GgFFrGPAXBT2ISnXB9GfrQ/EXNZEfH5x9GYfH/cn413yJUSDH2Xby5k1ccmQTDkI0BgQxE2LcLLU
BuaTUPJz3fMrh/7+8GzUR2ZKcIcNnXykENp1U29Xa6iC8gWbriNIJl3flSSugODJXH7CNkqDoZAA
qgRFXmBOpmCx/eyRxWn+shn2hpzLAFnrkjHsu2o9GQ5HH9Uyhy9ySLTCeqqlBOSS56a9gARgKEMe
9G+p4s658BxfP01+89il6hEEQWeXdZyQ9eyYzL63r63/rmSyIV9u8VC5UWcxeDw4j87dbopB1dgS
bIj/Lc4aBiBHfUEuO/vgTrNBCP4x5NMUTrstOcYzS7GnwH6cE4hx4iErC49E4EI7oyBqfPkjpB/D
lZPq0JNKFQi2UGLo3980y2ZPCavFPVgsxNeT2TG676MHbjV3DAFPzfleYojaJgJBzY1BzpUl6jmm
V1iqLElhYE+0ihREq8j8GEM//LqYFeOnTioGKFd90lApKChhDdEMgR16QVhImqTyWfZpwj4Oigs4
VD0wnH1/+rDNWbn5kMJkzQZmrWOQu4MAzskwz8fsJiDslIqSe4yTf45meytcKZbPh/SlUJcpUdRS
FdhgWu2Ws4MY+4SgOJ8Qs+9ZQkgFKki9AyMJ+UTLUAcJErgCCYmqz1Qx/fmvU8OnMaM+4MuDezGT
1TFE/fE1Ld7CkCm5ANTfeKi7WD4esvnMEFtGvNHBMhW/ECM5IejhnpNCaJ2T6kL7Dw+r5etq2Sw2
T4dxJlNaoNskCMMQd1plFgiU1kAlLCmEISYd9458iXbMOYRr2/M0YiDktCDkoQ8IGpn+E6IqVDqn
s0Z846zRR6O0AP4ITAyCrsDgNMxQKPoTxhKYkU20z4J60/eBFbp4Ys6H5+o/Tdt/7Lq26r7zQjmb
kHwi5I1VMUIcAf6am9hKwk8SWCIGggUpGfOucvysAx8XKOv1+LQP3VxWRGBKp1s+H8P966NCmcbA
f25UwOC4RHALId51txxTDkRco4StIsYaCcL8Rmn6CfeoL5koiTsbnPvMlptNOfYHiEsC+BMmULky
iK0IpMrtMusCiylS4W6d/ZxN3Mc1xQVc09M25JD185/8os2t5hJBchibrgfscveHMQI/OY5sptrg
2MSw9GUu0Vwi6QlCWEEQYoZt0/05T56rO2rZH5LSwyFpbmelaJ1mUJWQfAuAacKQs2BKyqpEmeLe
J/zZRNDNfT0HdI/76E3BPIAlH7ehrXd1vuNnj3vAzYTccAihNAsMC4TzHUwWCFAFnhQiPkJxbZSg
HPeDzGCFHjrWsAK6ZqjbfSDuLjJ0RUuOMMRRzaXLd+N5zEA80sYYINCEEqEoY9z829F9/6wHlRdu
VUk+JUc/q1++rKbtqbUmb17PC7Ax0iQGtTLYNRAuIAUWfg35+gWnWNDI+1o8n76Pa0pLuE4XLsE/
2+X8VLtzARHa3ICWl6eQ+6H0A9LCUj7W5g4jwiUhLmlpaPnmYG+hPsTmkpZKgc0TBYnflEKAhMAb
Xa5HeXLdIS/SRAF1IlgCW+VB4/TFOMgRwqgPsiogl3xgn4/r9vy8bPI6/76/las7Usu06mKAgGLP
uxhQxg6WCwzXSC5R0kwAq8LCKfLF66ITmvLI0+O+5KokuTp1snbL+pkXZWkK3nALLAAzSDD5jFsL
sHVKJI+QP7m8chX1tMQA2KwA7OIPF6arh/znQ/t+vMm6x5DL8pXofErdBYyIDPMUxRhkMDIpbOlz
KImDNYqKhAd9pIXOjBSNHjLY97vlh3b57rDi6RCBsa7I1C4CmQL7Dz7f3839QZt7W5Tz/AcnjEef
nnVZq7/MlbjXH9QXpymII+XwilbJQu3be+Ba7Ox6vMkcVQqUbI5/+bjUYYORV1qBHzAIQvG3uw8M
D0Z9oQqhXjEykDRntV172i9NJrkfBemReoiRSOrcj/JQtZp8JsBMEI4LwT2zz71c99Or66n+p97h
LsArpAHgSUd/zdec3zTv2s0W9r50Z1lFjynUSSJfDASaEnO9F5EjWFipo1Uy/hdvaPeh9yXXRcmn
hUKxgSmPfyzR3aGQXVSGzCu04hbJlMMU7a4VMdzdJUzYKU6sft6W7Ze4+jdbhbHX4/L5iL7Apbii
5idm/etmsX26n8ommYtcRGd2iM6cE6Wk08gAz81/HgCcRMiUT9IgSicrOU99JnI+fR/XvEA1NR2e
2Hxzn4PBXv97CJS50PEMkuv0xMD0gPSjQHPnAhgAEbdND2a80i+77zu2LlF5zcjp7HFf0kwXq/rD
5nQAaW5TOfB17zxDInc5mXIB2XwUab1XArK9AEXeqp/OF+uBNaygzprXhfbTyeH2vPVg4pipicyR
qfshU7sopLKCov/v7dqW40Zy7Lv+JbV5vzzmtWdi7Z2O8PbEvG3U1da2XNJIdm/77xfIqmIxyWRJ
vV070Q9yFxkkQGYCB8ABqI2BN8w0vHXjClEFHrdlNikebseHuMhyDWNPV7fR+znwMEauZ7lDFDI+
HfYPn7+/DBlE8PhHVh3+AwGXBcyK1ZjIKpFAILPReZJhKXDOIWLh6jq5a36fpTzi7MS7VoVNT68h
Tn/ZfX36bbd/eBwqXBy27rUWHwPaRLBVzGJi0SdHLGxYEqRA4oThWvaTttM7tWKudh0x11Mvv4aY
/7QSPq4OgLK/jqlpx3QU407zpBDtAXqX2BnrFbaSF/jPQtDL3Bu8usn1l9hOk9Nafda95bQd0p8/
Hz733KGQWoNXiCRHhhVkhozmFAkzyipTPANvfqPQY5CgkRt5bjO5LRs6jzZPzz/Gi8Vet1Kwr5QR
iZLskOSI+R7PqCXKmOwTC5pZ3u8Ha+4zEbGzosEZn0V8Xn295xc3RK94oWiLVBAoEhUUFk2FIdZk
RnjkynqWjAi29UKji7dCmc76tdbNGiUwI3tkDox9EYseK8acpBQNbqpArINIwRQwoj6k5Jl8LxQ4
Xv9aRnjKHwBBO6t1xYZHGj74T10uLqM80qKJjdg2E6QjwWsIEjK8WYAw3Fj5L0pTXkS8a5XYdjSz
apQ+uWAWra7moDL6VYsdaRaTy5Qp4h1Ah2IjHElCpaRn2ZMeZAEBdE+qoX77U/nHpy+rl10/cyp9
cBLCWR4TGrhiiU0AnYryPJbIOQu3avNrxWhVcLyjgpvW/+PL6vXLcY7G7uVEZz/SAGqCQjJkDKas
fcF21uQMkqkgdrFIYBCK82iMiKIXBHRWf+dmC/ugc2aj3kbNc0fw46UpFlYImKeX/3oZssiCXjWF
1BYLwVwiyiFL1xVGfKKUSOWo4Cxx6d2CKZzcqhV01dm6m7WZ00Yed+UT7P9nHOJSYYt0FbLUpa2Z
pkokkjA1IWB1kmBTgZA/0+S0Vlq8y/7Mb7MQ+s7Oa5Tamo6J369ZB4Ni3z0uKH3s5qPm3mBoBSgl
My8JZxIry2CTHAe4ApEwTQkMu83qTciJl14OhPHoXStfZ0fsN7rf4vT64/Dty+714XXa4MTOyXuG
QNLJnAr34A6oiwgIaneMIsYnqQL3JjJ98/j42Mj0aS7hvNtpOKl9FJs5H80y5rq1i29PT4/rp9+P
XSr/efyfeaNKiqqA+oFQrM8LA6FOiFwSQKM6Raeyf4u4Mrr8lV6V0xl3reSrjjpqaFfZfH9+vUAO
3i/t8ZMdcIDvAG14gtQnMN/wL5upI5kLVbwMjptJJWN8+VauTu+VZdv9QhPKvmELnNpRmKo8TIsb
hsKO58hkqkSskLwnOroItonRYO27ulHeogzMz2tV2nVU4lZfiz7/9unCxFfqGHzWv2jYHMPBPpxk
A6ha0AzRSooJ9g/NOUtJVYy3iz0vkixQ0T71uPegX2e7gE8YSscfH143764de1MYNwBqvZOgsq7s
6UwBpnANGKEoFf5VoGwkeKOw0J0NJcyU4fVhdfjszzPWKnWYnqjD1aFykVy1ir7glBZhUU8wECpR
WLugabl96nAs0gKCGp3RKm3npAsrlZlUzIcXbTlsTXpl8pOSIlDlM4nFK4I1c7AkCicjca4kYwjF
r6WAem/GdtIF+ON5KSJ2PI7ceTh8/uXbw2N/EIW2jHNOqNPYVMgwpxlBToUduy4qTmNr4hYuOxFt
2xHN9HhRf3/Y7p7ODSrOHZnmiloOUIboZBF/GYHcQBxN4r0KVhVr9ZuWoF54GRPUw43QrtNAb92a
jXAkBGTx5cfzheeM+bfrWDJ4wMs0QrQVLMRd0UPciiT6LGLwyJKiuixhycntWmk7EMau+LTIdak4
/vVvlYyMvu3CwvSOUmGx2mgLliJATk8lJ0p4kYyzykr5RhvdYiq7HrprxWM9ma+NKMAxNugjEClK
VZjUACksDqQQIRgSaI4kq6xCAazFpPiTDmJ8Rit6ZzCQXYuhePL710d+wRU1aOqsCXqer1ESdQUJ
vSJ5HMIFUVTC7JyhGbsS4BWYSUp9dP27VobOOlivpw1If9k9fN3ipIdxKsPHQiNyrhS2pgvLPQ4P
tESzbJWwOtr3pTJOF18Yy3I82Aq9Vj2h9flpHu94H4bnqd39tS4kx6VRHm2FRejAgyMuaYhKbZbB
R3A9bhLut3dohdt3nugWIv5ds0p/q/m7MzzTVY7iMxMgLEIzj10GCsw8BDQm8hgZRDzFm5v583r/
hfEw9Vij1XblOlqt9mfr9nW1+fJ08WfXc4WhCMExnZytAwhqAR07DiEcBnLByJBk6gfIo7u00nWo
YPDjYHvTw+rz4en128PmI8SgOFBzmRZmlQQMlSKhiYNwNGgwE1KRkq1HY2fAq7SL4frVW0E7RBX4
cSCqPK6+Hy7tc1JyrK3xK8wHw6IvsOUUzmDjmAGPSoP7pRDJ2yBj434vD3J8n4mAHby23dMLK+N/
Hg5DskpcT6NxZqhIQhOefJ2mAPgUdCLZ+8BFpJomsUDMuNylEW/XGSdgd3o2jSnDxpKqxgf1b61D
FqRJM6I19cdRLj4gpnSUZ8qLE2904f+h+MDnhcgzN/rsO01Rju6G4sHrP+GB7sT5ebv7XqXVncOB
lF0MYIATDjQCNBKJh31GlNKwq8B8aDeptDaXv2tlWPcEG/b7T38t/WYtSRO1uJVrRzB4JqdBGENV
cTIwa98Yw/b+qsYgQSv3fm4JHJt1lDwBCn09o9DaGFDXyinXTaktCoACyxR8QoLYyjvs+DLGuUTB
Smt3C1p3A4WXO5qGUxpFWccgYxPfZCesV5tfvz+PM0/s/jSr6f44q0kHraIEHQ12ZVQaLJhmgHTC
Jka9j/Dzu1hLkzs1xKV67K4VVXbk386qsJvV42r9uPvldfdS5zodJzpcJjQ52NJSOQWoA+dfGQz7
EYzGEG3tLpGJ/qkxlOPMR0+YheRH79T2AWzn8ZcTW3bhzT4dfrtgQnO1SbnkbAOgFJJDzYJildbp
TJIwEAjJBBEjm5JmR5dvBNPbeYHL6f10ZdWdGlfP374fWYh1cNERnrLApaaOpJyRlsQNcdFyonmG
eNVQ7ly8xf4ZS7AQQ4zOaHS0tKPjWk9niMy7bhx4k1rJYMlABJ41Esw8Tie24HqtgseeqA4Qonl/
fd1dT5/Ff+unzdx6N88guQ3lk9zCr7uXw24I2TlV9F7aY8a576tlAOMmoiBF84TDpsAMFMeJZNLT
pHNOlSOzmGIY3/CulU30BJ7Oz+kyXM/riqs6bqJwKXDGJ+UMYSNIF5RSWJ+j3uA8Ws9vsa5+bkWZ
UVkn6umOemoATD99+KXLPNbgSrLXxGXsPwvgMr0y2E+ufJYyR/VGPfUPTPD8pfdWOlUvt9HT4Vno
Jz8/1vzKPTum5Oyxnxc8vYvgJQn27ePoE0usZpQoCP14iZIJqf7PChyPtQJ3wioHcLBnlcb4ofLT
KoS2itW5tYpHbZAYzzFjhe6O8UyiFI55p6jTf4J3cTp41wrZMfS7S985sjw3TVqoKbxnGrnzAgTk
FNyzC+CePYA6XqS2ggsR40ICqL1sK5PqyLSnU/v3oYYJo2SKcPdYSqx/MTFrCjxLbI02FiscBhlC
HAAoj84xk1lK7HaYupVmKSc7PueuVa9j8/dsyMHgiOzBYOKs7QqT+tayKAgXTHQkMhzAazm8FQ0g
xFGhvE4JY9p+D8OPXj8riDFf3Su27hVDTnkDey9POXJaWcExwm05yFHgleAQ7oBzowXhwhlPeTQu
l1vhoEGM5SzYLIOw2si5H4Afhz6hf8L9VwfAuZcJ1PxqdMmkCIYjyCnS4AwvC48fdkahCixTYr5t
cbm8g+mdGjG3vPMmtnw6Xvx1ddhiebHH2jDCJa8FCdpgG5bxsGPBvkvGvVYMxI70midtLt3KZmhH
NkM7DIBJtQPbcrDYXGdpClgOCFWSwhitZFi2GZMGnsFehpjdlBsVmjsnTvSZO6HVjk6rmg+HX5sA
BrOjtWCsagNlgjhFe05MjdayZ8eWUCu80EkoIai9CdocS9HY/MOvjVY1xTPTivGhL/HvHz/9/Pj9
88PhTFzpFVYobFzsrQXzjwPqEg7KyZwkXVSSvDj2xmit9zcn9sUZq7TmHW7Vmm/nrdKPTy+ffhw2
yG+wp3E5p5hABEBuKhHA3grxDsBlkyiYp1RAQwUgUd68hDfIs2SnTodbXTt16TW+vIFG+/r0+Nu9
6701rD+nCPjZIzgVrBTc+pHQEBSzUdrARRuGtVdrBKlU8qkgYjbf9Mq4cR1DKCmi6cG8tgNX5ZSy
aJiY0VKC176eyPhjM8TX0sxN/HpHheYzL/YTflfpYVOLvZqOZ1xFalWkRhKw7eBao0hg1sGlge1M
IgYekmT/DyvlItKyUzufcdfqJztKz0Z6/bx72T+9fMUho+NCN6v8+cqdDwkMlubItq5NCuDOJNpm
H3Hkozfavqt7rHOjhVhmfmKrmO5s+t2lQe/31cuFUNk4QO1NtNhLlhGyegb7wQRPZEmUAm71ik4y
6KNLtSI41xHBzbm2m6cVRuim9uLVrvoSHU2c8IApiAzLH3ZCICozDcAg8sDfSOHhJZdWAhyaiDlP
mq/3s6/rVLDbTiQ5VqUYw/qkSRDdJge4oZatBTajUqOJ9k5wj/3o2b57aPrbY0lmp41V2nA9L7Ft
6keQZnnUzSOWhQGruVoZ5PenN2BSCRyeuyjY9Q8QzbMSMffvJWeW+TfavdCBxSvxYWziw43oRFkb
wWeN3uWtOVW0SJY8hONJITpSnATwWRDX2uQ8w+H17M/OqRq/rPKO8ycnNXqb/RxDbbBiyY9o42n9
35tL7z0OZLxWmYM9I5iDCK5Im2DfVJq8LARAsVesJAe/tFt3fP1GsFUnpNmspJ0A6XHreBP3uuAZ
5ZLgl74AMCQMriz402Koww8M5QV0P7tuK5XcdaTSQxC4fv16mYbSADKJk5BjJpLiBDilGLEywApJ
KgsHLsxMn8zoUq0IuvdgtLjUAA+fH7p8cKtllNQlQO44tdiKTBzme72EqFPikAc5qVOPr9UI0UtK
bHZm2oWzXX1bbXff6rp73dSur+PHNDiW1Ou0BqMKxSYGk2rYCQgPG+oz98lwiDkDf5fRQo5tOt9o
OQidndYq1elb3LK9m32XZuCe8hHw0EonavFbNFRbeMOCE+zHwAl7UVFlIoCPWwQSw+2XvkPTIaZu
eccTbgWbFj4/7uB9nXjSJxKdoeZIMNaweXMusKODgdWjcZS34Ej/ztYqYSgEgbdL1pwlWRh8fzp6
16qz7uiobGVO1EzmMenQ+/wTy4IFFzBdDb5Tg7WAdxcJp4UlnViisdwqnToSohW/M9t1Kze7aZBU
/uP4/TBs/NR12lL9i/VyLgxSUYjOBVukqTx+1ilSzUqW4HremEo+XHvJj5wO37Uizj9XsVVqNktt
t3rZfPn346cFzrkneaIneku1A+cORhJsNYVgNXtDkgjRpaDws423W1mDIEu049Phu1afbUfJWb77
y+7x+VgOrtx8XucsW+88rKoQ0dxzDwbCYMuKF9YW0Nq7m3x65C9w6yUK1ONzq4zddZRxbtJlfHj6
9rAfevGdvVfXvjYnHTcqAuasA7E5vENfALTbSJkweDDoqx/FG92sEdZ0KM/b9erYTF5Wx/bzDw+f
v1R2obz2/dPkS0nGw7rCj4jgxxQ8xZKDz0VkZiyYgPd9uml006UvN41OuftfUEsDBAoAAgAAAGMA
HEWc8MZ6ZwAAAGcAAAA2ABwAYW5pbWF0aW9ucy8zZC90cmFuc2Zvcm0tb3JpZ2luLXZzLWZ1bmN0
aW9ucy1zdGRlcnIudHh0VVQJAAMq1P5TKtT+U3V4CwABBPUBAAAEFAAAACNQUk9DRVNTIFVOUkVT
UE9OU0lWRSAtIFdlYlByb2Nlc3MgKHBpZCAzMDQ1OCkKI0VPRgpib290c3RyYXBfbG9va191cCBy
ZXN1bHQ6IHVua25vd24gZXJyb3IgY29kZSAoNDRlKQpQSwMEFAACAAgAL78bRcwryB7ZAAAAJwEA
AC4AHABhbmltYXRpb25zL2FkZGVkLXdoaWxlLXN1c3BlbmRlZC1jcmFzaC1sb2cudHh0VVQJAAPZ
0v5Ta8X+U3V4CwABBPUBAAAEFAAAAEWQT2vDMAzF7/4Ugl7aw0qhOZmxS0lhlyQ0+3MsjqO2pq4V
JLn7+nNK2S5C74F+elJD4NnJBSKd4UQ5jaUyfOPQMXkUsdvNttqszVPCyYWIIyjBgJ5uCIwyUZJw
x+KUWQQNt5DOQFnXxoiOpbHmNadrop/0Bi/wgaI7SsoUI7K1nFNx93/kgkQFUac4Sz/jRTEp3F3M
KA8qMluz6A7tru57+GwOdd+1Tf/+VRfWf35YTmGExxErs6jbvRmIVJTddIxE12Oe5n05qoVnRCjo
8gNPI8KyqnBlzC9QSwMEFAACAAgAZQAcRTvgssaZIwAA7nkAACsAHABhbmltYXRpb25zL2FkZGVk
LXdoaWxlLXN1c3BlbmRlZC1zYW1wbGUudHh0VVQJAAMu1P5TLsj+U3V4CwABBPUBAAAEFAAAAMRb
a48bN7L9rl+hjw681PD9CHI34DPxxtk4Hie7wGJx0Wr12A1rpLl6OHF+/S22HqNuUfJk10gcIJpR
s8lzyGLVqSLHLqr5x3W7Hi/vxuvq/mHeLt6O/9FMX62WdbNej589tLMxw4zjL8bNh2b1cUzw+L6d
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
LSBXZWJQcm9jZXNzIChwaWQgMzAzNDApCiNFT0YKYm9vdHN0cmFwX2xvb2tfdXAgcmVzdWx0OiB1
bmtub3duIGVycm9yIGNvZGUgKDQ0ZSkKUEsDBBQAAgAIAGK/G0WbcFIu2gAAACcBAAA2ABwAYW5p
bWF0aW9ucy9hZGRpdGl2ZS10cmFuc2Zvcm0tYW5pbWF0aW9ucy1jcmFzaC1sb2cudHh0VVQJAAM3
0/5TvsX+U3V4CwABBPUBAAAEFAAAAEWQT2sCQQzF7/MpAl70UBH0IEPpRVboZXdx++coszvRDo6T
Jcno1++sSHsJeQ/yy0tqgoGd/ECkM5woJ18qwzf2LdOAIna9Wm9XS/OUcHIhogcl6HGgKwKjjJQk
3LA4ZRZBwzWkM1DWpTGivjTWvOZ0SXRPb/ACHyi6o6RMMSJbyzkVd/9HLkhUEHWKkxwmvCgmhZuL
GeVBRWZrZu2h2VVdB5/1oerapu7ev6rC+s8P8zF4eByxMLOq2ZueSEXZjcdIdDnmcdqXo1p4RoSC
Lj8YyCPMNxtcGPMLUEsDBBQAAgAIAGUAHEVMV4dBQicAAAmKAAAzABwAYW5pbWF0aW9ucy9hZGRp
dGl2ZS10cmFuc2Zvcm0tYW5pbWF0aW9ucy1zYW1wbGUudHh0VVQJAAMu1P5TLsj+U3V4CwABBPUB
AAAEFAAAAMRbWXPbxrJ+56/AfZNjg5p9UZ2b1GBLdOItppOcqpRLBQJDCWUuCkg6Vn797QEIEgBB
Sr5xcpyqUAJmur9eprehzDKdP6yLtbeaeet0cT8vlrfer3b6tlxldr32Lu6L3KOIKvTMs59s+eBh
5C2K+bxY22y1zNej3corr/nX2v1btfPD6G26uTssgH+Xv6zm24VdX0bpJr2Mf51cwq4fi83uI9gW
8/zynZ3bdG13z8azMl3YP1blx8tfbLkuVsv1pbk8MBun9/eX4Wq5scvN+vJVmr2ZtN6OXq7S3DN5
XjZY0WeMUjnVCKHRdQ6billhyx3KbLVw9OZ23CKxY3sQRCD83LuA/4/hv+fPRuEqt977h3vbLPmP
Er5g3sXrdFN8ss9ADyUw8g4q++6777zf8IfRCPRgL98Xi/1WgjDzkfKJ9Ai94uoKqbHE2PORBMBv
Jl4XDcjrwcP/gHnGasy9C0wSxp+N3tn7VblpLZajUZjO595tmd7fXY3cXq2V9/6utGl+wySiQhEM
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
x4+HLh/cahkldQmQOzb/tSITh/FeL8HrlNjkQc7y1NOxGiF6QYnNzsyrcLarr6vt7mvddy+bWvU1
fJOCY0q9dmswqlAsYjCpup2A8LCgPnOfDAefM/A3KS3k2KbTRJed0MVt7aI6dYtbtneLz7uM3FM+
AR5a6UQtftKFagtvWHCC9RjYqC4qqkwE8HELR2Kc/tLnXDrE1C3vWMLt8uNu+LHm7ZEnfSTRGWoG
grGGw5tzgRMdDOwejR2xBUf6d7ZWCUPBCbxdsOYkyYX+8cerd+1y1p01KluZEzWSOQQdel9RYlmw
4AKGq8F2atAW8O4i4bSwpBNLNJZbhVMnQrTid1qkbuVmN3eSyn8Nn+HCwk9duy3Vn5gv58IgFYXo
XLBEmsrh60iRalayBNPzSnPvcexLduR4+a4VcfnVh61Si15qu9Xz5tN/Dh36T7EneaQneku1A+MO
ShJ0NQVnNXtDkgjRpaDw64e321mjIJdox8fLd+16tp1FLuLdn3YPX4Z0cOXm89qu2HrnYVeFiOqe
e1AQBktWvLC2wKq9u8kXPP4MU1+iQD18aRdjd53FODerMn58+nrYj7X4zt6rax9tk44bFQFz1r7S
HN6hLwDabaRMGLwY9NVvy00ma4Q1Hcrzdr0aisnLaig//+Hw8VNlF8prnxFNvpRkPOwr/BYHfpPA
U0w5+FxEZsaCCnjbF5Amk176ANLklrt/AFBLAwQKAAIAAABivxtFZuUBm2cAAABnAAAAMwAcAGFu
aW1hdGlvbnMvYWRkaXRpdmUtdHJhbnNmb3JtLWFuaW1hdGlvbnMtc3RkZXJyLnR4dFVUCQADN9P+
U77F/lN1eAsAAQT1AQAABBQAAAAjUFJPQ0VTUyBVTlJFU1BPTlNJVkUgLSBXZWJQcm9jZXNzIChw
aWQgMzAzODApCiNFT0YKYm9vdHN0cmFwX2xvb2tfdXAgcmVzdWx0OiB1bmtub3duIGVycm9yIGNv
ZGUgKDQ0ZSkKUEsDBBQAAgAIAA8AHEXMK9xV2gAAACcBAAA4ABwAYW5pbWF0aW9ucy9hbmltYXRp
b24tYWRkLWV2ZW50cy1pbi1oYW5kbGVyLWNyYXNoLWxvZy50eHRVVAkAA43T/lON0/5TdXgLAAEE
9QEAAAQUAAAARZBPa8MwDMXv/hSCXtrDSmE5DDN2KSnskoRmf47FidXW1LWCJHdff04p20XoPdBP
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
m/kHD2P57+H7Ydj4qeu0pfoX6+VcGKSiEJ0LtkhTOXzWKVLNSpbget6YSj5e+5wfOR6+aUVcfq5i
q9Riltpu9bz5/F/DpwVec0/ySE/0lmoHzh2MJNhqCsFq9oYkEaJLQeFnG6+3skZBztGOj4dvWn22
HSUX+e7Pu4enoRxcufm8zlm23nlYVSGiueceDITBlhUvrC2gtXdX+fTIj3DrcxSoh6dWGbvrKOPc
rMv48Pj1fj/24jt7qy59bU46blQEzFkHYnN4h74AaLeRMmHwYNAXP4o3uVkjrOlQnrfr1dBMXlZD
+/mH+7vPlV0oL33/NPlSkvGwrvAjIvgxBU+x5OBzEZkZCybgfZ9umtz03JebJqfc/BtQSwMECgAC
AAAADwAcRa1IuS1nAAAAZwAAADUAHABhbmltYXRpb25zL2FuaW1hdGlvbi1hZGQtZXZlbnRzLWlu
LWhhbmRsZXItc3RkZXJyLnR4dFVUCQADjdP+U43T/lN1eAsAAQT1AQAABBQAAAAjUFJPQ0VTUyBV
TlJFU1BPTlNJVkUgLSBXZWJQcm9jZXNzIChwaWQgMzA0MDgpCiNFT0YKYm9vdHN0cmFwX2xvb2tf
dXAgcmVzdWx0OiB1bmtub3duIGVycm9yIGNvZGUgKDQ0ZSkKUEsDBBQAAgAIADYAHEUa8N2H2gAA
ACcBAAAyABwAYW5pbWF0aW9ucy9hbmltYXRpb24tYm9yZGVyLW92ZXJmbG93LWNyYXNoLWxvZy50
eHRVVAkAA9fT/lPX0/5TdXgLAAEE9QEAAAQUAAAARZBPa8MwDMXv/hSCXtrDSkdzMmOXksIuSWj2
51icWO1MXStIcvf155SyXYTeA/30pIZgZCffEOkMJ8rJl8rwhUPHNKKI3W6q7fPaPCScXIjoQQkG
HOmKwCgTJQk3LE6ZRdBwDekMlHVtjKgvjTUvOV0S/aRXeIJ3FN1RUqYYka3lnIq7/yMXJCqIOsVZ
jjNeFJPCzcWMcqciszWL7tDu6r6Hj+ZQ913b9G+fdWH954flFDzcj1iZRd3uzUCkouymYyS6HPM0
78tRLTwiQkGXH4zkEZZVhStjfgFQSwMEFAACAAgAZQAcRUSu3mScIwAA/nkAAC8AHABhbmltYXRp
b25zL2FuaW1hdGlvbi1ib3JkZXItb3ZlcmZsb3ctc2FtcGxlLnR4dFVUCQADLtT+Uy7U/lN1eAsA
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
y02jU+7+F1BLAwQKAAIAAAA2ABxFhvtyPGcAAABnAAAALwAcAGFuaW1hdGlvbnMvYW5pbWF0aW9u
LWJvcmRlci1vdmVyZmxvdy1zdGRlcnIudHh0VVQJAAPX0/5T19P+U3V4CwABBPUBAAAEFAAAACNQ
Uk9DRVNTIFVOUkVTUE9OU0lWRSAtIFdlYlByb2Nlc3MgKHBpZCAzMDQzMSkKI0VPRgpib290c3Ry
YXBfbG9va191cCByZXN1bHQ6IHVua25vd24gZXJyb3IgY29kZSAoNDRlKQpQSwMEFAACAAgAYwAc
ReR3wPHaAAAAJwEAADUAHABhbmltYXRpb25zL2FuaW1hdGlvbi1jb250cm9sbGVyLWRydC1hcGkt
Y3Jhc2gtbG9nLnR4dFVUCQADKtT+UyrU/lN1eAsAAQT1AQAABBQAAABFkE9rwzAMxe/+FIJe2sNK
YdlhZuxSUtglCc3+HEtiq52pawVJ7r7+nFK2i9B7oJ+e1BA4HuQbIp3gSDn5Uhm+cOyYHIrYx031
9Lw2dwnHIUT0oAQjOrogMMpEScIVi1NmETRcQjoBZV0bI+pLY81LTudEP+kVHuAdRbeUlClGZGs5
p+Lu/sgFiQqig+Is3YwXxaRwHWJGuVGR2ZpFt2+3dd/DR7Ov+65t+rfPurD+88NyCh5uR6zMom53
ZiRSUR6mQyQ6H/I078tRLdwjQkGXHzjyCMuqwpUxv1BLAwQUAAIACABlABxFefGHaJ8jAAD+eQAA
MgAcAGFuaW1hdGlvbnMvYW5pbWF0aW9uLWNvbnRyb2xsZXItZHJ0LWFwaS1zYW1wbGUudHh0VVQJ
AAMu1P5TLtT+U3V4CwABBPUBAAAEFAAAAMRbaY8bx7X9zl/BjzKU4tS+GO8lqNVW7MSyRnYCBMFD
s9mUGuKQEy6ylV//bjWXYTeL1CQRHBkwZ9jVVefeusu5t2rsslp82rSb8Wo+3lQPj4t2+W78l2b6
er2qm81m/OKxnY0Z5sJ8NW4+NutPY4LHD+1i0W6aerWcbUaHkV+Pj//O3v5b9+bfR6+r7funAfDv
7ufVYvfQbO5Cta3u4l/u7+Ct79rt4cPt2sXs7k2zaKpNc/huMl9XD80vq/WHu5+b9aZdLTd39u5p
sUn1+HjnV8tts9xu7v5U1T/cnz0dfb+qZmM7m62PWPGvBMtGNhjj0asZvNTO22Z9QFmvHvJ8i2Zy
NsVh2SdBJCYvxy/g/xP47+VXI7+aNeO3nx6b45C/aokkH7/4c7VtPzZfgR7WsND4SWV/+MMfxn8j
fx+NQA/N3dv24fQqxYQjrBHVY4y/xvRrQiaa6zHCCgD/cD/uowF5x/DlX2F7Jnoixi8ITVx8NXrT
PK7W27PBajTy1WIxfreuHt9/PRq9XW2rxXi5e5g263G7HG+2Vf1h/GLd1Dt45WMDqtiBTmfjh91i
24JGfjf+5X2zHP/+f8VX8Pp9nn36abxdPXYmlN/+Xbak/OJiUT1u4NUXhzfG3SuuXVZgR68eqnfN
5uvRQd6z7Rij8eDL+Xxe3pNO+y/hhdMmjP/H86C8VxZFFgli2jpkoibIGpOwUJhSQn//X7DAnkyK
FQRVbD5X45eLdgqv+dW6edtstvfv24fJ7BN8OX6RzQVlowExjbbcecFALuEQizIih7VGVrrgJaNR
K/kvinlt4QH0WQn6LO/Ryydxz2EfNgfegT18BF+Ytot2C6FkgicYRAmUOkpMRFZgjxgNDGkjEwpS
CUydkFqJ/8KOXVHAHF8qQFHJ8971jRQQlAxUWxyiihopFQViPmLkJDdIWqYD5gx2j/yn4u6/OMet
tDSXuE09v3QuePP75l1VfyqhZzo64qJHmmKwO+s5sgmESdZhq0xSyZl/C/1+yatbdhrRE2oqpxdC
aTwzA6H+WH2s7ut1+7jN1l0SCxuDCZEYeUMYuBOIpRmlIJuwwogYhOX/olj9RcuC9ceci6YhGFyI
ZoQo7Nc1mTjDkjBuEePdVmkIETzbHWGQXqK1zMh/fauuC3N4ONqjVQBUyuo8pJ++rKhhIAU4F2QH
CjmLnuIakx6AQTRT1EEwiFwjI4NBzkhLQ1IKQieA3m3WOV7d5SnOFtR4TqrhgprgWg/U9uOuWm//
udccZFYYD1xlwgAA5E2caIiIJsoRE0Iho51EjOCIRbCeqAQA7j9tts3D3fftdA3p7C4dFbK5e5q6
rKan5+fAYU/EJXDGupwwBlE33YL/t2y2ecJSSqDWWqksQYKKCJkvYaQx1YgECgFGESkJOVPdfsK7
K1P3sYEFFbDxTqkw+EPz6eHd+oiJihzYr4Z7701kzHDkIgG1GpWQodKhKJRxEsfIqSnCPF+lD0+R
Ajwlj/Dqqn7fHNEJdROdFEQrD/bHkktgfw5SKrHgQ9pwLiI1mociurNFzsFRIvUFOEpzrt+DS5B/
gBhumnUxzUvPaYTsoIwFZXElkBORQ7JQmgoDXwZ70xotmHtbg5yr5X2z/thCZiub5fk7b+/LY940
m9VuDVPcFYCP+gLygtR6epT6m+9L0ibtrLPMIwU+CxFLCojCySNJDBcW6EE0+Ka0Pzw2S5i6CH4/
vN2DP67fB63rAuiGDmLHt6+Omsyxg+ITfOcDk0ZghAkD2xGeIkMg6mJhDbNcuaj9F9+sJzTloU/P
e7IyfBkn85cDWW1dQ+hfQ3ky+djU3+cNY124PPwGv+R9E1I4CdUO5ZGCSydInN4z5MFUseZcSRdv
C/60zOfk3S9cHrZ/NpBzWpCTzo5h9dfH+miJhOMJZzdig8LOSw50GzYZxATShwwDyuo1E5hg72Mq
R67TIn1otClA61L8+RacJJ3MKyi9P0HdvV2vFmB8vCPVnGRskLSAqVDgZSknK4wtMkoFJHwKkQeI
rdJdbsHrdfsRlH6m3tSt4Q9rXNmN3pieTDyTzKFMvKJHdf8TyMlR3RMKleo1XVNLhCDAVixVoOsA
VNlJAw4lhFE8RcKJPNP1+dR9QBUrAJqRgZJzOj76ySsoCNZLKItfEAGcAN7tPjtuEAk4NIfakirE
GMksMSgULZBhooiKAT9HyaXVyqoujTyXj/H6kjbAl2ZQjrz1Pms8DyRZEJqYU1A9Jq+A7goOJZdz
EWlhUnCOB2nlcwSBacu44cEA5mW4AafBg20IzXT37v7Tw7Szb5MDjdGd5wEwRQIyVmdrYGAIxgFn
gHopxGAlUfw5eM/nLwM/H9GTQEx5QYLpsDmxeWya+v1k3dSrd8s2R/KndTqP7Wy++8xeC0W8gGId
MjsQNZbAazUG4aCWSikp6i0LNwOnr9bT8yWuBM37DtWbEqjzNy6GDTQwv9SAxHRgam+ah9W2+blt
fnlKk7SzPI0nMgvtEzB82EyuwQKhhPTIRMjylgK5Tpw5UMpzNvNyoWusZTiuJ5aUuCCWbgbEu9iF
IQQYqwZRJCVglzE3m0zmaDFIyrgDPxK3KPfDZcRisim4irpwlT/lhtx2tavf3+8ec5fv3M4oUxMO
U3SfubyFujwCeUVEEigFQy4FoyGQJ7R3AfyfS/Icld9Y9FzjF8NGfVmKAgL1mJ0LWO1m7WqyA0Pc
TGz++adlbqiQienKxe4zE/YAYRg4NgLGaRBzXiGrMURnyTgkCWKT+QxDPs5dluX0eCDDtCRDc+S3
b6pZWy3rpmQ0nhHlKOAE74bCgpoEqS0A6QXKxFKELdHkJuKud/rqh2dw9D6MvgSiEM8qKgbevMmd
4JyYX6jOhyEpKzMh+2xIdWRYIs+zvp0Au8/hOQqthIjaKnm7Ur4/zH0lGB2ejvoAZQn1sLx/u95t
tvFjtdh1ZNq+y333QxSiGbs1KjCuwRdoV+YBn9MBaKswLtlASSSWPSsBFha6khELIweimZJos4Fo
r364363nVd2MX2gJZCm7+f6HzJpkwsQHqK2BciOmLENGGwhPMmqgt4JTx26b1nH2shCnx33kvISc
T4ep8bCh79ucCPfGhDHtYEcZuAIilSQEJUFStiSo+6DI5dZSRrz8ImnwgODbV7dN7ttXA/nqgnyC
DeT7c7NN9+MXohONdyyWGAGx1pvczcpdesyRlTwgMC9tHOQ/7G+7ejdnGWz3qIdzKuklzqlhA5cO
bZ0tEFbq1bE5pmremVFyYCo4JSQwyz0wyBSWajAjrVVynlLIJ7f344y2fnZXLvFcoWYX43rS1/yy
C5S/vFrRHjt/Z9+QrpzVSlsZVUTeZfE1Tkjn/M5B+EQgcnsj/6Ny9ul5XwJVkkCpIUluNx/setpu
110kyXFNdNvXfeYEowizTEBukRiopfQRynGgllR4LS1LYHW3U+JghWvb0RvUl6QuWGLdDA9JvmvW
02a9OhHEXJpAXQflSBIoKptykW2Qht+hyPbB6hDALG+DP05aRn182ofbFIqoel4dKeCs3UCJCrT+
2OGkekJvdQoCwIaCO0F9JSA1muiQ1kC/kmRCCyFJxOVOQX+lHshZobRms7k5Uo7Ndla/fDmRp0an
LDY61QFihLgKtUeE4jWAkRifkMUREDsTuOFYKmr7BXZ/gXNskFkuMwAndDrY7/3Z4q85Fcs9tj0j
so4bRrWBuKihDPIeyiApNCIRApBRRCRNPxtv8sTXi+j8dNRHdxnUOeX1wNlmzebDdvW4OYuUe2rd
fWY9BgZ26TFQa4gTzAORA7Uq5BKNSkrrlCfPK027hY6hLQ+4VqFeDOwJRgUtCJa7SmqQrexu+/6Y
ivf5ynJLiaWQfqmE8BEgc5ncbg42Wc7yU/8sWnSY/Griyg/7oI0qgG7qowe+fZVSiUsrhaVzQD+7
E1WmXT5FThgF7SSLzBmq2Rfi0k8Q+sib2SVyxswRebXbrkrIbT5S9BGqAJerYMKgCk42AudhDIML
UCjL+v73NNOov1ZVACCmRwD+TbrftdtiKQJ+FywF4m55gOKJQcQ1AopYx4C5KOxDUq4Poj9bH4i5
rIn4/OLozT4+7k/Gu+RLiAY/yraXM2vikiGZchCgMSCImxbhZKkNzCeh5Oe651cO/f3h2aiPzJTg
Dhs6+UghtOum3q7WUAXlCzZdR5BMur4rSVwBwZO5/IRtlAZDIQFUCYq8wJxMwWL72SOL0/xlM+wN
OZcBstYlY9h31XoyHI4+qmUOX+SQaIX1VEsJyCXPTXsBCcBQhjzo31LFnXPhOb5+mvzmsUvVIwiC
zi7rOCHr2TGZfW9fW/9dyWRDvtzioXKjzmLweHAenbvdFIOqsSXYEP9bnDUMQI76glx29sGdZoMQ
/GPIpymcdltyjGeWYk+B/TgnEOPEQ1YWHonAhXZGQdT48kdIP4YrJ9WhJ5UqEGyhxNC/v2mWzZ4S
Vot7sFiIryezY3TfRw/cau4YAp6a873EELVNBIKaG4OcK0vUc0yvsFRZksLAnmgVKYhWkfkxhn74
dTErxk+dVAxQrvqkoVJQUMIaohkCO/SCsJA0SeWz7NOEfRwUF3CoemA4+/70YZuzcvMhhcmaDcxa
xyB3BwGck2Gej9lNQNgpFSX3GCf/HM32VrhSLJ8P6UuhLlOiqKUqsMG02i1nBzH2CUFxPiFm37OE
kApUkHoHRhLyiZahDhIkcAUSElWfqWL681+nhk9jRn3Alwf3YiarY4j642tavIUhU3IBqL/xUHex
fDxk85khtox4o4NlKn4hRnJC0MM9J4XQOifVhfYfHlbL19WyWWyeDuNMprRAt0kQhiHutMosECit
gUpYUghDTDruHfkS7ZhzCNe252nEQMhpQchDHxA0Mv0nRFWodE5njfjGWaOPRmkB/BGYGARdgcFp
mKFQ9CeMJTAjm2ifBfWm7wMrdPHEnA/P1X+atv/YdW3VfeeFcjYh+UTIG6tihDgC/DU3sZWEnySw
RAwEC1Iy5l3l+FkHPi5Q1uvxaR+6uayIwJROt3w+hvvXR4UyjYH/3KiAwXGJ4BZCvOtuOaYciLhG
CVtFjDUShPmN0vQT7lFfMlESdzY495ktN5ty7A8QlwTwJ0ygcmUQWxFIldtl1gUWU6TC3Tr7OZu4
j2uKC7imp23IIevnP/lFm1vNJYLkMDZdD9jl7g9jBH5yHNlMtcGxiWHpy1yiuUTSE4SwgiDEDNum
+3OePFd31LI/JKWHQ9LczkrROs2gKiH5FgDThCFnwZSUVYkyxb1P+LOJoJv7eg7oHvfRm4J5AEs+
bkNb7+p8x88e94CbCbnhEEJpFhgWCOc7mCwQoAo8KUR8hOLaKEE57geZwQo9dKxhBXTNULf7QNxd
ZOiKlhxhiKOaS5fvxvOYgXikjTFAoAklQlHGuPm3o/v+WQ8qL9yqknxKjn5Wv3xZTdtTa03evJ4X
YGOkSQxqZbBrIFxACiz8GvL1C06xoJH3tXg+fR/XlJZwnS5cgn+2y/mpducCIrS5AS0vTyH3Q+kH
pIWlfKzNHUaES0Jc0tLQ8s3B3kJ9iM0lLZUCmycKEr8phQAJgTe6XI/y5LpDXqSJAupEsAS2yoPG
6YtxkCOEUR9kVUAu+cA+H9ft+XnZ5HX+fX8rV3eklmnVxQABxZ53MaCMHSwXGK6RXKKkmQBWhYVT
5IvXRSc05ZGnx33JVUlydepk7Zb1My/K0hS84RZYAGaQYPIZtxZg65RIHiF/cnnlKuppiQGwWQFY
jQe8cLp6yH8+tO/Hm6x7DLksX4nOp9RdwIjIME9RjEEGI5PClj6HkjhYo6hIeNBHWujMSNHoIYN9
v1t+aJfvDiueDhEY64pM7SKQKbD/4PP93dwftLm3RTnPf3DCePTpWZe1+stciXv9QX1xmoI4Ug6v
aJUs1L69B67Fzq7Hm8xRpUDJ5viXj0sdNhh5pRX4AYMgFH+7+8DwYNQXqhDqFSMDSXNW27Wn/dJk
kvtRkB6phxiJpM79KA9Vq8lnAswE4bgQ3DP73Mt1P726nup/6h3uArxCGgCedPTXfM35TfOu3Wxh
70t3llX0mEKdJPLFQKApMdd7ETmChZU6WiXjf/GGdh96X3JdlHxaKBQbmPL4xxLdHQrZRWXIvEIr
bpFMOUzR7loRw91dwoSd4sTq523Zfomrf7NVGHs9Lp+P6AtciitqfmLWv24W26f7qWySuchFdGaH
6Mw5UUo6jQzw3PznAcBJhEz5JA2idLKS89RnIufT93HNC1RT0+GJzTf3ORjs9b+HQJkLHc8guU5P
DEwPSD8KNHcugAEQcdv0YMYr/bL7vmPrEpXXjJzOHvclzXSxqj9sTgeQ5jaVA1/3zjMkcpeTKReQ
zUeR1nslINsLUOSt+ul8sR5YwwrqrHldaD+dHG7PWw8mjpmayByZuh8ytYtCKisokkrBDv9/b9e2
HDeSY9/1L6nN++Uxrz0Ta+90hLcn5m2jrra25ZJGsnvbf79AVhWLSSZL6u3aiX6Qu8ggATITOAAO
QKbhrRtXiCrwuC2zSfFwOz7ERZZrGHu6uo3ez4GHMXI9yx2ikPHpsH/4/P1lyCCCxz+y6vAfCLgs
YFasxkRWiQQCmY3OkwxLgXMOEQtX18ld8/ss5RFnJ961Kmx6eg1x+svu69Nvu/3D41Dh4rB1r7X4
GNAmgq1iFhOLPjliYcOSIAUSJ7CZs5+0nd6pFXO164i5nnr5NcT8p5XwcXUAlP11TE07pqMYd5on
hWgP0LvEzlivsJW8wH8Wgl7m3uDVTa6/xHaanNbqs+4tp+2Q/vz58LnnDoXUGrxCJDkyrCAzZDSn
SJhRVpniGXjzG4UegwSN3Mhzm8lt2dB5tHl6/jFeLPa6lYJ9pYxIlGSHJEfM93hGLVHGZJ9Y0Mzy
fj9Yc5+JiJ0VDc74LOLz6us9v7ghesULRVukgkCRqKCwaCoMsSYzwiNX1rNkRLCtFxpdvBXKdNav
tW7WKIEZ2SNzYOyLWPRYMeYkpWhwUwViHUQKpoAR9SElz+R7ocDx+tcywlP+AAjaWa0rNjzS8MF/
6nJxGeWRFk1sxLaZIB0JXkOQkOHNAoThxsp/UZryIuJdq8S2o5lVo/TJBbNodTUHldGvWuxIs5hc
pkwR7wA6FBvhSBIqJT3LnvQgCwige1IN9dufyj8+fVm97PqZU+mDkxDO8pjQwBVLbALoVJTnsUTO
WbhVm18rRquC4x0V3LT+H19Wr1+OczR2Lyc6+5EGUBMUkiFjMGXtC7azJmeQTAWxi0UCg1CcR2NE
FL0goLP6Ozdb2AedMxv1NmqeO4IfL02xsELAPL3818uQRRb0qimktlgI5hJRDlm6rjDiE6VEKkcF
Z4lL7xZM4eRWraCrztbdrM2cNvK4K59g/z/jEJcKW6SrkKUubc00VSKRhKkJAauTBJsKhPyZJqe1
0uJd9md+m4XQd3Zeo9TWdEz8fs06GBT77nFB6WM3HzX3BkMrQCmZeUk4k1hZBpvkOMAViIRpSmDY
bVZvQk689HIgjEfvWvk6O2K/0f0Wp9cfh29fdq8Pr9MGJ3ZO3jMEkk7mVLgHd0BdREBQu2MUMT5J
Fbg3kembx8fHRqZPcwnn3U7DSe2j2Mz5aJYx161dfHt6elw//X7sUvnP4//MG1VSVAXUD4RifV4Y
CHVC5JIAGtUpOpX9W8SV0eWv9KqczrhrJV911FFDu8rm+/PrBXLwfmmPn+yAA3wHaMMTpD6B+YZ/
2UwdyVyo4mVw3EwqGePLt3J1eq8s2+4XmlD2DVvg1I7CVOVhWtwwFHY8RyZTJWKF5D3R0UWwTYwG
a9/VjfIWZWB+XqvSrqMSt/pa9Pm3TxcmvlLH4LP+RcPmGA724SQbQNWCZohWUkywf2jOWUqqYrxd
7HmRZIGK9qnHvQf9OtsFfMJQOv748Lp5d+3Ym8K4AVDrnQSVdWVPZwowhWvACEWp8K8CZSPBG4WF
7mwoYaYMrw+rw2d/nrFWqcP0RB2uDpWL5KpV9AWntAiLeoKBUInC2gVNy+1Th2ORFhDU6IxWaTsn
XVipzKRiPrxoy2Fr0iuTn5QUgSqfSSxeEayZgyVROBmJcyUZQyh+LQXUezO2ky7AH89LEbHjceTO
w+HzL98eHvuDKLRlnHNCncamQoY5zQhyKuzYdVFxGlsTt3DZiWjbjmimx4v6+8N293RuUHHuyDRX
1HKAMkQni/jLCOQG4mgS71Wwqlir37QE9cLLmKAeboR2nQZ669ZshCMhIIsvP54vPGfMv13HksED
XqYRoq1gIe6KHuJWJNFnEYNHlhTVZQlLTm7XStuBMHbFp0WuS8Xxr3+rZGT0bRcWpneUCovVRluw
FAFyeio5UcKLZJxVVso32ugWU9n10F0rHuvJfG1EAY6xQR+BSFGqwqQGSGFxIIUIwZBAcyRZZRUK
YC0mxZ90EOMzWtE7g4HsWgzFk9+/PvILrqhBU2dN0PN8jZKoK0joFcnjEC6IohJm5wzN2JUAr8BM
Uuqj69+1MnTWwXo9bUD6y+7h6xYnPYxTGT4WGpFzpbA1XVjucXigJZplq4TV0b4vlXG6+MJYluPB
Vui16gmtz0/zeMf7MDxP7e6vdSE5Lo3yaCssQgceHHFJQ1Rqsww+gutxk3C/vUMr3L7zRLcQ8e+a
Vfpbzd+d4ZmuchSfmQBhEZp57DJQYOYhoDGRx8gg4ine3Myf1/svjIepxxqttivX0Wq1P1u3r6vN
l6eLP7ueKwxFCI7p5GwdQFAL6NhxCOEwkAtGhiRTP0Ae3aWVrkMFgx8H25seVp8PT6/fHjYfIQbF
gZrLtDCrJGCoFAlNHISjQYOZkIqUbD0aOwNepV0M16/eCtohqsCPA1HlcfX9cGmfk5JjbY1fYT4Y
Fn2BLadwBhvHDHhUGtwvhUjeBhkb93t5kOP7TATs4LXtnl5YGf/zcBiSVeJ6Go0zQ0USmvDk6zQF
wKegE8neBy4i1TSJBWLG5S6NeLvOOAG707NpTBk2llQ1Pqh/ax2yIE2aEa2pP45y8QExpaM8U16c
eKML/w/FBz4vRJ650WffaYpydDcUD17/CQ90J87P2933Kq3uHA6k7GIAA5xwoBGgkUg87DOilIZd
BeZDu0mltbn8XSvDuifYsN9/+mvpN2tJmqjFrVw7gsEzOQ3CGKqKk4FZ+8YYtvdXNQYJWrn3c0vg
2Kyj5AlQ6OsZhdbGgLpWTrluSm1RABRYpuATEsRW3mHHlzHOJQpWWrtb0LobKLzc0TSc0ijKOgYZ
m/gmO2G92vz6/XmceWL3p1lN98dZTTpoFSXoaLAro9JgwTQDpBM2Mep9hJ/fxVqa3KkhLtVjd62o
siP/dlaF3aweV+vH3S+vu5c61+k40eEyocnBlpbKKUAdOP/KYNiPYDSGaGt3iUz0T42hHGc+esIs
JD96p7YPYDuPv5zYsgtv9unw2wUTmqtNyiVnGwClkBxqFhSrtE5nkoSBQEgmiBjZlDQ7unwjmN7O
C1xO76crq+7UuHr+9v3IQqyDi47wlAUuNXUk5Yy0JG6Ii5YTzTPEq4Zy5+It9s9YgoUYYnRGo6Ol
HR3XejpDZN5148Cb1EoGSwYi8KyRYOZxOrEF12sVPPZEdYAQzfvr6+56+iz+Wz9t5ta7eQbJbSif
5BZ+3b0cdkPIzqmi99IeM859Xy0DGDcRBSmaJxw2BWagOE4kk54mnXOqHJnFFMP4hnetbKIn8HR+
Tpfhel5XXNVxE4VLgTM+KWcIG0G6oJTC+hz1BufRen6LdfVzK8qMyjpRT3fUUwNg+unDL13msQZX
kr0mLmP/WQCX6ZXBfnLls5Q5qjfqqX9ggucvvbfSqXq5jZ4Oz0I/+fmx5lfu2TElZ4/9vODpXQQv
SbBvH0efWGI1o0RB6MdLlExI9X9W4HisFbgTVjmAgz2rNMYPlZ9WIbRVrM6tVTxqg8R4jhkrdHeM
ZxKlcMw7RZ3+E7yL08G7VsiOod9d+s6R5blp0kJN4T3TyJ0XICCn4J5dAPfsAdTxIrUVXIgYFxJA
7WVbmVRHpj2d2r8PNUwYJVOEu8dSYv2LiVlT4Flia7SxWOEwyBDiAEB5dI6ZzFJit8PUrTRLOdnx
OXeteh2bv2dDDgZHZA8GE2dtV5jUt5ZFQbhgoiOR4QBey+GtaAAhjgrldUoY0/Z7GH70+llBjPnq
XrF1rxhyyhvYe3nKkdPKCo4RbstBjgKvBIdwB5wbLQgXznjKo3G53AoHDWIsZ8FmGYTVRs79APw4
9An9E+6/OgDOvUyg5lejSyZFMBxBTpEGZ3hZePywMwpVYJkS822Ly+UdTO/UiLnlnTex5dPx4q+r
wxbLiz3WhhEueS1I0AbbsIyHHQv2XTLutWIgdqTXPGlz6VY2QzuyGdphAEyqHdiWg8XmOktTwHJA
qJIUxmglw7LNmDTwDPYyxOym3KjQ3Dlxos/cCa12dFrVfDj82gQwmB2tBWNVGygTxCnac2JqtJY9
O7aEWuGFTkIJQe1N0OZYisbmH35ttKopnplWjA99iX//+Onnx++fHw5n4kqvsEJh42JvLZh/HFCX
cFBO5iTpopLkxbE3Rmu9vzmxL85YpTXvcKvWfDtvlX58evn047BBfoM9jcs5xQQiAHJTiQD2Voh3
AC6bRME8pQIaKgCJ8uYlvEGeJTt1Otzq2qlLr/HlDTTa16fH3+5d761h/TlFwM8ewalgpeDWj4SG
oJiN0gYu2jCsvVojSKWSTwURs/mmV8aN6xhCSRFND+a1Hbgqp5RFw8SMlhK89vVExh+bIb6WZm7i
1zsqNJ95sZ/wu0oPm1rs1XQ84ypSqyI1koBtB9caRQKzDi4NbGcSMfCQJPt/WCkXkZad2vmMu1Y/
2VF6NtLr593L/unlKw4ZHRe6WeXPV+58SGCwNEe2dW1SAHcm0Tb7iCMfvdH2Xd1jnRstxDLzE1vF
dGfT7y4Ner+vXi6EysYBam+ixV6yjJDVM9gPJngiS6IUcKtXdJJBH12qFcG5jghuzrXdPK0wQje1
F6921ZfoaOKEB0xBZFj+sBMCUZlpAAaRB/5GCg8vubQS4NBEzHnSfL0XqleYbCeSHKtSjGF90iSI
bpMD3FDL1gKbUanRRHsnuMd+9GzfPTT97bEks9PGKm24npfYNrio53nUzSOWhQGruVoZ5PenN2BS
CRyeuyjY9Q8QzbMSMffvJWeW+TfavdCBxSvxYWziw43oRFkbwWeN3uWtOVW0SJY8hONJITpSnATw
WRDX2uQ8w+H17M/OqRq/rPKO8ycnNXqb/RxDbbBiyY9o42n935tL7z0OZLxWmYM9I5iDCK5Im2Df
VJq8LARAsVesJAe/tFt3fP1GsFUnpNmspJ0A6XHreBP3uuAZ5ZLgl74AMCQMriz402Koww8M5QV0
P7tuK5XcdaTSQxC4fv16mYbSADKJk5BjJpLiBDilGLEywApJKgsHLsxMn8zoUq0IuvdgtLjUAA+f
H7p8cKtllNQlQO44tdiKTBzme72EqFPikAc5qVOPr9UI0UtKbHZm2oWzXX1bbXff6rp73dSur+PH
NDiW1Ou0BqMKxSYGk2rYCQgPG+oz98lwiDkDf5fRQo5tOt9oOQidndYq1elb3LK9m32XZuCe8hHw
0EonavFbNFRbeMOCE+zHwAl7UVFlIoCPWwQSw+2XvkPTIaZueccTbgWbFj4/7uB9nXjSJxKdoeZI
MNaweXMusKODgdWjcZS34Ej/ztYqYSgEgbdL1pwlWRh8fzp616qz7uiobGVO1EzmMenQ+/wTy4IF
FzBdDb5Tg7WAdxcJp4UlnViisdwqnToSohW/M9t1Kze7aZBU/uP4/TBs/NR12lL9i/VyLgxSUYjO
BVukqTx+1ilSzUqW4HremEo+XHvJj5wO37Uizj9XsVVqNkttt3rZfPn346cFzrkneaIneku1A+cO
RhJsNYVgNXtDkgjRpaDws423W1mDIEu049Phu1afbUfJWb77y+7x+VgOrtx8XucsW+88rKoQ0dxz
DwbCYMuKF9YW0Nq7m3x65C9w6yUK1ONzq4zddZRxbtJlfHj69rAfevGdvVfXvjYnHTcqAuasA7E5
vENfALTbSJkweDDoqx/FG92sEdZ0KM/b9erYTF5Wx/bzDw+fv1R2obz2/dPkS0nGw7rCj4jgxxQ8
xZKDz0VkZiyYgPd9uml006UvN41OuftfUEsDBAoAAgAAAGMAHEVt9YoTZwAAAGcAAAAyABwAYW5p
bWF0aW9ucy9hbmltYXRpb24tY29udHJvbGxlci1kcnQtYXBpLXN0ZGVyci50eHRVVAkAAyrU/lMq
1P5TdXgLAAEE9QEAAAQUAAAAI1BST0NFU1MgVU5SRVNQT05TSVZFIC0gV2ViUHJvY2VzcyAocGlk
IDMwNDU5KQojRU9GCmJvb3RzdHJhcF9sb29rX3VwIHJlc3VsdDogdW5rbm93biBlcnJvciBjb2Rl
ICg0NGUpClBLAwQKAAAAAAAGuBtFAAAAAAAAAAAAAAAABwAcAGNhbnZhcy9VVAkAA2vF/lMw1P5T
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
u24rldx1pNJDELh+/XqZhtIAMomTkGMmkuIEOKUYsTLACkkqCwcuzEyfzOhSrQi692C0uNQAD58f
unxwq2WU1CVA7ji12IpMHOZ7vYSoU+KQBzmpU4+v1QjRS0psdmbahbNdfVttd9/qunvd1K6v48c0
OJbU67QGowrFJgaTatgJCA8b6jP3yXCIOQN/l9FCjm0632g5CJ2d1irV6Vvcsr2bfZdm4J7yEfDQ
Sidq8Vs0VFt4w4IT7MfACXtRUWUigI9bBBLD7Ze+Q9Mhpm55xxNuBZsWPj/u4H2deNInEp2h5kgw
1rB5cy6wo4OB1aNxlLfgSP/O1iphKASBt0vWnCVZGHx/OnrXqrPu6KhsZU7UTOYx6dD7/BPLggUX
MF0NvlODtYB3FwmnhSWdWKKx3CqdOhKiFb8z23UrN7tpkFT+4/j9MGz81HXaUv2L9XIuDFJRiM4F
W6SpPH7WKVLNSpbget6YSj5ce8mPnA7ftSLOP1exVWo2S223etl8+ffjpwXOuSd5oid6S7UD5w5G
Emw1hWA1e0OSCNGloPCzjbdbWYMgS7Tj0+G7Vp9tR8lZvvvL7vH5WA6u3Hxe5yxb7zysqhDR3HMP
BsJgy4oX1hbQ2rubfHrkL3DrJQrU43OrjN11lHFu0mV8ePr2sB968Z29V9e+NicdNyoC5qwDsTm8
Q18AtNtImTB4MOirH8Ub3awR1nQoz9v16thMXlbH9vMPD5+/VHahvPb90+RLScbDusKPiODHFDzF
koPPRWRmLJiA9326aXTTpS83jU65+19QSwMECgACAAAAI78bRRS9yI9nAAAAZwAAADEAHABjYW52
YXMvcGhpbGlwL3Rlc3RzLzJkLmNhbnZhcy5yZWFkb25seS1zdGRlcnIudHh0VVQJAAPC0v5Ta8X+
U3V4CwABBPUBAAAEFAAAACNQUk9DRVNTIFVOUkVTUE9OU0lWRSAtIFdlYlByb2Nlc3MgKHBpZCAz
MDM0MSkKI0VPRgpib290c3RyYXBfbG9va191cCByZXN1bHQ6IHVua25vd24gZXJyb3IgY29kZSAo
NDRlKQpQSwMEFAACAAgATL8bRV5soYu7AAAA9AAAADUAHABjYW52YXMvcGhpbGlwL3Rlc3RzLzJk
LmNhbnZhcy5yZWZlcmVuY2UtY3Jhc2gtbG9nLnR4dFVUCQADD9P+U9bF/lN1eAsAAQT1AQAABBQA
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
HXnSRxKdoeZAMNaweXMusKODgdWjcbi54Ej/ztYqYSgEgddL1pwkWfgUwPHoTavOuqOjspU5UTOZ
h6RD74NYLAuGg0lxuD/oBtYC3l0knBaWdGKJxnKtdOpIiFb8zrTbrdzspkFS+Z/DF9Ww8VPXwU/1
L9bLuTBIRSE6F2yRpvLwoatINStZgut5Y077cO0lP3I8fNOKOP+Ax1ap2Vi33epl8/nPh48tnHJP
8khP9JZqB84djCTYagrBavaGJBGiS0Hhhyyvt7IGQZZox8fDN60+246Ss3z3593D86EcXLn5vE6e
tt55WFUhornnHgyEwZYVL6wtoLV3V/kYyx/h1ksUqIfnVhm76yjj3KTL+PHp2/1+6MV39lZd+v6e
dNyoCJizjgjn8A59AdBuI2XC4MGgL34mcHSzRljToTxv16tDM3lZHdrPP9zffa7sQnnpi7DJl5KM
h3WFn1XBz0t4iiUHn4vIzFgwAe/7mNXopkvfshqdcvP/UEsDBAoAAgAAAEy/G0XbG7S5NAAAADQA
AAAyABwAY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5jYW52YXMucmVmZXJlbmNlLXN0ZGVyci50eHRV
VAkAAw/T/lPWxf5TdXgLAAEE9QEAAAQUAAAAI1BST0NFU1MgVU5SRVNQT05TSVZFIC0gV2ViUHJv
Y2VzcyAocGlkIDMwMzY0KQojRU9GClBLAwQUAAIACAA2ABxFdlln6LsAAAD0AAAAPgAcAGNhbnZh
cy9waGlsaXAvdGVzdHMvMmQuY2xlYXJSZWN0K2ZpbGxSZWN0LmFscGhhMC1jcmFzaC1sb2cudHh0
VVQJAAPX0/5T19P+U3V4CwABBPUBAAAEFAAAAEWPzUoDQRCE7/MUBbnowSDR0yBewga87C5Zf86b
3U4cnHSH7p74+k6C6KWpKqiPrlYw6WifyHLAXgrP9So+aNerTGQWH+4fV6tl+LXYjynTDBfsaJIj
QclOwpbOVJPaJXg6Jj5Aii9DMJ+riOGp8BfLNz/jDq9kvhZ2lZxJY9TCNd38kSuSHOaj08VOF7w5
seM85kJ2pZJqDIt+262bYcBbu22GvmuHl/emsv7/x80pzbiOuA2LptuE8ANQSwMEFAACAAgAZQAc
RUl+pzLuIwAAAHsAADsAHABjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNsZWFyUmVjdCtmaWxsUmVj
dC5hbHBoYTAtc2FtcGxlLnR4dFVUCQADLtT+Uy7U/lN1eAsAAQT1AQAABBQAAADEW2uTG7ex/c5f
wY9yKeDi/XDlxoWnrViOZa3spCqVujUkZyWWuORePmTJv/42ho8lhiC1TlSO7TJ3ORjgHKDRfbqB
tYtm/mk9Ww+Xd8N1c/8wny3eDv/ejl+tlpN2vR4+e5hNhwxzSr8ath/a1achwcP72Xw+W7eT5WK6
Huxbfj08/HPy9j+7N/81eNVs3j02gH9uflnOt/ft+iY0m+Ym/v32Bt76frbZf7jtbD69ed3O22bd
7r8b3a2a+/bX5er9zS/taj1bLtY39uZxsFHz8HDjl4tNu9isb35oJj/enjwdvFw206GdTlcHrPgj
wUYogzEevJjCS7O7Wbv6us9hsB/sEf4333wzfAb/+2rgl9N2+ObTQ3t4+A8tkeTDZ39rNrMP7VfA
ewUdDx+nKL/7T/KvwQB4tzdvZvfHVykmHGGNqB5i/DX8x8yIYT1EWAHAH2+HJQ7gN4Qv/wHLMdIj
MXxGaOLiq8Hr9mG52pw0VoOBb+bz4dtV8/Du68HgzXLTzIeL7f24XQ1ni+F600zeD5+t2skWXvnQ
DifLLczhdHi/nW9mD/P2T8Nf37WL4V/+R3wFr9/m3sefhpvlQ2cy+e0/ZcvJL87nzcMaXn22f2PY
veJmiwbs5sV987Zdfz3Y8z2Z/iEa9r68u7sbQn/3eU3n7ejUHiUmz+EF+BjBv8+/Gv7Z86C8VxZF
Fgli2jpkoibIGpOwUJhSQv/yX7C4ktNdjSjwVMPn89kYXvPLVfumXW9u383uR9NP8GVnZfBOtrXh
n4223HnBgJdwiEUZkcNaIytd8JLRqJX8nTQvDVxC17ICXcu8Rs8f6Z7C3i8OvANr+AB7YTybzzbg
OkZ4hIFKoNRRYiKyAnvEaGBIG5lQkEpg6oTUSvwXVuzCBEiizyfAyG7tSiMFBDUD1RaHqKJGSkWB
mI8YOckNkpbpgDmD1SP/Kd3dFwXuO8XPcDd42pxvLnjzZfu2mXyqoWc6OuKiR5pisDvrObIJyCTr
sFUmqeTMv4V+N+TFJTu2OCXVUHVujY1qeY/UX5sPze1kNXvYZOuu0YIlxIRIjLwhDLYT0NKMUuAm
rDAiBmH576RVDlonVrYpqI1hdfrUxhNZWa9LnDjDkjBuEePdUmlwETzbHWEQXqK1zMjfv1SXyewf
DnZoszeThpy69OOXzdQwYAGbC6IDhZhFj36NSQ/AwJsp6sAZRK6RkcEgZ6SlISmlGAbQ2/Uq+6ub
3MXJgBrfkaY/oCZ4onvT9tO2WW1+280cGUFczapmxAAAxE2caIiIJsoRE0Iho51EjOCIRbCeqAQA
bj+tN+39zcvZeAXh7CYdJmR989h1fZoen58ChzUR58AZY51fAarrbsD/XbSb3GEtJFBrrVSWIEFF
hMiXMNKYakQCBQejiJSEnEzdrsObC12X2BivYdttM2j8vv10/3Z1wERFduwX3b33JjJmOHKRwLQa
lZCh0qEIkd5JHCOnpgrzdJQSniIVeEoe4E2aybv2gE6oq+ikIFp5sD+WXAL7cxBSiYU9pA3nIlKj
eaiiOxnkFBwlUp+Bo1SxA7gE8QeE4bpdVcO89JxGiA7KWJgsrgRyInIIFkpTYeDLYK9aowVzn02A
53Jx264+zCCy1c3y9J03t/U2r9v1cruCLm4qwAclQV5hrccH1t++rLFN2llnmUcK9ix4LCnACyeP
JDFcWJAH0eCrbH98aBfQdRX8rvlsB/4wfglaTyqgW9rzHd+9OMxk9h0UH+E7H5g0AiNMGNiO8BQZ
Al4XC2uY5cpF7b/4Yj2iqTd9fF5wZfjcT+Yve1ztZAKufwXpyehDO3mZF4x17nL/G/yS101I4SRk
O5RHCls6QeD0niEPpoo150q6eJ344zCf47sbuN5s96zHc1zhSacHt/rxYXKwRMLxiLMrvkFh5yUH
uQ2LDDSp5MgwkKxeM4EJ9j6muuc6DlJCo20FmhC9JTgyHd01kGp/gjx7s1rOwfh4J6o5ydggaIFS
oaDLUg5WGFtklApI+BQiD+BbpTtfgler2QeY9JPpTd0Yfj/GhdUo2hSceA73fU68oYfp/g3EyWG6
RxQy1UtzTS0RgoBasVTBXAeQyk4a2FBCGMVTJJzIk7k+7boE1LAKoCnpTXIOx4d98gISgtUC0uJn
RIAmgHe7z04bRAIbmkNuSRVijGSVGBSKFsQwUUTFgJ8yybXR6lNda3nKj/HJuWyAL00vHXnjfZ7x
3JBkIjQxpyB7TF6B3BUcUi7nItLCpOAcD9LKpxCBbuu44UEP5rm7gU2De8sQ2vH27e2n+3Fn3yY7
GqO7nQfAFAnIWJ2tgYEhGAeaAfKlEIOVRPGn4D3tvw78tEXBQIx5hcG47TFYP7Tt5N1o1U6Wbxez
7Mkfx+l2bGfz3WfetZDEC0jWIbKDUGMJdq3GQA5yqZSSot6ycNVx+mY1Ph3igtO87VC9roE6feOs
WW8G7s5nQGLaM7XX7f1y0/4ya399DJO0szyNRzKT9gkUPiwm12CBkEJ6ZCJEeUtBXCfOHEzKUxbz
fKBLqqXfrqAlJa7Q0m1PeFerMISAYtVARVICdhlzsclkjRaDpIw72EfimuS+P/dYTLaVraLOtsoP
uSC3WW4n7263D7nKd2pnlKkRhy66z5zeQl4eQbwiIgmkgiGngtEQiBPauwD7n0vylCm/MujpjJ81
G5RcqgRBekxPCTbb6Ww52oIhrkc2//zzIhdUyMh06WL3mQV7ADcMGhuB4jSIOa+Q1Ri8s2QcggSx
yXxGIR/6rnM5Pu5xGNc4tAd9+7qZzprFpK0ZjWdEOQo4YXdDYkFNgtAWQPSCZGIpwpJochVxVzt9
8eMTNHoJo2QgKv6soaK3m9e5EpwD8zPV7WEIysqMyC4aUh0ZlsjzPN9OgN1n9xyFVkJEbZW8ninf
7vu+4Iz2TwclQFlD3U/v36y260380My3nZi2b3Pdfe+FaMZujQqMa9gLtEvzQM/pALJVGJdsoCQS
y54UACsDXYiIlZY9aqZGbdqj9uLH2+3qrpm0w2dagljK23z3Q1ZNMmHiA+TWILkRU5Yhow24Jxk1
yFvBqWPXTevQe53E8XGJnNeQ83E/NO4X9N0sB8KdMWFMO9hRBq5ASCUJTkmQlC0J8j5Icrm1lBEv
v0gY3CP47sV1k/vuRY/fpMJPsB6/v7WbdDt8JjpqvFOxxAjwtd7kalau0mOOrOQBgXlp4yD+YX99
q3d91sF2jwqcY0nPcY4N623pMJtkC4SRijw2+1TNOzNKDkwFp4QEZrkGBpHCUg1mpLVKzlMK8eT6
epzI1s+uyjmeC9LsrF3BfsLPq0D5y4sZ7aHyd/IN6dJZrbSVUUXkXaavcUI6x3cO5BMBz+2N/I/S
2cfnJQNVY6BUXyTP1u/tajzbrDpPkv2a6Jav+8wBRhFmmYDYIjFIS+kjpOMgLanwWlqWwOquh8Te
CJeWo2hUMplULHGS6/KFJX7frsbtankUiDk1gbwO0pEkUFQ25STbIA2/Q5Ltg9UhgFleB3/otI76
8LSE21aSqMldc5CA09kaUlSQ9YcKJ9Ujeq1SEAA2JNwJ8isBodFEh7QG+ZUkE1oISSKuVwrKkQqQ
00pqzaZ35iA51pvp5PnzkTwWOmW10Kn2ECP4Vcg9IiSvAYzE+IQsjoDYmcANx1JRWybY5QCn2CCy
nEcATui4t967s8WPORTLHbadIrKOG0a1Ab+oIQ3yHtIgKTQiERyQUUQkTT/rb3LHl5Po/HRQojt3
6pzySW+zTdv1+83yYX3iKXfSuvvM8xgY2KXHIK3BTzAPQg6mVSGXaFRSWqc8eVpq2g10cG25waUM
9azhoOQwrRAT5GAnP3T2RWrKNBIMM54YeIoE6+CMQ9YSggxlEeKBSCmE0iaKzkoYgtZg9M9JIYrZ
7ebdQRHswqbllhJLQQVQCV4sQAA1ueodbLKc5af+Seps3/nF+JkflqCNqoBuJwdH8OZFSrWJUwpL
50AFdwe7TLt8mJ0wCtpJFmEiqWZfSNI/QiiRt5VVZ8wckDfbzbKG3OaTTR8hGXE5GScMkvFkI0gv
xjDsRArZYbnkjz0NyrGaCgAxPgDwr9PtdrapZkSw/YOlkD9YHiCHY+D4jYBc2jEQUAr7kJQrQZS9
lUDMeWrG785OAO3Dw+6AvtMAhGjYztn2coBPXDIkU/ZFNAYE7tsinCy1gfkklPxcEf/C3QO/fzYo
kZka3H5dKZ9shNmqnWyWK0jG8j2frjBJRl35lySuQGfKnAXDMkqDIZ8BxQa5ZmBOpmCx/ezJybH/
uhkWTU45QPA8Fy674l7BYX8C0yyyFyX7eC+sp1pKQC55PjsQEIfA3yAP82+p4s658JS9fuz86ulP
U+gUQafn6aSQk+nBV760r6z/vmayId+x8ZBAUmcx7HjYPDoX3SmGqcaWYEP8H3Hk0QM5KImcHzDA
dpr2XPBPIR/qcNotycGfWYo9BRHmnECMEw/iQHgkAhfaGQVe48ufZP0ULhyYh4KVquh8oUR/f3/b
LtqdMm3mt2Cx4F+PZsforpwfuNXcMQRyOcsOicFrmwjRL9cnOVeWqKeYXmWoOpNKw4JaQyrUGnJ3
8KHvP86nVf+pk4oBsmafNCQsCjJpQzRDYIdeEBaSJql+pH7ssMRBcQWHmvQMZ1cm3y9zntx8VmLy
zAZmrWMQu4MA6cswz6f9JiDslIqSe4yTf8rMFiNcyNlPm5Qs1HlIFBOpKqI0LbeL6Z7GLiAozkfE
7Eqn4FJBkVLvwEhCPlgz1EGABK1AQqLqM8lU2f9lhfrYZlACPr8/IKb7e0CwcH99RauXQWRKLkAG
YjykfyyfUtl8dIktI97oYJmKX0iRHBEUuO9IxbXekeZs9u/vl4tXzaKdrx/PBE1W1qBBSRCGIe60
yioQlLWBhFxScENMOu4d+RJVoVMIl5bnsUWP5LhCcl+OhBkZ/wZeFRKu45EnvnLk6aNRWoB+BCUG
Tldg2DTMUKRpwliCMrKJliqo6L4EVikmijveP97/eTz7v21X3d0VgChnI5IPpryxKkbwI6Bfcy1d
SfhJgkrEILAgJGPeJbCf3cCHAerzenhaQjfniRmY0vGy0Ydw++owoUxj0D9XEnHYuERwCy7edZct
U3ZEXKOErSLGGglk/qAw/Yh7UDITNbrT3vHTdLFe131/AL8kQD9hAgk0A9+KgFWu2lkXWEyRCnft
COqk4xLXGFdwjY/LkF3WLz/4+SxXvGsCyWFsulK0y0Uoxgj85DiyWWrDxiaGpS9zl+ccSUGEsAoR
YvrV291xU+6rO/HZndXS/VltrqqlaJ1mkJWQfBmBacKQs2BKyqpEmeLeJ/zZQND1fTkGdI9L9KZi
HqCSD8swm2wn+aqhPawBNyNyZUMIpVlgWCCcr4KyQEAq8KQQ8RGSa6ME5bh0Mr0RCnSsZRV0bX9u
d464u0/RJS3ZwxBHNZcuX9HnMQPxSBtjQEATSoSijHHzb3v33bMCKq9c7pJ8TA77bPL8eTOeHSt8
8uotwQALI01ikCuDXYPgAlFg4deQb4FwigWNvJzF0+5LXGNaw3W89wn7c7a4O+buXICHNleg5eEp
xH5I/UC0sJRP17nDiHBJiEtaGlq/wFgM1IOoKhBbfKw8NovpePmxXlPyTopIo8yXPCV4JRCFDuwM
WW1BlFjjVFEKPe+uhNKeK2QpsHlUQ/HbGgoJMSC6nBrz5Lpjb6SJAhVHsAThzIPG6YvJoQOEQQmy
qSCX/avqD6vZ6Qni6FX+fXdPWXf6mmnVuSMBead3MaCMHTYRzKuRXKKkmQCBh4VT5IunaEc09ZbH
xyVzVWOujkW17WLyxKvDNAVvuAVBghnEunzqr0UuVxLJI4RyLi9czj0O0QM2rQCb4J5EHS/v8x9U
7U4oTJ57DGE1XxLP5/ad74rIME9RjEEGI5PClj5FHTkYozqR8KBEWikSSdHqvph+t128ny3e7kc8
Hqsw1uW72kXQdWD/wecbzblUaXOZjXKe/wSH8ejTk66vlcNccMFlo5JOW6EjZf/SWs1C7ZtbkH3s
5A8GTJbLUqBksyvOB8gOG4y80gr2AQN/GP+4G9LwYFCSqkQdxUiPaQ6w29lxvTQZ5dIYRGrqwV0j
qXNpzEMCbfIpCTNBOC4E98w+9brhzy8uq46fi+NugFeJSCDZDvs1X/x+3b6drTew9rVb3Cp6TCFl
E/mqJCimmFPPiBzBwkodrZLxv3hnvYReMtdV5uNKztpCl4c/H+lulcjOK4MIEFpxi2TKbop2F60Y
7m5XJuwUJ1Y/bcl2Q1z8K7ZK28t++bRFSbjmV9TdUeR/XM83j2GdjbIsOvPObO+dOSdKSaeRAcmd
/2AC5JGQKZ8tgpdOVnKeykh/2n2J666iejXtHx59e5udwW7+dxAoc6GTPCSXDBID04P8AwWaiyig
AIi4bnrQ44XS3W25sf+/t2trjhu51e/6L630/fLY100q9slW+Wwqb6m5yoplSZHsPfG/P0DPDIdN
Nkfa7CS1D/IOWSRAdgMfgA+g7UUVVgxVtmN0tX542nx5HUqy7jKqhL0eQxREYcJVmJCIx+Ksj9Eo
8PYKHuSlUG58s0ZYJzqPcyM3nUzYsOEOEPq4xKkwtxotU/0HosystPGKE20MvGGm4a0bV4gq8Lgt
s0nxcD2GyFmWS3B/urqN3s+BhzFyPUtjopDx6XF/f/f9ZUhmgsc/8AzxHwi4LMBnLAxFVqkVArme
zpMMS4FzDsETV5fpbvP7LKU0ZyfetCpsenoNKYOX3denX3f7+4eh2MZh615qejKgTQRbxSzmOH1y
xMKGJUEKpJIYrmU/fzy9UyvmatcRcz318uvX7e1xJXxcPQLK/jom6x0yY4w7zZNCtAfoXWKvsFfY
XF/gPwvxN3NvMA0n11/if01Oa/VZ95bTdsjE/vx413OHQmoNXiGSHBkWsxlyvFMkzCirTPEMvPmV
Qo9BgkZuZP7N5LZs6MXaPD3/GC8We9lKwb5SRiRKskPaJ6aePKOWKGOyTyxoZnm/Q665z0TEzooG
Z3wS8Xn19Zaf3RC94IWiLVJBoEhUUFi/FYZYkxnhkSvrWTIi2NYLjS7eCmU669daN2sdweTwgcQw
9kUseixec5JSNLipArEOIgVTwIj6kJJn8r1Q4HD9S8npKZUBBO2s1hUbHmn44D9143VGeaRFExux
kShIB/G6hiAhw5sFCMONlf+ljOlZxJtWiW1HM6tGmZwzZtHqYjoso1+12KNnMc9NmSLeAXQoNsKR
JFRKepbI6UEWEED3pBpKyT+Vv336vHrZ9ZO40gcnIZzlMaGBK5bYBNCpKM9jiZyzcK3Gx1aMVgXH
Oyq4KRUhvqxePx8mi+xejgT/AyOhJigkQw5lytoXbPBNziC9DGIXi1wKoTiPxogoekFAZ/V3braw
DzpnNupt1Dx3BD+e24RhhYB5evn7y5DQFvSiKaS2WAjmElEOecuuMOITpUQqRwVniUvvFkzh5Fat
oKvO1t2szZzB8rArn2D/P+MYmwpbpKuQpS5tzTRVIpGEqQkBq5MEmwqE/Jkmp7XS4l32Z36bhdB3
dl6j1NZ0TPx+zToYFCcR4ILSh/5Gam4NhlaAUjLzknAmscgNNslxgCsQCdOUwLDbrN6EnHjp5UAY
j9608nV2xH6j+01frz8ev33evd6/Tlu+2KmOwBBIOplT4R7cAXURAUHtF1LE+CRV4N5Epq8eHx9a
uz7NJZz3fw0ntY9iM08CW8Zct4zy7enpAVO4tZ7xv4f/mbfupKgKqB8IRaqAMBDqhMglATSqU3Qq
+7c4NKPLX+jeOZ5x00q+6qijhgaezffn1zPk4P0qIz/aAQf4DtCGJ8jCAvMN/7KZOpK5UMXL4LiZ
FFXGl2/l6nSjWbbdL7Tl7BviwrFBh6nKTLW4YSjseI6kqsoJC8l7oqOLYJsYDda+qz/nLfbC/LxW
pV1HJY4jg5ajz798OvcmKHUIPutfNGyO4agjTrIBVC1ohmglxQT7h+acpaQqxuvFnmdJFlhxn3rd
CKBfZ7uATxiq2B/vXzfvLmN7Uxg3AGq9k6CyrnzyTAGmcA0YoSgV/lugbCR4o7DQnQ0lzJRs9mH1
eOdPU+YqmZoeydTVoXKRXLWKvuDcGmFRTzAQKlFYu6BpuX7qcCzSAoIandEqbef8DyuVmRTvhxdt
OWxNemEWlpIiUOUzicUrguV7sCQKZ0VxriRjCMUvpYB6b8Z20gX442kpInY8DCG6f7z75dv9Q380
h7aMc06o09hmyTCnGUFOhT3MLipOY2viFi47EW3bEc30KFp/vd/unk4tO84duPeKWg5QhuhkEX8Z
gTRFHNbivQpWFWv1m5agXngZE9TDjdCuM1LAujUb4UgIyOLLj+cz5Rrzb5exZPCAl2mEaCtYiLui
h7gV2wqyiMEjYYvqsoQlJ7drpe1AGLvi0yLXueL4p79UXjT6tjMh1DtKhcVqoy1YigA5PZWcKIFV
XGeVlfKNxsLFVHY9dNOKx3oyXxragIN90EcgUpSqMKkBUlgc0SFCMCTQHElWWYUCWItJ8TsdxPiM
VvTOqCS7FkPx5F9fH/gZV9SgqbMm6GniSEnUFeQWi+RxLBlEUQmzc4ZmbJCAV2AmKfXR9W9aGTrr
YL2etmT9cXf/dYuzL8apDB8LjUj/UtisLyz3OE7REs2yVcLqaN+XyjhefGFQzeFgK/Ra9YTWp6d5
uONtGJ6ndreX+rIcl0Z5tBUWoQMPjrikISq1WQYfHU7ya59ne4dWuH3niW4h4t81q/TXmr87wTNd
5Sg+MwHCIjTz2PCgwMxDQGMij5FBxFO8uZo/r/dfGJhTjzVabVeuo9Vqf7JuX1ebz09nf3Y5VxiK
EBzTydk6gKAW0LHjEMJhIBeMDEmmfoA8uksrXYeVBj8Otjfdr+4en16/3W8+QgyKI0aXGWpWScBQ
KRKaOAhHgwYzIRUp2Xo0dga8SrsYLl+9FbRDVIEfB6LKw+r747mhUEqOtTV+gflgWPQFtpzCqXQc
M+BRaXC/FCJ5G2Rs3O/5QY7vMxGwg9e2e3pmZfzf/eOQrBKX02icGSqS0IQnX+dLAD4FnUj2PnAR
qaZJLBAzzndpxNt1BizY3Wz8oc+wsaSq8UH9W+uQBRnbjGhN/WG4jQ+IKR3lmfLixBtzCX5TfODz
QuSZG332nf4sR3dD8eD1n/BAd+L0vN1tr9LqTuFAyi4GMMAJRzwBGonEwz4jSmnYVWA+tJtUWpvL
37QyrHuCDfv9pz+Vft+YpIla3Mq1Rxo8k9MgjKGqOBmYtW8Mpnt/VWOQoJV7P7cEjs2aW54Ahb6e
UGjtUahr5ZjrptQWZKSxTMEnJIitvMPmM2OcSxSstHbXYJg3UHi5uWo4pVGUdQwy9hNOdsJ6tfny
/XmceWK3x+lVt4fpVTpoFSXoaLBBpDJywTQDpBM2Mep9hJ/fxVqa3KkhLtVjN62osiP/dlaF3awe
VuuH3S+vu5c66eow4+I8s8rBlpbKKUAdOBHMYNiPYDSGaGuji0z0dw3mHGc+esIsJD96p7YPYDuP
v5zYsjOF9+nx1zMmNBfbtkvONgBKITnULChWaZ3OJAkDgZBMEDGyKX93dPlGML2dF7ic3k9XVt2p
cfX87fuBhVhHOR3gKQtcaupIyhlpSdwQFy0nmmeIVw3lzsVr7J+xBAsxxOiMRkdLOzqu9XSqyrwB
yIE3qZUMlgxE4FkjwczjvGYLrtcqeOyJ6gAhmveX193l9Fn8Qz9t5ta7eQbJbSif5Ba+7F4ed0PI
zqmit9IeMs59Xy0DGDcRBSmaJxy/BWagOE4kk54mnXOqHJnFFMP4hjetbKIn8HSiUJfhelpXXNUB
HIVLgVNPKWcIG0G6oJTC+hz1Bif0en6NdfVzK8qMyjpRT3fUUwNg+unDL13msQZXkr0mLmMrXACX
6ZXB1nbls5Q5qjfqqb9hpukvvbfSqXq5jZ6OE0M/efdQ8yu37JCSs4fWYvD0LoKXJDjJAIfBWGI1
o0RB6MdLlExI9W8rcDjWCtwJqxzAwZ5VGuOHyk+rENoqVif5Kh61QY4+x4wVujvGM4lSOOadok7/
Dt7F8eBNK2TH0O/OLfDI8tw0aaGm8J5p5M4LEJBTcM84fAHT9YoXqa3gQsS4kABqL9vKpDoy7enU
/n2oYcIomSLcLZYS619MzJoCzxK7tI3FCodBhhAHAMqjc8xklhK7HqZupVnKyY7PuWnV69j8PRty
MDg0fDCYOH28wqS+tSwKwgUTHYkMRxJbDm9FAwhxVCivU8KYtt9O8aPXWgtizFf3iq17xZBj3sDe
ymOOnFZWcIxwWw5yFHglOJY84CRtQbhwxlMejcvlWjhoEGM5CzbLIKw2cu4H4MehZemfcP/VI+Dc
80xufjG6ZFIEwxHkFGlwqpmFxw87o1AFlikx33bbnN/B9E6NmFveeRNbPh24fupG6bE2jHDJa0GC
NtgRZjzsWLDvknGvFQOxI73kSZtLt7IZ2pHN0A4DYFLtwA4hLDbX6aIClgNClaQwRisZlm3GpIFn
sJchZjflSoXmzokTfeZOaFUbiJpVf//4pQlgMDtaC8aq9nImiFO058TUaC17duhOtcILnYQSgtqr
oM2xFI3Nf/zSaFVTPDOtGB9aJP/68dPPD9/v7h9PxJVeYYXCxsU2XzD/OLIv4eigzEnSRSXJi2Nv
DBt7f59kX5yxSmve4Vat+Xbetf3w9PLpx+MG+Q32OLnnGBOIAMhNJQLYWyHeAbhsEgXzlApoqAAk
yquX8AZ5luzU8XCra6cuvcaXN9BoX58efr11vbeG9ecUAT97BKeClYJbPxIagmI2Shu4aMOw9mqN
IJVKPhVEzCa+XhjArmMIJUU0PZjXduCqnFIWDRMzWkrw2pcTGb9tqvpamrmJX++o0HzmxX7CL03d
b2qxV9Px1K9IrYrUSAK2HVxrFAnMOrg0sJ1JxMBDkuw/sFLOIi07tdMZN61+sqP0bMjZz7uX/dPL
Vxy7Oi50s8qfr9z5kMBgaY5s69qkAO5Mom32EYdgeqPtu7rHOjdaiGXmJ7aK6c6m350b9P61eun3
dgbtTbTYS5YRsnoG+8EET2RJlAJu9YpOMuijS7UiONcRwc25tpunFUbopvbi1Qb/Eh1NnPCAKYgM
yx92QiAqMw3AIPLA30jh4SWXVgIcmog5T5qv90L1CpPtcJRDVYoxrE+aBNFtcoAbatlaYDMqNZpo
7wT32Bqf7bvHyL89IWV22lilDdfzEtsGF/U8j7p5wLIwYDVXK4P89vgGTCqBw3MXBQcQAETzrETM
/XvJmWX+jXYvdGDxQnwYm/hwIzpR1kbwWc95eWtkFi2SJQ/heFKIjhQnAXwWxLU2Oc9wnD/7vSOz
xi+rvOP8yUmN3mY/x1AbrFjyA9p4Wv9jcx4DgCMqL1XmYM8I5iCCK9Im2DeVJi8LAVDsFSvJwS/t
1h1fvxFs1QlpNitpJ0B63MXexL0ueEa5JPjtMwAMCYMrC/60GOrwk0t5Ad3PrttKJXcdqfQQBK5f
v54HszSATOJs6JiJpDiMTilGrAywQpLKwoELM9MnM7pUK4LuPRgtzjXAx7v7Lh/cahkldQmQO85x
tiITh/leLyHqlDhvQk7q1ONrNUL0khKbnZl24WxX31bb3be67l43tevr8HkRjiX1OjjCqEKxicGk
GnYCwsOG+sx9MhxizsDfZbSQY5tON1oOQmentUp1+ha3bO9mX+oZuKd8BDy00ola/DoP1RbesOAE
+zFw2F9UVJkI4OMagcRw+6Uv83SIqVve8YRbwaaFz487eF9HnvSRRGeoORCMNWzenAvs6GBg9Wgc
bi440r+ztUoYCkHg9ZI1J0kWPgVwPHrTqrPu6KhsZU7UTOYh6dD7IBbLguFgUhzuD7qBtYB3Fwmn
hSWdWKKxXCudOhKiFb8z7XYrN7tpkFT+5/BFNWz81HXwU/2L9XIuDFJRiM4FW6SpPHzoKlLNSpbg
et6Y0z5ce8mPHA/ftCLOP+CxVWo21m23etl8/vPhYwun3JM80hO9pdqBcwcjCbaaQrCavSFJhOhS
UPghy+utrEGQJdrx8fBNq8+2o+Qs3/159/B8KAdXbj6vk6etdx5WVYho7rkHA2GwZcULawto7d1V
PsbyR7j1EgXq4blVxu46yjg36TJ+fPp2vx968Z29VZe+vycdNyoC5qwjwjm8Q18AtNtImTB4MOiL
nwkc3awR1nQoz9v16tBMXlaH9vMP93efK7tQXvoibPKlJONhXeFnVfDzEp5iycHnIjIzFkzA+z5m
Nbrp0resRqfc/D9QSwMECgACAAAANgAcRSlY68A0AAAANAAAADsAHABjYW52YXMvcGhpbGlwL3Rl
c3RzLzJkLmNsZWFyUmVjdCtmaWxsUmVjdC5hbHBoYTAtc3RkZXJyLnR4dFVUCQAD19P+U9fT/lN1
eAsAAQT1AQAABBQAAAAjUFJPQ0VTUyBVTlJFU1BPTlNJVkUgLSBXZWJQcm9jZXNzIChwaWQgMzA0
MjIpCiNFT0YKUEsDBBQAAgAIAAYAHEUsAGvKuwAAAPQAAABAABwAY2FudmFzL3BoaWxpcC90ZXN0
cy8yZC5jbGVhclJlY3QrZmlsbFJlY3QuYWxwaGEwLjUtY3Jhc2gtbG9nLnR4dFVUCQADe9P+U3vT
/lN1eAsAAQT1AQAABBQAAABFj81KA0EQhO/zFAW56MEgBA8O4iVswMvukvXnvNntxMFJd+juia/v
JIhemqqC+uhqBZOO9oksB+yl8Fyv4oN2vcpEZnF1v3p8WIZfi/2YMs1wwY4mORKU7CRs6Uw1qV2C
p2PiA6T4MgTzuYoYngp/sXzzM+7wSuZrYVfJmTRGLVzTzR+5IslhPjpd7HTBmxM7zmMuZFcqqcaw
6LfduhkGvLXbZui7dnh5byrr/3/cnNKM64jbsGi6TQg/UEsDBBQAAgAIAGUAHEWA92lULCwAALmg
AAA9ABwAY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5jbGVhclJlY3QrZmlsbFJlY3QuYWxwaGEwLjUt
c2FtcGxlLnR4dFVUCQADLtT+Uy7U/lN1eAsAAQT1AQAABBQAAADEW2lz28ay/a5fgXyTY4OafVHd
lxTWG73Yjq+pOKlKuVggMJTwTBIKQNpWfv3rAbgAIEhJsVKXrjIlYNDndE9PL4ORt0zm91VeOcXM
qZLF3Txf3ji/mem7skhNVTnnd3nmUEQ1f+GYz6a8dzByFvl8nlcmLZZZdbYZeelsP62n/6if/Hj2
Llnd7gfA5+JDMV8vTHURJqvkIvptfAFP/ZyvNl/+Op9nF+/N3CSV2VwbzcpkYb4U5aeLD6as8mJZ
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
ZJ0J2Ss7Pj0+1PyMDSY38e7H6fl1TgeX2nxWkKeNsw5OlQ8o7pkDAaGxZcVxYzJw7exdhrH8Ca/e
K4F6fq2ZMVODGWtXXcYvP96fHs69+NZ8kZfm7wnLtAxgcxaIcAbf0GUw2k0glGt86NXFMYGLl1XE
6kbJ83js52by3M/t538/fX8s1YXi0kTY6HKO2sG5wrEqOF7CEUw5uJR5otqACLhtmNXipXuzrBZL
Dr8BUEsDBAoAAgAAAAYAHEWU1KeqNAAAADQAAAA9ABwAY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5j
bGVhclJlY3QrZmlsbFJlY3QuYWxwaGEwLjUtc3RkZXJyLnR4dFVUCQADe9P+U3vT/lN1eAsAAQT1
AQAABBQAAAAjUFJPQ0VTUyBVTlJFU1BPTlNJVkUgLSBXZWJQcm9jZXNzIChwaWQgMzAzOTUpCiNF
T0YKUEsDBBQAAgAIAGMAHEXNb88Y2gAAACcBAAA9ABwAY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5j
bGVhclJlY3QrZmlsbFJlY3QuYmFzaWMtY3Jhc2gtbG9nLnR4dFVUCQADKtT+UyrU/lN1eAsAAQT1
AQAABBQAAABFkE9rwzAMxe/+FIJe2sPKoNnFjF1KCr0kodmfY3FitTN1rSDJ3defU8p2EXoP9NOT
GoKRnXxDpDOcKCdfKsMXDh3TiCJ281y9VGvzkHByIaIHJRhwpCsCo0yUJNywOGUWQcM1pDNQ1rUx
or401rzmdEn0k97gCd5RdEtJmWJEtpZzKu7uj1yQqCDqFGc5znhRTAo3FzPKnYrM1iy6Q7ut+x4+
mkPdd23T7z/rwvrPD8speLgfsTKLut2ZgUhF2U3HSHQ55mnel6NaeESEgi4/GMkjLKsKV8b8AlBL
AwQUAAIACABlABxFMRBee5wjAADueQAAOgAcAGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuY2xlYXJS
ZWN0K2ZpbGxSZWN0LmJhc2ljLXNhbXBsZS50eHRVVAkAAy7U/lMu1P5TdXgLAAEE9QEAAAQUAAAA
xFtrkxu3sf3OX8GPUing4v1w5caFp61YjmWt7KQqlbo1HM5KU+KSe/mQLf/62xg+ljMEqXWicuQq
c5eDAc4BGt2nG1i7qOaf1u16vLwbr6v7h3m7eDf+ezN9vVrWzXo9fvbQzsYMc8Gfj5uPzerTmODx
fTuft+umXi5m69G+5Vfjw7+Tt//Zvfmv0etq8/6xAfy7+Xk5394365tQbaqb+PfbG3jru3az/3Db
dj67edPMm2rd7L+b3K2q++aX5erDzc/Nat0uF+sbe/M42KR6eLjxy8WmWWzWN99X9Q+3J09Hr5bV
bGxns9UBK/6V4OqO3mGMRy9n8FJ71zarr4YcRvvBHuF//fXX42fwv+cjv5w147efHprDw39oiSQf
P/tbtWk/Ns+B9wo6Hj9OUX73n+RfoxHwbm7etvfHVykmHGGNqB5j/BWmX2E+4VyMEVYA8IfbcR8H
8BvDl/+A5ZjoiRg/IzRx8Xz0pnlYrjYnjdVo5Kv5fPxuVT28/2o0ervcVPPxYns/bVbjdjFeb6r6
w/jZqqm38MrHZlwvtzCHs/H9dr5pH+bNn8a/vG8W47/8j3gOr9/m3qefxpvlQ2cy+e0/ZcvJL87n
1cMaXn22f2PcveLaRQV28/K+etesvxrt+Z5M/xiNB1/CvzH0d5/XdN5MTu1RYvICXoCPCfz34vn4
z54H5b2yKLJIENPWIRM1QdaYhIXClBL6l/+CxfU4sapAlFV3d2r8Yt5O4TW/XDVvm/Xm9n17P5l9
gi87K4N3sq2N/2y05c4LBryEQyzKiBzWGlnpgpeMRq3k76R5aeA+dM4K0DnLa/Tike4p7P3iwDuw
hg+wF6btvN2A65jgCQYqgVJHiYnICuwRo4EhbWRCQSqBqRNSK/FfWLFLEzA7n4Apo93a9Y0UEJQM
VFscoooaKRUFYj5i5CQ3SFqmA+YMVo/8p3R3X5zinprC5ppWRpxvLnjzVfOuqj+V0DMdHXHRI00x
2J31HNkEZJJ12CqTVHLm30K/G/Likh1b9EjVjJyRqokZeoy/Vh+r23rVPmyydZdoYWMwIRIjbwiD
7QS0NKMUuAkrjIhBWP47afUHLRPrtzmlVvNanFGbSVpYr0ucYKdKwrhFjHdLpcFF8Gx3hEF4idYy
I3//Ul0ms3842qFVAFRW01OrO34pmWHAAjYXRAcKMYse/RqTHoCBN1PUgTOIXCMjg0HOSEtDUkox
DKC361X2Vze5i5MBNb4j1XBADbOpB9P247ZabX7bzRyZaGgP2mTCAADETZxoiIgmyhETQiGjnURg
aRGLYD1RCQDcflpvmvubV+10BeHsJh0mZH3z2HV5mh6fnwKHNRHnwBljnV8BqutuwP9dNJvcYSkk
UGutVJYgQUWEyJcw0phqRAIFB6OIlIScTN2uw5sLXfexgQUVsPFuUqHxh+bT/bvVARMV2bFfdPfe
m8iY4chFAtNqVEKGSoeiUMZJHCOnpgjzdJQ+PEUK8JQ8wKur+n1zQCfUVXRSEK082B9LLoH9OQip
xMIe0gb0V6RG81BEdzLIKThKpD4DR6liB3AJ4g8Iw3WzKoZ56TmNEB2UsTBZXAnkROQQLJSmwsCX
wV61Rgvm3tbAc7m4bVYfW4hsZbM8feftbbnNm2a93K6gi5sC8FGfIC+w1tMD629eldgm7ayzzCMF
exY8lhTghZNHkhguLMiDaPBVtj88NAvough+17zdgT+M3wet6wLohg58x7cvDzOZfQfFR/jOByaN
wAgTBrYjPEWGgNfFwhpmuXJR+y++WI9oyk0fn/e4MnzuJ/OXA662rsH1ryA9mXxs6ld5wVjnLve/
wS953YQUTkK2Q3mksKUTBE7vGfJgqlhzrqSL14k/DvM5vruBy812zwY8pwWedHZwq78+1AdLJBxP
OLviGxR2XnKQ27DIQJNKjgwDyeo1E5hg72Mqe67jIH1otClAE8MIf2Q6uasg1f4EefZmtZyD8fFO
VHOSsUHQAqVCQZelHKwwtsgoFZDwKUQewLdKd74Er1ftR5j0k+lN3Rh+P8aF1ei16XHiBp9z4hU9
TPdvIE4O0z2hkKlemmtqiRAE1IqlCuY6gFR20sCGEsIoniLhRJ7M9WnXfUAVKwCakcEk53B82Ccv
ISFYLSAtfkYEaAJ4t/vstEEksKE55JZUIcZIVolBoWhBDBNFVAz4KZNcGq081aWWp/xYTyY+fmkG
6chb7/OM54YkE6GJOQXZY/IK5K7gkHI5F5EWJgXneJBWPoUIdFvGDQ8GMM/dDWwaPFiG0Ey3724/
3U87+zbZ0Rjd7TwApkhAxupsDQwMwTjQDJAvhRisJIo/Be9p/2Xgpy16DMSUFxhMmwGD9UPT1O8n
q6Zevlu02ZM/jtPt2M7mu8+8ayGJF5CsQ2QHocYS7FqNgRzkUiklRb1l4arj9NVqejrEBad526F6
UwJ1+sZZs8EM3J3PgMR0YGpvmvvlpvm5bX55DJO0szyNJzKT9gkUPiwm12CBkEJ6ZCJEeUtBXCfO
HEzKUxbzfKBLqmXYrkdLSlygpZuB8C5WYQgBxaqBiqQE7DLmYpPJGi0GSRl3sI/ENcl9f+6xmGwK
W0WdbZXvc0Fus9zW72+3D7nKd2pnlKkJhy66z5zeQl4eQbwiIgmkgiGngtEQiBPauwD7n0vylCm/
MujpjJ81G/W5FAmC9JidEqy2s3Y52YIhric2//zTIhdUyMR06WL3mQV7ADcMGhuB4jSIOa+Q1Ri8
s2QcggSxyXxGIR/6LnM5Ph5wmJY4NAd9+6aatdWibkpG4xlRjgJO2N2QWFCTILQFEL0gmViKsCSa
XEXc1U5f/vAEjd6H0WcgCv6syvWF3m5e50pwDszPVLeHISgrMyG7aEh1ZFgiz/N8OwF2n91zFFoJ
EbVV8nqmfLvv+4Iz2j8d9QHKEuphev92tV1v4sdqvu3EtH2X6+57L0QzdmtUYFzDXqBdmgd6TgeQ
rcK4ZAMlkVj2pABYGOhCRCy0HFAzJWqzAbWXP9xuV3dV3YyfaQliKW/z3Q9ZNcmEiQ+QW4PkRkxZ
how24J5k1CBvBaeOXTetQ+9lEsfHfeS8hJxPh6Fxv6Dv2xwId8aEMe1gRxm4AiGVJDglQVK2JMj7
IMnl1lJGvPwiYXCP4NuX103u25cDfnWBn2ADfn9rNul2/Ex01HinYokR4Gu9ydWsXKXHHFnJAwLz
0sZB/MP++lbv+iyD7R71cE4lPcc5NWywpUNbZwuEkXp5bPapmndmlByYCk4JCcxyDQwihaUazEhr
lZynFOLJ9fU4ka2fXZVzPBek2Vm7Hvuan1eB8pcXM9pD5e/kG9Kls1ppK6OKyLtMX+OEdI7vHMgn
Ap7bG/kfpbOPz/sMVImBUkOR3K4/2NW03aw6T5L9muiWr/vMAUYRZpmA2CIxSEvpI6TjIC2p8Fpa
lsDqrofEwQiXlqPXqM+kLlhi3fCBJX7XrKbNankUiDk1gbwO0pEkUFQ25STbIA2/Q5Ltg9UhgFle
B3/otIz68LQPtykkUfVddZCAs3YNKSrI+kOFk+oJvVYpCAAbEu4E+ZWA0GiiQ1qD/EqSCS2EJBGX
KwX9kXogZ4XUms3uzEFyrDez+sWLiTwWOmWx0Kn2ECP4Vcg9IiSvAYzE+IQsjoDYmcANx1JR20+w
+wOcYoPIch4BOKHTwXrvzhZ/zaFY7rDtFJF13DCqDfhFDWmQ95AGSaERieCAjCIiafpZf5M7vpxE
56ejPrpzp84prwebbdasP2yWD+sTT7mT1t1nnsfAwC49BmkNfoJ5EHIwrQq5RKOS0jrlydNS026g
g2vLDS5lqGcNe8SooAViuaqkBtHKbjfvD6F4F68st5RYCuGXSnAfASKXyeXmYJPlLD/1T5JF+84v
Bq78sA/aqALopj7swLcvUyppaaWwdA7kZ3eiyrTLp8gJo6CdZJE5QzX7Qlr6EUIfeTM7R86YOSCv
tptlCbnNR4o+QhbgchZMGGTByUbQPIxh2AIU0rL+/nvsadQfqyoAENMDAP8m3W7bTTEVgX0XLAXh
bnmA5ImBxzUCkljHQLko7ENSrg+i31sfiDnPifjd2dGbfXjYnYx3wZcQDfso216OrIlLhmTKToDG
gMBvWoSTpTYwn4SSn6ueXzj09/tnoz4yU4I7LOjkI4XQrpp6s1xBFpQv2HQVQTLp6q4kcQUCT+b0
E5ZRGgyJBEglSPICczIFi+1njyyO/ZfNsNfklANErXPFsKuq9Tjsjz6qRXZfZB9ohfVUSwnIJc9F
ewEBwFCGPMy/pYo758JT9vqx86vHLlVPIAg6O8/jhKxnh2D2yr62/ruSyYZ8ucVD5kadxbDjYfPo
XO2mGKYaW4IN8X/EWcMA5KhP5LyyD9tpNnDBP4Z8msJptyQHf2Yp9hTUj3MCMU48RGXhkQhcaGcU
eI0vf4T0Y7hwUh16rFRBYAslhvv7m2bR7CRhNb8FiwX/ejQ7Rnd19MCt5o4h0Kk53ksMXttEEKi5
MMi5skQ9xfQKQ5WZFBr2qFWkQK0idwcf+uHX+azoP3VSMUC66pOGTEFBCmuIZgjs0AvCQtIklc+y
jx32cVBcwKHqgeHs6tP7Zc6Tmw8pTJ7ZwKx1DGJ3EKA5Geb5mN0EhJ1SUXKPcfJPmdneCBeS5dMm
fRbqPCSKWqqCGkzL7WK2p7ELCIrzCTG7miW4VJCC1DswkpBPtAx1ECBBK5CQqPpMFtPv/7I0fGwz
6gM+P7gXM1kdXNRfX9PiLQyZkgsg/Y2HvIvl4yGbzwyxZcQbHSxT8QspkiOCHu47UnCtd6Q6m/37
++XidbVo5uvHwziTJS3IbRKEYYg7rbIKBElrIBOWFNwQk457R75EOeYUwqXleWwxIDktkNzXAWFG
pr+BV4VM53jWiK+cNfpolBagH0GJgdMVGDYNMxSS/oSxBGVkE+2roF73fWCFKp6448Nz9Z+m7f9t
u7LqrvJCOZuQfCLkjVUxgh8B/ZqL2ErCTxJUIgaBBSEZ8y5z/OwGPgxQntfD0z50c54RgSkdb/l8
DLevDxPKNAb9cyUDho1LBLfg4l13yzFlR8Q1StgqYqyRQOYPCtOPuEd9ZqJEdzY495kt1uuy7w/g
lwToJ0wgc2XgWxGwyuUy6wKLKVLhrp39nHTcxzXFBVzT4zJkl/Xz937e5lJzSSA5jE1XA3a5+sMY
gZ8cRzZLbdjYxLD0ZS7RnCPpESGsQISYYdl0d86T++qOWnaHpHR/SJrLWSlapxlkJSTfAmCaMOQs
mJKyKlGmuPcJfzYQdH1fjgHd4z56UzAPtr8vC1TbelvnO372sAbcTMiVDSGUZoFhgXC+g8kCAanA
k0LER0iujRKU476TGYzQQ8caVkDXDOd254i7iwxd0pI9DHFUc+ny3XgeMxCPtDEGBDShRCjKGDf/
tnffPetB5YVbVZJPyWGf1S9eVNP2WFqTV6/nBVgYaRKDXBnsGgQXiAILv4Z8/YJTLGjk/Vk87b6P
a0pLuI4XLmF/tou7Y+7OBXhocwVaHp5C7IfUD0QLS/lYmzuMCJeEuKSloeWbg72B+hCbc1kqBTaP
EiR+U3IBEhxvdDkf5cl1h7xIEwXSiWAJapUHjdMX0yAHCKM+yKqAXPKBfT6s2tPzssnr/PvuVq7u
RC3TqvMBApI972JAGTtYLihcI7lESTMBqgoLp8gXz4uOaMotj4/7zFWJuTpWsraL+okXZWkK3nAL
KgAzCDD5jFsLsHVKJI8QP7m8cBX1OMQA2KwArMYDXThd3uc/H9rV402eewyxLF+JzqfUncOIyDBP
UYxBBiOTwpY+RZI4GKM4kfCgj7RQmZGi0UMF+367+NAu3u1HPB4iMNYlmdpFEFNg/8Hn+7u5Pmhz
bYtynv/ghPHo05Mua/WHueD3+o36dJoCHSmHV7RKFmrf3oLWYifX403WqFKgZLP/y8elDhuMvNIK
9gEDJxT/uPvA8GDUJ1Vw9YqRAdMc1bbtcb00meR6FIRH6sFHIqlzPcpD1mrymQAzQTguBPfMPvVy
3U8vL4f6n3qHuwCvEAZAJx32a77m/KZ51643sPalO8sqekwhTxL5YiDIlJjzvYgcwcJKHa2S8b94
Q7sPvc9cF5lPC4liA10e/liiu0MhO68MkVdoxS2SKbsp2l0rYri7S5iwU5xY/bQl2w1x8W+2Cm0v
++XTFn3CJb+i7o7K+tf1fPN4P5VNshY5885s7505J0pJp5EBnZv/PAA0iZApn6SBl05Wcp76SuS0
+z6uu4LU1HR4YvPNbXYGu/nfQaDMhU5nkJynJwamB6IfBZorF6AAiLhuetDjhXrZbX9j65KU14wc
zx53Kc10vqw/rI8HkOa6lIO97p1nSOQqJ1MuIJuPIq33SkC0FzCR1/Kn08F6YA0rTGfN60L56bjh
drp1b+KYqYnMnqn7IUu7KKSygiKp1P/3dmXNcSM5+l3/JbV5H4959kysvdMR3p6Yt406bW3LJY1k
97b//QLJOphksqTerp3oB7mLDBIgM4EPwAcQ3jDT8NaNK0QVeNyW2aR4uB0f4iLLNYw9Xd1G7+fA
wxi5nuUOUcj4dNg/fP7+cs4ggscfWHX4DwRcFjArVmMiq0QCgcxG50mGpcA5h4iFq+vkrvl9lvKI
sxPvWhU2Pb3OcfrL7uvTb7v9w+O5wsVh615r8TGgTQRbxSwmFn1yxMKGJUEKJE4YrmU/aTu9Uyvm
atcRcz318muI+Y8r4ePqACj765iaNqSjGHeaJ4VoD9C7xM5Yr7CVvMB/FoJe5t7g1U2uv8R2mpzW
6rPuLaftOf358+Fzzx0KqTV4hUhyZFhBZshoTpEwo6wyxTPw5jcKPc4SNHIjz20mt2XnzqPN0/OP
8WKx160U7CtlRKIkOyQ5Yr7HM2qJMib7xIJmlvf7wZr7TETsrGhwxicRn1df7/nFDdErXijaIhUE
ikQFhUVTYYg1mREeubKeJSOCbb3Q6OKtUKazfq11s0YJzMgOzIGxL2LRY8WYk5SiwU0ViHUQKZgC
RtSHlDyT74UCw/WvZYSn/AEQtLNaV+z8SMMH/6nLxWWUR1o0sRHbZoJ0JHgNQUKGNwsQhhsr/0Vp
youId60S245mVo3SJxfMotXVHFRGv2qxI81icpkyRbwD6FBshCNJqJT0LHvSgywggO5Jda7f/lT+
8enL6mXXz5xKH5yEcJbHhAauWGITQKeiPI8lcs7Crdr8WjFaFRzvqOCm9f/4snr9MszR2L0c6ewD
DaAmKCRDxmDK2hdsZ03OIJkKYheLBAahOI/GiCh6QUBn9XdutrAPOmc26m3UPHcEP16aYmGFgHl6
+a+XcxZZ0KumkNpiIZhLRDlk6brCiE+UEqkcFZwlLr1bMIWTW7WCrjpbd7M2c9rI4658gv3/jENb
KmyRrkKWurQ101SJRBKmJgSsThJsKhDyZ5qc1kqLd9mf+W0WQt/ZeY1SW9Mx8fs162BQ7LvHBaWH
bj5q7g2GVoBSMvOScCaxsgw2yXGAKxAJ05TAsNus3oSceOnlQBiP3rXydXbEfqP7LU6vPw7fvuxe
H16nDU7slLxnCCSdzKlwD+6AuoiAoHbHKGJ8kipwbyLTN4+Ph0amT3MJ591O55PaR7GZ89EsY65b
u/j29PS4fvp96FL5z+F/5o0qKaoC6gdCsT4vDIQ6IXJJAI3qFJ3K/i3iyujyV3pVjmfctZKvOuqo
c7vK5vvz6wVy8H5pjx/tgAN8B2jDE6Q+gfmGf9lMHclcqOJlcNxMKhnjy7dydXqvLNvuF5pQ9g1b
4NiOwlTlYVrcMBR2PEcmUyViheQ90dFFsE2MBmvf1Y3yFmVgfl6r0q6jErf6WvT5t08XJr5SQ/BZ
/6JhcwwH+3CSDaBqQTNEKykm2D805ywlVTHeLva8SLJARfvU496Dfp3tAj7hXDr++PC6eXft2JvC
uAFQ650ElXVlT2cKMIVrwAhFqfCvAmUjwRuFhe5sKGGmDK8Pq8Nnf5qpVqnD9Egdrg6Vi+SqVfQF
p7QIi3qCgVCJwtoFTcvtU4djkRYQ1OiMVmk7J11YqcykYn5+0ZbD1qRXJj8pKQJVPpNYvCJYMwdL
onAyEudKMoZQ/FoKqPdmbCddgD+eliJix2HkzsPh8y/fHh77gyi0ZZxzQp3GpkKGOc0Icirs2HVR
cRpbE7dw2Ylo245opseL+vvDdvd0alBxbmCaK2o5QBmik0X8ZQRyA3E0ifcqWFWs1W9agnrhZUxQ
DzdCu04DvXVrNsKREJDFlx/PF54z5t+uY8ngAS/TCNFWsBB3RQ9xK5Los4jBI0uK6rKEJSe3a6Xt
QBi74tMi16Xi+Ne/VTIy+rYLC9M7SoXFaqMtWIoAOT2VnCjhRTLOKivlG210i6nseuiuFY/1ZL42
ogDH2KCPQKQoVWFSA6SwOJBChGBIoDmSrLIKBbAWk+JPOojxGa3oncFAdi3OxZPfvz7yC66oQVNn
TdDTfI2SqCtI6BXJ4xAuiKISZucMzdiVAK/ATFLqo+vftTJ01sF6PW1A+svu4esWJz2MUxk+FhqR
c6WwNV1Y7nF4oCWaZauE1dG+L5VxvPjCWJbhYCv0WvWE1qenOdzxPpyfp3b317qQHJdGebQVFqED
D464pCEqtVkGH8H1uEm4396hFW7feaJbiPh3zSr9rebvTvBMVzmKz0yAsAjNPHYZKDDzENCYyGNk
EPEUb27mz+v9F8bD1GONVtuV62i12p+s29fV5svTxZ9dzxWGIgTHdHK2DiCoBXTsOIRwGMgFI0OS
qR8gj+7SStehgsGPZ9ubHlafD0+v3x42HyEGxYGay7QwqyRgqBQJTRyEo0GDmZCKlGw9GjsDXqVd
DNev3graIarAj2eiyuPq++HSPiclx9oav8J8MCz6AltO4Qw2jhnwqDS4XwqRvA0yNu738iDH95kI
2MFr2z29sDL+5+FwTlaJ62k0zgwVSWjCk6/TFACfgk4kex+4iFTTJBaIGZe7NOLtOuME7E7PpjFl
2FhS1fig/q11yII0aUa0pn4Y5eIDYkpHeaa8OPFGF/4fig98Xog8c6PPvtMU5ejuXDx4/Sc80J04
PW9336u0ulM4kLKLAQxwwoFGgEYi8bDPiFIadhWYD+0mldbm8netDOueYOf9/tNfS79ZS9JELW7l
2hEMnslpEMZQVZwMzNo3xrC9v6pxlqCVez+3BI7NOkqeAIW+nlBobQyoa+WY66bUFgVAgWUKPiFB
bOUddnwZ41yiYKW1uwWtu4HCyx1N51MaRVnHIGMT32QnrFebX78/jzNP7P44q+l+mNWkg1ZRgo4G
uzIqDRZMM0A6YROj3kf4+V2spcmdGuJSPXbXiio78m9nVdjN6nG1ftz98rp7qXOdhokOlwlNDra0
VE4B6sD5VwbDfgSjMURbu0tkon9qDOU489ETZiH50Tu1fQDbefzlxJZdeLNPh98umNBcbVIuOdsA
KIXkULOgWKV1OpMkDARCMkHEyKak2dHlG8H0dl7gcno/XVl1p8bV87fvAwuxDi4a4CkLXGrqSMoZ
aUncEBctJ5pniFcN5c7FW+yfsQQLMcTojEZHSzs6rvV0hsi868aBN6mVDJYMROBZI8HM43RiC67X
KnjsieoAIZr319fd9fRZ/Ld+2sytd/MMkttQPskt/Lp7OezOITunit5LO2Sc+75aBjBuIgpSNE84
bArMQHGcSCY9TTrnVDkyiymG8Q3vWtlET+Dp/Jwuw/W0rriq4yYKlwJnfFLOEDaCdEEphfU56g3O
o/X8Fuvq51aUGZV1op7uqKfOgOmnD790mccaXEn2mriM/WcBXKZXBvvJlc9S5qjeqKf+gQmev/Te
Sqfq5TZ6OjwL/eTnx5pfuWdDSs4O/bzg6V0EL0mwbx9Hn1hiNaNEQejHS5RMSPV/VmA41grcCasc
wMGeVRrjh8pPqxDaKlbn1ioetUFiPMeMFbo7xjOJUjjmnaJO/wnexfHgXStkx9DvLn3nyPLcNGmh
pvCeaeTOCxCQU3DPLoB79gDqeJHaCi5EjAsJoPayrUyqI9OeTu3fhxomjJIpwt1jKbH+xcSsKfAs
sTXaWKxwGGQIcQCgPDrHTGYpsdth6laapZzs+Jy7Vr2Ozd+zcw4GR2SfDSbO2q4wqW8ti4JwwURH
IsMBvJbDW9EAQhwVyuuUMKbt9zD86PWzghjz1b1i614x5Jg3sPfymCOnlRUcI9yWgxwFXgkO4Q44
N1oQLpzxlEfjcrkVDjqLsZwFm2UQVhs59wPw47lP6J9w/9UBcO5lAjW/Gl0yKYLhCHKKNDjDy8Lj
h51RqALLlJhvW1wu72B6p0bMLe+8iS2fjhd/XR22WF7ssTaMcMlrQYI22IZlPOxYsO+Sca8VA7Ej
veZJm0u3shnakc3QDgNgUu3AthwsNtdZmgKWA0KVpDBGKxmWbcakgWewlyFmN+VGhebOiRN95k5o
taPTqubD4dcmgMHsaC0Yq9pAmSBO0Z4TU6O17NnQEmqFFzoJJQS1N0GbYykam3/4tdGqpnhmWjF+
7kv8+8dPPz9+//xwOBFXeoUVChsXe2vB/OOAuoSDcjInSReVJC+OvTFa6/3NiX1xxiqteYdbtebb
eav049PLpx+HDfIb7HFczjEmEAGQm0oEsLdCvANw2SQK5ikV0FABSJQ3L+Gd5VmyU8fDra6duvS6
flvnRKN9fXr87d713hrWn1ME/OwRnApWCm79SGgIitkobeCiDcPaqzWCVCr5VBAxm296Zdy4jiGU
FNH0YF7bgatySlk0TMxoKcFrX09k/LEZ4mtp5iZ+vaNC85kX+wm/q/SwqcVeTcczriK1KlIjCdh2
cK1RJDDr4NLAdiYRAw9Jsv+HlXIRadmpnc64a/WTHaVnI71+3r3sn16+4pDRcaGbVf585c6HBAZL
c2Rb1yYFcGcSbbOPOPLRG23f1T3WudFCLDM/sVVMdzb97tKg9/vq5UKobByg9iZa7CXLCFk9g/1g
gieyJEoBt3pFJxn00aVaEZzriODmXNvN0wojdFN78WpXfYmOJk54wBREhuUPOyEQlZkGYBB54G+k
8PCSSysBDk3EnCfN13uheoXJdiLJUJViDOuTJkF0mxzghlq2FtiMSo0m2jvBPfajZ/vuoelvjyWZ
nTZWacP1vMS2wUU9z6NuHrEsDFjN1cogvz++AZNK4PDcRcGuf4BonpWIuX8vObPMv9HuhQ4sXokP
YxMfbkQnytoIPmv0Lm/NqaJFsuQhHE8K0ZHiJIDPgrjWJucZDq9nf3ZO1fhllXecPzmp0dvs5xhq
gxVLPqCNp/V/by699ziQ8VplDvaMYA4iuCJtgn1TafKyEADFXrGSHPzSbt3x9RvBVp2QZrOSdgKk
x63jTdzrgmeUS4Jf+gLAkDC4suBPi6EOPzCUF9D97LqtVHLXkUqfg8D169fLNJQGkEmchBwzkRQn
wCnFiJUBVkhSWThwYWb6ZEaXakXQvQejxaUGePj80OWDWy2jpC4BcsepxVZk4jDf6yVEnRKHPMhJ
nXp8rUaIXlJiszPTLpzt6ttqu/tW193rpnZ9DR/T4FhSr9MajCoUmxhMqmEnIDxsqM/cJ8Mh5gz8
XUYLObbpdKPlIHR2WqtUp29xy/Zu9l2aM/eUj4CHVjpRi9+iodrCGxacYD8GTtiLiioTAXzcIpA4
337pOzQdYuqWdzzhVrBp4fPjDt7XkSd9JNEZagaCsYbNm3OBHR0MrB6No7wFR/p3tlYJQyEIvF2y
5iTJwuD749G7Vp11R0dlK3OiZjKHpEPv808sCxZcwHQ1+E4N1gLeXSScFpZ0YonGcqt06kiIVvzO
bNet3OymQVL5j+H7Ydj4qeu0pfoX6+VcGKSiEJ0LtkhTOXzWKVLNSpbget6YSn6+9pIfOR6+a0Wc
f65iq9Rsltpu9bL58u/DpwVOuSd5pCd6S7UD5w5GEmw1hWA1e0OSCNGloPCzjbdbWWdBlmjHx8N3
rT7bjpKzfPeX3ePzUA6u3Hxe5yxb7zysqhDR3HMPBsJgy4oX1hbQ2rubfHrkL3DrJQrU43OrjN11
lHFu0mV8ePr2sD/34jt7r659bU46blQEzFkHYnN4h74AaLeRMmHwYNBXP4o3ulkjrOlQnrfr1dBM
XlZD+/mHh89fKrtQXvv+afKlJONhXeFHRPBjCp5iycHnIjIzFkzA+z7dNLrp0pebRqfc/S9QSwME
CgACAAAAYwAcRRPCBfhnAAAAZwAAADoAHABjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNsZWFyUmVj
dCtmaWxsUmVjdC5iYXNpYy1zdGRlcnIudHh0VVQJAAMq1P5TKtT+U3V4CwABBPUBAAAEFAAAACNQ
Uk9DRVNTIFVOUkVTUE9OU0lWRSAtIFdlYlByb2Nlc3MgKHBpZCAzMDQ1NCkKI0VPRgpib290c3Ry
YXBfbG9va191cCByZXN1bHQ6IHVua25vd24gZXJyb3IgY29kZSAoNDRlKQpQSwMECgAAAAAAZQAc
RQAAAAAAAAAAAAAAAAwAHABjb21wb3NpdGluZy9VVAkAAy7U/lMw1P5TdXgLAAEE9QEAAAQUAAAA
UEsDBBQAAgAIACO/G0URYBQa2gAAACcBAAA7ABwAY29tcG9zaXRpbmcvYWJzb2x1dGUtaW5zaWRl
LW91dC1vZi12aWV3LWZpeGVkLWNyYXNoLWxvZy50eHRVVAkAA8LS/lNrxf5TdXgLAAEE9QEAAAQU
AAAARZBPa8MwDMXv/hSCXtrDSiE9DDN2KSnskoRmf47FsdUu1LWCJHdff04p20XoPdBPT2oIPDv5
hkhnOFFOoVSGLxw6Jo8ittpU1fPaPCSc3BgxgBIM6OmKwCgTJRlvWJwyi6DjdUxnoKxrY0RDaax5
yemS6Ce9whO8o+iOkjLFiGwt51Tc/R+5IFFB1CnO0s94UUwKNxczyp2KzNYsukO7q/sePppD3Xdt
07991oX1nx+W0xjgfsTKLOp2bwYiFWU3HSPR5ZineV+OauEREQq6/MBTQFhut7gy5hdQSwMEFAAC
AAgAZQAcRUkwf8SZIwAA/nkAADgAHABjb21wb3NpdGluZy9hYnNvbHV0ZS1pbnNpZGUtb3V0LW9m
LXZpZXctZml4ZWQtc2FtcGxlLnR4dFVUCQADLtT+Uy7I/lN1eAsAAQT1AQAABBQAAADEW2uPG7fV
/q5foY8buNTyfjHeNuA1cePUjtdJCxRFMZJG9sBaaauLE+fXv4ejy2pGlLxpjcQBol0Nh3we8vCc
5xxy7aKaf1o36+FyNlxX9w/zZvFu+Pd6/Hq1nNTr9fDmoZkOGWZMfzWsP9arT0OCh/fNfN6s68ly
MV0P9i2fDw//Tt7+Z/vmvwavq837xwbw7/an5Xx7X69vQ7WpbuPf727hre+azf7DbZv59PZNPa+r
db3/bjRbVff1z8vVh9uf6tW6WS7Wt/b2cbBR9fBw65eLTb3YrG+/ryav7k6eDl4uq+nQTqerA1b8
C8FTXguM8eDFFF5qZk292qOcLO9zf/N6dNLFfthHIhKTZ8Mb+P8I/nv21cAvp/Xw7aeH+tDkH1oi
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
+KUvAAwJgysL/rQY6vADQ/kCul9ct5VK7jpS6TEIXL9+PU9DaQCZxEnIMRNJcQKcUoxYGWCFJJWF
Axdm5k9mcqlWBN17MFqca4CHzw9dPrjVMkrqEiB3nFpsRSYO871eQtQpcciDnNWpp9dqhOglJTY7
M+/C2a6+rba7b3XdvW5q19fwMQ2OJfU6rcGoQrGJwaQadgLCw4b6zH0yHGLOwN9ltJBjm043uhyE
Lk5rler0LW7Z3i2+SzNyT/kEeGilE7X4LRqqLbxhwQn2Y+CEvaioMhHAxy0CifH2l75D0yGmbnnH
E24Fmxc+P+7gfR150kcSnaFmIBhr2Lw5F9jRwcDq0TjKW3Ckf2drlTAUgsDbJWtOklwYfH88eteq
s+7oqGxlTtRM5pB06H3+iWXBgguYrgbfqcFawLuLhNPCkk4s0VhulU6dCNGK35ntupWb3TxIKv8x
fD8MGz91nbZU/2K9nAuDVBSic8EWaSqHzzpFqlnJElzPG1PJx2tf8iPHw3etiMvPVWyVWsxS261e
Nl/+ffi0wCn3JI/0RG+pduDcwUiCraYQrGZvSBIhuhQUfrbxditrFOQS7fh4+K7VZ9tRcpHv/rJ7
fB7KwZWbz+ucZeudh1UVIpp77sFAGGxZ8cLaAlp7d5NPj/wFbn2JAvX43Cpjdx1lnJt1GR+evj3s
x158Z+/Vta/NSceNioA560BsDu/QFwDtNlImDB4M+upH8SY3a4Q1Hcrzdr0amsnLamg///Dw+Utl
F8pr3z9NvpRkPKwr/IgIfkzBUyw5+FxEZsaCCXjfp5smN7305abJKXf/C1BLAwQKAAIAAAAjvxtF
gTivA2cAAABnAAAAOAAcAGNvbXBvc2l0aW5nL2Fic29sdXRlLWluc2lkZS1vdXQtb2Ytdmlldy1m
aXhlZC1zdGRlcnIudHh0VVQJAAPC0v5Ta8X+U3V4CwABBPUBAAAEFAAAACNQUk9DRVNTIFVOUkVT
UE9OU0lWRSAtIFdlYlByb2Nlc3MgKHBpZCAzMDMzOCkKI0VPRgpib290c3RyYXBfbG9va191cCBy
ZXN1bHQ6IHVua25vd24gZXJyb3IgY29kZSAoNDRlKQpQSwMEFAACAAgATL8bRX+2p6S7AAAA9AAA
AEcAHABjb21wb3NpdGluZy9hYnNvbHV0ZS1wb3NpdGlvbi1jaGFuZ2VkLWluLWNvbXBvc2l0ZWQt
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
p7VKdfoWt2zvZl/qGbinfAQ8tNKJWvw6D9UW3rDgBPsxcNhfVFSZCODjGoHEcPulL/N0iKlb3vGE
W8Gmhc+PO3hfR570kURnqDkQjDVs3pwL7OhgYPVoHG4uONK/s7VKGApB4PWSNSdJFj4FcDx606qz
7uiobGVO1EzmIenQ+yAWy4LhYFIc7g+6gbWAdxcJp4UlnViisVwrnToSohW/M+12Kze7aZBU/ufw
RTVs/NR18FP9i/VyLgxSUYjOBVukqTx86CpSzUqW4HremNM+XHvJjxwP37Qizj/gsVVqNtZtt3rZ
fP7z4WMLp9yTPNITvaXagXMHIwm2mkKwmr0hSYToUlD4IcvrraxBkCXa8fHwTavPtqPkLN/9effw
fCgHV24+r5OnrXceVlWIaO65BwNhsGXFC2sLaO3dVT7G8ke49RIF6uG5VcbuOso4N+kyfnz6dr8f
evGdvVWXvr8nHTcqAuasI8I5vENfALTbSJkweDDoi58JHN2sEdZ0KM/b9erQTF5Wh/bzD/d3nyu7
UF76ImzypSTjYV3hZ1Xw8xKeYsnB5yIyMxZMwPs+ZjW66dK3rEan3Pw/UEsDBAoAAgAAAEy/G0XC
EnGzNAAAADQAAABEABwAY29tcG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRpb24tY2hhbmdlZC1pbi1j
b21wb3NpdGVkLWxheWVyLXN0ZGVyci50eHRVVAkAAw/T/lPLxf5TdXgLAAEE9QEAAAQUAAAAI1BS
T0NFU1MgVU5SRVNQT05TSVZFIC0gV2ViUHJvY2VzcyAocGlkIDMwMzYzKQojRU9GClBLAwQUAAIA
CAAAABxFup2BCrsAAAD0AAAAUAAcAGNvbXBvc2l0aW5nL2Fic29sdXRlLXBvc2l0aW9uLWNoYW5n
ZWQtd2l0aC1jb21wb3NpdGVkLXBhcmVudC1sYXllci1jcmFzaC1sb2cudHh0VVQJAANv0/5Tb9P+
U3V4CwABBPUBAAAEFAAAAEWPzUoDQRCE7/MUBbnowSDEi4N4CRvwsrtk/TlvdjtxcNIdunvi6zsJ
opemqqA+ulrBpKN9IssBeyk816v4oF2vMpFZXN2vHh+W4ddiP6ZMM1ywo0mOBCU7CVs6U01ql+Dp
mPgAKb4MwXyuIoanwl8s3/yMO7yS+VrYVXImjVEL13TzR65IcpiPThc7XfDmxI7zmAvZlUqqMSz6
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
4HremNM+XHvJjxwP37Qizj/gsVVqNtZtt3rZfP7z4WMLp9yTPNITvaXagXMHIwm2mkKwmr0hSYTo
UlD4IcvrraxBkCXa8fHwTavPtqPkLN/9effwfCgHV24+r5OnrXceVlWIaO65BwNhsGXFC2sLaO3d
VT7G8ke49RIF6uG5VcbuOso4N+kyfnz6dr8fevGdvVWXvr8nHTcqAuasI8I5vENfALTbSJkweDDo
i58JHN2sEdZ0KM/b9erQTF5Wh/bzD/d3nyu7UF76ImzypSTjYV3hZ1Xw8xKeYsnB5yIyMxZMwPs+
ZjW66dK3rEan3Pw/UEsDBAoAAgAAAAAAHEUK1A1mNAAAADQAAABNABwAY29tcG9zaXRpbmcvYWJz
b2x1dGUtcG9zaXRpb24tY2hhbmdlZC13aXRoLWNvbXBvc2l0ZWQtcGFyZW50LWxheWVyLXN0ZGVy
ci50eHRVVAkAA2/T/lNv0/5TdXgLAAEE9QEAAAQUAAAAI1BST0NFU1MgVU5SRVNQT05TSVZFIC0g
V2ViUHJvY2VzcyAocGlkIDMwMzk0KQojRU9GClBLAwQUAAIACAA2ABxFwR6LB7sAAAD0AAAAOAAc
AGNvbXBvc2l0aW5nL2JvdW5kcy1pbi1mbGlwcGVkLXdyaXRpbmctbW9kZS1jcmFzaC1sb2cudHh0
VVQJAAPX0/5T19P+U3V4CwABBPUBAAAEFAAAAEWPzUoDQRCE7/MUBbnowSCa0yBewga87C5Zf86b
3U4cnHSH7p74+k6C6KWpKqiPrlYw6WifyHLAXgrP9So+aNerTGQWH+9XD6tl+LXYjynTDBfsaJIj
QclOwpbOVJPaJXg6Jj5Aii9DMJ+riOGp8BfLNz/jDq9kvhZ2lZxJY9TCNd38kSuSHOaj08VOF7w5
seM85kJ2pZJqDIt+262bYcBbu22GvmuHl/emsv7/x80pzbiOuA2LptuE8ANQSwMEFAACAAgAZQAc
RZWlZ/DtIwAAAHsAADUAHABjb21wb3NpdGluZy9ib3VuZHMtaW4tZmxpcHBlZC13cml0aW5nLW1v
ZGUtc2FtcGxlLnR4dFVUCQADLtT+Uy7U/lN1eAsAAQT1AQAABBQAAADEW2uTG7ex/c5fwY9SKeDi
/VAlceFpK5YjWSs7qUqlUkNyKE2JS+7lQ5b8629j+FjOEKTWicq2XeYuBwOcAzS6TzewdlHNP6+b
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
5eb/AVBLAwQKAAIAAAA2ABxFrlGEBjQAAAA0AAAANQAcAGNvbXBvc2l0aW5nL2JvdW5kcy1pbi1m
bGlwcGVkLXdyaXRpbmctbW9kZS1zdGRlcnIudHh0VVQJAAPX0/5T19P+U3V4CwABBPUBAAAEFAAA
ACNQUk9DRVNTIFVOUkVTUE9OU0lWRSAtIFdlYlByb2Nlc3MgKHBpZCAzMDQyNCkKI0VPRgpQSwME
FAACAAgAYwAcRcaCQojaAAAAJwEAACYAHABjb21wb3NpdGluZy9jaGVja2VyYm9hcmQtY3Jhc2gt
bG9nLnR4dFVUCQADKtT+UyrU/lN1eAsAAQT1AQAABBQAAABFkE9rwzAMxe/+FIJe2sNKYRkDM3Yp
KeyShGZ/jiWx1c7UtYIkd19/TinbReg90E9PaggcD/INkU5wpJx8qQxfOHZMDkXs46Z6el6bu4Tj
ECJ6UIIRHV0QGGWiJOGKxSmzCBouIZ2Asq6NEfWlseYlp3Oin/QKD/COoltKyhQjsrWcU3F3f+SC
RAXRQXGWbsaLYlK4DjGj3KjIbM2i27fbuu/ho9nXfdc2/dtnXVj/+WE5BQ+3I1ZmUbc7MxKpKA/T
IRKdD3ma9+WoFu4RoaDLDxx5hGVV4cqYX1BLAwQUAAIACABlABxFtLp5tpsjAAD+eQAAIwAcAGNv
bXBvc2l0aW5nL2NoZWNrZXJib2FyZC1zYW1wbGUudHh0VVQJAAMu1P5TLtT+U3V4CwABBPUBAAAE
FAAAAMRbaY8bx7X9zl/BjzKU4tS+GO8lqNVW7MSyRnYCBMFDs9mUGuKQEy6ylV//bjWXYTeL1CQR
HBkwZ9jVVefeusu5t2rsslp82rSb8Wo+3lQPj4t2+W78l2b6er2qm81m/OKxnY0Z5kJ9NW4+NutP
Y4LHD+1i0W6aerWcbUaHkV+Pj//O3v5b9+bfR6+r7funAfDv7ufVYvfQbO5Cta3u4l/u7+Ct79rt
4cPt2sXs7k2zaKpNc/huMl9XD80vq/WHu5+b9aZdLTd39u5psUn1+HjnV8tts9xu7v5U1T/cnz0d
fb+qZmM7m62PWPGvBE9nc4YxHr2awUvtvG3WB5T16iHPt2gmZ1Mcln0SRGLycvwC/j+B/15+NfKr
WTN+++mxOQ75q5ZI8vGLP1fb9mPzFehhDQuNn1T2hz/8Yfw38vfRCPTQ3L1tH06vUkw4whpRPcb4
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
zElNUSgBsjLzUhQSFUoSi9JTSxTKMlPLFRJLFMwNDPQMwEBH1xDO5gIAUEsDBBQAAgAIAJi4G0Xn
rr1fOwAAAEMAAAAvABwAZmFzdC9ldmVudHMvbW91c2V1cC1vdXRzaWRlLWRvY3VtZW50LXN0ZGVy
ci50eHRVVAkAA4DG/lOAxv5TdXgLAAEE9QEAAAQUAAAAy80vLU71zS9LDclXSEvMzElNUSgBsjLz
UhQSFUoSi9JTSxTKMlPLFRJLFEwMDAz0DMBAx9jCFMrkAgBQSwMECgAAAAAAlLgbRQAAAAAAAAAA
AAAAAAwAHABmYXN0L2ZyYW1lcy9VVAkAA3fG/lMw1P5TdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAI
AJS4G0XbCNNCOwAAAD8AAAAvABwAZmFzdC9mcmFtZXMvZnJhbWUtZGlzcGxheS1ub25lLWZvY3Vz
LXN0ZGVyci50eHRVVAkAA3fG/lN3xv5TdXgLAAEE9QEAAAQUAAAAcywpSc0tKFEoyVdIzSssTS1N
VUhUKM8vylbIBEoolGdk5qQqQMQzixWSUjPz0hUKivKTU4uLU1P0uABQSwMECgAAAAAAobgbRQAA
AAAAAAAAAAAAAAwAHABmYXN0L2xvYWRlci9VVAkAA43G/lMw1P5TdXgLAAEE9QEAAAQUAAAAUEsD
BBQAAgAIAJq4G0XbCNNCOwAAAD8AAABSABwAZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNl
dC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2Utc3RkZXJyLnR4dFVUCQAD
g8b+U4PG/lN1eAsAAQT1AQAABBQAAABzLClJzS0oUSjJV0jNKyxNLU1VSFQozy/KVsgESiiUZ2Tm
pCpAxDOLFZJSM/PSFQqK8pNTi4tTU/S4AFBLAwQUAAIACACauBtF2wjTQjsAAAA/AAAAUwAcAGZh
c3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJl
bG9hZC1pbi1wbGFjZS1zdGRlcnIudHh0VVQJAAOExv5ThMb+U3V4CwABBPUBAAAEFAAAAHMsKUnN
LShRKMlXSM0rLE0tTVVIVCjPL8pWyARKKJRnZOakKkDEM4sVklIz89IVCoryk1OLi1NT9LgAUEsD
BBQAAgAIAKG4G0XbCNNCOwAAAD8AAAAtABwAZmFzdC9sb2FkZXIvcmVsb2FkLXBvbGljeS1kZWxl
Z2F0ZS1zdGRlcnIudHh0VVQJAAONxv5Tjcb+U3V4CwABBPUBAAAEFAAAAHMsKUnNLShRKMlXSM0r
LE0tTVVIVCjPL8pWyARKKJRnZOakKkDEM4sVklIz89IVCoryk1OLi1NT9LgAUEsDBAoAAAAAAK24
G0UAAAAAAAAAAAAAAAANABwAZmFzdC9yZWdpb25zL1VUCQADpcb+UzDU/lN1eAsAAQT1AQAABBQA
AABQSwMECgAAAAAArbgbRQAAAAAAAAAAAAAAABcAHABmYXN0L3JlZ2lvbnMvc2Nyb2xsaW5nL1VU
CQADpcb+UzDU/lN1eAsAAQT1AQAABBQAAABQSwMEFAACAAgArbgbRTkBy91AAAAAegAAADUAHABm
YXN0L3JlZ2lvbnMvc2Nyb2xsaW5nL3doZWVsLXNjcm9sbC1hYnNwb3Mtc3RkZXJyLnR4dFVUCQAD
pcb+U6XG/lN1eAsAAQT1AQAABBQAAABzLUvNKwlOzUtJLQooyq+otLJKzs8rycwrzS8t9gXi1ODk
ovycHKdKhcxihbz8EoXM3IKc1FygptQULldKNAMAUEsDBBQAAgAIAK24G0U5AcvdQAAAAHoAAAAu
ABwAZmFzdC9yZWdpb25zL3Njcm9sbGluZy93aGVlbC1zY3JvbGwtc3RkZXJyLnR4dFVUCQADpcb+
U6XG/lN1eAsAAQT1AQAABBQAAABzLUvNKwlOzUtJLQooyq+otLJKzs8rycwrzS8t9gXi1ODkovyc
HKdKhcxihbz8EoXM3IKc1FygptQULldKNAMAUEsDBBQAAgAIAK24G0XkisdDPAAAAD0AAABAABwA
ZmFzdC9yZWdpb25zL3Njcm9sbGluZy93aGVlbC1zY3JvbGxhYmxlLXNpbmdsZS1yZWdpb24tc3Rk
ZXJyLnR4dFVUCQADpcb+U6XG/lN1eAsAAQT1AQAABBQAAABzLUvNKwlOzUtJLQooyq+otLJKzs8r
ycwrzS8t9gXi1ODkovycHKdKhcxihbz8EoXM3IKc1FygptQULgBQSwMECgAAAAAAubgbRQAAAAAA
AAAAAAAAAAkAHABmYXN0L3hzbC9VVAkAA77G/lMw1P5TdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAI
ALm4G0Vy/WXyhQAAAOkAAAAlABwAZmFzdC94c2wvdHJhbnNmb3JtLXhoci1kb2Mtc3RkZXJyLnR4
dFVUCQADvcb+U73G/lN1eAsAAQT1AQAABBQAAACtTjEOwkAM2/uKfKBkYLsZJthAdE7bVJyUu1S5
nNT+noN+gcWybMv2pGmNQh41A5upBVii8A8CIr5UauKCF3LC6/DAgcdbdLzTrtWfXLzgQsVxK4LG
RatNLb69rZ91OjUVJGaGM7Bw4uwQ06rmXXPCQSFAzTS2UVcQpflP4/1Rz/P3RfcBUEsDBBQAAgAI
ALm4G0UFj1WOkwAAANACAAAnABwAZmFzdC94c2wveHNsdC1iYWQtaW1wb3J0LXVyaS1zdGRlcnIu
dHh0VVQJAAO9xv5Tvcb+U3V4CwABBPUBAAAEFAAAAO1POw7CMAzdewpfoHhgywwTbCA6O6krIjlx
lTgS3J5Aj8CGWCzb76P3gqY1ClnUDFyKFgdLFP4Mh4g3lZa44oGM8DhdcGJ/ioZnemqzK1eruFA1
fFTBwlVbCZ3eLxs9zWNMqxYbW4m7/gOJmWEPLJw4G2zo0BG3reCgZfI9gCmI0vxtkKy1hfvbpOtE
hvDv+9N9X1BLAwQUAAIACAC5uBtFgUp3rUsAAACsAAAANAAcAGZhc3QveHNsL3hzbHQtdHJhbnNm
b3JtLXRvLWZyYWdtZW50LWNyYXNoLXN0ZGVyci50eHRVVAkAA77G/lO+xv5TdXgLAAEE9QEAAAQU
AAAAtcyxDYAwDETRPlPcCrRs48AFWXJsZCzmR6JgA+qv97eYp5qUhoOZkSuGGgFTJxbQOOmFW1Kl
G1ty51DXV8TAYdHFvo7iVW375foAUEsDBBQAAgAIAGYAHEUy+vPZ5gIAAPEOAAARABwAZnVsbF9y
ZXN1bHRzLmpzb25VVAkAAy/U/lMw1P5TdXgLAAEE9QEAAAQUAAAAvVZRbxMxDP4veQLRtBPdBCpP
E5sAMQFaB3usfImvly2XRImvW4X47zi5dS3SeEzvKblL/Pn77LN9fnGxur5c/ry6Wb76LQgTJbH4
LRS4DZRV6Iw1Ia+eP77VU2UR4jUqetMaa/NiCjZ0cDI9m3bU23wsYvCRxEJcX35iiOWX79/EROBj
4NOo+f2P8+WS34CiAfiG+Hh9vvzMLzpIq0QaYxQLigP+mRTI4tI0Imjv7LYazH+ZHQ+wgWRUdR1b
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
+2HY+KnrtKX6F+vlXBikohCdC7ZIU3n8rFOkmpUswfW8MZV8uPaSHzkdvmtFnH+uYqvUbJbabvWy
+fLvx08LnHNP8kRP9JZqB84djCTYagrBavaGJBGiS0HhZxtvt7IGQZZox6fDd60+246Ss3z3l93j
87EcXLn5vM5Ztt55WFUhornnHgyEwZYVL6wtoLV3N/n0yF/g1ksUqMfnVhm76yjj3KTL+PD07WE/
9OI7e6+ufW1OOm5UBMxZB2JzeIe+AGi3kTJh8GDQVz+KN7pZI6zpUJ6369Wxmbysju3nHx4+f6ns
Qnnt+6fJl5KMh3WFHxHBjyl4iiUHn4vIzFgwAe/7dNPopktfbhqdcve/UEsDBAoAAgAAACO/G0X2
tlBdZwAAAGcAAAArABwAaHR0cC90ZXN0cy9hcHBjYWNoZS80MDQtbWFuaWZlc3Qtc3RkZXJyLnR4
dFVUCQADwtL+U2vF/lN1eAsAAQT1AQAABBQAAAAjUFJPQ0VTUyBVTlJFU1BPTlNJVkUgLSBXZWJQ
cm9jZXNzIChwaWQgMzAzNDMpCiNFT0YKYm9vdHN0cmFwX2xvb2tfdXAgcmVzdWx0OiB1bmtub3du
IGVycm9yIGNvZGUgKDQ0ZSkKUEsDBBQAAgAIAEy/G0XpK01kuwAAAPQAAAAuABwAaHR0cC90ZXN0
cy9hcHBjYWNoZS80MDQtcmVzb3VyY2UtY3Jhc2gtbG9nLnR4dFVUCQADD9P+U9bF/lN1eAsAAQT1
AQAABBQAAABFj81KA0EQhO/zFAW56MEgBjwM4iVswMvukvXnvNntxMFJd+juia/vJIhemqqC+uhq
BZOO9oksB+yl8Fyv4oN2vcpEZnF1v3p8WIZfi/2YMs1wwY4mORKU7CRs6Uw1qV2Cp2PiA6T4MgTz
uYoYngp/sXzzM+7wSuZrYVfJmTRGLVzTzR+5IslhPjpd7HTBmxM7zmMuZFcqqcaw6LfduhkGvLXb
Zui7dnh5byrr/3/cnNKM64jbsGi6TQg/UEsDBBQAAgAIAGUAHEXHkKbw7SMAAAB7AAArABwAaHR0
cC90ZXN0cy9hcHBjYWNoZS80MDQtcmVzb3VyY2Utc2FtcGxlLnR4dFVUCQADLtT+Uy7I/lN1eAsA
AQT1AQAABBQAAADEW2uPG7fV/q5foY82XGp5vxhtA14TN07teJ20QFEUI2lkD6yV9tXFsfPr38PR
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
+FkV/LyEp1hy8LmIzIwFE/C+j1mNbrr0LavRKTf/D1BLAwQKAAIAAABMvxtFXBLbfzQAAAA0AAAA
KwAcAGh0dHAvdGVzdHMvYXBwY2FjaGUvNDA0LXJlc291cmNlLXN0ZGVyci50eHRVVAkAAw/T/lPW
xf5TdXgLAAEE9QEAAAQUAAAAI1BST0NFU1MgVU5SRVNQT05TSVZFIC0gV2ViUHJvY2VzcyAocGlk
IDMwMzYyKQojRU9GClBLAwQUAAIACABjABxF05Uni7sAAAD0AAAAOAAcAGh0dHAvdGVzdHMvYXBw
Y2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy1jcmFzaC1sb2cudHh0VVQJAAMq1P5TKtT+U3V4
CwABBPUBAAAEFAAAAEWPzUoDQRCE7/MUBbnowSBoLoN4CRvwsrtk/TlvdjtxcNIdunvi6zsJopem
qqA+ulrBpKN9IssBeyk816v4oF2vMpFZfLh/XK2W4ddiP6ZMM1ywo0mOBCU7CVs6U01ql+DpmPgA
Kb4MwXyuIoanwl8s3/yMO7yS+VrYVXImjVEL13TzR65IcpiPThc7XfDmxI7zmAvZlUqqMSz6bbdu
hgFv7bYZ+q4dXt6byvr/HzenNOM64jYsmm4Twg9QSwMEFAACAAgAAAAcRZtHhyW6AAAA9AAAAEUA
HABodHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmctbWFuaWZlc3QtNDA0
LWNyYXNoLWxvZy50eHRVVAkAA2/T/lNv0/5TdXgLAAEE9QEAAAQUAAAARY/NisJAEITv8xQNXvSw
spDTDrIXibCXJCT+nGPS6uDYHbp73Nd3lGW9NFUF9dFVMQzS6wUin+HEicZ8BQ54bIQHVPXFZ/FV
LN2fhVMfIo5gDEcc+IYgqBOThjvmJHcRLNwCnYGTLZ1TG7PwbpXoSvxL3/ABW1RbM5lwjCjeS6Kc
bv7JGYkGar3h0w5PvBqSwb2PCfVFRRHvZk1br8uug13Vll1TV93Pvsys9/8wn8IIrxELNyvrjXMP
UEsDBBQAAgAIAGUAHEWDEkWh8CMAAAB7AABCABwAaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1j
YWNoZS1vbmNoZWNraW5nLW1hbmlmZXN0LTQwNC1zYW1wbGUudHh0VVQJAAMu1P5TLtT+U3V4CwAB
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
40ZFwJx1RDiHd+gLgHYbKRMGDwZ98TOBo5s1wpoO5Xm7Xh2aycvq0H7+4f7uc2UXyktfhE2+lGQ8
rCv8rAp+XsJTLDn4XERmxoIJeN/HrEY3XfqW1eiUm/8HUEsDBAoAAgAAAAAAHEUT3chsNAAAADQA
AABCABwAaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLW1hbmlmZXN0
LTQwNC1zdGRlcnIudHh0VVQJAANv0/5Tb9P+U3V4CwABBPUBAAAEFAAAACNQUk9DRVNTIFVOUkVT
UE9OU0lWRSAtIFdlYlByb2Nlc3MgKHBpZCAzMDM5MykKI0VPRgpQSwMEFAACAAgANgAcReDEjSi7
AAAA9AAAAEUAHABodHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmctcmVz
b3VyY2UtNDA0LWNyYXNoLWxvZy50eHRVVAkAA9fT/lPX0/5TdXgLAAEE9QEAAAQUAAAARY/NSgNB
EITv8xQFuejBIMbTIF7CBrzsLll/zpvdThycdIfunvj6ToLopakqqI+uVjDpaJ/IcsBeCs/1Kj5o
16tMZBZX948Pq2X4tdiPKdMMF+xokiNByU7Cls5Uk9oleDomPkCKL0Mwn6uI4anwF8s3P+MOr2S+
FnaVnElj1MI13fyRK5Ic5qPTxU4XvDmx4zzmQnalkmoMi37brZthwFu7bYa+a4eX96ay/v/HzSnN
uI64DYum24TwA1BLAwQUAAIACABlABxF69GYmvUjAAAAewAAQgAcAGh0dHAvdGVzdHMvYXBwY2Fj
aGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy1yZXNvdXJjZS00MDQtc2FtcGxlLnR4dFVUCQADLtT+
Uy7U/lN1eAsAAQT1AQAABBQAAADEW2uPGzey/a5foY8OvNTw/QhyN+Az8cbZOB4nu8BicdGSWrbg
GWmuHk6cX3+LrceILUqe7BpJEkQzajZ5DlmsOlXk2EVz93E9Xw+Xs+G6uX+4my/eDv/Rjl+tlpN2
vR4+e5hPhwxzyr4Yth/a1cchwcP7+d3dfN1OlovperBv+eXw8M/J2//q3vz34FWzeffYAP65+Xl5
t71v1zeh2TQ38R+3N/DWd/PN/sNt53fTm9ftXdus2/13o9mquW9/Wa7e3/zcrtbz5WJ9Y28eBxs1
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
Oe3DtZf8yPHwTSvi/AMeW6VmY912q5fN5z8fPrZwyj3JIz3RW6odOHcwkmCrKQSr2RuSRIguBYUf
srzeyhoEWaIdHw/ftPpsO0rO8t2fdw/Ph3Jw5ebzOnnaeudhVYWI5p57MBAGW1a8sLaA1t5d5WMs
f4RbL1GgHp5bZeyuo4xzky7jx6dv9/uhF9/ZW3Xp+3vScaMiYM46IpzDO/QFQLuNlAmDB4O++JnA
0c0aYU2H8rxdrw7N5GV1aD//cH/3ubIL5aUvwiZfSjIe1hV+VgU/L+Eplhx8LiIzY8EEvO9jVqOb
Ln3LanTKzf8DUEsDBAoAAgAAAGMAHEX5PE+uNAAAADQAAAA1ABwAaHR0cC90ZXN0cy9hcHBjYWNo
ZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLXN0ZGVyci50eHRVVAkAAyrU/lMq1P5TdXgLAAEE9QEA
AAQUAAAAI1BST0NFU1MgVU5SRVNQT05TSVZFIC0gV2ViUHJvY2VzcyAocGlkIDMwNDU1KQojRU9G
ClBLAwQKAAAAAACjuBtFAAAAAAAAAAAAAAAAEAAcAGh0dHAvdGVzdHMvbWlzYy9VVAkAA5LG/lMw
1P5TdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAKO4G0UVNTWSegAAALwAAAAqABwAaHR0cC90ZXN0
cy9taXNjL3hzbHQtYmFkLWltcG9ydC1zdGRlcnIudHh0VVQJAAOSxv5Tksb+U3V4CwABBPUBAAAE
FAAAAI2OQQ7DIAwE73mFP0Ag7aEVvyHEVSwZjIyR+vwS5QPVXlY7h9kspREnI6mAqqIRPsQIp1mL
3m+P1xpmtvgOIfhCPXvFLkMzdv/tbG5Ph6PSRM0NpXVuwFQRnoCMBavBTZdJ4l0hwqhpnxoTYEnH
f7oqfeTzupcsMS8/UEsDBAoAAAAAAKi4G0UAAAAAAAAAAAAAAAAWABwAaHR0cC90ZXN0cy9uYXZp
Z2F0aW9uL1VUCQADm8b+UzDU/lN1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAqLgbRdsI00I7AAAA
PwAAADcAHABodHRwL3Rlc3RzL25hdmlnYXRpb24vZmFsbGJhY2stYW5jaG9yLXJlbG9hZC1zdGRl
cnIudHh0VVQJAAObxv5Tm8b+U3V4CwABBPUBAAAEFAAAAHMsKUnNLShRKMlXSM0rLE0tTVVIVCjP
L8pWyARKKJRnZOakKkDEM4sVklIz89IVCoryk1OLi1NT9LgAUEsDBAoAAAAAANa4G0UAAAAAAAAA
AAAAAAAUABwAaHR0cC90ZXN0cy9zZWN1cml0eS9VVAkAA/TG/lMw1P5TdXgLAAEE9QEAAAQUAAAA
UEsDBAoAAAAAANa4G0UAAAAAAAAAAAAAAAAqABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvVVQJAAP0xv5TMNT+U3V4CwABBPUBAAAEFAAAAFBLAwQUAAIACADWuBtF
Y6qsbIIAAACoAAAAQAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
L3hzbC1hbGxvd2VkLXN0ZGVyci50eHRVVAkAA/TG/lP0xv5TdXgLAAEE9QEAAAQUAAAALY1BCsMw
DATveYVeEDu9pPgVhb4guBtiUCwjKaX+fU0pe1qG2c1ytsKbF6kEVdFEe2HQ4d5SCMttnePIku4x
xmDIlxbvIUt1VH/++0O45B4UJpdmWDDvjPljTFwqaCUwziHQD9gB+DRoekNtXCeSyp2WOdKOza8x
RJuC7GpN1PGavlBLAwQUAAIACADWuBtFY6qsbIIAAACoAAAAUgAcAGh0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5L3hzbC11bmFmZmVjdGVkLWJ5LXN0eWxlLXNyYy0yLXN0
ZGVyci50eHRVVAkAA/TG/lP0xv5TdXgLAAEE9QEAAAQUAAAALY1BCsMwDATveYVeEDu9pPgVhb4g
uBtiUCwjKaX+fU0pe1qG2c1ytsKbF6kEVdFEe2HQ4d5SCMttnePIku4xxmDIlxbvIUt1VH/++0O4
5B4UJpdmWDDvjPljTFwqaCUwziHQD9gB+DRoekNtXCeSyp2WOdKOza8xRJuC7GpN1PGavlBLAwQU
AAIACADPuBtFYEtmEJEAAAD7AQAARQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC14
c2wtZG9jdW1lbnQtc2VjdXJpdHlPcmlnaW4tc3RkZXJyLnR4dFVUCQAD5cb+U+XG/lN1eAsAAQT1
AQAABBQAAADtjjEOgzAMRXdO4QuEBJZWmWHo0p4BBVMimSSynQpuXzr0Bh2rv76v90LeSqRJY06A
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
BM5jjuEYH/gKwnT6mdhwnoWzCx4T+UE4lvhKjMKStyz9S/p8QAk5/HkD+f9diUaW27vh+R1mjvTE
3xW/beXiDlBLAwQUAAIACADnuBtFaveI2j8AAABCAAAANwAcAG1lZGlhL3ZpZGVvLWVuZGVkLWV2
ZW50LXNsb3ctbW90aW9uLXBsYXliYWNrLWFjdHVhbC50eHRVVAkAAxLH/lMSx/5TdXgLAAEE9QEA
AAQUAAAA43INc/UL0UhOzCvISawsySjKL03P0ORyc/T0sVJIyUxRyMsvUUjNS1FISywGMUDSXK5+
Lgr+bgohrsEhXFwAUEsDBBQAAgAIAOe4G0U3zzqKwwAAAGEBAAA1ABwAbWVkaWEvdmlkZW8tZW5k
ZWQtZXZlbnQtc2xvdy1tb3Rpb24tcGxheWJhY2stZGlmZi50eHRVVAkAAxLH/lMSx/5TdXgLAAEE
9QEAAAQUAAAAvY3BbsIwEETv/oo9NjKLxaGXnkJFIiEQlUoE5yVewMKxEV5T+vckwDdwmR2NZt8g
IphN9LnjZGYkZKrt2mx5t3DyOt/ZeWt+2TMlNp7+YxYUToIXTtlLMh1bR+bqLEfkYNkiXzkIJh//
sIviYsBz/7ij9oR8O3MrbMdyE6W1fvM8tZLJP8bLEnAy+gQ9SFkqUFBtqlXz0VIY+nK8xHw4Fgqf
8YNdKF1P58svsM5CiAJ9CntKgxnaPWM1g58ammrd9Mg7UEsDBBQAAgAIAOe4G0VKXWJNLQAAADEA
AAA5ABwAbWVkaWEvdmlkZW8tZW5kZWQtZXZlbnQtc2xvdy1tb3Rpb24tcGxheWJhY2stZXhwZWN0
ZWQudHh0VVQJAAMSx/5TEsf+U3V4CwABBPUBAAAEFAAAAONyDXP1C9FITswryEmsLMkoyi9Nz9Dk
goim5qWkpgA5fi4K/m4KIa7BIVxcAFBLAwQUAAIACADnuBtFpF9YktEHAABMGgAAPQAcAG1lZGlh
L3ZpZGVvLWVuZGVkLWV2ZW50LXNsb3ctbW90aW9uLXBsYXliYWNrLXByZXR0eS1kaWZmLmh0bWxV
VAkAAxLH/lMSx/5TdXgLAAEE9QEAAAQUAAAAvVndcuO2Fb73U3Dsad1kTFKypK0ledXJ2vK0k3Tb
qT3JZQckQBFrkGAIUJa3ybvn4I8iKVJSp5lmJ0sKOAC+8/sdcO9TmbHVxX1KEIZHRiTy4hSVgsiP
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
VLsjyPkZZjDaAauunr772w8LKO4Y6rr07kM1prRUTy+BBsmO3ZsJFRZ24P8ZG79Xxk7PsNj0SJJ8
fvT+8eS9rJ9fft/knZ2Ba3Z+JflvfNF5aBqAkqv/Eek3UEsDBAoAAAAAAOi4G0UAAAAAAAAAAAAA
AAAJABwAcGxhdGZvcm0vVVQJAAMUx/5TMNT+U3V4CwABBPUBAAAEFAAAAFBLAwQKAAAAAADouBtF
AAAAAAAAAAAAAAAADQAcAHBsYXRmb3JtL21hYy9VVAkAAxTH/lMw1P5TdXgLAAEE9QEAAAQUAAAA
UEsDBAoAAAAAAOi4G0UAAAAAAAAAAAAAAAASABwAcGxhdGZvcm0vbWFjL2Zhc3QvVVQJAAMUx/5T
MNT+U3V4CwABBPUBAAAEFAAAAFBLAwQKAAAAAADouBtFAAAAAAAAAAAAAAAAHAAcAHBsYXRmb3Jt
L21hYy9mYXN0L3Njcm9sbGluZy9VVAkAAxTH/lMw1P5TdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAI
AOi4G0X3P02KbQAAAPcDAAA9ABwAcGxhdGZvcm0vbWFjL2Zhc3Qvc2Nyb2xsaW5nL3Njcm9sbC1k
aXYtbGF0Y2hlZC1kaXYtc3RkZXJyLnR4dFVUCQADFMf+UxTH/lN1eAsAAQT1AQAABBQAAADLzS8t
TvXNL0sNyVdIS8zMSU1RKAGyMvNSFBIVShKL0lNLFMoyU8sVEksUjCz0DMBAR9fQAMrkygUZEJxc
lJ+T41QZnlmSEZ6RmprjmJfim5+bmldSmhuQkVicWoxueElG6qjxo8aPGj8wxgMAUEsDBAoAAAAA
APW+G0UAAAAAAAAAAAAAAAArABwAcHl3ZWJzb2NrZXQud3MubG9nLTI3QXVnMjAxNC0yMzU1NDEt
ZXJyLnR4dFVUCQADbdL+U23S/lN1eAsAAQT1AQAABBQAAABQSwMECgAAAAAA9b4bRQAAAAAAAAAA
AAAAACsAHABweXdlYnNvY2tldC53cy5sb2ctMjdBdWcyMDE0LTIzNTU0MS1vdXQudHh0VVQJAANt
0v5TbdL+U3V4CwABBPUBAAAEFAAAAFBLAwQUAAIACABmABxFhwrRGYYmAABhpAAADAAcAHJlc3Vs
dHMuaHRtbFVUCQADL9T+Uy/I/lN1eAsAAQT1AQAABBQAAADNfWt3G8mN6Hf9ijadpMmID8kzk52I
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
ZC1ldmVudC1zbG93LW1vdGlvbi1wbGF5YmFjay1hY3R1YWwudHh0VVQJAAMuyP5TLsj+U3V4CwAB
BPUBAAAEFAAAAONyDXP1C9FITswryEmsLMkoyi9Nz9DkcnP09LFSSMlMUcjLL1FIzUtRSEssBjFA
0lyufi4K/m4KIa7BIVxcAFBLAwQUAAIACAB9uRtFeQlgbckAAABxAQAAPQAcAHJldHJpZXMvbWVk
aWEvdmlkZW8tZW5kZWQtZXZlbnQtc2xvdy1tb3Rpb24tcGxheWJhY2stZGlmZi50eHRVVAkAAy7I
/lMuyP5TdXgLAAEE9QEAAAQUAAAAxY7NbgIxDITveQofi4IbceDCaVuxSFURSLCCs9m4JWo2QRuH
n7cnC7xDL+PRaPxpEBHMLvrccTJzEjL1fmv2fPh28jqf2XlrNuyZEhtPt5gFhZNgzyl7SaZn6V35
79g6MmdnOSIHyxb5zEEw+XjBLoqLAU8FcKD2D/l64lbYvstVlNb6n2ZQK5n8Y0RVAU7GU9CDVJUC
BfWuXjVvLYWhL8c+5t/jSOEzfrBHSi8+vpYzsM5CiAIlhR9KgxnahbGaw3oBTb1tCvIOUEsDBBQA
AgAIAH25G0VKXWJNLQAAADEAAABBABwAcmV0cmllcy9tZWRpYS92aWRlby1lbmRlZC1ldmVudC1z
bG93LW1vdGlvbi1wbGF5YmFjay1leHBlY3RlZC50eHRVVAkAAy7I/lMuyP5TdXgLAAEE9QEAAAQU
AAAA43INc/UL0UhOzCvISawsySjKL03P0OSCiKbmpaSmADl+Lgr+bgohrsEhXFwAUEsDBBQAAgAI
AH25G0W7HSyb1gcAAFQaAABFABwAcmV0cmllcy9tZWRpYS92aWRlby1lbmRlZC1ldmVudC1zbG93
LW1vdGlvbi1wbGF5YmFjay1wcmV0dHktZGlmZi5odG1sVVQJAAMuyP5TLsj+U3V4CwABBPUBAAAE
FAAAAL1Z3XLjthW+91Nw7GndZExSsqStJXnVydrytJN026k9yWUHJEARa5BQAEiWt8m75+CPIilS
UqeZZidLCjgAvvP7HXDvc1WwxcV9ThCGR0EUCtIcCUnUx+uNysK7axiW6p2RxcWM0fL1JphtqaSK
4OA/FwH8p8hOhZikXCBFeTkLSl6SuZlKuMBEhAlXihezYLjeBRjeCZ5f/Hpht3ObpJxxMQuuBqOp
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
f65iq9Rsltpu9bL58u/HTwucc0/yRE/0lmoHzh2MJNhqCsFq9oYkEaJLQeFnG2+3sgZBlmjHp8N3
rT7bjpKzfPeX3ePzsRxcufm8zlm23nlYVSGiueceDITBlhUvrC2gtXc3+fTIX+DWSxSox+dWGbvr
KOPcpMv48PTtYT/04jt7r659bU46blQEzFkHYnN4h74AaLeRMmHwYNBXP4o3ulkjrOlQnrfr1bGZ
vKyO7ecfHj5/qexCee37p8mXkoyHdYUfEcGPKXiKJQefi8jMWDAB7/t00+imS19uGp1y979QSwME
FAACAAgAO78bRceQpvDtIwAAAHsAABsAHABXZWJQcm9jZXNzLTMwMzYyLXNhbXBsZS50eHRVVAkA
A/HS/lMu1P5TdXgLAAEE9QEAAAQUAAAAxFtrjxu31f6uX6GPNlxqeb8YbQNeEzdO7XidtEBRFCNp
ZA+slfbVxbHz69/D0WU1I0retEbiANGuhkM+D3l4znMOuXZRzT+vm/VwORuuq7v7ebN4N/xHPX69
Wk7q9Xr45L6ZDhlmkj4d1h/r1echwcO7Zj5v1vVkuZiuB/uWz4eHfydv/6t989+D19Xm/UMD+Hfz
83K+vavXN6HaVDfxH7c38Nb3zWb/4bbNfHrzpp7X1brefzearaq7+pfl6sPNz/Vq3SwX6xt78zDY
qLq/v/HLxaZebNY3P1STV7cnTwcvl9V0aKfT1QEr/kQw5UJijAcvpvBSM2vq1fM+h8F+sAf433zz
zfAJ/O/pwC+n9fDt5/v68PCfWiLJh0/+Xm2aj/VT4L2CjocPU5Tf/Rf592AAvOubt83d8VWKCUdY
I6qGlD0X6jnVI0bIEGEFAF/dDrs4gN8QvvwnLMdIj8TwCaGJi6eDN/X9crU5aawGA1/N58N3q+r+
/fPB4O1yU82Hi+3duF4Nm8VwvakmH4ZPVvVkC698rIeT5RbmcDq82843zf28/tPwl/f1YvjXv4in
8Ppt7n38ebhZ3rcmk9/+U7ac/OJ8Xt2v4dUn+zeG7SuuWVRgNy/uqnf1+vlgz/dk+odo2PtyNpsN
ob+7vKbzenRqjxKTZ/ACfIzgv2dPh3/2PCjvlUWRRYKYtg6ZqAmyxiQsFKaU0L/+ARbX5TQrEQWe
avhs3ozhNb9c1W/r9eb2fXM3mn6GL1srg3eyrQ3/bLTlzgsGvIRDLMqIHNYaWemCl4xGreRvpHlp
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
gxlrV13GLz/enx7OvfjWfJGX5u8Jy7QMYHMWiHAG39BlMNpNIJRrfOjVxTGBi5dVxOpGyfN47Odm
8tzP7ed/P31/LNWF4tJE2OhyjtrBucKxKjhewhFMObiUeaLagAi4bZjV4qV7s6wWSw6/AVBLAwQU
AAIACAAAABxFFNFr1p0jAAD+eQAAGwAcAFdlYlByb2Nlc3MtMzA0MDgtc2FtcGxlLnR4dFVUCQAD
b9P+Uy7U/lN1eAsAAQT1AQAABBQAAADEW2mPG8fR/s5fwY8ylOb2fRhvYvRpK5ZjWSs7AYIgGA6H
EiEuueEhW/71b/XwnGGTWieCLQPmLqen+6nq6qqnqnrtopp/XM/Ww+V0uK4eHuezxdvh35vxq9Wy
btbr4bPH2WTIMMf6i2HzoVl9HBI8fJjN57N1Uy8Xk/VgP/LL4eHf2dv/bN/81+BVtXl3GgD/7n5a
zrcPzfouVJvqLv79/g7e+na22X+47Ww+uXvdzJtq3ey/G01X1UPz83L1/u6nZrWeLRfrO3t3WmxU
PT7e+eVi0yw267vvqvr7+7Ong5fLajK0k8nqgBX/QjBhRmGMBy8m8NJsOmtWe5T18iHPN29GZ1Ps
lz0JIjF5PnwG/x/Bf8+/GPjlpBm++fjYHIb8Q0sk+fDZ36rN7EPzBehhBQsNTyr76quvhv8k/xoM
QA/N3ZvZw/FViglHWCOqhpR9KcyXnIywMUOEAfHg+/thFw3IO4Qv/wHbM9IjMXxGaOLii8Hr5nG5
2pwNVoOBr+bz4dtV9fjuy8HgzXJTzYeL7cO4WQ1ni+F6U9Xvh89WTb2FVz40oIot6HQyfNjONzPQ
yJ+GP79rFsO//Fl8Aa/f59nHH4eb5WNrQvntP2VLyi/O59XjGl59tn9j2L7iZosK7OjFQ/W2WX85
2Mt7th1DNOx9OZ1Oy3vSav85vHDchOH/eR6U98qiyCJBTFuHTNQEWWMSFgpTSuhf/gAL7MhU4YKg
FZ5O1fD5fDaG1/xy1bxp1pv7d7OH0eQjfDl8ls0FZaMBMY223HnBQC7hEIsyIoe1Rla64CWjUSv5
G8W8tnAPemmPqnaPnp/EPYe93xx4B/bwEc7CeDafbcCVjPAIgyiBUkeJicgK7BGjgSFtZEJBKoGp
E1Ir8Qfs2BUFcFZQgNJN3ruukQKCkoFqi0NUUSOlokDMR4yc5AZJy3TAnMHukf9V3N0XHdwTwy5x
N1NzebjgzZfN26r+WELPdHTERY80xWB31nNkEwiTrMNWmaSSM/8V+t2SV7fsOOJcKIqNuBCKSsx6
Qv21+lDd16vZ4yZbd0ks8K2YEImRN4TBcQKxNKMUZBNWGBGDsPw3itVdtCxYd0xHNEPNhWis0oX9
uiYTZ1gSxi1ivN0qDS6CZ7sjDMJLtJYZ+du36row+4eDHdrsESSenrv045f12DCQAg4XRAcKMYse
/RqTHoCBN1PUgTOIXCMjg0HOSEtDUkoxDKC361X2V3d5irMFNZ6Sqr+gJrjWPbX9sK1Wm193miMj
DeOBq4wYAIC4iRMNEdFEOWJCKGS0k4gRHLEI1hOVAMD9x/Wmebh7ORuvIJzdpYNC1nenqctqOj0/
Bw57Ii6BM8ZavwKirtsF/71oNnnCUkig1lqpLEGCigiRL2GkMdWIBAoORhEpCTlT3W7CuytTd7GB
BRWw8VapMPh98/Hh7eqAiYrs2K+6e+9NZMxw5CIBtRqVkKHSoSiUcRLHyKkpwjxfpQtPkQI8JQ/w
6qp+1xzQCXUTnRREKw/2x5JLYH8OQiqxcIa04VxEajQPRXRni5yDo0TqC3CUKnYAlyD+ADFcN6ti
mJee0wjRQRkLyuJKICcih2ChNBUGvgz2pjVaMPdZDXIuF/fN6sMMIlvZLM/feXNfHvO6WS+3K5ji
rgB80BWQF6TW44PUX78sSZu0s84yjxScWfBYUoAXTh5JYriwQA+iwTel/f6xWcDURfC74bMd+MP6
XdC6LoBuaM93fPPioMnsOyg+wnc+MAkRCQEjAtsRniJDwOtiYQ2zXLmo/WffrBOa8tDT846sDF/6
yfxlT1Zb1+D6V5CejD409cu8Yax1l/vf4Je8b0IKJyHboTxSONIJAqf3DHkwVaw5V9LF24KflvmU
vLuFy8N2z3pyjgty0snBrf7yWB8skXA84uyGb1DYecmBbsMmg5hUcgSkyiOvmcAEex9T2XMdF+lC
o00BmhC9LThKOppWkHp/hLx7s1rOwfh4S6o5ydggaAFTocDLUg5WGFtklApI+BQiD+Bbpbvcgler
2QdQ+pl6U7uG369xZTc6YzoycYMvZeIVPaj7VyAnB3WPKGSq13RNLRGCAFuxVIGuA1BlJw0cKCGM
4ikSTuSZrs+n7gKqWAHQhPSUnMPx4Zy8gIRgtYC0+BkRwAng3faz5QaRwIHmkFtShRgjmSUGhaIF
MkwUUTHgpyi5tFpZ1aWR5/IxXl/SBvjS9NKRN95njeeBJAtCE3MKssfkFdBdwSHlci4iLUwKzvEg
rXyKIDBtGTc86MG8dDdwaHBvG0Iz3r69//gwbu3bZEdjdHvyAJgiARmrszUwMATjgDNAvhRisJIo
/hS85/OXgZ+P6EggxrwgwbjpSbB+bJr63WjV1Mu3i1n25Kd12hPb2nz7mU8tJPECknWI7EDUWIJT
qzEIB7lUSklRb1m46Th9tRqfL3HFad63qF6XQJ2/cTGsp4HppQYkpj1Te908LDfNT7Pm51OYpK3l
aTySWWifgOHDZnINFggppEcmQpS3FMh14syBUp6ymZcLXWMt/XEdsaTEBbH2Cf2JHRerMIQAY9Ug
iqQE7DLmYpPJHC0GSRl3cI7ELcr9cOmxmGwKR0VdHJXvckFus9zW7+63j7nKd25nlKkRhynaz5ze
Ql4egbwiIgmkgiGngtEQiBPauwDnn0vyFJXfWPRc4xfDBl1ZigIC9ZicC1htJ7PlaAuGuB7Z/POP
i1xQISPTpovtZybsAdwwcGwEjNMg5rxCVmPwzpJxCBLEJvMJhnyYuyzL8XFPhnFJhubAb19Xk1m1
qJuS0XhGlKOAE043JBbUJAhtAUgvUCaWImyJJjcRt7XTF98/gaN3YXQlEAV/VlHRO83rXAnOgfmZ
as8wBGVlRmQXDamODEvkeda3E2D32T1HoZUQUVslb2fK9/u5rzij/dNBF6Asoe6n929W2/Umfqjm
25ZM27e57r73QjRjt0YFxjWcBdqmecDndADaKoxLNlASiWVPCoCFha5ExMLInmimJNqkJ9qL7++3
q2lVN8NnWgJZysd890NmTTJh4gPk1kC5EVOWIaMNuCcZNdBbwaljt03rMHtZiOPjLnJeQs7H/dC4
39B3sxwId8aEMW1hRxm4AiKVJDglQVK2JMj7IMnl1lJGvPwsYXCP4JsXt03umxc9+eqCfKJfZfxb
s0n3w2eiFY23LJYYAb7Wm1zNylV6zJGVPCAwL20cxD/sbx/1ds4y2PZRB+dY0kucudTWPdJhVmcL
hJU6eWz2qZq3ZpQcmApOCQnMcg0MIoWlGsxIa5WcpxTiye39OKOtn9yVSzxXqNnFuI70Nb+sAuUv
r2a0h8rf2TekTWe10lZGFZF3WXyNE9I5vnMQPhHw3N7I/ymdPT3vSqBKEqh+/yvM1u/tajzbrFpP
kv2aaLev/cwBRhFmmYDYIjFQS+kjpONALanwWlqWwOpuh8TeCte2ozOoK0ldsMS64T1L/LZZjZvV
8kgQc2oCeR2kI0mgqGzKSbZBGn6HJNsHq0MAs7wN/jBpGfXhaRduU0ii6ml1oICT2RpSVKD1hwon
1SN6q1IQADYk3AnyKwGh0USHtAb6lSQTWghJIi5XCrordUBOCqk1m+wbOJlSbib18+cjeSx0ymKh
U+0hRvCrkHtESF4DGInxCVkcAbEzgRuOpaK2m2B3FzjHBpHlMgJwQse9/d71Fn/JoVjusO0YkXXc
MKoN+EUNaZD3kAZJoRGJ4ICMIiJp+kl/kye+nkTnp4Muukunzimve4dt0qzfb5aP6zNPuaPW7WfW
Y2Bglx4DtQY/wTwQOVCrQi7RqKS0TnnytNS0Xejg2vKAaxnqxcCOYFTQgmC5qqR60cpuN+8OoXgX
ryy3lFgK4ZdKcB8BIpfJ5eZgk+UsP/VPokX7ya8GrvywC/qyTwRfNvXhBL55kVKJSyuFpXNAP9uO
KtMud5ETRkE7ySJzhmr2mbj0CUIXeTO5RM6YOSCvtptlCbnNLUUfIQtwOQsmDLLgZCNwHsYwHAEK
aVn3/J1mGnTXqgoAxPgAwL9O99vZppiKwLkLlgJxtzxA8sTA4xoBSaxjwFwU9iEp1wXRna0LxFzm
RHx60Xqzj4+7zngbfAnRcI6y7eXImrhkSKbsBGgMCPymRThZagPzSSj5qer5laa/3z8bdJGZEtx+
QSe3FMJs1dSb5QqyoHzBpq0IklFbdyWJKyB4MqefsI3SYEgkgCpBkheYkylYbD/ZsjjOXzbDzpBz
GSBqXTKGXVWtI8O+9VEtsvsi+0ArrKdaSkAueS7aCwgAhjLkQf+WKu6cC08568fJb7Zdqg5BEHRy
mccJWU8OweylfWX9tyWTDflyi4fMjTqL4cTD4dG52k0xqBpbgg3xv0evoQdy0BXksrIPx2nSc8E/
hNxN4bTdkoM/sxR7CuzHOYEYJx6isvBIBC60Mwq8xudvIf0QrnSqQ0cqVSDYQon++f66WTQ7SljN
78Fiwb8ezY7RXR09cKu5Ywh4ao73EoPXNhEIai4Mcq4sUU8xvcJSZUkKAzuiVaQgWkWmBx/6/pf5
pOg/dVIxQLrqk4ZMQUEKa4hmCOzQC8JC0iSVe9nHCbs4KC7gUHXPcHb16f02Z+XmJoXJmg3MWscg
dgcBnJNhntvsJiDslIqSe4yTf4pmOytcSZbPh3SlUJchUdRSFdhgWm4Xk70Yu4CgOB8Rs6tZgksF
Kki9AyMJuaNlqIMACVyBhETVJ7KY7vzXqeFpzKAL+LJxLyayOriov76ixVsYMiUXgPobD3kXy+0h
m3uG2DLijQ6WqfiZGMkRQQf3lBRc65RUF9p/eFguXlWLZr4+NeNMprRAt0kQhiHutMosECitgUxY
UnBDTDruHfkc5ZhzCNe25zSiJ+S4IOS+DggaGf8KXhUynWOvEd/oNfpolBbAH4GJgdMVGA4NMxSS
/oSxBGZkE+2yoM70XWCFKp6Y8n5f/cfx7D/btqy6q7xQzkYkd4S8sSpG8CPAX3MRW0n4SQJLxECw
ICRj3maOnzzAhwXKej087UI3lxkRmNLxls+HcP/qoFCmMfCfGxkwHFwiuAUX79pbjik7Iq5RwlYR
Y40EYX6nMH3CPehKJkriTnp9n8livS77/gB+SQB/wgQyVwa+FYFUuVxmXWAxRSrcrd7P2cRdXGNc
wDU+bkN2WT995+ezXGouESSHsWlrwC5Xfxgj8JPjyGaqDQebGJY+zyWaSyQdQQgrCEJMv2y66/Pk
udpWy65JSvdN0lzOStE6zSArIfkWANOEIWfBlJRViTLFvU/4k4Ggnft6DGgfd9GbgnkASz5sw6ze
1vmOnz3sATcjcuNACKVZYFggnO9gskCAKvCkEPERkmujBOW462R6K3TQsYYV0DV93e4ccXuRoU1a
sochjmouXb4bz2MG4pE2xgCBJpQIRRnj5r/27rtnHai8cKtK8jE5nLP6+fNqPDuW1uTN63kBNkaa
xCBXBrsGwgWkwMKvIV+/4BQLGnlXi+fTd3GNaQnX8cIlnM/ZYnrM3bkAD21uQMvLU4j9kPoBaWEp
t7W5w4hwSYhLWhpavjnYWagLsbmkpVJgc6Ig8euSC5DgeKPL+ShPrm3yIk0UUCeCJbBVHjROn42D
HCAMuiCrAnLJe/b5uJqd98tGr/Lvu1u5uiW1TKvWBwhI9ryLAWXsYLnAcI3kEiXNBLAqLJwinz0v
OqIpjzw+7kquSpKrYyVru6ifeFGWpuANt8ACMIMAk3vcWoCtUyJ5hPjJ5ZWrqMclesAmBWA17vHC
8fIh//nQrh5vsu4xxLJ8JTp3qVuHEZFhnqIYgwxGJoUtfQolcbBGUZHwoIu0UJmRotF9Bvtuu3g/
W7zdr3hsIjDWJpnaRSBTYP/B5/u7uT5oc22Lcp7/4ITx6NOTLmt1l7ni97qDuuI0BXGk7F/RKlmo
fXMPXIudXY83maNKgZLN/i+3Sx02GHmlFZwDBk4o/n73geHBoCtUwdUrRnqS5qi2nR33S5NRrkdB
eKQefCSSOtejPGStJvcEmAnCcSG4Z/apl+t+fHE91P/Yae4CvEIYAJ50OK/5mvPr5u1svYG9L91Z
VtFjCnmSyBcDgabEnO9F5AgWVupolYx/4A3tLvSu5Loo+biQKDYw5eGPJdo7FLL1yhB5hVbcIpmy
m6LttSKG27uECTvFidVP27LdElf/Zqsw9rpfPh/RFbjkV9T0yKx/Wc83p/upbJS5yIV3ZnvvzDlR
SjqNDPDc/OcBwEmETLmTBl46Wcl56jKR8+m7uKYFqqlpv2Pz9X12Bjv97yBQ5kLLM0jO0xMD0wPS
jwLNlQtgAETcNj2Y8Uq97L57sHWJymtGjr3HXUozni/r9+tjA9LcpnJw1r3zDIlc5WTKBWRzK9J6
rwREewGKvJU/nS/WAWtYQZ01rwvlp+OB2/HWvYljpkYye6b2h0ztopDKCoqkUrDDRMKuq//v7dqW
Izdy7Lv+JTV5vzzm1XZs944jejwxbxN1VWutLmmkbq/77wdIllhMMqskr2sn/KB2kUECZCZwAByA
rhBV4HFbZpPi4Xp8iJMslzD2fHUbvV8CD2PkepE7RCHj42F/f/ftecwggscfWHX4DwRcFjArVmMi
q0QCgcxG50mGpcA5h4iFq8vkruV9zuURFyfetCpsenqNcfrz7svjb7v9/cNY4eKwdS+1+BjQJoKt
YhYTiz45YmHDkiAFEicM17KftJ3fqRVzteuIuZ57+TXE/MeV8HF1AJT9ZUpNG9JRjDvNk0K0B+hd
YmesV9hKXuA/C0Evc2/w6mbXP8d2mp3W6rPuLaftmP78+XDXc4dCag1eIZIcGVaQGTKaUyTMKKtM
8Qy8+ZVCj1GCRm7kuS3ktmzsPNo8Pn2fLhZ72UrBvlJGJEqyQ5Ij5ns8o5YoY7JPLGhmeb8frLnP
TMTOigZn/Cri0+rLLT+5IXrBC0VbpIJAkaigsGgqDLEmM8IjV9azZESwrReaXLwVynTWr130mw4Z
2YE5MPVFLHqsGHOSUjS4qQKxDiIFU8CI+pCSZ/K9UGC4/qWM8Jw/AIJ2VuuKjY80fPCfulxcRnmk
RRMbsW0mSEeC1xAkZHizAGG4sfI/lKY8iXjTKrHtaGbVJH1ywixaXcxBZfSrFjvSLCaXKVPEO4AO
xUY4koRKSS+yJz3IAgLonlRj/faH8o9Pn1fPu37mVPrgJISzPCY0cMUSmwA6FeV5LJFzFq7V5teK
0argeEcFN6//x+fVy+dhjsbu+UhnH2gANUEhGTIGU9a+YDtrcgbJVBC7WCQwCMV5NEZE0QsCOqu/
c7Mz+6BzZqPeRi1zR/DjqSkWVgiYp+d/Po9ZZEEvmkJqi4VgLhHlkKXrCiM+UUqkclRwlrj07owp
nN2qFXTV2bqbtVnSRh525RPs/ycc4lJhi3QVstSlrZmmSiSSMDUhYHWSYFOBkD/T5LRWWrzL/ixv
cyb0XZzXKLU1HRO/X7MOBsW+e1xQeujmo+bWYGgFKCUzLwlnEivLYJMcB7gCkTBNCQy7zepNyImX
Ph8I49GbVr7OjthvdL/F6eX74evn3cv9y7zBib0m7xkCSSdzKtyDO6AuIiCo3TGKGJ+kCtybyPTV
4+OhkenTUsJlt9N4UvsoNks+mmXMdWsXXx8fH9aPvw9dKn8b/mfZqJKiKqB+IBTr88JAqBMilwTQ
qE7RqezfIq5MLn+hV+V4xk0r+aqjjhrbVTbfnl5OkIP3S3v8aAcc4DtAG54g9QnMN/zLZupI5kIV
L4PjZlbJmF6+lavTe2XZdn+mCWXfsAWO7ShMVR6mxQ1DYcdzZDJVIlZI3hMdXQTbxGiw9l3dKG9R
BpbntSrtOipxqy9Fn3/9dGLiKzUEn/UvGjbHcLAPJ9kAqhY0Q7SSYoL9Q3POUlIV4/Viz5MkZ6ho
n3rce9Cvs13AJ4yl44/3L5t31469KYwbALXeSVBZV/Z0pgBTuAaMUJQK/ylQNhG8UVjozoYSZs7w
+rA63PnXGWuVOkyP1OHqULlIrlpFX3BKi7CoJxgIlSisXdC0XD91OBXpDIKanNEqbZekCyuVmVXM
xxdtOWxNemHyk5IiUOUzicUrgjVzsCQKJyNxriRjCMUvpYB6b8Z20gX44+tSROw4jNy5P9z98vX+
oT+IQlvGOSfUaWwqZJjTjCCnwo5dFxWnsTVxZy47E23bEc30eFF/v9/uHl8bVJwbmOaKWg5Qhuhk
EX8ZgdxAHE3ivQpWFWv1m5agXvg8JqiHG6Fdp4HeujWb4EgIyOLz96cTzxnzb5exZPCAl2mEaCtY
iLuih7gVSfRZxOCRJUV1OYclZ7drpe1AGLvi8yLXqeL4018rGRl924mF6R2lwmK10RYsRYCcnkpO
lPAiGWeVlfKNNrqzqex66KYVj/VkvjSiAMfYoI9ApChVYVIDpLA4kEKEYEigOZKssgoFsBaT4k86
iOkZreidwUB2Lcbiye9fHvgJV9SgqbMm6Ot8jZKoK0joFcnjEC6IohJm5wzN2JUAr8DMUuqT69+0
MnTWwXo9b0D6cXf/ZYuTHqapDB8Ljci5UtiaLiz3ODzQEs2yVcLqaN+Xyjhe/MxYluFgK/Ra9YTW
r09zuONtGJ+ndreXupAcl0Z5tBUWoQMPjrikISq1WQYfwfW4Wbjf3qEVbt95oluI+HfNKv2t5u9e
4ZmuchSfmQBhEZp57DJQYOYhoDGRx8gg4ineXM2f1/ufGQ9TjzVabVeuo9Vq/2rdvqw2nx9P/uxy
rjAUITimk7N1AEEtoGPHIYTDQC4YGZJM/QB5cpdWug4VDH4cbW+6X90dHl++3m8+QgyKAzXP08Ks
koChUiQ0cRCOBg1mQipSsvVo7Ax4lXYxXL56K2iHqAI/jkSVh9W3w6l9TkqOtTV+gflgWPQFtpzC
GWwcM+BRaXC/FCJ5G2Rs3O/pQU7vMxOwg9e2e3piZfzv/WFMVonLaTTODBVJaMKTr9MUAJ+CTiR7
H7iIVNMkzhAzTndpxNt1xgnYnV5MY8qwsaSq8UH9W+uQBWnSjGhN/TDKxQfElI7yTHlx4o0u/D8U
H/h8JvLMjT77TlOUo7uxePDyL3igO/H6vN1tr9LqXsOBlF0MYIATDjQCNBKJh31GlNKwq8B8aDer
tDaXv2llWPcEG/f7Dz+VfrOWpIla3Mq1Ixg8k9MgjKGqOBmYtW+MYXt/VWOUoJV7v7QEji06Sh4B
hb68otDaGFDXyjHXTaktCoACyxR8QoLYyjvs+DLGuUTBSmt3DVp3A4XPdzSNpzSKso5Bxia+2U5Y
rza/fnuaZp7Y7XFW0+0wq0kHraIEHQ12ZVQaLJhmgHTCJka9j/Dzu1hLszs1xKV67KYVVXbk3y6q
sJvVw2r9sPvlZfdc5zoNEx1OE5ocbGmpnALUgfOvDIb9CEZjiLZ2l8hE/9QYymnmoyfMmeRH79T2
AWyX8ZcTW3bizT4efjthQnOxSbnkbAOgFJJDzYJildbpTJIwEAjJBBEjm5NmJ5dvBNPbZYHL6f18
ZdWdGldPX78NLMQ6uGiApyxwqakjKWekJXFDXLScaJ4hXjWUOxevsX+mEpyJISZnNDpa2tFxrecz
RJZdNw68Sa1ksGQgAs8aCWYepxNbcL1WwWNPVAcI0by/vO4up8/iX/ppM7feLTNIbkP5LLfw6+75
sBtDdk4VvZV2yDj3fbUMYNxEFKRonnDYFJiB4jiRTHqadM6pcmTOphimN7xpZRM9gefzc7oM19d1
xVUdN1G4FDjjk3KGsBGkC0oprM9Rb3AerefXWFc/t6IsqKwz9XRHPTUCph8+/NJlHmtwJdlr4jL2
nwVwmV4Z7CdXPkuZo3qjnvoHJnj+0nsrnaqX2+j58Cz0k3cPNb9yy4aUnB36ecHTuwhekmDfPo4+
scRqRomC0I+XKJmQ6v+swHCsFbgTVjmAgz2rNMUPlZ9WIbRVrM6tVTxqg8R4jhkrdHeMZxKlcMw7
RZ3+E7yL48GbVsiOod+d+s6R5blp0kJN4T3TyJ0XICCn4J5dAPfsAdTxIrUVXIgYzySA2su2MqmO
THs6t38fapgwSaYId4ulxPoXE7OmwLPE1mhjscJhkCHEAYDy6BwzmaXEroepW2nO5WSn59y06nVs
/p6NORgckT0aTJy1XWFS31oWBeGCiY5EhgN4LYe3ogGEOCqU1ylhTNvvYfje62cFMZare8XWvWLI
MW9gb+UxR04rKzhGuC0HOQq8EhzCHXButCBcOOMpj8blci0cNIpxPgu2yCCsNnLpB+DHsU/oX3D/
1QFw7mkCNb8YXTIpguEIcoo0OMPLwuOHnVGoAsuUmG9bXE7vYH6nRswt77yJLZ+PF39ZHbZYXuyx
NoxwyWtBgjbYhmU87Fiw75JxrxUDsSO95EmbS7eyGdqRzdAOA2BW7cC2HCw211maApYDQpWkMEYr
GZZtxqSBZ7CXIWY35UqF5s6JM32WTmi1o/Oq5v3h1yaAwexoLRir2kCZIE7RnhNTo7Xs2dASaoUX
OgklBLVXQZtTKRqbf/i10aqmeBZaMT72Jf7946efH77d3R9eiSu9wgqFjYu9tWD+cUBdwkE5mZOk
i0qSF8feGK31/ubEvjhTlda8w61a8+2yVfrh8fnT98MG+Q32OC7nGBOIAMhNJQLYWyHeAbhsEgXz
lApoqAAkyquX8EZ5ztmp4+FW105deo0vb6TRvjw+/Hbrem8N688pAn72CE4FKwW3fiQ0BMVslDZw
0YZh7dUaQSqVfC6IWMw3vTBuXMcQSopoejCv7cBVOaUsGiZmtJTgtS8nMv7YDPG1NEsTv95RofnC
i/2A31W639Rir6bTGVeRWhWpkQRsO7jWKBKYdXBpYDuTiIGHJNn/w0o5iXTeqb2ecdPqJztKL0Z6
/bx73j8+f8Eho9NCN6v8+cqdDwkMlubItq5NCuDOJNpmH3Hkozfavqt7rHOjM7HM8sRWMd3Z9LtT
g97vq+cTobJxgNqbaLGXLCNk9Qz2gwmeyJIoBdzqFZ1l0CeXakVwriOCW3JtN48rjNBN7cWrXfUl
Opo44QFTEBmWP+yEQFRmGoBB5IG/kcLDS55bCXBoJuYyab7eC9UrTLYTSYaqFGNYnzQJotvkADfU
srXAZlRqNNHeCe6xHz3bdw9Nf3ssyeK0qUobrpcltg0u6mUedfOAZWHAaq5WBvnt8Q2YVAKH5y4K
dv0DRPOsRMz9e8mZZf6Ndi90YPFCfBib+HAjOlHWRvBFo3d5a04VLZIlD+F4UoiOFCcBfBbEtTY5
z3B4Pfuzc6qmL6u84/zZSY3eZr/EUBusWPIBbTyu/2dz6r3HgYyXKnOwZwRzEMEVaRPsm0qTl4UA
KPaKleTgl3brTq/fCLbqhDSblbQzID1tHW/iXhc8o1wS/NIXAIaEwZUFf1oMdfiBoXwG3S+u20ol
dx2p9BgErl++nKahNIBM4iTkmImkOAFOKUasDLBCksrCgQsz8yczuVQrgu49GC1ONcDD3X2XD261
jJK6BMgdpxZbkYnDfK+XEHVKHPIgZ3Xq6bUaIXpJic3OzLtwtquvq+3ua113L5va9TV8TINjSb1O
azCqUGxiMKmGnYDwsKE+c58Mh5gz8HcZLeTYptcbnQ9CF6e1SnX6Frds8em2H38auad8Ajy00ola
/BYN1RbesOAE+zFwwl5UVJkI4OMagcR4+3PfoekQU7e84wm3gs0Lnx938L6OPOkjic5QMxCMNWze
nAvs6GBg9Wgc5S040r+ztUoYCkHg9ZI1r5KcGXx/PHrTqrPu6KhsZU7UTOaQdOh9/ollwYILmK4G
36nBWsC7i4TTwpJOLNFYrpVOnQjRit+Z7bqVm/kHD2P57+H7Ydj4qeu0pfoX6+VcGKSiEJ0LtkhT
OXzWKVLNSpbget6YSj5e+5wfOR6+aUVcfq5iq9Riltpu9bz5/F/DpwVec0/ySE/0lmoHzh2MJNhq
CsFq9oYkEaJLQeFnG6+3skZBztGOj4dvWn22HSUX+e7Pu4enoRxcufm8zlm23nlYVSGiueceDITB
lhUvrC2gtXdX+fTIj3DrcxSoh6dWGbvrKOPcrMv48Pj1fj/24jt7qy59bU46blQEzFkHYnN4h74A
aLeRMmHwYNAXP4o3uVkjrOlQnrfr1dBMXlZD+/mH+7vPlV0oL33/NPlSkvGwrvAjIvgxBU+x5OBz
EZkZCybgfZ9umtz03JebJqfc/BtQSwMEFAACAAgAAAAcRdjCMVygIwAA/nkAABsAHABXZWJQcm9j
ZXNzLTMwNDA5LXNhbXBsZS50eHRVVAkAA2/T/lMu1P5TdXgLAAEE9QEAAAQUAAAAxFtrjxvHsf3O
X8GPMpTm9vth3Jugn7ZiJ5a1shMgCC6Gw6E0EJfc8CFb+fW3evhYzrBJbRLBkQFzl9PTfaq6uupU
Va9dVotPm3YzXs3Hm+rhcdEu343/0kxfr1d1s9mMXzy2szHDHJuvxs3HZv1pTPD4oV0s2k1Tr5az
zegw8uvx8d/Z23/r3vz76HW1ff80AP7d/bxa7B6azV2ottVd/Mv9Hbz1Xbs9fLhdu5jdvWkWTbVp
Dt9N5uvqoflltf5w93Oz3rSr5ebO3j0tNqkeH+/8arltltvN3Z+q+of7s6ej71fVbGxns/URK/6V
4KYREmM8ejWDl9p526wPKOvVQ55v0UzOpjgs+ySIxOTl+AX8fwL/vfxq5FezZvz202NzHPJXLZHk
4xd/rrbtx+Yr0MMaFho/qewPf/jD+G/k76MR6KG5e9s+nF6lmHCENaJqTNnXwnzNYQ0sxwgrAPzD
/biPBuQdw5d/he2Z6IkYvyA0cfHV6E3zuFpvzwar0chXi8X43bp6fP/1aPR2ta0W4+XuYdqsx+1y
vNlW9Yfxi3VT7+CVjw2oYgc6nY0fdottCxr53fiX981y/Pv/FV/B6/d59umn8Xb12JlQfvt32ZLy
i4tF9biBV18c3hh3r7h2WYEdvXqo3jWbr0cHec+2Y4zGgy/n83l5Tzrtv4QXTpsw/h/Pg/JeWRRZ
JIhp65CJmiBrTMJCYUoJ/f1/wQJ7MklaEFTS+VyNXy7aKbzmV+vmbbPZ3r9vHyazT/Dl+EU2F5SN
BsQ02nLnBQO5hEMsyogc1hpZ6YKXjEat5L8o5rWFB9CrEvQq79HLJ3HPYR82B96BPXyEszBtF+0W
XMkETzCIEih1lJiIrMAeMRoY0kYmFKQSmDohtRL/hR27poD5pQLmVJC8d30jBQQlA9UWh6iiRkpF
gZiPGDnJDZKW6YA5g90j/6m4+y/Occ914XDNzbS+PFzw5vfNu6r+VELPdHTERY80xWB31nNkEwiT
rMNWmaSSM/8W+v2SV7fsNKIn1FTooVAE43roMf5Yfazu63X7uM3WXRILG4MJkRh5QxgcJxBLM0pB
NmGFETEIy/9FsfqLlgXrjxmdS8Ga+kI0Inhhv67JxBmWhHGLGO+2SoOL4NnuCIPwEq1lRv7rW3Vd
mMPD0R6tAqCyqc6t7vSlrgwDKeBwQXSgELPoya8x6QEYeDNFHTiDyDUyMhjkjLQ0JKUUwwB6t1ln
f3WXpzhbUOM5qYYLaoJrPVDbj7tqvf3nXnNkomE8cJUJAwAQN3GiISKaKEdMCIWMdhIxgiMWwXqi
EgC4/7TZNg9337fTNYSzu3RUyObuaeqymp6enwOHPRGXwBljnV8BUTfdgv+3bLZ5wlJIoNZaqSxB
gooIkS9hpDHViAQKDkYRKQk5U91+wrsrU/exgQUVsPFOqTD4Q/Pp4d36iImK7NivunvvTWTMcOQi
AbUalZCh0qEolHESx8ipKcI8X6UPT5ECPCWP8Oqqft8c0Ql1E50URCsP9seSS2B/DkIqsXCGtOFc
RGo0D0V0Z4ucg6NE6gtwlCp2BJcg/gAx3DTrYpiXntMI0UEZC8riSiAnIodgoTQVBr4M9qY1WjD3
tgY5V8v7Zv2xhchWNsvzd97el8e8aTar3RqmuCsAH/UF5AWp9fQo9Tffl6RN2llnmUcKzix4LCnA
CyePJDFcWKAH0eCb0v7w2Cxh6iL4/fB2D/64fh+0rgugGzrwHd++Omoy+w6KT/CdD0wagREmDGxH
eIoMAa+LhTXMcuWi9l98s57QlIc+Pe/JyvCln8xfDmS1dQ2ufw3pyeRjU3+fN4x17vLwG/yS901I
4SRkO5RHCkc6QeD0niEPpoo150q6eFvwp2U+J+9+4fKw/bOBnNOCnHR2dKu/PtZHSyQcTzi74RsU
dl5yoNuwySAmlRwZBpTVayYwwd7HVPZcp0X60GhTgCbEYAtOkk7mFaTenyDv3q5XCzA+3pFqTjI2
CFrAVCjwspSDFcYWGaUCEj6FyAP4Vukut+D1uv0ISj9Tb+rW8Ic1ruxGb0xPJm7wpUy8okd1/xPI
yVHdEwqZ6jVdU0uEIMBWLFWg6wBU2UkDB0oIo3iKhBN5puvzqfuAKlYANCMDJedwfDwnryAhWC8h
LX4BfGvC4N3us+MGkcCB5pBbUoUYI5klBoWiBTJMFFEx4OcoubRaWdWlkefyMV5f0gb40gzSkbfe
Z43ngSQLQhNzCrLH5BXQXcEh5XIuIi1MCs7xIK18jiAwbRk3PBjAvHQ3cGjwYBtCM929u//0MO3s
22RHY3R38gCYIgEZq7M1MDAE44AzQL4UYrCSKP4cvOfzl4Gfj+hJIKa8IMG0GUiweWya+v1k3dSr
d8s2e/KndboT29l895lPLSTxApJ1iOxA1FiCU6sxCAe5VEpJUW9ZuOk4fbWeni9xxWned6jelECd
v3ExbKCB+aUGJKYDU3vTPKy2zc9t88tTmKSd5Wk8kVlon4Dhw2ZyDRYIKaRHJkKUtxTIdeLMgVKe
s5mXC11jLcNxPbGkxAWxdDMg3sUqDCHAWDWIIikBu4y52GQyR4tBUsYdnCNxi3I/XHosBvnRJR51
cVT+lAty29Wufn+/e8xVvnM7o0xNOEzRfeb0FvLyCOQVEUkgFQw5FYyGQJzQ3gU4/1yS56j8xqLn
Gr8YNurLUhQQqMfsXMBqN2tXkx0Y4mZi888/LXNBhUxMly52n5mwB3DDwLERME6DmPMKWY3BO0vG
IUgQm8xnGPJx7rIsp8cDGaYlGZojv31TzdpqWTclo/GMKEcBJ5xuSCyoSRDaApBeoEwsRdgSTW4i
7mqnr354Bkfvw+hLIAr+rKJicJo3uRKcA/ML1Z1hCMrKTMg+GlIdGZbI86xvJ8Dus3uOQishorZK
3s6U7w9zX3FGh6ejPkBZQj1M79+ud5tt/Fgtdh2Ztu9y3f3ghWjGbo0KjGs4C7RL84DP6QC0VRiX
bKAkEsueFQALC12JiIWRA9FMSbTZQLRXP9zv1vOqbsYvtASylI/5/ofMmmTCxAfIrYFyI6YsQ0Yb
cE8yaqC3glPHbpvWcfayEKfHfeS8hJxPh6HxsKHv2xwI98aEMe1gRxm4AiKVJDglQVK2JMj7IMnl
1lJGvPwiYfCA4NtXt03u21cD+eqCfIIN5Ptzs0334xeiE413LJYYAb7Wm1zNylV6zJGVPCAwL20c
xD/sbx/1bs4y2O5RD+f0vK1w+tKwwZEObZ0tEFbq5bHZp2remVFyYCo4JSQwyzUwiBSWajAjrVVy
nlKIJ7f344y2fnZXLvFcoWYX43rS1/yyCpS/vJrRHit/Z9+QLp3VSlsZVUTeZfE1Tkjn+M5B+ETA
c3sj/6N09ul5XwJVkkCpIUluNx/setpu150nyX5NdNvXfeYAowizTEBskRiopfQR0nGgllR4LS1L
YHW3Q+JghWvb0RvUl6QuWGLd8IElftesp816dSKIOTWBvA7SkSRQVDblJNsgDb9Dku2D1SGAWd4G
f5y0jPr4tA+3KSRR9bw6UsBZu4EUFWj9scJJ9YTeqhQEgA0Jd4L8SkBoNNEhrYF+JcmEFkKSiMuV
gv5KPZCzQmrNZnNzpByb7ax++XIiT4VOWSx0qgPECH4Vco8IyWsAIzE+IYsjIHYmcMOxVNT2E+z+
AufYILJcRgBO6HSw3/ve4q85FMs9tj0jso4bRrUBv6ghDfIe0iApNCIRHJBRRCRNP+tv8sTXk+j8
dNRHd+nUOb3or8yazYft6nFz5in31Lr7zHoMDOzSY6DW4CeYByIHalXIJRqVlNYpT56XmnYLHV1b
HnAtQ70Y2BOMCloQLFeV1CBa2d32/TEU7+OV5ZYSSyH8UgnuI0DkMrncHGyynOWn/lm06DD51cCV
H/ZBG1UA3dTHE/j2VUolLq0Uls4B/ew6qky73EVOGAXtJIvMGarZF+LSTxD6yJvZJXLGzBF5tduu
Sshtbin6CFmAy1kwYZAFJxuB8zCG4QhQSMv65+9pplF/raoAQEyPAPybdL9rt8VUBM5dsBSIu+UB
kicGHtcISGIdA+aisA9JuT6I/mx9IOYyJ+Lzi9abfXzcd8a74EuIhnOUbS9H1sQlQzJlJ0BjQOA3
LcLJUhuYT0LJz1XPrzT9/eHZqI/MlOAOCzq5pRDadVNvV2vIgvIFm64imO/jZIaXuAKCJ3P6Cdso
DYZEAqgSJHmBOZmCxfazLYvT/GUz7A05lwGi1iVj2FfVejIcWh/VMrsvcgi0wnqqpQTkkueivYAA
YChDHvRvqeLOufCcs36a/GbbpeoRBEFnl3mckPXsGMy+t6+t/65ksiFfbvGQuVFnMZx4ODw6V7sp
BlVjS7Ah/rfoNQxAjvqCXFb24TjNBi74x5C7KZx2W3L0Z5ZiT4H9OCcQ48RDVBYeicCFdkaB1/jy
LaQfw5VOdehJpQoEWygxPN/fNMtmTwmrxT1YLPjXk9kxuq+jB241dwwBT83xXmLw2iYCQc2FQc6V
Jeo5pldYqixJYWBPtIoURKvI/OhDP/y6mBX9p04qBkhXfdKQKShIYQ3RDIEdekFYSJqkci/7NGEf
B8UFHKoeGM6+Pn3Y5qzc3KQwWbOBWesYxO4ggHMyzHOb3QSEnVJRco9x8s/RbG+FK8ny+ZC+FOoy
JIpaqgIbTKvdcnYQYx8QFOcTYvY1S3CpQAWpd2AkIXe0DHUQIIErkJCo+kwW05//OjV8GjPqA75s
3IvZ/qZbtok/vqbFWxgyJReA+hsPeRfL7SGbe4bYMuKNDpap+IUYyQlBD/ecFFzrnFQX2n94WC1f
V8tmsXlqxplMaYFukyAMQ9xplVkgUFoDmbCk4IaYdNw78iXKMecQrm3P04iBkNOCkIc6IGhk+k/w
qpDpnHqN+Eav0UejtAD+CEwMnK7AcGiYoZD0J4wlMCObaJ8F9abvAytU8cScD/vqP03bf+y6suq+
8kI5m5DcEfLGqhjBjwB/zUVsJeEnCSwRA8GCkJxvVD/nAB8XKOv1+LQP3VxmRGBKp1s+H8P966NC
mcbAf25kwHBwieAWXLzrbjmm7Ii4RglbRYw1EoT5jcL0E+5RXzJREnc26PvMlptN2fcH8EsC+BMm
kLky8K0IpMrlMusCiylS4W71fs4m7uOa4gKu6Wkbssv6+U9+0eZSc4kgOYxNVwN2ufrDGIGfHEc2
U2042MSw9GUu0Vwi6QlCWEEQYoZl032fJ8/VtVr2TVJ6aJLmclaK1mkGWQnJtwCYJgw5C6akrEqU
Ke59wp8NBN3c12NA97iP3hTMA1jycRvaelfnO372uAfcTMiNAyGUZoFhgXC+g8kCAarAk0LER0iu
jRKU476TGazQQ8caVkDXDHW7d8TdRYYuackehjiquXT5bjyPGYhH2hgDBJpQIhRljJt/27vvn/Wg
8sKtKsmn5HjO6pcvq2l7Kq3Jm9fzAmyMNIlBrgx2DYQLSIGFX0O+fsEpFjTyvhbPp+/jmtISrtOF
Szif7XJ+yt25AA9tbkDLy1OI/ZD6AWlhKbe1ucOIcEmIS1oaWr452FuoD7G5pKVSYPNEQeI3JRcg
wfFGl/NRnlzX5EWaKKBOBEtgqzxonL4YBzlCGPVBVgXkkg/s83HdnvfLJq/z7/tbubojtUyrzgcI
SPa8iwFl7GC5wHCN5BIlzQSwKiycIl88LzqhKY88Pe5LrkqSq1Mla7esn3lRlqbgDbfAAjCDAJN7
3FqArVMieYT4yeWVq6inJQbAZgVgNR7wwunqIf/50L4eb7LuMcSyfCU6d6k7hxGRYZ6iGIMMRiaF
LX0OJXGwRlGR8KCPtFCZkaLRQwb7frf80C7fHVY8NREY65JM7SKQKbD/4PP93VwftLm2RTnPf3DC
ePTpWZe1+stc8Xv9QX1xmoI4Ug6vaJUs1L69B67Fzq7Hm8xRpUDJZv+X26UOG4y80grOAQMnFH+7
+8DwYNQXquDqFRv+bUyOarv2tF+aTHI9CsIj9eAjkdS5HuUhazW5J8BMEI4LwT2zz71c99Or66H+
p15zF+AVwgDwpON5zdec3zTv2s0W9r50Z1lFjynkSSJfDASaEnO+F5EjWFipo1Uy/hdvaPeh9yXX
RcmnhUSxgSmPfyzR3aGQnVeGyCu04hbJlN0U7a4VMdzdJUzYKU6sft6W7Ze4+jdbhbHX/fL5iL7A
Jb+i5idm/etmsX26n8ommYtceGd28M6cE6Wk08gAz81/HgCcRMiUO2ngpZOVnKc+Ezmfvo9rXqCa
mg47Nt/cZ2ew1/8eAmUudDyD5Dw9MTA9IP0o0Fy5AAZAxG3Tgxmv1Mvu+wdbl6i8ZuTUe9ynNNPF
qv6wOTUgzW0qB2fdO8+QyFVOplxANrcirfdKQLQXoMhb+dP5Yj2whhXUWfO6UH46Hbg9bz2YOGZq
IrNn6n7I1C4KqaygSCoFO0zk//d2bctxIzn2Xf+S2rxfHvPaM7H2Tkd4e2LeNupqa1suaSS7t/33
C2RVsZhksqTerp3oB7mLDBIgM4ED4ACEt25cIarA47bMJsXD7fgQF1muYezp6jZ6Pwcexsj1LHeI
Qsanw/7h8/eXIYMIHv/IqsN/IOCygFmxGhNZJRIIZDY6TzIsBc45RCxcXSd3ze+zlEecnXjXqrDp
6TXE6S+7r0+/7fYPj0OFi8PWvdbiY0CbCLaKWUws+uSIhQ1LghRInDBcy37SdnqnVszVriPmeurl
1xDzn1bCx9UBUPbXMTXtmI5i3GmeFKI9QO8SO2O9wlbyAv9ZCHqZe4NXN7n+Ettpclqrz7q3nLZD
+vPnw+eeOxRSa/AKkeTIsILMkNGcImFGWWWKZ+DNbxR6DBI0ciPPbSa3ZUPn0ebp+cd4sdjrVgr2
lTIiUZIdkhwx3+MZtUQZk31iQTPL+/1gzX0mInZWNDjjs4jPq6/3/OKG6BUvFG2RCgJFooLCoqkw
xJrMCI9cWc+SEcG2Xmh08VYo01m/1rpZowRmZI/MgbEvYtFjxZiTlKLBTRWIdRApmAJG1IeUPJPv
hQLH61/LCE/5AyBoZ7Wu2PBIwwf/qcvFZZRHWjSxEdtmgnQkeA1BQoY3CxCGGyv/RWnKi4h3rRLb
jmZWjdInF8yi1dUcVEa/arEjzWJymTJFvAPoUGyEI0molPQse9KDLCCA7kk11G9/Kv/49GX1sutn
TqUPTkI4y2NCA1cssQmgU1GexxI5Z+FWbX6tGK0KjndUcNP6f3xZvX45ztHYvZzo7EcaQE1QSIaM
wZS1L9jOmpxBMhXELhYJDEJxHo0RUfSCgM7q79xsYR90zmzU26h57gh+vDTFwgoB8/TyXy9DFlnQ
q6aQ2mIhmEtEOWTpusKIT5QSqRwVnCUuvVswhZNbtYKuOlt3szZz2sjjrnyC/f+MQ1wqbJGuQpa6
tDXTVIlEEqYmBKxOEmwqEPJnmpzWSot32Z/5bRZC39l5jVJb0zHx+zXrYFDsu8cFpY/dfNTcGwyt
AKVk5iXhTGJlGWyS4wBXIBKmKYFht1m9CTnx0suBMB69a+Xr7Ij9bJrCqcXp9cfh25fd68PrtMGJ
nZP3DIGkkzkV7sEdUBcRENTuGEWMT1IF7k1k+ubx8bGR6dNcwnm303BS+yg2cz6aZcx1axffnp4e
10+/H7tU/vP4P/NGlRRVAfUDoVifFwZCnRC5JIBGdYpOZf8WcWV0+Su9Kqcz7lrJVx111NCusvn+
/HqBHLxf2uMnO+AA3wHa8ASpT2C+4V82U0cyF6p4GRw3k0rG+PKtXJ3eK8u2+4UmlH3DFji1ozBV
eZgWNwyFHc+RyVSJWCF5T3R0EWwTo8Had3WjvEUZmJ/XqrTrqMStvhZ9/u3ThYmv1DH4rH/RsDmG
g304yQZQtaAZopUUE+wfmnOWkqoYbxd7XiRZoKJ96nHvQb/OdgGfMJSOPz68bt5dO/amMG4A1Hon
QWVd2dOZAkzhGjBCUSr8q0DZSPBGYaE7G0qYKcPrw+rw2Z9nrFXqMD1Rh6tD5SK5ahV9wSktwqKe
YCBUorB2QdNy+9ThWKQFBDU6o1XazkkXViozqZgPL9py2Jr0yuQnJUWgymcSi1cEa+ZgSRRORuJc
ScYQil9LAfXejO2kC/DH81JE7HgcufNw+PzLt4fH/iAKbRnnnFCnsamQYU4zgpwKO3ZdVJzG1sQt
XHYi2rYjmunxov7+sN09nRtUnDsyzRW1HKAM0cki/jICuYE4msR7Fawq1uo3LUG98DImqIcboV2n
gd66NRvhSAjI4suP5wvPGfNv17Fk8ICXaYRoK1iIu6KHuBVJ9FnE4JElRXVZwpKT27XSdiCMXfFp
ketScfzr3yoZGX3bhYXpHaXCYrXRFixFgJyeSk6U8CIZZ5WV8o02usVUdj1014rHejJfG1GAY2zQ
RyBSlKowqQFSWBxIIUIwJNAcSVZZhQJYi0nxJx3E+IxW9M5gILsWQ/Hk96+P/IIratDUWRP0PF+j
JOoKEnpF8jiEC6KohNk5QzN2JcArMJOU+uj6d60MnXWwXk8bkP6ye/i6xUkP41SGj4VG5FwpbE0X
lnscHmiJZtkqYXW070tlnC6+MJbleLAVeq16Quvz0zze8T4Mz1O7+2tdSI5LozzaCovQgQdHXNIQ
ldosg4/getwk3G/v0Aq37zzRLUT8u2aV/lbzd2d4pqscxWcmQFiEZh67DBSYeQhoTOQxMoh4ijc3
8+f1/gvjYeqxRqvtynW0Wu3P1u3ravPl6eLPrucKQxGCYzo5WwcQ1AI6dhxCOAzkgpEhydQPkEd3
aaXrUMHgx8H2pofV58PT67eHzUeIQXGg5jItzCoJGCpFQhMH4WjQYCakIiVbj8bOgFdpF8P1q7eC
dogq8ONAVHlcfT9c2uek5Fhb41eYD4ZFX2DLKZzBxjEDHpUG90shkrdBxsb9Xh7k+D4TATt4bbun
F1bG/zwchmSVuJ5G48xQkYQmPPk6TQHwKehEsveBi0g1TWKBmHG5SyPerjNOwJ6mao5zIBk2llQ1
Pqh/ax2yIE2aEa2pP45y8QExpaM8U16ceKML/w/FBz4vRJ650WffaYpydDcUD17/CQ90J87P2933
Kq3uHA6k7GIAA5xwoBGgkUg87DOilIZdBeZDu0mltbn8XSvDuifYsN9/+mvpN2tJmqjFrVw7gsEz
OQ3CGKqKk4FZ+8YYtvdXNQYJWrn3c0vg2Kyj5AlQ6OsZhdbGgLpWTrluSm1RABRYpuATEsRW3mHH
lzHOJQpWWrtb0LobKLzc0TSc0ijKOgYZm/gmO2G92vz6/XmceWL3p1lN98dZTTpoFSXoaLAro9Jg
wTQDpBM2Mep9hJ/fxVqa3KkhLtVjd62osiP/dlaF3aweV+vH3S+vu5c61+k40eEyocnBlpbKKUAd
OP/KYNiPYDSGaGt3iUz0T42hHGc+esIsJD96p7YPYDuPv5zYsgtv9unw2wUTmqtNyiVnGwClkBxq
FhSrtE5nkoSBQEgmiBjZlDQ7unwjmN7OC1xO76crq+7UuHr+9v3IQqyDi47wlAUuNXUk5Yy0JG6I
i5YTzTPEq4Zy5+It9s9YgoUYYnRGo6OlHR3XejpDZN5148Cb1EoGSwYi8KyRYOZxOrEF12sVPPZE
dYAQzfvr6+56+iz+Wz9t5ta7eQbJbSif5BZ+3b0cdkPIzqmi99IeM859Xy0DGDcRBSmaJxw2BWag
OE4kk54mnXOqHJnFFMP4hnetbKIn8HR+Tpfhel5XXNVxE4VLgTM+KWcIG0G6oJTC+hz1BufRen6L
dfVzK8qMyjpRT3fUUwNg+unDL13msQZXkr0mLmP/WQCX6ZXBfnLls5Q5qjfqqX9ggucvvbfSqXq5
jZ4Oz0I/+fmx5lfu2TElZ4/9vODpXQQvSbBvH0efWGI1o0RB6MdLlExI9X9W4HisFbgTVjmAgz2r
NMYPlZ9WIbRVrM6tVTxqg8R4jhkrdHeMZxKlcMw7RZ3+E7yL08G7VsiOod9d+s6R5blp0kJN4T3T
yJ0XICCn4J5dAPfsAdTxIrUVXIgYFxJA7WVbmVRHpj2d2r8PNUwYJVOEu8dSYv2LiVlT4Flia7Sx
WOEwyBDiAEB5dI6ZzFJit8PUrTRLOdnxOXeteh2bv2dDDgZHZA8GE2dtV5jUt5ZFQbhgoiOR4QBe
y+GtaAAhjgrldUoY0/Z7GH70+llBjPnqXrF1rxhyyhvYe3nKkdPKCo4RbstBjgKvBIdwB5wbLQgX
znjKo3G53AoHDWIsZ8FmGYTVRs79APw49An9E+6/OgDOvUyg5lejSyZFMBxBTpEGZ3hZePywMwpV
YJkS822Ly+UdTO/UiLnlnTex5dPx4q+rwxbLiz3WhhEueS1I0AbbsIyHHQv2XTLutWIgdqTXPGlz
6VY2QzuyGdphAEyqHdiWg8XmOktTwHJAqJIUxmglw7LNmDTwDPYyxOym3KjQ3Dlxos/cCa12dFrV
fDj82gQwmB2tBWNVGygTxCnac2JqtJY9O7aEWuGFTkIJQe1N0OZYisbmH35ttKopnplWjA99iX//
+Onnx++fHw5n4kqvsEJh42JvLZh/HFCXcFBO5iTpopLkxbE3Rmu9vzmxL85YpTXvcKvWfDtvlX58
evn047BBfoM9jcs5xQQiAHJTiQD2Voh3AC6bRME8pQIaKgCJ8uYlvEGeJTt1Otzq2qlLr/HlDTTa
16fH3+5d761h/TlFwM8ewalgpeDWj4SGoJiN0gYu2jCsvVojSKWSTwURs/mmV8aN6xhCSRFND+a1
Hbgqp5RFw8SMlhK89vVExh+bIb6WZm7i1zsqNJ95sZ/wu0oPm1rs1XQ84ypSqyI1koBtB9caRQKz
Di4NbGcSMfCQJPt/WCkXkZad2vmMu1Y/2VF6NtLr593L/unlKw4ZHRe6WeXPV+58SGCwNEe2dW1S
AHcm0Tb7iCMfvdH2Xd1jnRstxDLzE1vFdGfT7y4Ner+vXi6EysYBam+ixV6yjJDVM9gPJngiS6IU
cKtXdJJBH12qFcG5jghuzrXdPK0wQje1F6921ZfoaOKEB0xBZFj+sBMCUZlpAAaRB/5GCg8vubQS
4NBEzHnSfL0XqleYbCeSHKtSjGF90iSIbpMD3FDL1gKbUanRRHsnuMd+9GzfPTT97bEks9PGKm24
npfYNrio53nUzSOWhQGruVoZ5PenN2BSCRyeuyjY9Q8QzbMSMffvJWeW+TfavdCBxSvxYWziw43o
RFkbwWeN3uWtOVW0SJY8hONJITpSnATwWRDX2uQ8w+H17M/OqRq/rPKO8ycnNXqb/RxDbbBiyY9o
42n935tL7z0OZLxWmYM9I5iDCK5Im2DfVJq8LARAsVesJAe/tFt3fP1GsFUnpNmspJ0A6XHreBP3
uuAZ5ZLgl74AMCQMriz402Koww8M5QV0P7tuK5XcdaTSQxC4fv16mYbSADKJk5BjJpLiBDilGLEy
wApJKgsHLsxMn8zoUq0IuvdgtLjUAA+fH7p8cKtllNQlQO44tdiKTBzme72EqFPikAc5qVOPr9UI
0UtKbHZm2oWzXX1bbXff6rp73dSur+PHNDiW1Ou0BqMKxSYGk2rYCQgPG+oz98lwiDkDf5fRQo5t
Ot9oOQidndYq1elb3LK9m32XZuCe8hHw0EonavFbNFRbeMOCE+zHwAl7UVFlIoCPWwQSw+2XvkPT
IaZueccTbgWbFj4/7uB9nXjSJxKdoeZIMNaweXMusKODgdWjcZS34Ej/ztYqYSgEgbdL1pwlWRh8
fzp616qz7uiobGVO1EzmMenQ+/wTy4IFFzBdDb5Tg7WAdxcJp4UlnViisdwqnToSohW/M9t1Kze7
aZBU/uP4/TBs/NR12lL9i/VyLgxSUYjOBVukqTx+1ilSzUqW4HremEo+XHvJj5wO37Uizj9XsVVq
Nkttt3rZfPn346cFzrkneaIneku1A+cORhJsNYVgNXtDkgjRpaDws423W1mDIEu049Phu1afbUfJ
Wb77y+7x+VgOrtx8XucsW+88rKoQ0dxzDwbCYMuKF9YW0Nq7m3x65C9w6yUK1ONzq4zddZRxbtJl
fHj69rAfevGdvVfXvjYnHTcqAuasA7E5vENfALTbSJkweDDoqx/FG92sEdZ0KM/b9erYTF5Wx/bz
Dw+fv1R2obz2/dPkS0nGw7rCj4jgxxQ8xZKDz0VkZiyYgPd9uml006UvN41OuftfUEsDBBQAAgAI
AAAAHEUb5e/bnCMAAP55AAAbABwAV2ViUHJvY2Vzcy0zMDQxMC1zYW1wbGUudHh0VVQJAANv0/5T
LtT+U3V4CwABBPUBAAAEFAAAAMRbaY8bN7b9rl+hjw48VHNfgrwJuCaeOBPH7WQGGAweSqVqu2C1
1E+LE+fXv8vS0qoSJXdmjCQJom4Vizz38i7nXrLtopp/XLfr8fJuvK7uH+bt4u34H8301WpZN+v1
+NlDOxszzAn+Ytx8aFYfxwSP79v5vF039XIxW4/2I78cH/45eftf3Zv/Hr2qNu8eB8A/Nz8v59v7
Zn0Tqk11E/9xewNvfddu9h9u285nN6+beVOtm/13k7tVdd/8sly9v/m5Wa3b5WJ9Y28eF5tUDw83
frnYNIvN+ub7qv7h9uTp6OWymo3tbLY6YMW/EiwrpTDGoxczeKm9a5vVHmW9vM/zzZvJyRT7ZR8F
kZg8Hz+D/0/g3+dfjPxy1ozffHxoDkP+qSWSfPzs79Wm/dB8AXpYwULjR5V9/fXX43+Rf49GoIfm
5k17f3yVYsIR1oiqMWVfCvMlhzWwGSMMiEc/3I77aEDeMXz5T9ieiZ6I8TNCExdfjF43D8vV5mSw
Go18NZ+P366qh3dfjkZvlptqPl5s76fNatwuxutNVb8fP1s19RZe+dCAKrag09n4fjvftKCRv4x/
edcsxn/9H/EFvH6bZ59+HG+WD50J5bf/ki0pvzifVw9rePXZ/o1x94prFxXY0Yv76m2z/nK0l/dk
O8ZoPPjy7u6uvCed9p/DC8dNGH/leVDeK4siiwQxbR0yURNkjUlYKEwpoX/9EyywL1NdErS+u1Pj
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
cLarb6vt7ltdd6+b2vV1/JgGx5J6ndZgVKHYxGBSDTsB4WFDfeY+GQ4xZ+DvMlrIsU3nGy0HobPT
WqU6fYtbtnez79IM3FM+Ah5a6UQtfouGagtvWHCC/Rg4YS8qqkwE8HGLQGK4/dJ3aDrE1C3veMKt
YNPC58cdvK8TT/pEojPUHAnGGjZvzgV2dDCwejSO8hYc6d/ZWiUMhSDwdsmasyQLg+9PR+9addYd
HZWtzImayTwmHXqff2JZsOACpqvBd2qwFvDuIuG0sKQTSzSWW6VTR0K04ndmu27lZjcNksp/HL8f
ho2fuk5bqn+xXs6FQSoK0blgizSVx886RapZyRJczxtTyYdrL/mR0+G7VsT55yq2Ss1mqe1WL5sv
/378tMA59yRP9ERvqXbg3MFIgq2mEKxmb0gSIboUFH628XYraxBkiXZ8OnzX6rPtKDnLd3/ZPT4f
y8GVm8/rnGXrnYdVFSKae+7BQBhsWfHC2gJae3eTT4/8BW69RIF6fG6VsbuOMs5NuowPT98e9kMv
vrP36trX5qTjRkXAnHUgNod36AuAdhspEwYPBn31o3ijmzXCmg7lebteHZvJy+rYfv7h4fOXyi6U
175/mnwpyXhYV/gREfyYgqdYcvC5iMyMBRPwvk83jW669OWm0Sl3/wtQSwMEFAACAAgAUgAcRbS6
ebabIwAA/nkAABsAHABXZWJQcm9jZXNzLTMwNDU3LXNhbXBsZS50eHRVVAkAAwzU/lMu1P5TdXgL
AAEE9QEAAAQUAAAAxFtpjxvHtf3OX8GPMpTi1L4Y7yWo1VbsxLJGdgIEwUOz2ZQa4pATLrKVX/9u
NZdhN4vUJBEcGTBn2NVV5966y7m3auyyWnzatJvxaj7eVA+Pi3b5bvyXZvp6vaqbzWb84rGdjRnm
Qn01bj42609jgscP7WLRbpp6tZxtRoeRX4+P/87e/lv35t9Hr6vt+6cB8O/u59Vi99Bs7kK1re7i
X+7v4K3v2u3hw+3axezuTbNoqk1z+G4yX1cPzS+r9Ye7n5v1pl0tN3f27mmxSfX4eOdXy22z3G7u
/lTVP9yfPR19v6pmYzubrY9Y8a8ET2dzhjEevZrBS+28bdYHlPXqIc+3aCZnUxyWfRJEYvJy/AL+
P4H/Xn418qtZM3776bE5Dvmrlkjy8Ys/V9v2Y/MV6GENC42fVPaHP/xh/Dfy99EI9NDcvW0fTq9S
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
SwECHgMUAAIACAArvxtFu9f9MLoAAAD0AAAAQAAYAAAAAAABAAAApIH5vAAAYWNjZXNzaWJpbGl0
eS9hY2Nlc3NpYmlsaXR5LW5vZGUtbWVtb3J5LW1hbmFnZW1lbnQtY3Jhc2gtbG9nLnR4dFVUBQAD
0tL+U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGUAHEV2lmH54SYAACKFAAA9ABgAAAAAAAEA
AACkgS2+AABhY2Nlc3NpYmlsaXR5L2FjY2Vzc2liaWxpdHktbm9kZS1tZW1vcnktbWFuYWdlbWVu
dC1zYW1wbGUudHh0VVQFAAMu1P5TdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAAK78bRUVLJmg0
AAAANAAAAD0AGAAAAAAAAQAAAKSBheUAAGFjY2Vzc2liaWxpdHkvYWNjZXNzaWJpbGl0eS1ub2Rl
LW1lbW9yeS1tYW5hZ2VtZW50LXN0ZGVyci50eHRVVAUAA9LS/lN1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABbvxtFnTmklrsAAAD0AAAANwAYAAAAAAABAAAApIEw5gAAYWNjZXNzaWJpbGl0eS9h
Y2Nlc3NpYmlsaXR5LW5vZGUtcmVwYXJlbnQtY3Jhc2gtbG9nLnR4dFVUBQADLdP+U3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAGUAHEUqdzdS7SMAAAB7AAA0ABgAAAAAAAEAAACkgVznAABhY2Nl
c3NpYmlsaXR5L2FjY2Vzc2liaWxpdHktbm9kZS1yZXBhcmVudC1zYW1wbGUudHh0VVQFAAMu1P5T
dXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAAW78bRdcaYPk0AAAANAAAADQAGAAAAAAAAQAAAKSB
twsBAGFjY2Vzc2liaWxpdHkvYWNjZXNzaWJpbGl0eS1ub2RlLXJlcGFyZW50LXN0ZGVyci50eHRV
VAUAAy3T/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAPABxFms71pNoAAAAnAQAAOQAYAAAA
AAABAAAApIFZDAEAYWNjZXNzaWJpbGl0eS9hY2Nlc3NpYmlsaXR5LW9iamVjdC1kZXRhY2hlZC1j
cmFzaC1sb2cudHh0VVQFAAON0/5TdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAZQAcRRvl79uc
IwAA/nkAADYAGAAAAAAAAQAAAKSBpg0BAGFjY2Vzc2liaWxpdHkvYWNjZXNzaWJpbGl0eS1vYmpl
Y3QtZGV0YWNoZWQtc2FtcGxlLnR4dFVUBQADLtT+U3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAA
AA8AHEUo5egbZwAAAGcAAAA2ABgAAAAAAAEAAACkgbIxAQBhY2Nlc3NpYmlsaXR5L2FjY2Vzc2li
aWxpdHktb2JqZWN0LWRldGFjaGVkLXN0ZGVyci50eHRVVAUAA43T/lN1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAA2ABxFTBX0dtoAAAAnAQAASgAYAAAAAAABAAAApIGJMgEAYWNjZXNzaWJpbGl0
eS9hZGphY2VudC1jb250aW51YXRpb25zLWNhdXNlLWFzc2VydGlvbi1mYWlsdXJlLWNyYXNoLWxv
Zy50eHRVVAUAA9fT/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABlABxFrEbieJgjAAD+eQAA
RwAYAAAAAAABAAAApIHnMwEAYWNjZXNzaWJpbGl0eS9hZGphY2VudC1jb250aW51YXRpb25zLWNh
dXNlLWFzc2VydGlvbi1mYWlsdXJlLXNhbXBsZS50eHRVVAUAAy7U/lN1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAIAAAA2ABxFA1YjCmcAAABnAAAARwAYAAAAAAABAAAApIEAWAEAYWNjZXNzaWJpbGl0
eS9hZGphY2VudC1jb250aW51YXRpb25zLWNhdXNlLWFzc2VydGlvbi1mYWlsdXJlLXN0ZGVyci50
eHRVVAUAA9fT/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABjABxFACTpTtoAAAAnAQAAPwAY
AAAAAAABAAAApIHoWAEAYWNjZXNzaWJpbGl0eS9hbHQtdGFnLW9uLWltYWdlLXdpdGgtbm9uaW1h
Z2Utcm9sZS1jcmFzaC1sb2cudHh0VVQFAAMq1P5TdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
ZQAcRfBNth+cIwAA/nkAADwAGAAAAAAAAQAAAKSBO1oBAGFjY2Vzc2liaWxpdHkvYWx0LXRhZy1v
bi1pbWFnZS13aXRoLW5vbmltYWdlLXJvbGUtc2FtcGxlLnR4dFVUBQADLtT+U3V4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAgAAAGMAHEXxyZ0qZwAAAGcAAAA8ABgAAAAAAAEAAACkgU1+AQBhY2Nlc3Np
YmlsaXR5L2FsdC10YWctb24taW1hZ2Utd2l0aC1ub25pbWFnZS1yb2xlLXN0ZGVyci50eHRVVAUA
AyrU/lN1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABlABxFAAAAAAAAAAAAAAAACwAYAAAAAAAA
ABAA7UEqfwEAYW5pbWF0aW9ucy9VVAUAAy7U/lN1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABl
ABxFAAAAAAAAAAAAAAAADgAYAAAAAAAAABAA7UFvfwEAYW5pbWF0aW9ucy8zZC9VVAUAAy7U/lN1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAvvxtFAWDuSNoAAAAnAQAAOQAYAAAAAAABAAAApIG3
fwEAYW5pbWF0aW9ucy8zZC9jaGFuZ2UtdHJhbnNmb3JtLWluLWVuZC1ldmVudC1jcmFzaC1sb2cu
dHh0VVQFAAPa0v5TdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAZQAcRa3/X/ieIwAA7nkAADYA
GAAAAAAAAQAAAKSBBIEBAGFuaW1hdGlvbnMvM2QvY2hhbmdlLXRyYW5zZm9ybS1pbi1lbmQtZXZl
bnQtc2FtcGxlLnR4dFVUBQADLtT+U3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAAC+/G0UHsxw0
ZwAAAGcAAAA2ABgAAAAAAAEAAACkgRKlAQBhbmltYXRpb25zLzNkL2NoYW5nZS10cmFuc2Zvcm0t
aW4tZW5kLWV2ZW50LXN0ZGVyci50eHRVVAUAA9nS/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CABivxtFGvDJzNoAAAAnAQAAOwAYAAAAAAABAAAApIHppQEAYW5pbWF0aW9ucy8zZC9tYXRyaXgt
dHJhbnNmb3JtLXR5cGUtYW5pbWF0aW9uLWNyYXNoLWxvZy50eHRVVAUAAzfT/lN1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABlABxFApQeQZAnAAAXjAAAOAAYAAAAAAABAAAApIE4pwEAYW5pbWF0
aW9ucy8zZC9tYXRyaXgtdHJhbnNmb3JtLXR5cGUtYW5pbWF0aW9uLXNhbXBsZS50eHRVVAUAAy7U
/lN1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAABivxtFzgtP92cAAABnAAAAOAAYAAAAAAABAAAA
pIE6zwEAYW5pbWF0aW9ucy8zZC9tYXRyaXgtdHJhbnNmb3JtLXR5cGUtYW5pbWF0aW9uLXN0ZGVy
ci50eHRVVAUAAzfT/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAPABxFCo13k9oAAAAnAQAA
NQAYAAAAAAABAAAApIET0AEAYW5pbWF0aW9ucy8zZC9yZXBsYWNlLWZpbGxpbmctdHJhbnNmb3Jt
LWNyYXNoLWxvZy50eHRVVAUAA43T/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABlABxF2MIx
XKAjAAD+eQAAMgAYAAAAAAABAAAApIFc0QEAYW5pbWF0aW9ucy8zZC9yZXBsYWNlLWZpbGxpbmct
dHJhbnNmb3JtLXNhbXBsZS50eHRVVAUAAy7U/lN1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAAAP
ABxFXE31RGcAAABnAAAAMgAYAAAAAAABAAAApIFo9QEAYW5pbWF0aW9ucy8zZC9yZXBsYWNlLWZp
bGxpbmctdHJhbnNmb3JtLXN0ZGVyci50eHRVVAUAA43T/lN1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAA2ABxF3FZ2QdkAAAAnAQAAOAAYAAAAAAABAAAApIE79gEAYW5pbWF0aW9ucy8zZC9zdGF0
ZS1hdC1lbmQtZXZlbnQtdHJhbnNmb3JtLWNyYXNoLWxvZy50eHRVVAUAA9fT/lN1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABlABxF8otkvJojAAD+eQAANQAYAAAAAAABAAAApIGG9wEAYW5pbWF0
aW9ucy8zZC9zdGF0ZS1hdC1lbmQtZXZlbnQtdHJhbnNmb3JtLXNhbXBsZS50eHRVVAUAAy7U/lN1
eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAAA2ABxFd/4+VWcAAABnAAAANQAYAAAAAAABAAAApIGP
GwIAYW5pbWF0aW9ucy8zZC9zdGF0ZS1hdC1lbmQtZXZlbnQtdHJhbnNmb3JtLXN0ZGVyci50eHRV
VAUAA9fT/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABjABxFItFrN9oAAAAnAQAAOQAYAAAA
AAABAAAApIFlHAIAYW5pbWF0aW9ucy8zZC90cmFuc2Zvcm0tb3JpZ2luLXZzLWZ1bmN0aW9ucy1j
cmFzaC1sb2cudHh0VVQFAAMq1P5TdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAZQAcRamZElOd
IwAA/nkAADYAGAAAAAAAAQAAAKSBsh0CAGFuaW1hdGlvbnMvM2QvdHJhbnNmb3JtLW9yaWdpbi12
cy1mdW5jdGlvbnMtc2FtcGxlLnR4dFVUBQADLtT+U3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAA
AGMAHEWc8MZ6ZwAAAGcAAAA2ABgAAAAAAAEAAACkgb9BAgBhbmltYXRpb25zLzNkL3RyYW5zZm9y
bS1vcmlnaW4tdnMtZnVuY3Rpb25zLXN0ZGVyci50eHRVVAUAAyrU/lN1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAvvxtFzCvIHtkAAAAnAQAALgAYAAAAAAABAAAApIGWQgIAYW5pbWF0aW9ucy9h
ZGRlZC13aGlsZS1zdXNwZW5kZWQtY3Jhc2gtbG9nLnR4dFVUBQAD2dL+U3V4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAGUAHEU74LLGmSMAAO55AAArABgAAAAAAAEAAACkgddDAgBhbmltYXRpb25z
L2FkZGVkLXdoaWxlLXN1c3BlbmRlZC1zYW1wbGUudHh0VVQFAAMu1P5TdXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgACAAAAL78bReW4hOZnAAAAZwAAACsAGAAAAAAAAQAAAKSB1WcCAGFuaW1hdGlvbnMv
YWRkZWQtd2hpbGUtc3VzcGVuZGVkLXN0ZGVyci50eHRVVAUAA9nS/lN1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACABivxtFm3BSLtoAAAAnAQAANgAYAAAAAAABAAAApIGhaAIAYW5pbWF0aW9ucy9h
ZGRpdGl2ZS10cmFuc2Zvcm0tYW5pbWF0aW9ucy1jcmFzaC1sb2cudHh0VVQFAAM30/5TdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAZQAcRUxXh0FCJwAACYoAADMAGAAAAAAAAQAAAKSB62kCAGFu
aW1hdGlvbnMvYWRkaXRpdmUtdHJhbnNmb3JtLWFuaW1hdGlvbnMtc2FtcGxlLnR4dFVUBQADLtT+
U3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAAGK/G0Vm5QGbZwAAAGcAAAAzABgAAAAAAAEAAACk
gZqRAgBhbmltYXRpb25zL2FkZGl0aXZlLXRyYW5zZm9ybS1hbmltYXRpb25zLXN0ZGVyci50eHRV
VAUAAzfT/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAPABxFzCvcVdoAAAAnAQAAOAAYAAAA
AAABAAAApIFukgIAYW5pbWF0aW9ucy9hbmltYXRpb24tYWRkLWV2ZW50cy1pbi1oYW5kbGVyLWNy
YXNoLWxvZy50eHRVVAUAA43T/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABlABxFFNFr1p0j
AAD+eQAANQAYAAAAAAABAAAApIG6kwIAYW5pbWF0aW9ucy9hbmltYXRpb24tYWRkLWV2ZW50cy1p
bi1oYW5kbGVyLXNhbXBsZS50eHRVVAUAAy7U/lN1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAAAP
ABxFrUi5LWcAAABnAAAANQAYAAAAAAABAAAApIHGtwIAYW5pbWF0aW9ucy9hbmltYXRpb24tYWRk
LWV2ZW50cy1pbi1oYW5kbGVyLXN0ZGVyci50eHRVVAUAA43T/lN1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAA2ABxFGvDdh9oAAAAnAQAAMgAYAAAAAAABAAAApIGcuAIAYW5pbWF0aW9ucy9hbmlt
YXRpb24tYm9yZGVyLW92ZXJmbG93LWNyYXNoLWxvZy50eHRVVAUAA9fT/lN1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACABlABxFRK7eZJwjAAD+eQAALwAYAAAAAAABAAAApIHiuQIAYW5pbWF0aW9u
cy9hbmltYXRpb24tYm9yZGVyLW92ZXJmbG93LXNhbXBsZS50eHRVVAUAAy7U/lN1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAIAAAA2ABxFhvtyPGcAAABnAAAALwAYAAAAAAABAAAApIHn3QIAYW5pbWF0
aW9ucy9hbmltYXRpb24tYm9yZGVyLW92ZXJmbG93LXN0ZGVyci50eHRVVAUAA9fT/lN1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACABjABxF5HfA8doAAAAnAQAANQAYAAAAAAABAAAApIG33gIAYW5p
bWF0aW9ucy9hbmltYXRpb24tY29udHJvbGxlci1kcnQtYXBpLWNyYXNoLWxvZy50eHRVVAUAAyrU
/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABlABxFefGHaJ8jAAD+eQAAMgAYAAAAAAABAAAA
pIEA4AIAYW5pbWF0aW9ucy9hbmltYXRpb24tY29udHJvbGxlci1kcnQtYXBpLXNhbXBsZS50eHRV
VAUAAy7U/lN1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAABjABxFbfWKE2cAAABnAAAAMgAYAAAA
AAABAAAApIELBAMAYW5pbWF0aW9ucy9hbmltYXRpb24tY29udHJvbGxlci1kcnQtYXBpLXN0ZGVy
ci50eHRVVAUAAyrU/lN1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAGuBtFAAAAAAAAAAAAAAAA
BwAYAAAAAAAAABAA7UHeBAMAY2FudmFzL1VUBQADa8X+U3V4CwABBPUBAAAEFAAAAFBLAQIeAwoA
AAAAAAa4G0UAAAAAAAAAAAAAAAAOABgAAAAAAAAAEADtQR8FAwBjYW52YXMvcGhpbGlwL1VUBQAD
a8X+U3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAGUAHEUAAAAAAAAAAAAAAAAUABgAAAAAAAAA
EADtQWcFAwBjYW52YXMvcGhpbGlwL3Rlc3RzL1VUBQADLtT+U3V4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIACO/G0UKjWPY2gAAACcBAAA0ABgAAAAAAAEAAACkgbUFAwBjYW52YXMvcGhpbGlwL3Rl
c3RzLzJkLmNhbnZhcy5yZWFkb25seS1jcmFzaC1sb2cudHh0VVQFAAPC0v5TdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAZQAcRadZ/FCZIwAA/nkAADEAGAAAAAAAAQAAAKSB/QYDAGNhbnZhcy9w
aGlsaXAvdGVzdHMvMmQuY2FudmFzLnJlYWRvbmx5LXNhbXBsZS50eHRVVAUAAy7U/lN1eAsAAQT1
AQAABBQAAABQSwECHgMKAAIAAAAjvxtFFL3Ij2cAAABnAAAAMQAYAAAAAAABAAAApIEBKwMAY2Fu
dmFzL3BoaWxpcC90ZXN0cy8yZC5jYW52YXMucmVhZG9ubHktc3RkZXJyLnR4dFVUBQADwtL+U3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEy/G0VebKGLuwAAAPQAAAA1ABgAAAAAAAEAAACkgdMr
AwBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNhbnZhcy5yZWZlcmVuY2UtY3Jhc2gtbG9nLnR4dFVU
BQADD9P+U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGUAHEWSGhKy7iMAAAB7AAAyABgAAAAA
AAEAAACkgf0sAwBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNhbnZhcy5yZWZlcmVuY2Utc2FtcGxl
LnR4dFVUBQADLtT+U3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAAEy/G0XbG7S5NAAAADQAAAAy
ABgAAAAAAAEAAACkgVdRAwBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNhbnZhcy5yZWZlcmVuY2Ut
c3RkZXJyLnR4dFVUBQADD9P+U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADYAHEV2WWfouwAA
APQAAAA+ABgAAAAAAAEAAACkgfdRAwBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNsZWFyUmVjdCtm
aWxsUmVjdC5hbHBoYTAtY3Jhc2gtbG9nLnR4dFVUBQAD19P+U3V4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAGUAHEVJfqcy7iMAAAB7AAA7ABgAAAAAAAEAAACkgSpTAwBjYW52YXMvcGhpbGlwL3Rl
c3RzLzJkLmNsZWFyUmVjdCtmaWxsUmVjdC5hbHBoYTAtc2FtcGxlLnR4dFVUBQADLtT+U3V4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAgAAADYAHEUpWOvANAAAADQAAAA7ABgAAAAAAAEAAACkgY13AwBj
YW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNsZWFyUmVjdCtmaWxsUmVjdC5hbHBoYTAtc3RkZXJyLnR4
dFVUBQAD19P+U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAAYAHEUsAGvKuwAAAPQAAABAABgA
AAAAAAEAAACkgTZ4AwBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNsZWFyUmVjdCtmaWxsUmVjdC5h
bHBoYTAuNS1jcmFzaC1sb2cudHh0VVQFAAN70/5TdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
ZQAcRYD3aVQsLAAAuaAAAD0AGAAAAAAAAQAAAKSBa3kDAGNhbnZhcy9waGlsaXAvdGVzdHMvMmQu
Y2xlYXJSZWN0K2ZpbGxSZWN0LmFscGhhMC41LXNhbXBsZS50eHRVVAUAAy7U/lN1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAIAAAAGABxFlNSnqjQAAAA0AAAAPQAYAAAAAAABAAAApIEOpgMAY2FudmFz
L3BoaWxpcC90ZXN0cy8yZC5jbGVhclJlY3QrZmlsbFJlY3QuYWxwaGEwLjUtc3RkZXJyLnR4dFVU
BQADe9P+U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGMAHEXNb88Y2gAAACcBAAA9ABgAAAAA
AAEAAACkgbmmAwBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNsZWFyUmVjdCtmaWxsUmVjdC5iYXNp
Yy1jcmFzaC1sb2cudHh0VVQFAAMq1P5TdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAZQAcRTEQ
XnucIwAA7nkAADoAGAAAAAAAAQAAAKSBCqgDAGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuY2xlYXJS
ZWN0K2ZpbGxSZWN0LmJhc2ljLXNhbXBsZS50eHRVVAUAAy7U/lN1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAIAAABjABxFE8IF+GcAAABnAAAAOgAYAAAAAAABAAAApIEazAMAY2FudmFzL3BoaWxpcC90
ZXN0cy8yZC5jbGVhclJlY3QrZmlsbFJlY3QuYmFzaWMtc3RkZXJyLnR4dFVUBQADKtT+U3V4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAAGUAHEUAAAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQfXMAwBj
b21wb3NpdGluZy9VVAUAAy7U/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAjvxtFEWAUGtoA
AAAnAQAAOwAYAAAAAAABAAAApIE7zQMAY29tcG9zaXRpbmcvYWJzb2x1dGUtaW5zaWRlLW91dC1v
Zi12aWV3LWZpeGVkLWNyYXNoLWxvZy50eHRVVAUAA8LS/lN1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACABlABxFSTB/xJkjAAD+eQAAOAAYAAAAAAABAAAApIGKzgMAY29tcG9zaXRpbmcvYWJzb2x1
dGUtaW5zaWRlLW91dC1vZi12aWV3LWZpeGVkLXNhbXBsZS50eHRVVAUAAy7U/lN1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAIAAAAjvxtFgTivA2cAAABnAAAAOAAYAAAAAAABAAAApIGV8gMAY29tcG9z
aXRpbmcvYWJzb2x1dGUtaW5zaWRlLW91dC1vZi12aWV3LWZpeGVkLXN0ZGVyci50eHRVVAUAA8LS
/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABMvxtFf7anpLsAAAD0AAAARwAYAAAAAAABAAAA
pIFu8wMAY29tcG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRpb24tY2hhbmdlZC1pbi1jb21wb3NpdGVk
LWxheWVyLWNyYXNoLWxvZy50eHRVVAUAAw/T/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABl
ABxFYKHLrPEjAAAAewAARAAYAAAAAAABAAAApIGq9AMAY29tcG9zaXRpbmcvYWJzb2x1dGUtcG9z
aXRpb24tY2hhbmdlZC1pbi1jb21wb3NpdGVkLWxheWVyLXNhbXBsZS50eHRVVAUAAy7U/lN1eAsA
AQT1AQAABBQAAABQSwECHgMKAAIAAABMvxtFwhJxszQAAAA0AAAARAAYAAAAAAABAAAApIEZGQQA
Y29tcG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRpb24tY2hhbmdlZC1pbi1jb21wb3NpdGVkLWxheWVy
LXN0ZGVyci50eHRVVAUAAw/T/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAAABxFup2BCrsA
AAD0AAAAUAAYAAAAAAABAAAApIHLGQQAY29tcG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRpb24tY2hh
bmdlZC13aXRoLWNvbXBvc2l0ZWQtcGFyZW50LWxheWVyLWNyYXNoLWxvZy50eHRVVAUAA2/T/lN1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABlABxFBqbjDekjAAAAewAATQAYAAAAAAABAAAApIEQ
GwQAY29tcG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRpb24tY2hhbmdlZC13aXRoLWNvbXBvc2l0ZWQt
cGFyZW50LWxheWVyLXNhbXBsZS50eHRVVAUAAy7U/lN1eAsAAQT1AQAABBQAAABQSwECHgMKAAIA
AAAAABxFCtQNZjQAAAA0AAAATQAYAAAAAAABAAAApIGAPwQAY29tcG9zaXRpbmcvYWJzb2x1dGUt
cG9zaXRpb24tY2hhbmdlZC13aXRoLWNvbXBvc2l0ZWQtcGFyZW50LWxheWVyLXN0ZGVyci50eHRV
VAUAA2/T/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA2ABxFwR6LB7sAAAD0AAAAOAAYAAAA
AAABAAAApIE7QAQAY29tcG9zaXRpbmcvYm91bmRzLWluLWZsaXBwZWQtd3JpdGluZy1tb2RlLWNy
YXNoLWxvZy50eHRVVAUAA9fT/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABlABxFlaVn8O0j
AAAAewAANQAYAAAAAAABAAAApIFoQQQAY29tcG9zaXRpbmcvYm91bmRzLWluLWZsaXBwZWQtd3Jp
dGluZy1tb2RlLXNhbXBsZS50eHRVVAUAAy7U/lN1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAAA2
ABxFrlGEBjQAAAA0AAAANQAYAAAAAAABAAAApIHEZQQAY29tcG9zaXRpbmcvYm91bmRzLWluLWZs
aXBwZWQtd3JpdGluZy1tb2RlLXN0ZGVyci50eHRVVAUAA9fT/lN1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABjABxFxoJCiNoAAAAnAQAAJgAYAAAAAAABAAAApIFnZgQAY29tcG9zaXRpbmcvY2hl
Y2tlcmJvYXJkLWNyYXNoLWxvZy50eHRVVAUAAyrU/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CABlABxFtLp5tpsjAAD+eQAAIwAYAAAAAAABAAAApIGhZwQAY29tcG9zaXRpbmcvY2hlY2tlcmJv
YXJkLXNhbXBsZS50eHRVVAUAAy7U/lN1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAABjABxFAMzR
Q2cAAABnAAAAIwAYAAAAAAABAAAApIGZiwQAY29tcG9zaXRpbmcvY2hlY2tlcmJvYXJkLXN0ZGVy
ci50eHRVVAUAAyrU/lN1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABVuBtFAAAAAAAAAAAAAAAA
BQAYAAAAAAAAABAA7UFdjAQAY3NzMy9VVAUAAwLG/lN1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AABVuBtFAAAAAAAAAAAAAAAADQAYAAAAAAAAABAA7UGcjAQAY3NzMy9maWx0ZXJzL1VUBQADAsb+
U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFW4G0VA+Sg5gAAAAJIAAAAuABgAAAAAAAEAAACk
geOMBABjc3MzL2ZpbHRlcnMvaHVnZS1yZWdpb24tY29tcG9zaXRlZC1zdGRlcnIudHh0VVQFAAMC
xv5TdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAZAAcRWiwFy9PFQAA/1EBAA0AGAAAAAAAAQAA
AKSBy40EAGVycm9yX2xvZy50eHRVVAUAAyvU/lN1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAC5
uBtFAAAAAAAAAAAAAAAABQAYAAAAAAAAABAA7UFhowQAZmFzdC9VVAUAA73G/lN1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAAAAAB5uBtFAAAAAAAAAAAAAAAACQAYAAAAAAAAABAA7UGgowQAZmFzdC9j
c3MvVVQFAANFxv5TdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAebgbRdsI00I7AAAAPwAAACkA
GAAAAAAAAQAAAKSB46MEAGZhc3QvY3NzL2NvbXBhcmUtY29udGVudC1zdHlsZS1zdGRlcnIudHh0
VVQFAANFxv5TdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAmLgbRQAAAAAAAAAAAAAAAAwAGAAA
AAAAAAAQAO1BgaQEAGZhc3QvZXZlbnRzL1VUBQADgMb+U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAJC4G0VYKmd1OQAAAEMAAAAyABgAAAAAAAEAAACkgcekBABmYXN0L2V2ZW50cy9kaXNwbGF5
LW5vbmUtb24tZm9jdXMtY3Jhc2gtc3RkZXJyLnR4dFVUBQADcMb+U3V4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAJi4G0UwtW3jOQAAAEMAAAArABgAAAAAAAEAAACkgWylBABmYXN0L2V2ZW50cy9t
b3VzZS1mb2N1cy1pbWFnZW1hcC1zdGRlcnIudHh0VVQFAAOAxv5TdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAmLgbReeuvV87AAAAQwAAAC8AGAAAAAAAAQAAAKSBCqYEAGZhc3QvZXZlbnRzL21v
dXNldXAtb3V0c2lkZS1kb2N1bWVudC1zdGRlcnIudHh0VVQFAAOAxv5TdXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgAAAAAAlLgbRQAAAAAAAAAAAAAAAAwAGAAAAAAAAAAQAO1BrqYEAGZhc3QvZnJhbWVz
L1VUBQADd8b+U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJS4G0XbCNNCOwAAAD8AAAAvABgA
AAAAAAEAAACkgfSmBABmYXN0L2ZyYW1lcy9mcmFtZS1kaXNwbGF5LW5vbmUtZm9jdXMtc3RkZXJy
LnR4dFVUBQADd8b+U3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAKG4G0UAAAAAAAAAAAAAAAAM
ABgAAAAAAAAAEADtQZinBABmYXN0L2xvYWRlci9VVAUAA43G/lN1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACACauBtF2wjTQjsAAAA/AAAAUgAYAAAAAAABAAAApIHepwQAZmFzdC9sb2FkZXIvZGlz
cGxheS1pbWFnZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2Ut
c3RkZXJyLnR4dFVUBQADg8b+U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJq4G0XbCNNCOwAA
AD8AAABTABgAAAAAAAEAAACkgaWoBABmYXN0L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11bnNldC1j
YW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2Utc3RkZXJyLnR4dFVUBQADhMb+
U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKG4G0XbCNNCOwAAAD8AAAAtABgAAAAAAAEAAACk
gW2pBABmYXN0L2xvYWRlci9yZWxvYWQtcG9saWN5LWRlbGVnYXRlLXN0ZGVyci50eHRVVAUAA43G
/lN1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACtuBtFAAAAAAAAAAAAAAAADQAYAAAAAAAAABAA
7UEPqgQAZmFzdC9yZWdpb25zL1VUBQADpcb+U3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAK24
G0UAAAAAAAAAAAAAAAAXABgAAAAAAAAAEADtQVaqBABmYXN0L3JlZ2lvbnMvc2Nyb2xsaW5nL1VU
BQADpcb+U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAK24G0U5AcvdQAAAAHoAAAA1ABgAAAAA
AAEAAACkgaeqBABmYXN0L3JlZ2lvbnMvc2Nyb2xsaW5nL3doZWVsLXNjcm9sbC1hYnNwb3Mtc3Rk
ZXJyLnR4dFVUBQADpcb+U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAK24G0U5AcvdQAAAAHoA
AAAuABgAAAAAAAEAAACkgVarBABmYXN0L3JlZ2lvbnMvc2Nyb2xsaW5nL3doZWVsLXNjcm9sbC1z
dGRlcnIudHh0VVQFAAOlxv5TdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgArbgbReSKx0M8AAAA
PQAAAEAAGAAAAAAAAQAAAKSB/qsEAGZhc3QvcmVnaW9ucy9zY3JvbGxpbmcvd2hlZWwtc2Nyb2xs
YWJsZS1zaW5nbGUtcmVnaW9uLXN0ZGVyci50eHRVVAUAA6XG/lN1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAAAAAC5uBtFAAAAAAAAAAAAAAAACQAYAAAAAAAAABAA7UG0rAQAZmFzdC94c2wvVVQFAAO+
xv5TdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAubgbRXL9ZfKFAAAA6QAAACUAGAAAAAAAAQAA
AKSB96wEAGZhc3QveHNsL3RyYW5zZm9ybS14aHItZG9jLXN0ZGVyci50eHRVVAUAA73G/lN1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACAC5uBtFBY9VjpMAAADQAgAAJwAYAAAAAAABAAAApIHbrQQA
ZmFzdC94c2wveHNsdC1iYWQtaW1wb3J0LXVyaS1zdGRlcnIudHh0VVQFAAO9xv5TdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAubgbRYFKd61LAAAArAAAADQAGAAAAAAAAQAAAKSBz64EAGZhc3Qv
eHNsL3hzbHQtdHJhbnNmb3JtLXRvLWZyYWdtZW50LWNyYXNoLXN0ZGVyci50eHRVVAUAA77G/lN1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABmABxFMvrz2eYCAADxDgAAEQAYAAAAAAABAAAApIGI
rwQAZnVsbF9yZXN1bHRzLmpzb25VVAUAAy/U/lN1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAG
uBtFAAAAAAAAAAAAAAAABQAYAAAAAAAAABAA7UG5sgQAaHR0cC9VVAUAA2vF/lN1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAAAAADPuBtFAAAAAAAAAAAAAAAACwAYAAAAAAAAABAA7UH4sgQAaHR0cC90
ZXN0cy9VVAUAA+XG/lN1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABlABxFAAAAAAAAAAAAAAAA
FAAYAAAAAAAAABAA7UE9swQAaHR0cC90ZXN0cy9hcHBjYWNoZS9VVAUAAy7U/lN1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAAjvxtFx8ZFjtkAAAAnAQAALgAYAAAAAAABAAAApIGLswQAaHR0cC90
ZXN0cy9hcHBjYWNoZS80MDQtbWFuaWZlc3QtY3Jhc2gtbG9nLnR4dFVUBQADwtL+U3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAGUAHEUsAbDtnSMAAP55AAArABgAAAAAAAEAAACkgcy0BABodHRw
L3Rlc3RzL2FwcGNhY2hlLzQwNC1tYW5pZmVzdC1zYW1wbGUudHh0VVQFAAMu1P5TdXgLAAEE9QEA
AAQUAAAAUEsBAh4DCgACAAAAI78bRfa2UF1nAAAAZwAAACsAGAAAAAAAAQAAAKSBztgEAGh0dHAv
dGVzdHMvYXBwY2FjaGUvNDA0LW1hbmlmZXN0LXN0ZGVyci50eHRVVAUAA8LS/lN1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABMvxtF6StNZLsAAAD0AAAALgAYAAAAAAABAAAApIGa2QQAaHR0cC90
ZXN0cy9hcHBjYWNoZS80MDQtcmVzb3VyY2UtY3Jhc2gtbG9nLnR4dFVUBQADD9P+U3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAGUAHEXHkKbw7SMAAAB7AAArABgAAAAAAAEAAACkgb3aBABodHRw
L3Rlc3RzL2FwcGNhY2hlLzQwNC1yZXNvdXJjZS1zYW1wbGUudHh0VVQFAAMu1P5TdXgLAAEE9QEA
AAQUAAAAUEsBAh4DCgACAAAATL8bRVwS2380AAAANAAAACsAGAAAAAAAAQAAAKSBD/8EAGh0dHAv
dGVzdHMvYXBwY2FjaGUvNDA0LXJlc291cmNlLXN0ZGVyci50eHRVVAUAAw/T/lN1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABjABxF05Uni7sAAAD0AAAAOAAYAAAAAAABAAAApIGo/wQAaHR0cC90
ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLWNyYXNoLWxvZy50eHRVVAUAAyrU
/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAAABxFm0eHJboAAAD0AAAARQAYAAAAAAABAAAA
pIHVAAUAaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLW1hbmlmZXN0
LTQwNC1jcmFzaC1sb2cudHh0VVQFAANv0/5TdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAZQAc
RYMSRaHwIwAAAHsAAEIAGAAAAAAAAQAAAKSBDgIFAGh0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQt
Y2FjaGUtb25jaGVja2luZy1tYW5pZmVzdC00MDQtc2FtcGxlLnR4dFVUBQADLtT+U3V4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAgAAAAAAHEUT3chsNAAAADQAAABCABgAAAAAAAEAAACkgXomBQBodHRw
L3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmctbWFuaWZlc3QtNDA0LXN0ZGVy
ci50eHRVVAUAA2/T/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA2ABxF4MSNKLsAAAD0AAAA
RQAYAAAAAAABAAAApIEqJwUAaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNr
aW5nLXJlc291cmNlLTQwNC1jcmFzaC1sb2cudHh0VVQFAAPX0/5TdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAZQAcRevRmJr1IwAAAHsAAEIAGAAAAAAAAQAAAKSBZCgFAGh0dHAvdGVzdHMvYXBw
Y2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy1yZXNvdXJjZS00MDQtc2FtcGxlLnR4dFVUBQAD
LtT+U3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAADYAHEW3WEEMNAAAADQAAABCABgAAAAAAAEA
AACkgdVMBQBodHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmctcmVzb3Vy
Y2UtNDA0LXN0ZGVyci50eHRVVAUAA9fT/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABlABxF
UgjC6ukjAAAAewAANQAYAAAAAAABAAAApIGFTQUAaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1j
YWNoZS1vbmNoZWNraW5nLXNhbXBsZS50eHRVVAUAAy7U/lN1eAsAAQT1AQAABBQAAABQSwECHgMK
AAIAAABjABxF+TxPrjQAAAA0AAAANQAYAAAAAAABAAAApIHdcQUAaHR0cC90ZXN0cy9hcHBjYWNo
ZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLXN0ZGVyci50eHRVVAUAAyrU/lN1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAACjuBtFAAAAAAAAAAAAAAAAEAAYAAAAAAAAABAA7UGAcgUAaHR0cC90ZXN0
cy9taXNjL1VUBQADksb+U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKO4G0UVNTWSegAAALwA
AAAqABgAAAAAAAEAAACkgcpyBQBodHRwL3Rlc3RzL21pc2MveHNsdC1iYWQtaW1wb3J0LXN0ZGVy
ci50eHRVVAUAA5LG/lN1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACouBtFAAAAAAAAAAAAAAAA
FgAYAAAAAAAAABAA7UGocwUAaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL1VUBQADm8b+U3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAKi4G0XbCNNCOwAAAD8AAAA3ABgAAAAAAAEAAACkgfhzBQBodHRw
L3Rlc3RzL25hdmlnYXRpb24vZmFsbGJhY2stYW5jaG9yLXJlbG9hZC1zdGRlcnIudHh0VVQFAAOb
xv5TdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA1rgbRQAAAAAAAAAAAAAAABQAGAAAAAAAAAAQ
AO1BpHQFAGh0dHAvdGVzdHMvc2VjdXJpdHkvVVQFAAP0xv5TdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgAAAAAA1rgbRQAAAAAAAAAAAAAAACoAGAAAAAAAAAAQAO1B8nQFAGh0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5L1VUBQAD9Mb+U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIANa4G0VjqqxsggAAAKgAAABAABgAAAAAAAEAAACkgVZ1BQBodHRwL3Rlc3RzL3NlY3VyaXR5
L2NvbnRlbnRTZWN1cml0eVBvbGljeS94c2wtYWxsb3dlZC1zdGRlcnIudHh0VVQFAAP0xv5TdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA1rgbRWOqrGyCAAAAqAAAAFIAGAAAAAAAAQAAAKSBUnYF
AGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3hzbC11bmFmZmVjdGVk
LWJ5LXN0eWxlLXNyYy0yLXN0ZGVyci50eHRVVAUAA/TG/lN1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACADPuBtFYEtmEJEAAAD7AQAARQAYAAAAAAABAAAApIFgdwUAaHR0cC90ZXN0cy9zZWN1cml0
eS94c3MtREVOSUVELXhzbC1kb2N1bWVudC1zZWN1cml0eU9yaWdpbi1zdGRlcnIudHh0VVQFAAPl
xv5TdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA9L4bReqKfEJhBQAABQ8AAAoAGAAAAAAAAQAA
AKSBcHgFAGh0dHBkLmNvbmZVVAUAA2zS/lN1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADnuBtF
AAAAAAAAAAAAAAAABgAYAAAAAAAAABAA7UEVfgUAbWVkaWEvVVQFAAMSx/5TdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgA1bgbRboyRZy3AAAAAwEAACoAGAAAAAAAAQAAAKSBVX4FAG1lZGlhL2Nv
bnRyb2xzLWxheW91dC1kaXJlY3Rpb24tc3RkZXJyLnR4dFVUBQAD8cb+U3V4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAOe4G0Vq94jaPwAAAEIAAAA3ABgAAAAAAAEAAACkgXB/BQBtZWRpYS92aWRl
by1lbmRlZC1ldmVudC1zbG93LW1vdGlvbi1wbGF5YmFjay1hY3R1YWwudHh0VVQFAAMSx/5TdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA57gbRTfPOorDAAAAYQEAADUAGAAAAAAAAQAAAKSBIIAF
AG1lZGlhL3ZpZGVvLWVuZGVkLWV2ZW50LXNsb3ctbW90aW9uLXBsYXliYWNrLWRpZmYudHh0VVQF
AAMSx/5TdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA57gbRUpdYk0tAAAAMQAAADkAGAAAAAAA
AQAAAKSBUoEFAG1lZGlhL3ZpZGVvLWVuZGVkLWV2ZW50LXNsb3ctbW90aW9uLXBsYXliYWNrLWV4
cGVjdGVkLnR4dFVUBQADEsf+U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOe4G0WkX1iS0QcA
AEwaAAA9ABgAAAAAAAEAAACkgfKBBQBtZWRpYS92aWRlby1lbmRlZC1ldmVudC1zbG93LW1vdGlv
bi1wbGF5YmFjay1wcmV0dHktZGlmZi5odG1sVVQFAAMSx/5TdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgAAAAAA6LgbRQAAAAAAAAAAAAAAAAkAGAAAAAAAAAAQAO1BOooFAHBsYXRmb3JtL1VUBQADFMf+
U3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAOi4G0UAAAAAAAAAAAAAAAANABgAAAAAAAAAEADt
QX2KBQBwbGF0Zm9ybS9tYWMvVVQFAAMUx/5TdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA6Lgb
RQAAAAAAAAAAAAAAABIAGAAAAAAAAAAQAO1BxIoFAHBsYXRmb3JtL21hYy9mYXN0L1VUBQADFMf+
U3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAOi4G0UAAAAAAAAAAAAAAAAcABgAAAAAAAAAEADt
QRCLBQBwbGF0Zm9ybS9tYWMvZmFzdC9zY3JvbGxpbmcvVVQFAAMUx/5TdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgA6LgbRfc/TYptAAAA9wMAAD0AGAAAAAAAAQAAAKSBZosFAHBsYXRmb3JtL21h
Yy9mYXN0L3Njcm9sbGluZy9zY3JvbGwtZGl2LWxhdGNoZWQtZGl2LXN0ZGVyci50eHRVVAUAAxTH
/lN1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAD1vhtFAAAAAAAAAAAAAAAAKwAYAAAAAAAAAAAA
pIFKjAUAcHl3ZWJzb2NrZXQud3MubG9nLTI3QXVnMjAxNC0yMzU1NDEtZXJyLnR4dFVUBQADbdL+
U3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAPW+G0UAAAAAAAAAAAAAAAArABgAAAAAAAAAAACk
ga+MBQBweXdlYnNvY2tldC53cy5sb2ctMjdBdWcyMDE0LTIzNTU0MS1vdXQudHh0VVQFAANt0v5T
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAZgAcRYcK0RmGJgAAYaQAAAwAGAAAAAAAAQAAAKSB
FI0FAHJlc3VsdHMuaHRtbFVUBQADL9T+U3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAH25G0UA
AAAAAAAAAAAAAAAIABgAAAAAAAAAEADtQeCzBQByZXRyaWVzL1VUBQADLsj+U3V4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAAAAAH25G0UAAAAAAAAAAAAAAAAOABgAAAAAAAAAEADtQSK0BQByZXRyaWVz
L21lZGlhL1VUBQADLsj+U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAH25G0Vq94jaPwAAAEIA
AAA/ABgAAAAAAAEAAACkgWq0BQByZXRyaWVzL21lZGlhL3ZpZGVvLWVuZGVkLWV2ZW50LXNsb3ct
bW90aW9uLXBsYXliYWNrLWFjdHVhbC50eHRVVAUAAy7I/lN1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAB9uRtFeQlgbckAAABxAQAAPQAYAAAAAAABAAAApIEitQUAcmV0cmllcy9tZWRpYS92aWRl
by1lbmRlZC1ldmVudC1zbG93LW1vdGlvbi1wbGF5YmFjay1kaWZmLnR4dFVUBQADLsj+U3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAH25G0VKXWJNLQAAADEAAABBABgAAAAAAAEAAACkgWK2BQBy
ZXRyaWVzL21lZGlhL3ZpZGVvLWVuZGVkLWV2ZW50LXNsb3ctbW90aW9uLXBsYXliYWNrLWV4cGVj
dGVkLnR4dFVUBQADLsj+U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAH25G0W7HSyb1gcAAFQa
AABFABgAAAAAAAEAAACkgQq3BQByZXRyaWVzL21lZGlhL3ZpZGVvLWVuZGVkLWV2ZW50LXNsb3ct
bW90aW9uLXBsYXliYWNrLXByZXR0eS1kaWZmLmh0bWxVVAUAAy7I/lN1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAAAAADvuBtFAAAAAAAAAAAAAAAACwAYAAAAAAAAABAA7UFfvwUAc2Nyb2xsYmFycy9V
VAUAAyHH/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADvuBtFbr0jYTkAAABCAAAAOwAYAAAA
AAABAAAApIGkvwUAc2Nyb2xsYmFycy9zY3JvbGxldmVudC1pZnJhbWUtbm8tc2Nyb2xsaW5nLXdo
ZWVsLXN0ZGVyci50eHRVVAUAAyHH/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABmABxFxAJ2
WVUDAADjCQAACgAYAAAAAAABAAAApIFSwAUAc3RhdHMuanNvblVUBQADL9T+U3V4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAAAAACu5G0UAAAAAAAAAAAAAAAAEABgAAAAAAAAAEADtQevDBQBzdmcvVVQF
AAORx/5TdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAK7kbRQAAAAAAAAAAAAAAAAsAGAAAAAAA
AAAQAO1BKcQFAHN2Zy9jdXN0b20vVVQFAAORx/5TdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
K7kbRSH09vA6AAAAQgAAADAAGAAAAAAAAQAAAKSBbsQFAHN2Zy9jdXN0b20vdXNlLWludmFsaWRh
dGUtY2xpY2stY3Jhc2gtc3RkZXJyLnR4dFVUBQADkcf+U3V4CwABBPUBAAAEFAAAAFBLAQIeAwoA
AAAAACO5G0UAAAAAAAAAAAAAAAALABgAAAAAAAAAEADtQRLFBQBzdmcvc3Ryb2tlL1VUBQADgcf+
U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACO5G0WqS0pvhQAAAJAAAAAlABgAAAAAAAEAAACk
gVfFBQBzdmcvc3Ryb2tlL3plcm8td2lkdGgtaGFuZy1zdGRlcnIudHh0VVQFAAOBx/5TdXgLAAEE
9QEAAAQUAAAAUEsBAh4DCgAAAAAAMLkbRQAAAAAAAAAAAAAAAAwAGAAAAAAAAAAQAO1BO8YFAHRy
YW5zaXRpb25zL1VUBQADnMf+U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADC5G0VQ5hM3iQAA
ACwCAAA3ABgAAAAAAAEAAACkgYHGBQB0cmFuc2l0aW9ucy9jdWJpYy1iZXppZXItb3ZlcmZsb3ct
c3ZnLWxlbmd0aC1zdGRlcnIudHh0VVQFAAOcx/5TdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
dbcbRWzOGSSdIwAA7nkAABsAGAAAAAAAAQAAAKSBe8cFAFdlYlByb2Nlc3MtMTg2NzYtc2FtcGxl
LnR4dFVUBQADTcX+U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHW3G0VcnsOtoyMAAP55AAAb
ABgAAAAAAAEAAACkgW3rBQBXZWJQcm9jZXNzLTE4Njc3LXNhbXBsZS50eHRVVAUAA03F/lN1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACAB1txtF4ZJ0y5wjAAD+eQAAGwAYAAAAAAABAAAApIFlDwYA
V2ViUHJvY2Vzcy0xODY3OC1zYW1wbGUudHh0VVQFAANNxf5TdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAdbcbRWomC4OaIwAA/nkAABsAGAAAAAAAAQAAAKSBVjMGAFdlYlByb2Nlc3MtMTg2Nzkt
c2FtcGxlLnR4dFVUBQADTcX+U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHW3G0U0ATOJnCMA
AP55AAAbABgAAAAAAAEAAACkgUVXBgBXZWJQcm9jZXNzLTE4NjgwLXNhbXBsZS50eHRVVAUAA03F
/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB1txtFNUOa2JwjAAD+eQAAGwAYAAAAAAABAAAA
pIE2ewYAV2ViUHJvY2Vzcy0xODY4MS1zYW1wbGUudHh0VVQFAANNxf5TdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAIrgbRYEogleeIwAA/nkAABsAGAAAAAAAAQAAAKSBJ58GAFdlYlByb2Nlc3Mt
MTg3MDAtc2FtcGxlLnR4dFVUBQADoMX+U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAC64G0Vs
xQqc7yMAAAB7AAAbABgAAAAAAAEAAACkgRrDBgBXZWJQcm9jZXNzLTE4NzAxLXNhbXBsZS50eHRV
VAUAA7jF/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAuuBtFhgduNPAjAAAAewAAGwAYAAAA
AAABAAAApIFe5wYAV2ViUHJvY2Vzcy0xODcwMi1zYW1wbGUudHh0VVQFAAO4xf5TdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAIrgbRaqky9WiIwAA/nkAABsAGAAAAAAAAQAAAKSBowsHAFdlYlBy
b2Nlc3MtMTg3MDMtc2FtcGxlLnR4dFVUBQADoMX+U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
ACm4G0XmYPWKDSgAAEaMAAAbABgAAAAAAAEAAACkgZovBwBXZWJQcm9jZXNzLTE4NzA0LXNhbXBs
ZS50eHRVVAUAA63F/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAiuBtFrZQQCZojAAD+eQAA
GwAYAAAAAAABAAAApIH8VwcAV2ViUHJvY2Vzcy0xODcwNS1zYW1wbGUudHh0VVQFAAOgxf5TdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAEr8bRUkwf8SZIwAA/nkAABsAGAAAAAAAAQAAAKSB63sH
AFdlYlByb2Nlc3MtMzAzMzgtc2FtcGxlLnR4dFVUBQADpNL+U3V4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIABq/G0V2lmH54SYAACKFAAAbABgAAAAAAAEAAACkgdmfBwBXZWJQcm9jZXNzLTMwMzM5
LXNhbXBsZS50eHRVVAUAA7TS/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAgvxtFO+Cyxpkj
AADueQAAGwAYAAAAAAABAAAApIEPxwcAV2ViUHJvY2Vzcy0zMDM0MC1zYW1wbGUudHh0VVQFAAO7
0v5TdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAEr8bRadZ/FCZIwAA/nkAABsAGAAAAAAAAQAA
AKSB/eoHAFdlYlByb2Nlc3MtMzAzNDEtc2FtcGxlLnR4dFVUBQADpNL+U3V4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIACC/G0Wt/1/4niMAAO55AAAbABgAAAAAAAEAAACkgesOCABXZWJQcm9jZXNz
LTMwMzQyLXNhbXBsZS50eHRVVAUAA7vS/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAASvxtF
LAGw7Z0jAAD+eQAAGwAYAAAAAAABAAAApIHeMggAV2ViUHJvY2Vzcy0zMDM0My1zYW1wbGUudHh0
VVQFAAOk0v5TdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAO78bRceQpvDtIwAAAHsAABsAGAAA
AAAAAQAAAKSB0FYIAFdlYlByb2Nlc3MtMzAzNjItc2FtcGxlLnR4dFVUBQAD8dL+U3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIADu/G0Vgocus8SMAAAB7AAAbABgAAAAAAAEAAACkgRJ7CABXZWJQ
cm9jZXNzLTMwMzYzLXNhbXBsZS50eHRVVAUAA/HS/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAA7vxtFkhoSsu4jAAAAewAAGwAYAAAAAAABAAAApIFYnwgAV2ViUHJvY2Vzcy0zMDM2NC1zYW1w
bGUudHh0VVQFAAPx0v5TdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgATL8bRSp3N1LtIwAAAHsA
ABsAGAAAAAAAAQAAAKSBm8MIAFdlYlByb2Nlc3MtMzAzNzgtc2FtcGxlLnR4dFVUBQADD9P+U3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFG/G0UClB5BkCcAABeMAAAbABgAAAAAAAEAAACkgd3n
CABXZWJQcm9jZXNzLTMwMzc5LXNhbXBsZS50eHRVVAUAAxnT/lN1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABRvxtFTFeHQUInAAAJigAAGwAYAAAAAAABAAAApIHCDwkAV2ViUHJvY2Vzcy0zMDM4
MC1zYW1wbGUudHh0VVQFAAMZ0/5TdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAb78bRYMSRaHw
IwAAAHsAABsAGAAAAAAAAQAAAKSBWTcJAFdlYlByb2Nlc3MtMzAzOTMtc2FtcGxlLnR4dFVUBQAD
UdP+U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAG+/G0UGpuMN6SMAAAB7AAAbABgAAAAAAAEA
AACkgZ5bCQBXZWJQcm9jZXNzLTMwMzk0LXNhbXBsZS50eHRVVAUAA1HT/lN1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAB1vxtFgPdpVCwsAAC5oAAAGwAYAAAAAAABAAAApIHcfwkAV2ViUHJvY2Vz
cy0zMDM5NS1zYW1wbGUudHh0VVQFAANd0/5TdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAAAAc
RRTRa9adIwAA/nkAABsAGAAAAAAAAQAAAKSBXawJAFdlYlByb2Nlc3MtMzA0MDgtc2FtcGxlLnR4
dFVUBQADb9P+U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAAAAHEXYwjFcoCMAAP55AAAbABgA
AAAAAAEAAACkgU/QCQBXZWJQcm9jZXNzLTMwNDA5LXNhbXBsZS50eHRVVAUAA2/T/lN1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACAAAABxFG+Xv25wjAAD+eQAAGwAYAAAAAAABAAAApIFE9AkAV2Vi
UHJvY2Vzcy0zMDQxMC1zYW1wbGUudHh0VVQFAANv0/5TdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAJwAcRUl+pzLuIwAAAHsAABsAGAAAAAAAAQAAAKSBNRgKAFdlYlByb2Nlc3MtMzA0MjItc2Ft
cGxlLnR4dFVUBQADudP+U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACcAHEXr0Zia9SMAAAB7
AAAbABgAAAAAAAEAAACkgXg8CgBXZWJQcm9jZXNzLTMwNDIzLXNhbXBsZS50eHRVVAUAA7nT/lN1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAnABxFlaVn8O0jAAAAewAAGwAYAAAAAAABAAAApIHC
YAoAV2ViUHJvY2Vzcy0zMDQyNC1zYW1wbGUudHh0VVQFAAO50/5TdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAJwAcRaxG4niYIwAA/nkAABsAGAAAAAAAAQAAAKSBBIUKAFdlYlByb2Nlc3MtMzA0
Mjktc2FtcGxlLnR4dFVUBQADudP+U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACcAHEXyi2S8
miMAAP55AAAbABgAAAAAAAEAAACkgfGoCgBXZWJQcm9jZXNzLTMwNDMwLXNhbXBsZS50eHRVVAUA
A7nT/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAnABxFRK7eZJwjAAD+eQAAGwAYAAAAAAAB
AAAApIHgzAoAV2ViUHJvY2Vzcy0zMDQzMS1zYW1wbGUudHh0VVQFAAO50/5TdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAUgAcRTEQXnucIwAA7nkAABsAGAAAAAAAAQAAAKSB0fAKAFdlYlByb2Nl
c3MtMzA0NTQtc2FtcGxlLnR4dFVUBQADDNT+U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFIA
HEVSCMLq6SMAAAB7AAAbABgAAAAAAAEAAACkgcIUCwBXZWJQcm9jZXNzLTMwNDU1LXNhbXBsZS50
eHRVVAUAAwzU/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABSABxF8E22H5wjAAD+eQAAGwAY
AAAAAAABAAAApIEAOQsAV2ViUHJvY2Vzcy0zMDQ1Ni1zYW1wbGUudHh0VVQFAAMM1P5TdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAUgAcRbS6ebabIwAA/nkAABsAGAAAAAAAAQAAAKSB8VwLAFdl
YlByb2Nlc3MtMzA0NTctc2FtcGxlLnR4dFVUBQADDNT+U3V4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAFIAHEWpmRJTnSMAAP55AAAbABgAAAAAAAEAAACkgeGACwBXZWJQcm9jZXNzLTMwNDU4LXNh
bXBsZS50eHRVVAUAAwzU/lN1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABSABxFefGHaJ8jAAD+
eQAAGwAYAAAAAAABAAAApIHTpAsAV2ViUHJvY2Vzcy0zMDQ1OS1zYW1wbGUudHh0VVQFAAMM1P5T
dXgLAAEE9QEAAAQUAAAAUEsFBgAAAADSANIAV1sAAMfICwAAAA==
</data>

          </attachment>
      

    </bug>

</bugzilla>